- 博客(45)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 事务的四种隔离级别、脏读、幻读、不可重复读、MVCC的详解
文章目录概述重要概念隔离级别概述sql标准定义了四种隔离级别,而且每一种隔离级别都规定了一个事务所做的修改。较低级别的隔离通常可以执行更高的并发,系统的消耗更加低。(每种存储引擎实现的隔离级别各不相同)重要概念脏读当存在A,B两个事务,A事务可以读到B事务中未提交的内容,B失败回滚,导致A读到B未提交的的记录不可重复读在A事务中对同一数据两次查询不一致,可能原因是在...
2020-05-05 10:47:39
459
原创 servlet基础知识
servlet的定义servlet又叫java服务器小程序,是使用java编写,运行在web服务器上的程序应用,它是浏览器或着其他http客户端请求和http服务器上的数据库和或应用程序之间的中间层。servlet的特点servlet在web服务器空间内完成请求处理,没有必要创建新的进程单独处理。servlet独立于平台,因为它们是使用java编写的。serlet是按照servlet规范学习的,是之后java开发规范的基础。针对多个servlet请求,通常情况下,服务器只会创建一个serv
2021-09-15 16:52:12
313
原创 PDO防止mysql注入(三种方式)
文章目录PDO的简述防止mysql的措施PDO的简述pdo数据对象扩展是php访问数据库的一个轻量级接口,PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。防止mysql的措施使用quote过滤特殊字符,为SQL语句中的字符串添加引号,转为字符串$dbms='mysql'; //数据库类型$host='127.0.0.1'; //数据库主机名$dbName='test'; //使用的数据库$user='root'
2020-05-18 20:01:03
687
原创 Mysql索引及结构
文章目录一、概念二、关于B树的那些事1、B-Tree(1)特点(m阶B树)(2)例子(如存在一个3阶的B树)(3)性能分析1、B+Tree(1)特点(m阶B+树)(2)例子(3)性能分析(相对于B树)索引类别1、B-Tree索引存储引擎和索引的结构(1)重要概念(2)myisam的索引实现(3)innodb的索引实现2、hash索引(1)工作的原理(2)索引的优缺点一、概念索引是存储引擎用于快速找到记录的一种数据结构。在Mysql中索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎的索
2020-05-11 09:29:31
114
原创 传值与引用
按值传递:函数内对值的任何改变对函数外部无影响按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。...
2020-04-25 16:02:27
98
原创 trait的详解
文章目录概念特点其他概念用于模拟实现多继承。由于php只支持单继承,要实现继承多个类就成了难题了,而trait正是为了解决这个难题而诞生的。特点定义trait要以trait关键字开头,其他与类无异。一般trait不加成员属性,只加成员方法trait的方法要想被引入的类使用,只能用public修饰trait不能实例化trait可以引入traitclass person{...
2020-04-25 16:01:49
582
原创 PHP静态化技术
文章目录分类纯静态纯静态分类纯静态的方案分类伪静态纯静态纯静态纯静态分类局部静态化(使用ajax动态加载数据)纯静态化纯静态的方案利用buffer缓冲区技术<?php/** * 触发系统生成纯静态化页面业务逻辑 * 有3种方案: * 第一:定时扫描程序(利用crontab来处理) * 第二:手动触发方式,人为触发 * 第三:页面添加缓存时间,...
2020-04-25 16:01:05
121
原创 单点登录(sso)和cas系统的原理
文章目录概念单点登录的实现单系统登录多系统实现单点登录需要解决的问题关于cas系统cas系统的实现概念单点登录就是在一个多系统共存的环境下,用户在其中一个系统登录了,实现其他系统可以免登录,获得信任.单点登录的实现单系统登录在聊多系统单点登录前,首先我们要明白单系统如何实现登录功能的。单系统登录主要是使用session存储用户信息,然后将session_id存放在cookiet中,...
2020-04-25 16:00:31
247
原创 提高缓存命中率
文章目录一、命中率介绍二、如何计算命中率三、影响提高命中率的因素及方案1. 业务场景和需求2. 缓存设计(粒度和策略)3. 缓存容量和基础设施4. 其他因素一、命中率介绍命中率:可以从缓存获得需要的数据未命中率:无法从缓存获取到想要的数据,而导致需要从数据库中或者其他操作获取到数据。原因是缓存不存在或者缓存已过期二、如何计算命中率通过redis提供的info命令查看参数命令:...
2020-04-25 15:59:46
542
原创 redis的穿透、雪崩、高并发处理方案
文章目录异常类型概念与分析雪崩概念处理方案穿透概念和缓存击穿的区别处理方案异常类型雪崩穿透高并发概念与分析雪崩概念数据未加入缓存或在某一时间,redis缓存出现了大面积的失效,而导致所有请求去数据库的查询,引起内存或cpu使用率过高,甚至宕机。处理方案缓存的高可用性redis Sentinel(哨兵模式)+redis 的集群实现redis的高可用。限流降级...
2020-04-25 15:58:46
109
原创 进程、线程和协程
文章目录进程概念组成特点进程关系线程概念线程关系进程和线程的关系协程概念协程和线程的关系进程概念进程是计算机中程序的一个实例。进程是线程的容器。例如我们打开一个软件,一个游戏就是开启了一个进程。组成PCB(进程控制块)程序段数据段特点动态性:进程实质是程序在多道程序系统中的一次执行过程,进程是动态生成,动态消亡。并发性:任何进程都可以和其他进程并发执行的。独立性:进...
2020-04-25 15:57:33
92
原创 MySql的group by和having
group bygroup by 是分组查询,一般和聚合函数配套使用,select的列中非聚合的列只能是group by上的列select subject,max(grade) from grades group by subject;havinghaving是用于分组后过滤,having语句是在group by后面的,而having后面可以使用聚合函数,having筛选的字段必须...
2020-04-25 15:56:45
362
原创 防止MySql注入
概念mysql注入是指通过把sql命令插入web提交的提单或页面请求的字符串中,最终达到欺骗服务器执行恶意的SQL命令。防止注入措施对用户提交的表单或者请求的参数信息进行校验,通过正则表达式进行敏感字符转换或者限制长度。使用addslashes在特殊字符前加上\。使用htmlspecialchars对字符串转实体对敏感私密字段进行加密存储。...
2020-04-25 15:55:46
157
原创 MySql存储引擎
文章目录什么是存储引擎存储引擎InnoDb特点使用场景MyISAM特点使用场景什么是存储引擎存储引擎是数据库的底层软件组件。不同的引擎提供了不同的存储机制、索引技巧、锁机制等功能。存储引擎InnoDb特点mysql的默认引擎,是一个事务型的存储引擎。支持行级锁和外键约束采用MVCC来支持高并发,实现了四个标准的隔离级别(默认级别是REPEATABLE READ 可重复读)M...
2020-04-25 15:55:08
79
原创 正则表达式
文章目录一、组成二、定界符定义三、原子定义组成原子表([])四、元字符定义元字符集合五、模式修正符(放在定界符之外)定义模式修正符集合一、组成定界符原子元字符模式修正符二、定界符定义正则表达式必须由定界符包裹着,通常用“/”作为定界符,当然也可以使用其他除了数字、字母和“\”的任何字符作为定界符三、原子定义正则表达式的最小匹配单元,表达式中至少需要有一个原子组成...
2020-04-03 15:52:06
70
原创 策略模式
策略模式策略模式指在有多个平级同类的行为上,可以将每个行为封装成一个类,然后通过一个虚拟策略类来实例化具体的操作策略类,他们可以相互切换,例如出去旅行,步行、自行车、公交、自驾等都是平级策略和工厂模式的区别策略模式和工厂模式颇为相似,只是在结构上有点区别,策略模式是通过虚拟出一个分配策略的类来具体实例化策略的类的。而工厂模式是通过直接实例化策略的类来实现的。interface Ma...
2020-04-01 17:41:45
72
原创 适配器模式
适配器模式适配器模式是用于解决两个接口的数据交换格式不一致的问题,通过继承父类的方法,将返回结果进行适应对接接口的处理的模式class ParentClass{ public function getData(){ return serialize(['name'=>'Tony','age'=>26,'sex'=>1]); }}cla...
2020-04-01 17:41:09
91
原创 桥接模式
桥接模式适用于出现实现维度和抽象维度时,桥接模式可以将两个维度进行解耦/** * 桥接模式 * 手机是实现维度,紧急程度是抽象维度 */abstract class SendMessage{ protected $sendDevice = null; public function __construct($sendDevice) { $...
2020-04-01 17:40:36
98
原创 装饰模式
装饰模式当想对现有的类的功能,添加新功能的时候,同时又不改变原来功能的结构,这种模式是通过新创建一个装饰类来包装原来的类,也就是通过给装饰类传入原来类,然后在装饰的功能上通过传进来的类调用原来的方法,然后再去实现新功能比较和桥接模式装饰模式是单维度的添加修改,而桥接模式是多维度的class Base{ public $txt; protected $obj;...
2020-04-01 17:40:04
54
原创 选择排序
原理每一次从待排序的数组单元中选择出一个最小或者最大值,放在序列的起始位置,直到把待排序数组轮询完毕(双重循环完成,外循环控制轮数,内循环控制比较次数)时间复杂度O(n^2)/** * 选择排序 */function selectSort($arr){ $len = count($arr); if ($len == 1) return $arr; f...
2020-04-01 17:39:03
90
原创 冒泡排序
原理比较相邻两个单元(从小到大,反之同理),后面元素比前面元素小,则交换元素时间复杂度O(n^2)function bubbleSort($arr){ $len = count($arr); if ($len == 1) return $arr; for ($i = 0; $i < $len - 1; $i++) { for ($j ...
2020-04-01 17:38:35
62
原创 插入排序
原理将需要排序的元素,和前面已经排序好的元素从后往前比较,如果前面元素大于当前插入元素,则将元素往前移动一个位置,直到前面元素小于当前元素(第一个元素默认已经被排序)时间复杂度O(n^2)function insertSort($arr){ $len = count($arr); if ($len == 1) return $arr; for ($i = ...
2020-04-01 17:37:57
85
1
原创 快速排序
原理选择第一个元素作为中间值,然后将剩余单元分割成小于中间值和大于等于中间值两部分,在利用回调将左右两部分进行同样处理,则最终合并即可得到排序后数组function quickSort($arr){ $len = count($arr); if ($len <= 1) return $arr; $middle = $arr[0]; $right=$l...
2020-04-01 15:03:08
56
原创 PHP7新特性
简介php7相对于之前版本有着极大的提升,官方文档显示,php7版本的性能相对于php5.6提升了3倍的性能。要点标量类型和返回值类型的声明默认情况下,php在执行都是处于弱类型校验模式,php7增加了标量类型()的声明特征,标量类型有两种模式强制模式(默认)严格模式(包括类型有int、float、bool、string、interfaces、array、callab...
2020-04-01 14:55:13
98
原创 PHP魔术方法
概念系统在特定的时候自动执行的方法类比__autoload($name)触发时机:唯一一个卸载类外的方法,当实例化一个对象,而当前脚本没有这个类时,就会自动触发这个方法,该方法会传入当前实例化的类名。function __autoload($name){ include "./" . $name . ".php";}__get(KaTeX parse err...
2020-04-01 14:54:12
79
原创 require、include、require_once和include_once
require 和 includerequire 和 include 的功能相似,都是用于包含文件的语句结构,只是他们处理失败的方式不一样,当引入的文件找不到时,include会抛出一个警告(E_WARNNING),而脚本会继续执行。require则会抛出一个致命错误(E_COMPILE_ERROR),脚本会中止执行。require_once和include_oncerequire_o...
2020-04-01 14:51:34
84
原创 git+gitlab实现git版本控制管理本地化+自动化部署
情景假如你在本地的虚拟机或者公司内网服务器部署了gitlab,希望版本控制管理本地化或内网化,那如何实现版本控制管理本地化或内网化的同时,能够将项目基于版本控制管理部署在线上服务器,这就是以下要讨论的问题。上面方案存在的关卡远程服务器如何同步或克隆本地gitlab的代码gitlab如何项目实现自动化同步部署远程服务器实现过程建立...
2019-08-09 17:28:00
188
原创 如何正确使用qrcode生成二维码
一、前言 关于使用qrcode,如果是基于laravel框架的话,可以考虑使用simple Qrcode,这是针对于laravel框架封装的一个qrcode的版本,使用起来更加简便快捷,功能也相对于比较集成。如如何设置二维码的背景,给二维码添加logo等,都是简单的调用即可实现。详细使用可以参考laravel学院学院君的文章:https://laravelacademy.org...
2019-04-22 23:42:00
214
原创 laravel的session存储流程及容易遇到的坑、git版本管理 .gitignore不起作用的解决办法、ucloud重装系统磁盘问题...
一、laravel的session存储流程及容易遇到的坑 1、背景$data = $request->session()->get('key2');dump($data);$request->session()->put('key2', time());dd($request->session()->get('key2')...
2019-04-10 09:53:00
200
原创 web高级优化篇
#一、前言 当随着网站运营和发展到一定程度时,由于数据量、访问量的上升,随之而来的高并发,执行或者查询处理数据的的效率问题逐渐爆发出来,如何解决网站高并发、大数据量、大负载等等问题,是一个网站设计师所必须面对的问题。#二、相关概念##1、负载均衡技术 (1)概念:简而言之,负载均衡技术就是通过把访问的量分流到多台服务器上,让服务器的压力得以分担的技术。 (2)流...
2019-04-02 19:42:00
72
原创 mysql中的视图
一、前言 mysql中的视图概念虽然在工作应用中不是必不可缺的,但是合理地使用视图,对开发能起到很好的辅助作用。二、概念 视图简而言之就是存储查询语句的一个虚拟表。三、应用场景 1、做表的权限限制可以应用。工作中存在很常见的一个工作场景时,开放数据库中的部分表字段给第三方,但是某些表中又有一些敏感的字段不能开放,那么能应用的解决方案有一、开发接口,二、...
2018-11-29 13:56:00
64
原创 git版本管理 .gitignore不起作用的解决办法
一、出现的问题 从服务器克隆下来的项目,在本地修复运行产生了部分缓存文件后,确认可以提交到远程分支了,提交时发现居然把缓存文件也列入了提交的范围了,去.gitignore文件查看,发现缓存文件的目录已经被列入忽略队列,这就说明忽略文件并未生效。二、问题的原因 经过对git版本控制的重新认识,发现那些没有生效的目录是因为这些目录或者文件已经被staged,也就是这些文件或者...
2018-11-02 15:42:00
78
原创 数据结构及算法学习(一)
一、数据结构范畴 数据结构是一门与程序设计密切相关的课程,而程序设计就是算法+数据结构,算法即是处理数据的策略,而数据结构就是表达程序设计的模型,可以说任何一个程序设计问题,我们都可以从算法和模型出发。概而言之,数据结构就是描述了程序设计的数学模型及在其程序设计上的表示和实现。二、基本概念 (1)数据:是计算机处理信息的载体,是其某种特定的符合表达形式的集合,它的定义范畴...
2018-09-14 08:59:00
76
原创 沙箱机制(Sandboxie)
一、沙箱是什么? 沙箱是一个虚拟系统程序,沙箱提供的环境相对于每一个运行的程序都是独立的,而且不会对现有的系统产生影响,即沙箱提供一个限制该应用程序对系统资源的访问权限。二、沙箱的应用 (1)搭建测试环境。沙箱的应用只能访问自己的应用访问目录,而不能应用之间的资源进行共享,这样就形成了一个相对安全的机制,由于沙箱具有非常良好的独立性、隔离性,所以能够搭建一些具有高风险的软...
2018-09-13 18:03:00
341
原创 码云项目托管之自动化部署
一、首先要到https://gitee.com/注册一个账号,并创建一个项目。 二、把本地和服务器公钥添加到码云公钥管理 三、到webHooks下添加webHooks设置 然后添加一个触发钩子的url,当开发者提交主分支的时候,首先是把版本信息提交到码云,然后码云主动请求该url,并携带版本信息及密码过去,进行验证后触发钩子,钩子再执行版本更新 ...
2018-08-14 12:00:00
186
原创 学习laraver
一、安装laraver 在安装了composer前提下,打开cmd,切换到你想部署laravel项目的目录下,执行一下命令composer create-project laravel my-project-name --prefer-dist "5.1*" 执行完并无误,即安装完毕 检测是否可以访问 访问laravel目录下的public目录出现如下...
2018-03-12 09:44:00
102
原创 搭建本地虚拟主机
搭建本地虚拟主机有利于对建站的加深了解,提高自身的认识层面,而搭建本地虚拟主机也是一件非常简单的事情一、修改Apache的配置文件 httpd.conf文件 ctrl+f查找到下面代码Include conf/extra/httpd-vhosts.conf 把前面的#去掉二、修改虚拟主机的httpd-vhosts.conf配置文件 找到下面代码...
2018-03-11 20:14:00
122
原创 在windows端和linux端安装Git
一、Git的安装 1. 在windows端 到地址:https://git-scm.com/downloads 选择对应版本下载后,进行傻瓜式安装即可 2. 在linux端 查看是否安装了git,出现下图即为未安装 如果尚未安装,下载安装包wget https...
2018-02-26 21:30:00
98
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人