-> PHP踩坑笔记

JSON小坑

PHP的 json_encode()json_decode() 是特别好用的两个函数。

一般来说,复杂数据结构类型才需要转化为json字符串来传输。此时,比较容易忽略的是,当你把一个正常字符串传入 json_encode(),会返回什么呢???报错?还是不变?

1
2
3
4
5
6
7
$rawStr = "hello world";

$encodeStr = json_encode($rawStr);

echo $encodeStr . PHP_EOL; // "hello world"

// !!! 请注意,是 `"hello world"`,而不是 `hello world`

是的,你没看错,给一个字符串json_encode,它会给这个字符串开头和结尾加上双引号。

-> PHP花里胡哨

类方法/属性动态调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class A
{
public $two_closure = NULL;

public function __construct()
{
$this->two_closure = function ($name) {
echo "this is closure, and the name is {$name}" . PHP_EOL;
};
}

public function one_step()
{
echo "this is one" . PHP_EOL;
}
}

// 动态调用常规方法
$num = 'one';
$methodName = "{$num}_step";
(new A())->$methodName(); // this is one


// 动态调用属性(当属性是闭包时)
$num = 'two';
$propName = "{$num}_closure";
((new A())->$propName)('haha'); // this is closure, and the name is haha

-> socket编程随笔

创建一个文件描述符

  1. 指定协议族: AF_UNIX、AF_INET、AF_INET6…
  2. 连接类型: SOCK_STREAM、SOCK_DGRAM、SOCK_RAW…
  3. 协议: IPPROTO_TCP、IPPROTO_UDP…

-> DS之树

前言

树的定义

有且只有一个称之为根的结点
除了根结点以外的其余结点可分为m(m>0)个互不相交的有限集T1,T2,T3,T4…,Tm,其中每一个集合本身又是一颗树,并且称之为根的子树

阅读更多

-> Rust学习笔记

标准宏

println!()用法

1
2
3
4
5
6
7
8
9
10
11
println!("{}", 1);      // 打印Display
println!("{:o}", 9); // 打印八进制
println!("{:x}", 255); // 小写的十六进制
println!("{:X}", 255); // 大写十六进制
println!("{:p}", &0); // 打印指针
println!("{:b}", 15); // 打印二进制
println!("{:e}", 10000f32); // 小写科学计数法
println!("{:E}", 10000f32); // 大写科学计数法

println!("{:?}", "test"); // 打印Debug
println!("{:#?}", ("test1", "test2") // 格式化的Debug打印

阅读更多

-> Nginx搭建笔记

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 下载
wget http://nginx.org/download/nginx-1.16.1.tar.gz

// 解压
tar -xf nginx-1.16.1.tar.gz
cd nginx-1.16.1

// (Ubuntu 18.04.4 LTS)依赖环境
- sudo apt-get install libpcre3-dev
- sudo apt-get install zlib1g-dev
- sudo apt-get install libssl-dev

// 安装
./configure --with-http_ssl_module
// -- 此命令完成后会出现如下输出
// Configuration summary
// + using system PCRE library
// + using system OpenSSL library
// + using system zlib library

make
sudo make install

阅读更多