King's blog


  • 分类

  • 标签

  • 归档

  • 关于

  • 搜索

Go数组与切片

发表于 2022-01-18 | 更新于: 2022-01-18 | 分类于 Go

Go字符串常用的系统函数

发表于 2022-01-17 | 更新于: 2022-01-17 | 分类于 Go

字符串在我们程序开发中,使用的是非常多,常用的函数这里记录一下

  1. 统计字符串的长度,按字节len(str)

    1
    2
    3
    // golang的编码统一为utf-8,ascii的字符(字母和数字)占一个字节,汉字占用3个字节
    str := "hello重庆"
    fmt.Println("str len=", len(str))
  2. 字符串遍历,同时处理有中文的问题,r := []rune(str)

    1
    2
    3
    4
    5
    6
    str2 := "hello北京"
    r := []rune(str2)
    fmt.Println(r)
    for i := 0; i < len(r); i++ {
    fmt.Printf("字符=%c \n", r[i])
    }
  3. 字符串转整数,n, err := strconv.Atoi("123")

    1
    2
    3
    4
    5
    6
    n, err := strconv.Atoi("hello")
    if err != nil {
    fmt.Println("转换错误", err)
    } else {
    fmt.Println("转成的结果是", n)
    }
    阅读全文 »

Go语言核心编程

发表于 2022-01-12 | 更新于: 2022-01-12 | 分类于 Go

三、Golang 变量

3.1 变量的介绍

3.1.1 变量的概念

变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,同理,通过变量名可以访问到变量(值)

3.1.2 变量的使用步骤
  1. 声明变量(也叫:定义变量)
  2. 非变量赋值
  3. 使用变量
阅读全文 »

BCMath任意精度数学运算-加减乘除

发表于 2021-09-24 | 更新于: 2021-09-24 | 分类于 PHP

PHP 2个任意精度数字的加减乘除运算,可用BCMath函数,BCMath函数不进行四舍五入计算

BCMath函数的参数

​ 两个操作数加上一个可选的 [int $scale]精确到小数点后几位,比如加法实例如下

1
bcadd(string $num1, string $num2, ?int $scale = null): string

计算结果返回的也是 string

BCMath函数如下

1
2
3
4
5
6
7
8
9
10
bcadd — 两个任意精度数字的加法计算
bccomp — 比较两个任意精度的数字
bcdiv — 两个任意精度的数字除法计算
bcmod — 任意精度数字取模
bcmul — 两个任意精度数字乘法计算
bcpow — 任意精度数字的乘方
bcpowmod — 求高精度数字乘方求模
bcscale — 设置/获取所有 bc math 函数的默认小数点保留位数
bcsqrt — 任意精度数字的二次方根
bcsub — 两个任意精度数字的减法

范例

bcadd() 两个任意精度数字的加法计算

1
2
3
4
5
6
7
8
9
<?php

$a = '1.234';
$b = '5';

echo bcadd($a, $b); // 6
echo bcadd($a, $b, 4); // 6.2340

?>

PHP取整数函数常用的四种方法

  1. 直接取整,舍弃小数,保留整数:intval()

    intval: 小数转成整数型态

    1
    2
    3
    intval(3.14159);  // 3
    intval(3.64159); // 3
    intval('ruesin'); // 0
  1. 四舍五入取整:round()

    根据参数2指定精度将参数1进行四舍五入。参数2可以是负数或零(默认值)

    1
    2
    3
    4
    5
    6
    round(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. 向上取整,有小数就加1:ceil()

    返回不小于 value 的下一个整数,value 如果有小数部分则进一位,分页计算页数时经常会用到

    1
    2
    ceil(3.14159);  // 4
    ceil(3.64159); // 4
  1. 向下取整:floor()

    返回不大于 value 的下一个整数,将 value 的小数部分舍去取整

    1
    2
    floor(3.14159);    // 3
    floor(3.64159); // 3

new static和new self

发表于 2021-09-18 | 更新于: 2021-09-18 | 分类于 PHP

在一个类中常见的是new self()操作,代表返回自身类的实例

当父类中存在方法,然后每个子类继承于父类,调用这个方法会返回自身的实例化对象

1
2
3
4
5
6
7
8
9
10
11
12
<?php
class Person
{
function create() {
return new self();
}
}
class Subclass extends Person
{

}
(new Subclass())->create(); // 返回Person的实例

那么当子类调用create时,返回是的Person类的实例

如果调用父类中返回实例的方法,要返回当前子类的实例化对象,那么我们可以使用new static()来实现

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Person
{
function create() {
return new static();
}
}

class Subclass extends Person
{

}
(new Subclass())->create(); // 返回Subclass的实例

那么当子类调用create时,返回是的Subclass类的实例

PHP使用rabbitMQ

发表于 2021-09-15 | 更新于: 2021-09-15

nginx访问量统计

发表于 2021-09-06 | 更新于: 2021-09-06 | 分类于 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-子查询

发表于 2021-07-30 | 更新于: 2021-07-30 | 分类于 ThinkPHP

从TP 3.0版本开始新增了子查询的支持,有两种使用方式

一、使用select方法,

1
2
// 构造子查询
$subQuery = M()->field('id,name')->table('tablename')->group('field')->where($where)->order('status')->select(false);

当select方法的参数为false的时候,表示不进行查询只是返回构建SQL

二、使用buildSql方法

1
2
// 构造子查询
$subQuery = M()->field('id,name')->table('tablename')->group('field')->where($where)->order('status')->buildSql();

调用buildSql方法后不会进行实际的查询操作,而只是生成该次查询的SQL语句,然后我们直接在后续的查询中直接调用

利用子查询进行查询

1
M()->table($subQuery.' a')->where()->order()->select();

构建的子查询SQL可用于TP的连贯操作方法,比如:table、where等等

PHP扩展开发-创建一个扩展

发表于 2021-05-31 | 更新于: 2021-05-31
1
2
3
4
5
6
7
8
1. cd php-src/ext
2. /ext_skel -extname=test
3. cd test
4. vim config.m4
5. phpize config.m4生成configure
6. configure生成Makefile
7. make install
8. vim php.ini extension=test.so

CentOS8网络设置

发表于 2021-05-18 | 更新于: 2021-05-18 | 分类于 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
2
3
$ cd /etc/sysconfig/network-scripts
$ cp ifcfg-enp0s3 ifcfg-enp0s8
$ vim vi ifcfg-enp0s8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s8 # 网卡名称
UUID=7384f6a2-34c2-4e01-9a9b-3072ea71e766 # 修改为新生成的网卡UUID
DEVICE=enp0s8 # 网卡名称
ONBOOT=yes

重新加载网络配置

1
$ nmcli con reload

然后使用 ifconfig 查看一下网络配置

之前没有配置enp0s8网卡,现在就已经配置好了,就可以和宿主机通信了

123…6
King's

King's

60 日志
15 分类
33 标签
RSS
© 2020 — 2022 King's
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.2