w
h
y
?
y
o
u
a
r
e
h
e
r
e
?
G、P、M 是 Go 调度器的三个核心组件,各司其职。在它们精密地配合下,Go 调度器得以高效运转,这也是 Go 天然支持高并发的内在动力。今天这篇文章我们来深入理解 GPM 模型。
先看 G,取 goroutine 的首字母,主要保存 goroutine 的一些状态信息以及 CPU 的一些寄存器的
...
goroutine,绕不开的一个话题是:它和 thread 有什么区别?
参考资料【How Goroutines Work】告诉我们可以从三个角度区别:内存消耗、创建与销毀、切换。
内存占用
创建一个 goroutine 的栈内存消耗为 2 KB,实际运行过程中,如果栈空间不够用,会自动进行扩容
...
源码分析我们先来看一下接收相关的源码。在清楚了接收的具体过程之后,再根据一个实际的例子来具体研究。
接收操作有两种写法,一种带 “ok”,反应 channel 是否关闭;一种不带 “ok”,这种写法,当接收到相应类型的零值时无法知道是真实的发送者发送过来的值,还是 channel 被关闭后,返回给
...
源码分析发送操作最终转化为 chansend 函数,直接上源码,同样大部分都注释了,可以看懂主流程:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
...
数据结构底层数据结构需要看源码,版本为 go 1.9.2:
1234567891011121314151617181920212223242526type hchan struct { // chan 里元素数量 qcount uint // chan 底层循环数组的长度 dataqs
...
在 C++ 开发中,使用 -fsanitize=address 编译器标志启用了 AddressSanitizer,这是一个功能强大的内存错误检测工具,用于检测各种内存相关的错误,包括但不限于内存泄漏、越界访问和使用后释放。这个工具是为了帮助开发者在开发阶段发现潜在的错误,以增强程序的稳定性和安全性
...
注:本文是普及金融市场交易的基础知识,不是为了鼓励大家去炒股炒币。相反,通过学习证券知识,理解衍生品原理,可以更好地认识市场风险,自觉放弃杠杆赌博暴富等不切实际的幻想,避免落入各种理财、带单、空气币等诈骗套路。本文一切内容均不构成任何投资意见或建议。
期货合约合约交易,通常指期货合约。现货合约我们以
...
在使用 gperftools 的 heap profiler 分析 C++ 程序的内存使用情况时,您可以生成多个内存分配描述文件(heap profiles),这些文件记录了程序在特定时间点的内存分配状态。通过对比这些描述文件(即进行 “diff” 操作),可以发现在两个时间点之间的内存分配差异。
...
基于protobuf 的 rpcprotobuf 实现了序列化部分,预留了 RPC 接口,但是没有实现网络交互的部分。基于pb里面的 service 接口,自己实现实际的通信过程,实现一个简易的 rpc是比较容易的, 对我们阅读 brpc、muduo、grpc等著名开源的rpc有很大帮助。
goo
...
汇率跟什么有因素关系1. 经济增速跟汇率相关吗?
顺周期货币:经济增速与汇率正相关的国家,外围地区国家:出售原材料的发展中国家
逆周期货币:经济增速与汇率负相关的国家,中心地区国家:日元、瑞士法郎、美元
人民币:从前是顺周期,过去20年表现为无周期,现在表现为逆周期
关于顺周期与逆周期:
在经济形
...