- 博客(49)
- 收藏
- 关注
原创 博客迁移
自己搭建了一个github+hexo的博客 以后就在这里写博客了,再见csdnhttps://the-stardust.github.io/
2019-11-28 09:56:11
173
原创 PHP深入理解---结合laravel实现多进程
最近在处理一个php脚本,需求是给定一个文件夹,文件夹里面有几千个文件夹,每个文件夹里面的内容是图片加word文档,需要读取他们插入到数据库中。使用了一个composer包叫phpoffice,可以在composer.json中加入require 执行composer install 安装"require": { "phpoffice/phpword": "^0.16.0"},...
2019-07-16 15:49:05
3473
原创 PHP深入学习--调用上下文和解析上下文
最近在研究公司业务代码,其中的RPC协议中的上下文不是很理解,就查找了下资料,记录一下例1class A{ protected $value = 'class A value'; public function printValue(){ echo $this->value; }}class B extends A{ p...
2019-06-27 18:45:51
409
1
转载 PHP深入理解---self的用法
有人询问self关键字的用法,答案是比较明显的:静态成员函数内不能用this调用非成员函数,但可以用self调用静态成员函数/变量/常量;其他成员函数可以用self调用静态成员函数以及非静态成员函数。随着讨论的深入,发现self并没有那么简单。鉴于此,本文先对几个关键字做对比和区分,再总结self的用法。与parent、static和this的区别1.parentself与pa...
2019-06-26 15:23:11
979
转载 深入理解PHP---session和cookie
session是web开发里一个重要的概念,在大多数web应用里session都是被当做现成的东西,拿来就直接用,但是一些复杂的web应用里能拿来用的session已经满足不了实际的需求,当碰到这样的情况时候我们需要更加深入的理解session的机制,本文将梳理下session的相关知识,为设计可替代web容器自带的session机制打个基础。1.1 session的概念在计算机专业术语里...
2019-06-26 13:46:28
283
原创 laravel解析-入口应用初始化
laravel是单一入口模式,所有请求从public/index.php进入define('LARAVEL_START', microtime(true));require __DIR__.'/../vendor/autoload.php';$app = require_once __DIR__.'/../bootstrap/app.php';$kernel = $app-&...
2019-06-13 17:38:13
1797
1
原创 MySQL高级学习(11)主从复制
一、原理1.master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events2.slave将master的binary log events拷贝到它的中继日志(relay log)3.slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的二、复制的基本原则1.每个slave只有...
2019-06-13 11:57:14
234
原创 MySQL高级学习(10)Mysql profiles
1.是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量2.默认情况下,参数处于关闭状态,并保存最近15次的运行结果3.Show variables like 'profiling'; 默认是关闭,使用前需要开启4.set profiling=1; 开启5.查看结果,show profiles;6.诊断SQL,show profile ...
2019-06-12 16:57:22
282
原创 MySQL高级学习(9)存储过程练习
1. 建表# 新建库create database bigData;use bigData;#1 建表deptCREATE TABLE dept( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, dname VARCHAR(20...
2019-06-12 16:55:35
1343
原创 MySQL高级学习(8)慢查询日志
一、介绍1.MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。SHOW VARIABLES LIKE '%slow_query_log%';set global slow...
2019-06-12 16:50:33
476
原创 MySQL高级学习(7)查询优化
一、关联查询优化(1)保证被驱动表的join字段已经被索引(2)left join 时,选择小表作为驱动表,大表作为被驱动表。(3)inner join 时,mysql会自己帮你把小结果集的表选为驱动表。(4)子查询尽量不要放在被驱动表,有可能使用不到索引。二、子查询优化(1)有索引的情况下 :用 inner join 是最好的 其次是 in ,exists最糟糕...
2019-06-12 16:49:00
261
1
原创 MySQL高级学习(7)索引优化
mysql 索引优化1. 最左前缀:如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列。and 忽略左右关系。既即使没有按顺序 由于优化器的存在,会自动优化。经过试验结论 建立了 idx_nameAge 索引 id 为主键(1).当使用覆盖索引的方式时,(select name/age/id from staffs where age=...
2019-06-12 11:48:02
388
原创 MySQL高级学习(6)最全SQL性能分析 查询计划字段解析
一 MySQL Query OptimizerMySQL Optimizer是一个专门负责优化SELECT 语句的优化器模块,它主要的功能就是通过计算分析系统中收集的各种统计信息,为客户端请求的Query 给出他认为最优的执行计划,也就是他认为最优的数据检索方式。但不一定是最符合业务需求的。当客户端向MySQL发送一条sql语句的时候,命令解析器模块就会完成请求分类,区别度是读还是写,se...
2019-06-06 18:35:53
374
原创 MySQL高级学习(5)索引
一 索引简介 索引的本质就是:索引一种数据结构 可以理解为:排好序的快速查找的数据结构在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。下图就是一种可能的索引方式示例:左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址为了加快Col2的查找,可以维...
2019-06-06 15:06:23
208
原创 MySQL高级学习(4)SQL执行顺序与join
我们手写的语句是这样的而机器读取顺序是这样的join1 A、B两表共有select * from t_emp ainner joint_dept b on a.deptId = b.id;2 A、B两表共有+A的独有select * from t_emp aleft joint_dept b on a.deptId = b.id;3 A、B两表共有+B的...
2019-06-06 13:52:43
378
转载 MySQL高级学习(3)存储引擎
1、InnoDB存储引擎nnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。行级锁,适合高并发情况2、MyISAM存储引擎MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和行级锁(myisam改表时会将整个表全锁住),有...
2019-06-06 10:43:04
162
原创 MySQL高级学习(2)逻辑架构
和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。1.连接层数据库连接池,最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类...
2019-06-06 10:10:35
192
原创 MySQL高级学习(1)配置文件
一.Mysql高手是怎样炼成的二 mysql配置文件1.二进制日志log-bin主从复制及备份恢复2.错误日志log-error默认是关闭的,记录严重的警告和错误信息,每次启动和关闭的详细信息等。3.慢查询日志log默认关闭,记录查询的sql语句,如果开启会减低mysql的整体性能,因为记录日志也是需要消耗系统资源的4.数据文件 (1)Myisam...
2019-06-06 10:04:50
151
原创 docker 镜像容器常用命令
一 镜像命令1.docker images 列出本地能够运行的images2.docker search 镜像的名字 在docker hub 上面搜索镜像 -s 30 过滤30星以下的3.docker pull 镜像名字 在阿里云上面下载镜像 docker pull redis:2.0 2.0标签 一般指2.0版本4.docker rmi 镜像的名字 删除镜像 默认删除最新版本...
2019-06-06 09:42:24
9291
原创 docker Dockerfile镜像生成
DockerfileDockerfile就是用来构建镜像的文件,有一系列命令和参数组成,docker会根据里面的内容进行镜像的build1.手动新建一个Dockerfile文件,必须符合file规范2.然后添加自己的内容3.有了这个文件之后,就可以docker build镜像,然后docker run容器 会生成数据卷共享目录centos镜像的Dockerfile文件scr...
2019-06-06 09:42:05
2607
原创 docker 容器数据卷
一 容器数据卷挂载数据卷:容器与主机数据共享,容器内数据互通,持久化数据;有点像redis主从复制,可以互相修改;容器关闭后,修改主机文件,重启容器后,数据会同步过去;docker inspect 容器id 查看是否绑定成功,权限是什么用命令-v添加容器数据卷1.docker run -it -v 宿主机目录路径:容器内目录路径 容器id/name2..docker run -...
2019-06-06 09:41:40
185
原创 redis 主从复制 哨兵模式
一 一主二从配从(库)不配主(库)每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件info replication 查看主从关系1.配置步骤(1)拷贝多个redis.conf文件(2)开启daemonize yes(3)pid文件名字(4)指定端口(5)log文件名字(6)dump.rdb名字2.一主二从问题汇总1 切...
2019-06-05 17:07:46
223
原创 redis 事务
Redis 事务1.单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。2.没有隔离级别的概念:队列中的命令没有提交之前都不会实际的被执行,因为事务提交前任何指令都不会被实际执行,也就不存在”事务内的查询要看到事务里的更新,在事务外查询不能看到”这个让人万分头痛的问题3.不保证原子性:redis同一个事务中如果有一条命令...
2019-06-05 17:06:10
120
原创 reids 持久化
一.RDB1.rdb就是每隔固定的一些时间将内存中的数据集写入快照,也就是snapshot快照2.rbd工作方式:redis会完全复制主进程(变量、环境变量、程序计数器等),也就是fork一个子进程去进行持久化,会先把数据写入到一个临时文件中去,待持久化过程结束后,在用这个临时文件替换掉上次持久化后的文件,整个过程中不需要任何I/O操作,这就确保了极高的性能,如果需要大量的数据恢复,RBD...
2019-06-05 17:05:45
157
原创 Redis 常用配置说明
1.daemonize yes redis默认不是守护进程no,修改为守护进程;2.pidfile /var/run/redis.pid 当redis以守护进程运行时,redis会默认把pid写进/var/run/redis.pid文件,如需修改配置可以指定3.redis端口:port 63794.bind 127.0.0.1 绑定的主机地址,docker容器要使用docker ins...
2019-06-05 17:02:38
150
原创 数据结构与算法(归并排序)
归并排序在很多地方都用得到,总结就是把一个有n个元素的无序数组,看成n个有序数组,再把他们合并成有序数组# include <stdio.h>#define MAXSIZE 10void Merge(int *left,int lsize,int *right,int rsize){ int i,j,m; int temp[MAXSIZE]; i = j = m = ...
2019-06-05 16:56:20
218
原创 数据结构与算法(插入排序)
话不多说 直接上代码void InsertSort(int *a,int n){ int i,j,temp; for(i=1;i<n;i++) { if(a[i]>a[i-1]) { temp = a[i]; for(j=i-1;a[j]<temp && j>=0;j--) { a[j+1] = a[j]; ...
2019-06-05 16:42:37
183
原创 数据结构与算法(希尔排序)
希尔排序其实就是插入排序的优化版本void ShellSort(int *a,int n){ int i,j,temp; int gap = n/2; while(gap>1) { for(i=gap;i<n;i=i++) { temp = a[i]; for(j=i...
2019-06-05 16:39:54
265
原创 数据结构与算法(堆排序)
堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。(注意,这里对同兄弟结点没有要求)堆排序的理念就是,利用大顶堆(小顶堆),用的完全二叉树的数据结构,根的数据是最大值(最小值),然后把根取出来,形成新的完全二叉树,但是堆可能不平衡,就需要再次排序堆,然后再取出根....代码如下堆排序比如要排序一个大小为10的数组 需要一个大小为11的...
2019-06-05 16:04:05
418
原创 数据结构与算法(优化快速排序)
正常的快速排序的理念就是,递归的把数组分为两半,进行排序,然后再合并,基础的排序算法就胡写了 写一下优化算法优化算法的理念就是双指针,一趟确定一个数的位置void Quick(int a[],int left,int right){ if(left<right) { int pivot = doSort(a,left,right); ...
2019-06-05 15:51:17
255
原创 数据结构与算法(优化冒泡排序)
第一种优化,双指针,由于冒泡排序是遍历一趟找出一个最大值(或最小值),所以可以使用双指针,遍历一次找出一个最大值和最小值void Bubble(int arr[],int n){ int i,j,temp; int left = 0; int right = n-1; while(left<right) { for(i=left...
2019-06-05 15:47:18
230
转载 docker容器中无法使用curl,报错curl: (7) Connection refused
使用的laradock够建的docker环境,在进入Php-fmp容器中,使用curl命令直接报了错,被拒绝掉了解决办法 把域名host指向10.0.75.2 原文地址 https://segmentfault.com/q/1010000011844901...
2019-01-30 17:14:19
12264
原创 laravel server_error 429
laravel_api接口有一个中间件叫 throttle ,他是laravel api开发中限制路由访问次数的一个中间件把图片中红色箭头所指的一行注释掉,就解除了限制,throttle:60,1表示的是一分钟研制60次访问,如果访问超限,测绘有如下错误:...
2018-11-20 15:00:54
568
原创 数据结构(线性表小结)
线性表是整个数据结构中的重要基础1.线性表中的逻辑结构是指数据元素之间的线性关系,在计算机中表示这种关系的两类不同存储结构是顺序存储结构(顺序表)和链式存储结构(链表)2.顺序表:元素存储关系的相邻位置反应了他们逻辑的线性关系,列入数组,可称为随机存储结构, 链表:是依靠指针来表示线性逻辑关系的,可称之为顺序存储结构。 顺序表和链表的比较:对于链表,除了常用的单链表...
2018-10-25 08:49:40
907
原创 数据结构(2)
一 算法1.1 算法的五个特性:1.有穷性。一个算法必须在执行有穷步后结束,并且每一步在有穷时间内完成2.确定性。每种情况下执行的操作,都会有确切的规定,不会有二义性。3.可行性。所有操作都可以通过已实现的基本操作运算执行有限次来实现4.输入5.输出1.2 评价算法的基本标准1.正确性 2.可读性 首先算法是有利于人们理解和相互交流的,其次才是机器可行性3...
2018-10-13 09:01:07
168
原创 数据结构(1)
一 数据结构简介 数据结构主要研究非数值计算程序设计中的操作对象,和这些对象之间的关系和操作的学科二 基本概念和术语 数据:客观事物的符号表示 数据元素:数据的基本单位,也称元素、记录 数据项:组成数据元素的、有独立含义的、不可分割的最小单位 数据对象:是性质相同的数据元素的集合,是数据的一个子集三 数据结构3.1 数据结构 数据结构是相互之...
2018-10-12 09:29:00
166
转载 Mysql常见的水平分表
根据经验,Mysql表数据一般达到百万级别,查询效率会很低,容易造成表锁,甚至堆积很多连接,直接挂掉;水平分表能够很大程度较少这些压力。1.按时间分表这种分表方式有一定的局限性,当数据有较强的实效性,如微博发送记录、微信消息记录等,这种数据很少有用户会查询几个月前的数据,如就可以按月分表。2.按区间范围分表一般在有严格的自增id需求上,如按照user_id水平分表:table...
2018-09-28 13:28:28
1898
原创 laravel 出现unserialize(): Error at offset 0 of 40 bytes解决办法
You have to set a news Key Generate becausephp artisan key:generateAfter that test again to run the Laravel Applicationphp artisan serve 原因是你本来的项目是并没有.env文件或者你是刚添加的.env文件,系统需要重新生成一个key。...
2018-09-20 09:02:22
9517
转载 转转转 laravel服务容器最容易理解的解析
原文地址: http://www.insp.top/learn-laravel-container ,转载务必保留来源,谢谢了! 容器,字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你对该容器的定义。当然,有这样一种容器,它存放的不是文本、数值,而是对象、对象的描述(类、接口)或者是提供对象的回调,通过这种容器,我们得以实现许多高级的功能,其...
2018-09-11 10:15:29
232
转载 转转转---最好理解的restful解读
老婆经常喜欢翻看我订阅的技术杂志,她总能从她的视角提出很多有趣的问题。一个悠闲的周日下午,她午觉醒来,又习惯性的抓起这个月的杂志,饶有兴趣地看了起来。果不其然,看着看着,她又对我发难了,“Restful是什么呀,老公?是restaurant的形容词吗,突然就觉得好饿了啊……”作为一个合格的程序员,我一直把能够将一项技术讲给老婆听,并且能给她讲懂,作为我已经掌握了这项技术的标准。 如果...
2018-09-10 18:02:14
200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人