2012-04-25 11:13:32
 关于java的session共享
目前大多数大型网站的服务器都采用了分布式的部署方式,但是session是在服务器端保存的,如果用户跳转到其他服务器的话,session就会丢失,于是就有了分布式系统的session共享问题。
 
session共享有很多解决方法,比较常用的如下:
一、以cookie加密的方式保存在客户端.优点是减轻服务器端的压力,缺点是受到cookie的大小限制,可能占用一定带宽,因为每次请求会在头部附带一定大小的cookie信息,另外这种方式在用户禁止使用cookie的情况下无效.
二、服务器间同步。定时同步各个服务器的session..
类别:未分类|阅读(55)|回复(0)|(0)阅读全文>>

在开发基于 Spring 的应用的过程中碰到了一个让我困惑了好久的问题,我在一个 Service 类的 doSomething1() 方法中通过

this.doSomething2(); 语句调用了同一个类中的 doSomething2 方法,运行时通过调试发现 doSomething1 方法的执行前后正常地执行了自定义的 around 装备,但是在 doSomething2 方法执行前后并未如我所期望的那样执行自定义的 around advice 。今天终于恍然大悟,把它当作笔记写下来。Spring 的代理实现有两种:一是基于 JDK Dynamic Proxy 技术而实现的;二是基于 CGLIB 技术而实现的。今天的目标是探..
类别:未分类|阅读(54)|回复(1)|(0)阅读全文>>
2011-11-23 10:20:55
Joda-Time 简介



既然无法摆脱时间,为何不设法简化时间处理?

J Steven Perry, 首席顾问, Makoto Consulting Group, Inc.

J Steven Perry 的照片

