简单代码
文章平均质量分 67
skywind
老程序员,92年小学开始写代码,快速可靠传输协议 KCP 作者,知乎 25万关注技术答主(id 韦易笑),游戏开发话题,编程话题优秀答主,娱乐化编程,Vim 用户和插件作者。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
支持 Win10 的网络环境模拟(丢包,延迟,带宽)
升级 Windows 10 以后,原来各种网络模拟软件都挂掉了,目前能用的就是只有 clumsy,唯一问题是不支持模拟带宽,那么平时要模拟一些糟糕的网络情况的话,是不太方便的,而开虚拟机用 Linux tc 或者设置个远程 linux 网关又很蛋疼,于是我顺便给他加了个带宽模拟功能:原创 2024-11-09 23:58:57 · 842 阅读 · 0 评论 -
56 行代码用 Python 实现一个类似 Flex/Lex 的词法分析器
作为 Yacc/Bison 的好搭档 Lex/Flex 是一个很方便的工具,可以通过写几行规则就能生成一个新的词法分析器,大到给你的 parser 提供 token 流,小到解析一个配置文件,都很有帮助;而用 Python 实现一个支持自定义规则的类 Flex/Lex 词法分析器只需要短短 56 行代码,简单拷贝粘贴到你的代码里,让你的代码具备基于可定制规则的词法分析功能。2)由上往下匹配规则;你如果代码里有一些简单的词法分析需求,把上面这个 56 行的函数拷贝过去就够了,真的不必引入什么其他的复杂依赖。原创 2024-11-09 21:08:49 · 716 阅读 · 0 评论 -
Python 中使用组合方式构建复杂正则
用手写直接写是很难写出这么复杂的正则的,写出来也很难调试,而组合方式构建正则的话,可以将小的简单正则提前测试好,要用的时候再组装起来,就不容易出错,上面就是组装替换后的结果。是用来表示长度的,里面都是数字,如果里面是变量名的话不会和原有规则冲突,因此这个写法是安全的。可以取完整结果,也可以按照规则名字,取得里面具体某个部件得匹配结果。比如输入一个字符串规则,可以使用。这下可以方便的写复杂正则表达式了。再 Python 的正则表达式里。完事,主要逻辑 84 行代码。原创 2024-11-08 22:53:39 · 292 阅读 · 0 评论 -
基础优化-最不坏的哈希表
最终生成 cmov 的代码是没有分支的,实测新老 gcc,新版本 gcc 生成 cmov指令性能是没有用 cmov 的一倍以上,诸如此类的代码层的优化技巧我们尽量用起来,让这个阈值降低到 2-3 的时候,也就是说传统的有序链表操作已经没有优化余地了,但是通过降低 treeify 过程中再次分配内存的消耗,树维护的消耗,以及提高树的性能,可以把阈值从 8 降低到 4,再通过代码层的优化降低到 2-3,也就是说,将原来的链表(有序或者无序)换成平衡二叉树,这是复杂度最高的做法,同时也是最可靠的做法。原创 2024-11-02 00:40:47 · 804 阅读 · 0 评论 -
为什么 C 语言数组是从 0 开始计数的?
C 语言等大多数编程语言的数组从 0 开始而不从 1 开始,有两个原因: 第一:地址计算更方便 C 语言从 0 开始的话,array[i] 的地址就正好是: 如果是从 1 开始的话,就是 多一次计算原创 2024-10-30 22:28:35 · 1646 阅读 · 0 评论 -
别被忽悠了 Lua 数组真的也可以从 0 开始索引?
先前我说 Lua 数组从 1 开始不太爽,很多人来纠正我说也可以从 0 开始,比如:local m = { [0] = 100, 101, 102, 103 } 然后访问时 m[0] 也可以正常访问到第 0 个元素,所以 “Lua 给你充分自由度,让你可以从任意下标索引数组”,貌似好像说的很有道理,但是不是这样呢?原创 2024-10-30 22:40:36 · 710 阅读 · 0 评论
分享