「豆包 Marscode 体验官」AI 加持的云端 IDE——三种方法高效开发前后端聊天交互功能
以下是「豆包 MarsCode 体验官」优秀文章,作者努力的小雨。
豆包 MarsCode
豆包MarsCode 编程助手支持的 IDE: 支持 Visual Studio Code 1.67.0 及以上版本,以及 JetBrains 系列 IDE,如 IntelliJ IDEA、Pycharm 等,版本要求为 221.5080.210 及以上。
豆包MarsCode IDE 是一个云端 AI 集成开发环境(IDE),具备原生 AI 编程助手,提供代码补全、生成、优化等功能,支持多种编程语言和框架,无需本地资源,实现随时随地的开发。
故事起源
故事要从上周六说起。周五下班时大家都兴致勃勃,冲动之下,我也顾不上带电脑,径直开车上高速回家,急着与家里的丫头玩耍。但一到家才发现,书包居然没带。但我手头上还有一些未完成的开源项目工作,以及一个即将截止的征文活动,这些都需要我尽快完成。面对家中没有集成开发环境(IDE)的电脑,可愁死我了,正好当时我在浏览技术社区掘金时,偶然发现了豆包MarsCode IDE,便立即开始使用这款在线 IDE。
用的还不错吧,虽然小问题一堆,但是没啥大毛病,正好把我使用的体验感受写一下分享给大家。
先说体验
时间效率
在整个流程中,毫无疑问,使用豆包 IDE 比起先装环境要快得多。程序员们最头疼的就是环境安装,特别是在老式电脑上,我甚至担心会浪费时间。因此,使用豆包MarsCode IDE 的直观感受是它快速而稳定。整个环境安装再加上熟悉豆包MarsCode IDE,总共花了不到一个小时就可以正常启动项目,其中大约 30 分钟用在了配置 mvn 依赖上。这个过程有点坑,难怪会耽误时间。但如果是一个正常的项目,我相信在 30 分钟内就能搞定。
代码质量
其次,再谈谈我对 AI 功能的使用体验。实际上,最常用的是代码注释,因为大多数程序员包括我在内,不太喜欢写注释。使用云端 IDE 平台带来的便利在于,首先无需安装额外的编程助手;其次,通过 AI 悬挂图标直接选中问题或代码段,能快速解决困扰。这样做非常方便,而且最重要的是可以提升代码质量:一方面减少了对变量名的纠结,另一方面也让代码注释变得更为到位。
深度体验豆包 MarsCode IDE
以下是整体流程的详细描述,以确保信息清晰和逻辑连贯,防止大家头脑混乱:
登录豆包 MarsCode IDE 工作台 ——> 导入 GitHub 仓库 ——> 选择开发环境模板 ——> 配置项目 ——> 运行项目 ——> 体验项目 ——> 代码提交
spring-ai
使用云端 IDE 的主要优势之一是其适用于个人开发者,而大公司通常有自己的代码仓库。对于个人开发者而言,选择云端 IDE 编写开源项目再合适不过,特别是豆包 IDE 提供的资源分配非常充足。这意味着不必担心本地环境可能导致的宕机、电脑死机或磁盘损坏等问题。
然而,对我来说,稳定的网络连接是最关键的因素。在家里,访问 Github 时经常面临网络连接问题或速度极慢的情况,这对开发效率有显著影响。因此,我决定通过编写我的开源项目【spring-ai-demo】来深入体验豆包 IDE 的功能和性能。
快速导入 GitHub 仓库
在开始之前,请登录豆包MarsCode IDE 工作台,并导入我们的 GitHub 仓库项目,操作步骤如下所示:

在进行 GitHub 授权后,你可以访问自己的仓库项目列表。在选择要开发的项目时,系统会自动识别适用的语言模板,例如,如果你选择的项目是 Java 的话,它会自动识别为 Java 模板。
tips:单个账号在豆包MarsCode IDE 上创建的项目数量不得超过 10 个

当你导入创建项目时,速度非常快,基本可以在几秒钟内完成,而且还会自动识别为 Maven 项目。

