自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 收藏
  • 关注

原创 Etcd V2与V3存储差异

Etcd V2与V3存储差异在Etcd v2与v3两个版本中,使用的存储方式完全不同,所以两个版本的数据并不兼容,对外提供的接口也是不一样的,不同版本的数据是相互隔离的,只能使用对应的版本去存储与获取。V2——基于内存的存储在v2版本中,数据是以树形结构完全存储在内存中的,只有进行持久化的时候才会将数据以JSON格式存储进磁盘。v2的watch机制在v2版本中,存在着一个EventHistory表,EventHistory表是有长度限制的,默认是1000.v2中存在一个全局的版本cu

2020-11-01 22:59:28 51

原创 使用Docker快速部署你的Phalapi项目

使用Docker快速部署你的Phalapi项目为什么要用dockerdocker作为一种新兴的虚拟化技术,相较于传统的部署方式,使用docker去部署我们的项目,可以有更多的好处,如更快的部署,启动时间传统去部署我们的phalapi项目或phalapi-pro项目,需要安装nginx,php,fpm,mysql等等环境,php的拓展,nginx的配置,fpm的配置等等问题都可以花费很多时间,即使自己亲手部署过很多次,隔一小段时间后重新去部署一个新环境也会出现其他问题,使用docker可以大大缩短

2020-09-29 09:33:40 27

原创 Go基础数据结构学习——slice

Go基础数据结构学习——slicesliceSlice切片:是一个数组某部分的引用,在内存中是一个包含三个域的结构体,第一个是指向数据的第一个元素的指针,第二个是切片的长度,第三个是切片的容量type slice struct { array unsafe.Pointer len int cap int}slice不能简单使用==来测试两个slice是否拥有相同的...

2020-04-18 23:38:30 62

原创 Go基础数据结构学习——string

Go基础数据结构学习——stringstring在Go语言内存模型中用一个2字长的数据结构表示,一个是指向字符串存储的数据的指针,另一个为长度数据。type stringStruct struct { str unsafe.Pointer len int}由于string中不包含内存空间,只有一个内存的指针,可以方便的进行传输而不用担心内存拷贝,非常的轻量化,但是字符串字面量...

2020-04-14 23:24:34 68

原创 go协程控制——context