J Steven Perry 是一名软件开发人员、架构师和全能 Java 专家,他从 1991 年起就从事专业的软件开发。他的专业兴趣包括 JVM 的内部工作原理和 UML 建模,以及介于两者之间的所有内容。Steve 编写了从技术文档到 Java 代码等各种内容,并且对教学和培训也充满了热情。Steve 是 Java Management Extensions(O’Reilly)的作者,Java Enterprise Best Practices(O’Re..
类别:未分类|阅读(1)|回复(0)|(0)阅读全文>>
                              一个ssh的架子
先说下这个架子的优点:
一:使用hibernate3的annotation特性,对象免映射.
二:支持freemarker模板语言
三:使用了
hibernate-memcached作为hibernate的二级缓存,不管对对象进行什么样的操作都会自动更新到缓存,数据库压力小
四:使用spring的注释语法,免dao、service配置
五:使用sitemesh统一页面风格.
自带了一个free..
类别:未分类|阅读(200)|回复(0)|(0)阅读全文>>
JAVA获取CLASSPATH路径 与 FreeMarker设置模板路径
2011-02-28 14:08
 
ClassLoader 提供了两个方法用于从装载的类路径中取得资源:



        public URL  getResource (String name);  

        public InputStream  getResourceAsStream (String name);  



       这里name是资源的类路径,它是相对与“/”根路径下的位置。getResource得到的是一..
类别:未分类|阅读(71)|回复(0)|(0)阅读全文>>
23.4 使用拦截器

2009-09-27 15:20 徐林林 清华大学出版社 我要评论(0) 字号:T | T
一键收藏,随时查看,分享好友!


《Java Web编程从入门到实践(15小时高清晰、交互式视频教学)》第23章SSpring的Web架构,本章结合实例讲解了Spring MVC框架的各个组件的使用方法、Spring拦截器和数据验证的使用方法,以及Spring和Struts 2集成的实现方法。本节为大家介绍使用拦截器。
AD:

23.4  使用拦截器
和Struts2一样,Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口。
【示例23-9】HandlerInterceptor接口的代码如下:
package org.springframework.web.servlet;  import Javax.servlet.http.HttpServletRequest;  import Javax.servlet.http.HttpServletResponse;  public interface HandlerInterceptor {      // preHandle()方法在业务处理器处理请求之前被调用      boolean preHandle(HttpServletRequest request, 
HttpServletResponse response,      Object handler)          throws Exception;      // postHandle()方法在业务处理器处理请求之后被调用      void postHandle(              HttpServletRequest request, HttpServletResponse 
response, Object              handler, ModelAndView modelAndView)              throws Exception;      // afterCompletion()方法在DispatcherServlet完全处理完请求后被调用      void afterCompletion(              HttpServletRequest request, HttpServletResponse
response, Object              handler, Exception ex)              throws Exception;   } 
下面对代码中的三个方法进行解释。
preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求request进行处理。如果程序员决定该拦截器对请求进 行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果程序员决定不需要再调用其他的组件去处理请求,则返回false。
postHandle():这个方法在业务处理器处理完请求后,但是DispatcherServlet向客户端返回请求前被调用,在该方法中对用户请求request进行处理。
afterCompletion():这个方法在DispatcherServlet完全处理完请求后被调用,可以在该方法中进行一些资源清理的操作。
下面通过一个例子来说明如何使用Spring MVC框架的拦截器。
【示例23-10】要求编写一个拦截器,拦截所有不在工作时间的请求,把这些请求转发到一个特定的静态页面,而不对它们的请求进行处理。
首先编写TimeInterceptor.Java,代码如下:
package com.examp.ch23;  import Java.util.Calendar;  import Javax.servlet.http.HttpServletRequest;  import Javax.servlet.http.HttpServletResponse;  import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;   public class TimeInterceptor extends HandlerInterceptorAdapter {                                          //继承HandlerInterceptorAdapter类       private int openingTime;            //openingTime 属性指定上班时间      private int closingTime;            //closingTime属性指定下班时间      private String outsideOfficeHoursPage;                                          //outsideOfficeHoursPage属性指定错误                                            提示页面的URL      public void setOpeningTime(int openingTime) {          this.openingTime = openingTime;      }      public void setClosingTime(int closingTime) {          this.closingTime = closingTime;      }      public void setOutsideOfficeHoursPage(String outsideOfficeHoursPage) {          this.outsideOfficeHoursPage = outsideOfficeHoursPage;      }      //重写 preHandle()方法,在业务处理器处理请求之前对该请求进行拦截处理      public boolean preHandle(              HttpServletRequest request,              HttpServletResponse response,              Object handler)      throws Exception {          Calendar cal = Calendar.getInstance();          int hour = cal.get(Calendar.HOUR_OF_DAY);       //获取当前时间          if (openingTime<=hour && hour<closingTime) {    //判断当前是否处于工作                                                            时间段内              return true;          } else {              response.sendRedirect(outsideOfficeHoursPage);  //返回提示页面              return false;          }      }  } 
可以看出,上面的代码重载了preHandle()方法,该方法在业务处理器处理请求之前被调用。在该方法中,首先获得当前的时间,判断其是否在 openingTime和closingTime之间,如果在,返回true,这样才会调用业务控制器去处理该请求;否则直接转向一个静态页面,返回 false,这样该请求就不会被处理。
下面是在dispatcherServlet-servlet.xml中对拦截器进行的配置,代码如下:
<bean id="urlMapping" class="org.springframework.web.servlet.handler.Simple-  UrlHandlerMapping">          <property name="mappings">              <props>                  <prop key="helloWorld.do">helloWorldAction</prop>                  <prop key="login.do">loginController</prop>              </props>          </property>          <property name="interceptors">                                  <!--在interceptors 属性中定义所有的拦截器-->              <list>                  <ref bean="officeHoursInterceptor"/>                                  <!--引用officeHoursInterceptor 拦截器-->              </list>          </property>            </bean>  <!--定义TimeInterceptor拦截器,id为officeHoursInterceptor -->  <bean id="officeHoursInterceptor"       class="com.examp.ch23.TimeInterceptor">      <!--openingTime 属性指定上班时间-->      <property name="openingTime"><value>9</value></property>      <!--closingTime属性指定下班时间-->      <property name="closingTime"><value>18</value></property>       <!--outsideOfficeHoursPage属性指定提示页面的URL-->      <property name="outsideOfficeHoursPage"><value>http://localhost:8080/      ch23/outsideOfficeHours.html</value></property>  </bean> 
可以看出,上面代码用bean标签去定义TimeInterceptor,令其id为officeHoursInterceptor,并给它的3个 属性赋值。在urlMapping中通过<property name="interceptors">去指定officeHoursInterceptor为一个拦截器,读者可以在<list> 和</list>之间定义多个拦截器。
outsideOfficeHours.html的代码很简单,只是输出一句提示语。
运行程序,在浏览器中随便访问一个页面,如果请求的时间在9点~18点之间,则该请求可以被处理;否则,返回一句提示语,如图23-5所示。



 


(点击查看大图)图23-5  请求被拦截效果图



说 明:在第22章中介绍过控制反转是Spring框架的核心思想,即用一个接口去定义一些操作,在接口的实现类中去重写这些操作,然后在Spring的配置 文件中去把该接口的实现类注入到应有框架中,这样就可以通过调用接口去调用接口的实现类。本节讲的拦截器就体现了这种思想,即实现 HandlerInterceptorAdapter接口,重写preHandle()方法并在配置文件中实现TimeInterceptor的注入。这 样当框架调用HandlerInterceptorAdapter时,就可以调用到TimeInterceptor类的preHandle()方法。[/img]..
类别:未分类|阅读(4468)|回复(2)|(2)阅读全文>>
废话少说,先看效果吧:        

 后台任务执行情况: 

添加与修改任务:

按组与任务名称查询
类别:未分类|阅读(282)|回复(9)|(4)阅读全文>>
                      eclipse下svn的分支与合并操作
      之前一直使用"小乌龟"进行分支建立与合并,最近切换到linux下开发,没有"小乌龟"了,只好看下eclipse的svn插件关于分支的建立与合并。
       首先说说创建分支,很简单,不过是浅copy一个trunk目录到branches下即可.如下图所示:
       &..
类别:未分类|阅读(2491)|回复(8)|(2)阅读全文>>
 linux 开机自动启动脚本方法

1)redhat的启动方式和执行次序是:

      加载内核

      执行init程序

      /etc/rc.d/rc.sysinit # 由init执行的第一个脚本

      /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式

      /etc/rc.d/rc.local     #相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中)

   &n..
