用 C 语言实现协程协程与线程(进程)[1]都是模拟多任务(routine)并发执行的软件实现。操作系统线程在一个 CPU 线程中模拟并发执行多个任务,而协程(coroutine)在一个操作系统线程中模拟并发执行多个任务。 因此协程也被称为“用户态线程”、“轻量级线程”。之所以说“模拟并发执行”,是因为任务实际并没有同时运行,而是通过来回切换实现的。 线程切换由操作系统负责,而协程切换通常由程序员直接控制。程序员通 June 14, 2024 #featured #c/c++ #assembly
理想国我最近读完了《理想国》。这本书为古希腊哲学先贤柏拉图所著,是哲学经典之作、奠基之作,内容晦涩深奥,比较难懂。本人才疏学浅,以我的贫乏的哲学素养,难以完全领会其中深邃的思想。然而读完之后,仍然对我的价值观造成了不小的冲击。这里斗胆分享两点我的体会。 什么是正义 中国有句古话,叫做成王败寇。胜者为正义,败者为邪恶。蒙古铁蹄南下,击败南宋,占据中原,成为正统王朝,自然是正义。元末朱元璋起兵驱逐鞑虏,恢复 June 8, 2024 #reading #philosophy
AppImage: 一次打包,到处运行我们知道,不同于 Windows 将软件的所有文件安装在一个目录,一个 Linux 软件的不同部分会被安装在不同路径。例如,可执行文件安装在 /usr/bin 下;库文件安装在 /usr/lib 下;文档、脚本等资源文件通常安装在 /usr/share 下等。这是因为 Linux 认为软件包之间会相互依赖,不同的软件可能依赖于同一个库,那么这个库就只应该存在一份。例如 curl, ssh 和 ng April 19, 2024 #tools #linux
2023 Annual ReviewIn 2023 I spent most of my time on work, learning and dating. Compared with the last year, devoted less time on this blog and community. It might be a pretext but to be honest, writing a blog post alw January 1, 2024 #essays #english
Scheme 语言我最近在读 SICP (Structure and Interpretation of Computer Programs),中文译名是《计算机程序的构造与解释》,感觉受益匪浅。我打算开个坑,总结分享一些我学到的内容。SICP 综合性非常强,内容包括函数式编程、数据结构的分层与抽象、面向对象、无限流、元循环解释器、惰性求值、非确定性编程、逻辑编程、汇编语言与机器、编译原理等等。我只能选取一个主题抛 July 9, 2023 #featured #comupter-science
一种简单的事务实现在服务器编程中,事务往往是非常重要的,它的一个很重要的作用就是保证一系列操作的完整性。例如服务器处理某个请求要先后执行 a, b 两个修改操作,它们都有可能失败;如果 a 成功了但 b 失败了,事务会负责回滚 a 的修改。试想如果 a 操作是扣除余额,b 操作是发货,如果发货失败,钱就得退回去。如果服务器使用了支持事务的数据库系统,如 MySQL,事情就很好办。否则的话,实现类似的逻辑会比较棘手, June 18, 2023 #lua #design
Neovim 使用体验我很喜欢 Vim 这种纯键盘的交互方式, 但是我却一直不怎么会用 Vim. 虽然熟悉 Vim 的键位, 但是不懂 Vimscript, 不知道怎么装插件, 怎么定制它. 因此我一直使用 VSCode 作为主力开发工具, 搭配 VSCodeVim 这个插件, 能同时享受到 Vim 和 VSCode 的特性. 但是我总觉得需要会用真正的 Vim. 直到我接触到了 Neovim, 作为 Vim 的改进版 March 21, 2023 #tools
图论巧解复杂依赖问题我最近做到一道比较难的 Hard 题目. 这道题综合性比较高, 也比较抽象, 但是越琢磨越觉得有意思, 值得分享一下. 涉及到的知识点有图论基础, 拓扑排序, 并查集等, 本文假设你已经比较熟悉它们. 问题来自 LeetCode 1632 题. 给定一个 M * N 的矩阵 matrix, 返回一个新的矩阵 ans, 其中 ans[i][j] 是 matrix[i][j] 的秩(rank). 这里 January 27, 2023 #algorithms #leetcode
2022 Annual Summary2022 is a bit tough for many of us. The pandemic disturbed many people’s life. The Chinese internet industry is not that prosperous in the year: many companies layoffs and many people are unemployed January 11, 2023 #essays #english
使用 tcpdump 抓包tcpdump 是一个很实用的抓包工具. 一直以来我都只是复制网上的常用命令, 对其使用逻辑缺乏理解. 最近我仔细阅读了它的 manual, 总结一下 tcpdump 的用法. 命令格式 如果使用 tcpdump --help 查看它的使用方法, 总是会得到一大堆参数选项, 至于如何使用还是一头雾水. tcpdump 的用法实际是这样的: 1$ tcpdump [选项] [表达式] tcpdump December 5, 2022 #tools #network