Java
文章平均质量分 76
cdai
这个作者很懒,什么都没留下…
展开
-
对程序员技术练级攻略的补充
本文地址:http://cdai.sinaapp.com/archives/49,欢迎访问~ 1. 并发编程 随着单机上CPU核数的不断增多,以及互联网中大型网站每天产生的海量数据,并发编程将会成为程序员必不可少的技能。 学习《Erlang程序设计》和Scala,理解函数式编程,搞清Actor模式以及并发编程的消息传递方式。 2. 汇编语言 懂一...原创 2011-11-13 08:54:01 · 289 阅读 · 0 评论 -
【原创】Eclipse vs. IDEA快捷键对比大全
花了一天时间熟悉IDEA的各种操作,将各种快捷键都试了一下,感觉很是不错!于是就整理了一下我经常用的一些Eclipse快捷键与IDEA的对比,IDEA比较惊艳的一些快捷键我都高亮了。想了解其中的神奇,就装一个IDEA亲自尝试下吧!分类功能点Eclipse快捷键IDEA快捷键搜索搜索文本原创 2013-07-27 17:18:24 · 54598 阅读 · 25 评论 -
Beanstalkd 一个高性能分布式内存队列系统
需要一个分布式内存队列,能支持这些特性:任务不重不漏的分发给消费者(最基础的)、分布式多点部署、任务持久化、批量处理、错误重试.....转载:http://rdc.taobao.com/blog/cs/?tag=%E5%86%85%E5%AD%98%E9%98%9F%E5%88%97之前在微博上调查过大家正在使用的分布式内存队列系统,反馈有Memcacheq,Fqueu转载 2013-07-21 22:32:43 · 3001 阅读 · 0 评论 -
定制Maven原型生成项目
1自定义原型1.1创建原型项目要定制自己的原型,首先就要创建原型项目来进行定制:mvnarchetype:create -DgroupId=com.cdai.arche -DartifactId=test-archetype-DarchetypeArtifactId=maven-archetype-archetype 生成项目结构如下:1.2安装原型到本地原创 2013-07-15 20:51:23 · 8505 阅读 · 3 评论 -
Hadoop入门(三):Sqoop和Hive的使用
1安装Hive1.1下载解压wget http://mirrors.cnnic.cn/apache/hive/stable/hive-0.10.0.tar.gztar xzvfhive-0.10.0.tar.gz1.2配置环境变量exportHIVE_HOME=/usr/local/src/hive-0.10.0export PATH=$HIVE_HOME/bin:$PAT原创 2013-06-10 10:35:55 · 17662 阅读 · 0 评论 -
Hadoop入门(一):Hadoop伪分布安装
1安装Hadoop首先解压下载来的hadoop 0.20包到/home/admin目录:tar xzfhadoop-0.20.2.tar.gz 配置Hadoop环境变量:exportHADOOP_INSTALL=/home/admin/hadoop-0.20.2exportPATH=$PATH:$HADOOP_INSTALL/bin 测试下是否安装成功:hado原创 2013-06-10 07:49:17 · 2921 阅读 · 0 评论 -
Jenkins持续集成环境搭建
1部署JenkinsJenkins部署很简单,只需建立一个新应用,将Jenkins的war包部署进去,再分配好权限就可以了。1.1创建应用建立一个新Nginx应用:jenkins.com1.2部署war包上传jenkins.war到/jenkins.com,解压并赋权限:jar –xvf jenkins.warchown -Radmin:admin je原创 2013-06-10 08:07:21 · 17331 阅读 · 3 评论 -
Hadoop入门(二):ZooKeeper单机安装
ZooKeeper安装1下载解压cd /usr/local/srcwget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gztar zxvf zookeeper-3.4.5.tar.gz2配置cd zookeeper-3.4.5cp conf/原创 2013-06-10 07:50:31 · 3271 阅读 · 0 评论 -
Mockito使用
最近用Mockito写了好多测试,之所以选中Mockito,而不是EasyMock,或者JMock,是因为我看了官方的对比文档:Mockito对比EasyMock,从文档中就可以看出来,Mockito的语法很自然,而EashMock之类的什么record,play模型显得有点多余。Mockito的所有功能都在Mockito这个类中,里面的函数按功能可分为几类:1. 参数匹配 — 就是Match转载 2013-03-24 16:55:36 · 10077 阅读 · 0 评论 -
AOP反模式
1反模式AOP用起来真是方便,通过切面分离了关注点,使业务代码变得简单直接,好处多多。但别忘了那句老话:会用锤子了,就看哪哪都是钉子。下面就是有过度设计之嫌,使用AOP反模式的一个例子。 比如现在已有一个ProductDAO保存商品信息的数据访问类,现在要加入一段逻辑,保存商品信息时还要通过SalerDAO多保存一个销售人员信息。想不改变ProductDAO中的遗留代码,使用AOP怎么原创 2013-03-19 10:04:41 · 2522 阅读 · 0 评论 -
Log4j日志文件常用配置
1日志级别热修改 web.xml===============================================================================org.springframework.web.util.Log4jConfigListener log4jRefreshInterval 5000原创 2013-02-15 22:19:27 · 4825 阅读 · 4 评论 -
Groovy安装与入门实例
1 Groovy是什么?来看下官网的介绍:http://groovy.codehaus.org===============================================================================Groovy...· is an agile and dynamic language for the Jav原创 2013-02-07 21:21:47 · 10169 阅读 · 4 评论 -
用Groovy和JFreeChart生成报表
编写一个Groovy脚本,定期执行来生成业务报表。这个脚本主要完成三个动作:1. 通过GroovySql从数据库中取出原始数据2. 使用JfreeChart生成柱状图报表3. 使用Apache的common-mail发送邮件package com.cdai.gchartimport groovy.sql.Sqlimpor原创 2013-02-08 15:34:54 · 3293 阅读 · 0 评论 -
Tomcat6添加MySQL的JNDI数据源
1. 添加JNDI配置文件到工程下<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="h原创 2012-12-21 19:53:28 · 3788 阅读 · 0 评论 -
Maven依赖继承的写法
创建两个项目1. cdai_codebase_parent:其他项目的Maven配置都继承这个项目中pom.xml的定义。2. cdai_codebase_ssh:一个SSH示例项目,继承parent项目中的配置。 首先看cdai_codebase_parent中pom.xml的内容: 通过将packaging属性定义为p原创 2012-12-17 19:36:47 · 15001 阅读 · 2 评论 -
Struts2自定义日期转换器
1. 日期格式转换器自定义日期格式转换器,可以动态调整日期格式,并更新到数据库。 /** * 保存日期格式的基础类。 * * @author daichen * */public class DateConverter extends StrutsTypeConverter { /** * 内存中的日期格式 */ private原创 2012-12-17 19:50:22 · 5532 阅读 · 0 评论 -
Spring中Log4j高级配置
Spring对Log4j支持的入口类是一个ServletContextListener。 Log4jConfigListenerLog4jWebConfigurerLog4jWebConfigurer中有三个主要的属性,它们都是可以在web.xml中配置的: 1. Log4jConfigLocation:Log4j配置文件的位置原创 2012-12-17 19:46:07 · 7352 阅读 · 2 评论 -
深入分析Spring混合事务
在ORM框架的事务管理器的事务内,使用JdbcTemplate执行SQL是不会纳入事务管理的。下面进行源码分析,看为什么必须要在DataSourceTransactionManager的事务内使用JdbcTemplate。1开启事务DataSourceTransactionManager============================================原创 2013-09-14 21:04:11 · 4287 阅读 · 0 评论 -
Spring中Bean多种实现切换方案
一个公共工程中的Spring配置文件,可能会被多个工程引用。因为每个工程可能只需要公共工程中的一部分Bean,所以这些工程的Spring容器启动时,需要区分开哪些Bean要创建出来。另一种场景是:想通过Properties文件中的配置开关,就将Spring配置文件中Bean的实现切换成另一套。 方法一:Qulifier区分Bean1.1应用实例以Apache开源框架Jetspeed原创 2013-09-14 21:11:23 · 7175 阅读 · 2 评论 -
深入剖析Tomcat会话机制
1缓存机制Tomcat默认将Session保存到内存中。但同时,Tomcat也提供了PersistentManager配合不同的Store实现的方式,使Session可以被保存到不同地方(Database,Redis,Memcached等)。 例如下面的配置: <ManagerclassName="org.apache.catalina.session.Pers原创 2013-09-18 22:21:19 · 12467 阅读 · 4 评论 -
GAE上部署PHP应用
现在GAE已经至此java了,但不幸的是PHP任然毫无音讯。但是我们在google官方支持PHP之前我们可以使用基于java的Quercus。Quercus基本上可以100%的支持PHP语言(需要JDK1.5)。现在我们开始用GAE运行PHP:1) 注册一个免费的GAE帐户 。 2) 下载此文件到您的计算机(如果连接失效大家可以搜索phpwithgae便可以下载到它,如还不行就给...原创 2011-03-27 22:28:54 · 335 阅读 · 0 评论 -
Struts 1与2的区别
总结的挺好,转载自 http://topic.csdn.net/u/20090919/16/e12299e5-dd2f-42d7-978d-b4b583e5534a.html Action 类:• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可...原创 2010-05-11 13:48:15 · 110 阅读 · 0 评论 -
Struts2 In Action (5.10)
1. Java Web开发需要跨越的HTTP的两个障碍:无状态、基于文本。 Servlet解决了一些问题,但还不够。 2. 使用框架不开发公司内部框架的其他原因 新招募的技术人员不需要培训,他们已经拥有主流框架的开发经验;主流框架中的问题会不断的修订。 3. Workflow Path的思想 灵活的工作流配置,在Struts 2中就是:可以自...2010-05-10 22:26:33 · 197 阅读 · 0 评论 -
Java程序员的发展方向
一. 架构师 1、主流框架要掌握如(ssh),没事可以了解下jsf,shale,seam,richface,jpa 框架。 2、对于各种缓存的分析利弊,能灵活运用 如memcache,Oscache, 内存数据库timesken,嵌入数据库b-db等。。。。。 3、向网络、通信方面发展,比如说写个类似于mina的框架,写写类似于游戏服务端的东西,自己可以写协议,支持高并发。 4、掌握几种主...2010-05-05 22:31:44 · 323 阅读 · 0 评论 -
好书推荐
一. Java基础Java编程思想:对基础知识讲解比较深入,像容器一章不仅是介绍API还对实现容器的数据结构进行了解析。Core Java:上下两册很厚很全面,其中像JDBC4、操作XML还有一些JDK6特性为《Java编程思想》提供了补充。进阶Java并发编程实践:读了三遍,一些高级同步工具仍旧没有掌握。书的内容非常好。Java多线程设计模式:对上本书的补充,还没看完...2010-04-29 22:21:31 · 284 阅读 · 0 评论 -
那些年我错过的Java
最近在看面向对象设计的书,有了一些新的感悟。于是周末闲来无事,想写个小东西练练手。最近一直用Python,所以想回归一下更面向对象、更“静态”一些的Java。正研究怎么升级到Java 9尝尝鲜,结果发现再有80天Java 11都要发布了!真是山中方一日,世上已千年。才不关注Java没多久,已经快成版本帝了。索性直接上了Java 10,把最近落下的都补上。在这个夏天,补上那些年我错过的Java。...原创 2018-08-26 06:34:20 · 883 阅读 · 0 评论 -
用Netty开发中间件:网络编程基础
跟Netty 4学网络编程《Netty权威指南》在网上的评价不是很高,尤其是第一版,第二版能稍好些?入手后快速翻看了大半本,不免还是想对《Netty权威指南(第二版)》吐槽一下:前半本的代码排版太糟糕了,简直就是直接打印Word的版式似的。源码解析部分的条理性和代码排版好多了,感觉比其他部分的质量高多了。如果你是初学者可能会感觉很详细,几乎每部分都会来一套客户端和服务端的Demo,如果你不是入门原创 2015-08-23 22:24:48 · 7583 阅读 · 4 评论 -
用Netty开发中间件:高并发性能优化
用Netty开发中间件:高并发性能优化最近在写一个后台中间件的原型,主要是做消息的分发和透传。因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本。Netty果然效率很高,不用做太多努力就能达到一个比较高的tps。但使用过程中也碰到了一些问题,个人觉得都是比较经典而在网上又不太容易查找到相关资料的问题,所以在此总结一下。1.Context Switch过高原创 2015-10-08 20:52:23 · 71366 阅读 · 28 评论 -
JVM垃圾回收总结
来自Oracle官方文档,对JVM GC知识整理的清晰易懂,查资料还是看官方的好!1 GC步骤简述步骤1:标记 (Marking)根据对象引用关系,将未被任何对象引用的对象实例标记出来,如下图中的黄色。当堆中的所有对象都要被扫描一遍时(如Major GC),将会非常耗时。步骤2:删除 (Sweeping)Ø 普通删除:直接删除未被引用的对象,之后内存分配器(memory allocator)要持原创 2015-02-28 22:39:56 · 2153 阅读 · 0 评论 -
Mybatis代码自动生成插件使用
1.配置pom.xml添加mybatis-generator-maven-plugin到pom.xml。123456789101112131415161718192021222原创 2013-11-04 21:16:49 · 3685 阅读 · 0 评论 -
Maven原型骨架及常见问题
关于Maven原型工程的制作就不在这里详细介绍了,具体细节请参考之前的文章:定制Maven原型生成项目下面分享制作和使用Maven原型工程时碰到的常见问题,以及原型的上传和使用方法。1.模块路径问题1.1 路径问题在使用原型工程时会碰到下面的错误:12org.apache.m原创 2013-10-30 19:43:59 · 13480 阅读 · 4 评论 -
探索Antlr(Antlr 3.0更新版)
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/dreamhead-logs/10756716.html《探索Antlr》是两年前写的一篇文章,如今,Antlr 3.0已经发布了,有了一些变化,为了反映这些变化,我决定重写这篇《探索Antlr》。探索Antlr(Antlr 3.0更新版) 简介An转载 2013-10-22 19:37:42 · 2579 阅读 · 0 评论 -
Maven2插件开发入门
一、创建Maven项目首先创建一个Maven插件项目,可以手动或使用mvn archetype:create从原型创建。pom.xml配置如下:12345678910111213141516171819原创 2013-10-13 20:02:32 · 2592 阅读 · 0 评论 -
深入剖析Tomcat类加载机制
1JVM类加载机制JVM的ClassLoader通过Parent属性定义父子关系,可以形成树状结构。其中引导类、扩展类、系统类三个加载器是JVM内置的。它们的作用分别是:1)引导类加载器:使用native代码实现,在rt.jar等包中搜索运行JVM所需的类,例如java.lang等包下的类。2)扩展类加载器:负责载入标准扩展目录中的类,例如Sun的JVM的扩展目录是/jdk原创 2013-09-21 16:17:18 · 31947 阅读 · 4 评论 -
Portlet开发入门实例
1原生Portlet开发这是最简单、最本质的开发方式,直接基于Portlet规范定义的接口开发Portlet。优点是贴近底层比较灵活,缺点当然就是所有事情都要自己去做。就好比不用SpringMVC、Struts,直接基于Servlet开发一样。这种方式比较适合自己开发Portlet框架。123456原创 2013-09-21 14:28:52 · 11131 阅读 · 0 评论 -
Tomcat性能优化及常用命令整理
1汤姆猫性能优化1.1连接参数1.1.1默认连接配置默认连接器采用阻塞式 IO,默认最大线程数为200,配置如下: connectionTimeout="20000" redirectPort="8443" URIEncoding="gbk" useBodyEncodingForURI="true" />原创 2013-09-21 15:03:43 · 7169 阅读 · 0 评论 -
RMI方式Ehcache集群的源码分析
Ehcache不仅支持基本的内存缓存,还支持多种方式将本地内存中的缓存同步到其他使用Ehcache的服务器中,形成集群。如下图所示:Ehcache支持多种集群方式,下面以RMI通信方式为例,来具体分析一下Ehcache集群的源码。1服务ProviderEhcache支持两种服务发现方式:一种是通过广播的方式,服务间自动发现,动态更新存活服务的列表;另一种就是原创 2013-09-21 11:50:01 · 12419 阅读 · 0 评论 -
MySQL自动关闭连接导致DBCP报错
长时间不操作页面后,再操作时程序就会报错,异常如下: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failureThelast packet successfully received from the server was 8,064,672 millisecondsago.原创 2012-12-28 20:29:08 · 10672 阅读 · 0 评论 -
Strut2判断是否是AJAX调用
1. AJAX与传统Form表单实际上,两者一般都是通过HTTP的POST请求。区别是浏览器提交Form表单后,期望服务器返回一个完整的HTML页面。而AJAX调用是由XMLHttpRequest对象(不同浏览器可能不一样)发出,浏览器期望服务器返回HTML片段即可,具体是JSON、XML等都没有要求。返回到浏览器后如何使用,也是由JS脚本自己决定的。 2. 请求是不是AJAX原创 2012-12-28 20:10:15 · 3979 阅读 · 0 评论 -
Struts2性能调优拦截器
当我们在工作中需要实现某些小需求时,不妨先进行下简单的调研,看看正在使用的开源框架是否已经具备了我们需要的功能,这样就不用重复发明轮子了。 下面以性能测试为例,看看如何调查Struts2框架是否具备这种功能。1. struts-default.xml因为Struts2的许多核心功能都是基于内部拦截器来实现的,所以我们首先要看看它是否有性能调优相关的拦截器。这就需原创 2012-12-28 20:14:24 · 3313 阅读 · 0 评论