PHP框架的认识误区

有人认为,PHP是每次请求都要初始化资源,这个开销非常大。由此,PHP不适合使用开发框架。 对于PHP,确实没有类的持久化,使得每次请求都要初始化资源,但是,这并不是开销的主要问题所在。最主要的问题,是在于开发PHP框架的人,对PHP本身的特性了解多少。最简单的,MVC需要检测UA,如果使用PHP自带的get_browser函数,那肯定是死定了。因为,使用上的方便与简单,导致的是性能的开销。 认为 ...
by bardo 2011-05-26 浏览 (5457) 回复 (3) 群组: PHP网站架构与开发框架

企业应用架构模式(一)——细说企业应用的分层架构

大型企业应用一般首先要将架构分为三层:表现层,领域层,数据源层。其中: 表现层的责职是仅完成数据和输入与输出,以及所有的界面交互逻辑。 领域层的责职则是完成所有的业务逻辑。 数据源层则是完成数据库的存取操作。 由此可以看出,表现层相当于领域层的一个用户。而领域层也相当于是数据源到的一个用户。在PHP开发框架中,实际并不存在领域层的代码。(所以,一些框架声称,它支持领域驱动设计,实际是懵人的 ...
by bardo 2011-05-26 浏览 (2564) 回复 (0) 群组: PHP网站架构与开发框架

浅述PHP设计模式(1)

1、设计模式是什么? 先用比喻来回答:假如面向对象是兵器,那么,设计模式是一套武术套路,是一本编程人员均需要的葵花宝典。假如面向对象是一个算盘,那么,设计模式就如同是珠算口诀。学珠算是要记口诀的。但会打算盘的是不用口诀的。并不是不用,而是在用时,己没有文字或模式的具体概念干扰了。假如面向对象是五笔字型,那么,设计模式,就是五笔字型的口诀。但会打字的,则是想字读码,或看字读码,已不再需要口诀了。学习设 ...
by bardo 2011-05-26 浏览 (1028) 回复 (0) 群组: PHP网站架构与开发框架

浅述PHP设计模式(2)

4、SOLID原则浅述 SRP:The Single Responsibility Principle 单一责任原则单一责任原则,要求,一个函数只完成一个功能,一个类,只实现一类具体的对象。这样说仍很抽象。但更具体一些,对于一个函数,应当是一个输入与输出单元。即有明确的输入数据,算法,输出数据的结构。对于一个类,在核心代码层面,它应当是一个明确的算法实体,或者是功能实体。如果是在应用的具体层面,应当 ...
by bardo 2011-05-26 浏览 (874) 回复 (0) 群组: PHP网站架构与开发框架

浅述PHP设计模式(3)

5、其它面向对象的原则 CARP: The Composite/Aggregate Reuse Principle 合成聚合复用原则合成聚合复用原则的定义:在一个新对象中使用一些已有的对象,使之成为新对象的一部分。新的对象通过向这些对象的委派达到复用的目的。提出这一原则的根本点在于,很多编码的问题是滥用继承。通过SOLID原则,我们可能分出了较多的类。如果最终我们仍是使用SOLID原则将这些类最终继 ...
by bardo 2011-05-26 浏览 (867) 回复 (0) 群组: PHP网站架构与开发框架

浅述PHP设计模式(4)

6、具体设计模式讨论。 (说明,这一部分是本人在此网站(iteye.com)的博客文章《设计模式应用浅述》基础上修改的。其目的是使其更易于理解与掌握。)一、创建型模式——特别的变量问题 Factory Method(工厂方法):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。 什么是工厂?工厂是按订单生产不同的产品。当然,这些产品都 ...
by bardo 2011-05-26 浏览 (886) 回复 (0) 群组: PHP网站架构与开发框架

浅述PHP设计模式(5)

二、结构型模式——类与方法的调用控制问题 Adapter(适配器):将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 实现方式:创建一个Adapter,对构造函数传入的类作为实际操作类。Adapter通过代码对操作类各个方法的调用,实现调用方所需要的方法。 可以看出,使用这一具类的场景,是具体代码的接口已经确定。并且核心代码 ...
by bardo 2011-05-26 浏览 (1033) 回复 (0) 群组: PHP网站架构与开发框架

xser php framework 0.2 设计构想

/** * xser php framework 0.2 设计构想 * * 鉴于 0.1.x 的版本 代码过于耦合,目录结构不规范,思路不清晰等原因 * * 目标 -- 简单易用,层次分明,代码组织规范,轻量级的B/S - MVC框架 * 定位 -- 面向PHP新手的一整套解决方案 * * 框架以MVC为架构,要充分体现出MVC的优势,做到低耦合,强封装的实现.借鉴Qee/Flea的实现, * 在功 ...
by vb2005xu 2011-05-26 浏览 (734) 回复 (0) 群组: xser php framework

PHP5 面向对象的一个新疑惑点,类对象实例竟然能访问类中私有方法,不知道是不是bug

先看代码: class orm_factory { /** * 数据库操作对象 * * @var orm_driver */ private $_driver = null ; /** * 表操作对象 * * @var orm_table_operator */ private $_table_operator = null ; private static $_valid_dsn_set = a ...
by vb2005xu 2011-05-26 浏览 (1143) 回复 (3) 群组: xser php framework

小型电子商务网站设计原则

最近谈得最多的话题莫过于大规模,大数据量,高性能,高并发等架构话题,其实一个电子商务网站开始时一定是小规模,小数据量,用不着把架构弄得过于复杂。高度设计、过度扩展(高德纳大爷也说过,"过早优化是万恶之源")是现在很多小型电子商务网站非常容易犯的毛病。开始服务器就一台,根本没有必要去关心系统扩展,数据库扩展,读写分离,负载均衡等,那些大型电子商务网站的架构经验根本不用照搬。 ...
by vb2005xu 2011-05-26 浏览 (3327) 回复 (5) 群组: xser php framework

sfw 最初版本

sfw 最初版本 ... ... 放在这里 自己留着看 .....
by vb2005xu 2011-05-26 浏览 (886) 回复 (0) 群组: xser php framework

SEO的几个函数,分词,优化

以下是本人写的两个函数,用于SEO的,至于该如何用我不多说了,写着清楚 //根据标题获得百度热门相关关键字,返回字符串 function baiduKeyword($title,$num=5,$charset="UTF-8"){ $title=iconv($charset, "GB2312", $title); $w=file_get_contents ...
by isno 2011-05-26 浏览 (2007) 回复 (0) 群组: phper

借用Google API 写一个查看天气预报的类

<?PHP //- Describe: //- Author: liuguichun //- Link: //- CreateTime: 2010-6-21 //- UpdateTime: //- Package: class weather { static $url = 'http://www.google.com/ig/api?hl=zh-cn&weather='; stati ...
by isno 2011-05-26 浏览 (3649) 回复 (2) 群组: phper

14款优秀的MySQL客户端

不用我说,大家都知道Mysql是一个怎么样的数据库。虽然它的命运比较坎坷,但是丝毫没有影响到我们对Mysql的热情。不论是个人程序或者网站,还是企业数据库,Mysql的身影无处不在。无论做什么数据库的开发,一款合适的客户端软件可以让你达到事半功倍的效果。下面就我自己使用mysql客户端的经验,再参考其他人的情况做如下汇总,希望对你的数据开发有所帮助。 1. EMS MySQL Manager 强大 ...
by vb2005xu 2011-05-26 浏览 (22046) 回复 (2) 群组: xser php framework

我的2009年经验小结

转眼又是一年过去了,似乎,最近五六年来,一直都过得不那么顺利,今年还算是不错,至少,在客户、老板和同事的帮助下,一年的工作,终于在年前收尾了。在此小结一下,吸取一些教训,以免来年重犯相同的错误。 1、做了一个最正确的选择:挂靠一家软件公司做程序。做程序和做业务,是不应该同一个人进行的,就算客户是主动上门的,沟通同样要花费精力,说不定这也是性格上的问题,比如,当我专心地写代码的时候,我把每个电话和QQ ...
by isno 2011-05-26 浏览 (3148) 回复 (3) 群组: phper

几个有趣的系统架构

1. 前言 什么是合适的,那么什么就是成功的。 这句话绝对适用于系统架构和设计。 最简单的例子,如果一个系统需要的实时反应,而不是复杂的业务。那么这个系统在设计的时候就应该更加关注与速度而不是业务的分层。 反过来说,如果一个系统能够容忍客户反应的迟钝,但是要求实现非常复杂,后期可扩展的业务逻辑。那么这个系统就应该有效的对业务进行抽象和分层。 在这里,我想分享几个我所知道的有趣的系统架构设计。 ...
by vb2005xu 2011-05-26 浏览 (1840) 回复 (0) 群组: xser php framework

PHP5:OOP -- 分离业务逻辑层代码 , 是否必要?

个人感觉MVC三层模型,仅仅是JAVA三层开发模型中在视图层中的一个子集.在日常开发网站的过程中,我都在使用基于MVC的PHP框架来开发.之前使用JAVA工作流做过项目开发,作为PHP程序员,能否用到以前的项目开发模式呢? 这个周末就循着这个路子从一个员工信息管理器的小demo来测试可行性.结果发现PHP很需要但是也可以完全不要使用.因为这样是可以很好的重复使用代码,但是这种代码在编写的过程中相当 ...
by vb2005xu 2011-05-26 浏览 (2068) 回复 (0) 群组: xser php framework

MySQL一些技巧

1.表设计: 数据库要满足基本范式; 选择合适的数据类型:尽量定长; 不要使用无法加索引的类型作为关键字段,比如text类型; 为了避免联表查询,有时候可以适当的数据冗余,比如邮箱、姓名这些不容易更改的数据; 选择合适的表引擎,有时候合MySAM适和,有时InnoDB适合; 最好每个表都建立有auto_increment字段,建立合适的数据库索引以保证查询性能; 最好给每个字段设定d ...
by vb2005xu 2011-05-26 浏览 (2879) 回复 (2) 群组: xser php framework

12道PHP类型检测题目

这些题目无意之中在一个网站上找到,先做做看,你能对几道?过几天再把答案公布出来! PHP Skills Test $a .= "a";$a .= "b";$a .= "c"; What is the value of $a ? $a = 4;for ($b = 0; $b <= $a; $ ...
by vb2005xu 2011-05-26 浏览 (1171) 回复 (1) 群组: xser php framework

JVM内存管理:深入Java内存区域与OOM

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述: 对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又是执行最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。 对于Java程序员来说,不需要在为每一个new操作去写配对的delete/free, ...
by fantasy 2011-05-26 浏览 (31408) 回复 (6) 群组: 高级语言虚拟机

JVM调优总结(一)-- 一些概念

数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress 引用类型包括:类 ...
by fantasy 2011-05-26 浏览 (22106) 回复 (24) 群组: 高级语言虚拟机

JVM内存管理:深入垃圾收集器与内存分配策略

  Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述:   说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项技术当做Java语言的伴生产物。事实上GC的历史远远比Java来得久远,在1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期,人们就在思 ...
by fantasy 2011-05-26 浏览 (20508) 回复 (8) 群组: 高级语言虚拟机

JVM调优总结(二)-一些概念

Java对象的大小 基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句: Object ob = new Object(); 这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte+8byte。4byte是上 ...
by fantasy 2011-05-26 浏览 (11499) 回复 (9) 群组: 高级语言虚拟机

JVM调优总结(三)-基本垃圾回收算法

可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 标记-清除(Mark-Sweep): 此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第 ...
by fantasy 2011-05-26 浏览 (12216) 回复 (2) 群组: 高级语言虚拟机

JVM调优总结(四)-垃圾回收面临的问题

如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈是真正进行程序执行地 ...
by fantasy 2011-05-26 浏览 (7146) 回复 (1) 群组: 高级语言虚拟机

JVM调优总结(五)-分代垃圾回收详述1

为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程中生成的临时变量 ...
by fantasy 2011-05-26 浏览 (7373) 回复 (3) 群组: 高级语言虚拟机

JVM调优总结(六)-分代垃圾回收详述2

分代垃圾回收流程示意 选择合适的垃圾收集算法 串行收集器 用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高。但是,也无法使用多处理器的优势,所以此收集器适合单处理器机器。当然,此收集器也可以用在小数据量(100M左右)情况下的多处理器机器上。可以使用-XX:+UseSerialGC打开。 并行收集器 对年轻代进行并行垃圾回收,因此可以减 ...
by fantasy 2011-05-26 浏览 (6733) 回复 (2) 群组: 高级语言虚拟机

JVM调优总结(七)-典型配置举例1

以下配置主要针对分代垃圾回收算法而言。 堆大小设置 年轻代的设置很关键 JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。 典型 ...
by fantasy 2011-05-26 浏览 (8644) 回复 (4) 群组: 高级语言虚拟机

JVM调优总结(八)-典型配置举例2

常见配置汇总 堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden ...
by fantasy 2011-05-26 浏览 (5931) 回复 (0) 群组: 高级语言虚拟机

JVM调优总结(九)-新一代的垃圾回收算法

垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在几百甚至几十毫秒以内,如果分代垃圾回收方式要达到这个指标,只能把最大堆的设置限制在一个相对较小范 ...
by fantasy 2011-05-26 浏览 (5913) 回复 (1) 群组: 高级语言虚拟机

群组知识库热门文章

最新评论

谢谢 讲解 曾经看过良哥哥 的学习笔记上有介绍 有所了解 看了楼主的讲解 加深了印象 谢谢
smilesail 评论了 实战篇:设计自己的Annotation
正在研究学习,真的是雪中送炭。。。多谢!
tantec 评论了 实战篇:设计自己的Annotation
还是不知道这个东西被发明出来什么用?
yhjhoo 评论了 实战篇:设计自己的Annotation
我目前是结合aop一起使用,用于记录方法调用及其他。。
tou3921 评论了 实战篇:设计自己的Annotation
写的挺不错,花了20分钟左右读完,并把例子运行了一遍,感谢楼主的无私奉献
JavaCrab 评论了 实战篇:设计自己的Annotation
很好的例子,看了你的例子在看那些理论,就简单多了。。。。顶
kala888 评论了 实战篇:设计自己的Annotation
light 老大威武
pluswolfboy 评论了 实战篇:设计自己的Annotation
谢谢,明白 annotion原理 ````
aleck1769394 评论了 实战篇:设计自己的Annotation
写的可读性非常好,让我对annotation很容易就有了初步认识,好文章
wangluo19 评论了 实战篇:设计自己的Annotation
引用 [*[url][/url][flash=200,200][/flash]dfdfgf[si ...
lovexzhh 评论了 实战篇:设计自己的Annotation
Global site tag (gtag.js) - Google Analytics