自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Going Perfect

每天进步一点点...

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

原创 设计模式系列·Facade模式之MVC的烦恼

流行的MVC架构模式如今的Web开发,各种框架风起云涌,势如破竹。从国民第一的ThinkPhp到称霸全球的Laravel,这些框架有一个共同特征,都采用了MVC的架构模式。没有任何意外,王小二的公司用Thinkphp来开发公司的主打产品。Get新需求一天,小二刚到公司,正打算坐下来喝杯茶。老大走了过来:“小二啊,现在有个新的需求。咱们之前提交订单的模块,需要增加发送邮件的功能,你看看能不能实现?”小

2017-03-26 17:20:30 1688

原创 设计模式系列·初探设计模式之王小二的疑问

你见过凌晨四点的北京吗?开发了一个月的项目,终于要上线了!王小二和同事们正在为今晚的上线做最后的准备。万事俱备,只欠东风。因为项目是与D公司合作开发的,D公司上线过程中出了问题,所以王小二他们也没有办法,只能等着了。1个小时…2个小时…5个小时过去了,大家都睡过去了。“叮铃铃…叮铃铃…”,一阵刺耳的铃声响起,原来是C哥的闹铃。小二看看表,凌晨4点了。此时睡意全无,去找C哥聊聊天吧!“C哥,你闹铃怎么

2017-03-26 12:05:52 372

原创 论PHP面向对象之-多态

面向对象的三大特征我们知道,面向对象有三大特征,分别是:封装继承多态封装与继承封装因为对象都对自己负责,所以,对象的很多东西都不需要或不可以暴露给其他对象。比如:小明不需要将所有的信息告诉别人;手机不能不封装而把CPU、内存卡等等都暴露给用户,这太危险了(如下图)。封装解决了数据的安全性,内在也体现了‘每个对象都对自己负责’。继承继承,没什么好说的,主要是实现了代码的复用。但说到这里,

2017-03-26 12:04:16 484

原创 设计模式系列·王小二需求历险记(二)

0x1 原文再续,书接上回上回说到,C哥凭借自己多年的编码经验,欲传授王小二绝世武功。 让我们书接上回。0x2 来源于生活中的实例看着王小二求知若渴的眼神,C哥开始对小二循循善诱。“小二啊,我们假设一个场景:假设你是一名讲师,对于上完你课程的人,你要确保接下来,每个人都知道他们下一节课去哪上。你如何去做呢?”“嗯…我会在教室门口贴一张课表。课表上标明所有的课程以及课程对应的教室。让学生们自己根据课

2017-03-26 12:02:37 432

原创 设计模式系列·王小二需求历险记(一)

0x1 不断变化的需求“需求总是在变化的”,在无数次与产品经理的”需求大战“中,小二对这句话深有体会。这不,前些天,小二就经历了一件欲哭无泪的事情…0x2 产品经理的需求产品经理走到小二面前:“小二,我们需要给年会员发送短信,你多长时间能搞定?”小二沉思了一会,拍拍胸脯:“没问题,不就是发送短信嘛。一周内搞定”。0x3 面向过程的开发拿到需求后,小二就快速的对需求拆分了步骤:在数据库中获取所有的会

2017-03-26 11:59:49 281

原创 自动载入实战---构造一个PSR-0的简易框架

PSR-0规范是什么命名空间与绝对路径一致类名首字母大写除入口文件外,其他PHP文件必须只有一个类建立目录结构---App------Controller---------Home------------Index.php---All------Object.php------Loader.php---index.php上面是本框架的目录结构。自动载入\App\Controller\H

2016-07-27 07:43:39 517

原创 我的第1台Iphone与MacBook

缘起由于Apple产品昂贵的价格,一直以来,都没有很强的欲望去体验Apple产品。直到前几周读了《乔布斯传》,慢慢的,被乔布斯那种追求完美,精益求精的工匠精神所感染,这次真的想体验一下Apple产品了。第1台Iphone综合以下3个元素,买了第1台IphoneSE。预算性价比—Iphone6s的配置四寸屏幕—乔布斯纪念版刚拿到手IphoneSE,迫不及待的拆开包装,然后开始激活。整个过程,顺

2016-07-24 23:54:54 427

