Bug1024

Bugs are eveyrwhere

Git入门

Git实践

前言 Git是一个快速、可扩展的分布式版本控制系统(Svn是集中式) 分布式版本控制的优点 没有“中央服务器”,每个人的电脑上都是一个完整的版本库 工作的时候不需要联网,因为版本库就在本地,因此可以轻松进行版本管理,而svn服务器挂了或断网时就无法commit 存储内容 svn使用的是增量文件系统(Delt...

PHP线程安全

PHP线程安全实现原理

简述 全局变量为各线程共享,不同的线程引用同一地址空间,如果一个线程修改了全局变量就会影响所有的线程,所以线程安全是指多线程环境下如何安全的获取公共资源。 PHP的SAPI多数是单线程环境,比如cli、fpm、cgi,每个进程只启动一个主线程,这种模式下是不存在线程安全问题的,但是也有多线程的环境,比如Apache,或用户自己嵌入PHP实现的环境,这种情况下就需要考虑线程安全的问题了,因为...

Java 中的锁

Java 锁的种类

自旋锁 自旋锁在JDK1.6之后就默认开启了。基于之前的观察,共享数据的锁定状态只会持续很短的时间,为了这一小段时间而去挂起和恢复线程有点浪费,所以这里就做了一个处理,让后面请求锁的那个线程在稍等一会,但是不放弃处理器的执行时间,看看持有锁的线程能否快速释放。为了让线程等待,所以需要让线程执行一个忙循环也就是自旋操作。 在jdk6之后,引入了自适应的自旋锁,也就是等待的时间不再固定了,而是由...

FPM

PHP-FPM

FPM(FastCGI Process Manager)是PHP FastCGI运行模式的一个进程管理器,从它的定义可以看出,FPM的核心功能是进程管理。FastCGI是Web服务器(如:Nginx、Apache)和处理程序之间的一种通信协议,它是与Http类似的一种应用层通信协议,注意:它只是一种协议! 概述 CGI,通用网关接口,用于WEB服务器和应用程序间的交...

PHP扩展开发

PHP扩展开发入门

PHP生命周期 模块初始化阶段 注册常量 注册核心php.ini 注册GET、POST等全局变量 注册内部核心扩展 根据php.ini注册加载其他扩展 调用扩展的PHP_MINIT() 请求初始化阶段 初始化编译器 初始化EG、全局符号表、includ...

IntelliJ IDEA 快捷键

IntelliJ IDEA for mac

IntelliJ IDEA For Mac 快捷键 根据官方pdf翻译:https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard_Mac.pdf 在 IntelliJ IDEA 中有两个 Mac 版本的快捷键,一个叫做:Mac OS X,一个叫做:Mac OS X 10.5+ 目前都是用:Mac OS X 1...

Nginx入门

Nginx语法及常用配置

特点 1、处理响应请求很快 在正常的情况下,单次请求会得到更快的响应。 2、高并发连接 理论上,Nginx 支持的并发连接上限取决于你的内存,10 万远未封顶。 3、低的内存消耗 在一般的情况下,10000 个非活跃的 HTTP Keep-Alive 连接在 Nginx 中仅消耗 2.5MB 的内存。 4、具有很高的可靠性 Nginx 是一个高可靠性的 Web 服务器,高可...

IO复用

select poll epoll

select 模型 下面是 select 函数接口: int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); select 函数监视的文件描述符分 3 类,分别是 writefds、readfds 和 exceptfds。调用后 se...

Java的List,Map,Set

Java中List,Map,Set的区别

关系 Collection |-List │ |-LinkedList │ |-ArrayList │ |-Vector │ |-Stack | |-Set Map |-Hashtable |-HashMap |-WeakHashMap 介绍 Collection Collecti...

C语法

C语法快速学习

C 语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。 // 单行注释以//开始。(仅适用于C99或更新的版本。) /* 多行注释是这个样子的。(C89也适用。) */ // 常数: #define 关键词 define表示...