自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 k8s的安装及使用(三)

k8s的安装及使用(三)本系列文章使用rancher安装k8s第三章 使用k8s部署redis文章目录k8s的安装及使用(三)创建projects/namespaces添加数据卷部署项目创建projects/namespaces添加数据卷部署项目这里的映射文件在第二章里面有说明,不懂得可以看回看第二章部署项目篇到此结束,下一篇 待续如果有错误的地方, 欢迎指正, 一起学习一起进步...

2020-12-21 15:45:05 193

原创 k8s的安装及使用(二)

k8s的安装及使用(二)本系列文章使用rancher安装k8s第二章 使用nfs多主机文件共享文章目录k8s的安装及使用(二)安装nfs安装nfsyum install -y nfs-utils //安装systemctl enable nfs.service //开机自启main机器编辑需要共享的文件夹以及权限,加入图片中的内容vi /etc/exports注意: redis里面有文件夹n1, n1里面有conf,data,logs三个文件夹,用来第三章的redis部署,redis

2020-12-21 15:31:19 139

原创 docker 安装--阿里云镜像

docker 安装–阿里云镜像文章目录docker 安装--阿里云镜像一、安装软件包二、设置稳定存储库三、安装最新版四、配置阿里云镜像五、启动及开机自启一、安装软件包这里使用的是centos7环境sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2二、设置稳定存储库sudo yum-config-manager \ --add-repo \ https://download.dock

2020-12-21 10:59:30 1082

原创 k8s的安装及使用(一)

k8s的安装及使用(一)本系列文章使用rancher安装k8s第一章k8s的安装文章目录k8s的安装及使用(一)准备工作一、开放服务器权限二、开始安装三、安装完成准备工作准备至少两台虚拟机, 这里以两台举例, centos7环境,分别安装docker如果不会安装docker请参考我的另一篇文章: docker的安装一、开放服务器权限为了减少不必要的麻烦, 这里开放所有权限, 分别执行以下命令systemctl stop firewalld && systemctl di

2020-12-21 10:52:22 269

原创 go数组 切片 字符串之间的联系

文章目录数组一、数组的定义的几种方式二、数组支持的类型三、数组的遍历字符串一、字符串结构切片一、切片结构二、切片定义方式三、切片遍历数组 、切片元素添加删除数组一、数组的定义的几种方式代码如下(示例):var a [3]int // 定义长度为3的int型数组, 元素全部为0var b = [...]int{1, 2, 3} // 定义长度为3的int型数组, 元素为 1, 2, 3var c = [...]int{2: 3, 1: 2}

2020-11-03 14:46:30 103

原创 redis过期时间策略

redis过期时间策略定期删除redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key。定期删除策略Redis 默认会每秒进行十次过期扫描(100ms一次),过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。从过期字典中随机 20 个 key;删除这 20 个 key 中已经过期的 key;如果过期的 key 比率超过 1/4,那就重复步骤 1;惰性删除除了定期遍历之外,它还会使用惰性策略来删除过期的

2020-09-11 10:09:41 107

原创 swoole框架(自研)

swoole框架(自研)github地址: https://github.com/lsjhtang/swoole-http框架内容: Ioc,Di,注解,连接池,开发者模式支持代码热更新;开始Http Server start[root@buddha buddha]# php boot {start|stop|restart}Route使用注解路由/** * @RequestMapping(value="/user/{uid:\d+}",method={"GET"}) */p

2020-09-10 17:37:14 256 2

原创 mysql四种子查询

mysql子查询**标量子查询:(子查询只有一个字段一条记录) **SELECT * FROM article WHERE uid = (SELECT uid FROM user WHERE status=1 ORDER BY uid DESC LIMIT 1)//例如: SELECT * FROM article WHERE uid = 1列子查询 :(子查询只有一个字段但有多条记录) SELECT * FROM article WHERE uid IN(SELECT uid FRO

2020-09-10 17:06:56 221

原创 go掌握defer的7个知识点