类别:未分类|阅读(27)|回复(0)|(0)阅读全文>>
 脚本放置在下面的目录
/etc/rc.d/init.d/
例如脚本名称为nagios_httpd
#!/bin/bash
# nagios_httpd a server monitor service.
# chkconfig: 345 35 75
# description: a web server
case "$1" in
start)
/usr/local/apache2_nagios/bin/apachectl start
;;
restart)
/usr/local/apache2_nagios/bin/apachectl restart
;;
stop)
/usr/local/apache2_nagios/bin/apachectl stop
;;
esac
exit 0
chkconfig --list|grep nagios_httpd
chkconfig --add nagios_httpd
chkconfig --levels 235 nagio..
类别:未分类|阅读(151)|回复(0)|(1)阅读全文>>
2010-12-06 10:50:44
 
<!-- - Resin 3.1 配置文件. -->   

<resin xmlns="http://caucho.com/ns/resin" xmlns:resin="http://caucho.com/ns/resin/core">   

   <!-- 加载resin/lib下的所有.jar文件-->   

   <class-loader>   

     <tree-loader path="${resin.home}/lib"/>   

     <tree-loader path="${resin.root}..
类别:未分类|阅读(17)|回复(0)|(0)阅读全文>>
2010-08-31 20:58:11
 
Java 编码规范
2010-05-06 11:12





为什么要有编码规范?编码规范对于程序员而言尤为重要,主要有以下几个原因:






重 要性

一个软件的生命周期 中,80%的花费在于维护。
几乎没有任何一个软 件,在其整个生命周期中,均由最初的开发人员来维护。
编码规范可以改善软件 的可读性,可以让程序员尽快而彻底地理解新的代码。
如果你将源码作为产品 发布,就需要确任它是否被很好的打包并且清晰无误。











简 而言之

代码是写给别人看的!





