穷则独善其身,达则兼济天下

工匠之路

分类 文摘搬运 下的文章

基于CMake构建标准的Go编译及打包框架

一. 背景描述为了简化团队内部中间件的编译及打包和方便运维伙伴的线上环境部署过程 , 我们开始尝试使用标准的rpm安装包来进行线上的环境部署,虽然制作rpm安装包可以采用很多途径 , 但是我们选择采用CMake方式 , 采用这种方式的优点如下:利用CMake 可以构建出很强大的自动编译系统.CMake在编译周期结束后,支持rpm , zip等格式的自动打包.下面的内容从两个方面来阐述: 利用...

设计文档:PulseFlow_IPC_Backend

PulseFLow还有一部分功能是集中在信息后端的,当PHP引擎发送信息给后端程序后,后端程序再把信息进行组装,发给下一级程序。一 . 组成部分后端程序,分为以下几个部分:配置中心:(配置文件 + 配置解析器)(采用ini文件配置格式)。进程管理器:维持进程池,保持进程池的存活量。信息发送: 信息组装 + 信息发送(UDP发送)二. 工作流程2.1 总体流程图2.2 系统模型(进程池模型)后...

阅读笔记:指针数组和数组指针---C/C++中int *p[4]和int (*p)[4]的区别

简单介绍C/C++中的这两种书写方法实在是很像,但是它们的含义有很大的不同,所以一定要能清晰地辨别它们。简单地说,int *p[4] 是指针数组,int(*p)[4] 是指向数组的指针指针数组:是一个元素全为指针的数组;数组指针:可以理解为指针,只是这个指针类型不是int而是 int[4] 类型的数组int *p[4],p是一个指针数组,每一个指向一个int型的,等价于 (int *) (p...
July 9, 2018

PHP扩展开发2.3:变量在内核中的实现

背景描述所有的编程语言都要提供一种数据的存储与检索机制,PHP也不例外。其它语言大都需要在使用变量之前先定义,并且它的类型也是无法再次改变的,而PHP却允许程序猿自由的使用变量而无须提前定义,甚至可以随时随意的对已存在的变量转换成其它任何PHP支持的数据类型。在程序在运行的时候,PHP还会自动的根据需求转换变量的类型。我认为阅读本书的人都已经是标准的PHP程序猿了,所以你们也肯定体验过PHP...
July 9, 2018

编程笔记:C语言回调函数

在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。假设我们要使用一个排序函数来对数组进行排序,那么在主程序(Main program)中,我们先通过库,选择一个库排序函数(Library function)。但排序...
July 8, 2018

源码阅读:PHP TSRM 线程安全管理器

TSRM 简介在查看php源代码或开发php扩展的时候,会出现大量 TSRMLS_ 宏字样在函数参数的位置,这些宏就是Zend为线程安全机制所提供的(Zend Thread Safety,简称ZTS)用于保证线程的安全 , 是防止多线程环境下以模块的形式加载并执行PHP解释器,导致内部一些公共资源读取错误,而提供的一种解决方法。什么时候需要用 TSRM只要服务器是多线程环境并且PHP以模块的...

PHP扩展开发2.2:线程安全

背景介绍线程安全是编程中的术语,指某个函数、函数库在多线程环境中被调用时,能够正确地处理多个线程之间的共享变量,使程序功能正确完成。一般来说,线程安全的函数应该为每个调用它的线程分配专门的空间,来储存需要单独保存的状态(如果需要的话),不依赖于“线程惯性”,把多个线程共享的变量正确对待(如,通知编译器该变量为“易失(volatile)”型,阻止其进行一些不恰当的优化),而且,线程安全的函数一...