自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [HTTP] post传递数据的两种content-type application/x-www-form-urlencoded multipart/form-data...

正常的传递key value的post数据时候 , 设置的content-type是application/x-www-form-urlencoded内容是 key=value&key2=value2如果是multipart/form-data这种一般需要在content-type的时候指定boundary , 作为多个值之间的分隔符内容里各个值直接是 以上面指定的分隔...

2021-05-28 16:41:00 166

原创 [Nginx]使用ngx_http_image_filter_module实现压缩图片为缩略图

ubuntu系统下,先安装ngx_http_image_filter_module这个模块先看看自己的源cat /etc/apt/sources.list.d/nginx-stable.listdeb http://nginx.org/packages/ubuntu/ xenial nginxdeb-src http://nginx.org/packages/ubuntu/ xenial ...

2021-05-23 18:11:00 580

原创 [Go] gin 解决: accept4: too many open files

我的在线客服系统 go gin服务出现了大量的too many open files 错误 , 这时候服务也是连不上的前端接口的显示就是504 , 超出了nginx设置的超时时间通过lsof -p 进程id可以看到打开的文件数量已经1031个了 , 说明了超出了单进程打开文件的限制默认1024 , 可以用ulimit -a查看连接数情况netstat -altupn|gre...

2021-05-19 16:10:00 1349

原创 [tcp] 服务端大量close_wait 和 time_wait状态

我开发的某个服务出现这个状态 , 出现了大量的close_wait , 占满了单进程的连接数1024tcp连接关闭的时候 , 会有几种状态转移close_wait的大量出现 , 这个是说明我们是被动关闭 , 并且被动关闭后 , 我们的程序没有把连接关闭掉 , 造成连接泄露了我在做gofly在线客服系统的时候 , 把连接关闭改成了前端来关闭 , 但是后端对关闭的连接没有进行close ,...

2021-05-19 15:45:00 214 1

原创 [nginx] nginx的变量拼接与if判断

当在nginx里面使用变量的时候可能会有变量拼接的需求 , 不管是多个变量还是一个变量和其他字符串都可以这样来实现set $allUrl "${host}${request_uri}";$host和 $request_uri 都是内置变量拼接在一起的话 , 使用这个set指令当需要使用if判断的时候 , 一定得注意格式 , 因为nginx检测格式非常严格 , 注意空格注意看...

2021-05-19 11:20:00 3613

原创 [nginx] nginx的常用内置变量

常用内置变量 , 有时候在使用nginx排查问题 , 或者进行各种操作的时候 , 都有用处以下仅列出一些常用变量,更多变量请到nginx官网查阅http://nginx.org/en/docs/varindex.html1. 从请求行中解析的变量以访问http://localhost:80/nginx/varindex?a=1&b=2得到的结果GET /nginx/varinde...

2021-05-19 11:00:00 338

原创 [Linux] 网络抓包工具tshark

tshark是wireshark包的linux命令行版有时候我们想看看具体的协议细节 , 如果是使用的tcpdump 那么还需要把数据下载到本地 , 用wireshark看这个时候就可以使用tsharkapt install tsharkcentos下直接安装wirekshark , yum install wireshark抓取80端口的http协议细节tshark -s 10...

2021-05-17 14:16:00 367

原创 [PHP] 发布一个类库到composer

