
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
平滑重启上一篇文章我们分析了Nginx的启动流程。其中ngx_add_inherited_sockets主要用于继承Socket文件句柄。Nginx有平滑重启的功能,通过平滑重启,可以让用户无感知并且不中断。#平滑重启sudo kill -HUP `cat /usr/local/nginx-1.4.7/nginx.pid`无感知不中断的过程,就需要Nginx继承原先的so
目录前言安全措施如何实现1.数据加密2.数据加签3.时间戳机制4.AppId机制5.限流机制6.黑名单机制7.数据合法性校验前言最近有个项目需要对外提供一个接口,提供公网域名进行访问,而且接口和交易订单有关,所以安全性很重要;这里整理了一下常用的一些安全措施以及具体如何去实现。安全措施个人觉得安全措施大体来看主要在两个方面:一方面就是如何保证数据在传输过程中的安全性;另一个方面是数据已经到达服务器
上一章,我们讲解了如何将Require进来。本章节具体将一下注册扩展库的实现。扩展库 - 注册扩展库的配置注册一个扩展库,首先需要进行两个基础配置:loadedlibs数组配置 & 库名称和回调函数的配置(lualib.h)loadedlibs是一个二维数组。第一个参数为库名称,第二个参数库open函数。loadedlibs数组中,第一个对象为全局基础方法聚合(luaope...
前面几章我们介绍了Lua常用的最重要的几个数据结构。这章节开始,我们开始讲解主流程篇。主流程,一般都是从lua.c的main方法开始。那我们就从main方法开始看整个链路和流程。调用栈操作 - pmain方法的调用总流程从main方法中,创建完基础的lua_State *L结构后,我们就能看到Lua向数据栈上push了一个c语言的闭包方法。该方法:pmain。pmain方法是整个L...
前几年阅读过华庭的《glibc内存管理ptmalloc源代码分析》文章,并做过一篇笔记今年打算重点阅读一下glibc里面,malloc部分的具体实现机制。ptmalloc简介Linux早期的版本,是由Doug Lea实现的,但是早期的版本有一个问题,就是没办法处理多线程下并发分配和回收的高效和正确性。Wolfram Gloger在Doug Lea的基础上改进使得Glibc的malloc可
前一章,我们讲解了fastbins的空闲链表的分配逻辑。获取得到的victim就是要操作的内存chunk对象,通过chunk2mem和alloc_perturb函数,初始化对象。如果符合smallbin的大小,则从smallbin的数组上获取一个chunk进行内存分配。,则此次分配失败,需要跳出smallbins上的分配逻辑,往下走其他逻辑的分配方式。如果是smallbin,则通过bins的数组下
这里要注意的是,每次有线程调用分配malloc函数,都会对分配区进行加锁操作,多线程情况下竞争的时候没有获得主分配区的,则去freelist里面去找,找不到则创建一个新的非分配区,如果非分配区都创建满了,则需要等待。当arena满了之后就不再创建而是与其他arena共享一个arena,方法为依次给各个arena上锁(查看是否有其他线程正在使用该arena),如果上锁成功(没有其他线程正在使用),则
本章节主要讲解free函数的实现。,该入口函数也在malloc.c的文件中。前几章节我们讲了malloc的具体实现,基本了解了ptmalloc是通过fast bins、unsorted bin、small bin、large bin 和 Top chunk等来管理释放后的内存的。free函数的基本步骤有6步:步骤1:如果是MMAP分配的,则调用munmap_chunk进行chunk的释放操作步骤2
上一章讲解了ptmalloc的内存的分配器状态机malloc_state的实现。分配器状态机主要管理内存分配过程中的各种状态以及空闲内存的管理。ptmalloc的最小内存组织单元是chunk的数据结构。通过chunk的数据结构,用于管理每次前端程序使用malloc函数调用所产生的在堆上分配的内存。chunk的数据结构先来看一下chunk的数据结构:mchunk_prev_size:该字段记录物理相
我们前面几章节讲过,Lua的函数调用有三种类型:C语言闭包函数,C 扩展库API和Lua语言函数。这一章我们主要讲解一下Lua的扩展库Require的实现。







