

一日一技:我的Cursor开发经验
这两天我使用Cursor开发了一个新闻网站的前端+后端。在开发的过程中,我总结了一些适合于我自己的最佳实践。这些方法让我在使用Cursor的时候,几乎没有遇到任何阻碍,非常顺利,非常流畅地完成了网站的开发。我的开发经验,总结起来一句话就能说清楚:多写文档少聊天。下面我来详细说一下具体方法。我全程使用Cursor的agent模式,模型使用Claude 3.7 Sonnet。这个项目是一个新闻网站,需要写前端+后端。前端我首先使用Trickle生成了页面。大家也可以使用Bolt.new或者lovable,效果都差不多。需要和后端交互的地方都先使用假数据模拟。生成好以后,把代码下载到本地。改写前端代码使用Cursor打开下载的前端代码,让它阅读代码,并使用Next.js + tailwind css + sha..
更多

Java 源码阅读 - 类加载的双亲委派模型
关于 Java 的类加载机制,尽管我看过几篇文章,知道个双亲委派模型,但是从来没钻进源码里看它到底是怎么委派的。 什么双亲?怎么委派?我刚一开始听到双亲委派,还纳闷咋还双亲?后来才知道,这纯纯就是 Parent Delegation 这个词的误译。Parent 这里指的并不是双亲,而是指父辈。所以看到有人翻译为 “向上委托模型”,我感觉这个翻译更好一点,至于另一个翻译 “啃老模型”…… 倒也没毛病…… 至于怎么委托,相信各位都背的滚瓜烂熟了。那就是,当类加载器收到类加载请求的时候,它首先会把这个请求委托给上一层的类加载器去尝试加载,直到委托到启动类加载器;只有当上一层类加载器无法完成这个加载请求的时候,次一级类加载器才会尝试自己加载。 代码上的实现截图里面的代码就是 ClassLoader#load..
更多Java 源码阅读 - LinkedList
做技术,不能只知其然而不知其所以然。在知道了工具的原理之后,才能更高效的使用这个工具。在程序的世界里,源码里面没有秘密,看懂了源码,也就看懂了原理。 这次就来阅读一下 LinkedList 的源码。 LinkedList 的特性LinkedList 有如下几个特性: 底层的数据结构是双向链表 存储的数据允许为 null 允许存放重复的数据 元素在 List 中的顺序由添加顺序决定 不是线程安全的 类的声明123public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serial..
更多

CLANG-LLVM编译STM32
Foreword 全网找不到几个LLVM工具链进行交叉编译的例子,如果只是Linux环境,那可能随便弄,但是Windows下要拉哪个库,环境变量什么的要怎么弄都没找到例子。东拼西凑了几个Blog的内容,总算是完整可以编译了 如果直接用Keil的AC6,那没啥难度,如果抛弃他,改用开源又要怎么弄 环境 目前开源可用的LLVM的交叉编译工具链,只看到了这一个 https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases 官方版本的工具链目前还在建设阶段,根本没有Release可用 https://github.com/arm/arm-toolchain/tree/arm-software 下一个..
更多

VSCode CMake工作流
Foreword 之前看到CMake有这么多选项,感觉不简单,还是看下别人在这里设计了多少东西 CMake 整体来说CMake遵循这样一套结构 操作-操作预设(如果有的话)-操作目标(如果有的话) 比如 Configure-ConfigurePreset Build-BuildPreset-Build_Target Launch-Launch_Target Test-TestPreset Pack-PackPreset Workflow-WorkflowPreset Configure 这个不用多说,最基础的配置了 Kit Kit是作为configure中的一个环境,也就是编译工具链的配置 同时默认的CMake把工具链和生成配置类型,这个区分开了,实际我之前做的demo也区分..
更多

VSCode CMake Debug
Foreword VSCode CMake Debug 嵌入式MCU有好几种方案 Cortex-Debug OpenOCD https://elmagnifico.tech/2023/07/22/Vllink-DapLink-Debug/ OpenOCD,需要专门的调试工具,ST-Link或者这里的VLink,支持CMSIS-DAP的 增加而一个build做为前置任务,然后启动openodcd tasks.json { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "..
更多正则获得国际电话前缀
2013年的时候喷过ITU这个国际电话号码,前缀是变长的问题 今天遇到问题,需要按国际区号初步分析归属地和供应商,stackoverflow和AI给的都很渣,写了个正则: re.compile(r"""\+ (1 # north america |(?: # 3 digits 21|22|23|24|25|26|29|35|37|38|42| 50|59|67|68|69|80|85|87|88|96|97|99)\d |[2-9]\d) # two digits """, re.VERBOSE) +1 开头的是北美,然后依次寻找3位的,再匹配2位的。 +7 本来是苏联的,现在给 哈萨克斯坦 和 俄罗斯 了,就当成两位的判定吧。
更多

Kconfig与CMake初步模块化工程3
Foreword 本篇解决一下CMake和VScode怎么整合到一起 VSCode 适配VSCode VSCode只需要一个CMake Tools,不需要安装其他CMake插件 Kconfig格式化和代码高亮,还是用nRF的好一些,另外那个Kconfig会识别出错 缺少 Select a Kit vscode cmake 缺少选择Select a Kit,主要原因是目录已经有了CMakePresets.json,有预设的情况下不会给你选kit,这个问题找了半天,发现官方文档就写了 但是你搜索的命令又有,只能说官方弄的有点乱,而且本身使用预设和可以选kit我觉得也不矛盾 CMake:Scan for compiles 去掉预设文件以后,这个kit果然就有了,就可以正常选择了..
更多

一日一技:如何实现临时密码?
我买的房子今天交房了。开发商配的门锁是某品牌的智能门锁,它可以使用指纹开锁,也可以使用密码开锁。在使用手机跟门锁配对以后,可以远程在手机上生成临时密码。临时密码只能使用1次,并且在生成的30分钟内有效。这个功能可以方便装修人员进出又不用担心泄露密码。因为新房子还没有通网,所以门锁肯定是无法连接互联网的。而装修人员给我打电话要临时密码时,我在公司,离家几十公里外,门锁也不可能跟手机通信。那么问题来了,门锁是怎么验证这个临时密码合法的?今天我一直在想这个问题,目前有一些思路,但无法确定。所以发出来跟大家一起讨论一下它的实现方法。已知:手机App只有第一次跟门锁配对时,会通信,之后就完全不会有任何通信门锁无法连接外网无论我在任何地方,手机上都能生成临时密码。门锁输入临时密码就能解锁临时密码只能使用一次,之后就会..
更多

Kconfig与CMake初步模块化工程2
Foreword 继续上篇,解决一些未完成的问题 遗留问题 模块化 Linux内有一些模块化的操作,但是如果直接模仿,会发现无效。 比如类型中的tristate是三状态,比如y、m、n,表示启用模块、动态加载 、禁用,三种情况,但是如果直接像下面这么写是无法启用的,你会看到怎么设都是启动和禁止,没有动态加载的选项 menu "New Module Configuration" config NewModule tristate "NewModule" choice prompt "Feature selection" tristate config Feature1 tristate "..
更多