自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

haxianhe的博客

从“用”中学习

原创 技术基础之 MySQL
原力计划

存储引擎 InnoDB InnoDB 是 MySQL 默认的事务型存储引擎,只要在需要它不支持的特性时,才考虑使用其他存储引擎。 InnoDB 采用 MVCC 来支持高并发,并且实现了四个标准隔离级别(未提交读、提交读、可重复读、可串行化)。其默认级别时可重复读(REPEATABLE READ),...

2020-05-29 07:33:06 65 0

原创 为什么MySQL字段要设置为NOT NULL?

平时开发过程中,MySQL 字段的一般都会设置为NOT NULL,原因如下: 1、空值("") 和 “NULL” 的区别: 空值是不占用空间的 MySQL中的NULL其实是占用空间的 NULL columns require additional space in the...

2020-05-17 17:49:58 61 0

原创 为什么对于非常小的表,大部分情况下简单的全表扫描比建立索引更高效?

最近刚刚和泽康和素鑫聊过这个问题,这里简单整理一下。 标题中的 ‘对于非常小的表,大部分情况下简单的全表扫描比建立索引更高效’ ,其实是问题 ‘索引的使用条件’ 的答案的一部分。完整答案是: 对于非常小的表、大部分情况下简单的全表扫描比建立索引更高效 对于中到大型的表,索引就非常有效; 那么...

2020-05-10 14:54:48 142 0

原创 PHP 常见概念

MVC MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。 视图:视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用...

2019-11-09 18:02:30 157 0

原创 Session 原理解析

Session存在的意义,估计每个做web开发的人都是了解的,就为了解决HTTP是无状态协议所带来的问题,不多说了。这里主要想说的是服务端与客户端是如何利用session进行交互的。 工作流程 先看下面这幅流程图: 当用户第一次访问站点时,PHP会用session_start()函数为用户创建一...

2019-11-09 18:00:27 62 0

原创 CGI、FastCGI和PHP-FPM关系解析

在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM、FastCGI和CGI 这几个概念。如果对它们一知半解,很难搭建出高性能的服务器。接下来我们就以图形方式,解释这些概念之间的关系。 基础 在整个网站架构中,Web Server(如Apache)只是内容的分发者。举个栗子,如果客户端...

2019-11-09 17:50:04 46 0

原创 PHP底层的运行机制与原理

记得我刚开始学习PHP的时候,许多面试官会经常问我PHP是什么,那时的标准回答是PHP是一种弱类型动态脚本编程语言,开源,免费,是超文本预处理器的缩写。 这只是很浅的解释,PHP对我来说是一个工具,是我手里的一把锤子,虽然这把锤子时常被调侃为两边都是起钉器的锤子。 使用「现实世界」中的任何工具时,...

2019-11-09 12:26:15 194 0

原创 Nginx核心模块之location规则浅析

location 规则 匹配规则 先匹配前缀字符串,然后记住最长匹配。 再匹配正则,如果正则的location中有匹配上的则返回第一个匹配上的正则,否则返回上一步中记住的最长前缀匹配。 当前缀字符串使用 =, ^~ 修饰的时候且匹配成功时直接返回结果,不进行正则匹配。 修饰符 匹配前缀字符串 ...

2019-11-03 09:16:58 51 0

原创 分布式系统唯一ID生成方案浅析

分布式系统唯一ID生成方案浅析 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。业务ID需要满足的要求如下 全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。 趋势递增:在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用B-tree的数据结构来...

2019-10-12 21:27:15 81 0

原创 系统设计和架构之基础

性能 性能指标 响应时间 指某个请求从发出到收到响应消耗的时间。 在对响应时间进行测试时,通常采用重复请求的方式,然后计算平均响应时间。 吞吐量 指单位时间内系统处理的请求数量。 TPS:每秒事务数 QPS:每秒查询数 HPS:每秒HTTP请求数 并发用户数 指系统能同时处理的并发用户请求数量...

2019-09-23 18:53:36 109 0

原创 MySQL总结之InnoDB事务实现

我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。 同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。 所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。 这里通过分析MySQL中InnoDB引擎...

2019-08-12 22:39:33 48 0

原创 MySQL总结之索引

索引是存储引擎用于快速找到记录的一种数据结构。 索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但当数据量逐渐增大时,性能则会急剧下降。 在 MySQL 中,存储引擎用类似的方法使用索引,其先在索...

2019-08-11 05:53:49 38 0

原创 MySQL总结之数据类型

整数类型 有两种类型的数字:整数和实数。如果存储整数,可以使用这几种整数类型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT。分别使用8,16,24,32,64位存储空间。它们可以存储的值的范围从-2^(N-1)到2(N-1),其中N是存储空间的位数。 整数类型有可选的...

2019-08-07 20:15:45 65 0

原创 MySQL总结之MySQL架构

MySQL 最重要、最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理及其他系统任务和数据的存储/提取相分离。这种处理和存储分离的设计可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式。 MySQL 的逻辑架构 MySQL 逻辑架构图 最上层的...

2019-08-06 15:58:27 47 0

