- 博客(41)
- 收藏
- 关注
转载 Markdown基本语法
Markdown是一种纯文本格式的标记语言。通过简单的标记语法,它可以使普通文本内容具有一定的格式。相比WYSIWYG编辑器优点:1、因为是纯文本,所以只要支持Markdown的地方都能获得一样的编辑效果,可以让作者摆脱排版的困扰,专心写作。2、操作简单。比如:WYSIWYG编辑时标记个标题,先选中内容,再点击导航栏的标题按钮,选择几级标题。要三个步骤。而Markdown只需要在标题内容前加#即可缺点:1、需要记一些语法(当然,是很简单。五分钟学会)。2、有些平台不支持Markdown编
2020-08-27 10:13:20
211
转载 MySQL的几个重要的缓冲区配置项
线程栈信息使用内存(thread_stack)主要用来存放每一个线程自身的标识信息,如线程id,线程运行时基本信息等等,我们可以通过 thread_stack 参数来设置为每一个线程栈分配多大的内存。排序使用内存(sort_buffer_size)MySQL 用此内存区域进行排序操作(filesort),完成客户端的排序请求。当我们设置的排序区缓存大小无法满足排序实际所需内存的时候,MySQL 会将数据写入磁盘文件来完成排序。由于磁盘和内存的读写性能完全不在一个数量级,所以sort_buf..
2020-08-11 17:46:05
1139
1
转载 高性能MySQL之Count统计查询
关于MySQL的count查询,很多人都会有疑问,同样在大表中执行 ,有些速度基本不耗时,有些又慢的要死。关于这些问题在《高性能MySQL》这本书中第6.7.1章节有如下相关解释: COUNT()聚合函数,以及如何优化使用了该函数的查询,很可能是MySQL中最容易被误解的前10个话题之一,在网上随便搜索一下就能看到很多错误的理解,可能比我们想象的多得多。在做优化之前,先来看看COUNT()函数的真正作用是什么。COUNT()的作用COUNT()是一个特殊的函数,有两种非常不同...
2020-08-11 10:06:56
906
转载 MySQL排序原理与案例分析
前言 排序是数据库中的一个基本功能,MySQL也不例外。用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐含使用排序。本文首先会简单介绍SQL如何利用索引避免排序代价,然后会介绍MySQL实现排序的内部原理,并介绍与排序相关的参数,最后会给出几个“奇怪”排序例子,来谈谈排序一致性问题,并说明产...
2020-05-07 19:28:54
234
转载 PHP 使用 Redis 实现分布式锁
锁实现的注意点互斥: 任意时刻, 只能有一个客户端获得锁 不会死锁: 客户端持有锁期间崩溃, 没有主动解除锁, 能保证后续的其他客户端获得锁 锁归属标识: 加锁和解锁的必须是同一个客户端, 客户端不能解掉非自己持有的锁(锁应具备标识)如果是Redis集群, 还得考虑具有容错性:只要大部分Redis节点正常运行, 客户端就可以加锁和解锁.以下只考虑 Redis单机部署的 场景.如...
2020-04-28 14:45:45
646
转载 一次完整的HTTP请求过程
当我们在浏览器的地址栏输入www.linux178.com,然后回车,回车这一瞬间到看到页面到底发生了什么呢?域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进...
2020-04-21 15:04:39
388
转载 mysql中varchar能存多少汉字、数字,以及varchar(100)和varchar(10)的区别
看完这篇文章,你能搞清楚以下问题:1、varchar(100)和varchar(10)的区别在哪里?2、varchar能存多少汉字、数字?3、varchar的最大长度是多少呢?4、字符、字节、位,之间的关系?5、mysql字段类型存储需要多少字节?接下来请仔细看,整理不易啊。1、varchar(100)和varchar(10)的区别在哪里?一般初学会认为,二者占用的...
2020-04-13 17:58:15
3258
转载 Nginx+FastCGI到底是谁影响超时时间
需求:一个php程序要跑一段时间,但是时间不确定。问题: 当该php程序运行超过一段时间被强制断开连接。PHP本身超时处理在 php.ini 中,有一个参数 max_execution_time 可以设置 PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm) 中,该参数不会起效。真正能够控制 PHP 脚本最大执行时:<value name="re...
2020-03-17 10:31:00
613
转载 Laravel 基于redis队列的解析
参考链接使用 Laravel Queue 不得不明白的知识 Laravel 队列文档 Redis 中文文档为什么使用队列使用队列的目的一般是:异步执行 出错重试解释一下:异步执行: 部分代码执行很耗时, 为了提高响应速度及避免占用过多连接资源, 可以将这部分代码放到队列中异步执行.Eg. 网站新用户注册后, 需要发送欢迎的邮件, 涉及到网络IO无法控制耗时的这一类就很...
2019-11-21 11:35:09
675
原创 微信订阅号和服务号的区别
区别1:“订阅号”每天可以群发一次。 “服务号”每月可以发表四次。区别2:“订阅号”的消息折叠出现在订阅号的文件夹中,不会收到微信提醒。 “服务号”的消息出现在微信聊天列表中,会像收到消息一样有微信提醒。区别3:“订阅号”无论认证与否都不能进行微信支付。 “服务号”认证成功后可以建立微信商城,进行微信支付功能。区别4:“订阅号”完成认证有自定义菜单功能。“服务号”无论是...
2019-11-21 11:28:47
619
转载 sentry使用实践
收集错误信息,如接口报错,dom报错以及语法错误等等。下面我就介绍一下sentry这个工具如何在项目中使用。2.sentry介绍Sentry 是一个实时事件日志记录和汇集的平台。其专注于错误监控以及提取一切事后处理所需信息而不依赖于麻烦的用户反馈。它分为客户端和服务端,客户端(目前客户端有Python, PHP,C#, Ruby等多种语言)就嵌入在你的应用程序中间,程序出现异常就向服务端发...
2019-11-13 20:36:05
1582
转载 为什么MySQL数据库索引选择使用B 树
为什么MySQL数据库索引选择使用B+树?在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使用B+树!学过数据结构的一般对最基础的树都有所认识,因此我们就从与我们主题更为相近的二叉查找树开始。一、二叉查找树(1)二叉树简介:二叉查...
2019-10-24 10:43:07
200
转载 浮点精度(float、double)运算不精确的原因
为什么浮点精度运算会有问题我们平常使用的编程语言大多都有一个问题——浮点型精度运算会不准确。比如double num = 0.1 + 0.1 + 0.1;// 输出结果为 0.30000000000000004double num2 = 0.65 - 0.6;// 输出结果为 0.05000000000000004笔者在测试的时候发现 C/C++ 竟然不会出现这种问题,我最...
2019-10-12 10:27:48
15157
1
转载 pt-query-digest安装使用
一、简介pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果...
2019-10-10 20:43:45
246
转载 http_load使用详解
1.什么是http_loadhttp_load是一款基于Linux平台的web服务器性能测试工具,用于测试web服务器的吞吐量与负载,web页面的性能。2.http_load的安装1)下载地址wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz2)安装tar xzvfhttp_load-12mar...
2019-10-10 14:06:37
492
转载 ASCII,Unicode,UTF-8,GBK 关系及区别
在介绍编码之前,先说一下字节、字符、字符集之间的关系:一)“字节”的定义字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。(二)“字符”的定义字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。(三)“字节”与“字符”它们完全不是一个位面的概念,所以两者之间没有“区别”这个说法。...
2019-09-03 17:21:33
610
原创 取汉字的第一个字的首字母
开发中用到的方法,取出第一个汉字的首字母;/** * 取汉字的第一个字的首字母 * @param string $str * @return string|null */function getFirstChar($str) { if (empty($str)) { return ''; } $fir = $fchar = ord($str...
2019-08-28 09:16:53
714
转载 解决redis连接错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to...
今天重启服务器在连接redis数据库时突然报错:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is...
2019-08-26 20:44:50
290
原创 mysql四种隔离级别和mvcc以及锁之间的关系
什么是事务的隔离级别隔离级别:理解隔离级别之前需要先了解事务的四个特性,分别是:A(Atomic):原子性是指数据库的事务是一个不可分割的工作单位,只有数据库事务都成功才算成功,任何一个SQL的失败,数据库状态都必须回退到事务开始前的状态C(Consistence):一致性是指事务将数据库的状态从一种状态转变为下一个一致的状态。在事务的开始和结束后,数据库的完整性约束都没有被破坏。...
2019-07-15 11:26:16
5367
1
原创 npm install出现This is probably not a problem with npm错误
使用npm install 安装npm时出现This is probably not a problem with npm. There is likely additional logging output above.错误可能是因为版本问题(安装新版本或者旧版本),导致有一些缓存可以执行下面的命令,在把之前装的都清空rm -rf node_modulesrm package-lo...
2019-06-04 17:09:41
7593
转载 微信二次分享链接,出现config:invalid signature错误的解决方法
当开发微信时需要做特定的页面做分享时,根据官方提供的jssdk.php文件创建的签名数据包调试时,大家碰到的最多的错误而且解决最麻烦的大概就是signature错误了,分享时提示错误“{"errMsg":"config:invalid signature"}”一般出现这个错误多半是签名获取失败,而造成签名获取失败的原因各种各种,余斗在开发的时候也遇到过这种情况,搜索了不少网上教程,解决了自...
2019-06-04 16:51:09
3053
转载 正确的 Composer 扩展包安装方法composer install 和update、require
问题说明我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的:composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害。因为 composer update 的逻辑是按照 composer.json 指定的扩展包版本规则,把所有扩展包更新到最新版本,注意,是 所有扩展包,举个例子,你在项目一开始的时候使用了 monolo...
2019-06-04 11:27:45
2767
转载 apache+php_mod和nginx+php-fpm区别
众所周知,PHP是跨平台、跨服务器的语言,这也是它如此流行的原因之一。但是,很少有人知道PHP解释器可以以不同的方式运行在Web服务器中。PHP最常用的方式是以模块的方式(mod_php)运行在Apache中,也是Apache运行PHP的默认方式。但是在Nginx中,Nginx又使用的是PHP-FPM。 这篇文章就对这些概念做个介绍,如有不对的地方,请多多批评指教。 什么是PHP处理...
2019-04-03 15:46:52
2045
原创 nginx启动时报[error] invalid PID number "" in "/usr/local/var/run/nginx/nginx.pid错误
在Mac上用brew安装nginx,修改完配置文件后,使用 sudo nginx -s reload重新启动nginx时,报[error] invalid PID number "" in "/usr/local/var/run/nginx/nginx.pid错误发生这个错误的原因是,nginx读取配置文件时出错,需要指定一个特定的nginx配置文件,所以解决这个问题需要先执行sudo ...
2019-03-18 10:33:51
13017
转载 利用shell命令统计日志的方法详解
前言大家都知道,通过使用 shell 命令可以很方便地对日志进行统计和分析,当服务有异常的时候,需要去排查日志,那么掌握一种统计日志的技巧就是必不可少的了。假设有一个包含下面内容的日志文件 access.log。我们以统计这个文件的日志为例。? 1 2 3 4 5 date=2017-09-23 13:32:50 | ip...
2018-08-30 17:28:58
2790
转载 浅谈MySQL和Innodb
页的数据结构:数据页结构,页是innodb存储引擎管理数据的最小磁盘单位,而B-TREE节点就是实际存放表数据的节点,一个innodb页有七个部分组成:每一个页中包含了两对 header/trailer:内部的 Page Header/Page Directory 关心的是页的状态信息,而 Fil Header/Fil Trailer 关心的是记录页的头信息。在页的头部和尾部之间就...
2018-08-14 17:33:08
19008
4
转载 PHP面向对象编程
本篇文章给大家分享的内容是关于浅谈PHP面向对象编程 ,有着一定的参考价值,有需要的朋友可以参考一下 一、PHP面向对象编程基础实践 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
2018-08-10 16:40:19
451
原创 使用redis实现秒杀功能
秒杀功能描述:首先页面上有四个主要功能:1、商品信息(你要抢的是什么商品)2、倒计时(120、199、198...,也可以是整点秒杀)3、商品数量变化(支付成功一件,数量减少一件,如果用户取消购买,重新加入到队列)4、抢购按钮(用户点击抢购)为什么要使用redis实现秒杀:1、使用redis列表的原子特性,即使多个用户同时到达,也会依次执行,这样就防止超卖多卖现象的产生...
2018-08-10 14:44:06
14814
3
转载 Linux常用命令大全
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示C...
2018-08-06 11:06:14
189
转载 TCP和HTTP
1、TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的S...
2018-08-02 10:21:13
525
转载 PHP的几种运行模式cli、CGI、FastCgi、mod_php
首先需要记住的是,任何一种web服务器(Apache、Nginx等)都是被设计成向用户发送HTML、图片等静态资源的,web服务器自身并不能解释任务动态脚本语言(PHP、Java等)PHP解释器就是用来解释web应用中的PHP代码,并将它解释成HTML或其他静态资源,然后将解析的结果传给web服务器,最后再有web服务器传给用户因此,Apache和Nginx都需要PHP解释器来处理PHP代...
2018-07-31 16:14:43
528
转载 什么是PHP-fpm?什么是fastcgi?他们之间有什么关系?
要理解fastcgi和PHP-fpm都是干什么的,首先要明白PHP的几种运行模式:参考上一篇https://mp.csdn.net/postedit/81302818首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。web server(比如说nginx)只是内容的分发者。比如,如果请求/index.html,那么web...
2018-07-31 12:12:37
1335
原创 PHP中strchr、strrchr、strpos、strrpos区别
1、strchr(同strstr) strchr(string $haystack , mixed $needle [, bool $before_needle = false ] )查找字符串的首次出现,返回从第一次出现的位置到haystack 结束的字符串或false(没有找到needle) $haystack 被查找的字符串 $needle 要查...
2018-06-14 15:26:54
1403
原创 mysql高性能索引设计
索引是存储引擎用于快速找到记录的一种数据结构,这是索引的基本功能。可以把数据库的理解成一本书,而索引就是这本书的索引(每个章节在第几页),如果你知道你想查找的章节名称,就可以快速的通过索引找到这一章索引的页数,而在数据库中也类似,存储引擎会先在索引中找到对应的值(主键或者物理地址,不同的存储引擎存储的值不同),然后根据这个值找到对应的数据行。现在可以知道索引对于查找数据的重要性,一个设计合理的索引...
2018-05-18 18:30:30
142
原创 MySQL按照特定条件取分组后第一(N)条数据
通常情况下我们需要按照某个条件分组后取出最大或者最小的一(N)条数据,然而mysql默认会取出分组之前的某条数据第一次出现的位置,并不会取出最大或者最小的,例如test表中数据如下id | name value---|--------1 | a 1 2 | b 23 | c 24 | a 35 ...
2018-04-12 17:44:23
5927
原创 PHP使用array_multisort对二维数组进行排序
array_multisort(array&$array1 [,mixed $array1_sort_order=SORT_ASC] [,mixed $array1_sort_flags=SORT_REGULAR]);对多个数组或多维数组进行排序。$array1要排序的数组,$array_sort_order前面数组参数要排列的顺序,默认升序,$array1_sort_flags为$a...
2018-03-27 21:12:35
2114
原创 关于返回json数据格式的问题
首先先需要弄清楚关于json两个比较重要的函数:json_encode($data,[int $options = 0])将$data转化为json数据,$data可以是(除资源)外的任何数据类型,$options可以控制输出格式,例如JSON_FORCE_OBJECT(使一个非关联数组输出一个类,而非数组,当数组为空而需要一个类的时候很有用),JOSN_NUMERIC_CHECK(将数字字符串转...
2018-03-26 21:14:56
2681
原创 Apache和Nginx的区别
Apache和Nginx的相同点:在功能实现上都使用了模块化结构设计,都支持通用的语言接口,如PHP、Perl、Python等,同时也支持正向、反向代理,虚拟主机,URL重写等。Apache的优点: 1、更稳定 2、处理动态请求时,Apache性能更高(动态请求会用到伪静态,而Apache对rewrite支持的更好) 3、rewrite模块更完善 ...
2018-03-06 16:12:04
7773
原创 二分查找法、猴子选大王、洗牌算法小解
1、二分查找法 二分查找法实现了快速在一个已经排好序的数组中找出指定的元素的方法,思想是首先找到数组中间的元素,和指定的元素进行比较(一分为二),如果大于指定元素,说明这个指定的元素在选出中间元素的前面,否则在后面。依次循环,直到找到指定元素(递归思想)。 代码为function second_find($arr,$value,$start=0,$end=null){...
2018-03-05 14:43:49
446
原创 TP框架和Laravel框架的区别
TP框架: ThinkPhp简单、快速,基于MVC和面向对象,易用性较高,是一款简洁实用的轻量级框架。Laravel框架: Lavavel一直秉承着优雅的原则,很好的支持了composer,实现了更丰富的扩展,社区文档活跃,相较于TP,Lavavel更庞大,安全性也更高,更适合开发大中型项目,被称为“巨匠型开发框架”。 个人感觉TP5和Laravel框架的区别已经很小了,相较于T...
2018-03-05 11:52:35
10484
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人