- 博客(305)
- 资源 (7)
- 收藏
- 关注
原创 理解依赖注入与控制反转
依赖注入与控制反转依赖注入 当我第一次接触这个词的时候,我是有些丈二和尚摸不着头脑的,至今我也是感到比较困惑的,所以今天我们来探索一下 Laravel 中的依赖注入(dependency injection), 来好好的理解它。控制反转 第一印象是好深奥的名词。。。看上去好像是说反向控制?不懂?那就理顺之!起点什么是依赖没有你我就活不下去,那么,你就是我的依赖。说白了就是: 不是我自身的,却是我需要的,都是我所依赖的。一切需要外部提供的,都是需要进行依赖注入的。我们用代码来描述...
2020-05-25 22:14:21
316
原创 Laravel如何结合Swoole使用
关于php解析下位机的16进制协议,其实相当之扯蛋,要是你最好还是用.NET或者JAVA吧。很久没碰MVC了,所以直接上PHP吧。网上搜搜还没见几个php这样搞的项目,我还没做完,做完了来谈谈,关键函数主要是bin2hex/pack/unpack。这一篇主要聊聊Laravel如何优雅的使用Swoole,其实只需简单3步就可以完成。什么是Swoole##直接套用Swoole官网的介绍:PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客
2020-05-25 21:42:50
1971
原创 MySQL底层原理综合描述
1、概念1.1 数据库事务:简单的说事务就是一组原子性的SQL语句。可以将这组语句理解成一个工作单元,要么全部执行要么都不执行。默认MySQL中自动提交时开启的(start transaction)事务的ACID特性如下:原子性:事务中的所有操作要么全部提交成功,要么全部失败回滚。场景:UPDATE cs_user SET age = 18 , gender = '女' WHERE id = 4。要么全部更新要么更新失败,不会出现age更新成功,gender更新失败。一致性:据库总是从给一个一致
2020-05-25 13:51:36
293
原创 MySQL索引底层原理分析
大家都知道索引的重要性,基本用法在上章《最全面的mysql索引知识大盘点》已分享过,本章主要是探索索引的底层实现原理。当然了,我们还是以mysql为基准进行探讨。目录前言:innodb和myisam的区别1.物理磁盘知识1.1基本概念1.2硬盘中的数据1.3磁盘的读写原理1.5磁盘的读取响应时间1.6 I/O 的预读与局部性原理2.推理并拆解普通查询语句3.为什么要用B+Tree实现3.1 B-Tree3.2 B+Tree3.3B-树和B+树的区别3.
2020-05-25 13:48:57
259
原创 MySQL底层架构原理,工作流程和存储引擎的数据结构讲解
数据库(DataBase)是存放用户数据的地方,当用户访问、操作数据库中的数据时,需要数据库管理系统的帮助。数据管理系统的全称是DataBase Management System,简称DBMS。通常情况下我们会把数据库和数据库管理系统笼统的称为数据库,通常所说的数据库既包括存储用户数据的部分,也包括管理数据库的管理系统。 MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。在 WEB 应用方面,MySQL是最...
2020-05-25 13:44:53
457
原创 高并发解决方案类考察点
1.高并发和大流量解决方法真题回顾PHP如何解决高并发大流量问题?考点分析高并发架构的相关概念 : 概念百度百科并发,我们所说的并发,在互联网时代,并发、高并发通常是指并发访问,也就是在某个时间点有多少个访问同时到来。 通常如果一个系统的pv在千万以上,有可能是一个高并发的系统。 高并发的问题,我们该关心什么, qps每秒钟请求或者查询的数量,在互联网领域,值每秒的响应的请求数。吞吐量,单位时间内处理的请求数量(通常由qps 与并发数决定)。响应时间 从发出请求到收到响应花费的时间...
2020-05-20 17:11:25
182
原创 php中redis常见应用场景
redis应用场景总结redis平时我们用到的地方蛮多的,下面就了解的应用场景做个总结:1、热点数据的缓存由于redis访问速度块、支持的数据类型比较丰富,所以redis很适合用来存储热点数据,另外结合expire,我们可以设置过期时间然后再进行缓存更新操作,这个功能最为常见,我们几乎所有的项目都有所运用。2、限时业务的运用redis中可以使用expire命令设置一个键的生存时间,到时间后redis会删除它。利用这一特性可以运用在限时的优惠活动信息、手机验证码等业务场景。3、计数器相关问
2020-05-20 17:10:10
515
原创 HTTP面试题小结
什么是Http协议客户端和服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。 IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠地传递数据包,使得网络上接收端收到发送端所发出的所有包,并且顺...
2019-12-23 09:02:44
253
原创 关于面试总结8-http协议相关面试题
浏览器输入url按回车背后经历了哪些?1.在PC浏览器的地址栏输入一串URL,然后按Enter键这个页面渲染出来,这个过程中都发生了什么事?1、首先,在浏览器地址栏中输入url,先解析url,检测url地址是否合法 2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。 浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个...
2019-12-23 08:56:02
281
原创 Http协议相关问题
一次完整的HTTP请求所经历的7个步骤?HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比T...
2019-12-23 08:51:30
540
翻译 Redis的三种集群方式概述
1、主从复制原理从服务器连接主服务器,发送SYNC(同步)命令; 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令; 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照; 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;...
2019-12-19 13:42:16
280
原创 CGI、FastCGI、php-fpm、php-cgi 之间的关系
一、动态网站与CGI技术?在Web发展初期,只有静态页面处理能力。比如我们所熟知的Apache、Nginx服务器都是web服务器,它们有一个共同特点就是只能处理静态请求。也就是说,只能把本地的现成的html,css之类的东西传给浏览器,然后经过浏览器渲染成一个web页面。事物总是不断发展,网站也越来越复杂,所以出现动态技术,也就是我们今天所说的动态网站技术。而动态网站的成功是离不开CGI(Co...
2019-12-19 13:35:37
237
原创 php-fpm和fastcgi区别
前言关于FastCGI、php-cgi、php-fpm的区别是什么,各自有什么用途,以及相互间的关系是什么,查阅相关资料,可谓是众说纷纭,莫衷一是:说法一:fastcgi是一个协议,php-fpm实现了这个协议;说法二:php-fpm是FASTCGI进程的管理器,用来管理fastcgi进程的;说法三:php-fpm是php内核的一个补丁;说法四:修改了php.ini配置文件后,没办法...
2019-12-19 13:31:11
860
翻译 Linux常用命令
一、基本命令1.1 关机和重启1.2 帮助命令二、目录操作命令2.1 目录切换 cd2.2 目录查看 ls [-al]2.3 目录操作【增,删,改,查】2.3.1创建目录【增】 mkdir2.3.2删除目录或文件【删】rm2.3.3目录修改【改】mv 和 cp2.3.4搜索目录【查】find三、文件操作命令3.1 文件操作【增,删,改,查】...
2019-11-01 20:29:06
212
原创 常见六大Web安全攻防解析
常见六大Web安全攻防解析22019.01.31 09:17:02字数 5198阅读 739前言在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本文主要侧重于分析几种常见的攻击的类型以及防御的方法。想阅读更多优质原创文章请猛戳GitHub博客一、XSSXSS (Cross-Site Scripting),跨站脚...
2019-10-29 14:21:47
120
原创 MySQL高级知识(十一)——数据库事务
1. 事务的原则介绍2. 事务并发会造成的问题3. MySQL的事务隔离级别事务的原则1、原子性:在事务中的操作,必须同时完成或者同时回滚,不会只成功或者回滚一部分。2、一致性:不能破坏数据库的一致性状态。3、隔离性:不同的事务之前互相不能影响。4、持久性:事务完成以后,即保存数据,不会再回滚。事务并发造成的问题1、脏读事务A读取了事务B更新的数据...
2019-05-06 18:11:21
327
原创 ThinkPhp框架的结构和执行过程
1.基础 1.1目录结构thinkphp框架目录 1.2入口文件 1.3系统常量 1.4自动生成 默认模板 自动生成 1.5模块设计 每个模块是相对独立的,其目录结构如下: 1.6控制器 1.7命名规范2.配置...
2019-03-19 11:06:13
1409
原创 PHP面试的流程及面试题
请自我介绍一下?答:我叫xxx,来自北京,20xx年毕业于xx大学计算机xx系,毕业后在xx从事了x年的php开发工作,公司是一个外包公司,主要做微信开发,公众号推广,商城,论坛的开发你在公司负责那些项目?答:由于我们公司是一个外包公司,不可能只做一个项目,公司的项目都是交叉进行的,论坛,微信,商城我都做过?你做过哪些模块?答:登陆注册,商品管理,购物车模块,订单管...
2019-03-18 15:57:42
2238
转载 MySQL高级知识(十)——批量插入数据脚本
前言:使用脚本进行大数据量的批量插入,对特定情况下测试数据集的建立非常有用。0.准备#1.创建tb_dept_bigdata(部门表)。create table tb_dept_bigdata(id int unsigned primary key auto_increment,deptno mediumint unsigned not null default 0,dname...
2019-03-13 15:55:54
318
转载 MySQL高级知识(九)——慢查询日志
前言:慢查询日志是MySQL提供的一种日志记录,它记录MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的sql语句,该sql语句会被记录到慢查询日志中。慢查询日志主要与explain进行联合分析。1.如何开启慢查询日志默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。如果不是调优需要,一般不建议开启该参数,因为开启慢查询日志或...
2019-03-13 15:55:18
298
转载 MySQL高级知识(七)——索引面试题分析
前言:该篇随笔通过一些案例,对索引相关的面试题进行分析。0.准备#1.创建test表(测试表)。drop table if exists test;create table test(id int primary key auto_increment,c1 varchar(10),c2 varchar(10),c3 varchar(10),c4 varchar(10)...
2019-03-13 15:53:49
417
转载 MySQL高级知识(六)——索引优化
前言:索引优化的目的主要是让索引不失效,本篇通过相关案例对索引优化进行讲解。0.准备创建经典的tb_emp表。DROP TABLE IF EXISTS `tb_emp`;CREATE TABLE `tb_emp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `age` in...
2019-03-13 15:53:06
421
转载 MySQL高级知识(五)——索引分析
前言:前面已经学习了explain(执行计划)的相关知识,这里利用explain对索引进行优化分析。0.准备首先创建三张表:tb_emp(职工表)、tb_dept(部门表)和tb_desc(描述表)1)tb_emp表。DROP TABLE IF EXISTS `tb_emp`;CREATE TABLE `tb_emp` ( `id` int(11) NOT NULL A...
2019-03-13 15:52:19
151
转载 MySQL高级知识(四)——Explain
前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。explain主要用于分析查询语句或表结构的性能瓶颈。注:本系列随笔如无特殊说明都MySQL版本都为5.7.22。1.explain的作用通过explain+sql语句可以知道如下内容:①表的读取顺序。(对应id)②数据读取操作的操作类型。(对应s...
2019-03-13 15:16:47
177
转载 MySQL高级知识(三)——索引
前言:索引在sql调优部分占据着重要的位置,了解并深入索引对我们来说也是非常重要的。本篇主要介绍MySQL中索引的相关知识点。1.索引是什么MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构。因此索引的本质就是数据结构。索引的目的在于提高查询效率,可类比字典、书籍的目录等这种形式。可简单理解为“排好序的快速查找数据结构”。在数据之外,数据库系统还维护着...
2019-03-13 15:15:21
134
转载 MySQL高级知识(二)——Join查询
前言:该篇主要对MySQL中join语句的七种情况进行总结。0.准备join主要根据两表或多表之间列的关系,从这些表中进行数据的查询。首先创建两张表:tb_emp(员工表)和tb_dept(部门表),并插入相关测试数据。1.tb_emp表。DROP TABLE IF EXISTS `tb_emp`;CREATE TABLE `tb_emp` ( `id` int(1...
2019-03-13 15:13:57
187
原创 MySQL高级知识(一)——基础
前言:MySQL高级知识主要来自尚硅谷中MySQL的视频资源。对于网上视频资源来说,尚硅谷是一个非常好的选择。通过对相应部分的学习,笔者可以说收益颇丰,非常感谢尚硅谷。1.关于MySQL的一些文件MySQL如何安装、如何配置自启动,这里不进行讲述,可自行搜索相关安装教程进行处理。这里主要介绍MySQL的主要配置文件。①二进制日志log-bin:用于主从复制。②错误日志log-err...
2019-03-13 15:12:52
428
原创 MySQL高级知识(八)——ORDER BY优化
drop table if exists test;create table test(id int primary key auto_increment,c1 varchar(10),c2 varchar(10),c3 varchar(10),c4 varchar(10),c5 varchar(10)) ENGINE=INNODB default CHARSET=utf8;...
2019-03-13 15:09:14
290
原创 MYSQL 优化常用方法
1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,...
2019-03-12 18:08:40
109
翻译 GET和POST两种基本请求方法的区别(生动形象的描述和总结)
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻...
2019-02-02 10:26:55
1017
翻译 crontab 详细用法 定时任务
使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行如何往 cron 中添加一个作业?# crontab –e0 5 * * * /root/bin/backup.sh这将会在每天早上5点运行 /root/bin/backup.shCron 各项的描述以下是 crontab 文件的格式:{minu...
2019-02-01 14:20:35
281
转载 JSON(二)——JavaScript中js对象与JSON格式字符串的相互转换
首先我们来看一下js中JSON格式的字符串var JSONStr1 = "{\"name\" : \"张三\"}";注意以下的写法不是js中JSON格式的字符串,它只是一个js的字符串。var JSONStr2 = "{'name' : '张三'}";我们看JSON语法中对于字符串的定义:是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(charact...
2019-01-29 10:44:31
402
转载 JSON(一)——JSON与JavaScript的关系
JSON是一种轻量级的数据交换格式,全称——JavaScript 对象表示法(JavaScript Object Notation)。 类比XML,你可以把JSON看作是一种存储数据的格式类型,一种数据规范。 描述JSON格式数据的语法采用了JS对象字面量的表示方法,但是你不能的把JS对象就看做是JSON了,同XML一样JSON只是一种存储数据的类型,它是独立于语言存在的,只是在不同的...
2019-01-29 10:43:00
414
转载 mysql(4)—— 表连接查询与where后使用子查询的性能分析。
子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果。子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表连接查询的性能做出一点分析。对于表连接查询和子查询性能的讨论众说纷纭,普遍认为的是表连接查询的性能要高于子查询。本文将从实验的角度,对这两种查询的性能做出验证,并就实验结果分析两种查询手段的执行...
2019-01-29 10:38:29
1291
1
转载 mysql(3)—— 内连接、外连接的区别
先来看一下,内连接的语法:SELECT XXX FROM XXX INNER JOIN XXX ON XXX;这里 INNER 可以省略,在上一篇博客中我们对于笛卡尔积现象的研究中(https://blog.csdn.net/wplblog/article/details/86686263)用到的就是内连接,但这并不能说明笛卡尔积算法只是适用于内连接,笛卡尔积算法针对的是表之间数据行的匹...
2019-01-29 10:31:10
489
转载 mysql(2)—— 由笛卡尔积现象分析数据库表的连接
首先,先简单解释一下笛卡尔积。现在,我们有两个集合A和B。A = {0,1} B = {2,3,4}集合 A×B 和 B×A的结果集就可以分别表示为以下这种形式:A×B = {(0,2),(1,2),(0,3),(1,3),(0,4),(1,4)};B×A = {(2,0),(2,1),(3,0),(3,1),(4,0),(4,1)};以上A×B和B×A的结果就可以...
2019-01-29 10:26:10
760
转载 mysql(1)—— 详解一条sql语句的执行过程
SQL是一套标准,全称结构化查询语言,是用来完成和数据库之间的通信的编程语言,SQL语言是脚本语言,直接运行在数据库上。同时,SQL语句与数据在数据库上的存储方式无关,只是不同的数据库对于同一条SQL语句的底层实现不同罢了,但结果相同。这有点类似于java中接口的作用,一个接口可以有不同的实现类,不同的实现类对于接口中方法的实现方式可以不同,结果可以相同。这里SQL语言的作用就类似于java中的接...
2019-01-29 10:16:52
998
原创 微信H5页面用Html2canvas生成图片的几种方式
Demo:仅供参考,实际业务场景请根据自己的需求修改(本案例提供的是思路和实现方式)<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Demo</title> <link rel="styleshee
2019-01-17 18:32:14
6812
原创 PHP 将页面生成图片并保存到手机
1、需要生成图片的页面引入JS【html2canvas.js自行到官网下载即可】<script src="/js/html2canvas.js"></script>2、demo页面【H5页面】<!DOCTYPE html><html><head> <meta charset="UTF-8"
2019-01-16 15:46:43
4106
原创 微信H5页面调起相册和摄像头,实现图片上传,并上传到本地服务器
1、config权限配置$.ajax({ url:'wx_getConfig', type:'get', dataType:'json', async:false, success:function(data){ var appId = data[0].appId; var timestamp =...
2019-01-16 15:41:25
18803
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人