自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

奔跑吧笨笨的博客

学习成长记录

  • 博客(85)
  • 收藏
  • 关注

原创 Go http.Get不需要defer res.Body.Close()

我信了,程序也能跑起来,数据验证也正确,没问题,AI就是强大。线上程序为啥协程数量直线上升,因为使用的姿势不对,请换个姿势。但是,如果一个都不喜欢,不想要,不想实现。那对不起,让你见识一下内存的飙升,协程数量的直线递增。pprof分析之后,发现协程泄漏就是 readLoop(),什么时候才跳出死循环,就是上边的三处。赶紧查问题吧,TCP连接这么高,没有释放,必然是没有关闭啊,pprof分析一下吧。这量起来了,要赚钱了。但是,线上异常了OOM。找到这里,就真香大白了。我为人人,人人为我,美美与共,天下大同。

2023-07-20 15:37:26 398 1

原创 Go []uint8和string的爱恨情仇

Go []uint8、string的区别

2023-07-12 15:57:24 838

原创 Go Slice 排除异己

产品经理:书接上回,时间轴功能是实现了,很好👍哪里哪里,都是同行的衬托 :小猿产品经理:但是,时间轴展示的事件太杂了,需要加一下过滤产品经理:别把自己上班期间的吃喝玩乐的, 都展示出来OK,我一定严于律己,隐藏实力,不暴漏,争做优秀员工:小猿 产品经理:哦,对了,忘了告诉你了。产品经理:老板着重强调了,经济下行,公司上下同命运,工作要积极---------- :小猿宗旨:满足产品经理的一切不切实际的幻想上干货,别啰嗦。

2022-11-11 15:09:25 323 1

原创 Go 时间轴排序

产品经理:这次评个小需求,大概10分钟就完事儿了好,不要每次都说10分钟,实际讨论一个小时 :小猿产品经理:放心,最多就10分钟OK,开始你的表演吧:小猿产品经理:我们要实现一个时间轴,时间顺序排列产品经理:好了,我讲完了,下班前我要验收。---------- :小猿宗旨:满足产品经理的一切不切实际的幻想。

2022-11-10 14:07:29 640

原创 Go Map有序输出

--------- :小猿。这话说的,干肯定能干。Go之母设计的时候就是故意设置随机值,要无序的输出 :小猿。以上证明了,乱中有序,每次都有小惊喜,人生充满了乐趣,且行且珍惜。(服了,彻底服了,世上还有这种厚颜无耻之人)方案一:map无序,slice有序。借slice东风,成就map有序之壮举。产品经理:别跟我谈条件,10点要演示,距离现在还有15分钟。产品经理:动态配置的字段,要有有序输出,不要一直变化顺序。产品经理:我管你那个,你就说能不能干吧。我为人人,人人为我,美美与共,天下大同。

2022-11-08 21:58:01 1038 2

原创 Go float精度 .00值判断

--------- :小猿。@产品经理,可以了 看下 :小猿。👌,小事情儿,分分钟搞定 :小猿。产品经理:@小猿,能不能把9.00 后面的.00 去掉,9.99展示小数点后两位。产品经理:你看,我像和你玩儿的嘛,赶紧的、麻溜儿的。产品经理:价格要保留小数点两位 9.99/元,能办到嘛。产品经理:好的,优秀的你👍。我为人人,人人为我,美美与共,天下大同。宗旨:满足产品经理的一切不切实际的幻想。输出 float64。

2022-11-07 21:54:35 797

原创 [git] fatal: refusing to merge unrelated histories

refusing to merge unrelated histories

2022-08-25 20:22:57 123

原创 SQL 分组统计去重有条件的过滤

见字如面,如标题拆分:分组 GROUP BYfield_name 统计 COUNT(field_name) 去重 DISTINCT field_name 条件过滤 CASE WHEN age> 18THEN ageEND示例:前序:表结构CREATE TABLE `data_table_name` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键'...

