自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

心有猛虎,细嗅蔷薇!

纸上得来终觉浅,绝知此事要躬行!

  • 博客(70)
  • 资源 (1)
  • 收藏
  • 关注

原创 MYSQL一次千万级连表查询优化(二)

概述:交代一下背景,这算是一次项目经验吧,属于公司一个已上线平台的功能,这算是离职人员挖下的坑,随着数据越来越多,原本的SQL查询变得越来越慢,用户体验特别差,因此SQL优化任务交到了我手上。 这个SQL查询关联两个数据表,一个是攻击IP用户表主要是记录IP的信息,如第一次攻击时间,地址,IP等等,一个是IP攻击次数表主要是记录每天IP攻击次数。而需求是获取某天攻击IP信息和次数。(以下SQL

2017-10-26 18:05:59 28045 2

原创 MYSQL一次千万级连表查询优化(一)

概述:交代一下背景,这算是一次项目经验吧,属于公司一个已上线平台的功能,这算是离职人员挖下的坑,随着数据越来越多,原本的SQL查询变得越来越慢,用户体验特别差,因此SQL优化任务交到了我手上。 这个SQL查询关联两个数据表,一个是攻击IP用户表主要是记录IP的信息,如第一次攻击时间,地址,IP等等,一个是IP攻击次数表主要是记录每天IP攻击次数。而需求是获取某天攻击IP信息和次数。(以下SQL

2017-10-25 18:02:11 66778 28

原创 PHP百万级数据导出方案(多csv文件压缩)

概述:最近公司项目要求把数据除了页面输出也希望有导出功能,虽然之前也做过几个导出功能,但这次数据量相对比较大,差不多一天数据就20W条,要求导7天或者30天,那么数据量就轻松破百万了甚至破千万,因此开发的过程中发现了一些大数据导出的坑,在此跟大家分享一下,互相学习。准备:1、PHP设置坑:set_time_limit – 设置脚本最大执行时间: 此配置一般PHP默认是30秒,如果你是数据小的,可

2017-08-25 16:49:36 32014 30

原创 PHP面试必备系列--缓存分布式锁

对于缓存分布式锁,属于一个高频的PHP面试题,但是往往很多人不了解,或者只是了解一部分,经不起推敲,其实可以在这篇文章中了解,算是全面介绍了REDIS缓存分布式锁,并且通俗易懂,值得反复阅读。深度剖析:Redis分布式锁到底安全吗...

2021-06-21 16:43:25 273

原创 浅谈面试经验(面试官角度)

背景概述:最近公司需要新招一组项目开发人员,我很荣幸能担任面试官来与应聘者进行交流,我主要负责面试的岗位是PHP中高级工程师、测试中级工程师,目前面试了大概20个PHP应聘者,10个测试应聘者。自己作为面试官这些经历让我对面试过程有了一些新的认识,写这篇文章是为自己能向贤思齐,对不好的现象引以为戒。简历部分:作为面试官,其实并没有参与到简历筛选,我们公司简历筛选主要是人事进行筛选和交流,因为除了技能上的考虑,公司也有其他维度的考虑,比如:薪资、工作经验、学历等。因此,一般是到我手上的简历只有面试之前的

2021-06-17 15:08:18 369

原创 分享Laravel拖拉排序功能的实现

概述:最近公司的后台管理新需求是做一个某列表的拖拉排序功能,本来认为这个功能实现也挺简单的,但实际做起来,其实也会遇到一些问题。因此,我决定写篇文章来给大家分享一下。准备:1、排序的数据存储实现分析:既然是排序,那么就是要求每行数据要有明确的前后区分,也就是要求排序的字段有唯一性,唯一性当然会想起表主键id,但是我们不可能对主键进行修改的,这样会导致一些根据主键关联的可能会出现问题。那我们只能创建一个新的字段decimal(11,4)类型的sort,并且建立唯一索引,来区分这个排序了。这里为什么是

2020-12-11 18:03:29 1028 1

原创 MYSQL如何让主键使用BTREE索引

最近同步测试场和正式从的数据库结构,发现正式场的数据表的主键都没有使用BTREE,于是需要进行新增,但实际上Mysql是没有提供直接修改主键的语句的,需要先删除后新增。同时,因为主键索引大多数是自增的,一般你直接使用删除语句:alter table jd_product_bricks drop primary key;数据库会报错:Incorrect table definition; there can be only one auto column and it must be defined

2020-09-01 17:44:41 2705

原创 Laravel如何实现操作表日志(观察者模式)

前言:最近工作项目都比较忙,难得稍微有点时间,我来分享一下最近解决的一个账号登录方面的安全问题。概述:说到账号登录接口方面的安全问题,大概是分为以下几种:SQL注入暴力爆破伪造响应服务器我们开发目前防止这些情况出现,最常见的方案就是明文加密,各种各样的验证码、手机短信验证、特殊字符戳过滤、ip白名单、ip黑名单,密文传输等等问题介绍:这个项目是一个表单报名项目,前后端分离,前端用的是VUE,后端用的是TP5,流程是用户进行填写会议的密码和验证码,然后如果验证成功就会进入到表单报名的页面

2020-08-03 15:38:20 1374

原创 关于账号登录接口安全方面的简单见解

前言:最近工作项目都比较忙,难得稍微有点时间,我来分享一下最近解决的一个账号登录方面的安全问题。概述:说到账号登录接口方面的安全问题,大概是分为以下几种:SQL注入暴力爆破伪造响应服务器我们开发目前防止这些情况出现,最常见的方案就是明文加密,各种各样的验证码、手机短信验证、特殊字符戳过滤、ip白名单、ip黑名单等等问题解决方案:1、java版本的domo用PHP重写其实这澳...

2019-12-09 17:18:02 658 1

原创 PHP 对接ICBC支付的经验分享

概述:最近在做一个澳门的商城项目,其中需要跟当地的工商银行对接支付,其中的提交支付时,工商银行的加密有自己加密程序,然而他们只提供了JAVA和C 语言的DEMO,并没有PHP的DEMO,甚至连PHP的扩展也说没有,一时让我陷入了困境,不知道怎解决,于是我在百度 谷歌上寻找解决方法。问题解决方案:1、java版本的domo用PHP重写其实这澳门提供的接口的加密方式跟国内大陆的一致,也是用in...

2019-07-16 12:25:19 1517 2

原创 谈谈TP5防渗透攻击的一些经验

概述:TP5是优秀的轻量级PHP开发框架,为我们的开发提供了很多便捷。但是有时候TP5一些默认配置很容易忽视,不然会导致渗透攻击,本文我来分享一下我的一些小经验问题列表:1、关闭调试模式调试模式为我们开发人员发现错误,查找错误提供了非常友好且便捷的显示方式。但是也为渗透攻击提供了方便,因此我们需要除了测试环境下,其他环境必须关闭该模式。具体位置为config/app.php(根据你的项目...

2019-04-23 17:27:13 3241 1

原创 简单记录一下xunsearch的小坑

概述:最近做一个项目是类似博客系统的,前台要求标题和内容的搜索,自然就想到全文检索,于是想试一试xunsearch这个开源全文检索引擎。然而调试过程中不算很顺利,这篇文章记录一下遇到的坑。问题列表:Missing field of type ID $xs = new \XS('article');这个报错是来自于上面这行代码创建xunsearch对象时报错的,其实查看源码可以知道,官...

2019-03-20 10:52:13 3477

转载 关于跨域,以及跨域的几种方式

分享一篇非常详细解决跨域问题的文章。转载自 https://www.cnblogs.com/chenshishuo/p/4919224.html  首先我们来想一想              为什么会有跨域这个名词的出现呢?              跨域又是什么呢?为何要跨域?              浏览器的同源策略又是什么?怎么解决?            ...

2019-01-28 13:43:59 436

原创 PHP百万级数据导出方案(生成器直接输出单个CSV)

概述:之前写过一篇文章叫`PHP百万级数据导出方案(多csv文件压缩),发现很多朋友都很感兴趣,但是当时用的方法比较不方便,可能不太符合很多人的需求。后来想了一下如何优化时,了解到能用生成器来处理内存溢出更方便,所以当时文章中也补充分享了一下这想法。然而,发现更多朋友对如何结合生成器导出数据感兴趣,因此这篇文章,我来填下坑。准备:1、PHP设置坑:set_time_limit – 设置脚...

2019-01-25 17:41:12 6552 1

原创 小程序上线小坑(网络异常!err:)

概述:最近和朋友一起兴趣做的小程序商城项目要上线,人手紧缺的情况下,负责后端工作的我,也自然担当起了运维的工作,上传代码,申请审核,发布版本一气呵成。然而,兴致勃勃搜索小程序时候,发现居然报错网络异常!err:(如下图),看界面看是所有API请求都报错或者超时了。可是,诡异的是用开发者工具调试时候,请求一切正常,界面显示正常也没有任何报错。初步发现原因:根据大多数前辈的博客指导,得知可能...

2019-01-09 15:20:08 6080

原创 解决微信emjoy特殊符号插入数据库出错

概述:最近一个项目中调用同事封装的一个微信获取信息接口并处理字段存入数据库处理的功能接口,功能测试阶段发现关注公众号信息并没有成功返回,而且情况是一些账号是正常的,一些人却是有问题的,针对有问题的用户查看日志发现微信官方返回的关注状态与同事接口返回的内容不符合,也就是说没有正常更新到。日志记录相关SQL,插入数据库才发现是微信的emjoy符号导致出现问题。mysql报错内容: “`...

2018-09-03 16:49:48 2501 1

原创 解决支付宝多次执行回调问题的思路分享

最近在做一个新的项目,有调用到支付宝接口,生成订单流水等一系列操作本地很正常,但到了准生产环境就发现经常出现一次性生成好几条记录,写日志才发现原来是支付宝多次回调支付成功的接口。其实,解决方案也很简单,只需要对订单号和流水进行校验就行,对于支付宝返回的order_no校验校验是否已操作过,如果是则直接跳过生成订单和流水等一系列支付成功的数据库操作。...

2018-08-20 18:34:09 3624

转载 数据库常见索引解析(B树,B-树,B+树,B*树,位图索引,Hash索引)

转载记录一下 来自https://blog.csdn.net/wl044090432/article/details/53423333B树       即二叉搜索树:       1.所有非叶子结点至多拥有两个儿子(Left和Right);       2.所有结点存储一个关键字;       3.非叶子结点的左指针指向小于其关键字的子树,右指针指向

2018-04-18 15:42:59 590

转载 Redis设计与实现

转载收藏一下这篇文章Redis缓存设计 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效.  1) 缓存击穿:对于一些设置了过期时间的key, 刚好过期的时候,这时候有个高并发的请求,会导致直接访问数据库,危险.(批量放入时这么用的)先把缓存更新,再更新数据库。单个的时候先更新数据库,再更新缓存 2) 缓存穿透:查询一个一定不存在的数据,导致直接访问

2018-03-21 18:15:55 1474

转载 再谈PHP错误与异常处理(转载)

  博客好久没有更新了,实在惭愧,最近在忙人生大事,哈哈!这段时间没有看什么新的东西,结合项目中遇到的PHP异常处理问题,我又重新梳理了之前模糊的概念,希望对大家理解PHP异常处理有所帮助。  请一定要注意,没有特殊说明:本例 PHP Version < 7   说起PHP异常处理,大家首先会想到try-catch,那好,我们先看一段程序吧:有一个test.php文件,有一段简单的PH...

2018-02-09 12:27:10 631

转载 PHP设计12306.cn (转载)

在知乎上看到的问题与答案,觉得非常值得学习与思考,在此记录一下: 值得注意的是原答主忽略了一种购票逻辑,我咨询后,答主也同意我的想法。 原答案:举例说明,用PHP+MySQL实现12306购票和退票以及余票查询逻辑. 普通商品的库存之间没有关联性,库存量都是确定的. 火车票跟普通商品不同,同一车次不同路段的车票的库存可能会相互影响. 所以数据库中不应存储某个车次某个路段的余票数量,而应存储

2017-12-01 09:50:08 959

原创 "约瑟夫环“分析+程序(PHP)

这里写链接内容 概述:“约瑟夫环”是一个数学的应用问题:一群人排成一圈,按1,2,…,n依次编号。然后从第1个人开始数,数到第m个,把它踢出圈,从他后面再开始数, 再数到第m个,在把他踢出去…,如此不停的进行下去, 直到最后只剩下一个人为止,那个人就获得大奖。要求编程模拟此过程,输入m、n, 输出最后那个人的编号。 目前,在网上了解到有几种方法,例如:模拟方法,递归方法,递推方法,数学方法等等

2017-11-30 17:23:43 1335

原创 聊一聊laravel query builder 使用子查询

概述:项目当中经常用到复杂SQL带有子查询,而Laravel的查询构造器并没有直接提供转化成子查询的方法,或者说尽管提供了方法,可是给出来的例子却不太具体,对刚上手的新手来说非常不友好,本文章主要是聊一聊Laravel如何构造各种带有子查询的SQL。 准备:首先,Laravel一般实现子查询的两种方式:1、toSql()+getQuery()+raw()方法:toSql()方法的作用是为了获取不带

2017-11-22 17:39:06 18257 4

原创 GROUP BY 条件查询最新时间记录

概述:最近项目一个查询需求是从一个表中同一个IP多条记录的只获取一条IP记录,而这条IP记录要最新的。很明显需求没什么难,分组当然想到的是group by,但是这里是有个时间条件筛选的。虽然网上很多答案,但是我发现实际操作上是没有生效的,不知道是MYSQL版本问题还是答主们只是理论而没有实际尝试过,这里分享一下我的处理方式。 准备:1、首先看我准备了同一个IP两条数据,时间不一样的。 2、

2017-10-25 12:35:10 12865 6

转载 php ip2long 出现负数原因及解决方法

php提供了ip2long与long2ip方法对ip地址处理。1.ip2long — 将一个IPV4的字符串互联网协议转换成数字格式int ip2long ( string $ip_address )1参数: ip_address 一个标准格式的地址。返回值: 返回IP地址转换后的数字 或 FALSE 如果 ip_address 是无效的。 2.long

2017-09-08 10:30:06 1003

原创 PHP RES加密如何避免密文过长和乱码

在最近的项目当中,是把原来的功能封装一层弄成接口给第三方调用,其中就接触到了弄签名加密这一块,用的是RES加密,思路是用公钥和POST参数拼接成字符串再进行公钥加密,但是因RES加密对密文是有要求的,有长度限制的。POST数据过长会导致密文数据过长,从而解密失败,因此我们解决这个问题的思路是对密文进行MD5加密,然后把加密后的数据进行RES加密,但是RES加密过的数据也有可能因为编码问题导致乱码,因

2017-07-18 23:44:51 1555

原创 Websocket学习笔记

1、Websockt 是HTML5出的持久化的协议,HTML是指一系列新的规范、新技术。 2、HTTP是不支持持久连接的(长连接,循环连接不算) 3、HTTP的生命周期通过 Request 来界定,也就是一个 Request 一个 Response ,那么在 HTTP1.0 中,这次HTTP请求就结束了。 4、在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTT

2017-07-04 11:55:26 616

原创 图文并茂手把手教你添加swoole扩展

概述:要想PHP实现异步、并行、高性能网络通信,我们可以添加Swoole扩展,然而官方提供的安装方法并不算详细,在此我分享一下我的小白安装经历。准备:1、Swoole是有环境的依赖的,我就直接从官方复制过来:仅支持Linux,FreeBSD,MacOS,3类操作系统Linux内核版本2.3.32以上PHP5.3.10以上版本,包括PHP7gcc4.4以上版本或者clangcmake2.4+

2017-03-30 15:21:45 3441

转载 认识HTML5的WebSocket(转)

在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API。WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端使用简单的语法有效地推动消息到服务器。让我们看一看HTML5的WebSocket API:它可用于客户端、服务器端。而且有一个优秀的第三方API,名为Socket.IO。一、什么是WebSoc

2017-03-29 15:52:25 520

转载 使用PHP+Swoole实现的网页即时聊天工具:PHPWebIM(转)

使用PHP+Swoole实现的网页即时聊天工具全异步非阻塞Server,可以同时支持数百万TCP连接在线同时支持websocket+comet2种兼容协议,可用于所有种类的浏览器包括IE拥有完整的UI界面支持单聊/群聊/组聊等功能支持发送表情支持永久保存聊天记录基于Server PUSH的即时内容更新,登录/登出/状态变更/消息等会内容即时更新 最新的版本已经可以原生支持IE系列浏览器了,基于

2017-03-29 15:37:59 11544

原创 一步步教你搭建别人的laravel项目

概述:在多种的PHP开发框架(PHP Web Framework)中,说到简洁、优雅的 当然是Laravel,并且目前Laravel发展迅速,今天已经到5.4版本了,然而国内关于Laravel的资源却不多,多数问题还得到国外的技术论坛去找。最近我的公司也给一份Laravel代码让我们自己搭建学习一下,搭建过程问题不少,我这里分享一下给大家。准备:1、Laravel 框架对系统环境有一些要求。如-

2017-02-17 16:07:36 4962 2

转载 各种SQL查询技巧汇总 (转)

看到了一篇总结了SQL查询技巧的文章,觉得非常不错,在此转载收藏一下。 原文地址:http://blog.csdn.net/liuxinmingcode/article/details/51554061selectselect * from student;all 查询所有select all sex from student;distinct 过滤重复select distinct sex

2017-02-10 10:28:29 1130

原创 PHP缓存锁原理及利用

概述:项目当中经常要考虑数据高并发的情况,为了避免并发导致出现一些资源重复请求的问题,可以使用缓存加锁机制。 例如取微信access_token不加锁可能会导致非常严重的后果。准备:缓存锁,顾名思义,当然离不开缓存,这篇文章用到的redis缓存,可以根据自己的需要要选择合适缓存。 缓存锁的原理是在进行操作A之前,先在缓存中存放一个唯一的key,然后就进行对应操作A,而如果同时有其他一样的操作B并

2017-02-09 17:19:24 2640

原创 Linux利用SHELL直接获得IP地址

概述:我的上一篇文章Linux正则过滤命令ifconfig/ip提取IP地址 介绍了如何利用正则过滤得到IP地址,是利用组合命令获取的,那么问题就来了,如果是高频使用,每次都输入一大串命令来获取,多不方便呀?所以,本文章来介绍如何利用SHELL封装起来这些命令,方便使用者。准备:1、第一行 #!/bin/bash 在宣告这个 script 使用的 shell 名称: 因为我们使用的是 bash ,所

2016-12-19 11:51:37 8773

转载 linux暂停一个在运行中的进程

转载于: http://www.cszhi.com/20120328/linux-stop-process.html 对于一个运行中的进程,我们可以使用kill -STOP pid命令将其暂停执行,使用kill -CONT pid命令恢复其运行。下面用一个实例说明:1、首先使用tar命令打包/usr目录:[root@vps /]# tar zcf usr.tar.gz usr/开启一个新窗口查看

2016-12-09 11:18:43 24754

原创 JS或PHP判断是否来自微信浏览器访问

概述:在微信公众平台的开发过程中,有时候要求访问者是来自微信浏览器而不允许其他浏览器的,本文将介绍如何处理。准备:一、$_SERVER数组 $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些。 (PS:具体更多的$

2016-12-06 10:45:29 2313

原创 Linux正则过滤命令ifconfig/ip提取IP地址

概述:最近一个月一直把精力投入到Linux的学习当中了,越学越觉得Linux实在太好玩了。今天自己有了一个小小想法,Linux中的ifconfig/ip命令查看IP地址显示的内容实在太多了,该练习一下如何用正则过滤命令直接提取出(xxx.xxx.xxx.xxx)格式的IP的地址。准备:Linux如何查看IP地址的命令,本人知道两种,分别是ifconfig和ip,至于具体用法,在这就不详细说了,我们的

2016-11-25 14:31:43 21905 5

转载 浅析PHP7新功能及语法变化总结(转载)

这篇文章主要介绍了浅析PHP7新功能及语法变化总结的相关资料,需要的朋友可以参考下标量类型声明有两种模式: 强制 (默认) 和 严格模式。 现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)。在旧版中,函数的参数声明只能是(Array arr)、(CLassNamearr)、(CLassName

2016-11-24 16:52:47 571

转载 Android"挂逼"修炼之行---微信摇骰子和猜拳作弊器原理解析 (转载)

该文章是我觉得当中的逆向方式以及使用工具的方式非常值得学习,转载只为记录下来,若侵则删。 一、前言在之前的一篇文章中我们已经详细介绍了Android中Hook工作的一款神器Xposed工具:Xposed框架原理解析和使用案例分析 在那一篇文章中我们介绍了如何安装Xposed框架,以及如何使用Xposed库编写第一个模块来做到修改系统方法功能的效果,同时也说到了一个非常重要的知识点就是:在Hook过

2016-11-10 10:35:54 1654

原创 PHP自定义概率的方法(原创)

概述:经历一周赶项目,终于项目上线之后就闲下来。突然今天回想起之前一次面试的有趣的面试题——“你处理转盘抽奖自定义概率有什么好的思路?”当年太年轻了,只是说到公倍数,含含糊糊的回答让面试官不太满意。如今,想起了,理清思路发现也不困难,在此分享一下做法。准备:主要的抽奖逻辑是抽取随机数来进行抽奖,同时用区间的不同来代表不同的奖项。该注释的地方都注释了,如果还是看不懂的读者可以私下问我。分析:主要代码:

2016-10-27 14:18:45 1136

工商银行支付 提交订单 PHP demo

工商银行支付,一般只提供了java版本和C版本,而没有提供PHP版本,在此我把我的PHP版本分享给大家

2019-07-16

空空如也

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

TA关注的人

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