原创 安全总结

名词解释拖库攻击者利用网站的漏洞,获取网站的所有数据。撞库攻击者从A网站获取了用户的用户名和密码,然后尝试在B网站登录。 也就是碰运气。暴力破解也就是穷举法,一一尝试破解密码彩虹表对于不可逆推的hash加密,像md5()。md5(a)=b,从b不可以反推出a来。 由于a与b的关系是一一对应的,那么,a与b可以建立关系表,从而由b可以反推出a。 这个表,就是“彩虹表”。对称加密加密与解密使用的秘

2016-07-17 21:23:30 380

原创 SQL查询优化

一般语句的优化避免查询无意义的数据避免使用 SELECT * ... 的做法这样,很多时候查询出来的字段,数据是冗余的,是没有意义的,会消耗网络、CPU、内存等等。利用索引,避免大量扫描表如果要查询某些字段,但是查询这些字段的数据时,会大量的扫描这个表,耗费的资源太大了,怎么办呢?我们应该建立合适的索引,避免大量的扫描表。切分查询比如,我每3个月要删除大约1000000条数据,如果直接写为:DELE

2016-07-12 18:27:30 277

原创 大型网站技术架构(笔记)

适合的才是最好的俗话说:“不要指望一口吃个胖子”。同样,初创公司也不要一开始就指望能够有一个完美的技术架构。 下面简单说一下网站架构的演化: 1、LAMP都集中在一台服务器上 2、数据库、服务器、文件系统服务器分离,发挥更高的性能 3、使用缓存。将最容易访问的数据缓存起立 4、服务器集群,提供更高的并发性能 5、数据库读写分离。 6、数据库、文件系统集群。 7、采用CDN、反向代理,

2016-04-26 10:57:07 320

转载 理解RESTful架构

理解RESTful架构

2016-04-20 13:42:55 251

原创 mysql索引

什么是索引? 现在有一本关于mysql的书,内容800页。现在让你找到讲解索引的章节。 但是,没有目录,OK,你只能从头到尾一点点的找,一页一页的去找。你翻啊翻啊,翻了10分钟,翻到652页,终于找到了索引章节,不容易。如果有目录呢? 这时你打开目录,在目录的第2页,你定位到“索引”章节在第652页。瞬间,你就翻到了652页。其实,索引,就相当于一本书的目录。 上面的情景我们可以

2016-04-15 09:59:27 301

转载 异步与同步&&阻塞与非阻塞

“阻塞”、“非阻塞”与“同步”、“异步”不能简单的从字面理解,提供一个从分布式系统角度的回答。同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。 换句话说,就是由调用者主动等待这个调用的结果。而异

2016-04-14 16:05:44 265

原创 操作系统

微内核1.微内核:将所有的非基本部分从内核中移走,并将它们实现为系统程序或用户程序。微内核通常包括最小的进程和内存管理和通信功能。好处是便于扩充操作系统。由于绝大多数服务都是被当作用户而不是内核进程运行的,因此微内核更加的安全可靠。 2.在微内核系统中: 进程——只是资源分配的单位,而不再是调度运行的单位 线程——是进程执行运算的最小单位 。一个进程可有多个线程,它们共享进程的资源进程1.比较进程

2016-04-13 21:37:10 1418

原创 mysql知识积累

时间日期相关函数计算日期之差 timestampdiff(int,datetime,datetime)mysql> select timestampdiff(day,'2016-03-08','2016-03-16') as diff;+------+| diff |+------+| 8 |+------+1 row in set (0.00 sec)mysql> select

2016-04-12 10:36:10 280

原创 记一次错误调试,关于php命令行[php cli]

这几天遇到一个需求,这个需求写在了php文件里,这个文件最好在命令行里执行。但是,出问题了。当我在浏览器里执行php文件的时候,ok,一切正常。但是,当我在命令行里执行的时候,报错!错误信息为:PHP Fatal error: Uncaught Exception: could not find driver in /var/www/html/huxintong_admin/include/lib

2016-04-06 19:06:04 3198

原创 [PHP]文件系统

