自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Again yy

我们最大的弱点在于放弃,成功的必然之路就是不断的重来一次。

  • 博客(220)
  • 收藏
  • 关注

转载 浏览器发送http请求过程分析

请求过程整体流程:1.域名解析-->2.发起TCP的3次握手-->3.建立TCP连接后发起http请求-->4.服务器响应http请求,浏览器得到html代码-->5.浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)-->6.浏览器对页面进行渲染呈现给用户.下面以Chrome浏览器访问www...

2019-05-21 11:14:52 5866

转载 一文读懂一个URL请求的过程是怎样的

前言当我们在浏览器中输入一个URL访问地址,然后浏览器返回给我们一个响应页面,这内部过程到底是怎样的呢?下面我将从以下几个方面阐述一个 WEB请求过程到底是怎样:浏览器缓存 DNS域名解析 TCP连接 HTTP请求与响应浏览器的缓存机制这里将浏览器机制放在第一步是考虑如果浏览器中有了缓存数据,浏览器再次向目标URL发送请求时,在数据不过期的情况下,会直接使用浏览器缓存的数据,...

2019-05-21 11:09:14 352

转载 网络攻击防范(SQL注入、XSS、CSRF、DDos)

1)如何防范SQL注入1、使用PDO预处理的方式,也就是一个萝卜一个坑。预处理。将输入的数值,绑定到参数,也就是放进坑里(一个萝卜一个坑,一个参数一个坑),这样输入的内容(外部的内容)就都落到坑里了,在每个坑里处理每个参数,这样就安全了,不会出现SQL注入。2、使用htmlspecialchars()等函数进行转义。还可以对输入类型进行检测,类型转换。2)如何防范CSRF攻击...

2019-05-13 17:54:47 3227

原创 PHP date() 和 strtotime() 使用详解

1.php中时间转换函数echo strtotime(date('Ymd')); //1560096000echo date("Y-m-d H:i:s",'1560096000'); //2019-06-10 00:00:002.php中获得今天零点的时间戳//要获得零点的unix时间戳,可以使用$todaytime=strtotime('today')...

2019-05-10 18:14:47 23671 2

转载 PHP经典算法集锦【经典收藏】