2022-05-30 18:08:54 3181

原创 yaf 框架捕获全局异常

PHP版本:5.4yaf版本:2.3.5注意:以下代码示例为,开启命名空间:yaf.use_namespace=On一、开启异常捕获(如果业务代码中没有try catch,但是有throw,则有框架统一捕获)文件:conf/application.iniapplication.dispatcher.catchException = true二、新建文件ErrorController文件、新建方法 errorAction (默认该方法,统一处理)文件:app/.

2022-04-14 17:56:04 709

原创 ClickHouse特性

ClickHose特性:优点: 1、数据压缩 2、数据的磁盘存储(其他列式数据库,大多需要在内存中处理) 3、多核心并行处理 4、多服务器分布式处理 5、支持SQL 6、向量引擎 7、实时数据更新(MergeTree 顺序写入) 8、索引 9、适合在线查询 (低延迟高响应) 10、支持近似计算 11、支持数据复制和数据完整性 12、角色的访问控制缺点: 1、没有完整的事务支持。 2、缺少高频率,低延迟的修改或删除已存...

2022-04-08 16:06:12 897

原创 CI框架引入service层

一、前戏:C I框架是典型的MVC模式,随着业务的不断更新迭代,慢慢发现C层变得越来越臃肿,身高和体重一个数值。更痛的是,同一个业务逻辑,不能复用,需要复制一份,进而影响了后期可维护,修过一个逻辑,就要想着所有的地方,恐怕遗漏。扯皮:这个bug确实是我写的,但是抛开这点不谈,你们就没有一点责任吗?review的时候大家也都在场,你们当时是不是没有认真对待,还有,测试是怎么做的测试?难道这些都是摆设吗,是走过场吗?幸好这次线上事故没有造成资损,但是希望大家引以为戒,这周的周报我要看到大...

2022-01-05 14:49:05 687

原创 面经·Golang

Swoole 或 Go中协程实现原理,以及为什么会提升效率 swoole 协程:漫谈Swoole协程与异步IO 对比:Swoole协程与Go协程的区别,很详细,很nice - 知乎 Go GMP 调度 Golang的协程调度器原理及GMP设计思想? - Go语言中文网 - Golang中文社区 用户态、内核态 我为人人,人人为我,美美与共,天下大同。...

2021-12-27 18:04:22 369

原创 面经·算法

算法:十大经典排序算法 参考链接:1.0 十大经典排序算法 | 菜鸟教程 算法 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计算排序 桶排序 基数排序 算法:数组查找的时间复杂度为什么是1我为人人,人人为我,美美与共,天下大同。...

2021-12-27 18:02:58 531

原创 面经·目录

PHP MySQL Redis MQ Nginx 架构 算法链接:面试宝典链接·慎点我为人人,人人为我,美美与共,天下大同

2021-12-27 18:01:15 1355

原创 面经·架构

一、设计模式:设计模式一共有 23 种 常见设计模式: 单例模式 工厂模式 外观模式 观察者模式 代理模式 策略模式 六大规则 开闭原则:一个软件实体如类、模块和函数应该对修改封闭,对扩展开放 单一职责原则:一个类只做一件事,一个类应该只有一个引起它修改的原因。 里氏替换原则:子类应该可以完全替换父类。也就是说在使用继承时,只扩展新功能,而不要破坏父类原有的功能。 依赖倒置原则:细节应该依赖于抽象,抽象不应依赖于细节。把抽象层放在程序设计的高层,并保持稳定..

2021-12-27 17:56:14 137

原创 面经·nginx

正反代理 正向代理 正向代理服务器位于客户端和服务器之间,为了从服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端。这里客户端需要要进行一些正向代理的设置的。正向代理中被代理的是客户端的请求 举例:翻墙 用途: 1 为在防火墙内的局域网客户端提供访问Internet的途径,如google网站 2 可以做缓存,加速访问资源 3 对客户端访问授权,上网进行认证 4 代理可以记录用户访问记录(上网行为管理)...

