w h y ? y o u a r e h e r e ?

注:本文是普及金融市场交易的基础知识,不是为了鼓励大家去炒股炒币。相反,通过学习证券知识,理解衍生品原理,可以更好地认识市场风险,自觉放弃杠杆赌博暴富等不切实际的幻想,避免落入各种理财、带单、空气币等诈骗套路。本文一切内容均不构成任何投资意见或建议。 在证券交易系统中,撮合引擎是实现买卖盘成交的关键 ...
Read more »

可变基数树分享使用可变基数树优化交易订单簿以及使用SIMD硬件加速查找主要参考论文: https://db.in.tum.de/~leis/papers/ART.pdf 背景 内存变得容量更大更便宜,整个数据库/存储引擎可以放到内存 传统的内存数据索引一般是平衡二叉树 在现代的硬件上效率不高 另一类 ...
Read more »

有的人学习编程技术,是把高级程序员做为追求的目标,甚至是终身的奋斗目标。后来参与了真正的商品化软件开发后,反而困惑了,茫然了。 一个人只要有韧性和灵性,有机会接触并学习电脑的编程技术,就会成为一个不错的程序员。刚开始写程序,这时候学得多的人写的好,到了后来,大家都上了一个层次,谁写的好只取决于这个 ...
Read more »

G、P、M 是 Go 调度器的三个核心组件,各司其职。在它们精密地配合下,Go 调度器得以高效运转,这也是 Go 天然支持高并发的内在动力。今天这篇文章我们来深入理解 GPM 模型。 先看 G,取 goroutine 的首字母,主要保存 goroutine 的一些状态信息以及 CPU 的一些寄存器的 ...
Read more »

goroutine,绕不开的一个话题是:它和 thread 有什么区别? 参考资料【How Goroutines Work】告诉我们可以从三个角度区别:内存消耗、创建与销毀、切换。 内存占用 创建一个 goroutine 的栈内存消耗为 2 KB,实际运行过程中,如果栈空间不够用,会自动进行扩容 ...
Read more »

源码分析我们先来看一下接收相关的源码。在清楚了接收的具体过程之后,再根据一个实际的例子来具体研究。 接收操作有两种写法,一种带 “ok”,反应 channel 是否关闭;一种不带 “ok”,这种写法,当接收到相应类型的零值时无法知道是真实的发送者发送过来的值,还是 channel 被关闭后,返回给 ...
Read more »

源码分析发送操作最终转化为 chansend 函数,直接上源码,同样大部分都注释了,可以看懂主流程: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 ...
Read more »

数据结构底层数据结构需要看源码,版本为 go 1.9.2: 1234567891011121314151617181920212223242526type hchan struct { // chan 里元素数量 qcount uint // chan 底层循环数组的长度 dataqs ...
Read more »

注:本文是普及金融市场交易的基础知识,不是为了鼓励大家去炒股炒币。相反,通过学习证券知识,理解衍生品原理,可以更好地认识市场风险,自觉放弃杠杆赌博暴富等不切实际的幻想,避免落入各种理财、带单、空气币等诈骗套路。本文一切内容均不构成任何投资意见或建议。 期货合约合约交易,通常指期货合约。现货合约我们以 ...
Read more »

基于protobuf 的 rpcprotobuf 实现了序列化部分,预留了 RPC 接口,但是没有实现网络交互的部分。基于pb里面的 service 接口,自己实现实际的通信过程,实现一个简易的 rpc是比较容易的, 对我们阅读 brpc、muduo、grpc等著名开源的rpc有很大帮助。 goo ...
Read more »