(入门)什么是AOP?什么是代理模式?怎么设计日志拦截器?

 什么是AOP(Aspect Oriented Programming)?  面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。  主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。  主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改  变这些行为的时候不影响业务逻辑的代码。  AOP的底层实现技术是JDK动态代理。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式(GoF强调的是接口或抽象类在实际案例中的灵活应用和智慧)的延续,设计模式孜孜不倦追求的是调用者和被调用者之...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

CakePHP cache helper

CakePHP中缓存引擎的分类:1.Filestorageengine文件缓存是cake默认使用的缓存引擎,它将文件写入文件系统,并且包括多个可选参数与预设值。2.APC(http://pecl.php.net/package/APC)APC缓存器除了添加XCache机器码cache引擎。3.Xcache(http://xcache.lighttpd.net/)PHPopcode缓存器除了添加XCache机器码cache引擎,还需要输入用户名、密码来正常工作。4.Memcache(http://www.danga.com/memcached/)Memcache一起工作的memcaching服务器允许你创建一个缓存对象在系统内存中。 1.Cakephp缓存引擎设置:setConfigure::Cache.checktotrueincore2.控制器中引用cache:CacheingintheController:var$helpers=array('Cache');3.设置$cacheAction变量设置4.标示不缓存部分标记:<cake:nocache>…<...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

CakePHP中使用TinyMCE编辑器

TinyMCEEditor小巧实用,是网页文章编辑器之首先,最近在用CakePHP做一个小项目正好用到,记录一下。首先下载TinyMCE,并把压缩包内tinymce/jscripts/tiny_mce目录整个拷贝到webroot/js目录下,然后在需要用到TinyMCE的Controller里加入,代码如下:var$helpers=Array('Form','Tinymce'); 然后建立views/helpers/tinymce.php文件,内容如下:<?phpclassTinyMceHelperextendsAppHelper{//Takeadvantageofotherhelpersvar$helpers=array('Javascript','Form');//Checkifthetiny_mce.jsfilehasbeenaddedornotvar$_script=false; /***Addsthetiny_mce.jsfileandconstructstheoptions**@paramstring$fieldNameNameofafield,l...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

cakephp学习之数据校验

   我们已经了解cakephp框架可以对数据进行校验,只要我们在对应的model定义$validate即可。可是在控制器中如何来控制数据的校验呢?简单总结如下:   1. 校验之前要先set数据,只要此Model之前被$user引入过即可。 $this->Model->set($this->data);if($this->Model->validates()){………………….}else{………………….}   model的validates方法对数据进行校验,如果校验成功则返回true,否则返回false.同时将出现的错误信息保存在validationErrors变量中,可以通过判断validationErrors变量的值是否为空来确定字段信息是否校验通过。   2. Validates方法会调用invalidFields方法,它会生成model的validationErrors属性。invalidFie...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

CakePHP学习笔记

    自己在工作当中从简单应用到初步掌握CakePHP框架,觉得有很多点是需要刚刚接触Cake这块大蛋糕的人所应该注意的,于是将平日里积累下来的小问题总结一下,希望对大家有所帮助: 1.CakePHP系统中cake、vendors保持默认,不可随意修改;项目开始时首先要编辑配置app/config/core.php与database.php文件;2.Cake开发为MVC模式,要将应用文件添加到app下的M(Models)、V(views)、C(controllers)文件夹下;3.数据库表命名不能与cakephp系统冲突,如objects,information均不可取;表中字段id,外键host_id;4.form表单的创建:$form->create(string$model=null,array$options=array());  参数可以自选5.视图文件名不能为大写,如:auditRefuse.ctp它会解释为:audit_refuse.ctp.6.在某一具体的action函数中设置自身应用的lay...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

cakephp学习之翻页查询给条件

cakephp学习之翻页查询给条件   在应用cakephp框架时,带给我们的便利之处,我在此不必赘述,但要修改起来,对于新手来说,还真的有种无从下手的感觉。就翻页功能而言,一般是在controllers控制器中定义: var$paginate=array('School'=>array('limit'=>8,'order'=>'createtimedesc')); 在views视图页面中使用即可: <?phpecho$paginator->first('首页');echo$paginator->prev('上一页');echo$paginator->numbers();echo$paginator->next('下一页');echo$paginator->last('尾页');?>     这样的展示无论功能还是效果,看起来都很酷。可是当我们要带着传递查询条件(如:keyword...)怎么办? 这就需要-...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

cakephp习之传递多个参数

    传递多个参数    在cakephp框架具体应用的过程中,我们会发现很多情况下传递一个参数已不能满足我们的需求,这就面临着多个参数传递问题。    在views下的ctp页面中: 方式一:array('action'=>'/edit_teacher_center/'.$id.'/'.$host_id);方式二:$html->link('编辑',array('url'=>'/departments/edit_department_center?id='.$id.'&host_id='.$hostid)).也可写成:$html->link('编辑',array('action'=>'edit_teacher_center',$id,$host_id)).     则在Controllers中对应函数接收时:functionedit_teacher_center($id...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

cakephp习之数据库表修改更新问题

    数据库表修改更新问题   做项目过程中,由于客户需求的变更,项目程序也要随着做相应改动。  记得有一次的项目基于cakephp框架,连接mysql数据库。是将一个教师表(teachers)中的所属学校字段由school_id(int11)改为school_name(varchar20),当项目代码修改完毕后,运行程序总是出错,很是影响心情。当时便利用代码搜索工具进行搜索school_id,发现在app/temp/cache/models/目录下对应的数据表生成的临时文件中还存在school_id,而未更新为所要求school_name,于是将其删除,再次运行,程序就无误了。   在app/temp/cache/models/目录下的对应数据表文件是开始运行时生成的,一般不会随程序的修改而改变,就会产生令人感觉莫名其妙的错误。将其删除后,再次生成的就为最新文件,与修改后的程序相一致。    以上问题是由于框架缓存所致的,及...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

cakephp习之自定义全局变量进行控制

    前段时间的项目终于接近尾声了,这才有时间总结一下自己在应用cakephp过程中的细节问题。    自定义全局变量进行控制    当我们所写的程序不只是验证或测试演示而用时,那我们就需要自定义全局变量进行控制,这样会增强项目代码的整洁性,同事也为今后项目的维护工作打下了很好的基础。    一般我们在app/config/bootstrap.php文件中自定义全局常、变量。常量定义格式: if(!defined('GRID_ROW_NUM')){define('GRID_ROW_NUM',20);} 变量定义格式: if(!empty($total)){global$total;$total=20;} 这样一来,我们在对应的views文件中进行调用就可以了,维护起来更容易,只需要在此改一处即可。 近期本人开通了微信订阅号“CakePHP学习”,欢迎大家的关注。 ...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

php_screw 1.5:php加密: 安装与使用

   最近想把接口PHP程序源文件加密一下,由于ZendGuard收费原因,选择使用php_screw进行加密,参考网络内容,进行了尝试,在此记录一下。   php文件通常以文本格式存贮在服务器端,很容易被别人读到源代码,为了对源代码进行保护,可以采用对源代码进行加密的方式.要实现该功能需要两部分:  一是加密程序,实现对PHP文件的加密.另一个就是对加密过的PHP文件进行解析,以得到运行结果.前者的实现比较简单,就是一程序而已.后者的实现大部分都是通过phpmodule的形式来实现的.  php_screw(螺丝钉)可以实现以上的功能.最新版本是1.5,可以在sourceforge上下载.  安装:  安装的目的其实就是产生两个文件:一个是用于加密PHP文件的screw,另一个就是php加载的解析模块php_screw.so 1.将源代码包展开,并进入该入目录:2.执行phpize,就会在该目录下产生一个configure3.然后,运行...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

利用PHP扩展trie_filter做敏感词过滤

PS:原创文章,如需转载,请注明出处,谢谢!    本文地址:http://flyer0126.iteye.com/blog/1931212    早就想研究下敏感词过滤问题,今天有些时间,正好实践一下。   1.安装:libdatrie(http://linux.thai.net/~thep/datrie/datrie.html#Download)    tarzxflibdatrie-0.2.4.tar.gzcdlibdatrie-0.2.4./configure--prefix=/usr/localmakemakeinstall     2.安装trie_filter扩展(https://code.google.com/p/as3chat/downloads/detail?name=trie_filter-2011-03-21.tar.gz)tarzxftrie_filter-201...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

CSS实现单行文本溢出显示省略号

p{width:100px;//设定宽度//以下三个属性设置均必不可少white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}css样式设置如上...

HTML导航框架实现

导航栏界面(html_contents.html)<!DOCTYPEhtml><html><head><metacharset=”utf-8”><title>框架列表</title></head><body><ul><li><ahref="frame_a.html"target="showframe">Frame_a</a></li><li><ahref="frame_b.html"target="showframe">Frame_b</a></li><li><ahref="frame_c.html"target="showframe">Frame_c</a></li></ul></body></html>框架a(frame_a.html)<!DOCTYPEhtml>...
代码星球 代码星球·2020-03-29

JavaScript设计模式-组合模式(表单应用实现

书读百遍其义自见《JavaScript设计模式》一书组合模式在表单中应用,我问你答答案。注:小编自己根据书中的栗子码的答案,如有错误,请留言斧正。另:如有转载请注明出处,谢谢啦<!DOCTYPEhtml><html><head><title>组合模式-表单实现</title><metacharset="utf-8"><styletype="text/css">#FormItem{width:400px;}</style></head><body></body><scripttype="text/javascript">//原型式继承functioninheritObject(o){//声明一个过度对象functionF(){};//过度对象的原型继承父对象F.prototype=o;//返回过度对象的一个实例,该实例的原型继承了父对象returnnewF();}functioninheritPrototype(subClass,superCla...

thinkphp结合swagger自动生成接口文档,附案例使用

1、swagger安装去这里下载https://github.com/swagger-api/swagger-ui下载完成之后,将文件夹放到你的网站根目录上面,例如我是放在我wamp下面的www目录。接着找到dist目录,打开index.html把其中的那一串url改成自己的比如http://localhost/tp/public/swagger.json注意这个url就是后面swagger.json的路径;如果你想支持中文在index.html中加上<scriptsrc='lang/translator.js'type='text/javascript'></script><scriptsrc='lang/zh-cn.js'type='text/javascript'></script>然后打开URL输入http://localhost/swagger-ui/dist/index.html就可以看到前端界面了,应该是没内容的,因为还没生成swagger.json,生成好之后你设置的URL就起了作用。swagger.json我是放在tp框...
首页上一页...607608609610611...下一页尾页