
Java
文章平均质量分 74
有点发红
这个作者很懒,什么都没留下…
展开
-
Apache Commons Mail 初步
Apache commons mail 是对java自带的 javax.mail 模块的封装。相比之下,apache-mail 显然要好用得多,不过这两者本质上实际是一样的,apache-mail 实际上就是将 javax.mail 中那些让人烦心的邮件配置封装掉了。如下是 apache-mail 的一些常见用法:1. Maven依赖 org.apache.commons common原创 2016-03-05 15:04:20 · 6965 阅读 · 0 评论 -
小谈Java内存泄露
今天一哥们接到了淘宝的电话面试,其中一题问到Java的内存泄露。面试之后,我们在群里稍微讨论了一下,结果他认为我的看法不对,让我再去看看资料。在网上看了一些资料,并且翻阅了《疯狂Java》中的“内存管理”章节之后,我反而觉得我的看法更加正确了。我的看法是:对于一般的强引用,并不需要特别刻意地去处理它,GC已经能够做得很好了,需要注意的是Java的类定义中隐藏的对象引用。对于Java的内存泄原创 2013-04-19 23:20:20 · 1553 阅读 · 0 评论 -
Spring IoC
1. 装配Bean的方法1) BeanFactory factory = new XmlBeanFactory(new FileSystemResource(“src\\applicationContext.xml”));Object factory.getBean(String beanId);2) ApplicationContext context =ne原创 2013-04-16 22:08:27 · 1891 阅读 · 0 评论 -
Struts2与JSON
1. 必需的库struts2-json-plugin-2.1.8.1.jarjson-lib-2.1.jar版本号可能会有所不同,而且这两个包也是MyEclipse在创建Struts2项目时自带并且已经包含的。2. setter与getterAction类中私有成员变量的setter和getter方法在Struts2框架下会被自动转化成HttpServletReques原创 2013-04-07 16:12:16 · 7837 阅读 · 1 评论 -
Struts2: Request & Response
1. 获取Request和Response的方法1.1. ServletActionContext的静态方法HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();1.2原创 2013-04-03 23:57:25 · 2180 阅读 · 0 评论 -
Struts2不常见问题四则
1. 统一字符集要想不在页面上或者数据库中出现乱码,首先必须统一页面、Struts和数据库的字符集。页面上通常会在如下两种地方设置:charset=utf-8">(html代码) pageEncoding=”utf-8” … %>(jsp代码)Struts必须在struts.xml配置文件中设置:Struts2中struts.i18n.encoding的默认值为ut原创 2013-04-01 21:44:34 · 1387 阅读 · 0 评论 -
《Java核心技术》要点总结:多线程、网络与数据库
多线程在单独线程中运行任务的简单过程:1. 定义一个实现了Runnable接口的类,任务代码写到run方法中2. 创建一个该类的实例3. 将这个实例传递给Thread类的构造体,实例化一个Thread对象4. 通过Thread类的start方法开启线程中断线程:线程会在它的run方法返回时终止尽管现在已经没有强制终止线程的方法,但原创 2012-10-19 23:41:49 · 3791 阅读 · 0 评论 -
《Java核心技术》要点总结:流与文件,泛型与集合
流如何从能够发送字节序列的任何数据源取得输入,如何将输出发送到能够接收字节序列的任何目的地;这些字节序列的源和目的地可以是文件、网络连接甚至是内存块;本质上讲,处理方法是相同的Java中,一个可以读取字节序列的对象称为输入流,可以写入字节序列的对象称为输出流专门处理Unicode字符的流对象类继承自抽象类Reader和Writer,它们的读写操作都是基于双字节的Unicode代码单元原创 2012-10-19 23:39:27 · 1808 阅读 · 2 评论 -
《Java核心技术》要点总结:接口与内部类,异常、日志与断言
接口接口不是类,是一组对类的需求描述,这些类遵从接口描述的统一格式进行定义接口中所有方法自动属于公有,声明时不必用public关键字修饰类实现一个接口,需要:1. 将类用implements关键字声明为实现了给定的接口;2. 对接口中的所有方法进行定义,方法的访问权限需要是public不能使用new实例化一个接口,但是能声明一个接口变量,接口变量必须引用实现了该接口的类的实例i原创 2012-10-19 23:34:27 · 2288 阅读 · 0 评论 -
《Java核心技术》要点总结:基础语法,类与继承
基本数据类型整型:int(4B),long,short,byte 长整型数值后缀L,十六进制数前缀0x,八进制数前缀0 Java没有unsigned类型浮点型:float(4B),double 单精度数值后缀F字符型:UTF-18编码布尔型:true,false 变量变量名必须以字母开头,变原创 2012-10-19 23:30:32 · 2564 阅读 · 0 评论 -
Spring集成AspectJ的注解模式
过去曾经记录过基础的Spring AOP:http://blog.youkuaiyun.com/sadfishsc/article/details/8875110不过在实际工作中,这种非常早期的AOP写法由于比较繁琐,使用得并不多。大多数情况下使用的是spring集成aspectj提供的注解模式的AOP如下是一个简单的例子:1. Maven依赖 org.aspectj aspectjrt原创 2016-03-05 16:54:12 · 3193 阅读 · 0 评论 -
SpringMVC DispatcherServlet 初始化过程
DispatcherServlet extends FrameworkServlet extends HttpServletBean extends HttpServlet初始化:HttpServletBean.init() -> FrameworkServlet.initServletBean -> FrameworkServlet.initWebApplicationContext()原创 2016-03-31 16:35:28 · 1965 阅读 · 0 评论 -
SpringWeb ContextLoaderListener 初始化过程
ContextLoaderListener extends ContextLoader implements ServletContextListenerWebApplicationContext初始化的代码逻辑在ContextLoader中,供实现ServletContextListener接口的contextInitialized和contextDestroyed方法调用初始化原创 2016-03-31 16:37:01 · 2018 阅读 · 0 评论 -
DispatcherServlet与ContextLoaderListener的对比
1. 从DispatcherServlet和ContextLoaderListener的初始化过程可以看出,二者分别会生成一个WebApplicationContext,且以不同的attrName注册到web容器中2. 根据web.xml的加载顺序,listener总是先于servlet进行加载,因此虽然DispatcherServlet和ContextLoaderListener的Web原创 2016-03-31 16:39:07 · 4792 阅读 · 0 评论 -
Spring AOP 初步
1. 面向切面编程(AOP)的概念参见如下链接:http://baike.baidu.com/view/1865230.htm简单地说,AOP就是在程序的纵向流程上添加横向的切面逻辑,相当于给已有的业务逻辑增加额外的功能,而不改动原有的代码。2. Spring中的AOP流程完整的AOP要素包括:切面(Aspect),逻辑(Advice),连接点(Joinpoint)原创 2013-05-02 11:26:55 · 1560 阅读 · 0 评论 -
基于Tire树和最大概率法的中文分词功能的Java实现
对于分词系统的实现来说,主要应集中在两方面的考虑上:一是对语料库的组织,二是分词策略的制订。1. Tire树Tire树,即字典树,是通过字串的公共前缀来对字串进行统计、排序及存储的一种树形结构。其具有如下三个性质:1) 根节点不包含字符(或汉字),除根节点以外的每个节点只能包含一个字符(汉字)2) 从根节点到任一节点的路径上的所有节点中的字符(汉字)按顺序排原创 2013-06-22 21:45:54 · 8291 阅读 · 10 评论 -
Spring Data JPA环境配置
Spring Data JPA项目所需的jar包列表原创 2013-08-09 14:46:18 · 4666 阅读 · 0 评论 -
Spring集成Quartz的简单配置
过去曾经记录过Java定时任务包Quartz的用户:http://blog.youkuaiyun.com/sadfishsc/article/details/20638327不过在实际的工作中,很少会直接用到它。通常都是用的spring-quartz组件,直接通过配置,让spring框架来自动装配如下就是spring框架集成quartz组件,配置定时任务的方法1. Maven依赖 org.s原创 2016-03-05 12:11:32 · 10114 阅读 · 0 评论 -
Apache Commons Digester 初步
Apache Commons Digester是对SAX的封装,用于直接通过XML文件来生成Java类实例通常在使用SAX解析XML的时候,需要覆盖DefaultHandler类的startDocument、startElement、characters、endElement、endDocument等方法。这样编程过于复杂不友好,而且对于不同的XML格式需要编写不同的DefaultHand原创 2015-09-17 15:10:21 · 4079 阅读 · 0 评论 -
Spring MVC集成slf4j-logback
1. Spring MVC集成slf4j-log4j关于slf4j和log4j的相关介绍和用法,网上有很多文章可供参考,但是关于logback的,尤其是Spring MVC集成logback的,就相对少一些了,而且其中一些也有着这样那样的问题。进入正题之前先简单介绍下Spring MVC集成slf4j-log4j的过程,如下:1) 在pom.xml文件中添加slf4j-log4原创 2015-07-31 00:09:48 · 49022 阅读 · 5 评论 -
ConcurrentHashMap、synchronized与线程安全
最近做的项目中遇到一个问题:明明用了ConcurrentHashMap,可是始终线程不安全除去项目中的业务逻辑,简化后的代码如下:public class Test40 { public static void main(String[] args) throws InterruptedException { for (int i = 0; i < 10; i原创 2015-01-04 19:39:39 · 26407 阅读 · 21 评论 -
Drools 6.0入门:时钟实例
关于Drools 6.0的博文,写了很长时间。一方面是最近比较散漫,虽然也学了不点击打开链接少新的东西,但是不太愿意记录下来;另一方面是Drools本身比较繁琐,即便是入门也需要涉及很多内部的东西,越写越觉得动力不足。本文已经是第三次从头开始写的了。首先介绍一下Drools。Drools是一个基于Java实现的规则引擎开源库,由JBoss基金会管理,最新的是6.0.1版本。6.0版本中,Dro原创 2014-04-11 17:04:05 · 27366 阅读 · 12 评论 -
Java任务调度类库Quartz初步
本文基于Quartz 2.2版本,官方地址如下:http://www.quartz-scheduler.org/现在网上关于Quartz的文章,大多都是1.x版本的,但在2.x版本之后,Quartz的语法已经有了很大的不同。其中最主要的一点就是,Quartz废弃了很多类的构造方法,而改为采用这些类的建造者类(Builder)来初始化它们。对于Quartz而言,有三个最为基础的组件:原创 2014-03-06 17:59:55 · 13328 阅读 · 3 评论 -
基于crawler4j、jsoup、javacsv的爬虫实践
1. crawler4j基础crawler4j是一个基于Java的爬虫开源项目,其官方地址如下:http://code.google.com/p/crawler4j/crawler4j的使用主要分为两个步骤:实现一个继承自WebCrawler的爬虫类;通过CrawlController调用实现的爬虫类。WebCrawler是一个抽象类,继承它必须实现两个方法:shouldV原创 2014-03-06 11:59:49 · 22996 阅读 · 9 评论 -
Java ScheduledThreadPoolExecutor延迟或周期性执行任务
原文地址:http://www.importnew.com/7276.htmlJava提供的Time类可以周期性地或者延期执行任务,但是有时我们需要并行执行同样的任务,这个时候如果创建多个Time对象会给系统带来负担,解决办法是将定时任务放到线程池中执行。Java的ScheduledThreadPoolExecutor类实现了ScheduledExecutorServi转载 2013-11-27 09:52:30 · 11573 阅读 · 0 评论 -
从JVM角度看线程安全与垃圾收集
线程安全Java内存模型中,程序(进程)拥有一块内存空间,可以被所有的线程共享,即MainMemory(主内存);而每个线程又有一块独立的内存空间,即WorkingMemory(工作内存)。普通情况下,当线程需要对某一共享变量进行修改时,通常会进行如下的过程:1. 从主内存中拷贝变量的一份副本,并装载到工作内存中;2. 在工作内存中执行代码,修改副本的值;3.原创 2013-08-26 10:04:32 · 4602 阅读 · 0 评论 -
Javassist学习总结
要想将编译时不存在的类在运行时动态创建并加载,通常有两种策略:1. 动态编译2. 动态生成二进制字节码(.class)对于第二种策略,实际上已经有诸多比较成熟的开源项目提供支持,如CGLib、ASM、Javassist等。这些开源项目通常都具备两方面的功能:1. 动态创建新类或新接口的二进制字节码2. 动态扩展现有类或接口的二进制字节码原创 2013-08-16 11:49:08 · 40089 阅读 · 1 评论 -
DOM4J学习总结
之前做HTML的解析的时候用过jsoup,做XML的解析的时候用过SAX。最近在做XML的修改的时候,突然发现,jsoup不太支持XML,而SAX也不支持XML文档的修改。在网上查找了一番之后,发现针对XML,Java有4种技术可以对其进行CRUD:DOM、JDOM、DOM4J、SAX。对这四种技术的比较如下:http://blog.youkuaiyun.com/shijinupc/article/d原创 2013-08-16 10:47:11 · 2750 阅读 · 1 评论 -
Spring Data JPA
原文地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-jpa/从一个简单的 JPA 示例开始本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示例;接着重构该示例,并引入 Spr转载 2013-08-08 17:25:54 · 7852 阅读 · 3 评论 -
JPA概要
JPA定义了Java ORM及实体操作API的标准。本文摘录了JPA的一些关键信息以备查阅。如果有hibernate的基础,通过本文也可以快速掌握JPA的基本概念及使用。Table of Contents1 JPA概述2 实体生命周期3 实体关系映射(ORM)3.1 基本映射3.2 ID生成策略3.3 关联关系3.4 继承关系4 事件及监听5 Query Lan转载 2013-08-06 11:52:19 · 1599 阅读 · 0 评论 -
Spring Bean 创建过程
0. 通常,无论是DispatcherServlet、ContextLoaderListener还是ClassPathXmlApplicationContext,首次实例化bean的入口并不是在每次调用getBean的时候,而是在DefaultListableBeanFactory类的preInstantiateSingletons方法中:当配置文件加载完毕后,会预先将 非abstract、非延迟原创 2016-03-31 16:40:17 · 5913 阅读 · 1 评论