自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IO复用的相关知识select,epoll

IO复用的相关知识计算机如何接受网络数据网卡接受到网络数据,写入到计算机内存的某个地址socket网络编程socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。客户端和服务端就通...

2019-12-18 01:03:40 199

原创 fastcgi_finish_request,register_shutdown_function和__destruct的理解

针对nginx和php-fpm模式,php定义了一个函数fastcgi_finish_request,可以提高接口返回数据的速度。nginx的fastcgi模块与php-fpm程序进行交互,获取php-fpm的worker进程执行的结果。一般情况,php的进程完全执行完后,才会吧输出的数据flush到nginx的fastcgi缓存区。在php进程中执行fastcgi_finish_reques...

2019-12-05 14:47:41 306

原创 nginx和php-fpm的交互

nginx是一个webservice的功能,当检测到访问php文件时,会把请求交给fastcgi模块处理。nginx的fastcig模块配置nginx的fastcgi模块会把请求交给php-fpm程序处理。php-fpm的worker进程处理完后,会把数据返回给nginx,nginx会把数据放到内存缓存中,缓存区大小为fastcgi_buffer_size,fastcgi_buffe...

2019-12-04 15:31:08 995 1

原创 redis数据结构与高可用

一.Redis配置多个数据库redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实例上呢?就相当于mysql数据库,不同的应用程序数据存储在不同的数据库下.Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念。用select命令可以手动切换redis数据库,默认从0开始redis> select 0...

2019-07-03 17:42:11 255

原创 mysql事务,锁相关知识

mysql的事务是经常使用到的,但是在并发过程中,事务相互不干扰需要消耗巨大的性能,所以事务有隔离级别。事务有四个属性,称为ACID属性:1、原子性(Atomicity):事务是一个原子单位,要么全部执行,要么全部不执行。2、一致性(Consistent):事务的开始和结束,数据都必须保持一致状态。3、隔离性(isolation):数据库系统提供隔离机制,保证并发事务之间是互相不干...

2019-03-15 17:46:45 314

原创 go获取运行内存