依赖环境
拿到新项目后,我们的操作步骤与通常一样,唯一的不同是无需搭建运行环境,只需下载依赖即可。更方便的是,我们可以直接从阿里云仓库下载依赖,无需单独配置 mvn 的 setting 文件,这一点特别贴心。
这一步直接报错了。按照官方的依赖包下载的话,在阿里云镜像中是找不到的,具体如下所示:

tips:在 pom 中指定了 repositories 仓库地址,也不会生效,可以认为只能去阿里云仓库

当即使指定了下载包仓库,仍然无法成功时,我出于好奇查看了阿里的镜像,发现其不存在。进一步调查后发现,阿里云的镜像 groupid 已经更改。因此,我也需要相应地进行修改:

修改后,终于成功实现了正常的下载功能,但我仍不清楚是否损失了哪些功能。这可能被视为一个缺陷,因为我的项目是开源的。如果某些小公司内部依赖于私有仓库的包,那么他们可能会遇到问题。
启动项目
在启动项目时,这里会持续提示各种配置项,只需直接启用它们,即可顺利完成启动操作。

确保在启动任何 maven 项目之前,务必确保项目已成功编译完成,否则可能会导致出现各种文件找不到的错误。

同样地,你也可以在这里配置适合自己习惯的操作方式:
如clean install -DskipTests=true

体验项目
启动成功后,将会显示相应的路径及其所监听的端口信息,让我们来查看一下吧。

这里是我们项目真正使用的端口监听。如果需要详细了解,请查看项目配置文件中的相关信息。好的,让我们进行访问。

当我们查看 web-view 时,请将输入的路径转换成对应的路径。举例来说,如果我直接访问 swagger-ui,那么输入的路径就是 doc.html。

此外,除了这些路径,我只需在此页面上点击即可查看和操作剩余的所有路径。

当然,如果你不希望在这里使用 webview,也可以复制路径并在浏览器中打开以访问。总体而言,项目启动的基本环境依赖操作通常可以在 30 分钟内完成。

在这里,不仅可以根据相应的路径找到对应的控制器,还可以观察到垃圾回收器的工作状态,这使得这个视图变得非常有用和优秀。

当鼠标悬停在注解上时,甚至可以显示出本类中的对象是如何被注入的。这对于研究源码来说也是非常有用的功能。

小操作的一项优化是支持文件重命名时,同时修改其中的类名。

编辑项目
完成了上述基本操作后,接下来我们将开始今天的主题:继续维护我的开源项目 spring-ai-demo。今天我们将深入探讨函数调用。
大型语言模型(LLM)在训练完成后被冻结,导致其知识陈旧,并限制了其访问和修改外部数据的能力。
为了解决这些问题,函数调用机制应运而生。这种机制允许你注册自定义函数,将大型语言模型连接到外部系统的 API。这些外部系统能够为 LLM 提供实时数据,并代表它执行数据处理操作。
Spring AI 简化了支持函数调用所需的代码编写。它处理了函数调用的对话流程,使你能够轻松地注册函数。你只需提供函数的 Bean 名称作为 a,然后在提示选项中选择该名称以激活该函数。此外,您还可以在单个提示中定义和引用多个函数。

- 执行聊天请求及函数定义信息的处理,例如解释模型何时应该调用函数以及函数的输入参数模式。
- 模型决定调用函数时,会传递输入参数给相应的函数,并将输出结果返回给模型。
- Spring AI 管理此对话流程,将函数调用分发给适当的函数,并将结果传送回模型。
- 模型可以执行多个函数调用以获取所需的所有信息。
- 一旦收集到所有必要信息,模型将生成响应。
补全代码
这里先快速写一个入口,tab 补全代码

报错修复
在复制粘贴过程中,IDE 并不会自动添加相关的依赖包。因此,每当遇到类报错时,如果 IDE 提供了快速修复选项,请优先点击执行修复操作;如果没有快速修复选项,则建议参考 AI fix 的建议进行手动修复。

代码注释
这个功能简直是太赞了,我真的很喜欢它。因为有时候实在懒得打字,但在线 IDE 可以根据我的输入自动理解代码的意图,并且根据我的简短提示自动生成后续的注释。这对于我这种懒人来说简直是福音啊!
AI 问答
有任何报错,无论是来自控制台还是其他地方,他都能够利用智能问答进行优化和解决。

