Java
文章平均质量分 51
iteye_17171
这个作者很懒,什么都没留下…
展开
-
CyclicBarrier和CountDownLatch的区别
从网上搜到的文章,在讲到这两者的区别时,大多都引用了以下两句话:(01) CountDownLatch的作用是允许1或N个线程等待其他线程完成执行;而CyclicBarrier则是允许N个线程相互等待。(02) CountDownLatch的计数器无法被重置;CyclicBarrier的计数器可以被重置后使用,因此它被称为是循环的barrier。 但看完这两句话,从代码角度出发,这两...原创 2015-09-14 15:35:44 · 176 阅读 · 0 评论 -
转载:Tomcat Servlet 工作原理解析
从 Servlet 容器说起要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力。虽然它们是彼此依存的,但是又相互独立发展,这一切都是为了适应工业化生产的 结果。从技术角度来说是为了解耦,通过标准化接口来相互协作。既然接口是连接 Servlet 与 Servlet 容器的关键...原创 2015-10-08 15:34:40 · 164 阅读 · 0 评论 -
转载:Tomcat 系统架构与设计模式,第 1 部分: 工作原理
本文以 Tomcat 5 为基础,也兼顾最新的 Tomcat 6 和 Tomcat 4。Tomcat 的基本设计思路和架构是具有一定连续性的。Tomcat 总体结构Tomcat 的结构很复杂,但是 Tomcat 也非常的模块化,找到了 Tomcat 最核心的模块,您就抓住了 Tomcat 的“七寸”。下面是 Tomcat 的总体结构图:图 1.Tomcat 的总体结构从 上图...原创 2015-10-08 15:33:21 · 148 阅读 · 0 评论 -
转载:Jetty 的工作原理以及与 Tomcat 的比较
Jetty 的基本架构Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler,所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。Jetty 的基本架构下 图是 Jetty 的基本架构图,整个 J...原创 2015-10-08 15:31:48 · 92 阅读 · 0 评论 -
在本机使用maven编译tomcat8的源码并运行
前提说明:1. 基于tomcat 8.0.26版本的源码2. JDK1.7 操作说明:1. 从Apache网站下载tomcat源码2. 默认情况下,tomcat使用ant进行编译、打包,以下讲一下如何使用maven来编译、打包3. 在Eclipse里新建一个maven标准Java项目4. 将tomcat源码包下的Java里的文件拷贝到src/main/java下...原创 2015-09-29 10:33:58 · 354 阅读 · 1 评论 -
Spring的几个有用的小功能
一、 Spring的Profile功能这个功能的使用方法其实和Maven的profile是一样的,可以通过不同的参数来激活某些配置,这样便于我们在开发、调试以及生产模式下进行切换。对于类的配置,如果需要启用Profile功能,有以下几种方式: 1. 对于在配置类上使用注解方式的配置 @Configuration@Profile(value="productprofi...原创 2015-09-28 10:40:17 · 133 阅读 · 0 评论 -
Java的热部署能力
主要是收集整理一下关于Java热部署相关的功能,供以后需要时使用:1. Spring-loaded Spring-Loaded 使用Ⅰ-Getting Started Spring-Loaded 使用Ⅱ-Reload Jar 2. JRebel JRebel 使用Ⅰ-Getting Started 3. Java HotSwap Jav...原创 2015-09-23 10:00:14 · 104 阅读 · 0 评论 -
修改Java应用的Locale.DefautLocale值
Java的系统启动后,通过Locale.getDefault()能够得到一个当前应用默认的Locale信息,但如果希望我们的应用不管部署在任意机器上,可以保持同一个默认Locale怎么办呢?也就是如何修改Java启动的默认Locale。1. 可以在启动的入口代码处增加以下语句Locale.setDefault(newLocale("en","US"));2. 在Java启动时增加以下...原创 2015-09-22 11:11:56 · 3149 阅读 · 1 评论 -
log4j在运行时修改日志级别
Log4j是什么不多说了,平时我们在项目中使用log4j时,日志输出级别,一般都是预定义在定义文件里的,但问题在于,如果系统发生了错误,我们希望可以看到更多的信息,以确定错误发生的原因。大部分情况下,我们的做法了,停掉系统,修改log4j的输出级别,例如从info改到debug,然后再试着去重现错误。然后悲剧发生了,发现错误就是不出来,总不能系统一直在debug状态下运行吧,除非你真的完全不在乎...原创 2015-09-21 14:21:54 · 1766 阅读 · 0 评论 -
Java Service Provider实现
Java提供的Service Provider机制其实就是一种DI,在实现时只考虑接口(也就是规范),由其他第三方去实现具体的功能。这个跟Spring的依赖注入概念上差不多,Spring是框架级别的依赖注入,SPI则是语言自身提供的,不依赖于任何框架。 具体使用方法非常简单,假设系统中实现一个接口,例如com.test.DemoInterface,由第三方提供具体实现,有以下步骤:...原创 2015-09-21 13:58:08 · 2260 阅读 · 0 评论 -
play framework sbt里添加依赖树插件
最近项目中使用了play framework做为编译环境,默认情况下play没有提供类似于maven里那样查看整个项目依赖树的命令,通过各种搜索,终于搞定了依赖树的查看 。1. 在项目或者./sbt/version/plugins/plugins.sbt里添加以下内容addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "...原创 2015-11-17 12:23:49 · 403 阅读 · 0 评论