介绍在很多PHP应用中,我们都会用到“文件”,比如上传文件,下载文件,信件文件,读文件等等操作。所以,文件对我们来说至关重要。读文件读文件有3种方法。readfile($fileName)这种方式很简单,只是很简单的打开文件、输出文件内容到屏幕、关闭文件。在这个过程中,我们只是简单的输出了文件,不能对文件的输出内容做一个控制。平时,我们很少只是简单的将文件内容输出而不做任何处理,所以,这个函数很简单

2016-03-22 20:13:11 319

原创 SSH的原理与运用

一、早期的计算机早期计算机之间的连接,都是使用明文传输的方式,比如ftp协议、telnet协议等等。这种方式很不安全,很容易被截获,从而获取用户的登录名和密码。二、SSH来了为了解决安全问题,SSH横空出世。SSH传输过程中,数据全程加密,并使用两种验证方式保证传输的安全。1、基于口令的安全验证。当用户要登陆一台远程主机,以登陆srb.w3cs.site为例。用户输入 ssh user@host,即

2016-03-22 11:11:15 989

原创 Session与Cookie

CookieCookie是保存在客户端的文件—小甜饼 当用户请求服务器的时候,服务器可以选择向浏览器写入Cookie文件。然后,当用户再次请求服务器的时候,就会携带Cookie数据访问服务器,这样就可以辨别出是哪个用户了。SessionSession是保存在服务器端的文件。 服务器有自己的一套机制,当浏览器访问服务器的时候,服务器会生成一个唯一的SessionId返回给浏览器,浏览器将Sessi

2016-02-26 11:03:46 308

原创 PHP文件处理系统

概述PHP是以UNIX文件系统为模型的,因此在windows系统中,我们只能获得”file”、”dir”、“unknown”三种文件类型。在这里,我们着重讲解file和dir类型。1.文件类型常用的有下面函数: filetype()获取文件类型 is_file() 判断是否是普通文件类型 is_dir() 判断是否是目录类型 is_link() 判断是否是链接类型2.文件属性filesize

2016-01-31 12:37:39 539

原创 使用栈判断回文

一、 背景什么是回文? 比如abba,abbba,1221等,从前读和从后读都一样,这就是回文。 abab就不是回文,因为从前读和从后读不一样。那么,你能够写一个程序判断一个字符串是否是回文吗?二、 启发回文:abba。也就是比较ab的逆序(ba)是否和ba相等。如果比较相等,那么就是回文,否则不是。我们能不能将ab提取出来,然后再逆序输出,再和后面的ba相比较? 如果比较都符合,那么这就是回

2016-01-30 16:03:02 17527 2

原创 快速排序

一、 背景桶排序:采用了以空间换时间的做法 冒泡排序:使用了以时间换空间的做法那么,有没有一种算法,空间用的没有那么大,时间有没有那么浪费呢? 有,那就是快速排序算法。二、 原理冒泡排序是相邻的两个数两两相比,并且是从一头开始,所以效率慢 那么能不能跳跃式的相比,从两头开始呢?可以选择一个数字作为基准点。 比这个数字小的数,都放在这个基准数字的左边。 比这个数字大的数,都放在这个基准数字的

2016-01-30 16:00:29 253

原创 冒泡排序

一、 背景使用桶排序,我们很好的进行了元素排序。假设我现在要进行10000000000个元素的排序,那要10000000001个空间。 这是不是太浪费内存了?假设我不只是输出分数,还输出得此分数对应的学生的姓名。 桶排序能满足吗?不能。 桶排序中,元素的下标是分数,无法实现下标与人的一一对应。 比如,同时5分的桶不能即是eric,又是david。二、 启发既然桶排序有很多限制,那么有没有一种

2016-01-30 15:57:12 285

原创 桶排序

一、 问题背景假设现在共有5个数,分别为5、3、1、2、4,将这5个数按照从小到大的顺序排列,如何排列呢?二、 启发数据结构中的线性结构—数组,其元素顺序已经排好序了。比如a[1] a[2]a[3]是连续的,排好序了。我们能不能从中得到启发?如图,0.1.2.3.4.5.6,已经排好序了 并且他们在输出的时候都是按照顺序输出的。 我们能从中得到些许启发吗?答案是可以的!我们可以使用元素的标号。比

2016-01-30 15:50:04 265