同样也有历史记录进行维护,这样可以方便回顾和查看之前的错误记录。在记录问题时,根据解决方法详细描述,以确保下次不会再犯同样的错误。

最后重新启动项目即可。尽管已经进行了函数回调,但由于地址传错,无法避免。毕竟这些 API 都由开发者自行管理,最初我以为是官方的问题,但询问后发现与官方无关。

tips:这里注意下每个路径都是有时间限制的,所以如果长时间不刷新,路径也将会失效,点击刷新即可。url 路径是不会改变的

单元测试
对于程序员另一个福音则是快速生成单元测试,对于开源项目来说,单元测试同样具有重要价值。它们不仅能够保证代码的质量和稳定性,还能够吸引更多的贡献者参与到项目中来。一个拥有良好单元测试的项目,可以降低新贡献者的入门门槛,因为他们可以快速地验证自己的代码更改是否符合预期,从而更有信心地参与到项目的开发中。
然而,编写单元测试确实需要投入额外的时间和精力。毕竟,开发工作往往需要"用爱发电",即在有限的资源和时间内,尽可能地发挥创造力和热情。这种情况下,就需要开发者权衡利弊,决定是否有足够的精力来维护单元测试。

提交变更
当你完成开发并维护相关代码之后,可以直接使用此接口进行 Git 提交,从而实现一站式的服务。

前端 UI 聊天交互页面
前几天有粉丝在评论区建议增加一个前端交互页面,认为这会使体验更加丰富,于是我们便安排了这个任务。我们主要探索了两种不同的前端页面设计:一种是采用豆包MarsCode 的 React 模版,另一种是直接使用 HTML 模版,还有一种特殊的 Python 模版。好的,言归正传,让我们首先来探索 React 模版。
React
项目模版创建
我掌握了一些 HTML、JavaScript 和 CSS 的基本操作,对 React 框架几乎没有经验。因此,我会使用 IDE 提供的模板来创建项目,而不必过多关注环境依赖,直接启动即可成功。好的,那么让我们开始吧。

当你进入这个页面时,你会发现官方提供了一份贴心的 README 文件,可以帮助你快速了解如何启动这个程序。

UI 交互
启动结束后,我浏览了一下页面,但我对这个东西基本上一头雾水,页面上的元素我都不认识。好的,我想通过 AI 来了解一下,看看它是否能够满足我的需求。
tips:这里注意下,问问题的时候,一定要选择修改的页面,如果选的不对,AI 也是无法直接回答问题的。

生成的结果看起来确实不错,但幸好我有一些前端基础知识,因此能够发现生成的属性有问题。经过修改后,问题得以解决。

接着立即观察生成的结果。
tips:这里发现个问题,webview 无法显示 alter 弹窗信息,不过复制出来在浏览器中使用即可,无伤大雅

好的,我们已经确定了基本组件。剩下的优化工作我们稍后再进行,先完成后优化师我开发的原则。接下来要做的是生成按钮点击后要跳转的页面。让 AI 来帮我整理一下吧。

好吧,生成的内容一直报错,而且他们还不给修复。

那么我们可以考虑另一种解决方案。考虑到这是一个框架,应该有专门的组件可以直接完成这项任务,特别是在当今 LLM 流行的环境下,聊天页面也正迎来了蓬勃发展。

ChatSDK
找了半天,确实没找到满意的解决方案。于是我向各位前端大佬请教了一下,毕竟我在前端框架方面几乎没有经验。他们根据我的需求推荐了一个非常强大的一站式 UI 解决方案——阿里的 chatSDK,你可以在以下地址找到它:
chatbot.console.aliyun.com/ChatSDK#/sd…

这就是我想要的结果,不过在配置的过程中遇到了很多问题,因为我对此一无所知。尽管如此,我仍然坚持学习并逐步掌握。幸运的是,通过查阅官方文档,我得以解决了这些困惑,即便我的 AI 助手也跟我一样陷入了困境。

