- 博客(50)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
转载 解决Cannot change version of project facet Dynamic web module to 2.5
我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的,而一般现在至少都是2.5,在Project Facets里面修改Dynamic web module为2.5的时候就会出现Cannot change version of project facet Dy
2016-04-29 10:09:00 392
转载 Maven学习之利用mvn deploy命令上传包
mvn:deploy在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。 以将ojdbc14传到nexus中的thirdparty为例 一 配置settings.xml 因为nexus是需要登陆操作,当然可以通过配置免登陆,这是后话。在settings.xml的 thir
2016-04-29 10:04:31 2843
转载 Eclipse插件的各种安装方法
这篇文章我们总结下安装Eclipse的各种方法,首先一下的步骤都是在版本为“Kepler Service Release 1”的Eclipse下完成的。如果你的Eclipse版本不是"Kepler Service Release 1",可能稍微有点不同,但不必担心,相差不会太远的。我们以安装fatjar插件为例,fatjar是个很好用的Eclipse插件,可以把你的项目打包成一个Jar,包括项
2016-04-18 17:54:16 446
转载 使用SocketChannel的NIO客户机服务器通信示例
原文路径 : http://www.oschina.net/question/54100_33531NIO Selector示意图: 客户端代码:import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.chann
2016-04-17 20:14:56 504
转载 Java NIO和IO的主要区别
当学习了Java NIO和IO的API后,一个问题马上涌入脑海:我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。Java NIO和IO的主要区别下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IO NIO面向流
2016-04-17 20:05:37 344
转载 Java NIO系列教程(二)
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。打开FileChannel在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAcc
2016-04-17 19:54:57 700
转载 Java NIO系列教程(一)
原文地址:http://tutorials.jenkov.com/java-nio/scatter-gather.htmlJava NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和Fi
2016-04-17 19:40:19 527
转载 EhCache 分布式缓存/缓存集群
EhCache 分布式缓存/缓存集群开发环境: System:Windows JavaEE Server:tomcat5.0.2.8、tomcat6 JavaSDK: jdk6+ IDE:eclipse、MyEclipse 6.6 开发依赖库: JDK6、 JavaEE5、ehcache-core-2.5.2.jar Email:hoojo_@126.com
2016-04-13 21:17:22 412
转载 Spring使用Cache、整合Ehcache
Spring使用Cache 从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用
2016-04-13 21:16:09 1296 1
转载 Ehcache(09)——缓存Web页面
页面缓存目录1 SimplePageCachingFilter1.1 calculateKey1.2 可配置的初始化参数1.2.1 cacheName1.2.2 blockingTimeoutMillis2 SimpleCachingHeadersPageCachingFilter3 Simpl
2016-04-13 21:11:07 414
转载 Ehcache(08)——可阻塞的Cache——BlockingCache
可阻塞的Cache—BlockingCache 在上一节我们提到了显示使用Ehcache锁的问题,其实我们还可以隐式的来使用Ehcache的锁,那就是通过BlockingCache。BlockingCache是Ehcache的一个封装类,可以让我们对Ehcache进行并发操作。其内部的锁机制是使用的net.sf.ehcache.concurrent.ReadWriteLock
2016-04-13 21:10:10 429
转载 Ehcache(07)——Ehcache对并发的支持
Ehcache对并发的支持 在高并发的情况下,使用Ehcache缓存时,由于并发的读与写,我们读的数据有可能是错误的,我们写的数据也有可能意外的被覆盖。所幸的是Ehcache为我们提供了针对于缓存元素Key的Read(读)、Write(写)锁。当一个线程获取了某一Key的Read锁之后,其它线程获取针对于同一个Key的Read锁不会受到限制,但其它线程(包括获取了该Key的R
2016-04-13 21:09:24 729
转载 Ehcache(06)——监听器
监听器 Ehcache中监听器有两种,监听CacheManager的CacheManagerEventListener和监听Cache的CacheEventListener。在Ehcache中,Listener是通过对应的监听器工厂来生产和发生作用的。下面我们将来介绍一下这两种类型的监听器。 1 CacheManager监听器 Ehcach
2016-04-13 21:08:19 1952
转载 java工程下读取配置文件的路径问题
一、项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1、通过java.util.Properties读取 Java代码 Properties p=new Properties(); //p需要InputStream对象进行读取文件,而获取InputStream有多种方法: //1、通过绝对路径:InputStream
2016-04-13 10:12:16 5821
转载 Jedis连接池的使用
所需jar:jedis-2.1.0.jar和commons-pool-1.5.4.jarJedis操作步骤如下:1->获取Jedis实例需要从JedisPool中获取;2->用完Jedis实例需要返还给JedisPool;3->如果Jedis在使用过程中出错,则也需要还给JedisPool;/** * Redis操作接口 */public class Re
2016-04-11 23:13:38 465
转载 Spring 整合 Redis
pom构建:[html] view plain copy print?modelVersion>4.0.0modelVersion> groupId>com.x.redisgroupId> artifactId>springredisartifactId> version>0.0.1-SNAPSHOTversion>
2016-04-11 23:10:47 386
转载 Ehcache和Memcached比较分析
项目 MemcacheEhcache分布式 不完全,集群默认不实现 支持 集群 可通过客户端实现 支持(默认是异步同步) 持久化 可通过第三方应用实现,如sina研发的memcachedb,将cache的数据保存到[url=]Berkerly DB[/url] 支持。持久化到本地硬盘,生成一个.data和.index文件。cach
2016-04-11 19:51:43 631
转载 ehcache memcache redis 三大缓存男高音
最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存的优缺点,仅供参考! Ehcache在java项目广泛的使用。它是一个开源的、设计于提高在数据从RDBMS中取出来的高花费、高延迟采取的一种缓存方案。正因为Ehcache具有健壮性(基于java开发)、被认证(具有apache 2.0 license)、充满特色(稍后会详细介绍),所以被用于
2016-04-11 19:39:50 339
转载 Spring分布式事务实现
分布式事务是指操作多个数据库之间的事务,spring的org.springframework.transaction.jta.JtaTransactionManager,提供了分布式事务支持。如果使用WAS的JTA支持,把它的属性改为WebSphere对应的TransactionManager。 在tomcat下,是没有分布式事务的,不过可以借助于第三方软件jotm(Java Open
2016-04-11 17:59:00 340
转载 Redis和Memcache对比及选择
Redis和Memcache对比及选择我这段时间在用redis,感觉挺方便的,但比较疑惑在选择内存数据库的时候到底什么时候选择redis,什么时候选择memcache,然后就查到下面对应的资料,是来自redis作者的说法(stackoverflow上面)。You should not care too much about performances. Redis is faster
2016-04-11 12:51:07 418
转载 Java中的Atomic包使用指南
引言Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作。原子变量的底层使用了处理器提供的原子指令,但是不同的CPU架构可能提供的原子指令不一样,也有可能需要某种形式的内部锁,所以该方法不能绝对保证线程不被阻塞。Atomic包介绍在Atomic包里一共有12个类,四种原子更新方式,分别是原
2016-04-10 23:00:32 500
转载 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarrier用法 三.Semaphore用法 若有不正之处请多多谅解,并欢迎批评指正。 请
2016-04-10 22:33:42 431
转载 Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中
2016-04-10 22:18:29 342
转载 几种任务调度的 Java 实现方法与比较
前言任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务。本文由浅入深介绍四种任务调度的 Java 实现:TimerScheduledExecutor开源工具包 Quartz开源工具包 JCronTab此外,为结合实现复杂的任务调度,本文还将介绍 Calendar 的一些使用方法。Timer相信大家都已经非常熟悉 java
2016-04-10 22:08:39 682
转载 java并发库之Executors常用的创建ExecutorService的几个方法说明
Executors提供了一些方便创建ThreadPoolExecutor的常用方法,主要有以下几个:1、 Executors.newFixedThreadPool(int nThreads);创建固定大小(nThreads,大小不能超过int的最大值)的线程池//线程数量int nThreads = 20;//创建executor 服务ExecutorSer
2016-04-10 21:55:01 632
转载 JAVA多线程和并发基础面试问答
JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问
2016-04-10 21:39:27 366
转载 Java并发编程:Lock
Java并发编程:Lock 在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐
2016-04-10 21:34:39 388
原创 典型的顺序死锁
package com.thread.deadlock;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * 死锁的出现分2中情况: * 1.锁顺序死锁 * 2.资源死锁 * * * 本例演示的是锁顺序死锁 * 当一个线程永远占用一个锁,而其他线
2016-04-10 20:21:30 807
转载 线程的动态死锁
package com.thread.deadlock;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import javax.naming.InsufficientResourcesException;/** * 动态加锁顺序产生的死锁 * * 使用模拟转
2016-04-10 20:11:01 701
转载 Java 信号量 Semaphore 介绍
Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。比如在Windows下可以设置共享文件的最大客户端访问个数。 Sema
2016-04-10 15:37:36 465
转载 Java并发编程:深入剖析ThreadLocal
Java并发编程:深入剖析ThreadLocal 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文目录大纲: 一.对ThreadLocal的理解 二.
2016-04-10 14:49:26 351
原创 阻塞队列中的安全中断
本文的小例子主要是说明如何安全中断阻塞队列中的任务,避免使用interrupt()中断线程,造成堵塞队列中没有被消费的任务都被忽略。package com.thread;import java.io.PrintWriter;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.Blockin
2016-04-10 12:15:01 1797
原创 线程的取消和中断
下面介绍取消线程常用的4中方式:一、通过设置“cancelled requested”标志来中断线程java中的任务取消实现: 是通过一个协作机制完成的,使用一个线程能够要求另一个线程停止当前的工作。 这样做的原因是: 如果直接要求一个任务、线程或者服务立即停止,可能会导致共享的数据结构处于不一致的状态。 当要求他们停止时,他们首先会清除当前进程中的工
2016-04-10 10:46:27 860
原创 线程饥饿死锁
线程饥饿死锁: 在一个线程池中,如果一个任务依赖于其他任务的执行,就可能产生死锁。对应一个单线程话的Executor,一个任务将另一个任务提交到相同的Executor中,并等待新提交的任务的结果,这总会引发死锁。第二个任务滞留在工作队列中,直到第一个任务完成,但是第一个任务不会完成,因为它在等待第二个任务的完成。 同样在一个大的线程池中,如果所有线程执行的任务
2016-04-10 09:39:01 7425 2
转载 ExecutorService.invokeAny()和ExecutorService.invokeAll()的使用剖析
原文:http://blog.csdn.net/aitangyong/article/details/38172189ExecutorService是JDK并发工具包提供的一个核心接口,相当于一个线程池,提供执行任务和管理生命周期的方法。ExecutorService接口中的大部分API都是比较容易上手使用的,本文主要介绍下invokeAll和invokeAll方法的特性和使用。我们先提供
2016-04-08 18:42:54 2779
原创 任务的批量提交invokeAll两种方法的区别
ExecutorService的invokeAll方法有两种用法:1.exec.invokeAll(tasks)2.exec.invokeAll(tasks, timeout, unit)其中tasks是任务集合,timeout是超时时间,unit是时间单位两者都会堵塞,必须等待所有的任务执行完成后统一返回,一方面内存持有的时间长;另一方面响应性也有一定的影响,毕竟大家都喜欢看看刷
2016-04-08 18:34:36 32807 2
原创 future给任务设置时限
如果一个活动无法再某个确定的时间内完成,那么它的结果就失效了,此时程序可以放弃该活动。使用future.get(timeout, unit):在结果准备好后立即返回,如果在时限内没有准备好,就会抛出TimeoutException。 如果任务超时后,future.cancel(true)取消任务。小案例:在预期时间加载广告页面package com.thread;imp
2016-04-08 15:32:25 6560
原创 线程池中CompletionService的应用
当使用ExecutorService启动了多个Callable后,每个Callable会产生一个Future,我们需要将多个Future存入一个线性表,用于之后处理数据。当然,还有更复杂的情况,有5个生产者线程,每个生产者线程都会创建任务,所有任务的Future都存放到同一个线性表中。另有一个消费者线程,从线性表中取出Future进行处理。CompletionService正是为此而存在,
2016-04-07 23:40:41 1070
转载 JAVA线程池shutdown和shutdownNow的区别
shutDown() 当线程池调用该方法时,线程池的状态则立刻变成SHUTDOWN状态。此时,则不能再往线程池中添加任何任务,否则将会抛出RejectedExecutionException异常。但是,此时线程池不会立刻退出,直到添加到线程池中的任务都已经处理完成,才会退出。 shutdownNow() 根据JDK文档描述,大致意思
2016-04-07 23:33:47 759
原创 Java中的Runnable、Callable、Future、FutureTask的区别与示例
Java中存在Runnable、Callable、Future、FutureTask这几个与线程相关的类或者接口,在Java中也是比较重要的几个概念,我们通过下面的简单示例来了解一下它们的作用于区别。Runnable其中Runnable应该是我们最熟悉的接口,它只有一个run()函数,用于将耗时操作写在其中,该函数没有返回值。然后使用某个线程去执行该runnable即可实现多线程,
2016-04-07 23:21:55 2388 1
搭建eclipse+tomcat开发环境.pdf
2012-12-03
学习微服务必须了解的一些通用模式
2021-03-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人