Coroutine 相关疑惑大模型问答记录
近日在看 python 的 asyncio 时突然想起了曾经对 C++ coroutine 以及 go 的 goroutine 的诸多未解疑惑。还记得当时有这些疑惑的时候,还没有 ChatGPT 或是 DeepSeek 这样方便的大模型解惑,反复查找各种资料最后因为时间原因还是没有深究,而如今 DeepSeek 已然如此发达,遂借此机会解答遗留在心中多年的疑惑,并以此贴记录。 Round 1Q:AsyncIO 或者说,Coroutine 是怎么实现,例如在 await 一个网络请求的时候,进程不会被内核挂起进入等待状态,而是可以继续正常被调度并且执行余下内容的?同时,当网络请求完成的时候,内核又是怎么让进程知道请求完成从而继续 await 后续未执行的内容的 A:...
年终总结 - 2023 至 2024
是因为太久没有写过叙事风格的文字,还是因为脑子早已经被快节奏的短视频侵蚀,又到了年末回顾的时候,我竟与面前的电脑周旋了一晚,最后愣是一句能读的话都没有写出来。末了,把写不出东西这个毛病归结于家里的环境缺乏情调,次日专门找了个海边的图书馆来写,结果到了太阳都下山了,才想起来自己此行的正事不是来这儿看书,而是写点什么。倒是歪打正着,好不容易来一趟,总得在关门之前写下点什么,遂匆匆留下此篇,作为我过去两年存在过的痕迹。 2024 年的终曲轻轻落幕,与我二十一和二十二岁的许多事情一样,没有轰轰烈烈的收场,只是在那某一瞬间突然意识到,过去的时光就这么结束了。 是什么时候开始觉得时间过得很快的呢?是那一天想喝家门口的喜茶,却发现它几个月前就已经搬走的时候吗?是那个实习结束后的早晨伸着懒腰起床,打开手机看见日历上赫然写着 10 月的时候?是考完研的那天午后,抱着沉沉的资料最后一次走出图书馆的瞬间?是意识到自考研后又已经过去了两个 75 天的那天?还是一转眼发现就连 2024...
问题定位回顾 - Windows 上发起 tcp 连接时提示 Only one usage of each socket address (protocol/network address/port) is normally permitted
问题背景某天在 Windows 宿主机上执行任务时,发现 wda 指令请求一直失败,查看日志发现唯一有效的错误日志是 Only one usage of each socket address (protocol/network address/port) is normally permitted,回顾宿主机环境在过去一段时间没有进行过变更,并且该问题是第一次出现,此前相同环境并没有出现过这个问题 尝试在其他宿主机以及本地开发机上执行相同命令均不能稳定复现该问题,其中 Linux 开发机无法复现该问题 定位过程报错分析由于报错信息只有一行,也只能从这个信息来入手。搜索引擎检索得到如下内容: StackOverflow: How do I fix the error “Only one usage of each socket address (protocol/network address/port) is normally permitted”?:文中指出,这个问题可能由多次 listen...
Listary 命令分享 - 快捷 clone 仓库并使用 VSCode 打开
背景日常工作中,经常会需要临时 Clone 某个仓库并且用 VSCode 打开,在 Windows 上我一般都是: 用文件资源管理器定位到需要 Clone 到的位置然后右键呼出终端 git clone cd <cloned repo> code . 这个操作多少有些不便: 要等 Windows 11 呼出右键菜单还是挺慢的 输入各种指令需要从鼠标转换到键盘 code . 会启动 VSCode 但是不会关掉终端,并且焦点会转到 VSCode,这时候想要关掉终端就又要换回鼠标点一次,怪烦的 P.S. 我当然知道直接一直 terminal 就没这些问题了,或者 code .; exit 也可以解决上面的第 3 点,但是 listary 的指令真的用一次就会爱上,所以还是小小捣鼓了下 方案右键 Listary > 选项 > 命令 > 选择添加 (+ 按钮) > 填入如下配置: 关键字: clode 标题: Clone and open "{query}" 路径:...
长更 - Linux 常用指令
先挖坑,慢慢填
短文 - 面对首次绩效考核的一些随笔
快要到年底绩效考核的时间了,回想过去半年好像一直忙忙碌碌但好像又没有什么很亮眼的成果。期间还有一大部分精力都投在了一个设计难度远大于实现难度的需求。 回过头想想,其实在工作上开始做一件长期的事情之前,还是要去评估可行性、投入以及收效,到底这件事情有多大的优先级,是不是就值得现在立马开始投入人力去做这个。到底做些什么可以被业务感知到,从而去判断,到底哪些需求才是重要的,而不是一味的承接需求,最后反倒抓不到重点了。 当然,除此之外,更重要的一点是,在知道了公司存在强制的 Underperform...
用 adb + app_process 执行 Java 代码 —— 一种无需安装 apk 的脱机代码执行方案
方案速览本方案本质上是使用了安卓提供的 app_process 命令,在将 Java 代码正确地打包为需要的 .jar 或是 .dex 文件后,通过 app_process 启动对应的入口函数来实现 adb 执行 Java 代码的能力。 对于目标 .jar 或是 .dex 文件,有两种不同的编译方案: .dex 文件方式: 创建一个普通的 Java 工程,正常地添加依赖,这里需要正确配置确保依赖在构建的时候也会被打包进制品 jar 中,编写相关代码 构建 jar 包 在安卓 SDK 文件夹下 (一般为 <homedir>\AppData\Local\Android\Sdk),找到 cmdline-tools\latest\bin\d8.bat (这里可以将 <homedir>\AppData\Local\Android\Sdkcmdline-tools\latest\bin 添加到环境变量中方便后面调用 d8 命令),如果没有,可以在 Android Studio 更新 Commandline Tools 或是在...
短文 - 转正日
今天收到了转正邮件,正式标志着一个新的人生阶段的开始。 对自己的期望就是,不要忘记做技术的初心,在新的阶段能有所成长,有所收获。 Po 一张在鹅厂的第一个关爱里程碑~
短文 - 博客迁移小记
最开始想的迁移方案是使用 skip-render 标记 html,但始终觉得不够优雅,因为导航栏、个人信息、头图之类的内容时常都会变,如果 skip-render 那永远都会是当时那个版本的页面,甚至可能超链接都是失效的,除了能显示原本的博文之外其实体验应该是相当差的——横竖感觉就是很突兀嘛! 直到今天突然意识到,hexo 渲染 markdown 为 html 文本肯定会分为三个大部分: 正文前部的各种元素,例如头图、导航栏、侧边栏等 正文的元素 正文后部的各种元素,例如版权、脚注等 一拍大脑, markdown 天生兼容 html 啊!!! 理论上对于 html 元素 hexo 应该不会过多插手渲染,那我不是理论上可以直接找到之前渲染好的 html 文件中的正文部分直接复制到 markdown 里面然后 hexo generate 就完成了?! 立马就开始动手实践,发现真的可以! 不过随着 butterfly 版本的迁移,页内标签外挂 tag 的渲染结果从 div-ul-li-button 变成了 div-button 的层级,原本在 li 上的类名现在转移到了...
短文 - 关于短博文的碎碎念
感觉如果博客只写长文的话,好像很快就会疲乏,其实很多时候想说的内容就是一两句话,即便硬是写成了长文,又觉得好像啰嗦了。 看到 Hexo - Butterfly 有提供一个 “说说” 的页面可以用 .yml 格式来存一些说说文档,但是仔细一看发现好像不会自动分页,这样一来图片一多感觉加载就会变成彻底的灾难… 不知道为什么在静态编译的时候没有做成本地分页的格式呢… 就像文章那样,其实在编译阶段就可以分散到不同的 index.html 去了,好可惜,也许以后有空会想办法看看能不能改吧… 还有很多云存储的方案,但感觉把自己的内容放在云上,总感觉会比较担心数据安全和以后的迁移成本,纯本地的话哪怕一天发两条十年也不过才不到上万条数据,一个 .yml 就带走了,哎可惜没分页终究还是不打算去用。 想来想去,就把短博客也当作正常的文章一样的显示在主页吧,不过会在标题前面加上 “短文” 的标记和对应的 tag,也方便浏览的时候来做区分好了