func PrintMemUsage() { var m runtime.MemStats runtime.ReadMemStats(&m) // For info on each, see: https://golang.org/pkg/runtime/#MemStats fmt.Printf("Alloc = %v MiB", bToMb(m.Alloc)) fmt.Printf("\tTotalAlloc = %v MiB", bToMb(m.TotalAlloc)) fmt.P.

2021-09-08 17:54:39 2247

原创 人间粮食

今天无意看到了一则新闻,讲述了一位北漂10年后,回老家开了一家书店的故事,书店的名称就是人间粮食。这是一家可以用旧书换粮食的二手书店。不得不佩服他的勇气,现在互联网社会,感觉书离我们越来越遥远了。“短视频成杀时间的第一利器”,这是前几天的热搜新闻。真实的反应了当前人们业余生活。我们看一看世界读书排名情况:中国每人年均读书4.66本,韩国每人年均11本,法国每人年均14本日本每人年均40本,德国每人年均47本俄罗斯每人年均55本,犹太每人年均64本。作为拥有几千年灿烂历史的古老国度,

2021-04-23 13:13:43 359 2

原创 阿里云被黑

阿里云被黑3月19号手机收到大量阿里云报警短信,查看报警内容。木马程序:http://zzhreceive.anondns.net/b2f628/b.shps,pstree命令使用不了进入/usr/bin 查看ps命令是否被修改-rw-r--r-- 1 root root 55 Aug 25 2016 ps-rw-r--r-- 1 root root 28504 Oct 1 01:20 pstree果然修改了属性,马上添加回去>chmod +x

2021-03-23 14:18:53 839 1

原创 Http2协议

因为语义上它与 HTTP/1 兼容,所以报文还是由“Header+Body”构成的,但在请求发送 前,必须要用“HPACK”算法来压缩头部数据。头部数据压缩之后,HTTP/2 就要把报文拆成二进制帧准备发送。头部压缩HTTP/1 里可以用头字段“Content-Encoding”指定 Body 的编码方式,比如用 gzip 压缩来节约带宽,但报文的另一个组成部分——Header 却被无视了,没有针对它的优化手段。http2在客户端和服务器两端建立“字典”,用索引号表示重复的字符串,还釆用哈夫曼编码来压

2021-03-20 17:30:01 266

原创 项目同时关联github和gitee

最近github又出幺蛾子了,常常连接time out,严重影响情绪。所以开了有个国内的gitee账号。本地仓库同时关联gitee和github。首先分别在github,gitee新建仓库,UnionPay本地仓库增加关联远程仓库git remote add https://gitee.com/littlexiaoshuishui/UnionPay.gitgit remote add https://github.com/Shuixingchen/UnionPay.git为了方便记忆,也可以给远程

2021-03-18 13:57:27 682

原创 Composer包开发

制作composer包创建 github.com 帐号创建 github.com 工程创建 packagist.org 帐号初始化项目,生成 Composer 包描述文件git clone https://github.com/Shuixingchen/UnionPay.git进入项目,创建src目录,我们的代码就放到src目录下面。初始化一个 Composer 包描述文件 composer.jsoncomposer init 重要的几个填写项:- Package name(重要)

2021-03-14 21:53:15 255

原创 BTC使用的技术

翻开新闻一看,比特币又突破5万2刀了。刚好公司的主业也开始在挖矿业务布局(没错,就是挖矿),全公司掀起了了一阵区块链学习热潮。刚好去哔哩哔哩学习了清华大学的区块链通识课,感觉挺清晰的,后面打算自己用go语言弄个啥币哈。先理一下比特币实现的一些技术。密码学知识比特币主要使用了SHA-256算法,这是一个单向散列函数,也就是我们常说的hash函数。单向散列函数有两个非常重要的属性。单向函数(One-way Function)是正向计算容易,逆向运算困难的函数。也就是说,给 定你一个输入,你很容易计算出输出

2021-03-04 21:31:59 598 1

原创 RSA签名php实现

接口数据加上签名,可以防止别人篡改数据,过滤非法请求。/* * @param $data array 需要加密的数组*/function getSign($data,$private_key){ //排序 $data = argSort($data); //拼接得的需要加密的字符串 $mystr = createLinkstring($data); //用私钥加密 $sign = rsaSign($mystr,$private_key);

2020-09-18 16:36:01 674

原创 Go实现基本数据结构

利用 Redis 的 bitmap 实现简单的布隆过滤器go 实现单向链表go 实现冒泡排序和插入排序数据结构算法-go 实现二分法数据结构和算法-go 实现散列表 (HashTable)数据结构和算法-go 实现堆。。。

2020-07-23 16:57:21 322

原创 故障排查相关的

进程相关定位进程top //查看进程占用资源 cpu,memps -aux|grep php-fpm //查看php-fpm相关进程分析进程[root@izwz97ww79qca7m2kxb6hqz ~]# ll /proc/28770/fd //查看进程28770中所有操作的文件fdtotal 0lrwx------ 1 root root 64 Jul 20 16:56 0 -> /dev/nulllrwx------ 1 root root 64 Jul .

2020-07-22 16:35:10 214

原创 Go操作数据库

go提供了一些标准库让我们和数据库交互, database/sql是golang的标准库之一,它提供了一系列接口方法,用于访问关系数据库。 不同的数据库驱动,需要去实现各种方法func main(){ db,err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/htadmin")}此时会报错,说mysql 驱动不存在。安装mysql驱动go get github.com/go-sql-driver/mysql--------

2020-06-01 12:13:40 894 1

原创 php的fsockopen伪造请求头,获取相应数据

http请求包含三个部分,请求行(\r\n)请求头(\r\n\r\n)请求主体http相应包含三部分,状态行(\r\n)响应头(\r\n\r\n)响应主体起始行与header之间通过一个换行符分隔(\r\n),多个header字段之间也是通过换行符分隔(\r\n),报文首部与报文主体之间则通过一个一个空行分隔(\r\n\r\n),报文首部有纯文本格式的字符串组成,报文主体则可以包含多种格式数据。php的fsockopen可以让我们自己构造请求header,获取响应header和响应主体数据.

2020-05-25 15:46:27 558 1

原创 如何将本地项目推送到gitee仓库

有时候我们在本地开发了一个项目,想推送到gitee仓库管理,有两种方式一,新建gitee空仓库,然后git clone到本地,然后把代码复制进去提交1.在gitee创建一个仓库,然后git clone 新建的仓库地址,到本地2.把项目代码复制到clone下来的仓库3.git add 提交代码二.新建gitee空仓库,然后在本地项目git init初始化项目,然后推送到空项目1.cd项目,执行git init,初始化本地仓库2.给本地仓库关联远程仓库$ git remote

2020-05-16 00:11:42 14779

原创 Go的类型-面向对象编程

# Go的类型-面向对象编程### 1.借助结构体来实现类的声明,比如声明一个学生类,就是创建一个结构体~~~gotype Student struct { id uint name string male bool score float64}func main() { stu := Student{1, "张三", true, 123}//...

2020-04-23 18:37:46 220

原创 给本机添加ssh公钥

1、本机生成SSH公钥a、本地打开 Git Bash(终端),输入命令:ssh-keygenb、直接三次回车,即生成了SSH公钥公钥文件就放在/c/User/Administrator/.ssh/id_rsa打开文件,可以发现一个字符串ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3gx7IALlbcSp1KgIttNIWlN89+EIAPX...

2020-04-21 11:11:36 1023

原创 git的操作记录

1.git要排除一些文件或者文件夹,比如我的项目用phpstrom开发,会有一个.idea目录,需要忽略。如果.idea目录还没有加入到git,则可以直接在.gitignore文件添加,但是如果.idea目录已经在版本管理了,修改.gitignore就不会生效了,需要执行下面命令git update-index --assume-unchanged .idea/*.xml...

2020-03-20 17:37:19 483

原创 Laravel Queue—消息队列任务

Laravel Queue—消息队列任务laravel队列的使用队列可以通过多种方式实现,在config/queue.php配置connection//这里配置了三种方式,具体选哪一种,需要在.env配置 QUEUE_CONNECTION=redis'connections' => [ 'sync' => [ 'driver' =...

2020-01-13 10:17:38 991

原创 php的错误异常处理

php的错误异常机制当我们没有自定义错误异常处理函数,php会按照默认的方式处理和显示错误异常。自定义默认的错误异常处理函数//注册捕获错误的处理函数set_error_handler([__CLASS__, 'appError']);//注册捕获错误的处理函数set_exception_handler([__CLASS__, 'appException']);//程序结束后...

2020-01-08 18:06:42 478

原创 Gutzzle的常见使用

1.发起请求 $client = new Client;$url = "http://192.168.1.207/icar_dev101/miniapp.php/sstore/hot_goods_list/";//get通过普通参数获取$response = $client->get($url,['query' => ['sstore_id' => 1]]);/...

2020-01-06 09:24:07 178

原创 laravel-scout包的安装和适配elasticsearch引擎

1.laravel-scout扩展包的安装composer require laravel/scout会下载到laravel框架的vendor/laravle/scout目录下2.在config/app.php配置providers 数组中:添加scout服务提供者Laravel\Scout\ScoutServiceProvider::class,3.注册好 Scout 的...

2020-01-02 00:34:38 1241 1

原创 TP5.1钩子的实现以及TP6.0事件的原理

TP框架的钩子功能很早就有了,tp5.1对它的实现又重新构造了,钩子的功能其实就是在代码中侵入其他代码流程。比如在初始化完后监听一个钩子,如果我们注册了这个钩子,并且绑定了一个行为,执行到这里的时候会执行我们绑定的行为。钩子的使用创建行为类,不用继承任何类namespace app\http\behavior;class ActionBegin{ public func...

2019-12-13 14:38:28 2220

原创 TP5.1中间件的使用

Tp5.1也引入了中间件的功能中间件使用1.定义中间件类框架可以使用它命令或者自己在application/http/middleware目录下面生成一个Check中间件,格式一定要如下:必须有handle方法,第一个参数必须是Request对象,第二个是闭包。class Check{ public function handle(Request $request, \...

2019-12-07 00:18:27 2899

原创 TP5.1数据库操作

数据库操作有两种方式,一种是直接通过Db类// table方法必须指定完整的数据表名Db::table('think_user')->where('id',1)->find();Db::name('user')->where(['name'=>'aa'])->select();Db::query("select * from think_user wh...

2019-12-06 00:18:37 795 1

原创 Tp5.1路由实现

路由有关的类RuleItem类,路由规则类,继承Rule类,一条路由规则就实例化一个RuleItem类,Rule::get()返回的就是RuleItem实例。1、重要属性$rule:路由规则字符串$name:路由标识$router:Router对象$vars:传参的参数数组$option:路由参数,多维数组,例如middleware。check().这个就是根据访问...

2019-12-03 17:56:12 1468

原创 php的反射机制

在PHP中,反射是指在PHP运行状态中,扩展分析PHP程序,导出或者提取出关于类、属性、方法、参数等的详细信息,包括注释。这种动态获取信息以及动态调用对象方法的功能,被称为反射API。其实就是通过一个对象,获取到实例化这个对象的类的所有信息。包括所有属性(共有,私有,静态),所有方法(构造函数,私有函数),还有对应方法的参数信息,还有方法的注释信息等等。1.反射类对象ReflectionC...

2019-11-27 16:59:57 770

原创 Tp5.1Container类解读

Thinkphp5.1引入了容器类来管理各种对象,使用注册数模式管理对象,还使用了php的反射机制实现对象之间的依赖和注入。Container的重要属性1.$instances = array(); 存放对象的一个数组2.$bind = array( //默认的标识=>类名,获取实例时,当传入标识,可以通过这个属性找到类名,然后进行实例化操作。 'ap...

2019-11-26 23:31:31 635

原创 Thinkphp5.1类自动加载机制

tp5.1类加载功能都封装到Loader类当中,所以我们主要分析这个类的主要功能。1.几个重要属性Loader::$prefixLengthsPsr4,Loader::$prefixDirsPsr4,Loader::$fallbackDirsPsr4,Loader::$classMap2.自动加载流程2.1自动加载整个流程是通过Loader::register来实现...

2019-11-24 11:52:10 1519

原创 mysql查询执行顺序与优化

一条sql语句交到mysql数据库连接器client 首先要与 MySQL 建立连接,这就需要一个连接器,负责与 client 建立连接、权限验证、管理连接。分析器client 和 server 连接完成了,向 server 发送 sql 请求,连接器不会直接处理,会转给分析器,对这条 sql 进行词法分析,例如识别出来“select”关键字,知道这是一个查询语句,识别出表明、...

2019-10-14 16:26:59 1174

原创 PHP进程防止内测溢出的排查

PHP进程内存大小是可以设置的,默认在配置文件 memory_limit=128M也可以在程序中动态设置ini_set('memory_limit','1024M');这样就设置成1G了。但是一般不会这样设置,毕竟会影响到机器的其他服务。有时候可以排查一下代码,很多时候内存溢出是因为php变量没有及时释放,或者遍历比较大的数组时出现。1.排查memory_get_usage()ph...

2019-10-09 11:32:29 318

原创 操作系统进程线程笔记

进程1.进程创建,创建PCB,分配地址空间,初始化PCB(比如状态设为就绪)2.调度就是决定哪个进程去获取cpu,进入执行状态。有多个就绪队列,不同种类的进程会进到对应的就绪队列等待被调度。调度算法会决定哪个进程进入cpu执行。3.时间片用完,停止运行,保存寄存器信息到PCB,修改进程状态为就绪。4.如果进程运行到I/O阻塞了,就会让出cpu进入阻塞状态,并且加入到阻塞队列...

2019-09-25 16:46:53 210

原创 Innodb逻辑存储结构

Innodb逻辑存储结构一般分为表空间>段>区>页组成1.表空间表空间可以看成innodb逻辑存储的最高层,默认会有一个共享的表空间ibdata1,所有的数据都存放在这个表空间内,如果启用了innodb_file_pre_table,则每张表都会单独放在一个表空间中。但是有些数据是一定会放在ibdata1中的,例如回滚信息(undo),插入缓存索引页,事务信息等。2....

2019-09-06 17:50:42 467 1

转载 Innodb三大特性

插入缓冲技术机制为了解决这个问题,InnoDB设计出了插入缓冲技术,对于非聚集类索引的插入和更新操作,不是每一次都直接插入到索引页中,而是先插入到内存中。具体做法是:如果该索引页在缓冲池中,直接插入;否则,先将其放入插入缓冲区中,再以一定的频率和索引页合并,这时,就可以将同一个索引页中的多个插入合并到一个IO操作中,大大提高写性能。回忆一下在《MySQL - 浅谈InnoDB存储引擎》中提到的...

2019-09-02 17:10:34 1015

原创 使用swoole_process开发多进程脚本

<?phpclass TaskWorker{ public $mpid = 0; public $works = []; public $max_precess = 4; public $new_index = 0; public function __construct() { try { //设置...

2019-08-19 18:36:40 692

转载 大话 Select、Poll、Epoll

提到select、poll、epoll相信大家都耳熟能详了,三个都是IO多路复用的机制,可以监视多个描述符的读/写等事件,一旦某个描述符就绪(一般是读或者写事件发生了),就能够将发生的事件通知给关心的应用程序去处理该事件。本质上,select、poll、epoll本质上都是同步I/O,相信大家都读过Richard Stevens的经典书籍UNP(UNIX:registered: Network P...

2019-07-05 09:22:06 113

原创 阿里云配置免费https遇到的问题

阿里云提供了免费的ssl证书1.申请证书https://www.cnblogs.com/lxf1117/p/6650647.html2.成功后去阿里云控制台下载对应的证书 我的是nginx的3.解压会有两个文件,会有.key和.pem,上传到nginx的conf目录中新建cert目录 一般为 /usr/local/nginx/conf/cert4.配置nginx的配置文件...

2019-06-24 14:53:34 735

php各种框架的手册 tp3.2, tp5.0, yii2.0, mysql5.1, php5.4

php各种框架的手册 tp3.2, tp5.0, yii2.0, mysql5.1, php5.4

2018-10-10

空空如也

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

TA关注的人

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