聊聊 Kafka Consumer 那点事

2021-10-11
阅读 13 分钟
5.9k
在上一篇中我们详细聊了关于 Kafka Producer 内部的底层原理设计思想和细节, 本篇我们主要来聊聊 Kafka Consumer 即消费者的内部底层原理设计思想。

Kafka基础入门篇

2021-10-09
阅读 4 分钟
3.4k
1、kafka简介 Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用与大数据实时处理领域。其主要设计目标如下:

nginx的keepalive源码实现

2020-11-18
阅读 12 分钟
5.5k
keepalive是在TCP中一个可以检测死连接的机制,可以保持tcp长连接不被断开,属于tcp层功能。http协议使用keepalive保持长连接,主要作用是提高对tcp连接的复用率,减少创建连接过程给系统带来的性能损耗。

Nginx源码入门指南

2020-11-16
阅读 31 分钟
15.9k
我们为什么需要学习Nginx呢?高性能,高稳定,优雅的模块化编程等就不提了,就说一个理由:Nginx是目前最受欢迎的web服务器,据统计,全球平均每3个网站,就有一个使用Nginx。如果你不懂Nginx,日常很多工作可能都无法开展。

【Golang源码系列】二:Slice实现原理分析

2020-03-24
阅读 17 分钟
6k
作者:何海涛学而思网校技术团队;)原文:[链接]众所周知,在golang中,slice(切片)是我们最常使用到的一种数据结构,是一种可变长度的数组,本篇文章我们主要结合源码来介绍一下slice的底层实现,以及在使用slice时的一些注意事项。

【Golang源码系列】一:Map实现原理分析

2020-03-23
阅读 22 分钟
9.6k
golang中map是一个kv对集合。底层使用hash table,用链表来解决冲突 ,出现冲突时,不是每一个key都申请一个结构通过链表串起来,而是以bmap为最小粒度挂载,一个bmap可以放8个kv。在哈希函数的选择上,会在程序启动时,检测 cpu 是否支持 aes,如果支持,则使用 aes hash,否则使用 memhash。每个map的底层结构是hmap,...

Swoole Server 消息回调函数4倍性能提升

2020-03-22
阅读 19 分钟
3.2k
在Swoole4.5版本中(目前还未发布),我们的Server有一个性能需要优化的地方,就是worker进程在收到master进程发来的包的时候,需要进行两次的拷贝,才可以把数据从PHP扩展层传递到PHP上层(也就是我们事件回调函数需要拿到的data)。

研发工程师该如何成长?--好未来学而思网校负责人2019年总结

2020-01-12
阅读 5 分钟
7.1k
很多年轻的研发伙伴都有关于“研发工程师该如何成长”的困惑,大家普遍对如何成长为技术专家、如何在繁忙的工作中持续学习充满了困惑,这其实是每一位研发伙伴成长过程中的必经之路。我来网校小一年了,这一年里一直致力于“打造学习型组织”,经过一年的摸索和尝试,有了一点点的成绩和心得,在新一年的开始,我想对2019年...

【2019-11-07】twemproxy事件--by 闫昌

2019-12-22
阅读 3 分钟
2.2k
水平触发模式,epoll_wait的处理流程为:遍历就绪的链表,把fd的buf中有数据的fd返回给用户,并在链表中保留该节点,buf中没数据的则从链表中剔除,放回红黑树中,这么做的好处是,只要fd中海油未处理的数据,都会通过epoll_wait读取到,缺点是,每次需遍历,性能差。

Swoole协程之旅

2019-10-14
阅读 15 分钟
3.1k
概念其实很早就出现了,摘wiki一段:According to Donald Knuth, the term coroutine was coined by Melvin Conway in 1958, after he applied it to construction of an assembly program.The first published explanation of the coroutine appeared later, in 1963. 协程要比c语言的历史还要悠久,究其概念,协程是子...

【PHP7源码分析】初探PHP字符串类型中的引用计数

2019-10-06
阅读 6 分钟
3k
字符串类型也是我们平时常用的类型,由于字符串的特性,为了节省内存通常相同字符串变量会共用一块内存空间,通过引用计数来标记有多变量使用这块内存。

技术团队的学习方法:每天学习 100 分钟,成功写出 2 本书

2019-09-10
阅读 3 分钟
4.4k
“雷哥,我感觉我工作 2 年了,天天都是在用 PHP 写业务逻辑,CURD,CURD,CURD,虽然很努力也很累,但是感觉自己也没什么成长……”

浅谈C/C++链接库

2019-08-30
阅读 9 分钟
7.8k
2、本文后续会用到linux下nm, ldd命令。nm用于查看文件中的符号, 例如变量, 函数名称。ldd用于查看动态链接库或者可执行文件的依赖库(动态链接库)。

【Swoole源码研究】浅析swoole中server的实现

2019-05-27
阅读 11 分钟
8.5k
swoole是面向生产环境的php异步网络通信引擎, php开发人员可以利用swoole开发出高性能的server服务。swoole的server部分, 内容很多, 也涉及很多的知识点, 本文仅对其server进行简单的概述, 具体的实现细节在后续的文章中再进行详细介绍。

初探nginx HTTP处理流程

2019-05-22
阅读 15 分钟
7.9k
Nginx作为一款开源的、高性能的HTTP服务器和反向代理服务器而闻名,本文基于nginx-1.15.0,将为读者简要介绍其HTTP处理流程。

【前端早读会】每天记录前端学习的过程

2019-05-17
阅读 5 分钟
3.5k
在这里使用学而思网校的录像设备,记录前端工程师每天学习的内容: 9月 2019-9-30 作用域链 分享人:李佳晓视频:[链接] 2019-9-29 Vue+Electron构建跨平台桌面应用 分享人:刘宇视频:[链接] 2019-9-27 事件机制比较,从原生到react(下) 分享人:张燕视频:[链接] 2019-9-26 事件机制比较,从原生到react(上) 分享...

