php laravel ioc 服务容器      2018-06-07
Container可以说是Laravel框架的核心。文档上称其为『服务容器』,顾名思义通过维护一个类容器来实现类的IoC控制反转。 ## ioc实例 在解读源码前需要了解IoC。Ioc全称Inversion of Control,意为控制反转。 这里用一个最常见的支付场景来举例。 ```php //支付类 class Pay{ private $payway;
php 进程 进程通信      2017-09-18
### 一,引言 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。换句话说就是,在系统调度多个cpu的时候,一个程序的基本单元。进程对于大多数的语言都不是一个陌生的概念,作为"世界上最好的语言PHP"当然也例外。 ### 二,环境 php中的进程是以扩展的形式来完成。通过这些扩展,我们能够很轻松的完成进程的一系列动作。 - pcntl扩展:主要的进程扩展,完成进程创建于等待操作
php 函数 二进制      2017-04-18
摘要: PHP作为一门为web而生的服务器端开发语言,被越来越多的公司所采用。其中不乏大公司,如腾迅、盛大、淘米、新浪等。在对性能要求比较高的项目中,PHP也逐渐演变成一门前端语言,用于访问后端接口。或者不同项目之间需要共享数据的时候,通常可以抽取出数据层,通过PHP来访问。

PHP作为一门为web而生的服务器端开发语言,被越来越多的公司所采用。其中不乏大公司,如腾迅、盛大、淘米、新浪等。在对性能要求比较高的项目中,PHP也逐渐演变成一门前端语言,用于访问后端接口。或者不同项目之间需要共享数据的时候,通常可以抽取出数据层,通过PHP来访问。

写在前面的话

本文介绍的是通过二进制数据包的方式通信,演示语言为PHP和Golang。PHP提供了pack/unpack函数来进行二进制打包和二进制解包。在具体讲解之前,我们先来了解一些基础知识。

什么是字节序

在不同的计算机体系结构中,对于数据(比特、字节、字)等的存储和传输机制有所不同,因而引发了计算机领域中一个潜在但是又很重要的问题,即通信双方交流的信息单元应该以什么样的顺序进行传送。如果达不成一致的规则,计算机的通信与存储将会无法进行。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:大端(Big-endian)和小端(Little-endian)。这里所说的大端和小端即是字节序。

MSB和LSB

  • MSB是Most Significant Bit/Byte的首字母缩写,通常译为最重要的位或最重要的字节。它通常用来表示在一个bit序列(如一个byte是8个bit组成的一个序列)或一个byte序列(如word是两个byte组成的一个序列)中对整个序列取值影响最大的那个bit/byte。

  • LSB是Least Significant Bit/Byte的首字母缩写,通常译为最不重要的位或最不重要的字节。它通常用来表明在一个bit序列(如一个byte是8个bit组成的一个序列)或一个byte序列(如word是两个byte组成的一个序列)中对整个序列取值影响最小的那个bit/byte。

  • 对于一个十六进制int类型整数0x12345678来说,0x12就是MSB,0x78就是LSB。而对于0x78这个字节而言,它的二进制是01111000,那么最左边的那个0就是MSB,最右边的那个0就是LSB。

大端序

  • 大端序又叫网络字节序。大端序规定高位字节在存储

字符串 ascii php 函数      2017-04-18
最近遇到字符串编码相关的一些问题(比如部分字符串echo后显示为乱码,需要用到bin2hex转换为16进制显示),发现对部分ascii相关的字符串函数还是理解不够透彻,所以在此整理记录下。 ##ord函数 ```ord(sting) ``` ord()函数用来取字符串的**首个字符**的 ASCII 值 ##chr函数 ``` string chr() ``` chr()函数从指定的 ASCI
php laravel thrift      2017-04-17
## 前言 最近在项目中遇到需要跨系统调用的需求,找了很多rpc框架对比,因为其他部分项目使用了golang语言,为了考虑日后系统间调用更加灵活,所以决定使用thrift框架。 ## Thrif简介 Thrift是一个支持跨语言(支持但不限于php,golang,java,c++,Ruby,Node.js等)支持远程调用rpc的软件框架. Thrift定义了一个简单的数据类型和服务接口标