自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 mysql事务,select for update,及数据的一致性处理

一、Mysql 读取锁的实现方式之 :  SELECT ... FOR UPDATE举个例子:  假设商品表单products 内有一个存放商品数量的quantity ,在订单成立之前必须先确定quantity 商品数量是否足够(quantity>0) ,然后才把数量更新为1。代码如下:SELECT quantity FROM products WHERE id=3; UPDAT...

2018-11-21 11:38:40 502

原创 Oauth协议总结

Oauth协议总结一 、Oauth是什么?首先了解一下oauth协议主要解决了什么问题。例子如下: 图1小新现在想要使用一个“在线打印服务”来打印一些照片,同时小新的照片都存储在了“云网盘”上,按照传统的方式小新要怎么做呢?1、将照片从“云网盘”上down下来,在上传到“在线打印服务”,然后开始打印。 2、下载/上传太麻烦了,小新可以直接把“云网盘”的账号和密码告诉...

2018-11-08 15:45:40 374

原创 php对字符串进行加密、解密

/**对字符串进行加密。 * @param $txt * @param string $key * @return string */public static function lockString($txt,$key='xxx'){ $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567...

2018-10-30 10:59:10 4216 1

原创 php生成二维码并返回给前端页面显示

一、背景      需求是需要在后台点击生成二维码,然后这个二维码不上传到服务器。我们需要把二维码返回给前台页面,并且显示出来。二、实现过程1、生成二维码      这里使用的是qrcode这个第三方。网上百度,教程一大堆,这里我就不细说了.生成二维码可以参考链接function index($ctx){        require_once APP_PATH. '/cla...

2018-10-24 17:34:37 3547

原创 CSRF跨站请求伪造介绍和防御方法

跨站请求伪造(CSRF)概念CSRF,全称为Cross-Site Request Forgery,跨站请求伪造,是一种网络攻击方式,它可以在用户毫不知情的情况下,以用户的名义伪造请求发送给被攻击站点,从而在未授权的情况下进行权限保护内的操作。具体来讲,可以这样理解CSRF。攻击者借用用户的名义,向某一服务器发送恶意请求,对服务器来讲,这一请求是完全合法的,但攻击者确完成了一个恶意操作,...

2018-09-29 18:30:29 440

原创 http和https区别

一、HTTP和HTTPS的基本概念  HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。  HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。...

2018-09-29 17:31:54 74

原创 PHP函数之array_merge()和array()+array()区别。

PHP中array_merge函数与array+array的区别在PHP中可以使用array_merge函数和两个数组相加array+array的方式进行数组合并,但两者效果并不相同,下面为大家介绍两者具体的使用区别.区别如下: 当下标为数值时,array_merge()不会覆盖掉原来的值,但array+array合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的...

2018-09-29 17:21:04 149

原创 linux 定时任务之-crontab

1、  crontab命令概念crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。每个用户都有自己的cron配置文件,通过crontab -e 就可以编辑,一般情况下我们编辑好用户的cron配置文件保存退出后,系统会自动就存放于/var/spool/cron/目录中,文件以用户名命名.linux的cron服务...

2018-09-29 17:07:19 59

原创 PHP设计模式(二十四)—注册树模式(Registry Pattern )

注册树模式(Registry Pattern ):注册树模式为应用中经常使用的对象创建一个中央存储器来存放这些对象 —— 通常通过一个只包含静态方法的抽象类来实现(或者通过单例模式)。也叫做注册器模式class Register{    protected static $objects;        //存入实例子的方法        static public  function s...

2018-09-24 21:44:50 104

原创 浅谈PHP中的常量和变量

一、PHP中定义常量define与const我们通常把不经常变的值定义成常量,常量一般用全部大写来表示,前面不加美元符号,也可减少团队开发的出错。那么define和const有什么区别呢?1、const是一个语言结构;而define是一个函数,可以通过第三个参数来指定是否区分大小写。true表示大小写不敏感,默认为falsedefine('PI', 3.14, true);2、c...

2018-09-21 00:28:57 174

转载 php的运行原理、cgi对比fastcgi以及php-cgi和php-fpm之间的联系区别

最近项目中本地测试环境遇到了windows环境下的nginx使用file_get_contents/curl访问php文件导致的阻塞问题,一直在找解决的方案,这个问题研究了三天终于找到了解决方案,特别因为这个我也对php的运行原理产生了兴趣,所以这里对此进行一定程度的记录,可能会有错漏的地方,欢迎指正。 要了解php的运行原理,首先要了解下面几个概念: CGI: CGI的英...

2018-09-06 22:36:25 69

原创 php常见的数组

数组函数:一.排序类:【1.无返回值,传值引用,就直接对原数组进行了修改】按V:sort,rsort,asort,arsort,按K:ksort,krsort按字母:natsort();//区分大小写的排序natcasesort();//不区分大小写的排序,当遇到字符完全一样,按照数字排 eg: FILE1,FILE2, 这两个字符相同,再按照数字1<2排,所以结果 ...

2018-09-06 09:25:51 135

转载 【Swoole】用swoole简单实现MySQL连接池

转载自: https://blog.csdn.net/qq_28602957/article/details/78305039MySQL连接池在传统的网站开发中,比如LNMP模式,由Nginx的master进程接收请求然后分给多个worker进程,每个worker进程再链接php-fpm的master进程,php-fpm再根据当前情况去调用其worker进程然后处理PHP,如果需要MySQ...

2018-08-31 10:53:14 277

原创 PHP遍历一个文件夹下所有文件和子文件夹的函数

PHP遍历一个文件夹下所有文件和子文件夹的函数主要运用了递归的思想和scandir()获取子目录函数,其它的不说了,直接上代码。<?php/*** 获取目录中所有文件的路径* @param $dir* @return array*/function my_scandir($dir){       if(is_dir($dir)){        $...

2018-08-30 23:02:11 283

原创 详解SQL 注入、XSS 攻击、CSRF 攻击

SQL 注入什么是 SQL 注入SQL 注入,顾名思义就是通过注入 SQL 命令来进行攻击,更确切地说攻击者把 SQL 命令插入到 web 表单或请求参数的查询字符串里面提交给服务器,从而让服务器执行编写的恶意的 SQL 命令。对于 web 开发者来说,SQL 注入已然是非常熟悉的,而且 SQL 注入已经生存了 10 多年,目前已经有很成熟的防范方法,所以目前的 web 应用都很少会存...

2018-08-26 17:55:46 99

转载 【php】无限级分类实现

通常写项目的时候,在写一些例如后台的栏目分类或者是商城分类的时候需要实现对应分类的上级分类,一般就会用到无限级分类来进行分类(主要是怕忘了怎么写,所以先记下来)实现无限级分类,通常有两种方法,递归和引用先构造数$arr = array(            1 => array('id' => 1, 'pid' => 0, 'name' => '中国'),...

2018-08-21 17:08:05 579

原创 php中的==和===的用法及区别

在开发中进场遇到数值匹配的问题,那么在进行匹配时,遇到下面的情况,你觉得结果是什么?出人意料的上面的这个程序的输出结果是true,也就是说在编译中程序默认0和0dff是相等的。这是因为在执行关系运算”==“时要求运算符两边的数据类型必须一致,所以等号右边的字符串被强制 转换为了整型0。这也是一系列弱类型语言的一个缺点。在php中提供了“===”来解决这个问题。这个程序的输出是...

2018-08-15 07:44:14 104

原创 bootstrap 选项卡,刷新,不切换选项卡,仍停留在当前选项卡

 <html lang="en"><head><meta charset="UTF-8">    <link rel="stylesheet" href="http://beta.panda.qq.com/static/onhold/bootstrap/css/bootstrap.min.css"> 

2018-08-07 01:18:02 4145 1

转载 MySQL慢查询日志总结

MySQL慢查询日志总结慢查询日志概念      MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然...

2018-07-30 14:16:57 9087

转载 MySQL中锁详解(行锁、表锁、页锁)

原文地址:http://blog.csdn.net/mysteryhaohao/article/details/51669741锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具。在计算机中,是协调多个进程或线程并发访问某一资源的一种机制。在数据库当中,除了传统的计算资源(CPU、RAM、I/O等等)的争用之外,数据也是一种供许多用户共享访问的资源。如何保证数据并发访问的一致性、有效性,是...

2018-07-26 23:03:39 134

原创 MySQL索引背后的数据结构及算法原理

最近一直在看MySQL 的索引有关的知识,无意中发现一篇较好的博文特此转载分享。摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打...

2018-07-24 14:48:40 77

原创 大话MySQL数据库引擎

数据库数据库引擎数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。 使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库。这包括创建用于存储数据的表和用于查看、管理和保护数据安全的数据库对象(如索引、视图和存储过程)。MySql数据库引擎类别你能用的数据库引擎取决于mysql在安...

2018-07-22 23:12:48 134

转载 二叉树进阶之求一棵二叉树中结点间最大距离(php实现)

二叉树进阶之求一棵二叉树中结点间最大距离:转载自:http://www.cnblogs.com/ygj0930/p/6618074.html     二叉树中的结点间距离:从结点A出发到达B,每个结点只能走一次,AB路径上的结点数就是AB间距离。    由于从一个结点出发时,只有两种方向可走:向上经过父节点到达它的兄弟子树;向下到达它自己的左右子树;     对于一个结点h为根的子树:假设现在从h...

2018-06-30 13:41:42 187

原创 二叉树的层次遍历和最大宽度

1、二叉树的层次遍历。  二叉树的层序遍历的实现还是比较简单的,由于其层级的关系,很明显要用到队列来辅助实现,主要是从左向右,自上而下,依次将二叉树的各节点入队,这样便可以保证输出的顺序是层序排列的。下面是算法的实现思想:    先将树的根节点入队,    如果队列不空,则进入循环    {      将队首元素出队,并输出它;      如果该队首元素有左孩子,则将其左孩子入队;      如果...

2018-06-29 18:25:49 2240

转载 分布式之数据库和缓存双写一致性方案解析

转载自https://www.cnblogs.com/rjzheng/p/9041659.html【原创】分布式之数据库和缓存双写一致性方案解析引言为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家...

2018-06-28 16:24:41 108

转载 【转载】分布式之redis复习精讲

转载至https://www.cnblogs.com/rjzheng/p/9096228.html为什么写这篇文章?博主的《分布式之消息队列复习精讲》得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章。但是还是要说明一下,复习精讲的文章偏面试准备,真正在开发过程中,还是脚踏实地,一步一个脚印,不要投机取巧。考虑到绝大部分写业务的程序员,在实际开发中使用redis的时候,只会setval...

2018-06-28 16:21:53 72

原创 合并两个递增的单链表-php实现

实现思路:题目描述  输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。题目分析    假如List1中的头节点是小于List2中的,那么新的链表的头节点必将是List1的头节点,同理对List2也一样,那么在比较完头节点之后,再将List1中的下一个节点再与List2中的头节点比较,同样谁小谁进入新链表,然后再比较,直到两个链表比较完,故可用非递归或递归...

2018-06-27 19:17:14 112

原创 php实现二叉树的前序,中序,后序,和层次遍历

    上一篇博客已经介绍了二叉树的前序,中序,后序  ,以及层次遍历(递归和非递归)的实现思路,接下来,采用php 语言 具体实现一、、先序(跟--左---右)<?php         class Node{        public $data;        public $left;        public  $right;            }   (1) //先序--...

2018-06-23 23:52:26 1502

转载 二叉树的层次遍历

https://blog.csdn.net/ns_code/article/details/13169703   二叉树的层序遍历算法给漏掉了,实际上也不能说漏掉了,毕竟层序遍历的实现方法与这三种遍历的实现方法有所不同,因此单独拿出来分析比较合适。    二叉树的层序遍历的实现还是比较简单的,由于其层级的关系,很明显要用到队列来辅助实现,主要是从左向右,自上而下,依次将二叉树的各节点入队,这样便可...

2018-06-23 21:41:38 1998

转载 二叉树的遍历详解(递归和非递归)

转载http://blog.csdn.net/ns_code/article/details/13169703  二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的。二叉树有前、中、后三种遍历方式,因为树的本身就是用递归定义的,因此采用递归的方法实现三种遍历,不仅代码简洁且容易理解,但其开销也比较大,而若采用非递归方法实现三种遍历,则要用栈来模拟实现(递归也是用栈实现的...

2018-06-23 21:35:59 133

原创 修改浏览器导航卡图标

 只需要一个header.js 就ok了然后在页面中引入此 js即可$(function () {    $(document).attr("title", "实验柜报名");//修改title值    var cssURL = 'http://mat1.gtimg.com/www/icon/favicon2.ico';    //腾讯的图标    var head = document.getE...

2018-06-14 22:59:29 691

原创 PHP中单例模式实现

      由于我以前是做java开发的,在使用单例模式的时候,首先想到的想用饿汉式,然后发现在PHP中,有这样一个特性:因为PHP不支持在类定义时给类的成员变量赋予非基本类型的值。如表达式,new操作等等。转而想要确保这个单例模式的原子性,发现PHP中也没有像JAVA中的线程安全问题。嘿嘿,你说PHP好不好?那么OK接下来就试试PHP的懒汉式单例模式了。一、三私一公:①、私有静态属性,又来储存生...

2018-06-13 00:09:10 7237 1

原创 PHP实现队列和栈

php 里面没有栈和队列 的数据结构,但是可以通过数组来模拟, array_push  数组末尾增加一个元素 array_pop  数组末尾删除一个元素 array_shift  数组头部删除一个元素1 栈 先进后出表$arr = array();array_push($arr, 'aa');//aa 压入栈array_push($arr, 'bb');//bb 压入栈array_push(...

2018-06-01 22:38:50 384

原创 php去掉字符串含有的控制字符。

坑不大,陷入好长时间,特此分享。最近做科普项目发现,content内容中含有特殊字符时,前台无法渲染数据,经过三个小时的排查发现是因为有特殊字符的原因。图一是前台报错的形式:图二 是特殊在数据库中的显示形式。图三是 特殊字符在 notepad++中显示的形式以后在碰到这种含有未知的特殊字符的时候,可以将文本复制到notepad++从以便迅速的定位为题,解决方案是: 执行一个正则表达式的搜索和替换掉...

2018-05-31 21:10:50 2001

原创 PHP中json返回的数据中带有bom头

做项目时碰到这么一个问题php后台返回的接口,前台无法识别,bejson也无法解析。错误效果如下,解析时 json里面的字段前面有红点。请求的json格式如下;经过两天的挖坑发现是返回的内容里面,包含bom格式的编码。解决方法去掉bom编码,(通过转化成utf8编码格式,从而达到去除utf-8-bom的作用)实现思路是:(由于不知道data数组里面的哪一个标签前面出现了bom编码,因此递归data...

2018-05-29 17:49:46 3849

原创 字符串匹配KMP算法详解。

一、什么是KMP算法    首先说说什么是KMP算法,说白了,就是不希望用简单的两层循环遍历两个串那样去看能否匹配成功。简单朴素的字符串匹配是,一旦匹配不成功,主串要回到匹配开始的起始位置,然后加1再和模式串从头匹配。二、 字符串匹配算法的实现思路(A暴力匹配和B通过next数组KMP算法实现)主串:s='ababbabababbbab';子串:p='abababbbab';A :暴力匹配实现。 ...

2018-05-27 17:41:51 157

原创 php生成唯一的八位英文+数字邀请码实现

 /**生成单个邀请码     * @return string     */    public static  function make_invite_code(){        $code="ABCDEFGHIGKLMNOPQRSTUVWXYZ";        $rand=$code[rand(0,25)].strtoupper(dechex(date('m')))          ...

2018-05-25 09:41:04 4699

原创 单链表的翻转递归和非递归方式(php实现、)

早上好,最近在看但链表的翻转,之前一直困惑,怎样使用php实现,后来发现重要的是捋清单链表的数据结构和翻转的基本原理,至于什么语言实现,万变不离其中,都是一样的道理,接下来,介绍一下,php实现单链表的翻转。1、最重要的是理解单链表的数据结构,(链表操作一定要画图,画图才能理解的更为深刻。)1:单向链表:单向链表的链表对象维护了一个 first 引用,该引用指向节点链表中的第一个节点对象,每个节点...

2018-05-23 10:53:18 1321 1

转载 总结 - Yii2.0 对数据库 查询的一些简单的操作

毕业以后做java开发,后来因为公司需要转php,就一直在用Yii框架,有时候只是会用,但是从来不去研究深层的框架源码,因为我知道,我研究也是不明白,源码太深了,像我这种小白,看不懂。但是现在,我试着慢慢的去看框架的源码,有时,你可能第一次看不明白,等你第二次再碰到同一个问题的时候,它需要你再看第二遍,那么这时,你会发现比上次明白的多一点。 今天,我把平时用到的Yii2.0 对数据库 查询的一些简...

2018-05-17 10:24:43 272

原创 jquery 获取一组或者单个 checkbox 的选中状态的值

使用 jquery 获取一组或者单个 checkbox 的选中状态的值。下面通过一个示例进行说明,假设现有一页面有一组 checkbox 的 name 的值为 id ,那么获取这组 name=id 的checkbox的值的方法如下:var id_array=new Array();  $('input[name="id"]:checked').each(function(){      id_ar...

2018-05-16 18:08:31 273

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