本文实例总结了PHP经典算法。分享给大家供大家参考,具体如下:1、首先来画个菱形玩玩,很多人学C时在书上都画过,咱们用PHP画下,画了一半。思路:多少行for一次,然后在里面空格和星号for一次。 <?php for($i=0;$i<=3;$i++){ echo str_repeat("",3-$i); echo str_repe...

2019-04-30 14:18:28 250

转载 大数据和高并发解决方案

一、网站应用背景开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器+一台数据库服务器+一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的方式来提高网站应用的访问性能,当然,也要考虑成本的问题。当问题的规模在经济条件下通过堆硬件的方式解决不了的时候,我们应该通过其他的思路去解决问题,互联网发展至今,已经提供了很多成熟的解决方案,但并不是都具有适用性,你...

2019-04-29 15:59:24 5966

转载 分布式之消息队列要点

本文主要围绕如下几点进行阐述:为什么使用消息队列? 使用消息队列有什么缺点? 消息队列如何选型? 如何保证消息队列是高可用的? 如何保证消息不被重复消费? 如何保证消费的可靠性传输? 如何保证消息的顺序性?下面围绕以上七点进行阐述。需要说明一下,本文不是《消息队列从入门到精通》这种教程,因此只是提供一个复习思路,而不是去教你们怎么调用消息队列的API。建议对消息队列不了解的人,去...

2019-04-25 11:05:22 120

转载 究竟啥才是互联网架构“高可用”

一、什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8....

2019-04-24 10:46:46 237

转载 关于负载均衡的:总结与思考

目录一分钟了解负载均衡的一切 算法衡量 负载均衡算法 轮询算法(round-robin) 加权轮询算法(weight round-robin) 随机算法(random) 加权随机算法(random) 哈希法(hash) 一致性哈希 最少连接算法(least connection) 一点思考 有状态的请求   关于load balancer 其他...

2019-04-23 11:13:11 129

转载 TCP的三次握手与四次挥手(详解+动图)

背景描述:通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才应该是应用进程之间的通信。UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也...

2019-04-22 23:20:57 136

转载 TCP、UDP、HTTP、SOCKET、WebSocket之间的区别

TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层,每层都有相应的协议,如下图IP:网络层协议;(高速公路)TCP和UDP:传输层协议;(卡车)HTTP:应用层协议;(货物)。HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息...

2019-04-22 22:56:17 985

原创 PHP $_SERVER

_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言$_SERVER['REMOTE_ADDR']//当前用户IP。$_SERVER['REMOTE_HOST']//当前用户主机名$_SERVER['REMOTE_PORT']//端口。$_SERVER['SERVER_NAME']//服务器主机的名称。$_SERVER['PHP_SELF']//正在执行脚本的文件名$_SERVER['argv']//传递给该脚本的参数。...

2022-07-28 18:19:25 92

原创 面试题总结

一、浏览器输入一个地址访问的过程发生了什么 https1.浏览器URL解析2.DNS域名解析3.ip寻址arp地址转换4.tcp三次握手5.建立tcp连接后发起http请求7.服务器响应http请求,浏览器拿到html代码8.浏览器解析html并请求代码中资源9.浏览器渲染页面二、浏览器如何通过HTTP协议跳转到HTTPS协议(301和302的区别)通过HTTP重定向,常见的301:永久重定向 搜索引擎保存新的url,后续会请求到新的url302:临时重定向 搜索引擎还是原来url,后

2022-07-28 18:19:03 33

原创 session的基本原理及安全性

好吧,还是说点白话吧,在客户端记录的其实是一个sessionid,在服务器端记录的是一个key-value形式的数据结构,这里的key肯定是指sessionid了,value就代表session的详细内容。如果没有问题,我就不在这里啰嗦了。你网站上的运行的js代码并不一定是你写的,比如说一般网站都有一个发表文章或者说发帖的功能,如果别有用心的人在发表的时候填写了html代码(这些html一般是超链接或者图片),但是你的后台又没有将其过滤掉,发表出来的文章,被其他人点击了其中恶意链接时,就出事了。...

2022-07-28 18:16:21 297

原创 问题内容总结

is_free_lock();举个简单的例子,你这个接口是分页查询的,但是你没对分页参数的大小做限制,调用的人万一一口气查Integer.MAX_VALUE一次请求就要你几秒,多几个并发你不就挂了么?缓存击穿嘛,这个跟缓存雪崩有点像,但是又有一点不一样,缓存雪崩是因为大面积的缓存失效,打崩了DB,而缓存击穿不同的是缓存击穿是指一个Key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个Key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个完好无损的桶上凿开了一个洞。...

2022-07-28 18:14:38 49

原创 Socket原理

上面我们已经知道网络中的进程是通过socket来通信的,那什么是socket呢?socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open–>读写write/read–>关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭),这些函数我们在后面进行介绍。...

2022-07-28 18:12:57 18

转载 数组函数大全

使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序。使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序。使用回调函数过滤数组中的每个元素,如果回调函数为TRUE,数组的当前元素会被包含在返回的结果数组中,数组的键名保留不变。array_reduce($arr,"function","*");..

2022-07-28 18:11:42 867

转载 mysql经典优化

说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图

2022-07-28 18:11:00 13

原创 SESSION详解

一. cookie和session1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端保存Session的方法很多,内存、数据库、文件都有。集群的时候也要考虑

2022-07-28 18:10:18 462

转载 PHP实现常用排序算法(含示意动图)

各种排序的稳定性,时间复杂度、空间复杂度、稳定性总结如下图正在上传…重新上传取消关于时间复杂度(1)平方阶(O(n2))排序各类简单排序直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlog2n))排序快速排序、堆排序和归并排序;(3)O(n1+§))排序,§是介于0和1之间的常数。希尔排序(4)线性阶(O(n))排序基数排序,此外还有桶、箱排序。关于稳定性稳定的排序算法冒泡排序、插入排序、归并排序和基数排序不是稳定的排序算法8大排序算法图文讲解。.........

2022-07-28 18:02:38 57

原创 MySQL慢查询日志

一查看日志是否开启二开启和关闭的sql三查看log文件所在位置四修改log文件所在位置五日志输出类型table或file六修改日志输出类型。

2022-07-28 17:10:12 1010

