2014年2月24日
摘要: log4j里有个Appender:AsyncAppender,这个Appender是用于解决在某一时间里大量的日志信息进入Appender如何去处理的问题。AsyncAppender采用的方案是这样的,以下是AsyncAppender的工作原理图:AsyncAppender采用的是生产者消费者的模型进行异步地将Logging Event送到对应的Appender中。(1)生产者:外部应用了Log4j的系统的实时线程,实时将Logging Event传送进AsyncAppender里(2)中转:Buffer和DiscardSummary(3)消费者:Dispatcher线程和appenders工 阅读全文
posted @ 2014-02-24 21:16 soulspirit 阅读(4086) 评论(1) 推荐(0) 编辑
  2014年2月20日
摘要: Log4j代码随读最近需要用到log4j动态定制Logger的场景,然后加上以前对于这个日志工具拿来就用而不知其原理的原因,所以决定花点时间看下它的源码,如果你还对log4j如何使用感到困惑,那么请首先简要浏览下它的官网http://logging.apache.org/log4j/Log4j总体来说是一个可定制,支持同时多种形式输出日志,并且高度结构化的日志库。可定制,也就是既可以通过log4j.properties或者log4j.xml定义日志输出的级别(Level),形式(Appender)以及文本格式(Layout),也可以通过Logger类或者LogManager类取得Logger实 阅读全文
posted @ 2014-02-20 17:28 soulspirit 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 进行用户跟踪的重要性随着 Web 应用的复杂化,用户在网站上的操作过程日益复杂。网站功能的多样化和交互性的提高为用户提供了多种可能的浏览路径。对于一个复杂的站点,用户在网站上操作的行为模式和操作习惯的分析,会给网站的优化提供基础的数据支持。而从技术上要为这种分析提供支持,就需要记录下每个用户在网站上的操作过程。另一方面,这种数据的记录也有助于解决用户在使用中出现的问题。我们只要知道用户遇到问题的时间和一些基本信息,就可以从日志中查出此用户遇到问题时的操作过程,从而有助于再现用户的出错场景,进而帮助用户解决问题。此外,网站用户的安全审计和分析用户特征的数据挖掘等工作也需要提供一个方法能对用户的网 阅读全文
posted @ 2014-02-20 15:39 soulspirit 阅读(416) 评论(0) 推荐(0) 编辑
  2014年2月18日
摘要: 来自:http://www.blogjava.net/zJun/archive/2006/06/28/55511.htmlLog4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1. 配置文件Log4J配置文件的基本格式如下:#配置根Loggerlog4j.rootLogger=[level],appenderName1,appenderName2,…#配置日志信息输出目的地Appenderlog4j.appender.appenderName=fu 阅读全文
posted @ 2014-02-18 12:58 soulspirit 阅读(251) 评论(0) 推荐(0) 编辑
  2014年1月9日
摘要: http://www.cnblogs.com/aoogur/archive/2009/04/09/1432386.htmlhttp://www.cnblogs.com/aoogur/archive/2009/04/09/1432387.htmlPython已经是3.1版本了,与时俱进更新教程.本文适合有Java编程经验的程序员快速熟悉Python本文程序在windows xp+python3.1a1 测试通过.本文提到的idle指python shell,即安装python后你在菜单看到的IDLE(python gui)在idle里ctrl+n可以打开一个新窗口,输入源码后ctrl+s可以保存 阅读全文
posted @ 2014-01-09 15:58 soulspirit 阅读(250) 评论(0) 推荐(0) 编辑
  2013年12月23日
摘要: 转载自:http://www.cnblogs.com/liuling/archive/2013/08/21/2013-8-21-03.html Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。 读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁;如果你的代码修改数据,只能有一个人在写,且不能同时读取,那就上写锁。总之,读的时候上读锁,写的时.. 阅读全文
posted @ 2013-12-23 13:09 soulspirit 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 1 入门JMS学习笔记(一)——JMS简介安装ActiveMQJMS学习笔记(二)——使用JMS发送和接受text、Map、Object类型的消息 阅读全文
posted @ 2013-12-23 10:33 soulspirit 阅读(143) 评论(0) 推荐(0) 编辑
  2013年11月14日
摘要: If you're usingrender, when the user refreshes the page, it will submit the previous POST request again. This may cause undesired results like duplicate purchase and others.But if you're usingredirect_to, when the user refreshes the page, it will just request that same page again. This is al 阅读全文
posted @ 2013-11-14 11:16 soulspirit 阅读(362) 评论(0) 推荐(0) 编辑
  2013年11月13日
摘要: Router的好处1 能使你的URL更符合REST规范,而不是带着参数的URL2 能让你的View使用Path,而不是直接硬编码3 统一放置,方便管理Router,View的对用关系GET/photosindexdisplay a list of all photosphotos_path GET/photos/newnewreturn an HTML form for creating a new photonew_photo_pathPOST/photocreatecreate a new photophoto_path GET/photos/:idshowdisplay a specif 阅读全文
posted @ 2013-11-13 17:40 soulspirit 阅读(286) 评论(0) 推荐(0) 编辑
  2013年11月12日
摘要: Rails应用一般有三层校验1 在Client端,可以使用JQuery-Validation 框架2 在Controller端,配置Model时的validate,会在Controller调用save,update之前进行校验createcreate!savesave!updateupdate!3 Database,在schema中设置A 校验方法1 校验存在性validates :email,:password, presence: true2 校验字段长度validates :nickname, length: { minimum: 2,maximum:20}3 验证唯一性validate 阅读全文
posted @ 2013-11-12 17:02 soulspirit 阅读(304) 评论(0) 推荐(0) 编辑