2021-12-27 17:53:10 1227

原创 面经·MQ

MQ对比rabbitmq :心跳丢失 默认 60/s 检测 TCP window full:关于TCP window full/TCP zero window_csdn_zmf的博客-CSDN博客_tcpwindowfull解决 参考链接:Rabbitmq 心跳检测_mb5ff591cb6ec96_51CTO博客 rabbitmq :ACK的机制 如果在处理消息的过程中,消费者的服务器在处理消息的时候出现异常,那么可能这条正在处理的消息就没有完成消息消费,数据就会丢失。为了确保数..

2021-12-27 17:49:50 878

原创 面经·Redis

排版有些丑,忍着点儿,实在忍不了。查看链接:有道云笔记redis的持久化 RDB(快照) 持久化可以在指定的时间间隔内生成数据集的时间点快照 优点: 文件紧凑,只有一个文件。适用于灾难恢复 性能高,父进程 fork 一个子进程就行,无须执行其他磁盘IO操作 RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快 缺点: 数据已丢失,虽然可以设置间隔时间,保存的时候也较费时 消耗服务器资源,每次备份都要fork 一个子进程 .

2021-12-27 17:45:56 181

原创 面经·PHP

排版有瑕疵,可以查看链接:有道云笔记fast-cgi与cgi的区别 在web服务器方面 cgi fork一个新的进程进行处 fastcgi 用tcp方式跟远程机子上的进程或本地进程建立连接 在对数据进行处理的进程方面 cgi 读取参数,处理数据,然后就结束生命期 fastcgi 要开启tcp端口,进入循环,等待数据的到来,处理数据 对比 CGI相较于Fastcgi而言其性能瓶颈在哪呢? CGI针对每个http请求都是fork一个新进程来进行处理,.

2021-12-27 17:06:27 291

原创 面经·MySQL

mvcc 参考链接:大厂最爱问的MVCC,到底是个啥? MVCC,即Multi-Version Concurrency Control (多版本并发控制)。它是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 通俗的讲, 数据库中同时存在多个版本的数据,并不是整个数据库的多个版本,而是某一条记录的多个版本同时存在,在某个事务对其进行操作的时候,需要查看这一条记录的隐藏列事务版本id,比对事务id并根据事物隔离级别去判断读取哪个版本的数据。 .

2021-12-27 17:00:55 604

原创 Go 生成指定长度随机字符串