原创 Xshell评估过期处理方法

点击出现的评估期已过的窗口如下,如果你也遇到了同样的问题,通过以下方法解决。1、点击上面图片上的取消按2、进入Xshell官网主页 https://www.xshell.com/zh/free-for-home-school/https://www.netsarang.com/。2.1、填写资料并点击下载3.打开邮箱,没什么问题的话过十几秒就能收到两封邮件:3.1进入自己的邮箱,点击链接下载Xshell 3.2安装,再次登录。...

2022-03-01 14:18:46 15124 10

原创 Notepad++ 连接远程 NppFTP

远程连接1、自动安装:插件——> Plugin Manager——>ShowPlugin Manager——>勾选NppFTP插件——>Install2、 手动安装打开notepad++插件项目的官方网站: http://sourceforge.net/projects/npp-plugins/在列表中点击需要的插件(或在顶部搜索框搜索你想要的插件)复制解压后NppFTP_0.26.3\bin\ NppFTP.dll将下载到...

2021-09-07 14:06:23 128

原创 crontab No such file or directory 和 Permission denied 解决办法

问题描述:crontab执行后,查看log发现shell没有正常执行,并报错原因分析:查看了shell代码发现没有问题,那应该就是shell文件环境变量和执行权限问题之前也有测试过脚本,执行是正常的。 之前用的是 bash 直接执行,改成先添加执行权限后执行解决方案:原执行bash timSh.sh改chmod +x ./timSh.sh./timsh.sh接续看crontab执行的log,发现正常输出数据了...

2021-08-25 11:25:50 840

原创 shell脚本空行造成: not found 报错的解决方法

问题:执行shell脚本文件,报错:shellText.sh: line 16: $'\r': command not found查看脚本文件第16行,发现是空行;原因:window下的换行是回车符+换行符,也就是\r\n,而unix下是换行符\n。解决方法方法一:使用notepad转换在右下角的windows(CR LF),点击右键,选择转为Unix(LF)方法二:使用vscode转换点击右下角的CRLF,选择LF即可;方法三:使用vim转换使用vim打开xxx.sh.

2021-08-24 16:14:16 1414

原创 Nginx配置虚拟主机