context为什么有context首先,如果我们在并发程序中,如果需要我们去通知子协程结束我们会怎么做?我们可能会通过一个channel+select去通知,如下:package mainimport ( "fmt" "time")func main() { exitChan := make(chan bool) go func() { for { ...

2020-03-09 01:49:25 127

原创 go的*锁*包——sync
原力计划

go的锁包——sync上一篇文章介绍了各种锁的基本概念,这篇文章主要学习一下Go的标准库sync包,提供了基本的同步基元.要注意的是,sync除了Once和WaitGroup类型,大部分都是适用于低水平程序线程,高水平的同步使用channel通信更好一些互斥锁——Mutex互斥锁: 同一时刻只能有一个读或写的场景var mu sync.Mutexfunc main() {...

2020-03-04 23:00:12 71

原创 各种锁系列

各种锁系列平时我们在开发或学习中,数据库中,某个编程语言中经常会听到各种锁,主要用来对资源并发过程做一些限制,接下来对各种锁进行一个总结与学习!乐观锁与悲观锁首先,乐观锁与悲观锁并不是指具体的某种东西,而是一种设计的思路乐观锁 (Optimistic Lock)乐观锁表示非常的乐观,认为业务操作去拿锁并不会有什么问题(冲突),进行完业务操作后需要去更新数据的最后才去拿锁...

2020-03-02 17:05:27 163

原创 Redis通信协议——RESP

通信协议简述RESP(Redis Serialization ProtocolRedis)序列化协议Redis 协议规则:将传输的结构数据分为 5 种最小单元类型,单元结束时统一加上回车换行符号\r\n。单行字符串 以 + 符号开头。(也可用多行的形式,实现统一)多行字符串 以 $ 符号开头,后跟字符串长度。NULL长度为-1 : $-1\r\n空串长度填 0: $0\...

2019-12-18 00:14:14 98

原创 Redis——漏斗限流

漏斗限流模块——redis-cell安装: 同样使用docker安装// 拉取镜像docker pull hsz1273327/redis-cell:latest// 后台运行,映射本地6381端口docker run -d -p 6381:6379 hsz1273327/redis-cell// 运行redis-cli -p 6381主要命令解析CL.THROTTLE [...

2019-12-16 17:15:30 112

原创 Redis——布隆过滤器

安装使用rebloom作为插件安装 centos安装rebloomdocker安装:// 拉取镜像docker pull redislabs/rebloom// 后台运行,映射到本地6380端口docker run -d -p 6380:6379 redislabs/rebloom// 连接redis-cli -p 6380布隆过滤器的主要命令和误判bf.add...

2019-12-16 15:52:53 119

原创 Redis队列——消息队列,延迟队列

异步消息队列使用的数据结构: list主要实现: go实现简单消息队列package mainimport ( "encoding/json" "fmt" "github.com/gomodule/redigo/redis" "os")type Producer struct { // 生产者}func (p *Producer)publish(conn re...

2019-12-15 16:25:51 58

原创 Redis——分布式锁

什么是分布式锁分布式锁: 进行逻辑处理时经常会遇到并发问题。可以借助redis来实现分布式锁,简单来说就是限制两个操作不同时进行,每次执行某个操作的时候用setnx()加锁,当没被锁再执行下一个操作.限制程序的并发执行!一般步骤: 使用 setnx(set if not exists) 指令,只允许被一个客户端占坑。先来先占,用完了,再调用 del 指令释放茅坑。setnx lock:XX...

2019-12-10 15:24:29 42

原创 Redis小知识

Redis的端口为什么是9379?这个端口号也不 是随机选的,而是由手机键盘字母「MERZ」 的位置决定的。「MERZ」在 Antirez 的朋友 圈语言中是「愚蠢」的代名词,它源于意大利 广告女郎「Alessia Merz」在电视节目上说了一 堆愚蠢的话.Redis的过期清理?redis使用hashtable存储数据的过期时间,但不会时刻去检测数据是否过期,清理过期数据主要分两个阶段完成,...

2019-12-09 18:21:47 27

原创 MySQL的delete操作对表空间的影响

delete操作的几种情况drop操作: 不管什么引擎,Innodb还是myisam都会释放磁盘空间truncate操作: truncate和drop一样都会释放磁盘空间,但与drop不同的是,truncate=drop+create,就是会新建一张空表,保留了mysql的表结构delete操作:delete from table_name删除了全部数据,对于myisam会释放磁盘空间...

2019-09-16 14:20:15 120

原创 HTTP的认证

粗略的BASIC认证Base64解码后就能得到用户ID和密码,而且无法实现认证注销的操作.DIGEST认证SSL认证表单认证Session

2019-07-25 01:22:08 56

原创 安全的HTTPS与安全通信机制

HTTP存在的不足:使用明文通信,内容可能会被窃听不验证对方身份们,可以遭遇伪装无法证明报文的完整性,可能遭篡改HTTP+加密+认证+完整性保护=HTTPSHTTPS的通信:HTTPS:通信接口使用SSL和TLS协议组合的HTTP被成为HTTPS(HTTP Secure超文本传输安全协议)通信过程:先和SSL通信,再由SSL和TCP通信好处:共享秘钥...

2019-07-25 01:08:52 265

原创 HTTP首部

1.HTTP报文的结构如图:可以看到HTTP报文可以分为两部分:首部:主要是客户端与服务器分别处理请求和响应提供所需要的信息报文主体:就是用户在客户端请求资源信息通用首部请求报文和响应报文都会使用的首部Cache-Control:控制是否缓存和缓存的信息connection:控制不再转发给代理管理持久连接:HTTP/1.1都是默认持久连接的,如果想断开连接...

2019-07-24 18:07:15 162

原创 通信数据转发

可以将请求转发给下一个服务器并接受服务器返回的响应给客户端代理1.代理不改变请求的URI,会直接把请求发送给持有资源的目标服务器,再从源服务器的响应经过代理后传给客户端,中间的代理服务器可以级联多台服务器2.代理可以:利用缓存来减少网络带宽针对特定网站的访问控制3.分类(1)缓存代理:可以使用缓存代理把资源缓存在代理服务器上,需要资源的时候直接从代理服务器中取而不需要去源服务器...

2019-07-23 01:12:15 110

原创 HTTP状态码

状态码1.状态码:向客户端描述请求的结果,以便用户知道服务端是正常处理了请求还是出现了错误信息性状态码——1XX接受的请求正在处理成功状态码——2XX1.200:成功正常处理2.204:成功处理但是反馈的响应报文中不含实体的主体部分,也不允许返回任何实体的主体。一般用于客户端不需要发生更新3.206:用于范围请求,响应报文中只包含Content-Range指定范围的实体内容,如:...

2019-07-22 23:07:46 37

原创 URI与URL

1.URI统一资源标识符Uniform:规定统一的格式可方便处理多种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式Resource:资源(可表示的任何东西)Identifer:标识符2.两者区别:URI用字符串标识某一互联网资源,URL标示资源的地点URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源(http://)...

2019-07-22 22:26:13 46

原创 nginx——优化②expires缓存

nginx可以通过设置expires对一些资源缓存,这样可以减少对服务器的请求和节省带宽格式:expires + 时间 (s/m/h/d)原理:使用于变化周期短的图片,css,js等栗子:location ~*\. (jpg|jpeg|gig|png|css){ expires 1d;}...

2019-07-18 20:40:54 54

原创 nginx——优化①gzip压缩

附上:nginx-gzip官方文档各个参数:gzip on|off; # 是否开启gzip压缩功能gzip buffers 4 16k; # 压缩缓存空间大小,压缩在内存中缓存4块,每块最大16Kgzip_comp_level [1-9]; # 压缩级别,压缩级别越高压缩越小,但是越浪费CP...

2019-07-18 20:11:52 69

原创 Swoole-网络通信引擎HTTP

WRITING

2019-07-17 17:03:49 141

原创 Swoole-网络通信引擎UDP

ServerUDP服务器创建与TCP服务器创建类型,但不同的是:UDP没有连接的概念。启动Server后,客户端无需Connect,直接可以向Server监听的9502端口发送数据包。对应的事件为onPacket。<?php/** * User: sHuXnHs <hexiaohongsun@gmail.com> * Date: 19-7-12 * Time: 1...

2019-07-17 16:43:32 52

原创 nginx——location与rewrite配置

一般模式writing…精准模式正则模式

2019-07-15 10:41:20 29

原创 nginx——配置与日志

nginx的配置文件nginx的虚拟主机配置nginx的日志管理

2019-07-12 10:35:45 81

原创 Swoole-网络通信引擎TCP

Server端介绍面向过程实现<?php/** * User: sHuXnHs <hexiaohongsun@gmail.com> * Date: 19-7-12 * Time: 12:34 *///创建Server对象,监听 127.0.0.1:9501端口$serv = new swoole_server("127.0.0.1", 9501);//...

2019-07-12 01:04:21 99

原创 php的isset和empty

1.empty查看官方手册,主要是在0这里,我们可以发现php的empty()会把下面这些也认为是空的:“” (空字符串)0 (作为整数的0)0.0 (作为浮点数的0)“0” (作为字符串的0)NULLFALSEarray() (一个空数组)$var; (一个声明了,但是没有值的变量)所以有时候我们判断的时候不仅要考虑到FALSE,NULL等情况,也要考虑0,空字符串,空...

2019-07-11 22:15:30 55

原创 nginx——工作模式与信号量控制

工作模式1.nginx的工作模式是多进程的,启动后后台进程包括了一个master进程和多个worker进程运行,以后台守护进程(daemon)常驻内存。master:主要用来获取配置,接受请求,向worker发送信号,监控worker和释放worker进程。worker:响应用户的请求2.nginx之间是通过信号来传递信息和控制的。shuxnhs@shuxnhs-PC:~$ ps a...

2019-07-11 13:10:40 40

原创 PHP好玩代码注释

有时候我们查看一些网站的源代码的时候,总会发现一些调皮的程序员,不仅代码写的好,连注释都如此的吊炸天。。如下图:如此好玩的东西,那就用世界上最好的语言PHP来实现一下,需要用到GD库,代码如下:<?php// 打开一幅图,黑白效果会比较好$file_name = '4.jpg';$chars = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzc...

2019-07-03 17:45:49 271

原创 PHP每隔多少个添加换行同时不拆分掉单词

最近碰到一个数据处理的需求:要求是给很多段文字进行处理,每一行数据每隔29行添加换行,但是不能拆分掉单词,比如hello的h刚好在29位那么要在hello前就断开,不多说看代码,php是世界上最好的语言。比如有其中的一句:Venham a mim, todos os que estão cansados e sobrecarregados, e eu darei descanso a vocês...

2019-07-02 17:03:13 285

原创 docker学习

docker学习docker安装windows首先需要安装windows的一个包管理工具:Chocolatey,安装的方式很简单,可以参考官网的两种安装方式:CMD安装:@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPoli...

2019-06-11 00:39:28 51

原创 PHP的json操作

json_encode():待编码的除资源外的任何数据类型主要包括三个参数value:待编码的valueoptionsdepth:设置最大深度JSON_UNESCAPED_UNICODE可以解决中文的问题,json_decode():对 JSON 格式的字符串进行解码注意json_decode包含四个参数:string json:要解码的json串assoc:...

2019-06-01 15:57:54 511

原创 PHP中的array_multisort详解

基本用法array_multisort($a, $b)$a和$b两个数组的元素必须相等先对$a进行排序,然后$b的排列顺序是按照$a的排列顺序排列(不是按照自己的元素的大小来排列的)举个栗子<?php$one = array('5', '4', '3', '2', '1');$two = array('1', '2', '3', '4', '5');array_mult...

2019-05-09 19:28:34 1313

原创 Composer

升级:composer self-update清楚缓存:composer clear-cache

2019-04-27 14:01:27 46

原创 PHP7底层设计与源码——数组的实现

基本概念PHP中数组是个强大的数据结构,堪称一绝,数组、关联数组一网打尽,既可以是连续的数组也可以是存储key=>value映射的map。PHP使用HashTable来粗不出键-值对,但是又对HashTable进行了一些额外的设计来保证数组的有序,维护着K-V的一种对应关系,可以快速地根据键来检索到值,而且查找地时间复杂度为O(1)HashTable示意图:key: 可以是数...

2019-03-28 01:23:12 1300

原创 小程序使用小白接口上传图片方法2

小白接口官网:https://www.yesapi.cn/1. 使用的小白接口:App.CDN.UploadImgByBase64链接:http://api.okayapi.com/?s=App.CDN.UploadImgByBase642. 思路先再小程序的微信公众平台上设置小白域名为合法域名选择图片,获取到本地的临时图片路径将文本路径图片转成base64编码(记得设置返回数据格...

2019-03-23 13:48:20 193

原创 小程序使用小白接口上传图片方法1

小白接口:https://www.yesapi.cn/1. 使用的小白接口:App.CDN.UploadImg链接:http://api.okayapi.com/?s=App.CDN.UploadImg先再小程序的微信公众平台上设置小白域名为合法域名使用这个接口时,先手动在小白后台取消App.CDN.UploadImg的签名设置。这边的数据参数以formData上传, 使用post方式...

2019-03-23 13:41:16 554

原创 ELK实时日志分析平台环境搭建

目录主要介绍环境日志分析的好处:主要的软件ELK的思路安装配置Elasticsearch(可选)安装elasticsearch-head插件安装配置Logstash安装配置Kibana主要介绍环境本地环境:deepin 15.9Java环境:1.8.0_171软件版本:elasticsearch-6.6.2logstash-6.6.2kibana-6.6.2-linux-x86...

2019-03-22 17:43:27 62

原创 MySQL必知知识

数据库1.MyISAM引擎不支持事务和行级锁2.MyISAM的特性加锁与并发:MyISAM是对整张表加锁,而不是某一行。读取时对需要读到的所有表加共享锁写入时对表加排他锁3.InnoDB(5.5版本后为默认引擎)4.关系数据完整性索引特性实体完整性:主键属性不能为空值参照完整性:外键为空或者等于对应的主键用户自定义完整性5.数据类型的优化尽量使用可以正确存储数据...

2019-03-13 21:12:13 49

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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