自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 php设计模式——简单工厂模式

简单工厂是什么?简单工厂是由三部分组成:1个工厂类1个接口类或抽象类多个具体实现各部分之间的关系:接口或抽象类定义待开发功能的整体结构,需要哪些实现多个具体实现继承接口或抽象类具体实现功能。简单工厂来创建具体实现的实例进行调用关系图:简单工厂有什么用?最常用的就是用于流程控制解耦,比如输入一个参数,根据参数不同进行不同的操作。不解耦的话就是全部写在一个方法里,很乱。另一个用处就是方便扩展,防止需求三天两头变更带来的麻烦,设计好了以后要增加新的流程直接增加新的类就好了。下面以

2021-07-02 11:35:22 198 2

原创 php设计模式1——单例模式

单例模式是什么?一个类没new一次就会创建一个新的实例,而单例模式则是每次获取的都是同一个实例,在整个项目生命周期中通过单例创建的同一个类的实例都有且只有一个。为什么要使用单例模式?一些特殊的场景中我们需要每次都使用同一个实例,创建多个实例会造成额外的开支,浪费性能。比如:mysql连接,redis连接等。单例模式的使用方法:结构:4私一公私有化构造方法: 防止使用 new 创建多个实例;私有化克隆方法: 防止 clone 多个实例;私有化重建方法: 防止反序列化私有化静态属性: 防止

2021-07-01 10:07:18 181

原创 php设计模式学习记录——前言

设计模式是什么?设计模式不是被创造出来的,是前辈编写代码的经验的总结,是一种编码模式,追求代码的可维护性,设计模式本质作用是代码复用,目的是建立对象之间的关联,提供了一系列代码解耦的解决方案。后由GOF整理成《Design Patterns: Elements of Reusable Object-Oriented Software》一书。GOF(Gang of Four) 是 4位作者的合称,一般叫他们 4人帮 ;为什么要使用设计模式?随着项目越来越大,人员流动等原因,导致代码越来越臃肿,难以维护,

2021-06-30 16:12:12 189

原创 thinkphp5模型更新save和软删除delete的坑点和理解

问题一:循环更新时只有第一条数据更新成功,其它数据都不更新。官方手册中提到注意不要在一个模型实例里面做多次更新,会导致部分重复数据不再更新,正确的方式应该是先查询后更新或者使用模型类的update方法更新。只是说明了问题,但没有解释为什么,所以就没注意,导致出现这个问题。为什么会有这个问题?在Model.php模型save方法最后大概1214行// 重新记录原始数据$this->origin = $this->data;origin这个属性记录了原始数据,不管是更新还是写入

2021-06-28 17:37:54 780 3

原创 php中PSR-[0-4]代码规范学习记录

php中PSR-[0-4]代码规范学习记录1. PSR是什么?PSR是一套代码编写规范,用于约束代码风格。以前没有规范的时候大家都是按照自己的习惯来书写代码,但每个人风格不一样,你的代码在别人看来就是很不爽。而且会导致许多问题:function 函数名是否驼峰命名,花括号{}是否换行写,是该写注释呢还是不写变量名是大写还是小写,一个php文件中是一个类好还是允许有多个所以PSR-[0-4]规范就应运而生,大家都共同遵守,就没有风格差异了。PSR是由PHP-FIG这个组织发明的,FIG 是

2021-06-27 19:04:13 176 1

原创 PHP自动加载学习记录