【笔记整理】http协议浅析(二)

2019-05-10
阅读 5 分钟
3.2k
作者:杨志晓 http的版本: a.HTTP建立在TCP协议之上。 b.HTTP/0.9 于1991年发布。 c.HTTP/1.0 于1996年发布。 d.HTTP/1.1 于1999年发布。 e.HTTP/2 于2015年发布。 http 1.0 no keep-alive(默认短链接) a.工作原理如图:2_1.jpg b.每次与服务器交互,都需要新开一个连接! 2_2.jpg c.抓包分析: demo:4张图片+html总...

【笔记整理】http协议浅析(一)

2019-05-10
阅读 3 分钟
3.5k
a.TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。 其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。 通过面向连接、端到端和可靠的数据包发送。b.SPDY协议是Google提出的基于传输控制协议(TCP)的应用层协议,通过压...

【每日学习记录】使用录像设备记录每天的学习

2019-03-13
阅读 5 分钟
14.1k
在这里使用学而思网校的录像设备,记录每天学习的内容 2019-12-29 ~ 2019-12-31 swool 源码-PHP生命周期 by 申振 2019-12-22 ~ 2019-12-26 待补充 2019-12-15 ~ 2019-12-19 12-17 Swoole原理 by 韩天峰 12-15 Swoole原理 by 韩天峰 2019-12-09 ~ 2019-12-13 待补充 2019-12-02 ~ 2019-12-06 12-06 精品课和先锋平台...

【Nginx源码分析】Nginx中http2浅析

2018-12-11
阅读 7 分钟
8.2k
http1.1请求行和请求头部都是纯文本编码,即可以直接按ascii字符解释,而http2是有自己的编码格式。并且nginx中http2必须建立在ssl协议之上。

【相关整理】gcc常见参数整理

2018-11-19
阅读 2 分钟
3.2k
周生政 make约定俗成的规范: 1,首先从源代码生成目标文件(预处理,编译,汇编),"-c"选项表示不执行链接步骤。 $(CC) $(CPPFLAGS) $(CFLAGS) example.c -c -o example.o 2,然后将目标文件连接为最终的结果(连接),"-o"选项用于指定输出文件的名字。 $(CC) $(LDFLAGS) example.o -o example 有一些软件包一次完成四个步骤...

【Nginx源码分析】Nginx的编译

2018-11-19
阅读 4 分钟
4.4k
使用shell语言生成makefile,以及ngx_auto_config.h,ngx_auto_headers.h,ngx_modules.c。其中ngx_auto_config.h为各种常量定义,ngx_auto_headers.h为头文件,ngx_modules.c为nginx模块。makefile用来组织编译流程。

【转载】【工具使用】Linux下Makefile的automake生成全攻略

2018-11-19
阅读 7 分钟
2.6k
作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。

【基础知识】水平触发与边沿触发

2018-11-18
阅读 1 分钟
5.1k
accept新的连接, 监听读事件。读事件到达, 处理读事件。需要写入数据, 向fd中写数据, 一次无法写完, 开启写事件监听。写事件到达, 继续写入数据, 写完后关闭写事件。优缺点

【Nginx源码分析】Nginx的内存管理

2018-11-14
阅读 4 分钟
4.7k
应用程序的内存可以简单分为堆内存,栈内存。对于栈内存而言,在函数编译时,编译器会插入移动栈当前指针位置的代码,实现栈空间的自管理。而对于堆内存,通常需要程序员进行管理。我们通常说的内存管理亦是只堆空间内存管理。

【Nginx源码分析】Nginx中的锁与原子操作

2018-11-14
阅读 5 分钟
4.6k
多线程或者多进程程序访问同一个变量时,需要加锁才能实现变量的互斥访问,否则结果可能是无法预期的,即存在并发问题。解决并发问题通常有两种方案:1)加锁:访问变量之前加锁,只有加锁成功才能访问变量,访问变量之后需要释放锁;这种通常称为悲观锁,即认为每次变量访问都会导致并发问题,因此每次访问变量之前都加...

【源码阅读方法论】使用valgrind生成调用链

2018-11-13
阅读 1 分钟
4.1k
在学习开源代码时,我们希望有个工具能够给我们全局的视角而不过早的陷入细节的泥淖中。读书可以跳读,读代码也是可以跳读的。valgrind可以生成整个调用关系链。该关系链指导我们,迅速定位到我们关心的细节。

【Nginx源码分析】Nginx的listen处理流程分析

2018-11-13
阅读 4 分钟
5k
施洪宝 一. 基础 nginx源码采用1.15.5 后续部分仅讨论http中的listen配置解析以及优化流程 1.1 概述 假设nginx http模块的配置如下 {代码...} 端口, 地址, server的关系 端口是指一个端口号, 例如上面的8000端口 地址是ip+port, 例如127.0.0.1:8000, 10.0.1.1:8000, 0.0.0.0:8000, listen后配置的是一个地址。 每个地址...

【Nginx源码分析】Nginx配置文件解析(二)

2018-11-06
阅读 20 分钟
5.7k
解析配置的入口函数是ngx_conf_parse(ngx_conf_t cf, ngx_str_t filename),其输入参数filename表示配置文件路径,如果为NULL表明此时解析的是指令块。

【Nginx源码分析】Nginx配置文件解析(一)

2018-11-05
阅读 5 分钟
13.5k
配置文件是nginx的基础,对于学习nginx源码甚至开发nginx模块的同学来说更是必须深究。本文将从源码从此深入分析nginx配置文件的解析,配置存储,与配置查找。