自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

坚持

Make progress every day

  • 博客(163)
  • 资源 (6)
  • 收藏
  • 关注

原创 redis (跳跃表)

有序集合在生活中教常见,如根据成绩对学生进行排名,对于有序集合的实现,我们可以使用数组、链表、平衡树等结构,数组不便于元素的插入和删除,链表的查询效率低,需要遍历所有的元素;平衡树或者红黑数等结构虽然效率高但实现复杂。redis采用了一种新型的数据结构 --- 跳跃表,跳跃表的效率堪比红黑数,然而其实现远比红黑数简单。有序链表只能逐一查询,导致操作起来非常慢,跳跃表在此基础上,增加了多级索引,通过索引位置的几个跳转,实现数据的快速定位。...

2020-10-14 22:28:03 261

原创 redis字符串(sds)

Redis没有直接使用 C 语言的字符串,而是自己创建了名为 SDS (simple dynamic string, SDS) 的字符串。什么是二进制安全? C 语言中,用 “\0” 表示字符串的结束,如果字符串本身就有 “\0” 字符,字符串就会截断,既非二进制安全,若通过某种机制,保证读写字符串时不受损坏内容,则是二进制安全。一、数据结构 ( 在 sds.h 中可以看到如下 5 种数据结构:)struct __attribute__ ((__packe...

2020-10-10 20:12:50 332

原创 使用 swoole (websocket)的一些经验和坑

一、注意长连接失效问题 报错: 1、使用redis报错:read error on connection 2、使用ping报错:socket error on read socket 解决方案: 1、ping 2、tcp-keep-live 3、连接重试二、fd建立和销毁 维护fd: ...

2020-09-22 18:04:55 1364

原创 (ZEND_BEGIN_ARG_INFO_EX 、ZEND_END_ARG_INFO)接受参数的使用

一、代码ZEND_BEGIN_ARG_INFO_EX(test, 0, 0, 1) ZEND_ARG_CALLABLE_INFO(0, func, 0)ZEND_END_ARG_INFO()二、ZEND_BEGIN_ARG_INFO_EX 定义如下:#define ZEND_BEGIN_ARG_INFO_EX(name, _unused, return_reference, required_num_args) \ static const zend_internal_a.

2020-09-10 23:39:06 1014

转载 使用systemd管理swoole服务

Systemd 是 Linux 系统中新一代的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。很多新的Linux发行版已经使用Systemd取代了init,作为初始守护进程。Swoole的服务器程序可以编写一段service脚本,交由systemd进行管理。实现故障重启、开机自启动等功能编写Service脚本Systemd的Service配置在/etc/systemd/system/目录中,可以创建一个echo.service文件,实际...

2020-09-05 00:49:54 158

原创 记录一次 redis连接次数过多问题

问题:可以看到redis 连接数 1800 左右执行命令:./redis-cli info clients查看redis 连接的客户端./redis-cli client list可以看到 idle 是空闲时间,而这个空间时间大概是每个链接空间100多天、有大量死连接没有释放掉。解决问题:设置 redis server 的 time_out时间结果: redis连接数只有200多...

2020-09-04 13:27:58 3082

转载 network.service无法启动LSB:启动/关闭网络 - Centos 7

尝试启动网络服务时,我在Centos7上遇到问题,我收到以下错误信息 1 Failed to start LSB: Bring up/down networking 当我意识到它没有从/etc/sysconfig/network-scripts/ifcfg-eth0文件(见下文)中获取我的讲台IP地址是出现了问题 1 2 3...

2020-05-06 10:31:58 1614

原创 Tcp为什么是4次挥手呢?为什么是3次握手,不能是3次挥手呢?

1、tcp是全双工的协议、因此双发都会向对方发送协议。 四次挥手如下: 1、客户端执行主动关闭,发送 fin的包(fin),表示客户端的数据发送完毕。 2、服务端执行被动关闭,发送确认 ask 包。 3、服务端给客户端发送 fin,告诉客户端我也要关闭。 4、客户端确认服务端的ask的包。思考:根据三次握手,那么为什么不能是三次挥手呢?中间的两个部分为什么...

2020-03-14 22:39:33 4191 1

原创 Tcp为什么三次握手?为什么不是二次、或者四次?

一、首先第一个要知道的就是tcp是一个可靠的、全双工的协议。 并且提供排序、确认等机制,双方会互相确认,客户端(client)向 服务器(server) 发送一个 包(例如:syn),那么服务器同样也会恢复一个(ask)的确认包,根据这个概念。二、四次握手: 首先4次握手是可以的,如下就是发送步骤,但是可以发送中间有两次是服务端一起发起的,那么就是不是可以...

2020-03-14 22:24:27 498

原创 TCP总结和time_wait存在的原因

一、tcp介绍 首选,TCP提供客户端与服务器之间的连接。TCP客户端先与某个给定的服务器建立一个连接,在跨该连接与服务器交换数据,然后终止这个连接。 1、tcp提供了可靠性,当tcp向另一端发送数据时,它要求对端返回一个确认,如果没有收到确认,tcp就会自动重新传递数据并等待更长时间,在数次冲传之后,tcp才放弃,如此在尝试发送数据上所花的总时长一般为4-10...

2020-03-11 22:28:44 363

原创 UDP

UDP 是一个简单的传输层协议,应用进程往一个UDP套接字写入一个消息,该消息随后被封装到一个UDP数据包,该UDP数据报进而又被封装到一个IP数据报,然后发送到目的地。UDP不保证UDP数据会达到其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据包只能达到一次。 我们使用UDP进行网络编程所遇到的问题是它缺乏可靠性。如果一个数据报达到了其最终的目的地,...

2020-03-11 21:57:25 2705

原创 TCP/IP 简介

OSI模型的底下两层是随着系统

2020-03-11 21:45:07 209

原创 mysql 优化-发现问题

1、数据库优化概念 2、数据库设计-选择合适的字段、索引。 3、性能监控-Mysql基准测试、服务器性能剖析。 4、高级特性-查询缓存、合并表、分区表。 5、数据库优化步骤(awk、ab) 6、索引优化 7、sql 优化(那些sql 导致全表扫表) 8、服务器性能调优:恰当的硬件资源和操作系统、数据库参数配置。...

2019-09-27 09:45:27 113

原创 mysql 优化概念 及 工作原理

一、www 原则 why 为什么 how 怎么做 what 做什么二、数据库优化2.1 对于一个数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要。 一般来说,要保证数据库的效率,要做好以下四个方面的工作: 1、数据库的设计(三范式)。 2、sql语句优化。 3、数据库参数配置。 4、恰当的硬件资源和操作系...

2019-09-27 09:44:54 264

原创 shell学习 命令替换

命令替换 语法格式方法一 `command`方法二 $(command)例子1: 获取系统得所有用户输出 cat /etc/passwd cat /etc/passwd | cut -d ":" -f 1 指定:为分隔符,回去第一行 脚本: #!/bin/bash #...

2019-09-19 20:44:22 260

原创 shell学习 字符串处理

1、计算字符串的长度 语法方法一 ${#string}方法二 expr length "$string" string有空格,则必须加双引号例子: var1="hello world" len=${#var1} len=`expr length "$var1"`2、获取子串在字符串中的索引位置 语法 ex...

2019-09-17 10:52:07 105

原创 shell学习 变量替换

变量替换总结语法 说明${变量名#匹配规则} 从变量开头进行规则匹配,将符合最短的数据删除${变量名##匹配规则} 从变量开头进行规则匹配,将符合最长的数据删除${变量名%匹配规则} 从变量尾部进行福规则匹配,将符合最短的数据删除${变量名%%匹配规则} ...

2019-09-17 10:01:03 183

转载 Centos7 下安装PHP7 phpredis扩展报错解决办法 致命错误:ext/standard/php_smart_str.h

git clone https://github.com/nicolasff/phpredis/usr/local/php7/bin/phpize #找不到phpize的路径可用whereis命令查看:whereis phpize 得到路径 或者 find / -name phpize 得到路径./configure --with-php-config=/usr/local/php/b...

2019-08-25 11:39:43 882

原创 /usr/bin/env: php: No such file or directory

yum install php-cli

2019-08-24 23:59:22 1632

原创 composer安装失败

Some settings on your machine make Composer unable to work properly.Make sure that you fix the issues listed below and run this script again:The openssl extension is missing, which means that secur...

2019-08-24 23:35:42 5105

转载 解决 Cannot find OpenSSL's

yum install openssl openssl-devel

2019-08-24 23:30:26 369

原创 php7 引用类型

一、结构体struct _zend_reference { zend_refcounted_h gc; zval val;}二、gdb 调试,定义 ref.php文件,以下代码也是面试题常考的。<?php $a = "string"; $b = &$a; echo ...

2019-08-08 23:45:31 355

原创 php Zend_string 与 写时复制( copy on write )

一、 zend_string 结构体 定义struct _zend_string { zend_refcounted_h gc; zend_ulong h; /* hash value */ size_t len; char val[1];};二、写时复制写时复制:对于整...

2019-08-08 15:08:01 380

原创 php7基本变量

一、变量变量是最常见的数据类型应用形式,它由三个主要部分组成,变量名,变量值,变量类型,php 中的变量名于变量值分别对应的为:zval,zend_value,这两个概念一定要区分开,php的变量的内存是通过引用计数进行管理的,而且php7中的引用计数转移到了具体的 value结构中而不在是 zval,这是php与旧版本不同的一个地方,变零之间的传递,赋值通常也针对 zend_value。...

2019-08-07 09:23:54 612

原创 tp5.1 路由执行解析 (六)

1、为什么可以直接使用 Route::get 调用呢? 因为这个是执行的 facade门面模式,就不具体说了,接下来看具体代码的流程Route::get('hello/:name', 'index/hello');2、定位到 get 方法,第一个参数是路由规则,第二个是路由地址等等,发现最后都是定位到了 rule 方法, /** * 注册GET路由 ...

2019-07-20 23:39:33 1553

原创 tp5 框架执行流程、初始化应用(五)

1、执行 index.php 文件中的以下代码,在经过上述文章容器的学习,得知 app 对应返回的 是 think/App 类// 执行应用并响应Container::get('app')->run()->send(); 2、 在 run 方法中,第一步执行初始化应用 $this->initialize() 方法 if ($th...

2019-07-20 22:40:32 1263

转载 phpcms v9添加内容时显示0

找到文件 phpcms/libs/classes/attachment.class.phpfunction download($field, $value,$watermark = '0',$ext = 'gif|jpg|jpeg|bmp|png', $absurl = '', $basehref = '') { if(!in_array(strtolower($ex...

2019-07-12 15:00:09 370

原创 tp5.1 Facade - 门面(四)

作用门面为容器中的类提供了一个静态调用接口,相比传统了静态方式调用,带来了更好的可测试性和扩展性。 代码使用 (这样写可以直接调用)两段代码执行的结果一样,实际执行的是在\think\Facade\Config$apps = \Config::get('app.');halt($apps);$apps = \think\Facade\Config::get('ap...

2019-07-07 23:42:35 1206

原创 __callStatic 学习

介绍:当类调用静态方法是,并且调用的方法不存在时,会调用 __callStatic 方法类代码:class Test{ public static function __callStatic($name, $arguments) { dump($name); dump($arguments); }}调用代码:...

2019-07-07 23:22:11 320

原创 tp5.1 IOC容器解析(三)

一、学习内容1、单列模式。2、注册树模式。3、php 反射机制。二、容器中图分解Container.png大体上就这么几点:1、设计模式:单列模式、注册数模式。2、php 反射思想(对应的方法)。3、依赖注入。三、分析主要的几个方法 1、get方法 =》make方法 /** * 获...

2019-07-03 22:58:01 918

原创 php 反射机制

一、介绍 PHP5添加了一项新的功能:Reflection。这个功能使得phper可以reverse-engineer class, interface,function,method and extension。通过PHP代码,就可以得到某object的所有信息,并且可以和它交互。 反射是什么?它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的...

2019-07-01 11:50:25 1080

原创 php设计模式(八 ) 注册树模式

注册树模式(Registry Pattern ):注册树模式为应用中经常使用的对象创建一个中央存储器来存放这些对象 —— 通常通过一个只包含静态方法的抽象类来实现(或者通过单例模式)。也叫做注册器模式1、为什么需要注册树模式解决常用对象的存放问题,实现类似于全局变量的功能。 2、代码实现class Register{ /** ...

2019-07-01 11:40:28 191

原创 Yaconf 高性能配置

1、简介:一个高性能配置扩展管理 yaconf.so2、 链接:Yaconf – 一个高性能的配置管理扩展3、高性能yaconf 编译安装 1、https://github.com/laruence/yaconf点击连接 2、wget https://github.com/laruence/yaconf.git 或者直接download下载yacon...

2019-06-25 23:10:00 564

原创 php底层ArrayAccess类巧用分析

一、作用:提供像访问数组一样访问对象的能力接口。二、 方法: 1、offsetExists 检查偏移位置是否存在 2、offsetGet 获取一个偏移位置的值。 3、offsetSet 设置一个偏移位置的值。 4、offsetUnset 删除一个偏移位置的值。三、代码测试class ObjArray impl...

2019-06-25 22:38:01 398

原创 tp5.1 配置文件分析 (二)

一、 学习内容 1、Array Access 学习笔记。 2、Yaconf 高性能配置 学习。2、配置加载流程图3、config 类库分析1、在 index.php 入口文件中 有个 run 方法 // 初始化应用 $this->init();2、在 run 方法中有个 初始化方法 initizlize方法//...

2019-06-25 22:17:53 1340

原创 tp5.1 Loader自动加载分析(一)

1、加载流程图 1、框架启动执行 index.php // 加载基础文件require __DIR__ . '/../thinkphp/base.php'; 2、加载 Loader.php,并执行 register 方法// 载入Loader类require __DIR__ . '/library/think/Loader.php';//...

2019-06-22 18:06:10 3134

转载 新clone一个项目,添加到IDEA发现没有git项目管理

这个问题是由于IDEA设置的问题1.File->Setting->Version Controll在Version Controll界面找到没有git管理的项目,一般为红色,正常的是黑色,把项目从Version Controll中移出,然后重新添加。2.设置导入时自动添加Git项目管理File->Setting->Version Controll->C...

2019-05-21 11:57:14 2142

原创 Vue -- CSS动画原理(二十二)

&lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Vue中CSS动画原理&lt;/title&gt; &lt;script src="../vue.js"&gt;&a

2019-03-07 10:52:30 103

原创 Vue -- 动态组件与v-once指令(二十一)

&lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;动态组件与v-once指令&lt;/title&gt; &lt;script src="../vue.js"&gt;

2019-03-07 10:27:36 264

原创 Vue -- 作用域插槽(二十)

&lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Vue中的作用域插槽&lt;/title&gt; &lt;script src="../vue.js"&gt;&am

2019-03-07 10:16:36 150

bootstrap-select-1.13.0-dev.zip

bootstrap-select 下拉多选,

2019-08-15

jq22jquerySelect243201805102215.zip

jquery 下拉多选功能

2019-08-15

基于jquery编写的验证码。非常简单方便,在前端进行验证码的使用验证

基于jquery的验证码,在前端进行验证码的使用验证,非常简单方便。

2018-09-27

mysql可视化工具 Navicat11.1

mysql可视化工具 Navicat11.1mysql可视化工具 Navicat11.1mysql可视化工具 Navicat11.1

2018-01-09

MySql数据库可视化管理工具

MySql数据库可视化管理工具 解压即可使用MySql数据库可视化管理工具 解压即可使用MySql数据库可视化管理工具 解压即可使用

2018-01-09

php_igbinary-2.0.1-v11 and php5.3到71所有redis_dll文件

目录: 1、php_igbinary-2.0.1-v11 2、php5.3到71所有redis_dll文件 3、redis-2.4.5-win32-win64

2017-11-23

空空如也

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

TA关注的人

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