1. 什么是自动加载?自动加载就是在实例化类的时候,PHP自动帮我们把需要用到的文件给require进来,不需要我们手动一个一个去require;自动加载可以说是现代PHP框架的核心基础,就像地基一样,像Laravel,thinkphp,yii2等框架都是基于自动加载实现的文件自动载入。2. 如何实现?1. __autoload()方法实现自动加载index.php<?phpfunction __autoload($classname){ require $className . '.

2021-06-26 14:41:58 103 2

原创 namespace命名空间学习

1. namespace是什么?命名空间是namespace是翻译,作用是防止类名或函数名重复,命名重复会导致报错。以前没有命名空间的时候只能人为去防止重复,但项目上了一定规模难以避免这个问题,因此,在php5.3版本推出了namespace。2. namespace的简单使用使用比较简单,下面举个例子1. 先是不用namespace的方式Foo.php<?phpclass Test { public static function index(){ echo 'hello wor

2021-06-26 10:29:35 576

原创 手动安装Xposed5.1.1框架zip包,解决Could not found ZIP files报错

首先,报错是因为网络问题,但是即便是网络没问题,下载起来也很慢,所以要手动安装注:全程需要电脑有梯子第一步:下载安装Xposed的APK官网下载安装下载链接,在官网的链接里找到对应版本下载直接在模拟器应用市场搜索Xposed安装(推荐,方便快捷)第二步:下载installer需要的.zip文件首先打开xposed看看手机的信息根据信息去下载对应的.zip文件,我是下载的sdk22/x86的下载链接将下载的.zip文件通过文件共享放置到/sdcard/Android/data/de

2021-05-29 12:33:45 31114 5

原创 记录一次抓包实战,全局代理+xposed+frida绕过各种坑点

遇到的问题apk使用了360加固,无法反编译apk没有走系统代理,导致设置wifi代理抓不到包问题1解决办法:使用FRIDA-DEXDump工具直接从内存dump出dex包,然后使用jadx-gui-1.1.0-with-jre-windows工具打开dex文件查看代码FRIDA-DEXDUMPgithub链接jadx-gui网上比较多,自行百度下载需要先按照frida,自行百度下载安装问题2解决办法:有两种方法:使用vpn代理将app流量全部代理到抓包工具的ip端口使用OkHt

2021-03-18 13:06:11 5420

原创 验证码识别工具GraphicsMagick1.3.25和Tesseract-OCR4.0.0 Linux安装部署过程记录

GraphicsMagick1.3.25安装安装相关依赖包yum install -y gcc libpng libjpeg libpng-devel libjpeg-devel ghostscript libtiff libtiff-devel freetype freetype-devel下载GraphicsMagickwget ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/1.3/GraphicsMagick-1.3.25.tar.g

2021-03-04 20:32:44 234 1

原创 js实用方法记录-js动态加载css、js脚本文件

动态加载js文件到head标签并执行回调方法调用:dynamicLoadJs(‘http://www.yimo.link/static/js/main.min.js’,function(){alert('加载成功’)}); /** * 动态加载JS * @param {string} url 脚本地址 * @param {function} callbac...

2019-01-16 17:05:55 2533

转载 PHP处理emoji表情

字符串包含emoji表情 , 在使用MySQL直接存储的时候 , 有些特殊字符会保存失败 , 比如保存用户昵称 , 有些用户昵称带有emoji表情 , 然后在保存的时候 , 会出错 , 通常这种情况的处理办法就是 , 直接将emoji表情过滤掉 ; 也有时候需要保留emoji表情 , 那么就只能转义保存 , 取出来的时候 , 再转回来 , 类似于编码和解码!1.过滤emoji表情/** *...

2019-01-14 10:25:35 969 1

原创 TP5使用phpexce上传导入csv文件

前端上传使用layui.upload组件,具体参考Layui手册php://主逻辑//限制上传表格类型$file_type = $_FILES['excel_import']['type'];if ($file_type!='application/vnd.ms-excel') { return [RESULT_ERROR,'上传失败,只能上传excel表格!'];}if (i...

2019-01-02 14:33:55 1150

原创 关于thinkphp5自定义标签库解析的问题

今天tp5的自定义标签库着实坑了我一把,原因有两点:1.预加载标签是有缓存的,你设置了预加载标签库,要删除缓存后重新刷新才有效,否则无效,这导致我调试的时候不知道自己到底设置对了没有2.我一直以为配置是会自动继承父级的配置的,也就是说,在模块中我只需要写好不同的配置就行,然后事实上一位数组的配置确实是这样,但是二位数组的时候第二层数组是会直接覆盖第一层数组的,举个栗子:猜猜结果是什么,对了...

2018-11-14 10:26:49 4073 5

原创 php结合webuploader断点续传的实现

最近公司项目需要用到断点续传,所以记录一下其中的坑使用到的主要技术webuploaderthinkphp5断点续传的思路:客户端: 1.获取文件md5(MD5是文件唯一标识,用来判断是否存在此文件,并且用作分片的文件夹名) 2.将文件分片 3.验证分片是否上传过,上传过直接跳过当前分片 3.上传分片到md5的文件夹(保存文件名建议按分...

2018-11-14 10:22:28 2877 3

原创 一些服务器常用命令笔记

查看网络流量命令: iftop -i eth0 -P查看当前80端口连接数: netstat -ant | grep $ip:80 | grep EST | wc -l查看目录大小: du -sh /var/*查看apache进程数量: ps -ef|grep http | wc -l...

2018-11-14 10:15:15 264

原创 记一次后台被入侵的事件及反思

前几天后台被入侵,造成服务器瘫痪数个小时,虽然数据都没有丢失,但是也着实吓出一身汗,下面还原整个事件晚上10点左右,有人反应进不去app了,我还以为是玩笑,结果是服务器文件被删除了,赶紧停服务查看,config表被清空,菜单表被清空,查看日志发现有人使用admin账号在后台为所欲为,但是此人没有登录的日志,先不管,先恢复数据再说好在被删除的数据都有备份,直接恢复了,业务数据虽然被删除了一部分,...

2018-11-14 10:13:32 2396

原创 mysql主从复制及数据备份恢复

1、主从服务器分别作以下操作: 1.1、版本一致 1.2、初始化表,并在后台启动mysql 1.3、修改root的密码2、修改主服务器master: #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=2...

2018-08-03 13:24:55 1914

原创 PHPEXCEL导出excel表格中长数字文本自动转为科学计数法的解决办法

方法一:前面加空格;$objActSheet->setCellValue('A1', ' '.'330602198804224688');方法二:$objActSheet->setCellValueExplicit('A1', '330602198804224688', PHPExcel_Cell_DataType::TYPE_STRING);方法三:$objAct

2018-01-29 15:42:40 9206

原创 thinkphp5数据集和模型关系的理解

数据集tp5可以通过全局配置'resultset_type' => 'collection',来定义查询的结果集类型. 可选值有collection,array,默认值是array 需要注意的是 即使配置的结果集是数组,使用模型查询出来的数据也只有最外层是数组,数据列表中的每个元素仍旧是对象 (可使用collection()助手函数转换为对象结果集) ,使用Db::name('use

2018-01-25 11:46:28 2233 1

转载 vue使用过程中遇到的错误提示一

错误提示:template syntax error Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead. 翻译结果:模板语法错误组件模板应该正好包含一个根元素,如果你使

2018-01-12 10:56:27 1579

原创 thinkphp3.23 rsa加密解密实例

php服务端与客户端交互、提供开放api时,通常需要对敏感的部分api数据传输进行数据加密,这时候rsa非对称加密就能派上用处了,下面通过一个例子来说明如何用php来实现数据的加密解密1、加密解密的第一步是生成公钥、私钥对,私钥加密的内容能通过公钥解密(反过来亦可以)https://www.openssl.org/source/下载开源RSA密钥生成工具openssl(通常Linux系统都自带该程序

2017-12-28 10:29:55 4492

原创 thinkphp3.2 session存到redis的方法

有两种方法第一种:通过php.ini配置在session_start()之前增加如下代码:ini_set('session.save_handler', 'redis');ini_set('session.save_path', 'tcp://127.0.0.1:6379');或者修改php.ini这两处为上面的值重启服务即可第二种:通过session_set_save_handler函数根据官方

2017-12-25 14:18:29 3895 1

原创 nginx服务器高并发优化思路

思维导图:

2017-09-25 14:30:52 1327

原创 nginx反向代理和负载均衡

反向代理:在nginx的location中使用proxy_pass http://xxxxx;即可实现反向代理到任意服务器location ~* .php{ proxy_pass http://127.0.0.1:8080;}负载均衡:将多台服务器使用upstream绑定到一起取个名字,再使用proxy_pass代理到这个名字即可实现负载均衡//此命令和location同级upstrea

2017-09-25 11:36:49 244

原创 mysql操作相关合集

mysql操作将一个表改为分区表:alter table 'table' partition by hash('字段') partitions 'num' hash分区命令

2017-09-15 09:56:06 247

原创 thinkphp上传多张图片只能上传一张的问题

最近用tp上传图片的时候遇到这个问题,同时上传两张图片,只有一张能传上去,经排查发现是两次都使用了相同文件名导致,原因是保存文件名规则是已经调用的函数,类似time()._.mt_rand()这样,在一次请求中这个值始终是不变的,要改成未调用的函数名,类似time,最终是这样'saveName' => ["getRandom",[10]],,自定义函数传入参数解决了问题

2017-09-15 09:46:29 2603

原创 div模拟textarea文本域轻松实现高度自适应

div的contenteditable属性能够允许用户编辑元素内容包含的任意文本,包括子元素,这是模拟文本域的关键应用了此属性后,普通的div标签也会像文本域一样可以获得焦点,同时有一个光标在那里闪啊闪,闪啊闪,你越看她她越闪。web QQ 2.0 的聊天对话框的输入框就是应用了此属性使用很简单,一个普通的block元素上加个contenteditable=”true”就ok了,如下:<div co

2017-09-11 14:58:46 473

原创 实现QQ截图粘贴到聊天框功能

QQ截图在网页聊天中不能直接粘贴,要实现像QQ微信一样能直接粘贴成图片需要做一些操作 利用paste事件捕获粘贴事件,clipboardData获取剪切板中的内容将文件用filereader接口读取出来function paseImg() { var imgReader = function (item) { var blob = item.getAsFile(),

2017-09-11 14:48:42 2951 1

原创 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)

我在出错的.py文件中加上了: import sys reload(sys) sys.setdefaultencoding(‘utf-8’) 在编译成exe文件时一直报错,不打包exe就能正常运行解决方法: def setencoding(): ..... .... if 0: #Enabletosupportlocaleawaredefau

2017-08-17 09:47:16 312

原创 table实时编辑函数封装

功能介绍:该函数只需要传入两个参数即可实现表格的实时编辑编辑后文本框失去焦点或按回车即可发送异步请求修改如果检查到没有修改则不会发请求服务器接收的参数固定为_id title con设置介绍:html中给需要编辑的td单元格加上name属性即可让该单元格可编辑tr需要设置name 属性放置后台表的id作为修改条件/** 双击编辑表格单元格* obj object 需要点击的表格单

2017-07-24 17:09:47 535

原创 centos7下yum安装ffmpeg

安装EPEL Release,因为安装需要使用其他的repo源,所以需要EPEL支持 yum install -y epel-release 如果出现缺少Code提示,可以:sudo rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7安装完成之后,可以查看是否安装成功yum repolist 安装Nux-Dextop源导入一个Codesudo rpm

2017-07-11 14:02:43 19829 1

原创 php导出EXCEL表格

很多时候,数据库中的数据需要导出成excel,以下是最简便的方法,不用导出excel的类,即使功能简单,但是对于没有复杂需求的项目“见效快”<?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=xls_region.xls"); $cfg_dbhost = 'local

2017-07-11 13:35:30 414

原创 nginx配置http自动转发https

打开nginx配置文件,找到如下位置,修改即可server { listen 80 default_server; listen [::]:80 default_server; server_name your domain;//这里填写你的域名 root /var/www/html;

2017-07-08 14:45:58 2121 1

原创 后台系统无刷新页面记录当前操作位置方法

在后台系统中使用无刷新页面用户体验好,但是一旦刷新页面就会回到首页,很不好,如何记录当前的操作呢?锚点:当点击导航连接时,把当前节点记录到锚点(在url后面加上#xxx),当刷新页面时,获取到锚点对应的dom元素,调用click()方法模拟点击到操作位置即可.window.onload = function () { //获取#后面的内容 var query = lo

2017-06-26 16:28:55 1252

转载 PHP中使用Luhn算法校验信用卡及借记卡卡号

Luhn算法会通过校验码对一串数字进行验证,校验码通常会被加到这串数字的末尾处,从而得到一个完整的身份识别码。我们以数字“7992739871”为例,计算其校验位:从校验位开始,从右往左,偶数位乘2(例如,7*2=14),然后将两位数字的个位与十位相加(例如,10:1+0=1,14:1+4=5);把得到的数字加在一起(本例中得到67);将数字的和取模10(本例中得到7),再用10去减(本例中得

2017-06-22 14:19:33 1174

转载 PHP 验证身份证号是否正确的函数

PHP 验证身份证号是否正确的函数,函数代码如下:<转自:http://u.cxyblog.com/22/article-aid-377.html>function validation_filter_id_card($id_card){ if(strlen($id_card)==18){ return idcard_checksum18($id_card); }el

2017-06-22 14:02:21 1647

原创 canvas获取base64图片并上传php服务器

思路将图片渲染到canvas使用canvas的toDataUrl()方法获取bse64文件数据将数据和文件名发送到服务端服务端收到数据去掉”’,”前面的文件头信息使用base64_decode()解码使用file_put_contents()保存文件前端var canvas = $("canvas");var cxt = canvas[0].getContext('2d');var

2017-06-05 17:19:48 4691

原创 jquery click()方法模拟点击事件对a标签不生效的解决办法

<a href="www.baidu.com"></a>问题分析点击A标签本身,并不会触发跳转到指定链接的事件,就是说,我们平时都是点击的A标签中的文字了。 所以要想用JS模拟点击A标签事件,就得先往A标签中的文字添加能被JS捕获的元素,然后再用JS模拟点击该元素即可。 打印$(“a”)[0],得到的是http://www.baidu.com,但实际上$(“a”)[0]是一个object对象,或许

2017-06-05 17:05:29 31967 3

原创 漂亮实用的提示框插件SweetAlert

SweetAlert可以替代Javascript原生的alert和confirm等函数呈现的弹出提示框,它将提示框进行了美化,并且允许自定义,支持设置提示框标题、提示类型、内容展示图片、确认取消按钮文本、点击后回调函数等。准备工作首先我们必须将SweetAlert插件的js文件和css文件引入到页面中。<script src="sweetalert.min.js"></script> <link

2017-05-16 15:45:53 1579

空空如也

空空如也

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

TA关注的人

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