Browsing: 分析

阅读Monolog源码,看其中的设计模式(1)

Monolog的代码结构如下:

QQ20160225-0

我们的测试入口文件,test.php。

我们分析下Monolog注册表。代码如下:

我们从函数级别看这个类:

QQ20160225-1

这里先普及下,__callStatic函数:

用静态[……]

Read more

{ Add a Comment }

ThinkPHP3.2.3 框架分析(2)

TP大致目录介绍如下图:

QQ20160220-1

ThinkPHP.php这个文件主要是定义一些系统常量、核心类的加载及应用的初始化。

App::run如下:

QQ20160222-2

App::exec内部分析,这个函数就是通过反射方式处理controller。这个过程可以很好的控制action的操作上前后加上逻[……]

Read more

{ Add a Comment }

Mysql的索引使用

#1 为什么不建议使用过长的字段作为主键?

答:聚集索引这种实现方式使得按主键的搜索十分高效,但是辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。因为所有辅助索引都引用主索引,过长的主索引会令辅助索引变得过大。

#2 为什么使用自增字段作为主键则[……]

Read more

{ Add a Comment }

php的 array_unique vs array_flip vs array_keys性能比较

下面是一段测试代码:

运行结果:

 

{ Add a Comment }

PHP的运行方式(SAPI)

PHP 常量  PHP_SAPI 具有和 php_sapi_name() 相同的值。

 

这段代码是ThinkPHP项目里Thinkphp.php文件判断运行环境模式。SAPI:S[……]

Read more

{ Add a Comment }

架构文档类别

我们在做架构设计文档一般分为两个层面: 
#1 技术架构设计。 
从技术的解决上来讨论,着重点是讨论采用什么样的技术,如何分层,采用了那些好的技术特性。采用这些技术特性会为我们的工作带来哪些好处。为什么要这么做。 

#2 体系结构设计。 
从业务需求的角度来出发,[……]

Read more

{ Add a Comment }

典型的MVC架构图

082137029959819

通常,当使用MVC时,应用程序中的每个逻辑部分都有一个单一的控制器。在这些控制器的前面还有一个Router;这是一个看门人,用于确定用户请求的内容,以便应用程序满足用户需要。常用php的mvc框架:Yii,Thinkphp,CodeIgniter,Zend_framework,cakephp[……]

Read more

{ Add a Comment }

搜索引擎设计分析

分析搜索引擎可以发现它主要由三部分组成:爬行器,索引器和用户界面。爬行器在互联网中漫游和收集新的网页内容并将它们排序供索引器使用。在大型搜索引擎中,爬行器会下载这些网页并在它们中间检索超链接以缓存更多页面。索引器则按次序输入网页内容,分析这些信息,最后生成可搜索的索引。搜索引擎的用户界面则负责接收用[……]

Read more

{ Add a Comment }

社区论坛设计分析

论坛是一个用户可以和他人通过发布由话题连接起来的帖子进行交互的网站。通常,论坛允许所有人阅读帖子,但只有登录的注册用户才能发帖和参与讨论。因此,第一个设计要求就是只有登录后的注册用户才有权限发帖。

第二个要求是实现只允许特定用户管理论坛的机制,其他用户则没有这个权限。通常,这些功能包括添加新的板块[……]

Read more

{ Add a Comment }

目录结构设计分析

在开发过程中,第一步是设计程序的目录结构。建议创建三个主文件夹:第一个是public_files,用来保存所有可以访问的页面;第二个是lib,用来保存可以被其他文件调用的引用文件;最后一个是templates,用于保存页面显示文件。虽然php可以调用程序目录下的所有文件,但是Web服务器应该只允许外[……]

Read more

{ Add a Comment }