Java
文章平均质量分 51
西二旗老司机
软件工程专业,性格开朗、不乏稳重。
展开
-
一致性哈希算法
哈希取余 好吧,我们决定打破这种基于数据项商业逻辑的划分思维,来考虑一种基于 key 的划分方式,这有些类似于后面介绍的数据库水平分区(Sharding)。我们需要设计一种不依赖数据项内容的散列算法,将所有数据项的 key 均衡分配在这三台缓存服务器上。 一个简单而有效的方法是“取余”运算,这就像打扑克时的发牌,让所有数据项按照一个顺序在不同的缓存服务器上轮询,这可以达到较好的相原创 2012-01-30 16:54:42 · 2802 阅读 · 0 评论 -
String Stringbuffer和StringBuilder
1. String 类 String 类是属于不可变类,任何对String的操作都会引起新的String对象的产生 String a = "a"; //假设a指向地址0x0001 a = "b";//重新赋值后a指向地址0x0002,但0x0001地原创 2010-12-23 22:37:00 · 419 阅读 · 0 评论 -
用link方式安装eclipse插件
eclispe想必大家都很熟悉了,一般来说,eclipse插件都是安装在plugins目录下。不过这样一来,当安装了许多插件之后,eclipse变的很大,最主要的是不便于更新和管理众多插件。用links方式安装eclipse插件,可以解决这个问题。 当前配置eclipse3.原创 2011-09-05 16:46:13 · 592 阅读 · 0 评论 -
log4j 连接数据库
表结构: create table log4j_messages ( log_id serial not null, message varchar(2000), classtype varchar(255), priority var原创 2011-09-01 17:32:42 · 1084 阅读 · 0 评论 -
SPRING中AOP应用3种方法
<br /> <br />spring开发aop应用有三种方法: 一:Spring 1.2版本中通过ProxyFactoryBean来实现aop,即通过动态代理来实现的,Aspect必须继承MethodBeforeAdvice,MethodAfterAdvice等 <!--被代理的对象--> <bean id="man" class="Man"> <property name="name"> <value type="java.lang.String">张三</value> </property转载 2011-05-10 16:45:00 · 947 阅读 · 0 评论 -
Spring AOP的应用
<br /><br />http://blog.csdn.net/ganglong99/archive/2009/02/27/3942726.aspx<br /> <br />在实际的应用程序开发中,经常需要在一个服务流程中插入一些与业务逻辑无关的系统服务逻辑(最常见的就是记录日志,权限检查等),如果把所有这些与业务逻辑无关的服务与业务逻辑编织在一起,就会使业务逻辑对象的负担加重,因为它不但要具有业务逻辑的功能,还带有例如记录日志等其他功能,这样就容易产生对象的职责混淆。<br />为了避免对象职责的混淆,转载 2011-05-10 17:12:00 · 561 阅读 · 0 评论 -
struts2 Action学习
<br /> <br />动作类的概念及作用<br /> <br />Struts2中的动作类就是普通的Java类<br />创建各种动作是Struts2应用程序开发工作中最重要的任务<br /> <br /> <br /> <br />动作类需遵守的规则<br /> <br /> <br />1. 遵守JavaBeans属性名的命名规则<br />2. 必须有一个不带任何参数的构造器(默认的构造器也行!!!!)<br />3. 每个动作类至少有一个方法供Struts在执行这个动作时调用(通常默认为exec原创 2011-02-23 19:48:00 · 756 阅读 · 0 评论 -
Java反射
<br /><br />Class class = Class.forName(str);<br /> <br />Object obj = class.newInstance();<br /> <br />Constructor[] constructors = class.getDeclaredConstructors(); //得到构造方法<br /> <br />// Constructor constructor = class.getDeclaredConstructor(new Class[原创 2011-02-23 15:08:00 · 534 阅读 · 0 评论 -
struts.xml 中的几个元素
<br /> <br />Struts配置文件<br /><br /><br />struts.properties<br />default.properties<br />适用于绝大多数应用程序的标准化设置<br />可选的,在想覆盖默认设置时才创建<br /> <br />struts.xml<br />struts-default.xml<br />对应用程序里的各个动作(Action)进行配置<br /> <br />package元素<br /><br /><br /> <br />出于模块化的原创 2011-02-23 15:32:00 · 593 阅读 · 0 评论 -
eclipse插件地址收集
反编译插件:http://java.decompiler.free.fr/?q=jdeclipseSVN插件: http://subclipse.tigris.org/update_1.2.x原创 2011-03-08 15:43:00 · 1054 阅读 · 0 评论 -
servlet中得到请求路径和参数
得到路径: request.getRequestURI(): 得到参数: request.getQueryString() :例如 http://localhost:8080/test/test.jsp?arg=1&id=2路径:/test/test.jsp参数:arg=1&id=2String uri = request.getRequestURI()+ (request.getQueryString() == null ? "" : "?"+ request.getQueryString()); 为了不原创 2010-11-16 14:51:00 · 3857 阅读 · 0 评论 -
几对集合类的比较
在进行Java开发时,JDK已经为我们提供了集合类。下面分别介绍: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakH转载 2011-09-22 15:20:27 · 381 阅读 · 0 评论 -
使用JDBC时Class.forName()的作用
使用JDBC时,我们都会很自然得使用下列语句: Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://127.0.0.1/test?useUnicode=true&charac转载 2011-09-22 15:44:54 · 80 阅读 · 0 评论 -
Log4j——JAVA系统日志
系统日志的概念及作用 日志系统作为一种应用程序服务,对于跟踪调试、程序状态记录、崩溃数据恢复都有着重要的作用 常用Java日志系统 Log4J 最早的Java日志框架之一,由Apache基金会发起,提供灵活而强大的日志记录机制。 JDK1.4 LoggingFramework 继Log4J之后,JDK标准委员会将Log4J的基本思想吸收到JDK当中,在JDK1.4中发布了第一个日志原创 2011-02-28 16:10:00 · 19386 阅读 · 1 评论 -
java regex
import java.util.regex.*; public class Main { public static void main(String[] args) throws Exception { String text = "test a=\"1\" b=\"2\" c=\"3\" bar d=\"4\" e=\"5\""; System.out.println原创 2012-07-04 14:56:51 · 909 阅读 · 0 评论 -
TOMCAT 配置文件
首先,看一下tomcat的目录结构: bin 存放启动和关闭tomcat脚本 conf 包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml work 存放jsp编译后产生的class文件 webapp 存放应用程序示例,以后你要部署的应用程序也要放到此目录 logs原创 2012-04-28 10:48:52 · 7780 阅读 · 0 评论 -
MyEclipse启动故障-Initializing Java Tooling
右下角提升“Initializing Java Tooling,进度1%”,而且长时间进度不变。 是由于JDK版本找不到造成的。 解决方法: 1、找到设置面板Window-Preferences-Java-Installed JREs,删除不存在的JDK; 2、增加已安装的JDK; 3、重新配置Tomcat(或其他容器)地址,包括JDK; 4、将MyEclispe强行关闭,通过Wind原创 2012-02-01 12:49:48 · 4020 阅读 · 0 评论 -
volatile的原理与技巧
volatile, 用更低的代价替代同步 为什么使用volatile比同步代价更低? 同步的代价, 主要由其覆盖范围决定, 如果可以降低同步的覆盖范围, 则可以大幅提升程序性能. 而volatile的覆盖范围仅仅变量级别的. 因此它的同步代价很低. volatile原理是什么? volatile的语义, 其实是告诉处理器, 不要将我放入工作内存, 请直接在主存操作我.(工作内转载 2012-01-13 11:27:32 · 655 阅读 · 0 评论 -
正则表达式语法
一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 这里有一些可能会遇到的正则表达式示例: Visual Basic Scripting Edition VBScript 匹配 /^\[ \t]*$/ "^\转载 2012-01-12 11:08:30 · 551 阅读 · 0 评论 -
java任务调度之Quarts
import java.util.ArrayList; import java.util.Date; import java.util.List; import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; impo原创 2011-12-05 19:55:09 · 1812 阅读 · 0 评论 -
java常量池——String
1. 首先String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。 2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null; 3. String str=”kvill”; String str=new String (“kvill”);的区别: 在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简原创 2010-12-26 22:13:00 · 593 阅读 · 0 评论 -
Java常量池
<br /> <br />Java的8种基本类型(Byte, Short, Integer, Long, Character, Boolean, Float, Double), 除Float和Double以外, 其它六种都实现了常量池, 但是它们只在大于等于-128并且小于等于127时才使用常量池。<br />由如下例子可以看出:<br /> <br /> public static void main(String[] args) { Integer a = 127; Integer b =原创 2010-12-26 22:12:00 · 1301 阅读 · 0 评论 -
el自定义函数
这个有点小麻烦,配的东西有点多,简单记录一下建立流程 先写一个普通的java类,里面要在el中调用的函数要静态公有,比如: package test; public class ELFTests { public static String add(int x,int y) { return (x + y) + ""; } public static String sub(int x, int y) { return (x - y) + ""; } //此方法无用原创 2010-12-26 08:34:00 · 993 阅读 · 0 评论 -
基于J2EE轻量级容器构件框架四、异常处理
Java提供了两类主要的异常:runtime exception和checked exception。所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从Java.lang.RuntimeException或java.lang.Error类衍生出来的。从逻辑的角度来说,checked exceptions和runtime exception是有不同的使用目的的。checked exception用来指示一种调用方能够直接处原创 2010-12-15 13:23:00 · 537 阅读 · 0 评论 -
基于J2EE轻量级容器构件框架六、数据bean(DataBean)
Data Bean 在本框架中有Value Object、View Object、BO、Java Bean、POJO等多种身份和用途。DataBean是个普通的JavaBean,作为POJO通过O/R Mapping来将数据固化到关系数据库或其它存储介质中;作为Value Bean可以将数据在各层之间互相传输;作为View Object帮助JSP页面将数据传输并显示出来;作为BO与service层的Manager们分别具有客观实物类的属性部分和行为部分,这样分离可以使服务层更好的分离出来并提供基于接口定义的原创 2010-12-15 13:28:00 · 766 阅读 · 0 评论 -
基于J2EE轻量级容器构件框架三、控制器部分
<br /><br /><br />controller包提供了三个主要功能:<br />如下图:<br /><br /><br />1、 mvc的主控制servlet<br />Main Controller类提供了总体控制作用,所有的请求都先映射到此类上,然后在统一分发到各个部分控制类。由于servlet是支持多线程的,所以性能是可以保证的。<br />MainController类继承于HttpServlet类,主要方法有:<br />1) init()方法,初始化方法,在此方法里面主原创 2010-12-15 13:22:00 · 396 阅读 · 0 评论 -
基于J2EE轻量级容器构件框架二、总体介绍
<br /><br />利用此框架开发主要将代码分为三层,即控制层(Command),业务逻辑层(Service)和数据访问层(DAO),command代码只关注于页面跳转逻辑关系,收集请求数据,转发请求及最后跳转到指定的显示页面(JSP);Service主要关注于页面逻辑,客户的需求转化为实际的业务逻辑就由Service层来实现,其中权限事务日志等不是纯业务的逻辑交由AOP的专门程序处理,使开发人员关注点聚焦而不会被繁琐的其它事情所影响效率;DAO层主要完成业务逻辑中需要与数据库间交互的部分代码,主要是跟转载 2010-12-15 13:21:00 · 447 阅读 · 0 评论 -
JSP设计模式 [转载]
<br /><br />一:介绍 <br />记得初学jsp的时候,总喜欢把他和asp,php去比较,也习惯于使用asp的开发模式去写jsp <br />后来才发现这真是很傻的做法,其实jsp一出了来就已经用MVC模式了。下面我就简要说说 <br />jsp设计使用MVC来设计。<br /> <br />二:MVC介绍 <br />MVC其实是模、视图、控制的缩写,也就是说在使用jsp时,有相应的文件去实现相应的操作 <br />通常jsp只负责view也就是只负责显示页面。业务逻辑等有bean(ejb)去转载 2010-10-23 18:43:00 · 421 阅读 · 0 评论 -
java之上传文件
<br />Book book = new Book(); String serverPath = ((ServletConfig)request.getAttribute("servletConfig")) .getServletContext().getRealPath("/"); String encoding = request.getCharacterEncoding(); boolean isMulti = ServletFileUpload.isMult原创 2010-12-08 19:55:00 · 359 阅读 · 0 评论 -
java之上传文件
Book book = new Book(); String serverPath = ((ServletConfig)request.getAttribute("servletConfig")) .getServletContext().getRealPath("/"); String encoding = request.getCharacterEncoding(); boolean isMulti = ServletFileUpload.isMultipartC原创 2010-12-08 19:55:00 · 449 阅读 · 0 评论 -
[Jakarta Commons] 使用LRUMap
<br />http://www.blogjava.net/zJun/archive/2006/07/31/61015.html<br />使用过开源缓存包(如:EHCache)都知道,缓存策略中主要分为FIFO,LRU,LFU等几种。而Jakarta Commons中提供的 org.apache.commons.collections.map.LRUMap 可用来保存最近使用的几条记录,提供了LRU(Least Recently Used)缓存策略的实现。<br />具体使用方法如下:<br /> imp原创 2010-12-01 14:52:00 · 907 阅读 · 0 评论 -
带整理
private static Map actionMap = new HashMap(); static { actionMap.put("doShowMain", new showMainAction()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String result = null;原创 2010-12-01 15:06:00 · 362 阅读 · 0 评论 -
大型门户网站实现的十四大技术
<br /><br />一、全文搜索<br />Lecene框架<br />二、缓存<br />实现页面级的URL缓存<br />三、生成静态文件<br />比如说,一个首页可能会员由多个部分组成,每个模块生成一个静态文件,然后才用服务器端包含SSI技术进行组装,其默认的后缀是.shtml<br />四、静态文件分布存储于独立的服务器<br />CSS,JS,图片,文件等,用一个Apache服务器来处理请求<br />五、分布式开发<br />各服务器间的数据同步,像新浪一样发区域的服务器数据的同步;便于使转载 2010-11-29 22:19:00 · 626 阅读 · 0 评论 -
基于J2EE轻量级容器构件框架五、事务的AOP处理
权限、事务、日志处理如果混杂在业务代码之中会使整个代码变得非常复杂而且可读性很差,难以修改重构。面向对象的分析和设计引入了继承、抽象和多态等概念,由此为我们提供了降低软件复杂性的工具。但是,开发人员在软件设计过程中仍然经常会面对无法用面向对象软件开发技术轻易解决的问题。这些问题之一就是如何处理应用程序中的横切关注点(Cross-cutting concerns)。1、横切关注点关注点就是设计人员感兴趣的某一概念或区域。例如,在一个订货系统中,核心关注点可能是订单处理和生产,而系统关注点可能是事务处理和安全管原创 2010-12-15 13:26:00 · 469 阅读 · 0 评论 -
基于J2EE轻量级容器构件框架七、系统初始化服务和过滤器配置
<br /><br />服务初始化过程<br /><br /><br /> 系统启动时初始化两部分,一是系统服务,二是系统过滤器,框架定义了系统服务和过滤器的接口允许后期根据实际业务实现新的服务和过滤器并配置部署到系统中。<br /> 初始化服务的配置<br />配置信息如下:<br /><system-config name="services"><br /> <item name="condition"<br /> v原创 2010-12-15 13:29:00 · 527 阅读 · 0 评论 -
Servlet API——Servlet接口的简述
<br /><br />Servlet接口的简述:<br /> 定义了所有servlets对象都必须实现的方法。<br /> 一个servlet就是一个在Web服务器运行的小Java程序,Servlets从Web客户端接收请求并产生响应,通常使用HTTP协议。<br /> 实现这个接口,你可以写一个普通的servlet扩展javax.servlet.GenericServlet类或者写一个HTTP Servlet扩展javax.servlet.http.HttpServlet类。<br /原创 2010-12-25 20:52:00 · 858 阅读 · 0 评论 -
Servlet API——GenericServlet类的简述
<br /><br />GenericServlet类的简述:public abstract class GenericServlet extends java.lang.Object <br />implements Servlet, ServletConfig, java.io.Serializable<br />java.lang.Object<br /> |<br /> +--javax.servlet.GenericServlet<br />父类/接口:java.io.Serializable原创 2010-12-25 20:44:00 · 691 阅读 · 0 评论 -
java习题
2.1. Given:1. enum Animals{2. DOG(“woof”),CAT(“meow”),FISH(“burble”);3. String sound;4. Animal(String s){ sound = s;}5. }6. class TestEnum{7. static Animal a;8. public static void main(String[] args){9. System.out.println(a.DOG.sound +” ”原创 2010-12-26 21:26:00 · 993 阅读 · 0 评论 -
Java过滤器
一个过滤器是一个可以传送请求或者修改相应的对象。过滤器并不是Servlet,它们并不实际创建一个请求。它们是请求到达一个Servlet前的预处理程序,在相应离开Servlet后的后处理程序。一个过滤器能够做如下的工作:(1)在一个servlet被调用前截获该调用(2)在一个servlet被调用前检查请求(3)修改在实际请求中提供了可定制请求对象的请求头和请求数据(4)修改在实际响应中提供了可定制响应对象的响应头和响应数据(5)在一个servlet被调用之后截获该调用一个过滤器实现java.servlet.F原创 2010-12-25 21:10:00 · 2183 阅读 · 0 评论 -
servlet生命周期
Servlet的生命周期分为四个阶段1,创建Servlet对象,通过服务器反射机制创建Servlet对象,第一次请求时才会创建。(默认)2,调用Servlet对象的init()方法,初始化Servlet的信息,init()方法只会在创建后被调用一次3,响应请求,调用service()或者是doGet(),doPost()方法来处理请求,这些方法是运行的在多线程状态下的。4,在长时间没有被调用或者是服务器关闭时,会调用destroy()方法来销毁Servlet对象。可以通过web.xml文件可以配置Servl原创 2010-12-25 20:56:00 · 485 阅读 · 0 评论