Skip to content

Instantly share code, notes, and snippets.

View aiwhj's full-sized avatar
🎯
Focusing

aiwhj aiwhj

🎯
Focusing
  • 云智慧北京科技有限公司
View GitHub Profile
@aiwhj
aiwhj / stream_select.md
Created December 19, 2017 08:45
简单使用 stream_select

最近在研究 Workerman 的源码 发现 socket 协议都是采用php中自带的 stream_socket_server 实现,其中 stream_select 实现方式大致如下

<?php
$local_socket2345 = 'tcp://0.0.0.0:2345';
$local_socket2346 = 'tcp://0.0.0.0:2346';
$_mainSocket2345 = stream_socket_server($local_socket2345, $errno, $errstr);
$_mainSocket2346 = stream_socket_server($local_socket2346, $errno, $errstr);
if (!$_mainSocket2345 || !$_mainSocket2346) {
@aiwhj
aiwhj / wpslinuxfont.md
Created December 24, 2017 05:36
wps for linux 字体缺失

sudo cp mtextra.ttf symbol.ttf WEBDINGS.TTF wingding.ttf WINGDNG2.ttf WINGDNG3.ttf /usr/share/fonts

执行以下命令,生成字体的索引信息:

sudo mkfontscale

sudo mkfontdir 运行fc-cache命令更新字体缓存:

sudo fc-cache

@aiwhj
aiwhj / zend_error.md
Created December 28, 2017 13:01
php 内核的错误处理

记录错误的公共函数

1. 定义

在文件zend.cZEND_API ZEND_COLD void zend_error(int type, const char *format, ...)

2. 使用

例如 PDO 缺少驱动的时候报错

zend_error(E_ERROR, "PDO: driver %s requires PDO API version " ZEND_ULONG_FMT "; this is PDO version %d",
			driver->driver_name, driver->api_version, PDO_DRIVER_API);
@aiwhj
aiwhj / ubuutu_softs.md
Last active December 31, 2017 04:14
ubuntu 必备软件及链接(个人向)
@aiwhj
aiwhj / Unicode-strtoupper.md
Created January 17, 2018 16:05
实现兼容Unicode文字的字符串大小写转换
<?php
function toStrtoupper($str) {
	$strArr = str_split($str, 1);
	$result = '';
	foreach ($strArr as $v) {
		// 获取字符的ascii的值
		$v = ord($v);
		//小写字母的ascii在97到122之间
 if ($v &gt;= 97 &amp;&amp; $v &lt;= 122) {
@aiwhj
aiwhj / is_writeable.md
Created January 18, 2018 02:56
PHP的is_writeable()函数存在Bug,无法准确判断一个目录/文件是否可写,请写一个函数来判断目录/文件是否绝对可写。
<?php
// 其中bug存在两个方面,
// 1、在windowns中,当文件只有只读属性时,is_writeable()函数才返回false,当返回true时,该文件不一定是可写的。
// 如果是目录,在目录中新建文件并通过打开文件来判断;
// 如果是文件,可以通过打开文件(fopen),来测试文件是否可写。
// 2、在Unix中,当php配置文件中开启safe_mode时(safe_mode=on),is_writeable()同样不可用。
// 读取配置文件是否safe_mode是否开启。
if (!function_exists('is_really_writable')) {
    function is_really_writable($file)
@aiwhj
aiwhj / redis-cluster.md
Last active January 23, 2018 08:54
redis-cluster 集群部署

1. 安全模式

参考这篇手册 Redis 集群教程

测试环境 redis 4.0.1

其中有些不明了的地方

文中最小配置如下

@aiwhj
aiwhj / npm config get prefix.md
Created January 31, 2018 02:03
关于npm安装的全局目录

npm install xxx -g 时,模块将被下载安装到全局目录中。

通过 npm config set prefix 设置目录路径。

通过 npm config get prefix 获取当前设置的目录。

命令行下x想直接使用-g安装的组件,需要设置PATH,我的目录是/opt/node/

PATH="/opt/node/bin:$PATH"

@aiwhj
aiwhj / https.md
Created February 6, 2018 09:47
https 通信流程

前提

客户端

操作系统/浏览器 自带了 CA 根证书;

服务器

  1. 数字证书认证机构(Certificate Authority,简称 CA)生成一对公/私钥;
  2. 服务器将自己的域名、公钥等信息提交给 CA 审查;
  3. CA 审查无误,使用私钥把服务器信息的摘要加密,生成的密文就是所谓签名(Signature);
  4. CA 把服务器的信息、签名、有效期等信息集合到一张证书上,颁发给服务器;
@aiwhj
aiwhj / mysql_index.md
Created February 9, 2018 08:07
mysql索引

学习mysql索引时看到这篇文章 数据库索引优化

感觉其中有句话是有问题的

索引中所有列的方向(升序、降序)和order by 字句完全一致

觉得应该这样说

ORDER BY中所有的列必须包含在相同的索引,并且索引的顺序和order by后面的字段的顺序完全一致, 并且所有列的排序方向(升序或者降序)完全一致,(不能混用ASC和DESC)