package mainimport ( "fmt" "math/rand" "time")func main() { str := RandString(16) fmt.Printf("随机字符串: %#v \n", str)}func RandString(lenNum int) string { var chars = []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",.

2021-09-10 22:36:26 1022

原创 Mac终端 You have new mail in /var/mail/

背景:mac打开终端时,一直提示出现这句,原因是cron 触发的。You have new mail in /var/mail/username解决办法:一、按照提示去查看信息cat /var/mail/usernameusername 为自己的目录,需要替换二、看完之后,不想保留在服务器了,那就删了吧sudo rm -rf /var/mail/usernameusername 文件为自己的目录我为人人,人人为我...

2020-11-30 11:29:52 1314

原创 Go 导入Package冲突--起别名

背景:导入包的路径,最后的一级相同,造成冲突,需要重定义别名,进行引用操作。例如:提示:重新声明导入包的名称起别名的流程:包的昵称 包的路由例如:提示:标签1 的包 引用保留 user标签2 的包 引用重定义为modelUser引用示例:包引用时,非全路径,默认缩略取路径的最后一级目录。...

2020-10-11 22:29:37 1941

原创 PHP 批量写入Redis-GEO数据

redis: 方法:GEOADD (geoadd)redis>GEOADD redis_key 经度1纬度1 "位置名称1" 经度2纬度2"位置名称2"redis>GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"PHP: ...

2020-04-21 21:47:05 1318

原创 PHP 多维数组所有key转为小写

常用于变量命名规范:/** * PHP 多维数组所有key转为小写 || 大写 * @param $array //数据 * @param int $case //CASE_LOWER 小写、CASE_UPPER 大写 * @return array */function array_change_key_case_all(&$array, $case ...

2020-04-10 14:04:18 1266

原创 Mysql挖坑填坑——心酸历程

一切来源于信任,一切来源于自信,一切来源于膨胀……悉数一路走来的Mysql挖坑填坑的心酸历程,吃一堑长一智,愿程序zero bug!(痴心妄想)1、 多表:表字段相同原SQL:两表联查,pay_status 字段,A 表有,B 表没有,并没有使用别名alias,限定where 使用那个表的该字段名事故:新业务,B 表加入同样字段,没有考虑到这条SQL,且新需求不涉及这块业务,测试也...

2019-10-23 10:53:29 326

原创 Mysql 优化——索引失效

索引失效:组合索引的最左前缀原则 隐式转换 有or必全有索引 like以%开头 where中索引列有运算 where中索引列使用了函数 如果mysql觉得全表扫描更快时(数据少)本文主要记录:最左前缀 和 隐式转化;最左前缀:为name、age、phone创建索引:where name= 'W' andage = ' 12 ' andphone = ' ...

2019-09-23 18:00:39 248

转载 TCP: 内核参数(一)

tcp_max_syn_backlog——————-端口最大 backlog 内核限制。此参数限制 服务端应用程序 可以设置的端口最大 backlog 值 (对应于端口的 syn_backlog 和 backlog 队列长度)。动机是在内存有限的服务器上限制/避免应用程序配置超大 backlog 值而耗尽内核内存。如果应用程序设置 backlog 大于此值,操作系统将自动将之限制到此值。t...

2019-08-10 17:05:52 1675

原创 Swoole:WebSocket 分布式部署

场景:多台服务器 同一用户,可拥有多个客户端,消息可共享uid1 的连接fd 在 S1 服务器上 uid2 的连接fd 在 S2 服务器上 uid1 想要和 uid2 通讯,推送消息问题:uid1 和 uid2 用户 连接不同的服务,fd 是相对于当前连接的服务的文件描述符,作用域当然也仅限于当前服务器,跨服务想实现通讯,肯定要借助中间件,来传递消息。解决:方案一、...

2019-08-08 12:06:17 3751 1

原创 Swoole:心跳检测

前言:心跳:心脏还在跳动,说明还有生命迹象,还活着,还活着就表示还可以继续工作,生命不止,工作不息。WHY为什么需要心跳检测?这个小孩没娘,说来话长,long long ago ,TCP协议的诞生,惊天地泣鬼神,改变了世界。建立连接:三次握手断开连接:四次挥手 ‍♂️趣解:寓言两则:(client、server的精彩对话)。此故事纯属虚构,如有雷同,不好意思。...

2019-08-04 21:47:45 3947

原创 如何正确使用PHP -- 引用

什么是PHP引用角色: 姓名:王笨笨 爱称:狗蛋儿自我介绍:大家好,我是王笨笨,很高兴认识大家,大家可以叫我狗蛋儿。我就是我,不一样的烟火。生涩的概念:引用就是别名,多个名字指向同一个变量内容,没有重复冗余的内存开销。$a = 'runBaby';$...

2019-07-10 16:21:16 355

原创 supervisor 同时开启多个进程 numprocs > 1

Error:Error: %(process_num) must be present within process_name when numprocs > 1当同一个脚本,希望启动多个守护进程时。背景:一台消费者服务器,同一消费者脚本,希望开启多个进程,(多个消费者,消费)需要增加两个参数:process_name=%(program_name)s_%(pr...

2019-06-05 16:47:27 15578 2

原创 RabbitMQ防止消息丢失PHP实现

RabbitMQ防止消息丢失,保证消息传递的可靠性,保证每条消息都正常传递,并最终至少消费一次。背景:订单支付状态同步,微信、支付宝、银联等第三方平台异步回调之后,进入队列,为其他服务调用提供数据。为了保证支付状态同步业务的可用性,肯定不希望有订单在传递过程中丢失。问题:什么情况下消息可能丢失呢?角色:生产者、RabbitMQ服务、消费者 (显然,三大主角都有可能演砸)华丽的下...

2019-05-13 14:43:39 2333 8

原创 RabbitMQ延时队列+supervisor守护进程消费

场景:用户A购买商品,点击下单,此时库存减少,商品只为等君支付,可惜,日复一日,辗转反侧,侧夜难眠,不见知音归来,该商品长厢厮守,孤独终生。桃叶儿尖上见,柳叶儿遮满了天,日思夜想用户A,何时把单结啊~~,(采用下单减库存的方法,超时未支付,库存还原)你无情无义,我也不必为你等待。技术方案:RabbitMQ 消息队列实现订单延时处理,因为RabbitMQ也没有这样的实现方法,需要组合使...

2019-04-19 20:32:14 4419 2

原创 docker操作之删除镜像

命令:docker image rm 62b0a5c3ea45Error response from daemon: conflict: unable to delete a081f7d44c38 (must be forced) - image is referenced in multiple repositories备注:62b0a5c3ea45(为image ID)...

2019-03-14 18:01:54 1930

原创 swoole定时器+异步任务处理订单超时

背景:一个紧俏的商品,短时间内抢购,需要支付,技术方案,问题:1、防止超卖 2、防止重复购买 3、订单超时处理总结:订单限额,一人一单,订单超时处理流程图:https://www.processon.com/view/5c9452cbe4b0afc7441bd157本方案在不使用专业的队列的情况下,简单实现上述三个问题前端:1...

2019-03-11 19:29:41 7335

原创 在URL传输过程中解析问题 url_encode "+" 号

背景:客户端登陆,密码需要,加密处理,非明文传输。加密后的字符串中含有"  + “,并且传输时使用 url encode 编码,字符串编码为含有 " %2B"。但是后端服务收到的值,有且仅有" %2B "自动解析为了" + "。服务端使用URL decode 解密,把" + " 号解析为了空格。导致解析数据错误,加密字符串逆向解析失败。(文字描述,生涩,数据直观)案例:客户端登陆,密码...

2019-01-15 11:36:16 7990

原创 Linux:time输出

背景:我们通常在比较程序的性能,time,就是查看运行时间。本文采用的PHP的cli模式,执行脚本。 可见三个重要参数:real、user、sysreal:(真正的,现实的),可认为程序的运行时间;user:(用户),其为用户态,cpu运行的时间。程序运行分为核心态和用户态;sys::(系统),系统运行时间。 名词解释:核心态(Kernel Mode):...

2018-12-04 15:57:39 4467

原创 ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION :浏览器下载报错

ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION:Excel导出报错,浏览器崩溃。服务端设置的响应头: header('pragma:public'); header('Content-type:application/vnd.ms-excel;charset=utf-8;name = "'.$xlsTitle.'.xls"...

2018-11-30 10:38:55 8312

原创 Mac切换默认PHP版本为MAMP

序:Mac自带PHP环境,后为开发方便,安装了MAMP软件,同时支持任意切换PHP版本。在终端运行php -v,查看到的PHP版本为PHP7.1;在MAMP中选择的是PHP5.6,所以,在127.0.0.1/phpinfo.php中,输出的是PHP5.6。预期结果:cli模式和php-fpm模式,所输出的PHP版本一致。 查看环境变量,PHP运行的文件位置:which  php修改...

2018-10-30 14:35:58 8250 4

空空如也

空空如也

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

TA关注的人

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