首先有github仓库 , 仓库的结构可以是这样composer.json文件可以类似这样{ "name": "taoshihan/php-router", "license": "Apache-2.0", "description": "php simple router", "type": "library", "authors": [ ...

2021-05-14 18:15:00 80

原创 [Git[ 解决 git branch -M main error: refname refs/heads/master not found

当初始化一个github项目的时候按照github提示执行到git branch -M main返回错误:error: refname refs/heads/master not found解决:先git add .git commit -m "init"然后在执行git branch -M main...

2021-05-14 17:41:00 1002

原创 [PHP] composer init初始化composer.json文件

当想要初始化一个php项目的时候 , 或者想要开发一个类库给别人使用的时候都需要一个composer.json文件直接在项目目录输入 composer init 按照引导就可以生成了 , 详细的引导解释如下This command will guide you through creating your composer.json config.# 1. 输入项目命名空间# 注意&...

2021-05-14 17:35:00 1040

原创 [javascript] js websocket断线重连库ReconnectingWebSocket

websocket在连接的时候 , 受网络影响或者长时间没有通信被服务端关闭 , 都需要断线重连机制自己写断线重连比较麻烦 , 可以使用这个js库 ReconnectingWebSocket.jshttps://github.com/joewalnes/reconnecting-websocket/ 直接下载min文件 , 引入就可以使用的时候只需要把h5的原生websocket...

2021-05-14 16:57:00 1089

原创 [javascript] 简单封装localStorge操作

判断浏览器是否支持localStorge判断浏览器是否为无痕模式简单的json 编码//存储localStorgefunction setLocalStorage(key,obj){ if(!navigator.cookieEnabled||typeof window.localStorage == 'undefined'){ return false; ...

2021-05-14 11:14:00 143

原创 [PHP] 重要操作手机短信验证逻辑梳理

用户体系是这样的 , 企业 ===> 用户企业 ,验证总开关 , 企业开启了验证 , 用户必须验证企业没有开启验证 , 用户有个人开关 , 用户可以自己决定是否开启流程时序:1. 前端调用接口 /addSetting2. 后端验证开关 , 未开直接通过3. 后端验证是否已经验证通过了 , 已验证的直接通过 , (通过mc存储状态)4. 后端验证是否绑定手机 , 未绑定 ...

2021-05-14 10:23:00 122

原创 [css] position:fixed居中问题

测试发现 , 如果设置了left 或right , 如果想要居中那么left:0px;right:0px;margin:0 auto;如果没有设置过 , 只有bottom或top那么它就是跟着父元素来的 , 如果父元素居中 , 它也居中...

2021-05-13 23:57:00 126

原创 [javascript] vue中elementui 回车事件、获取焦点、按键等事件

当想要在一个输入框上实现回车就发送的功能的时候 , 需要给输入框增加回车事件当想要在输入框实现点击或者当前焦点,失去焦点,调用某些函数,实现某些功能时可以按这样 <el-input @focus="textareaFocus" @blur="textareaBlur" v-model="messageContent" @keyup.native="inpu...

2021-05-13 23:30:00 823

原创 [javascript] js获取url中的get参数

主要是通过把url中?后半部分取出,&分割为数组调用数组的map函数 ,map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。function getQuery(key) { var query = window.location.search.substring(1); var key_values = query.split("&amp...

2021-05-13 23:07:00 261

原创 [Linux] ps+awk +while 实时查看进程内存占用情况

有时候需要看下进程的内存占了多少了可以使用我这句shell , 能查看每个想看的进程以及 , 内存总和红色部分是我的进程 , 这里可以根据自己的需求来while true;do clear;date;ps aux|grep go-fly-pro|grep -v grep|awk 'BEGAIN{sum=0}{sum+=$6;print $6/1014 "M" "\t" $0;}END{pr...

2021-05-13 17:23:00 270

原创 [PHP] xml转对象函数simplexml_load_string

如果有将xml转成数组或对象的功能 , 可以使用这个函数比较简单 $obj=simplexml_load_string($xml,'SimpleXMLElement', LIBXML_NOCDATA | LIBXML_NOBLANKS); $json=json_decode(json_encode($obj),true);xml转成对象 , 将对象转成数组...

2021-05-13 16:52:00 189

原创 [MySQL] 理解MySQL索引合并index_merge

当条件里有and 或者 or这俩字段都有单独的索引 , 可以进行单独的搜索 , 然后索引合并结果 , 再去聚簇索引查找MySQL5.0之前,一个表一次只能使用一个索引,无法同时使用多个索引分别进行条件扫描。但是从5.1开始,引入了 index merge 优化技术,对同一个表可以使用多个索引分别进行条件扫描。具体测试如下 , 俩字段都有索引:两个条件是 and...

2021-05-13 16:47:00 106

原创 [MySQL] 理解mysql间隙锁

在RR可重复读隔离级别下 , InnoDB存储引擎当用范围条件而不是相等条件检索数据 , 并执行update或者delete操作会把符合条件的范围 , 包括条件里面不存在的记录加上间隙锁当其他事务往这个范围内插入记录时 , 会把阻塞例子:事务Aset autocommit=0; //关闭自动提交select * from message where id >10 and id...

2021-05-13 10:19:00 93

原创 [javascript] 利用Date.Now()实现前端频率限制

比如某个点击事件 , 两秒才能点一次 var ms= 1000*2; var lastClick = Date.now() - ms; $("a,div,p,li").click(function(){ if (Date.now() - lastClick >= ms) { lastClick = Date.now(); ...

2021-05-12 23:11:00 193

原创 [PHP] linux下安装PHP8的小问题

当使用apt install php 安装完新版php以后直接输入 php -v 结果显示仍然为旧版是因为安装的时候 , 默认把新版php8安装到了 /usr/bin/php8.0直接输入/usr/bin/php8.0 -v是可以找到的首先使用whereis php 查看旧版的是哪个然后把旧版的挪位置 , 把新版的挪过去这个时候直接php -v , 就是新版的了...

2021-05-12 17:16:00 173

原创 [PHP] windows或者linux安装composer2

好长时间没有用过composer , 现在都已经到了2.几了 , 如果用旧版的就会报错windows下尽量用那个exe的安装器 , 这样就不需要设置环境变量了 , 而且winddows下需要bat的那几个脚本 , 用这个就更方便了https://getcomposer.org/download/linux下的命令行执行:php -r "copy('https://getcomp...

2021-05-12 15:59:00 402

原创 [Go] 理解(*interface{})(nil) 赋值的变量是否为nil

现在有这样两种赋值方式a := (*interface{})(nil) var c interface{} c = (*interface{})(nil)a现在是啥 ?(*interface{})(nil) 意思是把nil 类型转换为 *interface{}类型a相当于 var a *interface{} = nil , a是个指针 , 指向了nil , 所以a是ni...

2021-05-11 13:20:00 482

原创 [Linux] 理解CPU缓存的伪共享问题

CPU是有高速缓存的 , 三级缓存分别是 L1 , L2 , L3L1缓存最贴近CPU , 所以速度也最快数据在缓存中是一行一行存储的 , L1缓存一般的一行缓存64字节一行能缓存64个字节 , 因为一个变量可能没有64字节大小 , 所以可能会缓存好几个变量缓存需要保证一致性, 也就是当变量修改的时候 , 缓存必须得失效 , 重新在内存中读取变量加载到缓存里当一行里有好几...

2021-05-11 10:07:00 96

原创 [MySQL] 理解InnoDB并发高的原因

当对同一个资源进行并发操作时 , 非常需要保证并发安全 , 常见的并发控制手段演进如下锁 : 操作数据前锁定 , 操作后释放 , 但是这样就相当于串行化了 , 并发度不高读写锁 : 读数据的时候加读锁 , 不妨碍其他读 , 只有修改的时候加写锁 , 这时会妨碍其他的读和写操作数据多版本 : 操作数据的时候拷贝一份 , 操作新的数据 , 其他并发读旧版本数据 , 这样就不会阻塞别的读了In...

2021-05-11 09:47:00 98

原创 [Go] 理解计算机负数的表示以及整数范围

计算机在表示数的时候 , 是二进制 , 如果是4位对于正整数,很简单就是 , 所有的位都是1表示最大的正整数15但是对于负数 , 需要最高位用来表示正负符号 , 1是负数 , 0 是正数所以4位的有符号整数最大是78位的是整数最大是 127 最小是-128原始的二进制是原码 , 除了符号位外所有的位反转, 就是反码 , 再加1就是补码负数的表示是用的补码表示对于人类阅读比较难懂...

2021-05-10 16:49:00 473

原创 [Go]理解golang项目性能分析工具trace

当使用PProf不是太详细的时候就可以使用 trace来查看跟踪了这个命令可以配合PProf先把trace文件下载下来curl http://域名/debug/pprof/trace?seconds=20 > trace.out使用go tool trace C:\Users\shihan1\Downloads\trace.out因为是监听的127.0.0.1 ,可能在服务器...

2021-05-10 11:12:00 180

原创 [Go]理解golang项目性能分析工具PProf

PProf 是以 profile.proto来分析数据可以采集程序执行时候的命令分析可以采集HTTP服务时的运行时数据分析可以通过go test 测试用例分析有下面这些监控分析功能:CPU 分析 , 内存分析 , 阻塞分析 , 互斥锁分析 , Groutine分析如果是http服务 , 那么直接引入这个包就可以实现了_ "net/http/pprof"如果使用的gin框架 , 需...

2021-05-10 10:44:00 218

原创 [Go] 理解切片slice扩容

切片有个长度和容量两个参数 , 当长度超过容量的时候 , 容量会扩容2倍当容量大于1024个的时候,容量会扩容为原来的1.25倍从下面的代码中可以看得到当增加新的元素的时候,超过了容量,但是容量大小小于1024的时候 , 是2倍扩容当新增元素 , 超过了容量 , 并且容量大于1024 , 是1.25倍扩容 //数组 arr := [4]int{1, 2, 3, 4} ...

2021-05-08 18:19:00 95

原创 [javascript]解决多个版本的jquery库或者$冲突

如果在一个页面上引入了多个jquery , 并且不能去掉的时候 ,或者$函数和自己的函数冲突的时候可以使用这样的方式来解决在引入jquery的后面加入 , 类似下面这样 <script src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script> <script...

2021-05-08 15:56:00 114

原创 [Linux] 理解Reactor 模型

为了提升网络的处理能力 , 出现了I/O多路复用技术比如常见的 select poll epollReactor 模型就是对上面I/O多路复用的封装一般常使用如下几个组合使用方式:单Reactor 单进程/线程单Reactor 多进程/线程多Reactor 多进程/线程单Reactor 单进程/线程:Redis处理命令请求使用的这个模型 ,单Reactor 单进程Jav...

2021-05-08 11:47:00 121

原创 [Linux] 理解I/O多路复用

网络模型从最简单到后面的演进是这样的:1. 普通socket模型2. 多进程模型3. 多线程模型4. I/O多路复用 select poll5. I/O多路复用 epoll普通socket模型:1对1的同步阻塞通信 , 一个进程只能处理一个连接 , 其他连接无法处理多进程模型:主进程监听socket , accept接收到请求后 , fork子进程进行处理 , 1个子进程一个连...

2021-05-08 11:15:00 70

原创 [Go] 解决missing go.sum entry for module providing package <package_name>

当在代码中使用了第三方库 ,但是go.mod中并没有跟着更新的时候如果直接run或者build就会报这个错误missing go.sum entry for module providing package <package_name>可以使用go mod tidy 来整理依赖这个命令会:删除不需要的依赖包下载新的依赖包更新go.sum...

2021-05-07 22:58:00 5154 2

原创 [Go]空接口类型断言后 .(指针类型) 和.(具体对象) 的不同区别

我们使用空接口 interface{} 可以接收任何类型的值拿到以后我们还需要类型断言把类型转换回原始类型 ,空接口可以存储指针变量 , 也可以存储具体类型断言回原始类型后有这样区别如果是具体类型 , 直接赋值会报错 " cannot assign to xxxxx"因为这时候是一个拷贝后的具体类型了 , 直接赋值修改是不被允许的 , 需要使用个新的变量接收如果是指针类型就可以直接...

2021-05-07 15:51:00 260

原创 [Go] embed指令嵌入静态文件到二进制包

go 1.16开始提供了embed指令 , 可以将静态资源嵌入到编译包里面这样就可以把网页模板等文件直接打包了,就不需要每次还要拷贝静态文件常规用法:import _ "embed"//go:embed hello.txtvar s stringfunc main() { print(s)}作为一个文件路径,也支持多个,以及通配符//go:embed hello1....

2021-05-07 11:43:00 627 1

原创 [Go]GO设计Map的原理

Golang中的Map是一个键值对的数据结构底层是一个哈希表,核心数据结构是数组+链表哈希表自然会有哈希函数,通过一个哈希函数将key映射到哈希表的一个位置,有哈希函数就会有哈希冲突Golang是使用数组+链地址法解决哈希冲突,当多个key映射到同一位置的时候,会把冲突的key链接起来形成一个链表读的过程:1.通过哈希函数取得key的哈希2.把哈希通过取模或者位操作得到索引3....

2021-05-06 20:00:00 80

maccms7php.zip

电影站源码苹果CMS,PHP版本的完整版下载,要求PHP版本低于7.0

2019-09-21

空空如也

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

TA关注的人

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