看完《js 不使用 promise 完成一个 sleep 函数》真诚发问,技术领域什么才是值得深入学习的?
[原帖]( https://www.v2ex.com/t/1140531)提了一个面试题,用来考察对 JS 异步控制的熟悉程度。
个人在学习 JS 时特意看了一遍 Promises/A+ 并尝试实现过,感觉这类东西跟算法等计算机基础课一样,平时工作中肯定用不到,99% 的概率不需要你手搓一个 Promise 或事件循环之类的东西,但仅读过文档说明,跟真的参考规范并尝试实现过,**理解程度**肯定是不一样的。
又或者以 Java 举例,仅了解 Java 语法和标准库,和深入探索过 JVM 的各种机制与细节,在线上排查 OOM 问题的时候,思考的层次和维度就会不同。
然而人生苦短,学海无涯,没人且没必要事无巨细地深入到这种程度,需要将**有限的精力投入到更重要的地方**去,所以才有此疑惑:
对一个**软件工程师**(而非研究人员或特定领域的技术专家)来说,技术领域什么才是值得深入学习的?
或者回过头来,仅以 Promise 为例,如果不去了解 Promises/A+ 等规范,想要加深对异步本质(是什么,解决了哪些问题、如何解决)的理解,应该去学习哪些方面的内容呢?
[原帖]( https://www.v2ex.com/t/1140531)提了一个面试题,用来考察对 JS 异步控制的熟悉程度。
个人在学习 JS 时特意看了一遍 Promises/A+ 并尝试实现过,感觉这类东西跟算法等计算机基础课一样,平时工作中肯定用不到,99% 的概率不需要你手搓一个 Promise 或事件循环之类的东西,但仅读过文档说明,跟真的参考规范并尝试实现过,**理解程度**肯定是不一样的。
又或者以 Java 举例,仅了解 Java 语法和标准库,和深入探索过 JVM 的各种机制与细节,在线上排查 OOM 问题的时候,思考的层次和维度就会不同。
然而人生苦短,学海无涯,没人且没必要事无巨细地深入到这种程度,需要将**有限的精力投入到更重要的地方**去,所以才有此疑惑:
对一个**软件工程师**(而非研究人员或特定领域的技术专家)来说,技术领域什么才是值得深入学习的?
或者回过头来,仅以 Promise 为例,如果不去了解 Promises/A+ 等规范,想要加深对异步本质(是什么,解决了哪些问题、如何解决)的理解,应该去学习哪些方面的内容呢?
SpringAI anthropicChatClient 无法调用 mcp 工具
最近在用 springai 写一个 text2SQL 的功能,大致是根据用户提问结合 mcp 工具调用查询数据库表的元数据让 llm 分析,给出一个合理的 SQL 。
目前遇到的问题:
使用 openaiChatClient 调用 mcp 工具没有问题,使用 anthropicChatClient 调用则无反应
1 、提示词已经明确了必须调用的工具,且提示词都用的同一套
2 、mcp 工具在两个 client 都注册了。
目前使用的是 Springai 1.0 的版本。不知道各位大佬有没有遇到类似的问题
最近在用 springai 写一个 text2SQL 的功能,大致是根据用户提问结合 mcp 工具调用查询数据库表的元数据让 llm 分析,给出一个合理的 SQL 。
目前遇到的问题:
使用 openaiChatClient 调用 mcp 工具没有问题,使用 anthropicChatClient 调用则无反应
1 、提示词已经明确了必须调用的工具,且提示词都用的同一套
2 、mcp 工具在两个 client 都注册了。
目前使用的是 Springai 1.0 的版本。不知道各位大佬有没有遇到类似的问题
惊魂 50 米!一次扔垃圾引发的婚姻危机~
## 开篇
谁能想到,一次普通的晚饭后扔垃圾,竟让我的婚姻差点走到了悬崖边?
这一切,都始于那个令人窒息的 50 米...
## 事件经过
那天也是一个平常的夜晚~
饭后决定下楼溜达下~ 于是乎老婆推着宠物车,我就提着已经分类好的垃圾袋,一起下楼了。
一楼大厅与定时投放垃圾站点大致有个 50 来米距离,
我们两个就边走边聊,没注意到后面有人在一边喊一边快步地靠近我们~
突然一只手就扒拉到我手腕上,吓得我一哆嗦,垃圾就都掉地上了~
(不知道兄弟们能不能体会那种人在无意识的情况下突然被惊吓到的感觉,一模一样),
紧接着,一位看起来年纪有 50 来岁的大妈就说了句:纸箱子给我吧~
我就跟我老婆站在那里,看着她在那里倒腾垃圾,
她 3 、5 秒功夫挑完后,顺势拿起,然后就朝着自己收集好的那一堆垃圾集中点方向去了,
这期间我的情绪是从被吓到、到平静、到生气、到最后的开口大骂。
我一边收拾残局,一边朝着她的方向哔哔道理、道德、道歉等言词。
待我扔完剩余垃圾后,本想再过去直接跟她当面对线的,
结果老婆说了句:哎呀,多大点事儿,她拿就拿了呗~
于是乎,我更生气了,紧接着我就把道德、道理等言词同老婆一起争论。
然后就因为争论,导致老婆说离婚的事...
## 双方观点
### 妻子的观点:
1. 底层不容易,要体谅社会生活中的小人物;
2. 认为我小气,虽占理但处理事情不够大度;
3. 怕影响后代,格局小影响下代人的价值观;(目前还没生小孩)
### 我的观点:
1. 人家蛮横无理造成良好的秩序被破坏,我还需要宽宏大量?
2. 中间拦截的行为等于不劳而获坐享其成,可有考虑过环卫站点真正付出的环卫工人?
3. 对于教育孩子,也应该是站公平公正的那一面,而不是弱势就应该被保护。
## 开篇
谁能想到,一次普通的晚饭后扔垃圾,竟让我的婚姻差点走到了悬崖边?
这一切,都始于那个令人窒息的 50 米...
## 事件经过
那天也是一个平常的夜晚~
饭后决定下楼溜达下~ 于是乎老婆推着宠物车,我就提着已经分类好的垃圾袋,一起下楼了。
一楼大厅与定时投放垃圾站点大致有个 50 来米距离,
我们两个就边走边聊,没注意到后面有人在一边喊一边快步地靠近我们~
突然一只手就扒拉到我手腕上,吓得我一哆嗦,垃圾就都掉地上了~
(不知道兄弟们能不能体会那种人在无意识的情况下突然被惊吓到的感觉,一模一样),
紧接着,一位看起来年纪有 50 来岁的大妈就说了句:纸箱子给我吧~
我就跟我老婆站在那里,看着她在那里倒腾垃圾,
她 3 、5 秒功夫挑完后,顺势拿起,然后就朝着自己收集好的那一堆垃圾集中点方向去了,
这期间我的情绪是从被吓到、到平静、到生气、到最后的开口大骂。
我一边收拾残局,一边朝着她的方向哔哔道理、道德、道歉等言词。
待我扔完剩余垃圾后,本想再过去直接跟她当面对线的,
结果老婆说了句:哎呀,多大点事儿,她拿就拿了呗~
于是乎,我更生气了,紧接着我就把道德、道理等言词同老婆一起争论。
然后就因为争论,导致老婆说离婚的事...
## 双方观点
### 妻子的观点:
1. 底层不容易,要体谅社会生活中的小人物;
2. 认为我小气,虽占理但处理事情不够大度;
3. 怕影响后代,格局小影响下代人的价值观;(目前还没生小孩)
### 我的观点:
1. 人家蛮横无理造成良好的秩序被破坏,我还需要宽宏大量?
2. 中间拦截的行为等于不劳而获坐享其成,可有考虑过环卫站点真正付出的环卫工人?
3. 对于教育孩子,也应该是站公平公正的那一面,而不是弱势就应该被保护。
报!连续下大雨后,夏蓉高速桥断了!
https://www.sohu.com/a/907265780_120914498
开车回老家就会走这条路。
这个货车司机真是命大,当时心情应该是极度复杂,恐惧,庆幸,紧张...
连续下雨之后还是最好不要出门,地质灾害频发,之前广东梅大高速也是类似的情况。
https://www.sohu.com/a/907265780_120914498
开车回老家就会走这条路。
这个货车司机真是命大,当时心情应该是极度复杂,恐惧,庆幸,紧张...
连续下雨之后还是最好不要出门,地质灾害频发,之前广东梅大高速也是类似的情况。
go 转 Python 的心智负担增加
之前写 go ,go 调用函数的时候,有问题就是通过 返回值 有没有 err 来判断。心智负担很小,直接撸就行。
一个简单的案例,打开文件,然后 json 解析。
go 版本是
```
func TestA(t *testing.T) {
fd, err := os.OpenFile("a.txt", os.O_RDWR, 0666)
if err != nil {
fmt.Println("打开文件失败", err)
}
defer fd.Close()
var data map[string]string
err = json.NewDecoder(fd).Decode(&data)
if err != nil {
fmt.Println("解析文件失败", err)
}
fmt.Println(data)
}
```
但是到 python 这边
```
f = open("a.json")
data = json.load(f)
f.close()
```
但是吧
1. 如果文件不存在需要处理
2. 文件存在,open() 执行异常了要处理
3. json.load() 会不会异常?我跳转源码看 josn.load()源码也没看到他会返回哪些异常信息。
所以我写出这种代码
```
try:
with open("a.json", "r") as f:
data = json.load(f)
except Exception as e:
print(e)
```
但是这样把多种异常合到一个 Exception 了,如果出现异常,你不知道是哪个函数调用出现的异常。所以就需要这样。
```
try:
with open("a.json", "r") as f:
try:
data = json.load(f)
except Exception as e:
print(e)
except Exception as e:
print(e)
```
然后我发现,最大的问题就是,我每次调用一个外部函数的时候,TMD 根本不知道这个函数会不会异常,总不能每个函数调用都用 try/except 处理一下?
```
try:
f1()
except Exception as e:
print(e)
try:
f2()
except Exception as e:
print(e)
try:
f3()
except Exception as e:
print(e)
```
写 python 给我的感受就是,想写好一个健壮的程序,有很大的心智负担,我总是要考虑我调用的函数会不会有异常。
之前写 go ,go 调用函数的时候,有问题就是通过 返回值 有没有 err 来判断。心智负担很小,直接撸就行。
一个简单的案例,打开文件,然后 json 解析。
go 版本是
```
func TestA(t *testing.T) {
fd, err := os.OpenFile("a.txt", os.O_RDWR, 0666)
if err != nil {
fmt.Println("打开文件失败", err)
}
defer fd.Close()
var data map[string]string
err = json.NewDecoder(fd).Decode(&data)
if err != nil {
fmt.Println("解析文件失败", err)
}
fmt.Println(data)
}
```
但是到 python 这边
```
f = open("a.json")
data = json.load(f)
f.close()
```
但是吧
1. 如果文件不存在需要处理
2. 文件存在,open() 执行异常了要处理
3. json.load() 会不会异常?我跳转源码看 josn.load()源码也没看到他会返回哪些异常信息。
所以我写出这种代码
```
try:
with open("a.json", "r") as f:
data = json.load(f)
except Exception as e:
print(e)
```
但是这样把多种异常合到一个 Exception 了,如果出现异常,你不知道是哪个函数调用出现的异常。所以就需要这样。
```
try:
with open("a.json", "r") as f:
try:
data = json.load(f)
except Exception as e:
print(e)
except Exception as e:
print(e)
```
然后我发现,最大的问题就是,我每次调用一个外部函数的时候,TMD 根本不知道这个函数会不会异常,总不能每个函数调用都用 try/except 处理一下?
```
try:
f1()
except Exception as e:
print(e)
try:
f2()
except Exception as e:
print(e)
try:
f3()
except Exception as e:
print(e)
```
写 python 给我的感受就是,想写好一个健壮的程序,有很大的心智负担,我总是要考虑我调用的函数会不会有异常。
这个免费 PDF 网站好用到我不想分享!快来白嫖!
今天给你们安利一个我刚发现(其实是我自己搭的嘿嘿)的神仙网站—— https://pdf.hk !
简单粗暴地说,它就是个 完全免费、功能多到爆炸 的在线 PDF 工具箱!
这玩意儿凭啥这么牛?
偷偷告诉你们,pdf.hk 的后台可是大名鼎鼎的开源项目 Stirling PDF 。这项目超火的,主打一个功能强大和安全可靠。所以,我把它搬过来,给大家一起“白嫖”!
它能干啥?简直是 PDF 界的“万能口袋”:
• 🤏 随便拼、随便拆:想合并几个文件?或者把一个大文件拆成几页?拖进去,点一下,搞定!
• 🔄 格式转换大师:PDF 、Word 、PPT 、图片… 闭着眼互相转,再也不怕格式乱码了!
• 💨 一键“瘦身”:文件太大?用它的压缩功能,体积 biu~一下就变小,还几乎不影响清晰度。
• ✍️ 盖章、加密、涂鸦:想加个自己的水印?给文件上个锁?或者把不想让人看到的地方涂黑?几秒钟的事儿!
• ✨ 懒人福音 OCR:最神的来了!图片或扫描件里的文字抠不出来?用 OCR 功能,自动识别成文本,复制粘贴爽歪歪!
最重要的:安全吗?放心!
我知道,用在线工具最怕的就是隐私泄露。pdf.hk 最大的优点就是 安全!因为它是 开源 的,代码底裤都被大家看光了,没有任何猫腻。不追踪,不记录,纯纯为你服务。
今天给你们安利一个我刚发现(其实是我自己搭的嘿嘿)的神仙网站—— https://pdf.hk !
简单粗暴地说,它就是个 完全免费、功能多到爆炸 的在线 PDF 工具箱!
这玩意儿凭啥这么牛?
偷偷告诉你们,pdf.hk 的后台可是大名鼎鼎的开源项目 Stirling PDF 。这项目超火的,主打一个功能强大和安全可靠。所以,我把它搬过来,给大家一起“白嫖”!
它能干啥?简直是 PDF 界的“万能口袋”:
• 🤏 随便拼、随便拆:想合并几个文件?或者把一个大文件拆成几页?拖进去,点一下,搞定!
• 🔄 格式转换大师:PDF 、Word 、PPT 、图片… 闭着眼互相转,再也不怕格式乱码了!
• 💨 一键“瘦身”:文件太大?用它的压缩功能,体积 biu~一下就变小,还几乎不影响清晰度。
• ✍️ 盖章、加密、涂鸦:想加个自己的水印?给文件上个锁?或者把不想让人看到的地方涂黑?几秒钟的事儿!
• ✨ 懒人福音 OCR:最神的来了!图片或扫描件里的文字抠不出来?用 OCR 功能,自动识别成文本,复制粘贴爽歪歪!
最重要的:安全吗?放心!
我知道,用在线工具最怕的就是隐私泄露。pdf.hk 最大的优点就是 安全!因为它是 开源 的,代码底裤都被大家看光了,没有任何猫腻。不追踪,不记录,纯纯为你服务。
成为键盘侠的试炼!你的专属打字训练营上线了!
各位电脑使用者、学生党、上班族,以及所有希望提升打字速度和准确性的朋友们,大家好!
我非常兴奋地向大家介绍我的最新力作——键盘侠的试炼 (KeyboardMan's Trial),一个充满乐趣和互动的打字游戏,现在你可以在 https://keyboardman.aolifu.org 体验到它了!

各位电脑使用者、学生党、上班族,以及所有希望提升打字速度和准确性的朋友们,大家好!
我非常兴奋地向大家介绍我的最新力作——键盘侠的试炼 (KeyboardMan's Trial),一个充满乐趣和互动的打字游戏,现在你可以在 https://keyboardman.aolifu.org 体验到它了!
