自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PHP strtotime 转月份的问题

需求输入 开始日期和结束日期,返回两个日期之间 月份的列表,包含开始和结束的月份实现可能代码会这么写function showMonthRange($start, $end) { $end = date('Ym', strtotime($end)); // 转换为月 $range = []; $i = 0; do {...

2020-03-16 11:58:51 353

原创 如何做好技术团队的管理(个人经验)

人员管理人员组成产品必备,人数看团队数量测试必备,人数看团队数量开发前端必备,人数看团队数量后端必备,人数看团队数量移动端看业务运维看人员质量和基础组件dba看人员质量人员招聘面试基础扎实经验丰富性格靠谱大公司背景意识强新人培训导师制规范文档沉淀人员成长技术成长靠个人...

2019-10-25 17:49:19 1474

原创 php浮点数精度的解决方式

背景在写代码的时候,遇到一些浮点数运算,例如:单价乘以数量等于总价,很习惯的写法是 $total = $price * $num;大部分情况下,这样是没问题的,但是如果是涉及到钱的计算,订单或者金融数据的计算,这个时候问题就大了,就算是保留4位小数,亿级别的订单,就会有上万的计算误差,如果是淘宝这样的,这个锅谁来背?演示很多示例都是0.58这个数,因为这个数比较特殊,其他的也有很多这样的数...

2019-10-12 17:41:29 1282

原创 Laravel根据Model数据复制一条记录

背景最近需要写个脚本补历史数据,要根据某条记录,复制一条记录,修改一个字段后再插入表中,原来想的比较简单,代码这样写:$oldModel = Model::query()->where('id', 123)->first();$newModel = clone $oldModel ;unset($newModel->id);$newModel->status= ...

2019-10-12 10:24:29 3139

原创 mysql锁总结

文章目录背景锁的类型表锁和行锁快照读和当前读乐观锁和悲观锁乐观锁悲观锁共享锁和排它锁意向共享锁和意向排它锁间隙锁(gap 锁)不同隔离级别下不同加锁的场景分析背景很多时候有一种感觉,自己写的代码还没有出bug有两个原因,一个是运气好,一个是mysql优化得好,出错的几率很小,所以随便怎么写,没有达到百万级数据量,没有达到一定的并发,一般是不会出问题的,但是自己对mysql知道的还是太少,只会实...

2019-09-27 19:00:28 156

原创 supervisor管理lumen的队列

背景项目中使用了rabbitmq作为队列,使用lumen中的job来执行,这种方式简直开创了php异步执行的先河,使用了之后,一个字,爽,再也不用担心超时的问题了,什么大型操作都放到队列里面去搞,简直心情愉悦,没有用过laravel 的job,不要说你用过laravel,但是job的管理和运维也是个问题,如果没有统一去管理,多了之后维护是个大问题,挂了怎么办,手动重启?也没人每时每刻的看着啊,不...

2019-09-27 17:35:09 535

原创 linux crontab可代码配置方案

背景用linux服务器,crontab使用的是很多的,大型项目,可能一台机要配置几十上百个定时任务来跑,每次发布都是crontab -e上去编辑然后保存,数量少还好,但是后面维护起来就比较麻烦了,有些没用的也不敢清,越多维护的成本越高,如果能做成代码里面配置的就好了,指定哪台机有哪些crontab,发布的时候,更新一下就好了,其实crontab是支持这种做法的方案crontab 一般使用的比...

2019-09-27 17:12:07 118

原创 mysql索引总结

聚簇索引和非聚簇索引以前每次问到innodb和myisam引擎之间有什么区别,总是会回答,myisam不支持事务,表锁,非聚簇索引innodb支持行锁,支持事务,聚簇索引,其实innodb并非只用了聚簇索引(primary key,主键索引),更多的还是非聚簇索引(secondary key,辅助索引/普通索引),当然联合索引和唯一索引也是非聚簇索引(secondary key,辅助索引/普通...

2019-09-25 18:32:06 107

原创 php中的finally使用心得

最近在写一个laravel中间件的时候,因为里面有好几层异常的处理,感觉代码不太简洁,于是想到了finally,按照字面理解,finally是最后执行的,原以为是用来处理异常的,后来发现不管有没有异常,都会走到finally的那段代码,包括前面有return,也会走到finally代码段,后来查了一下资料,finally执行流程如图:特别要注意的是1,如果catch里面有return或者tr...

2019-09-25 17:30:00 1387 1

原创 laravel migration实践(踩坑经历)

背景数据库迁移也是laravel强大的功能之一,但是一直也只是在文档上看过,实际项目中还没有使用过,因为需要迁移的场景比较少,而且需要迁移的时候,直接mysqldump也很方便,好像不是很有必要。但是最近遇到一个问题,开发不能登机器操作数据库了,这就比较难受了,一般发布新版本,都会有一些数据库变更的操作,常见的有:加表,加字段,加索引,初始化数据,修历史数据。当然改字段一般是不会改,除非特殊情...

2019-09-24 11:42:46 3593

原创 mysql(innodb)慢查询问题定位实践

背景最近对线上的慢查询做了一个分析和优化,这里做一下总结,使用的引擎规定都是innodb,架构是三主集群,半自动同步,需三台机都写入成功才返回慢查询问题分析问题一:每日0点左右,数据库写入时间很长,甚至十几秒分析:经过排查,发现是0点左右会有一些数据备份的操作,删除N天之前的备份数据,新增前一天的新备份数据,数据量达到百万级别,这样一删一增,三主之间还需要同步数据,这个时间持续了几分钟,在...

2019-09-10 17:50:47 600

原创 linux下查看最消耗CPU、内存的进程

背景作为一名后端程序员,有时候遇到机器内存不足,cpu飙高的时候有点束手无措,不知道怎么办,其实最重要的是要找出系统最消耗cpu和内存的进程,然后针对解决就可以了指令CPU占用最多的前10个进程:ps auxw | head -1; ps auxw | sort -rn -k3 | head -10 内存消耗最多的前10个进程ps auxw | head -1; ps auxw | ...

2019-09-10 16:31:59 501

原创 php foreach的使用心得

php foreachforeach是php最常用的遍历数组的方法了,以前也没太关注foreach的原理,直到最近出现了一些比较诡异的情况的时候,发现foreach的一些问题功能介绍遍历数组非引用遍历$array = [1,2,3];foreach($array as $k => $v){ $v = 4;}var_dump($array);输出:array(3) { ...

2019-08-06 15:04:12 182

原创 php根据word模板生成pdf文件并添加水印

php根据word模板生成pdf文件并添加水印背景说明工具介绍示例代码总结背景说明在一些项目中,经常会出现这样的需求用户上传了word或者excel文件,需要审核或者查看这些文件内容的时候,总不能一个一个下载吧,那样用户是很难接受的,因此需要一个word,excel,甚至ppt预览的功能,一般的方案都是把word和excel转成pdf然后前端就可以直接预览了,ppt的话,还需要转成图片。...

2019-07-17 11:45:12 2758

原创 php大量数据Excel导出的解决方案【5.2以上的版本】

背景前面有一篇文章介绍了php7以上的版本的大量数据的excel导出方案,但是对于还没有升级到php7的同学没啥用,因此这里又去找了一些资料,发现了一个支持php5.2以上版本的php excel导出库,现在应该没有人在使用php5.2以下的版本了吧,这里推荐以下,因为本地是7.0版本,所以实际的数据没有测试过,但是看git的说明,肯定是比phpexcel库要快。介绍git地址:https:...

2019-07-17 11:03:26 766

原创 记一次AWK程序耗时日志分析

AWK简介awk和grep sed并称为linux三剑客,听名字就很牛逼,grep常用来做关键字匹配,什么 ps -ef | grep ‘XXX’查找进程 ,cat XXX.log | grep '关键字’查找文件的关键字应该是比较常用的了,sed好像没用过,awk以前听别人提到过很久之前使用过一次用来统计访问量,现在忘记的差不多了,这里刚好有一个需求是分析程序的耗时,因为和各种服务都有关联,需...

2019-06-20 17:19:42 1761

原创 git强制pull,git更新报错怎么办,git指令

git强制拉取远端代码的指令今天维护一个比较久没有更新的系统时候,在发布到测试环境的时候出现一个问题,测试环境发布都是用git指令:git pull origin 分支名 由于这台机器太久没有更新了,出现了报错:error: Untracked working tree file 'vendor/autoload.php' would be overwritten by merge. ...

2019-06-20 11:16:12 2119

原创 php百万级数据Excel导出的解决方案【7.0以上的版本】

背景如果你的php版本低于7.0,那下面说的都是废话!!!!php后台开发经常会遇到excel导出的需求,遇到动不动几十万的导出需求,经常束手无策,网上找了很多方案,基本都是导出成cvs格式,没错cvs格式占用内存少,导出快,很多时候用cvs可以解决问题。但是作为一个追求最优方案的程序员,是不满足于降低产品体验等级来将就的,而且产品也不允许这么做,就要excel!之前面对这种需求,我也没有办法...

2019-05-31 20:56:54 6782 5

原创 php7的三元运算符

$a = $c ?? $b;等同于 $a = isset($c) ? $c : $b;$a = $c ?: $b;等同于 $a = $c ? $c : $b;

2019-10-25 18:06:15 1456

原创 php 获取本机ip

有时候代码里面需要根据本机ip做一些判断,获取本机ip的代码如下参考如下,性能很高: /* * 获取本机ip */ public function getLocalIp() { $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_connect($soc...

2019-10-15 17:34:21 291

原创 laravel 实现数据备份

laravel有时候需要快速备份表,可参考代码如下:需要新建一个备份库 public function backupTable($table, $backupTable = false, $connectionName = 'mysql', $backupConnection = 'mysql_backup') { $sourceConnect = DB::co...

2019-10-15 17:32:38 667

原创 Laravel 查询构造器get出来的数据转为数组

背景laravel查询构造器get查询出来的数据是对象类型,虽然在foreach的时候,也可以用数组操作,但是其实是有一个隐式转换的过程,但是这次需要把get出来的数据作为数组传入,一时之间还不知道怎么转,又不想foreach,ORM查询是有toArray()操作的,这个查出来就没有这个操作解决方式后面发现可以这样做$data = DB::table('test')->get()-&...

2019-10-12 10:40:13 2786 2

原创 lumen框架记录慢日志

文章目录背景代码实现背景mysql有慢日志的功能,可以记录下执行慢的sql,但是sql的慢日志有个问题就是一旦项目大了之后,给你一个sql,你也找不到是在哪里调用的,很难定位到哪里的操作慢,所以最好是代码里面能够记录一下,哪一行代码执行的sql慢,这样就减少了不少定位问题的时间。代码实现1,找到AppServiceProvider这个类,在boot中加入如下代码: try { ...

2019-09-29 11:19:29 451

原创 php静态方法使用心得

php静态方法调用静态方法的理解php支持面向对象已经很多年了,面向对象最基础的就是类和类的实例化,使用类的时候需要先实例化一下,才能调用类的一些方法或者访问类的属性,但是实际的开发过程中,很多时候有一些需要是不用实例化的就调用的,例如help工具函数的类,本身help里面的函数没有什么关联,如果每次调用都要实例化一次的话,实在是没有这个必要,还有一些config的类也是如此,因此需要静态的方...

2019-08-06 15:38:19 132

原创 记录一些有用的linux指令(持续更新)

记录一些有用的linux指令grep关键字查询grep 'keyword' xxx.log多个关键字(或,满足一个)grep 'keyword1\|keyword2' xxx.log 或者grep -E ‘keyword1|keyword2’ xxx.log多个关键字(与,都满足)grep ‘keyword1’ xxx.log | grep 'keyword2'排除一个关键...

2019-08-02 10:44:35 89

原创 php字符串匹配相关函数性能对比

php字符串匹配相关函数性能对比常用的字符串匹配的方法(包含中文的模式)1,mb_strstr 或者不区分大小写 mb_stristr,判断一个字符串是否包含另外一个字符串2,mb_strpos或者不区分大小写 mb_stripos,返回一个字符串在另外一个字符串第一次出现的位置3,preg_match 字符串是否匹配示例代码性能比对函数循环次数字符串长度耗时(ms...

2019-07-31 17:36:53 769

原创 如何强制关闭windows和linux的进程

linuxlinux比较常用kill -9 {pid}windwoswindows用得少,但是经常出现进程卡死在哪里,不能重启也不能关闭,为了避免经常查记录一下taskkill /im nginx.exe /f或者taskkill /pid {pid} /fwindows在【任务管理器】=》【服务】那里可以看进程pid...

2019-07-22 10:11:10 265

原创 关于web安全的一些知识整理

常见web攻击方式XSS跨站脚本攻击,这个是最常见的一种攻击方式,基本一些框架都有防御的方式,目的是在页面注入浏览器能够执行的代码,在别人访问的时候能够使用注入的代码进行一些操作,例如盗取用户的cookie来越过登录,直接进入登录状态,盗取用户的一些隐私信息等等。XSS主要分为两类,一类是反射型攻击,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击,一类是存储型攻击,恶意代码被保存到目...

2019-06-21 19:49:33 153

原创 Lumen环境搭建

Lumen环境搭建环境要求composerLumen安装器下载Lumen创建项目(可指定版本)环境要求PHP >= 5.4Mcrypt PHP ExtensionOpenSSL PHP ExtensionMbstring PHP ExtensionTokenizer PHP Extensioncomposerphp包管理工具,不了解的需要掌握Lumen安装器下载下载Lu...

2019-05-27 12:58:42 820 4

空空如也

空空如也

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

TA关注的人

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