2019-01-11 YongHao Hu
go
三次握手的误解与错误类比(RFC解读) 关于TCP三次握手几乎是应届毕业生面试常见的问题了,然而网上还很多比比皆是的错误,以知乎 TCP 为什么是三次握手,而不是两次或四次? 上的热门答案为例子,第一个3.6K 次赞同的类比就是错误的: 继续阅读 »
2019-01-01 YongHao Hu
go
洗澡时,我终于跑出来喊出了我的Eureka 今天与一位帅气的同事一起解决了一下 ssh 的相关问题,在我装逼的提及不需要显式指定 identity key 的时候,顺道提及 known_hosts 也是一样的时候,说到了known_hosts的现象: 继续阅读 »
2018-11-23 YongHao Hu
go
从限流谈到伪造 IP(nginx remote_addr) remote_addr 很多流量大的网站会限流,比如一秒 1000 次访问即视为非法,会阻止 10 分钟的访问。 通常简单的做法,就是通过 nginx 时,nginx 设置 继续阅读 »
2018-09-19 YongHao Hu
go
在设计实现分布式系统时,必定离不开名字发现服务: 一个新节点加进来系统里了,怎么样被其他节点感知到,并且能与此节点通信呢? 在此, 我向大家简明扼要的介绍一下 erlang 这个设计了十多年稳定性达到99.99999999%的电话系统的语言是怎么样做的。 继续阅读 »
2018-06-08 YongHao Hu
go
聚合的基础教程请看 官方文档: https://docs.mongodb.com/manual/aggregation 基本上都能看懂, 但 mongo 聚合难就难在 对于初学者, 很容易迷失方向, 不知道有什么东西可以用, 以及该如何用。 继续阅读 »
2018-04-05 YongHao Hu
go
为什么你一定需要学习 Elixir? Elixir 是一门基于 erlang 开发的新语言,复用了 erlang 的虚拟机以及全部库(站在已经生存了20多年巨人的肩膀上),定义了全新的语法以及构造了现代语言必不可少生态环境—包管理器,测试工具,formatter等。使用 Elixir,你可以方便的构建可用性高达99.9999以及天然分布式的程序(代码随手一写就是稳定的分布式),可以秒开成千上万 Elixir 里专属的进程(比起系统的进程更轻量级),处理高并发请求等等。 继续阅读 »
2018-03-22 YongHao Hu
go
nginx 中, sites-available 是放所有vhosts的配置文件, 而sites-enable 则是放你想要开启能够被访问的 vhost 文件, 一般是建立一个sites-available 对应的文件的symlink(软链接). 这样子做的好处是, 想关闭此 vhost 的访问时, 可以删除软连接即可, 恢复时重新创建, 可以避免把文件移来移去或者作备份等. 继续阅读 »
2018-03-05 YongHao Hu
go
/* #include */ /* #include */ int main(){ char *c = malloc(10); c[0] = 'a'; printf("hi, "); printf("%s\n", c); free(c); return 0; } 为什么这个程序缺了头文件, 依然可以正常编译运行, 并且有正确的结果? 继续阅读 »
2018-01-24 YongHao Hu
go
自己用swig写项目的wrapper, 或者到网上找别人写好的wrapper, 如go-opencv, 本例将使用opencv做演示. 注意, 第三方库的wrapper要放在自己的项目中的vendor目录下. 继续阅读 »
2018-01-20 YongHao Hu
DNS
记得大学里有计算机网络这门课程,我找过著名的两本的国外教材,分别从自底向上,由上到下两个角度来诠释网络是如何连接的。冗长的介绍接线器,光缆,吓得我粗略的一略而过,结果自然是『万花丛中过,片叶不沾身』。 而后,我的编程生涯里,似乎也没有被网络所困扰。不懂得各种原理,似乎用框架,查查 stackoverflow,Google 挖个遍,也可以 6666. 不做底层的咸鱼,怎么会需要原理呢,我学的什么编译链接,session,segment,,内存管理也不过是镜中花,水里月。 继续阅读 »