代码规范是高代码质量和高开发效率的前提。代码规范是团队成员之间无阻碍交流的保证。每个软件开发人员必须一致遵守编码规范。
1. 命名规范
定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。
1.1 包的命名
包名命名必须全部是英文的小写字母,由名词或名词缩写组成。按照国际规例,包的命名由组织性质,组织名称缩写或全名,系统名称组成。比如公司一般用 com,社团用net,非盈利的组织用org。包末端的名称一般是根据包含的类或接口的职责,功能来名称,比如业务逻辑的,可以是service或 manager,具体实现可能是service.impl。包命名的基本原则是能够抽象出包管辖的类的职责和功能。简单的说就是一看包就知道下面的类是做 什么的。
一些常见的包的命名:


org.apache.commons.loggingorg.springframework.daoorg.hibernate


1.2 类和接口的命名
类和接口的名称必须以大写的英文字母开头,必须是名词或名词短语,多个名词存在的时候名词的第一字母大写。禁止在名称中出现形容词、动词和动词衍生 形式,比如DeleteUser,UpdateDClass,GetNode,MyNode,YourTree来命名。类和接口名称要有实际的意义,根据 名称就大概知道这个类的职责是什么。严禁使用Page1,Page2来命名。对于Domain model,直接就是对象的名称,比如Book,Address之类,如果是业务接口,那就是BookManager或者BookService,业务实 现类就是BookManagerImpl或者BookServiceImpl。这里的Impl是Implement的缩写。对于一些工具类,可能是会加上 Utils,比如FileUtils,StringUtils,这些工具类的方法一般都是静态方法,比较著名的 org.apache.commons.lang,下面有很多工具类。如果是异常类,一般都以Exception为后缀,比如 UniqueException,一看名称大概就是这个一个违反唯一约束的异常类。
以下常见的命名方法:


org.hibernate.Criteriajavax.servlet.http.HttpSessionorg.apache.tapestry.util.ContentTypeorg.apache.commons.lang.StringUtilsorg.springframework.dao.DataIntegrityViolationException


1.3 变量的命名
变量以名词或名词短语组成,第一个英文字母必须小写。如果是静态变量,则全部大写,用下滑划线分割。禁止在名称中出现形容词、动词和动词衍生形式。 实例的名称尽量用类的名字或者有意义的英文单词,比如User user 和 UserService userService。严禁使用无意义的字母活数字,如a,b,c,x,y,a1,a2,myNode,myTree来命名。如果是实例结合或数组,那 一般用类名的复数形式或者后缀加上list和map,比如userList,userMap,users,尽量避免直接用map,list作为实例名称。
常见的命名方法:


byte[] bufferpublic static final int INDEX = 0private final boolean isCascadeDeleteEnabled;EntityKey key = new EntityKey()


1.4 参数的命名
参数的名字和变量的命名规范一致。
1.5 数组的命名
数组应该总是用下面的方式来命名: 
byte[] buffer;
而不是: 
byte buffer[];
1.6 方法的命名
方法的命名以动词和动词短语组成,第一个英文字母必须小写,但有一个例如,以is和has为前缀的方法名。方法名尽量让客户程序员看见名称就大概知 道这个方法的行为。Is和has为前缀的方法返回的都是boolean或Booelan.
常见的方法命名:


protected boolean hasPostCommitEventListeners()private static EntityPersister createpublicboolean isAdmin()


2. 文件样式
2.1 Package/Imports
Package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。禁止使用*方式,如 java.io.* 。导入定义应当是类的全称


import java.util.ArrayList;import java.util.Hashtable;


2.2 类和接口
类和接口需要填写注释,一般是用来解释类的职责和使用方法,而且要尽可能的详细。


/** * A class representing a set of packet and byte counters * It is observable to allow it to be watched, but only * reports changes when the current set is complete * @author Ken */public interface DClassDao extends GenericDao<DClass, Long>


2.3成员变量
public 的成员变量必须生成文档。proceted、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释。


/** * Packet counters */protected int[] packets;