Rsbuild
没错,就是指的 rsbuild。虽然文档写得很详细,但我还是去看了如何设置 index.html。结果发现操作很简单,只需要简单配置一下就行。可能是因为 rsbuild 并不像 webpack 那样流行,所以网上关于它的配置信息不多,我一直找不到相关的资料。

这里来详细介绍一下 rsbuild。为什么在 React 项目中选择自动集成 rsbuild,而不是像市面上流行的 webpack 等其他工具呢?
Rsbuild 是一个基于 Rspack 的高性能构建工具,它不仅提供丰富的构建功能和优化的配置选项,还支持多种前端 UI 框架。Rsbuild 的特点包括出色的性能表现、简便的配置方式、丰富的插件生态系统、稳定可靠的构建产物以及与各种前端框架的无缝兼容性。与类似的工具如 Vite、Create React App 和 Vue CLI 相比,Rsbuild 不仅能够实现更高效的构建过程,而且能够更好地融入复杂的生态系统中。

Rsbuild,由字节跳动推出,旨在构建一个开放的技术生态系统,以积极推动前端技术的进步和发展。
因此,首先,Rsbuild 拥有更高的构建性能,能够提供比基于 Webpack 的 Create React App 和 Vue CLI 等工具高达 5 到 10 倍的效率,同时还具备更为轻量的依赖体积。其次,Rsbuild 与豆包MarsCode 一样是属于一家公司的产品,所以成为了一个优选的选择。
这里唯一的不足是社区问题太少,当我遇到错误时,很难找到解决方法,只能自己苦苦探索,甚至要通过 Google 搜索来解决。有时甚至连关键字【Rsbuild+问题】都无法搜索到相关信息。这方面值得进一步优化。
其实一句话即可。我们去看下去

设置成功后,我们将按照阿里提供的 SDK 快速开发文档进行配置,然后启动应用程序进行测试

可以看到,所有必要的内容已经成功添加到系统中。接下来,我们将继续开发以实现跳转到聊天页面的功能。首先,我们需要完善各种路由的配置,确保一切就绪后再继续进行跳转功能的开发。这一步骤只需要完成一个小组件即可。
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import ChatHome from '../components/chat';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'
const root = ReactDOM.createRoot(document.getElementById('root')!);
root.render(<React.StrictMode> <Router><Routes><Route path='/talk' element={<ChatHome />}></Route><Route path='/' element={<App />}></Route></Routes></Router></React.StrictMode>,
);
当需要添加链接时,剩下的任务就是在合适的位置插入超链接。可以简单地使用代码自动补全完成这个任务。

当最后成功集成进来时,所带来的效果如下所示:

优化后端
接下来,我们将继续对接之前我们开发的 spring-ai 项目,以实现一个真正交互式的界面。

