摘要: Raft是分布式环境下的一致性算法,它通过少数服从多数的选举来维持集群内数据的一致性。它与RBFT算法名称有点像,然而Raft算法里不能存在拜占庭节点,而RBFT则能容忍BFT节点的存在。Raft非常类似于paxos协议(参见我的这篇文章《paxos算法如何容错的–讲述五虎将的实践》),然而它比pa 阅读全文
posted @ 2018-09-04 14:47 张丽心 阅读(498) 评论(0) 推荐(0)
摘要: 许多程序员自称码农,因为每天事情总也做不完,而这些工作也没有给自己带来职业上的提升,总在原地打转,自己的工作似乎随时可被新人替换,可有可无。于是,年轻些的考虑着转管理或者转行,年纪大些的则被所谓的40岁危机困扰焦虑着。另一方面,有些程序员工作高效,能力出众,每当机会来临时总能获得职位上升,收入迅速的 阅读全文
posted @ 2018-09-04 14:44 张丽心 阅读(225) 评论(0) 推荐(0)
摘要: 作为写了十多年代码的技术表示:产品思维比程序员们想象中重要得多!掌握了产品思维的程序员能力可以double!我把产品思维的养成要点,从我的认知上提炼了下,供大家参考。 理解产品思维前,首先需要了解产品经理是一群什么样的人;其次我们再来看产品思维的本质;再次看看程序员们的技术思维有什么特点;最后谈谈技 阅读全文
posted @ 2018-09-04 14:42 张丽心 阅读(254) 评论(0) 推荐(0)
摘要: 在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输数据的、TCP的flag标志位里RST在哪些情况下出现。下面我会画一些尽量简化的图来表达清楚上述几点,之后再了解下RST攻击是怎么回事。 1、TCP是什么? TCP是在IP网络层之 阅读全文
posted @ 2018-09-04 14:42 张丽心 阅读(645) 评论(0) 推荐(1)
摘要: 关注陶辉很长时间,初次对陶辉的了解还是在我们CSDN的博客上,从2007年开始写博客,一直到现在,如果不是对技术的追求和热爱,以及热爱分享的精神,我想不是很多人能坚持下来,拥有多年大型互联网公司的从业经验,对linux下的高性能服务器开发、大规模分布式系统的设计有着丰富经验,对企业的Nginx\开发 阅读全文
posted @ 2018-09-04 14:35 张丽心 阅读(343) 评论(0) 推荐(0)
摘要: 这个问题是我在开发心跳服务器时的一个笔误,其实错误非常的低级浅显,特别写篇文章是想告诉大家,编译期的警告是非常重要的!由于项目代码量大,编译期信息很多,我在忙于联调时就悲催的忽视了一条编译期警告信息,实际上这个警告解决问题实在是方便,我忽略了它直接从core上啃哧啃哧定位问题花的时间比之多了去了。这 阅读全文
posted @ 2018-09-04 14:32 张丽心 阅读(531) 评论(0) 推荐(0)
摘要: 在说nginx前,先来看看什么是“惊群”?简单说来,多线程/多进程(linux下线程进程也没多大区别)等待同一个socket事件,当这个事件发生时,这些线程/进程被同时唤醒,就是惊群。可以想见,效率很低下,许多进程被内核重新调度唤醒,同时去响应这一个事件,当然只有一个进程能处理事件成功,其他的进程在 阅读全文
posted @ 2018-09-04 14:28 张丽心 阅读(416) 评论(0) 推荐(1)
摘要: 在实时性要求较高的特殊场景下,简单的UDP协议仍然是我们的主要手段。UDP协议没有重传机制,还适用于同时向多台主机广播,因此在诸如多人会议、实时竞技游戏、DNS查询等场景里很适用,视频、音频每一帧可以允许丢失但绝对不能重传,网络不好时用户可以容忍黑一下或者声音嘟一下,如果突然把几秒前的视频帧或者声音 阅读全文
posted @ 2018-09-04 14:27 张丽心 阅读(12422) 评论(1) 推荐(1)
摘要: 一直以来都在Qzone、CSDN等上面写博客,偶尔有些想法就在Paas平台上搭建服务,新浪和曾经的google上都用过其appengine。可是在别人的平台上写东西,总归有些不方便,有受制于人的感觉。《深入理解Nginx》这本书的在线支持站点,当时因为时间紧,就随便在weebly平台弄了个下载示例代 阅读全文
posted @ 2018-09-04 14:26 张丽心 阅读(236) 评论(0) 推荐(0)
摘要: (本文包括章节:1、由来,2、算法简单回顾,3、演习道具,4、演习,5、算法提出者Leslie的八卦。hoho) 1、由来: 刘备接受了诸葛亮的提议,决定将paxos算法的思想应用到蜀帝国的决策机制上。然而,玄德生性谨慎,决定先行试点,实践下可行性。孔明提议,由蜀国五大肌肉男:关羽、张飞、赵云、马超 阅读全文
posted @ 2018-09-04 14:22 张丽心 阅读(276) 评论(0) 推荐(0)
摘要: nginx是个多进程web容器,不同的配置下它的启动方式也是不同的,这里我只说说最典型的启动方式。 它有1个master进程,和多个worker进程(最优配置的数量与CPU核数相关)。那么,首先我们要找到main函数,它在src/core/nginx.c文件中。谈到源码了,这时我们先简单看下源码的目 阅读全文
posted @ 2018-09-04 14:21 张丽心 阅读(146) 评论(0) 推荐(0)
摘要: nginx是个高性能web server,很多时候我们会把它当成reverse proxy或者web server container使用,但有时我们也会开发它的第三方module,因为module才能完全使用nginx的全事件驱动、无阻塞调用机制,充分使用系统资源,达到SERVER最大处理吞吐量。 阅读全文
posted @ 2018-09-04 14:20 张丽心 阅读(1403) 评论(1) 推荐(0)
摘要: 多核CPU现在很常见,那么问题来了,一个程序在运行时,只在一个CPU核上运行?还是交替在多个CPU核上运行呢?LINUX内核是如何在多核间调度进程的呢?又是内核又是CPU核,两个核有点绕,下面称CPU处理器来代替CPU核。 实际上,如果你没有对你的进程做过特殊处理的话,LINUX内核是有可能把它放到 阅读全文
posted @ 2018-09-04 14:19 张丽心 阅读(1065) 评论(0) 推荐(0)
摘要: nginx是什么?可能很多人不是很了解,除非是做WEB服务器开发的朋友才可能涉猎,而且如果不懂C语言,又或者对WEB SERVER性能要求不高,也是没必要去研究它的。 说到这里,大家想必已经知道,nginx就是一个高性能的WEB SERVER,它的工作就像apache, tomcat一样。那么已经有 阅读全文
posted @ 2018-09-04 14:19 张丽心 阅读(514) 评论(0) 推荐(0)
摘要: 内核在微观上,把CPU的运行时间分成许多分,然后安排给各个进程轮流运行,造成宏观上所有的进程仿佛同时在执行。双核CPU,实际上最多只能有两个进程在同时运行,大家在top、vmstat命令里看到的正在运行的进程,并不是真的在占有着CPU哈。 所以,一些设计良好的高性能进程,比如nginx,都是实际上有 阅读全文
posted @ 2018-09-04 14:17 张丽心 阅读(5111) 评论(0) 推荐(0)
摘要: 开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺爽,确实快,那么,它到底为什么可以高 阅读全文
posted @ 2018-09-04 14:16 张丽心 阅读(895) 评论(0) 推荐(0)
摘要: 为什么要了解内核的调度策略呢?呵呵,因为它值得我们学习,不算是废话吧。内核调度程序很先进很强大,管理你的LINUX上跑的大量的乱七八糟的进程,同时还保持着对用户操作的高灵敏响应,如果可能,为什么不把这种思想放到自己的应用程序里呢?或者,有没有可能更好的实现自己的应用,使得操作系统能够以自己的意志来分 阅读全文
posted @ 2018-09-04 14:16 张丽心 阅读(1174) 评论(0) 推荐(0)
摘要: 虽然以代码行数来衡量项目或者程序员并不是一件靠谱的事,但是从统计角度看趋势对于技术管理人员还是很有帮助的!推荐一个比较好用的git仓库代码统计工具:git_stats,它用于按git提交人、提交次数、修改文件数、代码行数、注释量在时间维度上进行统计,亦可按各文件类型进行简单的统计,非常方便。实际上, 阅读全文
posted @ 2018-09-04 14:15 张丽心 阅读(3244) 评论(0) 推荐(0)
摘要: 应百林哲笑含的邀请,于2018.6.9号至7.1号前往广州白云国际会议中心参加《CSDI Summit 中国软件研发管理行业技术峰会》。会上认识了很多互联网一线老师是最大的收获: 本次我分享的主题是《兼顾灵活与性能的nginx》: 意外的惊喜是CSDI的讲师证书非常精美: 最后附上本次演讲的PPT内 阅读全文
posted @ 2018-09-04 14:14 张丽心 阅读(275) 评论(0) 推荐(0)
摘要: django是python语言快速实现web服务的大杀器,其开发效率可以非常的高!但因为秉承了语言的灵活性,django框架又太灵活,以至于想实现任何功能都有种“条条大路通罗马”的感觉。这么多种选择放在一起,如何分出高下?我想此时的场景下就两个标准:1、相同的功能用最少的代码实现(代码少BUG也会少 阅读全文
posted @ 2018-09-04 14:14 张丽心 阅读(1696) 评论(0) 推荐(0)
摘要: KosmosFS像Hadoop HDFS一样,是google GFS的开源实现,不过KFS是C++语言写成,目前只支持linux和solaris系统。由于使用了C++开发,所以必然比HDFS在性能和稳定性上有先天优势,在研究其源码之前,先看看如何编译部署它吧。很繁琐,因为KFS依赖了大量的第三方软件 阅读全文
posted @ 2018-09-04 14:13 张丽心 阅读(826) 评论(0) 推荐(0)
摘要: 多态是什么?简单来说,就是某段程序调用了一个API接口,但是这个API有许多种实现,根据上下文的不同,调用这段API的程序,会调用该API的不同实现。今天我们只关注继承关系下的多态。 还是得通过一个例子来看看C++是怎样在编译期和运行期来实现多态的。很简单,定义了一个Father类,它有一个test 阅读全文
posted @ 2018-09-04 14:13 张丽心 阅读(1132) 评论(0) 推荐(0)
摘要: 最近前端团队越发觉得目前API接口有些不好用,所以我也借此重新理一下我们的API接口。 API没有什么完美的设计理念和原则,只有最适合当下的设计。这个最适合包括:当前使用的技术架构、团队规模、团队成员技术特点、开发时间、人力成本、未来业务与技术的预期等。我先来回顾下我们产品的API变迁过程。 作为从 阅读全文
posted @ 2018-09-04 14:12 张丽心 阅读(391) 评论(0) 推荐(0)