- 博客(486)
- 资源 (6)
- 收藏
- 关注
转载 java Future 接口介绍
从jdk1.5开始我们可以利用Future来跟踪异步计算的结果。在此之前主线程要想获得工作线程(异步计算线程)的结果是比较麻烦的事情,需要我们进行特殊的程序结构设计,比较繁琐而且容易出错。有了Future我们就可以设计出比较优雅的异步计算程序结构模型:根据分而治之的思想,我们可以把异步计算的线程按照职责分为3类:1. 异步计算的发起线程(控制线程):负责异步计算任务的分解和发起,把分解好的
2014-08-15 15:58:35 536
转载 Java线程(二):线程同步synchronized和volatile
上篇通过一个简单的例子说明了线程安全与不安全,在例子中不安全的情况下输出的结果恰好是逐个递增的(其实是巧合,多运行几次,会产生不同的输出结果),为什么会产生这样的结果呢,因为建立的Count对象是线程共享的,一个线程改变了其成员变量num值,下一个线程正巧读到了修改后的num,所以会递增输出。 要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性。多个线程之间是
2014-08-15 15:44:12 341
转载 Java线程(三):线程协作-生产者/消费者问题
上一篇讲述了线程的互斥(同步),但是在很多情况下,仅仅同步是不够的,还需要线程与线程协作(通信),生产者/消费者问题是一个经典的线程同步以及通信的案例。该问题描述了两个共享固定大小缓冲区的线程,即所谓的“生产者”和“消费者”在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加
2014-08-15 15:43:12 425
转载 Java线程(一):线程安全与不安全
作为一个Java web开发人员,很少也不需要去处理线程,因为服务器已经帮我们处理好了。记得大一刚学Java的时候,老师带着我们做了一个局域网聊天室,用到了AWT、Socket、多线程、I/O,编写的客户端和服务器,当时做出来很兴奋,回学校给同学们演示,感觉自己好NB,呵呵,扯远了。上次在百度开发者大会上看到一个提示语,自己写的代码,6个月不看也是别人的代码,自己学的知识也同样如此,学完的知识如果
2014-08-15 15:42:42 417
转载 Java线程(五):Timer和TimerTask
Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。 Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。TimerTask是一个抽象类,实现了Runnable接口,所以具备了多线程的能力。
2014-08-15 15:40:37 344
转载 Java线程(六):线程池
自JDK5之后,Java推出了一个并发包,java.util.concurrent,在Java开发中,我们接触到了好多池的技术,String类的对象池、Integer的共享池、连接数据库的连接池、Struts1.3的对象池等等,池的最终目的都是节约资源,以更小的开销做更多的事情,从而提高性能。 我们的web项目都是部署在服务器上,浏览器端的每一个request就是一个线程,那
2014-08-15 15:12:20 347
转载 Java线程(七):Callable和Future
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行
2014-08-14 18:07:48 386
转载 Java线程(八):锁对象Lock-同步问题更完美的处理方式
Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我们拿Java线程(二)中的一个例子简单的实现一下和sychronized一样的效果,代码如下:[java] view plaincopypubl
2014-08-14 18:07:11 372
转载 一、 模板方法(Template Method)模式
一、 模板方法(Template Method)模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模版方法模式的用意。很多人可能没有想到,模版方法模式实际上是所有模式中最为常见的几个模式之一,而且很多人可能使用过模版方法模式而没有意识到自己已
2014-08-14 17:36:52 394
转载 spring mvc使用@InitBinder 标签对表单数据绑定
在SpringMVC中,bean中定义了Date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定。解决的办法就是使用spring mvc提供的@InitBinder标签在我的项目中是在BaseController中增加方法initBinder,并使用注解@InitBinder标注,那么spring mvc在绑定表单之前,都会先注册这些编辑器,
2014-08-12 17:52:17 601 1
转载 web.xml 配置中classpath: 与classpath*:的区别
首先 classpath是指 WEB-INF文件夹下的classes目录解释classes含义:1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml2.存放模板文件 eg.actionerror.ftl3.存放class文件 对应的是项目开发时的src目录编译文件总结:这是一个定位资源的入口如果你知道
2014-08-12 16:05:27 484
转载 加速Java应用开发速度3——单元/集成测试+CI
《加速Java应用开发速度》系列目录:加速Java应用开发速度1——加速spring/hibernate应用调试时启动速度加速Java应用开发速度2——加速项目调试启动速度加速Java应用开发速度3——单元/集成测试+CI加速Java应用开发速度4——使用模板技术加速项目开发速度加速Java应用开发速度5——使用脚本自动化日常操作
2014-08-08 17:13:19 731
转载 编写Action测试用例的经典法则
我们通常在开发web应用过程中,展现层Action的单元测试经常被我们忽视了,主要原因是:1、Action层的业务逻辑比较简单。大家潜意识认为这一部分的代码不重要。2、Action层难以模拟http请求传递参数,需要依赖web容器,因此给单元测试编写带来一定的难度。我写了一个简单的Action单元测试用例,供大家参考。基于struts的mock和webwork的Action
2014-08-08 13:46:19 1224
转载 线程池的使用Executors和Future
在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。 一、创建任务 任务就是一个实现了Runnable接口的类。 创建的时候实run方法即可。
2014-08-07 17:34:20 747
转载 MYSQL常用命令
1.导出整个数据库mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1)mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql2.导出一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u
2014-08-07 17:33:00 410
转载 Druid数据库连接池使用
阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好 简单使用介绍Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息全部配置给DataSource对象 下面给出2种配置方法实例:1. 纯Java代码创建dataSource = new DruidDataSource()
2014-08-07 17:19:24 612
转载 【数据库连接池】阿里巴巴开源项目 Druid 负责人温少访谈
Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,程序员可以通过定制来实现自己需要的功能。 该项目在阿里巴巴内部得到了广泛的部署,在外部也有大量的用户群。为了使大家更好地了解和使用Druid
2014-08-07 17:16:03 1261
转载 Spring3.0注解注入(@Resource)
applicationContext.xml配置如下:xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xm
2014-08-06 18:06:29 612
转载 ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
工作中多处接触到了ThreadPoolExecutor。趁着现在还算空,学习总结一下。 前记: jdk官方文档(javadoc)是学习的最好,最权威的参考。文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选型(Synch
2014-08-05 14:57:49 366
转载 在redis使用过程遇到的一些问题的总结
tpn(taobao push notification)在使用redis计算消息未读数的过程中,遇到了一系列的问题,下面把这个过程整理了一下,也让大家了解这个纠结的过程,供大家以后使用redis或者做类似的功能时进行参考 redis在tpn里面主要是用于计算移动千牛(Android、IOS)上的消息未读数。tpn的未读消息数是基于bizId维度的,即同一个bizId(每条消息的业务i
2014-08-01 09:12:59 1728
转载 maven编码 gbk 的不可映射字符
解决这个问题的思路: 在maven的编译插件中声明正确的字符集编码编码——编译使用的字符集编码与代码文件使用的字符集编码一致!! 安装系统之后,一般中文系统默认字符集是GBK。我们安装的软件一般都继承使用操作系统的默认字符集。 所以在很多中文XP win7上开发的同学,在使用maven(mvn compile)编译项目的时候,就会出现“编码 gbk 的不可映
2014-07-30 17:48:35 1038
转载 Spring MVC过滤器-HiddenHttpMethodFilter
浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器为HiddenHttpMethodFilter。 HiddenHttpMethodFilter的父类是OncePerRequestFilter,它继承
2014-07-29 10:55:58 505
转载 领域驱动设计
领域驱动设计能非常容易地应用于稳定领域,其中的关键活动适合开发人员对用户脑海中的内容进行记录和建模。但在领域本身不断变化和发展的情况下,领域驱动 设计变得更具有挑战性。这在敏捷项目中很普遍,在业务本身试图演进的时候也会发生。我们提供了模型中重要项 目过程、具体演进步骤的细节。 计划的动机远不止是要一个新外观。多年的经验告诉我们有更好的办法来组织我们的内容,有更好的
2014-07-29 10:37:30 511
转载 实体类(VO,DO,DTO)的划分
经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析。得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除二者之外需要进行传递的数据。一、实体类百度百科中对于实体类的定义如下:实体类的主要职责是存储和管理系统内部的信息,它也可以有
2014-07-25 17:33:13 843
转载 iBatis #和$的区别 把int作为参数时,转换为字符型
昨天一个项目中在写ibatis中的sql语句时,order by #field#, 运行时总是报错,后来上网查了查,才知道这里不该用#,而应该用$,随即查了下#与$的区别. 总结如下: 1.#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错.. 2.$传入的数据直接生成在sql里,如$field$传入的是id,
2014-07-21 15:57:17 1053
转载 ibatis执行SQL语句打印控制台的log4j.xml文件配置方法
1、打印SQL语句到控制台在开发调试过程中,我遇到在调试 ibatis 执行的 SQL 是否正确时,无法查看 ibatis 是否执行了我想要执行的 SQL 语句,现发现一种解决方案就是在 log4j.xml 配置文件中加入以下代码就可以在控制台中打印出 ibatis 执行的 SQL 语句:value="%-4r [%t] %-5p %c %x - %m%n" />
2014-07-18 14:15:28 1221
转载 SpringMVC中使用Interceptor拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间。 一、定义Interceptor实现类 SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的。在
2014-07-16 14:16:20 384
转载 关于安全的超文本传输协议HTTPS
http叫超文本传输协议,使用TCP端口80,默认情况下数据是明文传送的,数据可以通过抓包工具捕获到,因此在interner上,有些比较重要的站点的http服务器需要使用PKI(公钥基础结构)技术来对数据加密!这也就是https了; https叫安全的超文本传输协议,使用TCP端口443,他的数据会用PKI中的公钥进行加密,这样抓包工具捕获到的数据包也没有办法看包中的内容,安全性大大提高,要解密
2014-07-16 11:11:41 877
转载 SSO单点登录解决方案[转载]
1 什么是单点登陆 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服务。例如财务系统为财务人员提供财务的管理、计算和报表服务;人事系统为人事部门 提供全公司人员的维
2014-07-16 11:05:25 589
转载 如何查看firefox的cookie IE的cookie
一查看firefox的cookie首先 firexfox的cookie的文件存放不像ie那么如容易找到,而且里面的内容也不一般普通编辑器能查看的。文件存放位置 ,一般WIN XP系统的FF cookie存放于:C:/Documents and Settings/你的用户名/Application Data/Mozilla/Firefox/Profiles 在这个目录下里有一个类似
2014-07-16 11:04:44 515
转载 怎样开始用selenium进行自动化测试(个人总结)
作为一个之前没接触过selenium的新手来说,如果之前有过写代码的经验,那么学习起来就会更加快速!但无论如何,开始总是比较难的!我也是从一个接近纯24K小白成长起来的,一步一个脚印,在这个过程中我学习到了很多新的知识,有了新的突破,新的成长,不断地努力,不断地尝试,不断地总结经验,让我一直走到了今天,未来,还有很多路要走!义无反顾,我的测试之路!所以,今天抽空回顾一下我的selenium学习过程
2014-07-15 17:01:16 1482
转载 maven中跳过单元测试
你可能想要配置 Maven 使其完全跳过单元测试。 可能你有一个很大的系统,单元测试需要花好多分钟来完成,而你不想在生成最终输出前等单元测试完成。 你可能正工作在一个遗留系统上面,这个系统有一系列的失败的单元测试,你可能仅仅想要生成一个 JAR 而不是去修复所有的单元测试。 Maven 提供了跳过单元测试的能力,只需要使用 Surefire 插件的 skip 参数。 在命令行,只要简单的给任何目标
2014-07-14 11:21:35 532
转载 @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
引言:接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用;简介:handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型)A、处理requet uri 部分(这里指
2014-07-11 15:25:51 534
转载 浅谈springMVC的拦截器、错误异常、数据绑定、转换器、属性编辑器
一、拦截器上篇博文中已经说到过可以继承HandlerInterceptorAdapter类或者实现HandlerInterceptor接口。这里想说的是对于其方法中一个参数的说明。 Java代码 /** * Controller之前执行 */ @Override public bool
2014-07-11 14:54:17 1582
转载 使用Spring MVC统一异常处理实战
1 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。 那么,能不能将所有类型的异常处理从各处理过程解耦出来,这样既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护?答案是肯定的。下面
2014-07-11 14:31:35 620
转载 关于BindingResult
关于BindingResultSpring mvc2.5,3.0中,有关于 @ModelAttribute的注解,它可以帮你自动绑定表单的值,填充到被注解的属性当中。如 @ModelAttribute User user,该属性会在ModelMap中,添加以user为key的 User对象,然后绑定的时候会有一些绑定结果,就是BindingResult。但是BindingResult跟@M
2014-07-11 14:00:18 2216 2
转载 编程式事务管理、声明式事务管理中HibernateDaoSupport与JdbcDaoSupport的应用
编程式事务管理、声明式事务管理中HibernateDaoSupport与JdbcDaoSupport的应用: 1、编程式事务管理: 1>、JdbcDaoSupport编程式事物管理,必须继承JdbcDaoSupport类,得到JdbcTemplate从而实现事务管理; TestA.java:public class TestA extends JdbcDaoSupport{
2014-07-11 10:15:52 585
转载 使用Spring MVC HandlerExceptionResolver处理异常
转载请标明出处:http://fuliang.iteye.com/blog/947191 Spring MVC的确很强大,在每一个你想的到和想不到的地方都会留下钩子,来插入自定义的实现,透明替换默认实现, 拦截器堆栈结构设计的非常强大,多种试图的解析,url mapping的多种实现,Locale resolver、Theme resolver 、multipart file re
2014-07-10 10:52:12 530
转载 Java枚举前后台一致性(后台、VM页面、JS变量)映射
在项目开发中我们经常会定义很多常量或者枚举来存储一些固定不变的数据,目的是方便其它逻辑调用并且好集中管理不易出错。但是当这些变量需要在我们的页面中出现甚至是JS中出现时我们通常的做法是在需要使用的页面传递或者干脆直接写死,这样所产生的问题就是以后系统很难维护更新。最近我们项目组也遇到这个问题了,我的解决方案是:1.将系统中常用的枚举罗列出来2.将这些枚举类转换成Map对象
2014-07-07 18:07:29 5028
Spring2.5.chm spring(我们的春天) 完全学习手册
2011-09-04
Struts2_中文API.pdf 2.深入 Struts 架构
2011-09-04
面试题集 大全(全盖)
2011-09-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人