那么为什么不能直接使用 record 返回呢?因为前端不仅仅支持文本,还有其他方案。所以还是自己写吧。总之,目前即便是 AI 也可能会出错,即使指定返回特定格式,也不一定正确。
具体修改后如下:
@PostMapping("/ai")
ChatDataPO generationByText(@RequestParam("userInput") String userInput) {String content = this.myChatClientWithSystem.prompt().user(userInput).call().content();log.info("content: {}", content);ChatDataPO chatDataPO = ChatDataPO.builder().code("text").data(ChildData.builder().text(content).build()).build();;return chatDataPO;
}
在启动后端的 spring-ai-demo 项目后,我们可以复制 networking 目录下的 URL 路径。这样做是为了确保前后端项目能够同时成功启动。
接下来需要对前端发送的 API 接口信息进行修改和优化。
return {url: 'https://jtdedyc1-kbb5pits-q02qbpq08o1p.c1.mcprev.cn/ai',data: {userInput: msg.content.text,// sessionId: sessionId,},method: 'POST'};
}
效果演示
前端项目启动完成后,我们可以继续前往演示其效果。

Python
我们再创建一个新的项目,这次以 Python 为模板,为了确保项目从一开始就符合我们的需求,我们需要对初始模板进行一些调整。首先,我们将删除原有的代码,因为它们仅是构建一个基础的 Python HTTP 服务项目的基础,而并非我们项目所需的具体功能。
我们要以 Streamlit 这一强大的工具为主,Streamlit 不仅以其强大的功能和易用性著称,还能让我们以前所未有的速度构建出具有流式打字机效果的聊天应用。
对于那些像我一样对复杂的前端代码感到畏惧的开发者来说,Streamlit 无疑是一个巨大的福音。它简化了开发流程,让我们能够专注于应用的核心功能和逻辑,而无需深陷前端开发。
streamlit
在这次实操中,我们将跳过那些深奥的理论知识,将全部的注意力集中在实际的操作和应用上。
首先,我们需要确保基础环境已经搭建好。幸运的是,基础环境的搭建工作已经顺利完成,我们不需要再为此花费额外的时间和精力。接下来,我们需要做的就是安装一些必要的开发环境即可:
pip install streamlit
在进行项目开发的过程中,我们常常会遇到需要从外部获取各种资源和依赖的情况。豆包MarsCode IDE 默认已经不再是官方源了,而是国内的仓库。
接下来,我们将进行一个简单的测试,以验证我们的环境配置是否正确。首先,我们需要将示例代码复制到我们的开发环境中。启动后,检查是否能够正常访问,页面是否显示预期的内容。
import streamlit as st
import random
import time# Streamed response emulator
def response_generator():response = random.choice(["Hello there! How can I assist you today?","Hi, human! Is there anything I can help you with?","Do you need help?",])for word in response.split():yield word + " "time.sleep(0.05)st.title("Simple chat")# Initialize chat history
if "messages" not in st.session_state:st.session_state.messages = []# Display chat messages from history on app rerun
for message in st.session_state.messages:with st.chat_message(message["role"]):st.markdown(message["content"])# Accept user input
if prompt := st.chat_input("What is up?"):# Add user message to chat historyst.session_state.messages.append({"role": "user", "content": prompt})# Display user message in chat message containerwith st.chat_message("user"):st.markdown(prompt)# Display assistant response in chat message containerwith st.chat_message("assistant"):response = st.write_stream(response_generator())# Add assistant response to chat historyst.session_state.messages.append({"role": "assistant", "content": response})
streamlit run main.py
在启动Streamlit项目的过程中,我们直接选择使用命令行工具来执行,而不是依赖于图形界面的“运行”按钮。
后端优化
我们之前的文章开发过程基于对接大模型的。而这一次,我们计划采用Spring-AI后台进行对接,以开发实时交互聊天功能。
首先,我们需要对代码进行相应的修改。
@PostMapping("/ai-stream")
Flux<String> generationByStream(@RequestParam("userInput") String userInput) {Flux<String> output = chatClient.prompt().user(userInput).stream().content();return output;
}
代码生成
启动成功后,我们要求AI协助生成请求代码。

这段代码拿过来后需要简单修改一下,因为我们需要走流式回答,并不是阻塞式的调用。最后代码如下:
def response_generator(prompt):url = 'https://fq5jh3sk-kr95txxo-prhof0hgd4fs.c1.mcprev.cn/ai-stream'url += '?userInput=' + promptheaders = {'Accept': '*/*','Content-Type': 'application/x-www-form-urlencoded'}# 发送POST请求response = requests.get(url, headers=headers, stream=True)# print(response.text)# 处理流式响应if response.status_code == 200:# 获取可读流for chunk in response.iter_content(chunk_size=1024):if chunk:# 在这里处理你的业务逻辑,例如打印或者其他操作yield chunk.decode('utf-8') # 假设服务器返回UTF-8编码的文本else:print(f"Error fetching data: {response.status_code}")
tips:这里需要注意的是,请不要在后端调用其他豆包启动的项目,因为这样可能会被系统拦截。不像前端页面那样可以直接跳转,后端如果直接调用 API 是行不通的。因此,我在本地启动了一次联调。
演示效果
Python的实现相当简单,我们现在来看一下它的调用结果:

好的,我们这期更新工作已经全部完成。原本还有一部分关于编写HTML模板的内容要完成,不过我使用了一下HTML模版总的来说,除了上文提到的一些优缺点外,目前没有其他需要特别注意的地方。因此,我决定不再进一步详细讨论HTML模板的编辑工作。
还是上面那句话,用起来是可以的,特别是在开源项目中。它能够快速实现功能,无需额外的环境配置。当然,我希望豆包MarsCode IDE 在未来能够进一步改进,毕竟在使用了Java、Python、React、HTML模版一整套下来,会遇到一些小问题。但这些问题并不影响个人开发的使用体验。
总结
豆包MarsCode 是现代开发者的利器,其集成了强大的 AI 功能和云端IDE,极大地提升了开发效率和代码质量。通过支持多种主流编程语言和IDE,豆包 MarsCode 不仅简化了环境配置过程,还提供了智能代码补全、单元测试生成、问题修复等多项AI驱动的功能,使开发者能够专注于创造性工作而非繁琐的设置。
在实际使用中,我深刻体验到豆包MarsCode 的便利。无论是快速导入GitHub仓库、自动识别项目语言模板,还是轻松配置和启动项目,它都展现了出色的稳定性和高效性。与传统的本地IDE相比,豆包MarsCode 的云端特性更加灵活,使我能够随时随地进行开发,无需担心硬件或网络环境的限制。
特别是在代码质量的提升方面,豆包MarsCode的AI功能展现了其独特优势。自动代码注释、智能问题解决建议,以及对话式AI视图的应用,不仅简化了日常开发中的繁琐任务,还显著提高了代码的可读性和可维护性。这些功能不仅让我在忙碌的开发过程中节省了大量时间,还使我的开发工作更加高效和愉悦。
总的来说,豆包MarsCode 不仅是一个工具,更是现代软件开发中不可或缺的助手。它的出现不仅推动了开发工具的技术进步,更为开发者们带来了全新的开发体验和工作方式。期待未来豆包 MarsCode在AI驱动开发领域继续创新,为全球开发者提供更多实用且强大的功能。
相关文章:
「豆包 Marscode 体验官」AI 加持的云端 IDE——三种方法高效开发前后端聊天交互功能
以下是「豆包 MarsCode 体验官」优秀文章,作者努力的小雨。 豆包 MarsCode 豆包MarsCode 编程助手支持的 IDE: 支持 Visual Studio Code 1.67.0 及以上版本,以及 JetBrains 系列 IDE,如 IntelliJ IDEA、Pycharm 等,版本要求为 22…...
基于Linux文件编程实现处理Excel表格的数据
目录 前言 整体的代码框架 如何读取数据文件的数据 read_line 如何处理读取到的数据 process_data 运行结果 总结 前言 本文是基于Linux文件编程的一个小实验,用文件IO来读取Excel表格的数据,处理后写入另一个文件,本文只是对文件IO的…...
make 程序规定的 makefile 文件的书写语法(2)
(13)接着开始一个更复杂的例子,课程的素材 2 ,先给出书写 makefile 的框架 : (14) (15) 谢谢...
容器化安装jenkins稳定版长期维护版本LTS
前提已有 docker-compose和docker-ce环境,这里安装稳定的Lts版本即可。 选择稳定版本 这里选择LTS 稳定长期维护的版本 在docker镜像找到LTS稳定版本 部署jenkins服务 创建持久化数据目录 jenkinsdata]# pwd /data/jenkinsdata编写docker-compose文件 jenkins_…...
如何让人工智能训练更快
影响人工智能训练时间的因素 在深度学习训练中,训练时间的计算涉及到多个因素,包括 epoch 数、全局 batch size、微 batch size、计算设备数量等。下面是一个基本的公式来说明这些参数之间的关系(注意,这只是一个基本的说明公式&…...
linux/ubuntu国内镜像安装gitleaks敏感信息扫描工具教程及避坑点
1、背景 利用gitleaks扫描git仓库或者文件 GitHub上有比较详细的教程,但是由于每个人的安装环境不同,坑很多,网上能查到的有效信息也比较少。这里就以我坑很多的环境为例,捋一下步骤。 GitHub - gitleaks/gitleaks: Protect an…...
JavaScript高级程序设计基础(二)
二、语言基础 2.1语法 (简单的语法基础将在文章省略) 2.1.1严格模式 严格模式是一种不同的 JavaScript 解析和执行模型,不规范写法在这种模式下会被处理 只需在脚本开头加上"use strict" 也可以单独指定一个函数在严格模式下执…...
使用Spring Boot开发自习室预定系统
开发一个自习室预定系统涉及到用户管理、自习室管理、预定管理等功能。以下是使用Spring Boot开发自习室预定系统的步骤和关键点: 1. 需求分析 确定系统的基本需求,例如: 用户注册和登录管理员管理自习室信息用户浏览可用自习室用户预定自…...
最近读书总结
1《More Joel on Software》读后感【2024年8月29日】 1.1 本书概要 本书讲解了如何发现优秀的IT人才,并把他们招聘进来;如何对智力密集型的IT企业(软件企业)进行管理,即最好采用情感认同法;对计算机大学生…...
python列表判断是否为空的三种方式
#列表是否为空判断 a[]一: if a:print(not null) else:print(null)二: b len(a) if b 0:print(null) else:print(not null)三: if not a:print(null) else:print(not null)运行结果:...
二十三种模式之原型模式(类比制作陶器更好理解一些)
1. 设计模式的分类 创建型模式(五种):工厂方法模式、单例模式、抽象工厂模式、原型模式、建造者模式。 结构型模式(七种):适配器模式、代理模式、装饰器模式、桥接模式、外观模式、享元模式、组合模式。 行为型模式(十一种):状态模式、模板方…...
9.9日记录
1.常见排序算法的复杂度 1.快速排序 1.1快速排序为什么快 从名称上就能看出,快速排序在效率方面应该具有一定的优势。尽管快速排序的平均时间复杂度与“归并排序”和“堆排序”相同,但通常快速排序的效率更高,主要有以下原因。 出现最差情况…...
鸿蒙交互事件开发04——手势事件
1 概 述 手势事件是移动应用开发中最常见的事件之一,鸿蒙提供了一些方法来绑定手势事件。通过给各个组件绑定不同的手势事件,并设计事件的响应方式,当手势识别成功时,ArkUI框架将通过事件回调通知组件手势识别的结果。 …...
研1日记9
1.理解conv1d和conv2d a. 1和2处理的数据不同,1维数据和图像 b. 例如x输入形状为(32,19,512)时,卷积公式是针对512的,而19应该变换为参数中指定的输出通道。 2.“SE块”(Squeeze-and-Excitation Block)它可以帮助模…...
HAL库学习目录查询表
日期内容2024.09.11基于STM32C8T6的CubeMX:HAL库点亮LED2024.09.11STMCuBeMX新建项目的两种匪夷所思的问题2024.09.11STMCubeMX文件下载后会出现其他项目无法下载的问题...
pandas DataFrame日期字段数据处理
pandas DataFrame日期字段数据处理 1、pandas读取表格文件日期字段存入数据库不需要时分秒 在使用 pandas 读取表格文件,并将日期字段存入数据库时,如果你只关心日期部分而不需要时分秒,可以通过以下步骤来处理: 读取数据并转换日期字段: 首先,你需要读取你的数据,并确…...
swift:qwen2 VL 多模态图文模型lora微调swift
参考: https://swift.readthedocs.io/zh-cn/latest/Multi-Modal/qwen2-vl%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.html 在线demo: https://colab.research.google.com/drive/16yl6Z0wxHLX3qJ5q-SIbvPn251k3r2JC?usp=sharing 安装: !git clone https://github.com/modelsc…...
Vue.js中computed的使用方法
在Vue.js中,computed 属性是基于它们的依赖进行缓存的响应式属性。只有当相关依赖发生改变时,才会重新求值。这意味着只要computed属性依赖的源数据(如data中的属性)没有发生变化,多次访问computed属性会立即返回之前的…...
python之pyecharts制作可视化数据大屏
文章目录 前言一、安装 Pyecharts二、创建 Pyecharts 图表三、设计大屏布局四、实时数据更新五、部署和展示总结前言 使用 Pyecharts 制作可视化数据大屏是一个复杂但有趣的过程,因为 Pyecharts 本身是一个用于生成 Echarts 图表的 Python 库,而 Echarts 是由百度开发的一个…...
Chrome、Edge、360及Firefox浏览器加载多个ActiveX插件的介绍
allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
PydanticAI快速入门示例
参考链接:https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...
