
Java
CrazyCoder2010
这个作者很懒,什么都没留下…
展开
-
第六章 SpringCloud Zuul网关
本章完整源码地址:https://github.com/kwang2003/springcloud-study-ch06.git1.项目概要这一章节的 内容以第五章的代码为基础改造而成https://github.com/kwang2003/springcloud-study-ch05.git。随着微服务数量的增多,系统的复杂性也在增加,通过前几章的学习,我们已经掌握了微服原创 2017-11-06 15:08:51 · 2958 阅读 · 0 评论 -
java远程debug
常常会遇到在应用部署在weblogic,tomcat,jetty等服务器下,而我们的代码却在本地,如何用本地的代码调试远程服务器上的程序呢在web服务器上添加jvm参数,如以下是我们启动jetty服务器的参数,8000代表的是远程debug的端口号java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 -jar原创 2012-05-16 15:20:48 · 2409 阅读 · 0 评论 -
业务层资源国际化处理
用过struts2等mvc框架开发的同学都知道,使用struts2处理国际化的消息非常简单直观,但是mvc框架的定位是在展示层(jsp,action)等,在一个典型的3层结构中,处于最上层的位置,按照分层设计原则,下层组件是不可以调用上层组件的,这样就存在一个问题,我们在业务层中可能也会出现一些需要国际化处理的消息信息,这些信息如何设置呢? 在这篇文章中,我们将借鉴struts2的国际原创 2012-04-23 09:02:45 · 2152 阅读 · 0 评论 -
hibernate根据条件动态组装sql/hql语句(仿ibatis动态查询语句功能)
1.功能需求背景 项目中使用hibernate作为数据持久层框架,主要考虑hibernate在进行一些简单的crud操作时非常便利,不需要和ibatis似的为每个sql操作都写一堆文件,但是同时也带来了一些局限性,如类似ibatis强大的动态查询功能用不了了,但是这个功能在项目中的应用场景又很大,hibernate自身也支持将sql/hql语句写在.hbm.xml映射文件中和元素,但是这个功原创 2012-03-31 09:47:55 · 28011 阅读 · 24 评论 -
jndi配置-各种服务器
#################################jboss##################################java.naming.factory.initial=org.jnp.interfaces.NamingContextFactoryjava.naming.factory.url.pkgs=org.jboss.naming原创 2012-02-28 20:24:34 · 1210 阅读 · 0 评论 -
一个通用的单元测试框架的思考和设计01-思考篇
1.先从问题说起 写过程序的同学都知道,做好单元测试提高代码覆盖率对整个项目意味着什么,但是做好单元测试并不是一件那么简单的事情,因为实际业务逻辑和运行环境的复杂性,导致了我们的单元测试代码不可能都像那些helloWord那么简单,比如现在的业务系统绝大多数都是基于数据库的,怎么做单元测试才能做到每次做单元测试时都是一个干净的测试环境-即上次单元测试的数据库操作不会影响本次测试的结果(比如原创 2011-07-29 00:12:57 · 2244 阅读 · 0 评论 -
一个通用的单元测试框架的思考和设计02-设计篇
第一节里介绍了我们框架设计的目标,这篇主要介绍的是这个框架主要的设计思路和关键技术点1.如何扩展junit的功能,使junit在启动时可以做一些我们定制化的功能? junit4建立了以Runner为核心的测试框架运行机制,在junit3的版本中,我们知道要运行一个junit测试用例,必须继承一个TestCase基类,junit4则不需要这个限制,只需要标注一下要运行测试的方法为@Tes原创 2011-07-30 09:28:03 · 1751 阅读 · 0 评论 -
一个通用的单元测试框架的思考和设计04-实现篇-自动管理测试数据
上篇文章罗列了整个框架的核心接口,这篇文章将提供IunitExecutionListener的一个实现类-DatasetProviderListener,主要用来将测试数据插入到数据库中,待测试完成后自动删除数据1.dbunit为核心的db测试 dbunit是个很好的数据库测试框架,提供了多种准备数据的操作策略来简化测试数据的插入或更新操作,参考http://www.dbunit.or原创 2011-07-30 21:48:13 · 1880 阅读 · 3 评论 -
使用maven的profile和filter插件管理配置项
1.概述 按照项目开发的流程,项目工程需要经历开发人员本地测试环境(dev),进入测试阶段后有测试环境(test),测试无误后需要将程序发布到生产环境(production)下,而对于这三个不同的项目环境,应用程序要在该环境下运行,必须有不同的配置项,如开发和生产环境使用不同的数据库地址,不同的线程池参数,因此需要对不同的项目环境进行不同的配置,为了简化和规范这些参数配置,需要对其进行统原创 2012-02-16 15:09:00 · 17772 阅读 · 2 评论 -
java文件导出文件名乱码问题解决
在编写excel文件导出程序的时候遇到一个奇怪的问题,就是在程序中给要导出的文件指定一个中文名字时,在浏览器上出现的下载框中的文件名出现了乱码,如何解决httpServletResponse.setContentType("application/vnd.ms-excel");Util.setFileDownloadHeader(httpServletRequest,httpServlet原创 2012-02-15 17:11:04 · 19638 阅读 · 2 评论 -
持续集成之路-01Maven私服搭建篇
网上有很多人写Maven私服搭建的文章,大多是采用Nexus作为私服,笔者也尝试按照这些文章的步骤去搭建,但是一直没有成功,在濒临崩溃之余终于决定放弃Nexus,采用Artifactory作为私服,因为相关的文章并不多,所以笔者是一路摸索过来搭建配置成功的。步骤1:下载安装Artifactory 到Artifactory的官方去下载,http://www.jfrog.co原创 2011-12-03 14:19:28 · 5479 阅读 · 0 评论 -
一个通用的单元测试框架的思考和设计03-实现篇-核心类源码
第二节里我们介绍了iunit整体的设计思路以及核心类之间的关系,这篇将以源码+解释的方式来演示核心类的实现方式1.IUnitRunner 类这个类是测试的入口类,直接继承自junit4.8的BlockJunit4ClassRunner,在构造函数里,我们把iunit框架的扩展功能添加了进来,因为整个框架呃设计都是基于Listener的,所以只需要把监听器在框架运行的时候加载进来即可--原创 2011-07-30 11:56:26 · 1946 阅读 · 1 评论 -
一个通用的单元测试框架的思考和设计05-实现篇-Guice框架启动与自动注入
这篇文章将继续上一篇的问题,实现我们的iunit框架与Guice框架的整合,这个模块主要用于那些用Guice来做DI容器的项目做测试用的,包括guice框架的启动与在测试类中自动注入@Inject标注的字段1.目标测试类的庐山真面目package com.crazycoder2010.guice.sample;import org.junit.Test;import com.c原创 2011-07-31 11:51:36 · 1785 阅读 · 0 评论 -
持续集成之路-02Maven常用插件及配置
在上篇文章中介绍了如何利用Artifactory搭建maven私服,接下来我们就要在自己的工程中配置常用的插件了项目中常用到的插件有如下几个 org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.6 1.6 UTF-8 org.apache.maven.plugins maven-javado原创 2011-12-19 21:17:01 · 1261 阅读 · 0 评论 -
ie下使用frameset布局导致跨域cookie丢失问题解决
问题描述应用程序使用frameset方式布局页面,典型的上/左/右/下结构,如图1所示,整个应用对外部访问的url是www.domaina.com/index.jsp,通过点击左侧的按钮在右侧内容区域展示不同的内容出来-这个内容区域展示的东东有部分是直接链接到其他系统中(不同的域名或ip)当展示不是本系统的应用时发现通过frameset嵌入进来的应用无法获取自己domain里的值原创 2012-07-25 23:12:19 · 1249 阅读 · 0 评论 -
持续集成之路-03hudson持续集成
1.hudson部署 到hudson官网http://hudson-ci.org/下载最新的hudson.war,这里用的是2.2版本http://java.net/projects/hudson/downloads/download/war/hudson-2.2.0.war 将下载后的war包重命名为hudson.war,将其放在web容器下,这里用的是jetty,所以直接放在了webapp原创 2012-04-27 14:52:18 · 2551 阅读 · 0 评论 -
第五章 SpringCloud 使用Feign调用服务
本章节完整源代码地址:https://github.com/kwang2003/springcloud-study-ch05.git1.项目概要介绍在第三章和第四章的学习中,我们已经掌握了通过RestTemplate负载均衡机制来调用注册中心中的服务,除了RestTemplate外,SpringCloud还提供了另一个强大的组件Feign,这让客户端开发人员的编码更加简洁高效。原创 2017-11-06 11:10:41 · 5008 阅读 · 0 评论 -
第四章 SpringCloud使用Eureka集群
本章节完整源代码地址:https://github.com/kwang2003/springcloud-study-ch04.git1.项目概要本章内容是基于上个章节内容第三章 SpringCloud 使用Erueak服务注册中心 在此基础上增加了注册中心集群的功能。在生产环境下,保证整个架构的各个环节都没有单点故障是一个基本要求,而注册中心承载着服务注册和服务端负载均衡的原创 2017-11-06 07:53:38 · 3190 阅读 · 1 评论 -
第三章 SpringCloud 使用Erueak服务注册中心
本章节完整源代码地址:https://github.com/kwang2003/springcloud-study-ch03.git1.先前架构的问题及改进通过前两章的学习,我们已经掌握了通过SpringCloud/SpringBoot来提供一个Rest服务接口,并且可以通过RestTemplate来调用服务,整个世界看起来非常清洁:但是这个架构是非常脆弱的原创 2017-11-04 09:20:07 · 5713 阅读 · 7 评论 -
第二章 使用SpringCloud框架实现一个微服务
1.项目概要介绍在这一章节中,我们尝试通过一个可以运行的简单的示例来学习SpringCloud的功能,在案例的选择上,我们也是从项目实际出发,选取了一个消息服务(Message-Service),因为实际的项目中都可能会用到通过短信网关或者Email发送一些通知消息的功能,我们编写的示例代码也是尽可能的接近于真实的生产代码,在后续的章节中,我们会随着学习的深入,对此示例进行不同程度的改写和原创 2017-11-02 16:38:18 · 2258 阅读 · 0 评论 -
第一章 SpringCloud概要
1.SpringCloud是什么要解释SpringCloud的概念就必须先介绍一下微服务,微服务的英文名称成为Microservice,其特点是将整个web应用按照业务领域拆分成一系列的小的web服务,这些小的web服务可以被独立的编译打包和部署,并通过各自暴漏的HTTP API进行相互通信,各个微服务之间相互配合,作为一个整体对外提供用户功能。微服务只是一种架构模式,其强调2点,第一点是原创 2017-11-01 15:18:44 · 2016 阅读 · 0 评论 -
第九章 SpringCloud Oauth2认证中心-Zuul网关上添加认证
本章完整源码地址:https://github.com/kwang2003/springcloud-study-ch09.git1.项目概要这一章节的内容以第七章的代码为基础改造而成https://github.com/kwang2003/springcloud-study-ch08.git。通过第八章的学习,我们已经已经基于JWT升级了OAuth2认证服务器,在这个章节中原创 2017-11-09 14:26:25 · 28122 阅读 · 11 评论 -
第八章 SpringCloud Oauth2认证中心-基于JWT认证
本章完整源码地址:https://github.com/kwang2003/springcloud-study-ch08.git1.项目概要这一章节的内容以第七章的代码为基础改造而成https://github.com/kwang2003/springcloud-study-ch07.git。传统的web应用中,我们通常通过cookie+session机制来保证调用的安全,原创 2017-11-08 17:48:13 · 27553 阅读 · 5 评论 -
第七章 SpringCloud OAuth2认证中心-搭建认证中心
本章完整源码地址:https://github.com/kwang2003/springcloud-study-ch07.git1.项目概要这一章节的内容以第六章的代码为基础改造而成https://github.com/kwang2003/springcloud-study-ch06.git。经过前几个章节的内容,我们的微服务项目架构逐渐完善了起来,这一章节的重点是通过给已原创 2017-11-07 10:24:00 · 38147 阅读 · 12 评论 -
Drools Workbench 7.2.0.Final综合学习-驾照申请案例
1.练习目标使用Drools Workbench集中管理規則应用程序中调用Drools Workbench中的规则文件执行Drools Workbench中的规则升级时,程序可以自动获取到最新版本的规则投入使用--不用重启应用在Drools Workbench中模拟数据测试规则2.练习内容练习的业务场景模拟来源自Drools官方文档中的一个人员申请驾照的案例原创 2017-08-19 10:28:26 · 5695 阅读 · 6 评论 -
springmvc+freemarker实现自定义标签
1.目标如图是我们的目标页面的一部分,因为类目列表是每个 页面都需要展示的一部分,所以把这个属性列表提取出来,做成一个自定义标签,在不通的页面上直接引用标签,就可以直接展示了2.编写数据提提供类,实现TemplateDirectiveModel接口package com.dmall.mall.directive;import java.io.IOEx原创 2016-10-18 14:57:23 · 3126 阅读 · 0 评论 -
spring interation学习-01发送jms消息
1.程序概述使用spring-interation来实现将一个消息发送到activeMQ的消息队列中-需要安装activeMQ并在上面新建一个名称为queue.hello的队列2.工程依赖添加这里我们用的是maven管理,把spring相关的jar包搞到工程中来<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs原创 2013-10-19 20:19:25 · 2618 阅读 · 0 评论 -
根据cron表达式计算最近几次的执行时间
使用场景:使用quartz做为后台任务调度框架,cron表达式设置时间,需要根据cron表达式计算出最近n次的执行具体时间--这个通常在开放给用户修改任务执行时间给出提示时非常有用解决:使用quartz的jar包中提供的TriggerUtils类来计算具体代码:package com.crazycoder2010.quartz;import java.text.Pars原创 2012-08-24 23:57:16 · 9268 阅读 · 1 评论 -
RedHat6.0上安装jdk1.7
为熟悉linux命令以及常用软件配置,在windows虚拟机上安装了个RedHat6,然后在上面安装jdk1.7下载jdk的过程就不说了,以下描述的是oracle官网上的rpm格式的jdk包,安装步骤如下:1.解压安装rpm包[kevin@localhost software]$ rpm -ivh jdk-7u6-linux-i586.rpm 报错:error: ca原创 2012-09-02 01:48:24 · 5058 阅读 · 2 评论 -
一个通用的单元测试框架的思考和设计06-实现篇-自动管理测试数据-如何临时关闭数据外键约束
第4节中提出了通过dbunit插件来自动管理测试数据,但是在实际操作时发现了一些问题,在设计数据库表时各个表之间可能存在外键关联,在我们准备测试数据库时经常会遇到因外测试数据外键问题导致无法插入数据或者是在清理测试数据的时候因为测试数据的顺序问题导致测试数据无法删除成功,如何解决这个问题?这里使用了一种比较傻瓜但是也比较直接的方式--临时将数据库的外键约束删除,测试完成后将数据恢复到先前状态。原创 2011-08-15 15:34:36 · 1523 阅读 · 0 评论 -
一个通用的单元测试框架的思考和设计07-实现篇-自动管理测试数据-如何为自增长主键id赋值
项目中使用SQL Server2008做为数据库,表的主键大都设置为identity自增长类型,用dbunit准备数据时却遇到了问题,准备的测试数据插入不到数据中,因为id的类型为自增长,不允许为其手动赋值,如何解决?查看了dbunit的文档,对于MS SQL的自增长主键,提供了一个InsertIdentityOperation类,用这个类就可以解决手动输入主键id的问题具体实现:在set原创 2011-08-15 15:44:40 · 1429 阅读 · 0 评论 -
java web程序中error页面处理
01)web.xml配置定义错误页面的位置,按错误码不同定位到不同的错误展示页面,系统中分为两类错误,第一类是404页面不存在的错误,另一类是服务器内部错误50x,对应的页面分别为404.jsp和error.jsp 500 /error.jsp 404 /404.jsp原创 2012-02-15 12:50:43 · 3231 阅读 · 0 评论 -
JAX-RPC学习笔记(1)-Hello World!
目标:写一个基于JAX-RPC的webservice程序-HelloWorld1.概念 JAX-RPC:Java API for XML-based RPC(Remote Procedure Call)2.JAX-RPC响应过程先上图: 2.1原创 2011-08-02 01:59:16 · 3376 阅读 · 0 评论 -
基于Freemarker模板技术的邮件发送模块设计
1.项目背景 设计一个通用的邮件发送模块,为上层应用提供服务,对上层屏蔽掉发送邮件的细节,上层只需要简单的调用即可,要求可以实时发送但又不能影响效率,对发送失败的邮件系统可以记录下来,以便后期重发2.需求分析 关键点有 2.1邮件内容的存放 a)直接把邮件原创 2011-07-24 10:21:56 · 3915 阅读 · 2 评论 -
利用jquery将json字符串转换为json对象
一行代码即可搞定,绕了n个圈才找到var jsonString ='{"jsonSupportBean":{"errorMessage":"Duplicate label group name of 'Kevin6666'.","message":null,"result":nu原创 2011-07-13 21:50:58 · 6217 阅读 · 0 评论 -
项目日志1-前期计划沟通篇
最近在公司内带一个还算较大的项目,目前正处于项目的计划和文档编写阶段,因为之前都是作为项目组的成员来参加项目,这次是完全自己负责整个项目,所以有一些特别的感想 1.需要全面了解整个团队的水平 相信每个团队都一样,有比较资深的老家伙,技术资历比较深,也有些刚毕业不久的实习生,工作1-2年的小生,这次项目里一开始没有事先过多考虑到这个问题,虽然在工作量分配时作了一些倾斜--如比较核心的功能模块还是分配给老人,但是现在感觉下来还是感觉对某几个新人的工作有些便多,原创 2011-04-19 00:55:00 · 1424 阅读 · 0 评论 -
Java类加载器加载类顺序
<br /> <br />java ClassLoader的学习<br />java是一门解释执行的语言,由开发人员编写好的java源文件先编译成字节码文件.class形式,然后由java虚拟机(JVM)解释执行,.class字节码文件本身是平台无关的,但是jvm却不是,为了实现所谓的一次编译,到处执行,sun提供了各个平台的JVM实现--也就是说jvm不是跨平台的,编译好的字节码文件被放在不同的操作系统平台上的jvm所解释执行,这个章节主要解释一下JVM装载类的机制<br />1.ClassLoader是原创 2011-03-30 14:43:00 · 12857 阅读 · 2 评论 -
ibatis连接insert到mysql数据库主键自动返回
<br />设计表时mysql的表主键设置为自增长类型,然后就在ibatis中配置了以下的sql语句(这个表有个名字为id的自增长主键id)<br /><!-- 创建用户信息 --><insert id="createUser" parameterClass="userAlias"><!--[CDATA[ insert into user (name, password, email,原创 2011-03-20 01:11:00 · 6049 阅读 · 1 评论 -
java日志系统学习--核心类功能及类图
做过系统的同学都应该做过日志操作,用于打点,记录异常,比较常用的是apache的common-logging框架和apache的log4j框架,但是这篇文章不是介绍这些上层的框架,而是解释这些框架底层调用的java自带的日志框架1.包结构 位于java.util.logging下,20个类左右,体积很小2.核心类图以及关联关系 Logger类,这个是用来记录日志的核心类,主要功能正如其名,记录日志 LoggerManager类,用来日志对象,读取系统配置(%JAVA_HOME%/lib/loggin原创 2011-03-17 15:50:00 · 2370 阅读 · 0 评论 -
Junit源码分析
junit是我们平时开发中天天用到的测试框架,为了了解器内部隐藏的机关,特意分析了一下源码,这里我们用的是Junit3.8版本。1.包的划分 junit.awtui,这个是junit的awt实现的ui界面组件 junit.extensions这个是junit核心功能之外的扩展点,对TestCase的装饰,Demorator模式的很好的例子 junit.framework,这个是junit的核心功能,像我们平时常用的TestCase,TestSuit类都是在这的,还有Assert类,提供了我们测试中常用原创 2011-03-16 19:45:00 · 3006 阅读 · 0 评论