2.4构造函数
构造函数应该用递增的方式写(比如:参数多的写在后面)。 访问控制符("public", "private" 等.) 和 任何 "static", "final" 或 "synchronized" 应该在一行中,并且方法和参数另写一行,这样可以使方法和参数更易读。


public CounterSet(int size){ this.size = size;}


2.5方法
接口的方法默认是public,定义接口方法可以不定义访问控制符号。类的方法必须指定访问控制符。所有的方法必须写方法注释,但接口和抽象类的实 现方法可以不写。
3. 编程惯例
3.1 public private final protected使用
任何一个类,接口,方法,变量必须要有访问控制符号,如果是提供给客户程序使用,那么申明为public,如果只是内部过渡行为,那么申明为 private.这里有一个原则,尽量使用private,少使用public.
3.2 代码中不能出现无用的包和类、变量
具体到Eclipse工作区内禁止出现任何红色错误和黄色警告的标记出现。
3.3 禁止在一个Java文件中编写多个类。
内部类和匿名类除外,但建议少用。
3.4 继承一般只能继承抽象类一般不能超过两层继承
继承非抽象类,重载了非抽象方法,在实例的向上转型和向下转型会带来一些意想不到的困扰,建议经验不足者慎用。继承是一种无契约无保证的方法重用, 父类方法行为的改变不会通知到子类和子类的客户程序。多用接口,少用继承。
3.5 if,if-else,if else-if else语句(if, if-else, if else-if else Statements)
if-else语句应该具有如下格式:


if (condition) { statements; } else if (condition) { statements; } else{ statements; }


注意:if语句总是用


"{"和"}"


括起来,避免使用如下容易引起错误的格式:


if (condition) statement;


3.5 while,if, for,相互嵌套的层次不能超过3层


while(true){ if(size > 0){ for(User user : userList){ if(user.name.isEmpty()){ …….. } } }}


3.6 java代码中不能出现SQL和HQL
SQL和HOL在Java代码中很难排版和维护,禁止在代码中出现。


String sql = "select c.* from metaone_dclass ";Session session = getSession(false);Query query = session.createSQLQuery(sql).addEntity(DClass.class);query.setParameter("id", id);return query.list();


3.7 禁止直接在控制台打印。
禁止使用System.out.和System.error.,e.printStackTrace()。请使用Log4j来处理。
3.8 Collection和Map之间尽可能避免相互嵌套,禁止相互嵌套超过一层。


Map<String, Map<? extends Object, Map<Integer, Object>>> authorities = authorization.getAuthorities();


3.9 方法参数的个数禁止超过3个。
错误范例:


public List<DClass> findDClass(String name, List<DAttribute> attributes, Long mid, int firstResult, int maxResults, boolean matchCase)


