03 2012 档案
摘要:从今天开始会陆续穿插一些PHP的使用技巧,以更方便大家在基础的学习过程中,对PHP能有一个更清晰的认识和使用。现在网上的绝大多数页面都是动态页面,而我们为了保证对搜索引擎友好,让搜索引擎收录更加方便,因此需要把动态页面进行静态化,但如何实现静态就需要我们从程序方面进行考虑了。对PHP来讲,实现程序页面静态化有两个方式:生成真正的静态化页面,另一种是就是伪静态,下面我就对这两种方式分别进行详细的介绍和说明。真正的静态化页面真正的静态化页面是通过生成静态的html页面,并采用采用某种机制定时刷新静态页面,这种方式对用户访问来说效率最高,能够支持较大的访问量,同时对后台数据库的操作大大降低,能够让有
阅读全文
摘要:301重定向大全由于决定将blog地址放到顶级米来,所以必须考虑重定向的问题,这样才能确保不出现404的错误,本以为可以通过插件设置,但是Permalink Redirect在我这边完成不了这样的工作,所以还是只能通过手工修改.htaccess来实现,网络上资料很全。我采取了修改原有地址http://blog.enjoylog.orz的 .htaccess文件,在其中加上如下代码:(如果之前你没有用到.htaccess文件,你需要手工添加该文件)Options +FollowSymLinksRewriteEngine onRewriteRule (.*) http://enjoylog.cn/
阅读全文
摘要:问题详细描述为:https://bugs.php.net/bug.php?id=46851<?phpabstract class A {// 方法无参数public static function foo(){ echo 'bar'; }}abstract class B extends A {// 方法有参数public static function foo($str){ echo $str; }}?>如上面的代码:类A中的foo方法无参数,类B在继承A后重写foo方法时加入了参数,因此会产生一个类似下面E_STRICT级别的警告:Strict standard
阅读全文
摘要:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重载。当对父类的方法进行重写时,子类中的方法必须和父类中对应的方法具有相同的方法名称,在PHP5中不限制输入参数类型、参数数量和返回值类型。(这点和Java不同)。子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。声明方法时,如果不定义访问权限。默认权限为public。PHP5重写方法先设置一个父类,这个父类是 “Dog”类,这个类描述了dog的特性。Dog有2个眼睛,会跑,会叫。就这样描述先。我养了一直狗,是只小狗,符合Dog类的特性,但有所不同。我的小狗有名字,我的小狗
阅读全文
摘要:说明:这个规范应该是基本的规范了吧。大部分程序员都知道这样的规范,从规范上看应该是使用ZendFramework开发的。参考一下:开发原则1.业务逻辑统一写在数据库的存储过程里,数据查询和组合在程序中完成2.存储过程统一用专用程序修改,禁止直接在客户端修改3.存储过程头部必须撰写该操作的业务流程描述4.数据库对于带小数点数字统一使用 DECIMAL 类型,禁止使用 FLOAT 类型5.数据库主键统一使用 BIGINT(20) UNSIGNED AUTO INCREMENT6.所有 CSS/JavaScript 均按各自功能写在独立的文件上7.所有 JavaScript 均使用 jQuery A
阅读全文
摘要:目前的国内的微博客很多,不少微博客都提供Open API,然而,很多微博提供的API和Twitter的API有一些或多或少的差别,调用格式上并不完全相同。 我建议所有提供API的微博客系统,都将各自的API统一为Twitter的API调用格式,例如目前较有影响的开源微博系统StatusNet(Laconica)的API格式就完全兼容Twitter,这种统一API对于开发者和用户都有很大的好处。对于开发者,针对某一个微博的应用可以快速移植到另一个微博,节省开发时间。对于用户,用户可以自定义客户端应用程序,只要换一下API地址,就能使用同一个应用程序,来访问各个不同的微博。例如目前很多人通过...
阅读全文
摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。JSON建构于两种结构:“名称/值”对的集合(A collection of
阅读全文
摘要:问题描述:struts.xml中设置上次文件最大值<action name="FileUpload" class="cn.timefly.strutsTest.FileUploadAction"> <result name="success">/FileUploadResult.jsp</result> <result name="input">/FileUpload.jsp</result> <interceptor-ref name="
阅读全文
摘要:html:<!--imggalley--><div id="play"> <div id="play_bg"></div> <div id="play_info"></div> <div id="play_text"><ul><li>1</li><li>2</li><li>3</li><li>4</li></ul>
阅读全文
摘要:在IE中移除容器类节点,会引起内存泄露,最好是创建一个新的节点,比如div,然后将要删除的节点放入这个div中,再将div的innerHTML清空。其它的直接removeChild就可以了。var removeNode = !+"\v1" ? function(){var d;return function(node){if(node && node.tagName != 'BODY'){d = d || document.createElement('DIV');d.appendChild(node);d.innerHTML
阅读全文
摘要:if (! +"\v1")判断是否为IE浏览器。疑惑了好久,为什么这句能判断IE浏览器。网上找的答案:IE里不能把 "\v" 处理成垂直符,所以在IE里它就是表示"\v"这个字符串。所以"\v1"为字符串。前面的+号把后面的字符串转换成数字,由于"\v1"在IE里为字符串所以 +"\v1" 转换失败,其值为NaN所以 !+"\v1"的值为 true所以在IE里 if(!+"\v1")其他判断是否为浏览器的方法:if ("\v&
阅读全文
摘要:在编写程序的时候,总是不可避免的需要使用一些常量,甚至很多的常量。我们可以对常量进行一个很简单的分类: 记忆性常量:主要出于程序结构上的考虑而设定的常量。譬如为了避免一个没有字面意思的魔法数,或者避免拼写容易出错,或者不容记住的内容。 业务性常量:表示一个业务上的一个特定业务实体的属性或属性值。 很多的时候,一个业务性常量很多时候也是一个记忆性常量。 在一个大型项目中,参与的人员和代码数量通常都会比较多,没有好的管理策略,常量的使用往往想入混乱中。譬如重复定义,其维护的值甚至还不一致,以外覆盖;譬如仅仅为了使用某个常量,而引入某个包或者类,由此可能引出模块间的循环依赖等。 良...
阅读全文
摘要:这里介绍一个基于jQuery开发的模板引擎。 jTemplates目前最新的版本是0.7.8,由tPython开发。官方网站:http://jtemplates.tpython.com 两个附件,一个是jTemplates官方网站提供的下载包,其中包括jTemplates的说明、jTemplates JS库、jTemplates DOC。 另一个是使用jTemplates做的三个DEMO。 一 , 简单介绍 它是一个基于jQuery开发的javascript模板引擎。它主要的作用如下: 1. 通过JavaScript获取JSON形式的数据; 2. 获取一个HTML模板,与数据相结合...
阅读全文
摘要:在jQuery validation plug-in 1.3插件库文件里面里面有写代码很有用比如required: "不能为空!",remote: "Please fix this field.",email: "格式错误.",url: "格式错误.",date: "格式错误.",dateISO: "Please enter a valid date (ISO).",dateDE: "Bitte geben Sie ein gültiges Datum e
阅读全文
摘要:如果PHP对象存在递归引用,就会出现内存泄漏。这个Bug在PHP里已经存在很久很久了,先让我们来重现这个Bug,代码如下: <?phpclass Foo { function __construct() { $this->bar = new Bar($this); }}class Bar { function __construct($foo) { $this->foo = $foo; }}for ($i = 0; $i < 100; $i++) { $obj = new Foo(); ...
阅读全文
摘要:最近和同事一起看Web的Cache问题,又进一步理解了 HTTP 中的 304 又有了一些了解。304 的标准解释是:Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。如 果客户端在请求一个文件的时候,发现自己缓存的文件有 Last Modified ,那么在请求中会包含 If Modified Since ,这个时间就是缓存文件的 Last Modified 。因此,如果请求中包含 If Modified Since,就说明已经有缓存在客户端。只
阅读全文
摘要:一、OSCache是当前运用最广的缓存方案,JBoss,Hibernate,Spring等都对其有支持,下面简单介绍一下OSCache的配置和使用过程。去http://www.opensymphony.com/oscache/download.action下载你所需要的oscache版本本人使用的版本是oscache-2.4,以下将以此版本作为例子1.解压缩下载的文件到指定目录从src或etc目录取得oscache.properties 文件,放入src根目录或发布环境的/WEB-INF/classes 目录如你需要建立磁盘缓存,须修改oscache.properties 中的cache.pa
阅读全文
摘要:CSS学起来并不难,但在大型项目中,就变得难以管理,特别是不同的人在CSS书写风格上稍有不同,团队上就更加难以沟通,为此总结了一些如何实现高效整洁的CSS代码原则:1. 使用Reset但并非全局Reset不同浏览器元素的默认属性有所不同,使用Reset可重置浏览器元素的一些默认属性,以达到浏览器的兼容。但需要注意的是,请不要使用全局Reset:*{margin:0;padding:0;}这不仅仅因为它是缓慢和低效率的方法,而且还会导致一些不必要的元素也重置了外边距和内边距。在此建议参考YUI Reset和Eric Meyer的做法。我跟Eric Meyer的观点相同,Reset并不是一成不变的
阅读全文
摘要:1.技术背景: 系统缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能。缓存设想内存是有限的,缓存的时效性也是有限的,所以可以设定内存数量的大小可以执行失效算法,可以在内存满了的情况下,按照最少访问等算法将缓存直接移除或切换到硬盘上。 Ehcache从Hibernate发展而来,逐渐涵盖了Cache界的全部功能,是目前发展势头最好的一个项目,具有快速、简单、低消耗、扩展性强、支持对象或序列化缓存,支持缓存或元素的失效,提供LRU、LFU和FIFO缓存策略,支持内存缓存和硬盘缓存和分布式缓存机制等特点。其中C
阅读全文
摘要:Hibernate3中取得多层数据的所产生的n+1 selects问题的解决。其实这个问题在Hibernate in Action中已经有很多种解决办法了。但我觉得其中最好的办法是用Criteria的FetchMode来解决,但是Hibernate in Action中写的很不详细。我昨晚试了好长时间来的到答案。下面总结一下。需求这样的,我有四张表(one,two,three,four)从one一直外键关联到four。结构如下现在在Session中得到One,并从One里一直取到Four里的内容。如果简单的用Session.get来实现是这样的。Oneone=(One)session.get(
阅读全文
摘要:如果不使用类库或者没有自己的类库,储备一些常用函数总是有好处的。(10)addEvent网上最流行的版本是Scott Andrew的,据说javascript界曾举行一场比赛(此事件我们可以在Pro Javascript Techniques第100页看到)或浏览PPK的网站,征求添加事件与移除事件的函数,他就是其获奖者。下面就是他的实现:function addEvent(elm, evType, fn, useCapture) { if (elm.addEventListener) { elm.addEventListener(evType, fn, useCapture);//DOM2.
阅读全文
摘要:W3C那帮人的脑袋被驴踢了,直到javascript1.8.1才支持trim函数(与trimLeft,trimRight),可惜现在只有firefox3.5支持。由于去除字符串两边的空白实在太常用,各大类库都有它的影子。加之,外国人都很有研究精神,搞鼓了相当多实现。实现1String.prototype.trim = function() { return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); }看起来不怎么样,动用了两次正则替换,实际速度非常惊人,主要得益于浏览器的内部优化。一个著名的例子字符串拼接
阅读全文
摘要:各种实现方式Pure DOM通常先使用getElementsByTagName("*")取出文档中所有元素,然后进行遍历,使用正则表达式找出匹配的元素放入一个数组返回。由于IE5不支持document.getElementsByTagName("*"),要使用分支document.all以防错误。The Ultimate getElementsByClassName方案,作者为Robert Nyman,05年实现,可见老外许多东西在很早以前就走得很远了。//三个参数都是必需的,查找一网页中5007个类名为“cell”的元素,IE8历时1828 ~ 184
阅读全文
摘要:一下内容是转载的,内容应该出自高性能JavaScript一书中,此书值得一读。学习过程中写的笔记,有误请指正。性能并不是唯一的考虑因素,在对性能要求并非苛刻的环境中,性能也可让位于:团队编码规范,个人编码习惯,代码可读性,模块可扩展性等因素。以下提到的对性能的优化,仅仅提供了从性能的角度去阐释一些设计思路,但实际上,浏览器本身会逐步优化自身的性能问题,而我们那些提高性能的hack,可能会因为浏览器的版本更新,导致成为一种无用的hack,甚至让性能更慢,所以不要无谓的使用一些hack,去优化一些执行次数很少的代码,而降低代码的可读性,或增加代码量,,一句话:如非必要,请勿hack。一 javas
阅读全文
摘要:一、介绍(introduction)1. 目的——HTTP/0.9-〉HTTP/1.0-〉HTTP/1.12. 要求——MUST、REQUIRED、SHOULD3. 术语——连接(Connection)、消息(Message)、请求(Request)、应答(Response)、资源(Resource)、实体(Entity)、表示方法(Representation)、内容协商(Content Negotiation)、变量(Variant)、客户机(Client)、用户代理(User agent)、服务器(Server)、原服务器(Origin server)、代理服务器( Proxy)、网关(
阅读全文
摘要:HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的
阅读全文
摘要:版权:JavaIT学习室转载请标明,http://www.javait.org最近发表了几篇文章都是对在使用Struts2框架中的标签进行一些知识点的归纳。今天这篇文章是对s:if标签和s:set标签进行归纳小结。首先,我们先来看看s:if标签的小结(1)、s:if标签是Struts2框架中的控制标签,就是Java中if…else if…else…具有一样的功能,完整格式如下123456789<s:if test="表达式">语句1...</s:if><s:elseif test="表达式">语句2...</s:
阅读全文
摘要:最近在做一个项目时,客户用的是WebSphere6.1.0.15。由于用的是Struts2,于是出现了以下问题。不认从<s:set>标签里读取出来的对象,只认读取出来的参数。如:<s:set name=”secondList” value=”treeSecond.get(#one.modId)”></s:set>treeSecond 的初始化是Map<Integer,List<Object>> ,如果直接用set标签,就无法读取出List<Object>,查找过一些资料,还是未找到所在原因。以下代码是无法读取出Map数据的
阅读全文
摘要:1.第一个例子:<s:select list="{'aa','bb','cc'}" theme="simple" headerKey="00" headerValue="00"></s:select> 2.第二个例子:<s:select list="#{1:'aa',2:'bb',3:'cc'}" label="abc" listKey="k
阅读全文
摘要:1.参考文献原文:http://pf-miles.blog.sohu.com/36688201.html参考:Hibernate tools的hbm2ddl和hbm2java2.概述利用hibernate-Tools里的相关工具类,使得java实体类(POJO)、hbm映射文件、数据库表(Schema)之间可以相互转化。也就是说,只要有其中一样,就可以通过各种途径得到其它两样。如果手里已经有了其中一样东西,要想最快建立起应用的途径自然是通过它来生成其它两样了。后面主要讲的是通过hbm映射文件生成java实体类pojo和数据schema。不过,我想在这里讨论的是那种从无到有,从想法到实现的那种建
阅读全文
摘要:1,支持非rewrite即:http://localhost/index.php/blog/view/5456-asdf.html也可以被正确解析。。-----------------------------------2,增加:绝对地址生成 只要rurl('myFirstRouter', array('id' => '33', 'name' => 'thename'), true);最后多加一个true,默认为false即相对地址。生成绝对地址如:网站根目录/fleaphp/test/blog/vie
阅读全文
摘要:最近做一个公司的业务系统,公司要求能尽可能的与c/s近似,也就是如c/s一样,点击文本框可以弹出此项目的相关内容,进行选择输入。 我使用了弹出窗口,然后在子窗口双击选中项目,把选中的值返回给父窗体。在系统做完了之后,在客户使用的过程,由于客户使用的是512m的内存配置,所以 在打开了30--40个窗体之后,ie的虚拟内存占用量达到近200m,从而使系统变慢,java script的运行也变慢了。在google搜了一下之后,才知道可能是由于ie的内存泄漏引起的。 使用任务管理器,打开一个弹出窗口,ie内存就增加1-3m,然后关闭窗口,有时内存并不释放,有时才释放几十k。看来问题出在了内存释放上.
阅读全文
摘要:先说说什么是内存泄露,在一个进程中,如果某一块内存无法访问,且直到进程结束为止也无法释放,那么就发生了内存泄露。通常这种情况发生在C++之类的手 动管理内存的语言编写的程序中,程序员忘记delete或者free会导致内存泄露。本文主要讨论的是浏览器中的内存泄露问题,也就是说,javascript程序导致的内存泄露。 目前为止最权威的关于浏览器内存泄露的文章应该是以下2篇 分别来自微软的Understanding and Solving Internet Explorer Leak Patterns(中文版)和来自IBM的Memory leak patterns in JavaScript(中.
阅读全文
摘要:在使用Struts2开发Web应用时,如果使用Date类型数据时,Struts2会调用Date转换器来处理页面的Date字符串到Date类型的转换,在阅读了Struts2的Code后,发现Date转换器使用的日期格式都不是中文日期格式,而我们的日期字符串格式为2008-05-26 12:00,当找不到对应的日期格式时,Struts2会用短日期格式来处理(yy-MM-dd),这时如果我们需要长日期格式的数据,在日期转换后是拿不到准确数据的。1、将日期类型改为字符型,在做业务处理时在转换;2、自定义日期转换: xwork-conversion.properties里配 java.util.Dat.
阅读全文
摘要:jpa SQL Error: 17006, SQLState: nullcould not read column value from result set: ID; 列名无效查询语句:String sql = "selectA.SOURCE_CODE from TB_PROSPECT_SOURCES A where Lower(A.SOURCE_CODE) = Lower('"+code+"')";Query query = this.getEntityManager().createNativeQuery(sql);List l =
阅读全文
摘要:如你要查询name等于 yy yy是一个变量名,你不知道yy是大写还是小写对吧 可以这样查询 select × from aaa where Lower(name)=Lower(yy);或者select × from aaa where Initcap(name)=Initcap(yy);
阅读全文
摘要:一.document.all是页面内所有元素的一个集合。例如: document.all(0)表示页面内第一个元素二.document.all可以判断浏览器是否是IE if(document.all){ alert("is IE!"); }三.也可以通过给某个元素设置id属性(id=aaaa),然后用document.all.aaaa调用该元素四.案例:代码1: <input name=aaa value=aaa> <input id=bbb value=bbb> <script language=Jscript> alert(docum
阅读全文
摘要:在页面上加入<s:debug />, 我们就可以查看stackContext的信息其中有一项:Key为com.opensymphony.xwork2.ActionContext.name里面保存的就是actionName直接使用<s:property value="com.opensymphony.xwork2.ActionContext.name" />就可以得到常用例:<s:set name="actionName" value="com.opensymphony.xwork2.ActionContext.na
阅读全文
摘要:1.在原来的窗体中直接跳转用window.location.href="你所要跳转的页面";2、在新窗体中打开页面用:window.open('你所要跳转的页面');window.history.back(-1);返回上一页 3、一些用法按钮式:<INPUT name="pclog" type="button" value="/GO" onClick="location.href='连接地址'">链接式:<a href="javascr
阅读全文
摘要:java.io.CharConversionException: isHexDigit.做ajax传递参数的时候遇到这个异常,在网上找到解决办法,原来我一直没发现原来是 escape带来的错误。下面把解决办法发出来另外感谢提供办法的朋友 忘记你是谁了 但还是谢谢var url = "b.jsp?name=" + escape(u_name);服务端获取:String name=request.getParameter("name");name=new String(name.getBytes("iso-8859-1"));System
阅读全文