我的虚拟主机公网IP为82.157.107.204(云服务器)本地测试环境为windows10(修改本地的hosts文件)步骤:(安装nginx可以看看我文章“linux nginx编译安装”)1、打开nginx.conf文件。(默认安装地址:/usr/local/nginx/conf这个目录下)在nginx.conf文件中写入:server { listen 80; //表示监听80端口 server_nam...

2021-08-16 17:24:10 72

转载 nginx启动、重启、关闭

方式一:传统方法一、启动  cd usr/local/nginx/sbin./nginx二、重启更改配置重启nginx kill -HUP 主进程号或进程号文件路径或者使用cd /usr/local/nginx/sbin./nginx -s reload判断配置文件是否正确 nginx -t -c /usr/local/nginx/conf/nginx.conf或者cd /usr/local/nginx/sbin./nginx -t三、关闭  查询n.

2021-08-16 15:51:39 82003 2

转载 Linux下文件搜索、查找、查看命令

Linux下文件搜索、查找、查看命令1、最强大的搜索命令:find 查找各种文件的命令 2、在文件资料中查找文件:locate  3、搜索命令所在的目录及别名信息:which 4、搜索命令所在的目录及帮助文档路径:whereis5、在文件中搜寻字符串匹配的行并输出:grep6、分页显示一个文件或任何输出结果:more7、分页显示一个文件并且可以回头:less8、指定显示前多少行文件内容:head9、指定显示文件后多少行内容:tail10、查看一个文件:cat11、查看文件内容多少字符多少

2021-08-16 11:40:15 2242

转载 Request和Response的区别

Request 和 Response 对象起到了服务器与客户机之间的信息传递作用。Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏览器。一、Request对象的五个集合:QueryString:用以获取客户端附在url地址后的查询字符串中的信息。例如:stra=Request.QueryString ["s...

2021-08-03 10:48:20 162

原创 sql 经典查询问题

查询没有订单的用户1.SELECT U.ID AS UserID FROM Users ULEFT JOIN Order O ON O.UserID = U.IDWHERE O.ID IS NULL2.select userid from user where userid not in (select distinct userid from order)查询总订单价...

2021-08-03 10:46:42 241

原创 PHP获取随机数和取整

1.rand()函数://无参数:rand()函数用户获取随机数//带参数:rand($min,$max),$min表示从XX开始取值,$max表示最大只能为XXecho rand() . "\n";//得到一个不定位数的随机数echo rand(5, 15);//在5~15之间取一个数注意:mt_rand() 用法跟rand()类似,但是mt_rand()的执行效率更高,平常使用也推荐用mt_rand().2.array_slice函数://生成一个数组$numbers = r

2021-08-03 10:41:59 310

原创 PHP函数include include_once require和require_once的区别

了解下include、include_once、require和require_once这4个函数:include函数:会将指定的文件读入并且执行里面的程序; require函数:会将目标文件的内容读入,并且把自己本身代换成这些读入的内容; include_once 函数:在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包...

2021-08-03 10:25:22 73

原创 计算冒泡排序的时间复杂度和空间复杂度

var arr = [5,4,100,101,1000,99,22,33,44,111,78];//这边是一个数组for(var b=0;b<=arr.length;b++){//循环遍历每一个数字进行比较for(var i=0;i<b;i++){ if(arr[i]>arr[i+1]){ var a = arr[i]; arr[i]=arr[i+1]; arr[i+1]=a; }}}console.log(arr);1.计算时间的复杂度(实质:执行次数计.

2021-08-03 10:24:27 1073

原创 echo和print和print_r和v_dump

1.echo 和 print 的区别共同点:首先echo 和 print 都不是严格意义上的函数,他们都是 语言结构;他们都只能输出 字符串,整型跟int型浮点型数据。不能打印复合型和资源型数据;而区别是:echo 可以连续输出多个变量,而print只能一次输出一个变量。print打印的值能直接复制给一个变量,如 $a = print “123”;而echo 不可以,它没有像函数的行为...

2021-08-03 10:22:42 61

原创 mysql索引最左匹配原则的一些理解

id,name,cidCREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `cid` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `name_cid_INX` (`name`,`cid...

2021-08-03 10:20:51 292

转载 PHP 生命周期

PHP 运行模式大多分为两种 Web 模式、Cli 模式。无论哪种模式,PHP 生命周期都是一样的,作为一种 SAPI 运行。SAPI(Server Application Programming Interfac) 服务端应用编程接口,SAPI 通过一系列钩子函数,使 PHP 和其他应用解耦分离,交换处理数据,这是 PHP 非常优雅的设计,这个设计的优点是不用考虑 PHP,和其他应用之间的...

2019-11-21 23:21:41 106

转载 浏览器一个请求的过程

浏览器一个请求的过程当我们在浏览器地址栏输入 www.xx.com ,然后回车, 这个请求背后经历了什么?以下是个人理解,如有偏差,请纠正!首先重新温习下网络模型:七层结构(至顶向下):应用层、表示层、会话层、传输层、网络层、数据链路层、物理层client(浏览器) 与Server 通过HTTP协议通讯,HTTP协议属于”应用层协议”;HTTP基于TCP协议,TCP通过Socket进...

2019-11-21 23:12:07 193

转载 MySQL中INSERT INTO SELECT的使用

1. 语法介绍 有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,可以使用如下的语句来实现:INSERTINTOdb1_name (field1,field2)SELECTfield1,field2 FROM db2_name 上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,可以先将需要...

2019-11-21 23:11:16 336

转载 mysql 判断null 和 空字符串

mysql 判断null 和 空字符串1.在mysql中null 不能使用任何运算符与其他字段或者变量(函数、存储过程)进行运算。若使用运算数据就可能会有问题。2.对null 的判断:  创建一个user表:id 主健 name 可以为空   select * from user;  insert into user values('33',null); ##创建一条nam...

2019-11-21 23:07:04 8616

转载 MySQL新建用户,授权,删除用户,修改密码

首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。用户:phplamp用户数据库:phplampDB1.新建用户。//登录MYSQL@>mysql-uroot-p@>密码//创建用户mysql>insertintomysql.user(Host,Use...

2019-11-21 23:05:20 73

空空如也

空空如也

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

TA关注的人

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