Go字符串常用的系统函数
字符串在我们程序开发中,使用的是非常多,常用的函数这里记录一下
-
统计字符串的长度,按字节len(str)
1
2
3// golang的编码统一为utf-8,ascii的字符(字母和数字)占一个字节,汉字占用3个字节
str := "hello重庆"
fmt.Println("str len=", len(str)) -
字符串遍历,同时处理有中文的问题,r := []rune(str)
1
2
3
4
5
6str2 := "hello北京"
r := []rune(str2)
fmt.Println(r)
for i := 0; i < len(r); i++ {
fmt.Printf("字符=%c \n", r[i])
} -
字符串转整数,n, err := strconv.Atoi("123")
1
2
3
4
5
6n, err := strconv.Atoi("hello")
if err != nil {
fmt.Println("转换错误", err)
} else {
fmt.Println("转成的结果是", n)
}
BCMath任意精度数学运算-加减乘除
PHP 2个任意精度数字的加减乘除运算,可用BCMath函数,BCMath函数不进行四舍五入计算
BCMath函数的参数
两个操作数加上一个可选的 [int $scale]精确到小数点后几位,比如加法实例如下
1 | bcadd(string $num1, string $num2, ?int $scale = null): string |
计算结果返回的也是 string
BCMath函数如下
1 | bcadd — 两个任意精度数字的加法计算 |
范例
bcadd() 两个任意精度数字的加法计算
1 | <?php |
PHP取整数函数常用的四种方法
-
直接取整,舍弃小数,保留整数:intval()
intval: 小数转成整数型态
1
2
3intval(3.14159); // 3
intval(3.64159); // 3
intval('ruesin'); // 0
-
四舍五入取整:round()
根据参数2指定精度将参数1进行四舍五入。参数2可以是负数或零(默认值)
1
2
3
4
5
6round(3.14159); // 3
round(3.64159); // 4
round(3.64159, 0); // 4
round(3.64159, 2); // 3.64
round(5.64159, 3); // 3.642
round(364159, -2); // 364200
-
向上取整,有小数就加1:ceil()
返回不小于 value 的下一个整数,value 如果有小数部分则进一位,分页计算页数时经常会用到
1
2ceil(3.14159); // 4
ceil(3.64159); // 4
-
向下取整:floor()
返回不大于 value 的下一个整数,将 value 的小数部分舍去取整
1
2floor(3.14159); // 3
floor(3.64159); // 3
new static和new self
在一个类中常见的是new self()
操作,代表返回自身类的实例
当父类中存在方法,然后每个子类继承于父类,调用这个方法会返回自身的实例化对象
1 | <?php |
那么当子类调用create时,返回是的Person类的实例
如果调用父类中返回实例的方法,要返回当前子类的实例化对象,那么我们可以使用new static()
来实现
1 | <?php |
那么当子类调用create时,返回是的Subclass类的实例
nginx访问量统计
根据访问IP统计UV
1 | awk '{print $1}' access.log|sort | uniq -c |wc -l |
统计访问URL统计PV
1 | awk '{print $7}' access.log|wc -l |
查询访问最频繁的URL
1 | awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more |
查询访问最频繁的IP
1 | awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more |
根据时间段统计查看日志
1 | cat access.log| sed -n '/06\/Mar\/2021:21/,/06\/Mar\/2021:22/p'|more |
ThinkPHP3.2-子查询
从TP 3.0版本开始新增了子查询的支持,有两种使用方式
一、使用select
方法,
1 | // 构造子查询 |
当select方法的参数为false的时候,表示不进行查询只是返回构建SQL
二、使用buildSql
方法
1 | // 构造子查询 |
调用buildSql
方法后不会进行实际的查询操作,而只是生成该次查询的SQL
语句,然后我们直接在后续的查询中直接调用
利用子查询进行查询
1 | M()->table($subQuery.' a')->where()->order()->select(); |
构建的子查询SQL
可用于TP的连贯操作方法,比如:table、where等等
PHP扩展开发-创建一个扩展
1 | 1. cd php-src/ext |
CentOS8网络设置
查看网络配置
1 | $ ifconfig |
CentOS7默认已不再安装此命令,很多功能可以使用 ip addr
命令替代
如果系统自带或者已安装则可以忽略一下步骤
安装ifconfig
1 | $ yum install net-tools |
生成网卡UUID
1 | $ uuidgen enp0s8 |
查看网卡UUID
1 | $ nmcli con show |
查看Mac地址
1 | $ nmcli device show enp0s8 |
enp0s8网卡配置不存在的情况
创建配置
1 | $ cd /etc/sysconfig/network-scripts |
1 | TYPE=Ethernet |
重新加载网络配置
1 | $ nmcli con reload |
然后使用 ifconfig
查看一下网络配置
之前没有配置enp0s8网卡,现在就已经配置好了,就可以和宿主机通信了