- 博客(342)
- 收藏
- 关注
转载 悲观锁
1.悲观锁介绍 和他的名字一样,对数据被外界修改(包括本系统的其他事务,以及来自外部系统的事务)持保守态度,也就是说,认为外界很有可能对这个数据同时修改。 所以,需要在数据处理工程中,将数据处于锁定状态,也就是只能单线程处理。2.悲观锁实现 因为要实现单线程访问,所以就只能通过数据库提供的锁来实现了。因为即使在本系统中实现了加锁机制,
2015-06-21 18:03:11 430
转载 spring配合ibatis操作数据库完整例子
1.引入依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4
2015-06-21 17:41:07 456
转载 乐观锁
1.使用原因 实际上是为了解决数据库并发访问的情况。 如一个银行账户中余额为1000元,A向其中转账200,B从中取出300,那么应该是剩余900,。 但实际情况下,可能是A转了200,但是还没有提交事务,这个时候B获取余额信息,值是1000,取出300后,修改余额为700,提交事务,然后A又提交事务,这时候账户余额变为1200,显然是不对的。
2015-06-21 17:01:43 412
转载 java线程池使用
1.最简单入门public class ThreadTest { @Test public void testExecute() { ExecutorService executorService = Executors.newFixedThreadPool(3); for (int i = 0; i < 5; i++) { executorService.exe
2015-06-17 20:06:07 306
转载 Log4j多线程中区分不同线程
1.引入 之前使用项目的pattern layout输出日志,单线程的时候没有问题,但是多线程情况下就很难区分是哪个线程打印的日志了,所以有必要将不同线程区分开来 2.解决方案 使用log4j配置文件中的%t,这样就可以区分不同的线程了 如:配置文件中log4j.appender.console.layout.ConversionPattern=%
2015-06-16 20:34:03 4063
转载 log4j输出格式
参数说明例子%c列出logger名字空间的全称,如果加上{}表示列出从最内层算起的指定层数的名字空间log4j配置文件参数举例输出显示媒介假设当前logger名字空间是"a.b.c"%ca.b.c%c{2}b.c%20c(若名字空间长度小于20,则左边用空格填充)%-20c(若名字空间长度小
2015-06-16 20:31:04 409
转载 集合操作的ConcurrentModificationException
1.产生情景 在做项目中遇到如下需求:遍历集合,删除其中值=2的元素。代码如下: @Test public void test() { List list = new ArrayList(); list.add(0); list.add(1); list.add(2); list.add(3); list.add(4); for (Inte
2015-06-15 16:10:18 454
转载 ActiveMq-Publisher/Subscribe入门例子
启动ActiveMq、添加依赖与之前完全相同,此处省略1.发布端import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.JMSException;import
2015-06-14 15:06:50 930
转载 JMS基本概念
1.JMS作用 JMS是应用系统或者组件之间相互通信的应用程序接口,利用它,我们可以轻易实现在不同jvm之间互相的远程通信。 要实现远程通信RPC同样也能做到,但是RPC却不可避免的增加了不同系统之间的耦合度,JMS能极大的降低不同的应用系统之间的耦合 2.JMS模型 (1)PTP点对点
2015-06-14 13:20:17 420
转载 ActiveMq-PTP入门例子
1.下载并运行Active Mq 从http://activemq.apache.org/download.html下载自己需要的版本,这里以5.10.0版本为例。 下载解压完成之后,进入bin目录,根据自己的系统选择需要执行的activemq.bat(这里使用的是windows 64位),所以使用win64文件夹下的activemq.bat。
2015-06-14 10:21:47 592
转载 依赖范围
1.使用原因 有些jar只会在某些特定时期才会用到,项目发布后根本不会用到这些jar包,所以把这些jar打入最终的发布包中是不合理的。如junit只会在测试期用到,肯定不应该将它打入最终的发布包。解决方法如下: junit junit 3.8.1 test 再如,我们开发j2ee的时候会用到serv
2015-06-11 22:08:39 340
转载 maven处理依赖冲突(未完)
1.依赖冲突特征 一般情况下,抛出NoSuchMethodError或者ClassNotFoundException,但是确定这些类或者方法在jar中存在,或者这些java类根本就没听说过时,可能就是出现依赖冲突了。2.依赖冲突产生原因 maven采用的是“最近获胜策略”的方式处理依赖冲突,即如果一个项目依赖于多个相同artifact的不同版本,
2015-06-10 16:21:20 566
转载 spring中classpath与classpath*
1.classpath 单独写classpath:applicationContext.xml,表示只会加入第一个查找到的applicationContext.xml,就算有多个也只会加入一个2.classpath* classpath*:applicationContext.xml,表示本项目和所有依赖的jar包根目录下的applicationCont
2015-06-10 16:11:22 511
转载 version:99.0-does-not-exist
1.作用 有时候maven根据jar包的依赖,会要求classpath中必须包含某个jar,但是我们又不需要这个jar(因为添加了会有冲突)。比如其他jar要求使用common-logging但是本项目需要使用jcl-over-slf4j 这个使用就可以使用一个空的common-logging来欺骗maven,就是告诉它项目里已经有了common-logging。那么这
2015-06-10 11:20:24 4113
转载 依赖冲突-cglib和asm
1.问题描述org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pullService': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: net.sf.
2015-06-10 10:38:59 4235
转载 maven中使用overlay标签合并多个web项目
1.使用原因 在一个大项目中拆分maven工程时,很有可能会把js、css、jsp等文件放在不同的工程里(根据业务划分的模块)。因为如果都集中在一个maven webapp中,那么这个webapp就会过大,而且在业务上显得比较松散 但是这些持有js、css、jsp的maven工程,如果packaging设置为jar是不合适的,因为外围要读取内部的这些文件就会很困难
2015-06-09 19:55:43 5682
转载 maven的maven-resource-plugin资源插件
1.maven的resource标签资源过滤 一般情况下,可以通过build中的resource和filter标签配合使用,将filter中的属性值动态写入resource中,基本配置如下: src/main/r
2015-06-08 22:02:38 19961 1
转载 maven中的compiler编译插件
1.作用 用在mvn compile命令执行时期 (1)指定执行编译的jdk版本 maven2.1默认使用jdk1.3来编译,maven使用jdk1.5,如果项目使用的是jdk1.6也会出现问题,所以在这里可以使用compiler来指定编译版本 (2)指定项目编码 window
2015-06-08 20:42:07 5562 1
转载 maven中的surefire测试插件
1.在maven中配置测试插件 org.apache.maven.plugins maven-surefire-plugin 2.17 默认情况下Maven项目已经添加了这个插件,所以没有特殊需要不需要更改2.默认情况下执行的测试 默认情况下surefire会执行文件名以Test开头或结尾,或者以TestCase结尾的类
2015-06-08 20:27:42 1095
转载 Spring与Quartz结合
1.实例 依赖 commons-collections commons-collections 3.2.1 org.opensymphony.quartz quartz-all 1.6.1 org.springframework spring-context-sup
2015-06-07 16:15:33 417
转载 Quartz入门实例
1.添加依赖 commons-collections commons-collections 3.2.1 org.opensymphony.quartz quartz-all 1.6.1 2.定义Job 具体执行的任务类需要实现Job接口,并在其中的execute方法写需要定时执行的
2015-06-07 15:15:01 456
转载 ibatis批量插入
1.使用技术 实际上就相当于jdbc的批量插入,就是编译一次sql,然后每次传递参数即可。实际上还是使用插入单条的sql2.实例 ibatis实现 public void insertBatch(final List list) { getSqlMapClientTemplate().execute(new SqlMapClient
2015-06-07 13:33:33 642
转载 ibatis返回插入后的自增id
1.返回自增id mysql中返回自增id可以使用select last_insert_id();这个方法是和连接有关的,所以说其他连接就算进行了插入操作,只要这个连接没有再次插入数据,返回的还是这次插入的id2.实例 返回integer类型的自增id insert into person(name,age) v
2015-06-07 13:25:56 1527
转载 spring事务配置
1.总体概览 spring关于事务的配置就是由三个部分组成: (1)数据源DataSource (2)事务管理器TransactionManager (3)事务代理机制 无论哪种配置方式,一般变化的只是代理机制这部分。
2015-06-07 12:32:38 304
转载 Spring中$Proxy4 cannot be cast to错误
1.产生原因 spring中的aop会使用jdk的动态代理或者cglib为目标对象创建代理。如果被代理的目标实现了至少一个接口,则会使用jdk动态代理;如果没有实现任何接口,则使用cglib代理。如果被代理目标类既没有实现接口,又没有引入cglib,就会报这个错误 2.解决方法 (1)为被代理的目标实现一个接口 (2)导入
2015-06-07 12:27:06 1968
转载 spring中的default-autowire="byName"
1.用法 使用在applicationContext.xml头部,意思是说所有定义的bean中的所有属性,只要属性名称和bean的id或者name相同,那么就注入。 实际上,就相当于:定义的bean的所有属性上都加上了@Resource(通过名称注入)2.实例 (1)applicationContext.xml
2015-06-04 22:18:50 714
转载 java类型的maven项目引入jar
产生: 之前使用maven项目添加jar包,使用的方法是直接在pom中添加依赖,保存即可。 但是现在从svn上拉取项目之后,需要先使用mvn eclipse:eclipse转换为java项目引入eclipse。这样之后再在pom中添加依赖保存不会自动添加jar包了。 解决: 还是在pom中添加依赖,然
2015-06-03 18:52:34 344
转载 JavaBean与Map相互转化
1.添加依赖 commons-beanutils commons-beanutils 1.9.22.JavaBean转化为Map PersonBean person = new PersonBean(); person.setAge(12); person.setGender("mail"); person
2015-06-01 22:40:36 508
转载 json处理——Jackson框架
1.添加依赖 org.codehaus.jackson jackson-core-lgpl 1.9.13 org.codehaus.jackson jackson-mapper-lgpl 1.9.132.Json转化javaBean、Map、List 方法: 使用readValue,传入指定类型即可
2015-06-01 19:56:37 464
转载 各个日志框架之间的关系
可以看出,实际上commons-logging和slf4j都是日志的接口,供用户使用,而没有提供实现。 log4j,logback等才是日志的真正实现 所以,基本上就是接口+具体实现的方式来使用
2015-05-30 22:00:58 1394 1
转载 slf4j使用
1.添加依赖 以slf4j+log4j为例 org.slf4j slf4j-log4j12 1.7.122.添加log4j配置文件log4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.layout=org.apache.log4j.TTCCLayout
2015-05-30 21:40:15 318
转载 common-logging
1.引入与作用 java日志工具类有多种,如log4j,jdk自带的日志工具等,如何使用统一的接口操作这些日志工具、并且在这些日志工具之间自由切换呢? 这个时候就会用到common-logging了。2.查找顺序 当引入了common-logging之后,它会自动查找使用的log工具,用户不需要任何配置。查找的顺序如下:
2015-05-30 17:15:26 745
转载 Log4j
1.HelloWorld例子 (1)添加依赖 log4j log4j 1.2.17 (2)编写配置文件,放在classpath下log4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.layout=org.apache.log4j.TTC
2015-05-30 15:01:23 378
原创 java枚举
1.为何使用枚举 (1)实际变成中,通常需要一些常量数据集,如周一到周日,性别等,通过枚举就可以表示 (2)需要一些常量key-value集合,当然可以使用全局单例map,但是用枚举更好实现2.枚举使用 (1)简单定义常量集public enum GenderEnum { man,women;}
2015-05-30 13:17:18 402
原创 今年目标
(1)搭建文件服务器(2)本地缓存(3)分布式缓存服务器-远程缓存(4)应用服务器集群,负载均衡调度服务器,将访问请求分发到应用服务器集群(5)数据库读写分离,主从复制(6)CDN,反向代理(7)分库分表(8)nosql
2015-05-28 20:24:01 388
转载 HSF异步调用
1.引入 按照前面的配置、使用方式,实际上使用的是hsf的同步调用,也就是客户端一直等待服务端返回结果。 但是有些是不需要一直等待服务端返回结果的,对于这些服务,hsf提供异步调用的方式,让客户端不必同步阻塞在hsf操作上2.异步调用 (1)说明 异步调用在发起调用时,HSF
2015-05-18 17:24:30 5946
转载 HSFUnit实现单元测试
1.使用原因 hsf的使用一般是在web应用中,但是如果只是想测试远程服务是否正确,就没有必要每次都打war包,这样比较麻烦。 所以需要直接在Junit中直接测试2.使用 (1)添加依赖 com.taobao.hsf hsfunit 1.0.6 test (2)编写测试代码
2015-05-18 17:08:34 2543
转载 TDDL使用
1.创建数据源 由DBA来做。 一般数据源有3层: (1)Matrix 分库分表,数据路由,对应一个应用,下面有若干个group (2)Group 主备切换,读写分离,对应一组主备数据库,下面有若干atom
2015-05-18 14:24:03 5951 2
转载 HSF入门例子
1.搭建HSF环境 实际上就是下载hsf.sar,然后放置到tomcat的应用目录下即可2.服务端 (1)创建web项目 (2)添加编译和打包的插件 1.6 HSFSampleLanshan maven-compiler-plug
2015-05-18 12:42:47 8525 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人