2019年6月5日
摘要: SIGBUS 在 x86 Linux 上并不多见,但一旦出现,其调用堆栈常常让人摸不着头脑,加之信号问题各平台系统间差异较大,更让人难以理清,这里稍微总结一下 x86 Linux 上大概有哪些情形会触发 BUS ERROR. 文件映射访问异常 这是 SIGBUS 在用户态最为常见的场景,也最容易触发 阅读全文
posted @ 2019-06-05 07:59 twoon 阅读(7586) 评论(0) 推荐(0) 编辑
  2019年6月4日
摘要: 运行时替换函数对 golang 这类静态语言来说并不是件容易的事情,语言层面的不支持导致只能从机器码层面做些奇怪 hack,往往艰难,但如能成功,那挣脱牢笼带来的成就感,想想就让人兴奋。 gohook gohook 实现了对函数的暴力拦截,无论是普通函数,还是成员函数都可以强行拦截替换,并支持回调原 阅读全文
posted @ 2019-06-04 15:10 twoon 阅读(11327) 评论(1) 推荐(2) 编辑
  2017年2月6日
摘要: 前段时间业务反映某类服务器上更新了 bash 之后,ssh 连上去偶发登陆失败,客户端吐出错误信息如下所示: 图 0 该版本 bash 为部门这边所定制,但是实现上与原生版并没有不同,那么这些错误从哪里来? 是 bash 的锅吗 从上面的错误信息可以猜测,异常是 bash 在启动过程中分配内存失败所 阅读全文
posted @ 2017-02-06 16:30 twoon 阅读(8969) 评论(18) 推荐(31) 编辑
  2016年9月5日
摘要: 0. PUB/SUB, XPUB/XSUB filtering happens at publisher sides when sockets are using a connected protocol(tcp or ipc or inproc) there are meta info excha 阅读全文
posted @ 2016-09-05 10:21 twoon 阅读(1828) 评论(0) 推荐(0) 编辑
  2016年7月17日
摘要: 实现 vector 的四则运算 这里假设 vector 的运算定义为对操作数 vector 中相同位置的元素进行运算,最后得到一个新的 vector。具体来说就是,假如 则, 等于 。实现这样的运算看起来并不是很难,一个非常直观的做法如下所示: 有了这个类,我们就可以把一个简单的运算表达式的结果封装 阅读全文
posted @ 2016-07-17 02:03 twoon 阅读(10024) 评论(5) 推荐(4) 编辑
  2016年3月4日
摘要: 两年多以前随手写了点与 lock free 相关的笔记: "1" , "2" , "3" , "4" ,质量都不是很高其实(读者见谅),但两年来陆陆续续竟也有些阅读量了(可见剑走偏锋的技巧是多容易吸引眼球)。笔记当中在解决内存释放和 ABA 问题时提到了 Hazard Pointer 这个东西,有两 阅读全文
posted @ 2016-03-04 20:40 twoon 阅读(6089) 评论(0) 推荐(1) 编辑
  2015年12月11日
摘要: 再次来写左值右值相关的东西我的内心是十分惴惴不安的,一来这些相关的概念十分不好理解,二来网上相关的文章实在太多了,多少人一看这类题目便大摇其头,三来也怕说不清反而误导了别人,反复纠缠这些似乎无关大雅的语言细节实在也有成为 language lawyer 之嫌。但我还是决定再总结一次,因为这是我一直以 阅读全文
posted @ 2015-12-11 16:50 twoon 阅读(7009) 评论(4) 推荐(2) 编辑
  2015年10月26日
摘要: 很多时候我们希望能够用一个变量来保存和操作不同类型的数据(比如解析文本创建 AST 时保存不同类型的结点),这种需求可以通过继承来满足,但继承意味着得使用指针或引用,除了麻烦和可能引起的效率问题,该做法最大的不便还在语义上,指针和引用都不是值类型。于是我们想到 union,union 对简单类型来说... 阅读全文
posted @ 2015-10-26 18:02 twoon 阅读(3940) 评论(0) 推荐(1) 编辑
  2015年10月8日
摘要: 最近一段时间 c++ 社区里最火热的话题莫过于 cppcon2015 了, isocpp 上一堆相关的新闻,其中有一个 "页面" 罗列了该会议的全部主题, 匆匆一瞥几乎眼花缭乱,为期一个星期的会议竟有上百个演讲,无论是数量还是内容所覆盖的范围,比之去年都更加丰富,作为一个野生的 c++ 的爱好者,我... 阅读全文
posted @ 2015-10-08 00:33 twoon 阅读(2209) 评论(2) 推荐(1) 编辑
  2015年3月5日
摘要: 注意:本文所说的全局变量指的是 variables with static storage,措词来自 c++ 的语言标准文档。##**什么时候初始化**根据 C++ 标准,全局变量的初始化要在 main 函数执行前完成,常识无疑,但是这个说法有点含糊,main 函数执行前到底具体是什么时候呢?是编译... 阅读全文
posted @ 2015-03-05 23:12 twoon 阅读(44754) 评论(5) 推荐(13) 编辑