从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!
我正在参加Trae「超级体验官」创意实践征文, 本文所使用的 Trae 免费下载链接: www.trae.ai/?utm_source…
前言
大家好,我是小Q,字节跳动近期推出了一款 AI IDE—— Trae,由国人团队开发,并且限时免费体验
接下来,让我们一同使用 Trae,来看看Trae与其它 AI IDE 对比效果如何
Trae是什么?
Trae是字节跳动推出的一款免费的AI集成的开发环境,集成了Claude3.5与GPT-4o等主流AI模型,提供AI问答、智能代码生成、智能代码补全,多模态输入等功能。支持界面全中文化,为中文开发者提供了高效的开发体验,关键还免费
如果已经了解过可以直接跳到Trae实战小节,带你使用Trae从0开始开发一个ChatBot
Trae安装
点击进入Trea官网下载
进入官网你会看到这个页面
点击Download即可进入下载
进入安装程序,它会让你选择主题以及语言,原生支持中文和英语,可以从其他IDE中导入数据如(VSCode),它会将你的插件以及设置等一键导入Trae,这样你就可以轻松切换到Trae
这步它会让你添加trae
命令行,当你需要在命令行中使用Trae
打开项目时
可以使用trae
命令
trae . # 打开命令行所在目录
trae /developers/app/xxx # 打开指定项目
如果你授权登录的时候发生这种错误,那么就需要你科学上网
Trae核心功能
进入 Trea 就可以看得到,典型的布局,左侧文件导航区,中间代码编辑区,右侧是 AI 聊天交互区,不得不说,这个 UI 确实可以,看习惯了 VSCode 以及那些插件的主题,Trea 的 UI 界面很简洁、直观的设计,让人焕然一新Trae的AI辅助功能有两种分别是Chat模式、Builder模式,接下来我会以介绍Trae基础功能的方式介绍Chat模式,之后使用Builder模式入门编写一个贪吃蛇小游戏,最后实战阶段
Chat模式
`Chat`顾名思义就是聊天,可以通过对话方式提问,AI 提供代码建议、错误修复和优化方案使用Chat模式
如果没有显示侧边栏,可以使用`Command`+`U`快捷键打开,点击上方的`Chat`即可进入`Chat`模式输入框功能
通过上面这张图可以看到输入框有上下文、多模态输入、**模型切换(支持Claude3.5、GPT-4o)**等这些功能
如果你要使用Trae的上下文引用,在输入框使用#
就可以展示上下文列表,当鼠标移动到文件上时,会展示一个树形结构的预览,这样在重复名称的文件较多时,也能快速定位所需文件,而无需查看后面长长的路径
代码操作功能
- 复制
- 插到光标所在处
- 添加到新文件,它会帮你创建一个文件并写入
- 应用到相应文件,它会将代码应用到相应的文件
它的代码片段右上角有四个操作按钮,不仅有“复制”和“应用到文件”的基本功能,相较于其他AI IDE还添加了插到光标所在处以及添加到新文件
行内输入框
当你需要精确操作时,将代码选中点击Command
+I
快捷键打开行内对话框,输入你的需求
它会直接在行内按照你的需求修改代码,并且有修改前与修改后对比,点击输入框下的接受or拒绝,表示是否接受此次修改
或者你是想要提问,在编辑器内选中代码,执行command
+ U
即可将代码片段一起提问给 AI,比如当你不理解某段代码的含义时,就可以这样做,如果你要关闭行内输入框,点击esc
即可
上下文功能
你还可以在输入框中使用#
索引整个文件,将整个文件喂给AI,给 AI 提供更多的上下文,提高回答的准确率
如果你想提高ai回答的准确性,可以在设置中构建索引,构建度越高,ai回答的准确性也就越高,当构建度为100%的时候,回答的准确率是最高的,符合当前项目
有时候从 GitHub 上拉取代码,如想学习项目源码、快速了解该项目等等,使用#workspace
引用整个项目,结合 AI 学习源码效率就会非常高
通过上面的简单介绍可以了解到Chat
模式适合AI问答辅助学习等流程,而Builder
模式则不同更像一个程序员帮你写代码,下面我通过一个案例来演示如何使用Builder
模式
Builder模式
Builder
模式可以从0帮你构建一个完整的项目,自动编写代码,在生成的过程中,它也会向你询问一些
意见,比如它生成了一行命令它会询问你“是否需要运行这行命令?”,你只需要点击即可
使用Builder模式
如何使用Builder
模式呢?当然也是Command
+U
打开侧边栏,之后点击最上面的Builder
,即可切换到Builder模式
发布需求
把你的需求告诉它,比如让它使用 Vue 3 开发一个贪吃蛇游戏执行操作
接着点击运行它给出的初始化项目命令,命令行就会执行并初始化项目接下来它会自动帮你创建文件,一步一步的完成编写代码、创建文件等操作,在这过程中可能需要你运行它给出的命令,你只需点击运行即可,如果在运行命令的过程中出现任何报错它也会自动帮你修复
预览效果
当编写完成后,它会让你运行启动命令,之后会给出一个预览按钮,点击预览之后会在 Trae 内打开一个 Webview 预览窗口,Webview是Trae内置的一个功能,非常方便开发人员进行预览测试,经测试这个贪吃蛇游戏没有任何bug
接受修改
如果你觉得这个文件没问题的话可以点击文件顶部的接受按钮,接受对该文件的修改
当然你觉得全部都没问题的话,可以直接点击点击全部接受,接受它所有的操作
这样就使用 Builder 模式开发了一个贪吃蛇游戏,在这个过程中,你只需要点击确认运行的按钮,其他事情(编写代码、创建文件、修复 bug)都由 AI 自动完成,无需动手写代码等。
Trae实战:开发ChatBot
接下来,在了解完Trae如何使用之后,我们现在将Trae运用到实际项目当中,真实体验一下Trae在项目中的效果,我们会使用Trae开发一个ChatBot,在这过程中我们会借助Trae的能力进行AI自动编写代码、Bug修复、描述问题、同时我们还会想它获取意见(比如结合项目应该使用什么XXX库)等等,帮助大家更好的了解Trae
初始化项目
编写一个完整的提示词可以精确的引导AI生成符合需求的结果,可以借助AI的能力优化提示词
## 角色
你是一位资深前端工程师,擅长使用 Vue 3 + Vite + TS + Tailwind CSS 开发现代 Web 应用。## 核心需求
开发一个聊天页面,包含以下功能:
1. **布局**:- 页面背景为白色,文字为黑色- 使用 `main` 标签包裹内容,宽度在屏幕 >780px 时为 780px,否则为 100%- `main` 标签有 20px 的横向内边距,高度为 100vh,内容超出时显示滚动条2. **输入区域**:- 底部固定定位,距离底部 20px- 包含一个 `textarea` 输入框和一个发送按钮- `textarea` 背景为白色,placeholder 为“你有什么要我帮助的吗?”- 发送按钮为蓝色背景,使用 SVG 图标- 输入区域整体有 1px 浅灰色边框,宽度为 100%(最大宽度为内容区域宽度)3. **聊天列表**:- 用户聊天气泡:蓝底白字,文字居右,宽度自适应内容- AI 聊天气泡:白底黑字,1px 浅灰色边框,文字居左,宽度自适应内容## 技术栈
- Vue 3 + Vite + pnpm
- Tailwind CSS(用于快速样式开发)
- 使用 SVG 图标(发送按钮)## 输出要求
1. 使用 Tailwind CSS 实现样式
2. 确保布局和样式完全符合需求
如果没有安装pnpm则将pnpm改为npm
你可以将技术栈改为你所想要使用的
使用Trae打开一个空目录,之后打开Builder
模式,将上面的提示词发送给AI,当然你可以添加一张示例图片一起发送给AI,让AI更清楚的知道你想要的是什么
此时我们点击发送
它会要我们运行初始化命令,我们只需点击运行
就会在根项目目录下创建一个Vue3+Vite的项目,然后等待它创建文件,编写代码等操作
如果在运行的命令过程中,出现报错它会自动帮助我们修复,尝试其他命令
但是命令依旧是错误的(正确命令是:npx tailwindcss init
),不过它自动帮我创建了一个tailwindcss
配置文件
不过很快啊,它一下子就写好了,我们运行预览看看
报错了,当页面发生报错时AI会自动检测并指出问题及修复
它准确的发现是依赖问题并将依赖删除安装了正确的版本,之后重新运行,这样就完成了一个基本的聊天页面,样式还可以,还是比较符合的,到最后我会美化一下
将AI接入聊天
接下来我们需要将ai接入聊天我需要你为我的项目接入aibot具体要求如下:
1. **功能扩展**:- 在现有聊天页面中集成 LangChain.js,实现与 AI 的对话功能。- 支持流式响应(Streaming Response),提升用户体验。2. **环境配置**:- 使用 `.env` 文件管理 API 配置,包括 `API_BASE_URL` 和 `API_KEY`以及`Model`。- 确保环境变量在开发和生产环境中均可使用。3. **技术栈**:- Vue 3 + Vite + pnpm- Tailwind CSS(用于样式)- LangChain.js(用于 AI 对话逻辑)**输出要求**
1. `.env` 文件示例
2. LangChain.js 集成逻辑
3. 流式响应实现代码
将上面的提示词发送给ai
它会帮你修改代码逻辑,并创建一个env.
环境变量文件,接着你输入你的api-key以及对应平台的base_url,我这里用的是deepseek的
-
VITE_OPENAI_API_KEY =api密钥
-
VITE_OPENAI_API_BASE_URL =请求url
-
VITE_OPENAI_MODEL=模型名称
重新运行看一下
完美,如果在这实现的过程中有bug可以寻求ai,接下来给他上一点点难度,让它添加一个切换不同平台ai模型的Dropdown
接着点击全部接受,表示接受全部修改
添加切换模型按下拉菜单
**角色**
你是一位资深前端工程师,擅长使用 Vue 3 + TypeScript + Tailwind CSS 开发现代 Web 应用。**核心需求**
1. **功能扩展**:- 在输入框上方添加一个 `Dropdown` 下拉框菜单,用于切换不同平台的 AI 模型。- 按钮大小为 30x30px,使用设置图标(SVG)。- 点击按钮后显示模型列表,点击列表项切换模型。2. **模型配置**:- 新建 `src/config/models.ts` 文件,存放不同平台的 AI 模型配置。- 从环境变量中读取 API 密钥、基础 URL 和模型名称。3. **环境变量**:- 修改 `.env` 文件,支持 DeepSeek 和 Zhipu 两种模型配置。4. **代码优化**:- 使用 TypeScript 实现强类型检查。- 封装 `Dropdown` 组件,提升代码复用性。**技术栈**
- Vue 3 + Vite + pnpm
- TypeScript
- Tailwind CSS(用于样式)
- Axios(用于 API 调用)**输出要求**
1. 完整的 Vue 组件代码(ChatPage.vue)
2. `Dropdown` 组件代码
3. `models.ts` 配置文件
4. 更新后的 `.env` 文件
将这些提示词发送给ai
紧接着他就开始修改了
修改了.env
文件并创建了两个文件Dropdown下拉框
和models模型配置
当它完成了之后我们将.env
的修改为正确的api-key、baseUrl,当然这里你可以添加其他模型,我这里就拿着deepseek
和智普
个做示例了,因为deepseek便宜,智谱有免费模型😃,可以看出来我是个穷人😭
发现App.vue文件有一个报错,显然是这个没有从langchain中导入,考验一下ai,接着使用鼠标选中,在显示的操作上点击“添加到对话”询问它,它也给出了正确答案,但是不会自动帮我写入到文件当中,希望以后会更加智能
可以看到效果是出来了,但是位置不太对导致下拉框被挡住了,让它帮我修改一下Dropdown
的弹出方向
新建一个对话继续选择Builder
模式,避免上下文过多导致混乱或ai失忆
接着在输入框中输入#
来引用文件选择File
类型文件,当选择之后,它智能的直接选中了当前文件,回车即可
它精确的修改了相关代码,完成修改之后我们看看效果
成功完成了模型的切换
如果没有问题,点击输入框上的全部接受
格式渲染
现在渲染的格式并不正确,可以用markdown库来渲染,此时可以借助 Builder 的能力了,无需出手
它会安装一个markdown渲染器,并在项目中添加代码逻辑
效果是有了,可是我需要它高亮代码块,向它提出需求
它会安装一个highlight.js
用于高亮代码,并添加相应的代码逻辑,可以看到代码成功的高亮
如果没有任何问题,接着点击全部接受
添加暗黑模式
接着给添加最后一个功能暗黑模式请你给这个项目添加暗黑模式
1. **暗黑模式切换**:- 新增一个切换按钮,圆形,大小为 45x45px,定位在 `main` 标签内容的右上角。- 按钮图标在 Light 模式下显示月亮(Moon),Dark 模式下显示太阳(Sun)。- 点击按钮切换 Light/Dark 模式。2. **主题颜色**:- 主题色:`#3662e3`(用于按钮、链接等)。- Light 模式背景色:`#fafafa`,文字颜色:`#09090b`。- Dark 模式背景色:`#09090b`,文字颜色:`#fafafa`。3. **技术栈**:- Vue 3 + Vite + pnpm- Tailwind CSS(用于样式)- SVG 图标(用于按钮)**输出要求**
1. 完整的 Vue 组件代码(DarkModeToggle.vue)
2. 更新后的 `main` 标签样式
3. 主题颜色配置
结果:
这样不行,我接着让他修改
实现了切换暗黑模式,不过布局被修改了
经过了几次交流修改,但结果并不是我所需要的,接着点击全部拒绝返回上一个版本
暗黑模式切换没问题,只是样式存在一些小问题,我自己简单修改一下,当然你可以将准确的需求给AI,让它进行修改
经过我的手动简单修改,最终修改成了我所需要的样子
自动滚动 To 底部
最后一个功能就是消息列表内容溢出时,内容区域自动滚动到底部我想要消息列表内容溢出时,内容区域自动滚动到底部
复制上面👆文本并使用#
引用App.vue
文件向它提需求
之后它会帮我创建一个scrollToBottom
函数用于滚动到容器底部,并且在消息列表变化时调用该函数
不错效果是可以的
好了就到这里吧,源代码在 https://github.com/lian-1024/trae-demo-aibot
在这个项目中,我们使用Trae开发了一个功能齐全的ChatBot应用,通过Trae集成的AI能力,使得我们能够快速生成代码、自动修复Bug,并在开发过程中获得智能建议,大大提高了开发效率
Trae还能这么用?
Trae的作用不止这些,它还可以辅助你学习、面试、重复一些体力活等学习开源项目、学习源码
如果你需要快速了解该项目、学习项目源码等那Trae绝对是一个好帮手,他可以帮你快速总结项目以及解读代码
首先我们从github上拉取的项目,可以先打开设置,之后点击“开始构建”按钮,
这样AI给出与项目相关的回答,避免它abababab一大堆没用的内容
选择Chat
模式并在输入框输入#
并选择Workspace
向AI发起问答
这样是不是一目了然了,不用你个个点开文件看,直接告诉你这个文件有什么作用以及用的什么技术栈
如果不理解该代码,使用鼠标将其选中并使用快捷键Command
+U
向AI发起问答,当然可以直接#
引用整个文件,在学习源码时非常有用
写项目README.md
如果你像我一样懒得或者不知道怎么编写项目的README.md
切换到Builder模式,让它给该项目编写README.md
文档
当然可以在这基础上你可以修改成符合你的要求
面试
你可以让ai帮你将这个项目写到你的简历上
并且你可以在此模板上进行修改
当然它还可以扮演面试官角色,询问你该项目相关的内容
好啦写总结啦
总结
在本篇文章的开头我们了解Trae是什么?Trae是字节跳动推出的一个强大的AI IDE,以及Chat模式和Builder模式这两个强大的核心功能,后面我们使用了Trae进行了实战
在实际项目中,根据我们的需求生成相应的代码,如果生成的代码可能并不符合我们的要求,这时我们可以点击输入框上的“拒绝”按钮,表示你不想要这次的修改,撤销修改
或者你可以优化提示词or 使用#
提供更多上下文,让它更加“懂你”,生成你比较满意的代码
在编写的代码过程中
它可以很精确的知道你下一步需要做什么,此时你只需要点击Tab即可补全
向它提出“添加切换模型下拉框”需求,直接帮我编写了模型的配置文件以及环境变量,并帮我添加了一个下拉框的组件
可能有时候AI修改的不太符合,比如在添加暗黑模式这一节,它成功添加了暗黑模式,并且可切换,但它修改了不相关的代码,导致布局错误。在这种情况下,我们可以选择拒绝本次修改,接着优化提示词,为AI提供更精确的需求,或者进行手动修改
使用 Trae 可以实现相较于以往更为显著的效率提升,它提供了:
- Builder模式:在这个模式下它可以帮你编写项目、创建或删除文件、生成并运行终端命令、提取报错自动修复等
- Chat模式:在这个模式下它可以回答你的bug问题、讲解代码仓库、生成代码片段等
- 代码自动补全:根据你的代码,提供智能的补全建议、根据代码注释补全等
- 多模态:可以将你的报错代码或UI截屏发送给AI,提供相应的建议
- 上下文:你可以在文件中选中代码片段或在终端中选中报错日志以及使用
#
选择文件或目录,指定AI的上下文以提供更符合正确的回答
这几个功能大大提高我们的开发效率
相较于 Cursor 昂贵的费用,Trae 是一个不错的选择,目前限时免费,并且由国人团队开发,全面支持中文环境,总的来说 Trae 给我的体验还是挺不错的呢,点击下方链接免费下载
免费Trae下载链接: https://www.trae.ai/
源码: https://github.com/lian-1024/trae-demo-aibot
相关文章:
从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!
我正在参加Trae「超级体验官」创意实践征文, 本文所使用的 Trae 免费下载链接: www.trae.ai/?utm_source… 前言 大家好,我是小Q,字节跳动近期推出了一款 AI IDE—— Trae,由国人团队开发,并且限时免费体…...
【清华大学】AIGC发展研究(3.0版)
目录 AIGC发展研究报告核心内容一、团队简介二、AI哲学三、国内外大模型四、生成式内容(一)文本生成(二)图像生成(三)音乐生成(四)视频生成 五、各行业应用六、未来展望 AIGC发展研究…...
Kafka--常见问题
1.为什么要使用 Kafka,起到什么作用 Kafka是一个高吞吐量、分布式、基于发布订阅的消息系统,它主要用于处理实时数据流 Kafka 设计上支持高吞吐量的消息传输,每秒可以处理数百万条消息。它能够在处理大量并发请求时,保持低延迟和…...
maptalks图层交互 - 模拟 Tooltip
maptalks图层交互 - 模拟 Tooltip 图层交互-模拟tooltip官方文档 <!DOCTYPE html> <html><meta charsetUTF-8 /><meta nameviewport contentwidthdevice-width, initial-scale1 /><title>图层交互 - 模拟 Tooltip</title><style typet…...
【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作
文章目录 一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感谢观看! 一、Visual Studio Code下载 下载官网:https://code.visualstudio.com/ 进入官网后点击右上角的Download &…...
datetime“陷阱”与救赎:扒“时间差值”证道
时间工具陷阱,其实是工具引用的误解。 笔记模板由python脚本于2025-03-23 23:32:58创建,本篇笔记适合时间工具研究的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。 Pyth…...
3DMAX曲线生成器插件CurveGenerator使用方法
1. 脚本功能简介 3DMAX曲线生成器插件CurveGenerator是一个用于 3ds Max 的样条线生成工具,用户可以通过简单的UI界面输入参数,快速生成多条样条线。每条样条线的高度值随机生成,且可以自定义以下参数: 顶点数量:每条…...
Apache漏洞再现
CVE-2021-41773路径穿越漏洞 1、开环境 sudo docker pull blueteamsteve/cve-2021-41773:no-cgid sudo docker run -dit -p 8082:80 blueteamsteve/cve-2021-41773:no-cgid 2、访问8082端口 3、打开工具 4、输入网址,检测漏洞...
git,openpnp - 根据安装程序打包名称找到对应的源码版本
文章目录 git,openpnp - 根据安装程序打包名称找到对应的源码版本概述笔记备注 - 提交时间不可以作为查找提交记录的依据END git,openpnp - 根据安装程序打包名称找到对应的源码版本 概述 想在openpnp官方最新稳定版上改一改,首先就得知道官方打包的安装程序对应的…...
SQL Server查询计划操作符(7.3)——查询计划相关操作符(11)
7.3. 查询计划相关操作符 98)Table Scan:该操作符从查询计划参数列确定的表中获取所有数据行。如果其参数列中出现WHERE:()谓词,则只返回满足该谓词的数据行。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-98节点1所示。 图 7.3-…...
编译原理——词法分析
文章目录 词法分析:从基础到自动构造一、词法分析程序的设计一、词法分析程序的设计二、PL/0编译程序中词法分析程序的设计与实现1. 语法特定考量2. 通过状态转移表运用有限状态自动机3. 示例代码片段(用于说明的伪代码) 三、单词的形式化描述…...
Linux内核,内存分布
x86_64的物理地址范围为64bit,但是因为地址空间太大目前不可能完全用完,当前支持57bit和48bit两种虚拟地址模式。 地址模式单个空间用户地址空间内核地址空间32位2G0x00000000 - 0x7FFFFFFF0x80000000 - 0xFFFFFFFF64位(48bit)128T0x00000000 00000000 …...
AI鸟类识别技术革新生态监测:快瞳科技如何用“智慧之眼”守护自然?
在生态环境保护日益受关注的今天,“鸟类识别”已从专业科研工具演变为推动生态治理数字化的核心技术。无论是湿地保护区的珍稀候鸟监测,还是城市机场的鸟击风险预警,AI技术的精准赋能正在改写人类与自然的互动方式。作为行业领先的智能解决方…...
c++之set
一、set特性及用途? 唯一性:set 中的元素是唯一的,不会存在重复的元素。自动排序:set 中的元素会自动按照默认的升序规则进行排序。底层实现:set 通常基于红黑树实现,具有自平衡功能,因此插入、…...
【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解
目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek 通义万相制作AI视频流程 4.1 D…...
【操作系统】自旋锁和互斥锁
自旋锁和互斥锁是用于多线程同步的两种常见锁机制,主要区别在于等待锁的方式和适用场景。以下是它们的对比分析: 1. 等待机制 自旋锁(Spinlock)互斥锁(Mutex)线程通过 忙等待(Busy-Wait&#x…...
人工智能在医疗影像诊断中的应用与实践
引言 随着人工智能技术的飞速发展,其在医疗领域的应用逐渐成为研究和实践的热点。特别是在医疗影像诊断方面,人工智能技术凭借其强大的数据处理能力和模式识别能力,为提高诊断效率和准确性带来了新的希望。本文将探讨人工智能在医疗影像诊断中…...
Java中synchronized 和 Lock
1. synchronized 关键字 工作原理 对象锁:在Java中,每个对象都有一个与之关联的监视器锁(monitor lock)。当一个线程尝试进入由 synchronized 保护的代码块或方法时,它必须首先获取该对象的监视器锁。如果锁已经被其…...
【C语言系列】数据在内存中存储
数据在内存中存储 一、整数在内存中的存储二、大小端字节序和字节序判断2.1什么是大小端?2.2练习2.2.1练习12.2.2练习22.2.3练习32.2.4练习42.2.5练习52.2.6练习6 三、浮点数在内存中的存储3.1练习3.2浮点数的存储3.2.1 浮点数存的过程3.2.2 浮点数取的过程 3.3题目…...
qt 对QObject::tr()函数进行重定向
在 Qt 中,QObject::tr() 函数用于国际化(i18n),它用于标记需要翻译的字符串。通常情况下,tr() 函数会从翻译文件(如 .qm 文件)中查找对应的翻译字符串。如果你希望重定向 tr() 函数的行为&#…...
C#基础学习(三)值类型和引用类型:编程世界的“现金“ vs “银行卡“,以及string这个“渣男“的叛变行为
开场白 各位程序猿/媛们,今天我们来聊一聊编程世界里的"金钱观"。 你以为只有人类会纠结现金和存款的区别?不不不,C#中的值类型和引用类型每天都在上演这场大戏! 而我们的string同学,表面是…...
自动驾驶背后的数学:多模态传感器融合的简单建模
上一篇博客自动驾驶背后的数学:特征提取中的线性变换与非线性激活 以单个传感器为例,讲解了特征提取中的线性变换与非线性激活。 这一篇将以多模态传感器融合为例,讲解稍复杂的线性变换和非线性激活应用场景。 (一)权重矩阵的张量积分解 y = W x + b = [ w 11 ⋯ w 1 n ⋮…...
如何设置sudo权限
打开终端:按 Ctrl Alt T 打开终端。 编辑 sudoers 文件: 使用 visudo 命令编辑 /etc/sudoers 文件(visudo 会检查语法,避免错误): sudo visudo 添加用户权限: 在文件中找到以下行࿱…...
Codeforces Round 1012 (Div. 2) 3.23
文章目录 2025.3.23 Div2B. Pushing Balls(暴力)代码 C. Dining Hall题意思路代码 2025.3.23 Div2 Dashboard - Codeforces Round 1012 (Div. 2) - Codeforces B. Pushing Balls(暴力) 题意很好懂,每一行每一列从左…...
langfuse追踪Trace
介绍 🧠 Langfuse 是什么? Langfuse 是一个专门为 LLM 应用(如 OpenAI / LangChain / 自定义 Agent) 设计的 观测与追踪平台(Observability Platform)。 简单说,它就像是你为 AI 应用插上的 “…...
Java-模块二-2
整数类型 byte:在 Java 中占用8位(1字节),因此它的取值范围是从 -128 到 127。这是最小的整数类型,适合用于节省空间的情况。 short:这种类型的大小是16位(2字节),允许的…...
使用VS2022编译CEF
前提 选择编译的版本 CEF自动编译,在这里可以看到最新的稳定版和Beta版。 从这里得出,最新的稳定版是134.0.6998.118,对应的cef branch是6998。通过这个信息可以在Build requirements查到相关的软件配置信息。 这里主要看Windows下的编译要…...
大模型RLHF训练-PPO算法详解:Proximal Policy Optimization Algorithms
一、TL;DR 提出了一种新的策略梯度方法家族,用于强化学习,这些方法交替进行与环境交互采样数据提出了一个新的目标函数,使得能够进行多个小批量更新的多轮训练这些新方法为近端策略优化(Proximal Policy Optimization…...
【STM32实物】基于STM32的扫地机器人/小车控制系统设计
基于STM32的扫地机器人/小车控制系统设计 演示视频: 基于STM32的扫地机器人小车控制系统设计 简介:扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采…...
【C++初阶】从零开始模拟实现vector(含迭代器失效详细讲解)
目录 1、基本结构 1.1成员变量 1.2无参构造函数 1.3有参构造函数 preserve()的实现 代码部分: push_back()的实现 代码部分: 代码部分: 1.4拷贝构造函数 代码部分: 1.5支持{}初始化的构造函数 代码部分: …...
AI比人脑更强,因为被植入思维模型【21】冯诺依曼思维模型
定义 冯诺依曼思维模型是一种基于数理逻辑和系统分析的思维方式,它将复杂的问题或系统分解为若干个基本的组成部分,通过建立数学模型和逻辑规则来描述和分析这些部分之间的关系,进而实现对整个系统的理解和优化。该模型强调从整体到局部、再…...
Keil5调试技巧
一、引言 Keil5作为一款广泛应用于嵌入式系统开发的集成开发环境(IDE),在微控制器编程领域占据着重要地位。它不仅提供了强大的代码编辑和编译功能,还具备丰富的调试工具,帮助开发者快速定位和解决代码中的问题。本文…...
Web PKI现行应用、标准
中国现行 Web PKI 标准 中国在 Web PKI(公钥基础设施)领域制定了多项国家标准,以确保网络安全和数字证书管理的规范性。以下是一些现行的重要标准: 1. GB/T 21053-2023《信息安全技术 公钥基础设施 PKI系统安全技术要求》 该标…...
ROS多机通信(四)——Ubuntu 网卡 Mesh 模式配置指南
引言 使用Ad-hoc加路由协议和直接Mesh模式配置网卡实现的网络结构是一样的,主要是看应用选择, Ad-Hoc模式 B.A.T.M.A.N. / OLSR 优点:灵活性高,适合移动性强或需要优化的复杂网络。 缺点:配置复杂,需手动…...
【实用部署教程】olmOCR智能PDF文本提取系统:从安装到可视化界面实现
文章目录 引言系统要求1. 环境准备:安装Miniconda激活环境 2. 配置pip源加速下载3. 配置学术加速(访问国外资源)4. 安装系统依赖5. 安装OLMOCR6. 运行OLMOCR处理PDF文档7. 理解OLMOCR输出结果9. 可视化UI界面9.1 安装界面依赖9.2 创建界面应用…...
STM32单片机uCOS-Ⅲ系统11 中断管理
目录 一、异常与中断的基本概念 1、中断的介绍 2、和中断相关的名词解释 二、中断的运作机制 三、中断延迟的概念 四、中断的应用场景 五、中断管理讲解 六、中断延迟发布 1、中断延迟发布的概念 2、中断队列控制块 3、中断延迟发布任务初始化 OS_IntQTaskInit() 4…...
CTF【WEB】学习笔记1号刊
Kali的小工具箱 curl www.xxx.com:查看服务器响应返回的信息 curl -I www.xxx.com:查看响应的文件头 一、cmd执行命令 ipconfig:ip地址配置等; 二、 Kali操作 1.sudo su; 2.msfconsole 3.search ms17_010 永恒之蓝ÿ…...
cpp-友元
理解 C 中的友元(Friend) 在 C 语言中,封装(Encapsulation) 是面向对象编程的重要特性之一。它允许类将数据隐藏在私有(private)或受保护(protected)成员中,…...
Spring AOP 核心概念与实践指南
第一章:AOP 核心概念与基础应用 1.1 AOP 核心思想 面向切面编程:通过横向抽取机制解决代码重复问题(如日志、事务、安全等)核心优势:不修改源代码增强功能,提高代码复用性和可维护性 1.2 基础环境搭…...
利用ffmpeg库实现音频Opus编解码
一、编译与环境配置 libopus库集成 需在编译FFmpeg时添加--enable-libopus参数,编译前需先安装libopus源码并配置动态库路径。最新FFmpeg 7.1版本默认支持Opus的浮点运算优化和VBR/CVBR模式。 多平台兼容性 Opus支持Windows/Linux/macOS平台࿰…...
深入理解指针(1)(C语言版)
文章目录 前言一、内存和地址1.1 内存1.2 究竟该如何理解编址 二、指针变量和地址2.1 取地址操作符&2.2 指针变量和解引用操作符*2.2.1 指针变量2.2.2 如何拆解指针类型2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针-整数3.3 voi…...
计算机网络——通信基础和传输介质
物理层任务:实现相邻节点之间比特(0或1)的传输 到了数据链路层之后,它会以帧为单位,把若干个比特交给物理层,物理层需要把这些比特信息转化成信号,在物理传输媒体上进行传输 通信基础基本概念 信…...
【橘子网络】关于网络分层以及协议的全局讲解
一、网络设备 1、硬件网络设备 1.1、主机(host) 主机的定义比较广泛,所有的接收流量或者发送流量的设备都可以被称之为主机。可以是电脑,手机,服务器。在当今云服务大行其道的局面下,各种云设备也可以被称之为主机。 基于这个…...
macOS 使用 enca 识别 文件编码类型(比 file 命令准确)
文章目录 macOS 上安装 enca基本使用起因 - iconv关于 enca安装 Encaenca & enconv 其它用法 macOS 上安装 enca brew install enca基本使用 enca filepath.txt示例 $ enca 动态规划算法.txt [0] Simplified Chinese National Standard; GB2312CRLF line terminat…...
MySQL 字符集
目录 字符集的基本概念 常见MySQL字符集 ascii(单字节字符集) latin1(单字节字符集) utf8(多字节字符集) utf8mb4(多字节字符集) MySQL默认字符集 MySQL字符集的层次级别 服务器级别 数据库级别 表级别 列级别 连接字符集 字符集是计算机科学中的一个重要概念&…...
Linux shell脚本3-if语句、case语句、for语句、while语句、until语句、break语句、continue语句,格式说明及程序验证
目录 1.if 控制语句 1.1 if 语句格式 1.2 程序验证 2.case语句 2.1case语句格式 2.2程序验证 2.2.1 终端先执行程序,在输入一个数 2.2.2 终端执行程序时同时输入一个预设变量 2.2.3 case带有按位或运算和通配符匹配 3.for语句 3.1for语句格式 3.2程序验…...
基于虚拟知识图谱的语义化决策引擎
在数字化转型浪潮中,企业数据资产的价值释放面临两大挑战:海量异构数据的整合困局与业务-技术语义鸿沟。本文解析飞速创软灵燕智能体平台的创新解决方案——通过构建业务语义驱动的虚拟知识图谱系统,实现企业数据的智能认知与决策赋能。 一、…...
Unity Shader 的编程流程和结构
Unity Shader 的编程流程和结构 Unity Shader 的编程主要由以下三个核心部分组成:Properties(属性)、SubShader(子着色器) 和 Fallback(回退)。下面是它们的具体作用和结构: 1. Pr…...
C++ 继承
目录 一、继承的概念与定义 1.1 继承的概念 1.2 继承的定义 1.2.1 语法 1.2.2 继承关系和访问限定符 1.2.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、C11 final 六、继承与友元 七、继承与静态成…...
XSS Game(DOM型) 靶场 通关
目录 靶场网址 Ma Spaghet! 分析 解题 Jefff 分析 解题 方法一 方法二 Ugandan Knuckles 分析 解题 Ricardo Milos 分析 解题 Ah Thats Hawt 分析 解题 方法一 方法二 Ligma 分析 解题 Mafia 分析 解题 方法一:构造函数 方法二…...