关于 Cursor 的一些学习记录
文章目录
- 1. 写在最前面
- 2. Prompt Design
- 2.1 Priompt v0.1:提示设计库的首次尝试
- 2.2 注意事项
- 3. 了解 Cursor 的 AI 功能
- 3.1 问题
- 3.2 答案
- 4. cursor 免费功能体验
- 5. 写在最后面
- 6. 参考资料
1. 写在最前面
本文整理了一些学习 Cursor 过程中读到的或者发现的感兴趣内容的记录,一方面可以整理一下学习的思路,另一方面可以加深记忆。
- 有一些文档的原文为英文,随手翻译成了中文
2. Prompt Design
提示就像网页设计。我们称之为提示设计,并为其构建更好的工具
注:「Prompting is like web design. Let’s call it prompt design, and build better tools for it.」
我通常不喜欢那种试图为新事物寻找旧有类比的常见做法。所以,请容忍我犯下这个错误:让我阐述一下为什么提示应该被称为提示设计,并与网页设计相类比。
我将提示视为与时间受限的人进行沟通。虽然针对大语言模型(LLM)的特定技术确实很有帮助(最显著的是思维链技术),但我发现提高性能的最佳方法之一是给出极其清晰和高质量的指令,就如同清晰简洁有助于现实中的人更好地理解一样。
将提示视为清晰沟通,这让提示听起来像是写作。然而,我所做的大多数提示都是参数化的:我有许多输入变量,需要根据这些变量动态调整提示。
因此,将提示视为带有动态输入的清晰沟通,这可能是最准确的描述。
还有哪个领域涉及基于动态输入进行清晰沟通呢?网页设计。
让我们列出所有的相似之处。提示和网页设计都:
-
需要清晰明了,并以沟通为主要目标;
-
需要对动态内容做出响应,这与写作或杂志排版不同;
-
需要使其内容适应不同的 「尺寸」—— 对于网页设计是屏幕尺寸,对于提示则是上下文窗口。
根据我从事提示和网页设计的经验,我还发现自己在这两个领域有着相似的开发偏好:
-
查看实际的提示非常重要,就像查看渲染后的网站同样重要。如果我必须在脑海中模拟 HTML 和 CSS 的渲染过程,我就无法设计网站。同样,在不查看填充了所有输入变量的提示的输出结果时,很难写出优秀清晰的提示。
例如,提示Hi ${username} ${message}
可能看起来合理,直到你渲染它时才会意识到用户名和消息混在一起了。 -
可组合的组件在提示和网页设计中都很有用。
-
声明式都优于命令式。如果所有的 HTML 元素都是通过
document.createElement
调用来创建的,那么修改网站会非常困难。同样,阅读和修改由一长串str += "..."
组成的提示也很容易变得难以管理。 -
在这两个领域,我有时都想要达到 「像素级完美」。当使用能力较弱的模型(如 GPT-3.5 及更差的模型)时,我希望确保没有多余的换行符或其他不完美的格式,而在设计网站时,有时每个像素都很重要。
对于大语言模型智能体而言,这种类比还可以进一步延伸:智能体提示可以被看作是为智能体构建一个交互式网站,它们可以通过调用函数 「点击按钮」,并且提示会根据函数调用重新渲染,就像网站会根据按钮点击重新渲染一样。
当然,提示设计和网页设计之间也存在差异:
- 目前提示仅处理文本 。
- 缓存机制不同:特别是对于智能体,你希望通过仅更改提示的后半部分来确保重新渲染的成本较低。这与网页有一些勉强的相似之处(你希望对网站进行缓存优化),但我认为这在本质上是截然不同的挑战。
尽管如此,这些相似之处让我相信,提示应该被称为提示设计,而不是提示工程。编写提示就像设计网站一样,因此也应该以相同的方式命名。
提示设计的理念启发我创建了 Priompt,这是一个类似 React、基于 JSX 的提示设计库。
2.1 Priompt v0.1:提示设计库的首次尝试
Priompt 是受现代网页设计原则启发创建提示设计库的首次尝试。我们在 Anysphere 内部使用它,并且非常喜欢。
我认为它的所有抽象可能并非完全正确,但我至少确信,与字符串模板相比,JSX 是一种更符合人体工程学的编写提示的方式。仅仅能够轻松注释掉提示的部分内容这一点,就能使迭代循环快得多。
Priompt 还附带了一个(仓促搭建的)预览网站,在那里你可以在真实数据上预览提示。在开发应用程序时,你可以在每次请求时记录传入组件的序列化props
。然后,当你发现意外行为时,你可以进入 Priompt 预览页面,查看确切的提示,更改源代码,提示会使用与真实请求相同的props
进行更新。我们发现这使得对提示的迭代更加容易。
如果你试用了它,请告诉我你的想法!我很乐意看到更多类似的想法,或者直接告诉我我完全错了,提示设计这个概念很愚蠢 。
2.2 注意事项
模型更新换代迅速,提示技术也必须随之快速变化。鉴于此,我认为将其称为提示设计存在一些需要注意的地方:
- 对于 GPT-4 来说,像素级完美的设计并不重要,对于 GPT-4.5 或更好的模型来说可能会过时。
- 如果按照长上下文模型的近期发展趋势推断,上下文窗口的限制可能会消失。不过,我对此并不确定。
- OpenAI 似乎正朝着减少开发者对提示控制权的方向发展;有可能在一年内不再有提示的概念,API 调用只需要我们提供原始输入和一条指令。这种减少控制权的趋势从聊天格式就开始了,并且在最近推出的函数调用功能中持续体现。
- 缓存可能是提示中最重要的方面之一,在这种情况下,它听起来更像是工程而非设计。
- 也许提示设计层面太低,应该留给更高级的框架或编译器(例如 langchain)来处理。我认为这可能是对的,但鉴于大语言模型快速变化的特性,我个人更倾向于尽可能接近原始模型。
3. 了解 Cursor 的 AI 功能
3.1 问题
-
如果我想 Cursor 描述我想做什么,它能给我写代码吗?
-
如果我将使用的 GhatGPT/Claude 生成的代码上传到 Cursor,Cursor 能查看并修复错误吗?
3.2 答案
针对你的问题,答案都是肯定的。
以下是更多详细信息。
Cursor 是基于 Visual Studio Code(VS Code)的分支开发的。
VS Code 是微软开发的一款代码编辑器,官网链接为:https://code.visualstudio.com/ 。
Cursor 由 Anysphere 公司开发,其官网为:https://anysphere.inc/ 。
Anysphere 获得了 Chat GPT 背后的公司 OpenAI 的一些资金支持,相关信息可查看:We raised $8M from OpenAI. 。
最新消息 —— 他们最近又筹集了更多资金,详情见:Series A and Magic | Cursor - The AI Code Editor 。
Cursor 的官方功能页面:Features | Cursor - The AI Code Editor 。
Cursor 的官方文档页面:https://docs.cursor.com 。
该文档也可在 GitHub 上查看:GitHub - getcursor/docs: Cursor's Open Source Documentation 。
Cursor 内置了人工智能功能。
有多种方式可以使用这些功能。
当在 Cursor 中打开一个文件时,你可以按下不同的组合键来使用不同功能。
具体如下:
- 按下 Ctrl + K 进行文件内代码生成。
- 按下 Ctrl + L 可在侧边栏打开 AI 聊天面板。
- 按下 Ctrl + I 可跨多个文件创建和编辑代码 。
可以在 Ctrl + L 中选择两种不同的「模式」:
- 普通模式
- 解释器模式
4. cursor 免费功能体验
下面随机数生成的代码示例是通过 cursor 逐步优化生成的,体验下来,写代码的效率飞快!
package mainimport ("fmt""math/bits""runtime""sync"
)// 定义魔法常数
const (// 黄金比例相关的质数prime1 uint64 = 11400714785074694791prime2 uint64 = 14029467366897019727prime3 uint64 = 1609587929392839161prime4 uint64 = 9650029242287828579prime5 uint64 = 2870177450012600261// 块大小定义blockSize = 32 // 增加块大小以提高性能
)// HashOptions 定义哈希配置选项
type HashOptions struct {Seed uint64 // 种子值Parallel bool // 是否使用并行处理Iterations int // 混合轮数
}// DefaultOptions 返回默认配置
func DefaultOptions() HashOptions {return HashOptions{Seed: 0,Parallel: true,Iterations: 3,}
}// EnhancedHash 实现增强版哈希算法
func EnhancedHash(input string, opts HashOptions) uint64 {if len(input) == 0 {return opts.Seed ^ prime5}if opts.Parallel && len(input) >= blockSize*4 {return parallelHash(input, opts)}return serialHash(input, opts)
}// 并行处理哈希
func parallelHash(input string, opts HashOptions) uint64 {numCPU := runtime.NumCPU()chunkSize := len(input) / numCPUif chunkSize < blockSize {return serialHash(input, opts)}var wg sync.WaitGroupresults := make([]uint64, numCPU)for i := 0; i < numCPU; i++ {wg.Add(1)go func(index int) {defer wg.Done()start := index * chunkSizeend := start + chunkSizeif index == numCPU-1 {end = len(input)}results[index] = processChunk(input[start:end], opts.Seed+uint64(index))}(i)}wg.Wait()// 合并所有结果return combineHashes(results, opts)
}// 串行处理哈希
func serialHash(input string, opts HashOptions) uint64 {hash := opts.Seed + prime1// 分块处理for i := 0; i < len(input); i += blockSize {end := i + blockSizeif end > len(input) {end = len(input)}hash = processBlock(input[i:end], hash)}// 多轮混合for i := 0; i < opts.Iterations; i++ {hash = mixHash(hash)}return finalizeHash(hash, uint64(len(input)))
}// 处理数据块
func processBlock(block string, hash uint64) uint64 {data := stringToUint64Slice(block)for _, v := range data {v *= prime2v = bits.RotateLeft64(v, 31)v *= prime1hash ^= vhash = bits.RotateLeft64(hash, 27)hash = hash*prime1 + prime3}return hash
}// 处理数据块(并行版本)
func processChunk(chunk string, seed uint64) uint64 {hash := seed + prime1for i := 0; i < len(chunk); i += 8 {end := i + 8if end > len(chunk) {end = len(chunk)}block := uint64(0)for j := i; j < end; j++ {block |= uint64(chunk[j]) << uint((j-i)*8)}block *= prime2block = bits.RotateLeft64(block, 31)block *= prime1hash ^= blockhash = bits.RotateLeft64(hash, 27)hash = hash*prime3 + prime4}return hash
}// 混合哈希值
func mixHash(hash uint64) uint64 {hash ^= hash >> 33hash *= prime2hash ^= hash >> 29hash *= prime3hash ^= hash >> 32return hash
}// 最终化哈希值
func finalizeHash(hash uint64, length uint64) uint64 {hash ^= length * prime4hash = mixHash(hash)hash ^= hash >> 37hash *= prime5hash ^= hash >> 28return hash
}// 合并多个哈希值
func combineHashes(hashes []uint64, opts HashOptions) uint64 {result := opts.Seed + prime5for _, h := range hashes {result ^= bits.RotateLeft64(h, 17)result *= prime2}return finalizeHash(result, uint64(len(hashes)))
}// 将字符串转换为uint64切片
func stringToUint64Slice(s string) []uint64 {length := len(s)result := make([]uint64, (length+7)/8)for i := 0; i < length; i++ {result[i/8] |= uint64(s[i]) << uint((i%8)*8)}return result
}func main() {// 测试数据testCases := []struct {input stringopts HashOptions}{{"Hello, World!", DefaultOptions()},{"Hello, World!", HashOptions{Seed: 42, Parallel: true, Iterations: 5}},{"测试中文字符串", DefaultOptions()},{"1234567890", DefaultOptions()},{string(make([]byte, 1024*1024)), DefaultOptions()}, // 测试大数据{"这是一个非常长的文本,用来测试哈希算法在处理长输入时的表现", DefaultOptions()},}// 运行测试for _, tc := range testCases {hash := EnhancedHash(tc.input, tc.opts)fmt.Printf("输入长度: %d\n种子: %d\n并行处理: %v\n混合轮数: %d\n哈希值: %x\n分布率: %.10f%%\n\n",len(tc.input),tc.opts.Seed,tc.opts.Parallel,tc.opts.Iterations,hash,100.0/float64(1<<64))}
}
运行效果:
$> go run main.go
输入长度: 13
种子: 0
并行处理: true
混合轮数: 3
哈希值: ac34659942f33338
分布率: 0.0000000000%输入长度: 13
种子: 42
并行处理: true
混合轮数: 5
哈希值: 537ebcf8c50135f6
分布率: 0.0000000000%输入长度: 21
种子: 0
并行处理: true
混合轮数: 3
哈希值: 68f36c2801c14546
分布率: 0.0000000000%输入长度: 10
种子: 0
并行处理: true
混合轮数: 3
哈希值: 4d0d8e5da7bb858a
分布率: 0.0000000000%输入长度: 1048576
种子: 0
并行处理: true
混合轮数: 3
哈希值: 5fd3b28ae5a833cb
分布率: 0.0000000000%输入长度: 87
种子: 0
并行处理: true
混合轮数: 3
哈希值: 842b9c0aca6bcdb8
分布率: 0.0000000000%
5. 写在最后面
抓住周五的尾巴,完成了 Cursor 的初步学习记录,要加油呀!
-
任何选择都会导致遗憾,所以不要后悔。
-
人活一生,值得爱的东西很多,不要因为一个不满意,就灰心。
-
人没有牺牲,就什么也得不到,如果想得到什么,就得付出同等的代价,这就是等价交换原则,我们相信,这,就是世界的真实。
6. 参考资料
- Prompt Design | Cursor - The AI Code Editor
- Cursor feature summary for colleagues (with annotated screenshots) - Discussion - Cursor - Community Forum
- Comprehensive and Succinct List of Cursor Features - Discussion - Cursor - Community Forum
- Separate the visual UI inlay hints into multiple togglable options - #5 by litecode - Feature Requests - Cursor - Community Forum
- Multi-file edits - 0.37 update - #24 by litecode - Feedback - Cursor - Community Forum
相关文章:
关于 Cursor 的一些学习记录
文章目录 1. 写在最前面2. Prompt Design2.1 Priompt v0.1:提示设计库的首次尝试2.2 注意事项 3. 了解 Cursor 的 AI 功能3.1 问题3.2 答案 4. cursor 免费功能体验5. 写在最后面6. 参考资料 1. 写在最前面 本文整理了一些学习 Cursor 过程中读到的或者发现的感兴趣…...
3. 后端验证前端Token
书接上回,后端将token返回给前端,前端存入cookie,每次前端给后端发送请求,后端是如何验证的。 若依是用过滤器来实现对请求的验证,过滤器的简单理解是每次发送请求的时候先发送给过滤器执行逻辑判断以及处理࿰…...
【LLM】Openai-o1及o1类复现方法
note 可以从更为本质的方案出发,通过分析强化学习的方法,看看如何实现o1,但其中的核心就是在于,如何有效地初始化策略、设计奖励函数、实现高效的搜索算法以及利用强化学习进行学习和优化。 文章目录 note一、Imitate, Explore, …...
与“神”对话:Swift 语言在 2025 中的云霓之望
0. 引子 夜深人静,是一片极度沉醉的黑,这便于我与深沉的 macbook 悄悄隐秘于其中。一股异香袭来,恍惚着,撸码中身心极度疲惫、头脑昏沉的我仿佛感觉到了一束淡淡的微光轻洒在窗边。 我的对面若隐若现逐渐浮现出一个熟悉的身影。他…...
设计模式-单例模式
定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 类图 类型 饿汉式 线程安全,调用效率高,但是不能延迟加载。 public class HungrySingleton {private static final HungrySingleton instancenew HungrySingleton();private …...
C#枚举类型携带额外数据的方法
Java里面的枚举类型可以定义很多属性,携带各种数据,然而C#里面的枚举类型只能代表数字,不能在枚举类型里面定义各种属性,导致某些应用场景使用起来不方便,但是可以利用C#里面的Attribute来解决这个问题。 例如…...
跨境电商使用云手机用来做什么呢?
随着跨境电商的发展,越来越多的卖家开始尝试使用云手机来协助他们的业务,这是因为云手机具有许多优势。那么,具体来说,跨境电商使用云手机可以做哪些事情呢? (一)实现多账号登录和管理 跨境电商…...
RabbitMQ-消息可靠性以及延迟消息
目录 消息丢失 一、发送者的可靠性 1.1 生产者重试机制 1.2 生产者确认机制 1.3 实现生产者确认 (1)开启生产者确认 (2)定义ReturnCallback (3)定义ConfirmCallback 二、MQ的持久化 2.1 数据持久…...
Mybatis plus中的BaseMapper与ServiceImpl
BaseMapper接口方法与ServiceImpl类方法的区别与联系 什么是BaseMapper?什么是ServiceImpl? BaseMapper 是 MyBatis-Plus 提供的一个基础 Mapper 接口,封装了常用的 CRUD 操作方法,如 selectById、insert、updateById、deleteBy…...
第三篇 Avaya IP Office的架构及其服务组成
所谓的架构,其实就是Solution,解决方案。一般就是如下几套: IPO primary IPO secondaryIPO primary IP500v2IPO primary IPO secondary IP500v2IPO primary IPO secondary IP500v2 Expansion Server(IP500v2,扩展)IPO primaryIPO 500v2 简单的解释…...
近红外简单ROI分析matlab(NIRS_SPM)
本次笔记主要想验证上篇近红外分析是否正确,因为叠加平均有不同的计算方法,一种是直接将每个通道的5分钟实时长单独进行叠加平均,另一种是将通道划分为1分钟的片段,将感兴趣的通道数据进行对应叠加平均,得到一个总平均…...
ESP32学习笔记_FreeRTOS(6)——Event and Notification
摘要(From AI): 这篇博客详细介绍了 FreeRTOS 中的事件组和任务通知机制,讲解了事件组如何通过位操作实现任务间的同步与通信,以及任务如何通过通知机制进行阻塞解除和数据传递。博客提供了多个代码示例,展示了如何使用事件组和任务通知在多任…...
多监控m3u8视频流,怎么获取每个监控的封面图(纯前端)
文章目录 1.背景2.问题分析3.解决方案3.1解决思路3.2解决过程3.2.1 封装播放组件3.2.2 隐形的视频div3.2.3 截取封面图 3.3 结束 1.背景 有这样一个需求: 给你一个监控列表,每页展示多个监控(至少12个,m3u8格式)&…...
ExpGCN:深度解析可解释推荐系统中的图卷积网络
一、引言 在当今信息爆炸的时代,推荐系统已成为电子商务和社交网络中不可或缺的工具,旨在为用户筛选出符合其兴趣的信息。传统的协同过滤(CF)技术通过挖掘用户与项目之间的交互记录来生成推荐,但这种方法简化了模型&a…...
ChatGPT Prompt 编写指南
一、第一原则:明确的意图 你需要明确地表达你的意图和要求,尽可能具体、描述性、详细地描述所需的上下文、你期望的结果等。你的要求越明确,越有希望获得你想要的答案。 糟糕的案例 ❌ 写一首关于 OpenAI 的诗。 更好的案…...
【脑机接口数据处理】 如何读取Trode 的.rec文件 原始数据?
文章目录 函数简介文件下载函数语法基本用法带时间跳过的用法带选项参数的用法输出结构使用示例 注意事项 MATLAB中读取Trodes文件的实用函数——readTrodesFileContinuous 在处理神经科学实验数据时,经常会遇到Trodes格式的文件。这些文件包含了丰富的神经信号数据…...
反转字符串中的单词 II:Swift 实现与详解
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
蓝桥杯训练—矩形面积交
文章目录 一、题目二、示例三、解析四、代码 一、题目 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴,对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程写出两个矩形的交的面积 输入格式: 输入包含两行…...
如何设置HTTPS站点防御?
设置HTTPS站点防御涉及到多个层面的安全措施,包括但不限于配置Web服务器、应用安全头信息、使用内容安全策略(CSP)、启用HSTS和OCSP Stapling等。下面是一些关键的步骤来增强HTTPS网站的安全性: 1. 使用强加密协议和密钥交换算法…...
光谱相机如何还原色彩
多光谱通道采集 光谱相机设有多个不同波段的光谱通道,可精确记录每个波长的光强信息。如 8 到 16 个甚至更多的光谱通道,每个通道负责特定波长范围的光信息记录。这使得相机能分辨出不同光谱组合产生的相同颜色感知,而传统相机的传感器通常只…...
doris:导入概览
Apache Doris 提供了多种导入和集成数据的方法,您可以使用合适的导入方式从各种源将数据导入到数据库中。Apache Doris 提供的数据导入方式可以分为四类: 实时写入:应用程序通过 HTTP 或者 JDBC 实时写入数据到 Doris 表中,适用于…...
Linux 操作二:文件映射与文件状态
Linux 操作二:文件映射与文件状态查询 文件映射 mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程…...
ASP .NET Core 学习 (.NET 9)- 创建 API项目,并配置Swagger及API 分组或版本
本系列为个人学习 ASP .NET Core学习全过程记录,基于.NET 9 和 VS2022 ,实现前后端分离项目基础框架搭建和部署,以简单、易理解为主,注重页面美观度和后台代码简洁明了,可能不会使用过多的高级语法和扩展,后…...
电脑换固态硬盘
参考: https://baijiahao.baidu.com/s?id1724377623311611247 一、根据尺寸和缺口可以分为以下几种: 1、M.2 NVME协议的固态 大部分笔记本是22x42MM和22x80MM nvme固态。 在京东直接搜: M.2 2242 M.2 2280 2、msata接口固态 3、NGFF M.…...
Android BitmapShader实现狙击瞄具十字交叉线准星,Kotlin
Android BitmapShader实现狙击瞄具十字交叉线准星,Kotlin <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.…...
MySQL8数据库全攻略:版本特性、下载、安装、卸载与管理工具详解
大家好,我是袁庭新。 MySQL作为企业项目中的主流数据库,其5.x和8.x版本尤为常用。本文将详细介绍MySQL 8.x的特性、下载、安装、服务管理、卸载及管理工具,旨在帮助用户更好地掌握和使用MySQL数据库。 1.MySQL版本及下载 企业项目中使用的…...
机器学习之决策树(DecisionTree)
决策树中选择哪一个特征进行分裂,称之为特征选择。 特征选择是找出某一个特征使得分裂后两边的样本都有最好的“归宿”,即左边分支的样本属于一个类别、右边分支的样本属于另外一个类别,左边和右边分支包含的样本尽可能分属同一类别ÿ…...
Qt Desiogn生成的ui文件转化为h文件
1.找到这个工具 2.查找到ui文件以及要转化为的h文件的路径。 3.在1中的工具输入uic /xx/xxx.ui -o /xx/xxx.h即可得到结果。...
python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)边缘检测
OpenCV中边缘检测四种常用算子: (1)Sobel算子 Sobel算子是一种基于梯度的边缘检测算法。它通过对图像进行卷积操作来计算图像的梯度,并将梯度的大小作为边缘的强度。它使用两个3x3的卷积核,分别用于计…...
【论文阅读】VCD-FL: Verifiable, collusion-resistant, and dynamic federated learning
VCD-FL: Verifiable, collusion-resistant, and dynamic federated learning -- VCD-FL:可验证可抵抗共谋攻击的动态联邦学习 来源背景介绍相关工作本文贡献预备知识 系统模型威胁模型具体实现初始化本地训练梯度加密承诺生成插值优化 密文聚合聚合结果验证梯度解密结果验证恶意…...
浙江安吉成新照明电器:Acrel-1000DP 分布式光伏监控系统应用探索
安科瑞吕梦怡 18706162527 摘 要:分布式光伏发电站是指将光伏发电组件安装在用户的建筑物屋顶、空地或其他适合的场地上,利用太阳能进行发电的一种可再生能源利用方式,与传统的大型集中式光伏电站相比,分布式光伏发电具有更灵活…...
记一次数据库连接 bug
整个的报错如下: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Metho…...
STM32 FreeRTOS 信号量
信号量的简介 reeRTOS中的信号量是一种用于任务间同步和资源管理的机制。信号量可以是二进制的(只能取0或1)也可以是计数型的(可以是任意正整数)。信号量的基本操作包括“获取”和“释放”。 比如动车上的卫生间,一个…...
计算机网络 | 什么是公网、私网、NAT?
关注:CodingTechWork 引言 计算机网络是现代信息社会的基石,而网络通信的顺畅性和安全性依赖于有效的IP地址管理和网络转换机制。在网络中,IP地址起到了标识设备和进行数据传输的核心作用。本文将详细讨论公网IP、私网IP以及NAT转换等网络技…...
学技术学英文:通过jmeter命令行工具生成聚合报告文件到csv文件
单词 汉语意思 音标 aggregate 聚合 /ˈɡrɪɡeɪt/ command-line 命令行 /kəˈmnd laɪn/ distribution 分布 /ˌdɪstrɪˈbjuːʃn/ extractor 提取器 /ɪkˈstrktər/ granulation 细分 /ˌɡrnjuˈleɪʃn/ jmeter JMeter(软件࿰…...
数据库开发支持服务
文章目录 前言适用产品服务范围前提条件责任矩阵交互项目 服务流程交付件项目完成标志 前言 数据库开发支持服务是为了达成客户业务系统开发、测试、上线运行提供的具体技术支撑,内容包括数据库开发指导、性能调优、第三方平台对接支持、应用对接与上线支持等。数据…...
【SQL 中的分组查询与联合查询详解】
文章目录 SQL 中的分组查询与联合查询详解1. GROUP BY分组查询1.1 语句格式1.2 示例说明1.2.1 分别查询哥哥组和弟弟组的英语成绩总和1.2.2 查询哥哥组的所有成绩总和 2. 联合查询2.1 内连接2.1.1 语法格式2.1.2 执行过程 2.2 外连接2.2.1 左外连接2.2.2 右外连接 2.3 自连接2.…...
如何提高自动化测试覆盖率和效率
用ChatGPT做软件测试 在现代软件开发中,自动化测试已经成为保证软件质量的重要手段。然而,在实践中,自动化测试的覆盖率和效率常常受到限制,导致潜在缺陷未能及时发现或测试资源浪费。因此,提升自动化测试的覆盖率和效…...
Vue3 nginx 打包后遇到的问题
前端vite文件配置 export default defineConfig({plugins: [vue(),DefineOptions()],base:./,resolve:{alias:{:/src, //配置指向src目录components:/src/components,views:/src/views}},server:{// host:0.0.0.0,// port:7000,proxy:{/api:{target:xxx, // 目标服务器地址 &am…...
【PCIe 总线及设备入门学习专栏 5.3.2 -- PCIe 枚举与 PCIe PHY firmware 的区别与联系】
文章目录 OverviewPCIe 枚举与PCIe PHY固件的区别与联系1. PCIe 枚举2. PCIe PHY固件3. 区别4. 联系 举例说明实例场景 1:服务器启动 PCIe 网卡的过程实例场景 2:PCIe 热插拔设备的调试 Overview 本文将详细介绍 PCIe 枚举与 PCIe PHY firmware 的区别与…...
电动汽车超级充电设备与车辆之间的通讯协议对27930-2015国标的修改记录
左侧为团体标准 右侧为国标 1.CHM SPN 2600 数据修改为 团标数据: 0x534331 ,国标数据:0x000101 2.BRM SPN 2565 数据修改为 团标数据: 0x53…...
案例分析一
张某(10多年IT工作经验)应聘一家国企单位,面试官(技术副主管)面试时问了些无关痛痒的问题,谈到薪资时强调我权限范围内的数额就那么多,再多就需要走申请流程进行操作了。 没几天入职后…...
2.5G PoE交换机 TL-SE2109P 简单开箱评测,8个2.5G电口+1个10G光口(SFP+)
TPLINK(普联)的万兆上联的2.5G网管交换机TL-SE2109P简单开箱测评。8个PoE 2.5G电口,1个万兆SFP上联口。 2.5G交换机 TL-SE2420 简单开箱评测,16个2.5G电口4个10G光口(SFP):https://blog.zeruns.com/archives/837.html…...
mysql存电话号码应该用int还是string类型
在MySQL中,存储电话号码一般建议使用**STRING 类型**(通常是 VARCHAR),而不是 INT 类型,原因如下: 1. 电话号码不是数字用于计算的值 电话号码本质上是一个标识符,不需要进行数学运算。如果用…...
解决本地运行MR程序访问权限问题
文章目录 1. 提出问题2. 解决问题2.1 临时解决方案2.2 永久解决方案 3. 小结 1. 提出问题 运行DeduplicateIPsDriver类,抛出如下异常: 该错误信息表明在尝试运行 DeduplicateIPsDriver 类时,遇到了 HDFS(Hadoop 分布式文件系统&a…...
Codeforces Round 997 (Div. 2) A~C
今天的封面是水母猫猫和佩佩,原图在这里,记得关注画师夏狩大大 至此,天鹅完成了连续四场比赛在四个不同比赛上四次分的壮举!(ABC388,CodeChef169,牛客月赛109,CF997) 这场…...
3. Go函数概念
在 Go 语言中,函数被称为一等公民(First-Class Citizens),意味着函数可以像其他数据类型(如整数、字符串、结构体等)一样作为变量传递、返回、赋值等。这使得 Go 在编程时具备了极大的灵活性。 1、函数概念…...
python-44-嵌入式数据库SQLite和DuckDB
文章目录 1 SQLite1.1 世界上最流行的数据库1.1 SQLite简介1.2 插入语句1.3 查询数据1.4 更新数据1.5 删除数据2 DuckDB2.1 DuckDB简介2.2 DuckDB与Python结合使用2.2.1 创建表2.2.2 分析语句2.2.3 导出为parquet文件2.3 Windows中使用DuckDB3 参考附录1 SQLite Python的一个特…...
使用 Java 和 FreeMarker 实现自动生成供货清单,动态生成 Word 文档,简化文档处理流程。
在上一篇博客中主要是使用SpringBootApache POI实现了BOM物料清单Excel表格导出,详见以下博客: Spring Boot Apache POI 实现 Exc()el 导出:BOM物料清单生成器(支持中文文件名、样式美化、数据合并&#…...
R语言的并发编程
R语言的并发编程 引言 在现代计算中,如何有效地利用计算资源进行数据处理和分析已成为一个重要的研究方向。尤其在大数据时代,数据量的急剧增加让单线程处理方式显得力不从心。为了解决这一问题,各种编程语言都开展了并发编程的研究和应用。…...