原创 复杂度分析:如何分析、统计算法的执行效率和资源消耗?

我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?这里就要用到我们今天要讲的内容:时间、空间复杂度分析。 其实,只要讲到数据结构与算法,就一定离不开时间、...

2019-07-27 21:04:52 45 0

原创 yaf 框架学习

Yaf 是什么 Yaf,全称 Yet Another Framework,是一个C语言编写的、基于PHP扩展开发的PHP框架。 相比于一般的PHP框架,它更快,快到被誉为最快的PHP开发框架。 它提供了Bootstrap、路由、分发、视图、插件功能。 注: 百度的odp框架,以及我们公司的PIE...

2019-07-25 17:53:59 144 2

原创 如何在phpstorm中查看yaf框架源码

1.到github下载yaf框架的doc 下载链接 https://github.com/haxianhe/php-yaf-doc.git 2.解压zip包 3.phpstrom配置 打开phpstorm开发工具,找到Preferences…->php->Include Path: ...

2019-07-25 16:42:05 97 0

原创 积累——读《把时间当作朋友》

引言 最近两周读了李笑来老师的《把时间当作朋友》这本书,我最开始听说李笑来老师是源自于他在得到app上的《财富自由之路》专栏,惭愧的是一直受困于资金,还没有买。 这本书中,就我个人而言对我最有启发的有四点: 一是作者开篇点明的本书的主旨“成长只有一条路——积累”。 二是作者介绍了一些帮助自己更好...

2018-11-27 14:04:34 318 0

原创 如何使用Go编程

这是一篇我摘自go官方文档的文章,讲一下为什么要把这篇文章单独拎出来。首先,这是一篇将我过去的学习方式同以后的学习方式区分开来的文章。其实,一直都知道学习一门技术最好的方式是看官方文档。但是,老实说,这是我除了PHP手册之外看的最入迷的一篇文档。其次,我学习go也有几天了,前几天一直看的是《Go...

2018-09-22 20:19:33 356 0

原创 GO 语言学习路径与资料分享

GO 语言学习路径与资料分享 本人最近刚刚经历了痛苦的入门过程,现想将自己的学习过程&学习资料整理、分享给有需要的人。 最后更新时间:2018年9月15日 Go 学习路径 这里引用谢大在知乎上说的一句话来总结一下怎么学习一门新的语言: 学习一门语言最重要的就是做到三点,第一看基础...

2018-09-22 20:17:55 1350 0

原创 PHPStorm添加第三方库的代码自动补全

1.下载第三方库 2.在PhpStrom中添加第三方库 在你项目的External Libraries上右键->Configure PHP Include Path然后选择那个文件夹(phplib)就可以了 done 关注我: Github:https://github.co...

2018-09-22 19:57:32 259 0

原创 PHP:对象赋值的原理

题目 阅读下面PHP代码,并选择输出结果( ) <?php class A{ public $num=100; } $a = new A(); $b = $a; $a->num=200; echo $b->num; ?> 1...

2018-09-22 19:55:31 2124 0

原创 PHP:unset操作对&变量的影响

题目 $a="hello"; $b= &$a; unset($b); $b="world"; echo $a; 的结果是什么?( ) hello world NULL unset 答案是1 解析: 可以把“变量”看成一个容器,“变量名”...

2018-09-22 19:49:26 483 0

原创 PHP 注意事项笔记

范围解析操作符 使用 parent,self 可以调用父类和自身的方法属性 :: 可以调用静态方法,静态属性和常量 函数和方法的区别? 做简单的区分就是: 函数是单独存在的,也就是面向过程部分定义的。 方法是依赖于类存在的,也就是面向对象中定义的。 PHP使用foreach用数组装数据的时...

2018-09-22 19:05:12 65 0

原创 简单配置nginx使之支持pathinfo