3.10 import的类不能超过30个。
此项作为建议。
3.11 页宽限制
页宽应该设置为80字符。源代码一般不会超过这个宽度, 并导致无法完整显示,但这一设置也可以灵活调整。在任何情况下,超长的语句应该在一个逗号或者一个操作符后折行。一条语句折行后,应该比原来的语句再缩进 2个字符。
3.12 {} 对限制
{} 中的语句应该单独作为一行. {应当在一行的结束出现,不出现在新行开始,应当在一个新行中开始和结束, 即使代码体中只有一行,也需要使用{}例如, 下面的第1行是错误的, 第2行是正确的:
错误范例


if (i>0) { i ++ };


正确范例


if (i>0) { i ++ };


3.13 类代码长度和方法代码长度
每个Java程序一般不的超过200行,每个Java方法一般不的超过50行。如果超过类超过200行,方法超过50行,那就需要重新审查一下设 计,类的职责是否单一,方法是否承载的过多的功能。臃肿的类和方法的出现,一般都伴随的“相同或相似的代码”出现。如果出现了相同和相似的代码,那么就需 要的相同的代码抽象出来成一个独立的类或方法。
3.14 代码禁止出现TODO
这些代码一般都是IDE自动生成。
4. 注释规范
注释主要是用于描述类的职责,方法的行为。注释应被用来给出代码的总括,并提供代码自身没有提供的附加信息。注释应该仅包含与阅读和理解程序有关的 信息。
禁止在代码中出现“到此一游”的现象,比如在代码中注释“某人在某时做某事”,这部分注释内容应该提交到版本管理工具中。






建 议

尽可能避免注释单行和在方法内部写注释。比如String password;//密码。如果需要注释请重新审视变量的命名。如果需要在方法内部写注释,请重新检查方法的注释是否足够详细或者方法的设计是否存在问 题。










类别:未分类|阅读(166)|回复(0)|(0)阅读全文>>
2010-08-31 20:48:58
 要判断一个程序员是不是好的程序员,主要看他写的代码,因为程序员最重要的事是写代码。
 
即便不去理解代码的意图,只要看一眼,好的程序员写的代码与差的程序员写的代码基本上就可以看出来。好的程序员写的代码,整洁而规范,视觉上自然有一种美感。空白错落有致,注释恰到好处,命名和排版遵守统一的规范。差的程序员写的代码则经常出现过长的函数,前后不一致的命名方式和排版,过深的嵌套结构,非常复杂的表达式,随处可见的数字等毛病。
 
再去粗粗阅读,对好的程序员还是差的程序员就会更有把握。好的程序..
类别:未分类|阅读(45)|回复(0)|(0)阅读全文>>
 
如果这篇文章没有分享给你,那是我的错。

如果这篇文章分享给你了,你却没有读,继续走弯路的你不要怪我。

如果你看了这篇文章,只读了一半你就说没时间了,说明你已经是个“茫"人了。

如果你看完了,你觉得这篇文章只是讲讲大道理,说明你的人生阅历还不够,需要你把这篇文章珍藏,走出去碰几年壁,头破血流后再回来,再读,你就会感叹自己的年少无知。

如果你看完了,觉得很有道理,然后束之高阁,继续走进拥挤的地铁,依然用着自己昨日的观念来思考自己的未来,你的人生也将继续重复着昨日的状况。
..
类别:未分类|阅读(19)|回复(0)|(0)阅读全文>>
http://code.google.com/p/xmemcached/wiki/Spring_Integration
http://code.google.com/p/xmemcached/
类别:未分类|阅读(19)|回复(0)|(0)阅读全文>>
程序员的九重境界,你是第几重?








    第一重:




    在哪本电脑杂志上看见软件工程师这个职业介绍,或者走在大街上看见某某软件培训机构鼓吹培训完就能年薪10万的广告,有些羡慕那些编程序的,自己有些蠢蠢 欲动。










    第二重:




    用控制台或者说SDK之类的东西写了一个“HELLO WORLD!”,感觉编程这个东西,太简单没难度。










    第三重:




    学会了简单的使用某某工具例如VC,知道怎么..
类别:未分类|阅读(115)|回复(0)|(0)阅读全文>>












说是支持1亿pv/天,也许有点夸张,也是为了吸引您能点进来,如果您能认真看完相信也不会让您失望,当然,肯定有很多“高手”会对此会嗤之以鼻,没关系,有很多眼高手低的人总喜欢评论别人却从不会看清自己。
 
如果大家真想支持我,请把该文贴到自己的博客中或者收藏本文,记得包含舍得网(http://www.shedewang.com)的链接。
 
我说的系统主要是构建在hibernate之上的高效数据库缓存系统,其中包含了分布式解决方案,该系统已经应用在舍得网上了,没有发现大问题,本人也相信该系统已经..
类别:未分类|阅读(3)|回复(0)|(0)阅读全文>>
Java多线程编程总结


2007-05-17 11:21:59
 标签:java 多线程    [推送到技术圈]

 





版权声明:原创作品,允许转载,转载时请务 必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/27069





Java 多线程编程总结
 

下面是Java线程系列博文的一个编目:
 
Java线程:概念与原理
Java线程:创建与启动
Java线程:线程栈模型与线程的变量
Java线程:线程状态的转换
Java线程:线程的同步与锁
Java线程:线程的交互
Java线程:线程的调度-休眠
类别:未分类|阅读(34)|回复(0)|(0)阅读全文>>
2010-06-22 11:49:38







Java 线程基础


类别:未分类|阅读(82)|回复(0)|(0)阅读全文>>





各种字符编码方式详解及由来(ANSI,UNICODE,UTF-8,GB2312,GBK) - 日志 - yunlingzhi
2009-01-29 09:53

    一直对字符的各种编码方式懵懵懂懂,什么ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS……是不是看的很晕,假如您细细 的阅读本文你一定可以清晰的理解他们。Let's go!

         

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的..
类别:未分类|阅读(43)|回复(0)|(0)阅读全文>>
2010-06-09 19:38:12




Java 理论与实践: 线程池与工作队列
线程池有助于实现最佳资源 利用率

developerWorks











类别:未分类|阅读(67)|回复(0)|(0)阅读全文>>
2010-04-16 18:48:37
         前段时间有同事推荐了一个screen命令,感觉很受用.今天特意搜了搜资料,学习了一把.
          screen 是一个特殊的模拟终端软件,利用它能在一个终端窗口里模拟出多个终端,并且能分割窗口、类似 VI 的方式搜索和拷贝屏幕输出,最重要的是利用screen,可以让任务后台执行,退出系统,下次登录恢复后跟以前状态一样,但是重启机器之后会消失,不过总而言之还是很方便的.
          首..
类别:未分类|阅读(133)|回复(0)|(0)阅读全文>>
2010-04-16 11:58:42


Linux的screen命令不错,习惯了你会觉得它比windows的任务栏好用多了。下面是我的.screenrc,仅供参考。
#

# ~/.screenrc

#

# 启动时不显示欢迎屏幕

startup_message off

#  定义screen的功能键为Ctrl-Z。向终端输入Ctrl-Z时应按 Ctrl-Z z。

escape ^Zz

# 屏幕缓冲区 1024 行。

defscrollback 1024

# 在最下一行显示窗口列表和时钟

hardstatus on

hardstatus alwayslastline

hardstatus string "%{.bW}%-w%{.rY}%n %t%{-}%+w %=%{..G} %H(%l) %{..Y} %Y/%m/%d %c:%s "

# 关闭错误提..
类别:未分类|阅读(1626)|回复(0)|(0)阅读全文>>
2010-04-08 18:02:15

网络知识是电脑技术的十分重要的分支,学习网络管理的知识需要了解网络部门提供的各种网络设备和基本的应用程序~~~~~再说你要想了解那些网络设备就必须了解网络基础知识~~(不能你在学习网络知识,但是却连最基本的TCP/IP协议都不知道吧~~狂汗……)
要想学好这方面的知识不是短时间内就可以学好的,再说网络知识里面的一些协议也是比较抽象的,由其刚开始学的时候,对于好些协议和一些知识都觉得不能理解~~所以学这方面的知识就应该有足够的耐心~~
如果是在校的学生,如果你的自学能力比较强,而且比较善于自学,那..
类别:未分类|阅读(90)|回复(0)|(0)阅读全文>>
用Gvim建立IDE编程环境 (Windows篇)
转载自:LeeMonCC

说明:本文是作者在完全按照著名的《手把手教你把Vim改装成一个IDE编程环境》一 文,在Windows XP上用gvim建立IDE环境时所作的备忘。
原作地址:http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx。

0.准备软件及插件。
(a)gvim72.exe 地址ftp://ftp.vim.org/pub/vim/pc/gvim72.exe。
(b)vimcdoc-1.7.0-setup.exe 地 址http://prdownloads.sourceforge.net/vimcdoc/vimcdoc-1.7.0-setup.exe?download
(c)ec57w32.zip 地 址http://prdownl..
类别:未分类|阅读(498)|回复(0)|(0)阅读全文>>
 <<   1   2   3   4   5   >>   页数 ( 1/6 )

博客统计信息

用户名:huqilong
文章数:148
评论数:130
访问量:274638
无忧币:462
博客积分:1370
博客等级:5
注册日期:2006-10-10

我最近发表的评论

关于任务调度系统.. 回复
貌似tomcat对这个支持不太好,放res..