defer的7个知识点提纲知识点 1: defer 的执行顺序知识点 2:defer 与 return 谁先谁后知识点 3:函数的返回值初始化与 defer 间接影响知识点 4:有名函数返回值遇见 defer 情况知识点 5:defer 遇见 panic知识点 6:defer 中包含 panic知识点 7:defer 下的函数参数包含子函数知识点 1:defer 的执行顺序package mainimport "fmt"func main() { defer f

2020-08-11 09:30:51 98

原创 一致性哈希算法问题

一致性哈希算法问题原理一句话概括一致性哈希:就是普通取模哈希算法的改良版,哈希函数计算方法不变,只不过是通过构建环状的 Hash 空间代替普通的线性 Hash 空间。具体首先,选择一个足够大的Hash空间(一般是 0 ~ 2^32)构成一个哈希环。然后,对于缓存集群内的每个存储服务器节点计算 Hash 值,可以用服务器的 IP 或 主机名计算得到哈希值,计算得到的哈希值就是服务节点在 Hash 环上的位置。最后,对每个需要存储的数据 key 同样也计算一次哈希值,计算之后的哈希也映射到环上

2020-08-03 11:17:08 391

原创 mysql事务隔离级别,Redo/Undo机制,锁

mysql事务的理解ACID简介在Mysql中事务的四大特性主要包含:原子性(Atomicity)、一致性(Consistent)、隔离性(Isalotion)、持久性(Durable),简称为ACID。原子性是指事务的原子性操作,对数据的修改要么全部执行成功,要么全部失败,实现事务的原子性,是基于日志的Redo/Undo机制。一致性是指执行事务前后的状态要一致,可以理解为数据一致性。隔离性侧重指事务之间相互隔离,不受影响,这个与事务设置的隔离级别有密切的关系。持久性则是指在一个事务提交后,这

2020-07-17 16:50:39 428

原创 mysql索引失效的常见原因

mysql索引失效问题查询字段与索引字段类型不符在查下条件字段上使用数学运算先看表结构跟索引字段查询字段与索引字段类型不符(主键不受类型影响)例如: 数据库字段为string 查询的时候使用int类型在查下条件字段上使用运算,函数例如: 在查询字段使用数学运算...

2020-07-13 10:33:18 387

原创 nginx与php-fpm关系

nginx与php-fpm关系概念PHP-FPM 是一个多进程的 FastCGI 管理程序,是绝大多数 PHP 应用所使用的运行模式。运行关系假设我们使用 Nginx 提供 HTTP 服务(Apache 同理),所有客户端发起的请求最先抵达的都是 Nginx,然后 Nginx 通过 FastCGI 协议将请求转发给 PHP-FPM 处理,PHP-FPM 的 Worker 进程 会抢占式的获得 CGI 请求进行处理,这个处理指的就是,等待 PHP 脚本的解析(处理php代码逻辑),等待业务处理

2020-06-24 14:53:49 419

原创 mysql索引方式及索引种类区别

mysql索引方式及索引种类区别索引方式哈希Hash索引,其检索效率非常高的一种精确定位索引。Hash索引不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引,它会将计算出的Hash值和对对应的行指针信息记录在 Hash表中。但是虽然Hash效率很高但是同样也有很多的弊端存在和限制存在。因为Hash 索引比较的是进行 Hash 运算之后的 Hash 值,所以它只能用

2020-06-19 19:51:31 367

原创 go字符串整型互转小技巧

类型转换小技巧byte转数字s="12345"num:=int(s[0]-'0') // 得到整型 1str:=string(s[0]) // 得到字符串 "1"b:=byte(num+'0') // '1'fmt.Printf("%d%s%c\n", num, str, b) // 111字符串转数字num,_:=strconv.Atoi()//转整型str:=strconv.Itoa()//转字符串...

2020-06-19 11:40:59 187

原创 go变量,代码块作用域

go变量作用域局部变量全局变量代码块变量package mainimport "fmt"var a int = 20;//全局变量. 在这个代码生命周期里面,任何地方可以调用func main() { var a int = 10//局部变量,优先级大于全局变量,函数里面有限调用局部变量 { var b int = 1//代码块变量,只能在代码块里面或者代码块内层调用 { var c int = 2 fmt.Print(a,b)//输出10,1

2020-06-18 19:16:43 298

原创 go 数组,切片删除元素

go 数组,切片删除元素删除开头的元素可以直接移动数据指针:a = []int{1, 2, 3}a = a[1:] // 删除开头1个元素a = a[N:] // 删除开头N个元素也可以不移动数据指针,但是将后面的数据向开头移动,可以用 append 原地完成(所谓原地完成是指在原有的切片数据对应的内存区间内完成,不会导致内存空间结构的变化):a = []int{1, 2, 3}a = append(a[:0], a[1:]...) // 删除开头1个元素a = append(a[

2020-06-18 18:57:48 5311 3

原创 go反射见解

go反射Go 语言里有个反射三定律,是你在学习反射时,很重要的参考:Reflection goes from interface value to reflection object.Reflection goes from reflection object to interface value.To modify a reflection object, the value must be settable.翻译一下,就是:反射可以将接口类型变量 转换为“反射类型对象

2020-06-18 15:37:05 90

原创 php实现连接池

php实现连接池以redis连接池为例<?phpclass PHPRedisPool extends RedisPool{ protected function newRedis() { $redis=new \Redis(); $redis->connect('127.0.0.1', 6379); return $redis; }}<?phpabstract class RedisPool{

2020-06-17 11:53:34 424

原创 redis使用lua脚本保证原子性

redis使用lua脚本保证原子性Eval的使用语法: EVAL script numkeys key [key ...] arg [arg ...]首先大家一定要知道eval的语法格式,其中:script: 你的lua脚本numkeys: key的个数key: redis中各种数据结构的替代符号arg: 你的自定义参数示例:eval "return redis.call('mset',KEYS[1],ARGV[1],KEYS

2020-06-17 11:34:02 1049

原创 mysql sql语句强制使用索引

mysql强制使用索引例如: 强制使用 idx_created索引select customer,count(1) c from upv_1 force index(idx_created) where created between "2015-07-06" and "2015-07-07" group by customer having c > 15 order by c desc

2020-06-15 10:38:37 788

原创 sql语句指定数据置顶

sql语句指定数据置顶例如: 字段为1,6的数据置顶,其他字段根据field2排序select * from table order by field1 in(1,4,6) and field1<>4 desc, field2 desc

2020-06-15 10:36:41 2081

原创 mysql插入如果存在则更新语句

mysql插入如果存在则更新语句insert into table(a,b,c) values(1,2,3) on duplicate key update a=valuse(a)

2020-06-15 10:34:55 402

原创 linux跨主机文件拷贝

linux跨主机文件拷贝scp -r root@网站所在内网IP地址:/home/wwwroot/拷贝网站目录 /当前拷贝过来的网站目录scp -r [email protected]:/home/wwwroot/test /home

2020-06-15 10:30:33 232

原创 centos使用定时任务

centos使用定时任务查看你的任务 crontab -l编辑你的任务 crontab -e0,15,30,45 18-06 * * */usr/bin/curl http://aibookchina.com/home/index/abc第1列分钟0~59第2列小时0~23(0表示子夜)第3列日1~31第4列月1~12第5列星期0~7(0和7表示星期天)第6列要运行的命令星号(*):代表每的意思,例如month字段如果是星号,则表示每月都执行该命令操作。逗号(,):表示分隔时段

2020-06-15 10:26:02 150

原创 虚拟机centos文件夹共享到windows

共享centos文件夹到windows方法一下载安装 yum install samba -y设置访问用户名跟密码,默认用root用户smbpasswd -a root修改配置文件 vim /etc/samba/smb.conf重启服务 systemctl restart smb.service在windows输入网络地址; 输入最开始设置的用户名root 密码123456方法二docker镜像网站:https://hub.docker.

2020-06-15 10:22:31 287

原创 VM虚拟机共享windows文件夹

虚拟机共享windows文件夹安装VMware ToolsVMware Workstation菜单栏中,选择“虚拟机”,”安装VMware Tools…“。(注:此时下方可能会弹出“确保您已登录客户端”之类的提醒忽略就好了。)执行下面命令挂载VMware Tools安装程序到/mnt/cdrom/。mkdir /mnt/cdrommount /dev/cdrom /mnt/cdrom看到…mounting read-only,表示挂载成功。解压安装VMware Tool

2020-06-15 10:14:45 364

原创 tcp协议,滑动窗口,重传,流量控制,拥塞控制

tcp协议,滑动窗口,重传,流量控制,拥塞控制重传机制超时重传快速重传SACKD-SACK详细内容由于图片太多上传比较麻烦, 下面是我的笔记链接,有需要的小伙伴可以看一下http://note.youdao.com/noteshare?id=b084fb209b818ef6f1cb5b11be1fa2ea&sub=BDE15D6937C743588F7730F0BAE59F09...

2020-06-12 09:51:16 79

原创 go 简单计数器

go 简单计数器限流器定义type RequestLimitService struct { Interval time.Duration // 设置时间窗口大小 MaxCount int // 窗口内能支持的最大请求数(阈值) Lock sync.Mutex // 并发控制锁 ReqCount int // 当前窗口请求数(计数器)}实现限流器的两个核心方法// 判断当前窗口请求数是否大于最大请求数func (reqLimit *Reques

2020-06-12 09:30:14 2625

原创 go漏桶算法

go漏桶算法 伪代码// 定义漏桶结构type leakyBucket struct { timestamp time.Time // 当前注水时间戳 (当前请求时间戳) capacity float64 // 桶的容量(接受缓存的请求总量) rate float64// 水流出的速度(处理请求速度) water float64 // 当前水量(当前累计请求数)}// 判断是否加水(是否处理请求)func addWater(bucket leakyBucket) bool {

2020-06-12 09:21:38 567

原创 go令牌桶算法

go令牌桶算法// 定义令牌桶结构type tokenBucket struct { timestamp time.Time // 当前时间戳 capacity float64 // 桶的容量(存放令牌的最大量) rate float64// 令牌放入速度 tokens float64 // 当前令牌总量}// 判断是否获取令牌(若能获取,则处理请求)func getToken(bucket tokenBucket) bool { now := time.Now()

2020-06-12 09:19:50 358

原创 git常用详细命令

git常用命令git init 本地库初始化git config --global user.name [AAA] 配置本地全局git用户名git config --global user.email [邮箱地址] 配置本地全局git邮箱git add 文件或文件名 添加文件到暂存区git commit -m ‘’ ‘提交注释’ 提交暂存区到仓库git commit --amend --no-

2020-06-08 17:23:55 155

原创 php使用 Trait 实现多继承

php使用 Trait 实现多继承通过在类中使用use 关键字,声明要组合的Trait名称,具体的Trait的声明使用Trait关键词,Trait不能实例化Trait中的方法会覆盖 父类中的同名方法,而本类会覆盖Trait中同名方法(优先级当前类>trait父类)Trait中的属性跟当前类不能相同有的属性名,(属性名跟属性值一样除外,父类private属性除外)当不同的trait中,却有着同名的方法或属性,会产生冲突,可以使用insteadof或 as进行解决, insteadof 是进行

2020-06-08 17:20:43 124

原创 PHP抽象类和接口差异

PHP抽象类和接口的区别抽象类1.抽象的类不能被实例化。2.抽象类可以有成员属性。3.抽象类可以有普通方法。4.抽象类可以实现接口(若干个),且可以不实现其中的方法(继承抽象类的普通类必须实现接口)。5.抽象方法没有方法体,普通方法可以写逻辑。6.抽象类可以被抽象类继承,且不能重写抽象父类的抽象方法;7.抽象类可以有构造函数。8.定义抽象类跟抽象方法使用关键字 abstract接口1.对接口的使用是通过关键字implements。2.接口中定义的所有方法都必须是public类

2020-06-08 17:17:09 111

原创 php实现字符串反转

php实现字符串反转function revstr($str) { $len = strlen($str); if ($len <= 1) return $str; $median = intval($len/2); for ($i = 0; $i<$median; $i++) { $a = $str{$i}; $str{$i} = $str{$len-$i-1}; $str{$len-$i-1} = $a;

2020-06-06 11:30:36 144

原创 PHP简易实现冒泡排序

PHP实现冒泡排序function sorts(array $arr) { if (count($arr) <= 1) return $arr; for ($i=0; $i<count($arr); $i++) { for ($j=$i+1; $j<count($arr); $j++) { $a = $arr[$i]; if ($arr[$i] > $arr[$j]) {

2020-06-06 11:27:43 139

原创 简易php装饰器模式

简易php装饰器模式function B($func){ return function ($param) use ($func){ $param = 'test_'.$param; return $func($param); };} $core = function ($param) { return $param; }; echo B($core)('124');输出:test_124...

2020-06-06 11:24:56 98

原创 使用docker安装php扩展

docker安装php扩展第一种方式(需要自己下载扩展)curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/5.1.2.tar.gztar xfz /tmp/redis.tar.gzrm -r /tmp/redis.tar.gzmkdir -p /usr/src/php/extmv phpredis-5.1.2/usr/src/php/ext/redisdocker-php-

2020-06-06 11:17:54 217

原创 Go中struct结构体实现继承

Go中struct结构体实现’‘继承’’第一种 使用包含的方式package mainimport ( "fmt")type person struct{}func (p *person) speak() { fmt.Println("speak in person")}// Admin exportedtype Admin struct { person a int}func main() { a := new(Admin) // 直接调用内部struct的

2020-06-06 11:11:41 2866

redis.conf

redis.conf

2020-12-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除