首先放一张thinkphp5.1开发手册的截图: 可以看到在不支持PATHINFO的服务器中需要使用兼容模式来替代 现在给出一个简单配置nginx使之支持pathinfo的方法(注:该方法并没有配置隐藏入口文件) location ~ \.php { #去掉$ roo...

2018-08-22 15:30:54 108 0

原创 ThinkPHP 入门

ThinkPHP是一款免费开源的、快速的、简单的、面向对象的轻量级PHP开发框架,它创建于2006年初,是为了加快Web应用开发和企业级应用开发而诞生的。 术语解释 1、项目 一个完整的Web程序,至少包括应用目录、框架目录、入口文件三者,一个项目可以有多个应用和多个入口文件,但是一...

2018-05-23 11:47:51 740 0

原创 CentOS 7.2配置LAMP环境——yum版

环境:CentOS 7.2 采用putty连接 方法:采用yum安装方法 目的:搭建Apache+MySQL+PHP环境 1、安装Apache yum install httpd //默认情况下,选择Y,进行安装 安装成功后,默认情况下是禁止外部IP访问的,需要...

2018-05-23 08:37:31 70 0

原创 打包名命令:tar

将多个文件或目录包成一个大文件的命令功能,我们称它是一种“打包命令”。 tar的参数非常多,这里只列出几个常用的参数,更多的参数你可以自行man tar查询。 [root@www ~]#tar [-j|-z] [cv] [-f 新建的文件夹名] fi|ename... &l...

2018-05-22 09:41:19 1844 0

转载 不规则数组的构建

来不规则数组是这样得到的 int[ ][ ] rows=new int[3][ ]; 分配了数组的脊柱(spine),但是未分配行的任何部分。因为这个数组的元素都是引用 ,所以他们会获得默认值null。现在我们用以下语句来分配第一行: rows[0] =new int[4]; 我...

2018-05-22 09:01:33 523 1

原创 Linux文件权限概念

Linux一般讲文件可存取访问的身份分为3个类别,分别是owner、group、others,且3中身份各有read、write、execute等权限。 1、Linux文件属性 1.1、 第一列代表这个文件的类型与权限 第一个字符代表这个文件是“目录、文件或链接文件等”。...

2018-05-17 15:31:40 112 0

原创 tomcat启动成功但是没有监听8080端口

查看tomcat日志 cd tomcat/logs tailf -1000 catlina.out 错误如下: /home/work/tomcat/apache-tomcat-9.0.8/conf/../bin/catalina.sh: line 464: /home/w ...

2018-05-16 17:59:17 4631 0

原创 检测远程主机上的某个端口是否开启——telnet命令

ping命令是不能检测端口,只能检测你和相应IP是否能连通。 要测试远程主机上的某个端口是否开启,无需使用太复杂的工作,windows下就自带了工具,那就是telnet。 安装telnet。 在cmd下输入telnet提示没有该命令。进入控制面板—->程序—-&...

2018-05-16 17:36:32 529 0

原创 Linux系统安装jdk——.tar.gz版

1、rpm、deb、tar.gz的区别: rpm格式的软件包适用于基于Red Hat发行版的系统,例如Red Hat Linux、SUSE、Fedora。 deb格式的软件包则是适用于基于Debian发行版的系统,例如Debian、Ubuntu、Mint。 tar.gz格式只是一个压缩包,里面...

2018-05-16 17:25:34 402 0

原创 Linux系统安装Tomcat——.tar.gz版

1、rpm、deb、tar.gz的区别: rpm格式的软件包适用于基于Red Hat发行版的系统,例如Red Hat Linux、SUSE、Fedora。 deb格式的软件包则是适用于基于Debian发行版的系统,例如Debian、Ubuntu、Mint。 tar.gz格式只是一个压缩包,里...

2018-05-16 13:52:11 129 0

原创 【2018.5.5】北京实习经验总结篇

1、技术学习 odp 入职之后学习的第一样技能就是怎样在odp框架下进行开发,包括解压odp环境,启动nginx,php,index.php文件进行端口配置等。app下放项目开发目录,conf中放配置文件,log中放日志文件等。 controller层:路由映射。 action层:参...

2018-05-06 17:47:40 249 0

原创 PHPStrom激活方法【亲测有效2018.4.23】

直接用浏览器打开 http://idea.lanyus.com/ 点击页面中的“获得注册码”, 然后在注册时切换至Activation Code选项,输入获得的注册码一长串字符串 如果提示红字体信息,那么先找到你c盘中的hosts文件打开后再末尾添加 0.0.0.0 account.j...

2018-04-23 08:35:43 12318 5

原创 关于搭建开发环境

我相信很多人刚接触编程的时候都会有这经历“想要搭建一个完美的,完全有自己掌握的开发环境”,从而在这上边花费大量的时间,得不偿失。 “工欲善其事,必先利其器”,在学习一门新的语言或者技术的之前,总是要先搭建并熟悉开发环境,但是总是有有一些初学者(比如当初的我)在安装环境上浪费大量时间。或许是因为过...

2018-04-12 21:51:12 517 0

原创 【MySQL】(七)事务

我的个人博客 http://www.haxianhe.com/ 数据库系统引入事务的主要目的:事务会把数据库从一种状态转换为另一种一致状态。在数据库提交工作时,可以确保要么所有修改都已经保存了,要么所有修改都不保存。 InnoDB存储引擎中的事务完全符合ACID特性。ACID是以下4个词...

2018-04-07 11:43:58 104 0

原创 【MySQL】(六)锁

开发多用户、数据库驱动的应用时,最大的一个难点是:一方面要最大程度地利用数据库的并发访问,另一方面还要确保每个用户能以一致的方式读取和修改数据。为此就有了锁(locking)的机制,同时这也是数据库系统区别于文件系统的一个关键特性。本篇文章将详细介绍InnoDB存储引擎对表中数据的锁定,同时...

2018-03-22 11:22:27 187 1

原创 【MySQL】(五)索引与算法

本篇文章的主旨是对InnoDB存储引擎支持的索引做一个概述,并对索引内部的机制做一个深入的解析,通过了解索引内部构造来了解哪里可以使用索引。 1、InnoDB存储引擎支持以下几种常见的索引: B+树索引 全文索引 哈希索引 前面已经提到过,InnoDB存储引擎支持的哈希索引时...

2018-03-20 09:07:46 1027 0

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