- 博客(26)
- 收藏
- 关注
原创 网站访问流程及原理分析
前言: (1).当用户在浏览器中输入www.baidu.com. (2).点击回车. (3).网页跳转到百度首页. 说到这个步骤.大部分人都会. 但是这后面究竟经历了哪些流程呢? 尝试思考一下.你会有正确的答案吗?正文: 1.浏览器输入www.baidu.com 2.由DNS服务器解析出相应的IP地址xxx.xxx.xxx.xx 这里衍生出一个问题.就是DNS劫持的问题. D...
2020-05-18 00:13:09 2182
原创 php性能优化
前言: 在经历2-3年的时间,php程序员可以完成基本的功能性开发。但是这时候会有一个小瓶颈。就是不知道怎么去优化自己的代码。 优化代码主要有两方面. 1.php代码规范的优化。让自己代码变的更具可维护性,可读性更强.便于团队开发协作. 这里就不作详细介绍。大家可以参考https://github.com/jupeter/clean-code-php...
2019-09-30 11:43:34 339
原创 关于docker
其实docker已经出了不少时间了,但是最近才有接机会接触到docker。 首先,docker非常火。那么为什么那么火呢? 1.部署开发和测试环境,需要复制2个相同的环境和代码,这时候docker优势就体现出来了. 方便快速准确. 2.复杂环境的配置,直接利用docker生成配置文件,方便别人直接利用配置文件,去实现一键复用环境. ...
2019-01-11 12:31:44 270
原创 抽象类和接口
同:抽象类和接口都是定义了父类,然后子类去继承。下面讲讲不同的地方: 对于抽象类而言.首先抽象类不能实例化.父类定义了一些抽象方法.在子类中,首先必须要继承这个抽象方法,然后可以选择性去扩展其他方法.对于接口而言.父类定义的接口方法,在子类中必须全部继承父类中的接口方法.并且子类中可以继承多个父类的接口类./** * 抽象类.父类至少有一个抽象方法,并且子类必须继承....
2018-10-02 12:50:30 150
原创 组合索引
组合索引.顾名思义.既不同于单列索引。 它是组合一个多列的索引。也可以称为多列索引。 以下会讲到几个关键点:(1).组合索引的顺序 (2).组合索引的生效(左前缀原则) 1.先生成一张没有索引的表 2.增加一个组合索引 3.测试该索引的生效顺序 发现第二条语...
2018-08-06 11:15:50 7546 1
原创 redis的性能评测
前言: redis作为主流的非关系型数据库之一,其性能上的优势保证其在技术选型上占据很强大的优势。 相比较mysql而言.redis就是快.为什么redis比mysql快? 因为redis是直接存储在内存中,而mysql是存储在机械硬盘中. redis的安装,配置及php-redis扩展(这里不重点介绍,具体可以百度,很多教程...
2018-07-16 09:56:57 880
原创 原型模式
<?phpinterface Prototype{ public function copy();}class Student implements Prototype{ public $name; public $age; public $sex; public function __construct($name,$age,$sex){ ...
2018-05-16 20:06:06 166
原创 抽象工厂模式
前言: 抽象工厂模式。 1.多条抽象产品类,每个产品类线衍生多条具体产品。 2.一个抽象工厂类衍生多条具体的工厂类。 3.每个具体的工厂类下可以生产多种产品. <?php//多个抽象产品类//产品a线interface ProductLineFirst{ public function show();}//具体产品class ProductFi...
2018-05-13 18:16:41 144
原创 简单工厂模式
前言: 工厂模式分为3种,简单工厂,工厂方法,抽象工厂. 这里先介绍简单工厂模式. 适用条件:比较适合业务比较简单,模块极少扩展的情况. 该方法由3大部分组成. 抽象产品角色:定义了一些接口方法,供具体的产品去实现. 具体产品角色:实现具体的产品及相关方法. 工厂角色:处于核心位置.根据工厂内定义的方法,去实现不同的加工方式. <?ph...
2018-05-13 12:11:24 122
原创 http常见状态码(13种)
前提: 对于web开发而言,我们平时接触比较多的协议有http协议。而http协议中比较常用的则为http的状态码。 接下来分享14种最为常见的http状态码. (1)200 OK 这是最为常见的http状态码之一,代表了服务器端已经处理完了客户端发送的请求,并且已经正常处理完毕,返回响应的资源信息。 (2)
2018-04-05 16:45:01 2050
原创 mysql插入大量数据,时间的优化。
背景: 业务场景假设,公司原有excel记录了千万级客户的相关数据,公司业务结构实现了信息化的布局,需要在新开发的CRM系统中导入千万级的客户数据。此时需要用到mysql的insert操作来插入用户的海量数据。 普通情况下,会使用for循环一条一条的插入数据。 假设客户的数据量为10万条数据。<?php$connect=@mysql_connect(...
2018-03-09 16:01:40 3804 1
原创 php常见的函数(约100个左右)
引言:对于php这门特殊的脚本语言,语言本身包含了大量的内置函数,假设记住了大部分函数,其实放到其他语言可复用价值并不高。假设偏技术走向,如果真的想深入去理解编程,应该从函数本身的实现原理,从函数实现的算法入手去更深入研究。假设只是为了开发的需要,那么只需要记住常用的函数即可,其他的非常用函数可以查阅相关的手册。以下为我自己总结的常用的相关函数(持续更新):<?php...
2018-03-06 20:39:23 334
原创 工厂模式
前言:在大量需要实例化的需求中,我们为了更为方便的去生产对象,可以采用工厂模式。 好处:降耦合,避免出错造成相关的错误,增加代码的可维护性. 1.定义父类的接口及方法interface Parent{ public function show();}2.调用子类去生产该方法<?phpclass ChildrenA implements Parent{ pu...
2018-02-23 10:21:22 175
原创 基于PHP的微型框架dennisFramework
本文背景前提,针对php入门新手,对于大部分主流php框架,其框架代码过于繁杂,不易于理解,为了更好便于的理解PHP框架中MVC的运行原理和流程。 写下了dennisFramework框架,框架的代码地址 https://github.com/dennishao/dennisFramework 。 警告:此框架千万不可用于线上环境,仅供初学者理解使用.
2018-01-31 17:07:13 280
原创 php的单例模式
前言: 直入主题,为什么有php的单例模式?它存在有什么意义? 原因: php作为一门解释性的脚本语言,每次运行以后资源就被系统收回。没有办法让某个对象常驻在内存中,比如数据库连接这种重复性比较高的操作.如果每次都去实例化,那么则会造成大量的内存资源和系统资源的浪费。 所以
2017-12-09 15:41:54 235
原创 例行性工作任务(crontab)
背景介绍: 在生活中,我们总会遇到一些需要去做,但是付出的成本又很高的事情。 比如,每天晚上凌晨4点更新数据库。 又比如,每天每小时导出服务器日志。 面对这些,很繁琐又棘手的例行性问题。你有什么办法来解决呢? 当然,linux有自己的解决之道。at和cront
2017-11-19 10:25:34 818
原创 php的命名空间
背景: 如果在平时中我们去require一个一个的php文件,不会存在多大的问题。 但是设想这样一个场景:如果有两个php文件中存在一样的class名字,那么同时调用的时候,就会出现报错信息.因为根本不知道你调用的是哪一个具体的class名字. 下面有具体的demo.
2017-11-02 17:28:04 195
原创 mysql的数据类型
前言: 引用<<高性能mysql>>中的一段话,良好的物理设计和逻辑设计是高性能的基石。 数据库中字段的选择对于mysql性能影响非常之大。具体的大家可以去做下测试。 1.字段避免NULL,如果查询中存在NULL,对于mysql很难优化。 2.char(10)和varchar(10)区别。char...
2017-10-22 10:10:37 196 1
转载 在web领域的技术之争
前言: 在互联网中,总会看到一些语言之争,如JAVA,PHP,PYTHON..等等. 因为自身能力不足,对互联网中一些信息缺乏一定的辨别能力,本人也曾一度纠结于什么语言好,. 后来看到知乎上的一个回答.个人感觉想法及理解是达到一定的深度.下面是主要内容,推荐大家阅读及自己思考. 做web的,在语言层面有很大的区别么?在框架层面
2017-10-14 10:27:21 408
转载 mysql中explain的type的解释
连接操作的类型(1)SYSTEMCONST的特例,当表上只有一条元组匹配(2)CONSTWHERE条件筛选后表上至多有一条元组匹配时,比如WHERE ID = 2 (ID是主键,值为2的要么有一条要么没有)(3)EQ_REF参与连接运算的表是内表(在代码实现的算法中,两表连接时作为循环中的内循环遍历的对象,这样的表称为内表)。
2017-10-07 16:07:07 101722 54
原创 前缀索引
前言: 前缀索引有助于提高索引效率。索引选择性越高则查询效率越高。 我们应该选择合适长度的前缀索引,保证索引选择性,又不会增加索引空间。 适用场景:对于blog,text,varchar类型的列,必须使用前缀索引来保证索引的查询效率. 如何计算合适的前缀索引长度: 完整列的选择性=前缀索引的选择性 demo:
2017-10-07 14:03:59 462
原创 索引(一)
前言: 在mysql生成千万级的测试数据这一章节中,我们生成了一张千万级的数据表. 索引的优化对于数据库查询优化而言是最有效的手段. 为了验证索引优化的威力,我们做了下面一个demo.1.表未添加索引之前的效果 mysql> explain select * from card where card_id=9999999;+----+-----
2017-10-05 21:32:42 280 1
原创 慢查日志(二)
前提: 如果慢查日志中的信息多了,我们根本没法手动统计急需优化的sql。这个时候就需要慢查日志统计分析工具。 mysql自带一款工具为mysqldumpslow. 对日志进行统计分析 /Applications/MAMP/Library/bin/mysqldumpslow -s c /Applications
2017-10-04 17:11:16 383
原创 慢查日志(一)
前言: 对于一个web而言,性能作为比较重要的一个指标,侧面影响着用户的体验,对于一个web的发展起着至关重要的作用。 sql优化又作为性能优化一个重要的部分,对于sql的优化应该给予足够的重视。在此前提下,我们对sql进行优化,降低响应时间,提升用户体验。 如今问题来了,我们怎么知道哪些sql需要优化,哪些sql性
2017-10-04 17:01:20 698
原创 mysql生成千万级测试数据
MYSQL打造千万级测试数据为了更好的测试MYSQL性能以及程序优化,不得不去制作海量数据来测试。我这里的方法就是直接用uuid函数进行分配每条数据的不同内容。1.首先创建测试表(card表)CREATE TABLE `card` ( `card_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
2017-09-24 13:15:25 9654 2
原创 慢查日志(三)
开篇:今天是第一天开始写博客,说句题外话。作为程序员,深感自身表达能力不足与总结能力存在欠缺。 可能很多知识都明白,但是一别人问起的时候就不能很流畅富含逻辑性的表达出自身的观点和想法。 在此大背景下,从今天开始写博客。 1.普通的方式 用explain,此方式的缺点在于不精确。
2017-09-23 20:49:51 261
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人