原创 文件上传与下载学习笔记(3)---面向对象方法实现文件上传

<?phpclass uploadClass { protected $filename; protected $maxSize; protected $allowExt; protected $allowMime; protected $uploadPath; protected $imgFlag; protected $fileInfo;

2016-01-30 15:38:53 362

原创 文件上传与下载学习笔记(2)---多文件、单文件、多个单文件函数封装

一:前导知识点:1:is_string()判断一个变量是否是字符串 is_array 判断一个变量是否是数组2:pathinfo()函数可以获取文件的扩展名。3:创建目录函数 mkdir()4: 生成唯一的随机数 uniqid()5:判断文件、目录是否存在file_exsits()二:思路与流程三:封装的函数代码<?php/** * 得到想要的文件类型 * @return unknown *

2016-01-30 15:37:47 346

原创 文件上传与下载学习笔记(1)---文件上传原理及配置

一:原理将客户端的文件上传到服务器端的临时目录,再将服务器端的临时文件移动到指定目录。二:客户端的配置表单的method必须为post方法 表单必须添加enctype=”multipart/form-data”属性 二者缺一不可。客户端进行限制:1:限制文件上传的大小 <input type="hidden" name="MAX_FILE_SIZE" value="2M"/>2:

2016-01-30 15:35:49 577

原创 SPL学习笔记(5)---函数的使用

一.Autoload函数I : 为了实例化PHP中的类对象,需要通过一定的方法寻找到类的定义。通常情况下,类会定义在一个单独的文件中。现在我们建立一个文件夹libs,建立文件 libs/Test.php 和 libs/Test.class.php 和 index.php1:libs/Test.php 的代码<?phpclass Test{ public function __c

2016-01-30 15:32:55 299

原创 SPL学习笔记(4)---基础接口

如果想对迭代器进行一定的处理之后再返回,可以用这个接口。说明:IteratorIterator类是OuterIterator接口的实现,扩展的时候可以直接继承类IteratorIterator.<?php $arr=array("a","b","c");//继承IteratorIterator类class OuterImpl extends IteratorIterator{ //对值

2016-01-30 15:25:44 276

原创 SPL学习笔记(3)---迭代器

一.什么是迭代器通过某种统一的方式遍历链表或者数组中的元素的过程叫做迭代遍历,这种统一的遍历工具我们叫做迭代器。二.ArrayIterator迭代器1:Iterator接口PHP中的迭代器是通过Iterator接口定义的。包括current()、key()、next()、rewind()、valid()等方法。2:方法foreach默认实现了ArrayIterator的接口。但是我们学习这个迭代器,

2016-01-30 15:22:42 248

原创 SPL学习笔记(2)---类的实现

一.SPL中的双向链表—SplDoublyLinkedList()双向链表的操作总结:1.当前节点的操作: rewind() 指向bottom current() 当前节点 next() 下一个节点 prev() 上一个节点。2.增加节点的操作: push()会插入到top unshift()会插入到bottom。3.删除节点的操作: pop() 会删除节点中的top元素、

2016-01-30 15:14:01 238

原创 SPL学习笔记(1)---概念

一:什么是SPLSPL是Standard PHP Library的缩写,他是用于解决常见问题的接口与类的集合。常见问题是什么问题呢?1:数据建模、数据结构。解决数据如何存储的问题。2:元素遍历。数据如何查看的问题。3:常用方法的统一调用。通用方法(数组、集合的大小)。自定义遍历。4:类定义自动装载。SPL框架包括数据结构、迭代器、基础接口、基础函数、异常、其他等。二:SPL中的常用数据结构1:什么是

2016-01-30 12:07:21 731

原创 如何改掉坏习惯?

如何改掉坏习惯?我也一直在思考这个问题,今天突然有点想通了…首先问大家一个问题:如何搬走房间内的黑暗呢? 请思考10秒钟再看下面的答案~没错!答案就是“引进光明,点一盏灯”。我想以我自身做一个例子:从小,我生活在一个不算穷,也不算富的家庭里,衣食无忧。因为是家里的独生子,所以父母对我是百依百顺。不舍得让我干一点活,家务活、农活都不让干,只是让我做一件事:“好好学习!”慢慢的,由于这种不错的环境,培

2016-01-30 11:52:54 1287

原创 数据结构学习心得总结

开篇经过近一个月的学习,终于将郝斌老师讲的数据结构视频看完了~学习完成后,受益良多,也非常喜悦,非常开心,好像终于打了一场胜仗一样!我打算将这一个月的学习心得做一个汇总,记录下来。 希望能给初学者带来信心和经验,能给大家分享这份快乐~万事开头难刚开始打算学数据结构,是因为找工作面试的时候,很多公司都要求对数据结构有了解。没办法,我只有硬着头皮学了。但是我没有任何学习思路,因为之前上课学习的时候,我

2016-01-29 21:35:03 13816 2

原创 树[数据结构]

一.树的定义1.什么是树有且只有一个根节点,有若干个互不相交的子树。 2.专业术语如上图:我们解释父节点、子节点、兄弟节点、堂兄弟节点。父节点:A为父节点 子节点:B、C是A的子节点 兄弟节点:B和C是兄弟节点 堂兄弟节点:D与E是堂兄弟节点 深度:树中节点的最大层次(从根节点到最底层节点的层数,图中深度为3) 叶子节点:没有子节点的节点(B、E是叶子节点) 度:子节点的个数二.树的分

2016-01-29 20:15:52 477

原创 深入理解递归以及汉诺塔问题[数据结构]

一.深入理解递归1.什么是递归?递归就是一个函数直接或者间接的调用自己。2.函数是如何完成调用的?2.1主调函数调用被调函数前,要做3件事1.主调函数将所有的实参、返回地址传递给被调函数 2.为被调函数的局部变量(包括形参)分配存储空间 3.将控制转移到被调函数入口。2.2被调函数返回主调函数前,要做3件事1.保存被调函数的额返回结果 2.释放被调函数所占的空间 3.依照被调函数保存的返回地

2016-01-29 09:51:28 779

原创 [总结]PHP正则表达式

一.正则表达式基础1.什么是正则表达式正则表达式是字符串搜索和匹配的工具。2.无孔不入的正则表达式我们日常生活中使用的很多电子设备,无时无刻不在跟正则表达式打交道。1.windows的文件搜索功能: *.zip就是一种正则表达式的匹配2.注册时的手机号码格式的验证 3.正则表达式的使用范围不管你是使用PHP,还是Java,还是Js.都会用到正则表达式。 正则表达式,基本通用于各个编程语言,各个

2016-01-28 20:18:31 317

原创 队列的理解与实现[数据结构]

一.基础知识1.什么是队列?满足先进先出的一种存储结构。2.队列的分类?1.链式队列(用链表实现的) 2.静态队列(用数组实现的)3.为什么静态队列必须是循环队列?如图: 如果不是循环队列,那么“队首”以下的元素都会被浪费掉!4.循环队列需要几个参数来确定?需要两个参数:front(队首)、rear(队尾) 1.队列初始化的时候:rear=front=0 2.队列空的时候:front==re

2016-01-28 14:42:57 324

原创 栈的理解与实现[数据结构]

一.栈的定义Tips:阅读本文之前,请先熟悉链表知识:链表的理解与实现栈是一种可以实现”先进后出“的数据结构。 栈只允许在栈顶进行插入、删除、遍历等操作。 如下图: 依次放入 5-6-7 到栈内。 拿出 6来,得先拿出 7来 拿出 5来,得先拿出7、6来。 也就是7后进的,7先出栈;5先进的,5后出栈。 二、栈的实现1.初始化一个栈1.1定义链表的节点结构typedef struct

2016-01-28 11:52:31 259

原创 [总结]PHP面向对象

一.面向对象的基本概念1.对象的理解1.1什么是对象世间万物皆对象。 我们能够接触到的,感知到的,都是对象。我们每天都跟对象在打交道。1.2对象的组成对象由两部分组成,一部分是属性,一部分是方法。 属性:描述对象所应具有的属性。 方法:描述对象所应具有的功能。比如:人这个对象。 属性:身高、体重、年龄… 方法:走路、吃饭、学习…2.面向对象的理解面向,就是一直看着,一直用着。 面向对象,

2016-01-27 22:15:46 345

空空如也

空空如也

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

TA关注的人

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