Java
Devon_Cheng
这个作者很懒,什么都没留下…
展开
-
明明白白Unsupported major.minor version xx.0的错误
我们在尝鲜 JDK1.5 的时候,相信不少人遇到过 Unsupported major.minor version 49.0 错误,当时定会茫然不知所措。因为刚开始那会儿,网上与此相关的中文资料还不多,现在好了,网上一找就知道是如何解决,大多会告诉你要使用 JDK 1.4 重新编译。那么至于为什么,那个 major.minor 究竟为何物呢?这就是本篇来讲的内容,以使未错而先知。我觉得我是转载 2014-09-18 17:21:17 · 425 阅读 · 0 评论 -
SpringMVC中的文件上传
这是用的是SpringMVC-3.1.1、commons-fileupload-1.2.2和io-2.0.1首先是web.xml[html] view plaincopyprint?xml version="1.0" encoding="UTF-8"?> web-app version="2.5" xml转载 2014-11-20 16:16:13 · 612 阅读 · 0 评论 -
Google Java编程风格指南
January 20, 2014作者:Hawstein出处:http://hawstein.com/posts/google-java-style.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。目录前言源文件基础源文件结构格式命名约定编转载 2014-11-06 10:39:34 · 507 阅读 · 0 评论 -
Effective Java Item7:Avoid Finalizers,解释为什么finalize是不安全的,不建议使用
memory的释放并不是通过finalize(),因为finalize不安全而且影响能”。Effective Java一书中也提到:Avoid Finalizers。人都有潜在的叛逆意识,别人给的结论或者制定的规范,除非有足够的理由说服你,除非懂得这么做背后的原因,否则只能是死记硬背,没有形象深入的理解,不能学到真正的东西。本文通过自己的理解和一些实际的例子,和大家一起更形象的理解finalize转载 2014-11-06 10:40:18 · 791 阅读 · 1 评论 -
Tomcat--单向https与双向https的配置
tomcat6配置: 1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址 如果只是加密,我感觉单向就行了。 如果想要用系统的人没有证书就访问不了系统的话,就采用双向 单向配置: 第一步:为服务器生成证书 使用keytool 为 Tomcat 生成证书,假定目标机器的域名转载 2014-11-24 12:34:47 · 861 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种转载 2014-11-24 17:01:12 · 484 阅读 · 0 评论 -
Tomcat 7最大并发连接数的正确修改方法
这是个很简单的问题,但是搜了一圈,发现大家都写错了。所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置文件server.xml中的配置中,和连接数相关的参数有: minProcess转载 2014-11-06 22:00:26 · 465 阅读 · 0 评论 -
深入java并发--Lock与synchronized
java有像syncronized这样的内置锁,但为什么还需要lock这样的外置锁?性能并不是选择syncronized或者lock的原因,jdk6中syncronized的性能已经与lock相差不大。如果要选择lock的话,会基于lock拥有的几个优点(内置锁所不具备): 1.如果希望当获取锁时,有一个等待时间,不会无限期等待下去。 2.希望当获取不到锁时,能够响应中断转载 2014-11-24 16:40:48 · 582 阅读 · 0 评论 -
Apache反向代理到Jetty
apache和jetty组合使用有三种方式Html代码 There are three main ways to connect Apache to Jetty: 1. Using Apache mod_proxy and a normal Jetty HTTP connector. 2. Using Apache mod_proxy_aj转载 2014-12-16 18:24:06 · 711 阅读 · 0 评论 -
Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
JDK内置工具使用一、javah命令(C Header and Stub File Generator)二、jps命令(Java Virtual Machine Process Status Tool)三、jstack命令(Java Stack Trace)四、jstat命令(Java Virtual Machine Statistics Monitoring To转载 2014-12-23 14:55:13 · 540 阅读 · 0 评论 -
JVM最大线程数
工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题、分析问题、解决问题。 一、认识问题:首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4,测试程序:Java代码转载 2014-12-23 14:53:09 · 761 阅读 · 0 评论 -
一个牛人给java初学者的建议
给初学者之一:浅谈java及应用学java不知不觉也已经三年了从不知java为何物到现在一个小小的j2ee项目经理虽说不上此道高手,大概也算有点斤两了吧每次上网,泡bbs逛论坛,没少去java相关的版面总体感觉初学者多,高手少,精通的更少 由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间还有一个很重要的原因就是ja转载 2014-12-24 14:08:15 · 906 阅读 · 0 评论 -
Apache+Tomcat https应用原理与实践
一、总结前一天的学习在前一天的学习中我们知道、了解并掌握了Web Server结合App Server是怎么样的一种架构,并且亲手通过Apache的Http Server与Tomcat6进行了整合的实验。这样的架构的好处在于:ü 减轻App Server端的压力,用Web Server来分压,即Web Server只负责处理静态HTML内容,而App Server专职负转载 2014-12-24 16:19:50 · 701 阅读 · 0 评论 -
maven的依赖范围
compile(编译范围)compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath中可用,同时它们也会被打包。 provided(已提供范围)provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用。例如,如果你开发了一个web应用,你可能在编译classpath中需要可用的Se转载 2015-03-16 13:52:01 · 435 阅读 · 0 评论 -
Java:对象的强、软、弱和虚引用
本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。1.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用转载 2015-03-26 10:59:18 · 431 阅读 · 0 评论 -
maven核心,pom.xml详解
什么是pom? pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。 快速察看: 4.0.0 ... ... ... ... ...转载 2015-03-16 13:52:27 · 329 阅读 · 0 评论 -
maven常用命令
maven常用命令 mvn compile 编译主程序源代码,不会编译test目录的源代码。第一次运行时,会下载相关的依赖包,可能会比较费时间。 mvn test-compile 编译测试代码,compile之会后生成target文件夹,主程序编译在classes下面,测试程序放在test-classes下。 mvn test 运行应用程序中的单转载 2015-03-16 13:55:45 · 403 阅读 · 0 评论 -
Spring MVC 中的基于注解的 Controller
Spring MVC 中的基于注解的 Controller@Controller 基于注解的 Controller 终于来到了基于注解的 Spring MVC 了。之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求。实际上,ControllerClassNam转载 2015-03-26 11:06:39 · 457 阅读 · 0 评论 -
Jetty 的工作原理以及与 Tomcat 的比较
Jetty 的基本架构Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler,所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。Jetty 的基本架构下图是 Jetty 的基本架构图,转载 2014-10-16 23:01:15 · 505 阅读 · 0 评论 -
用java的nio技术实现的异步连接池
http://wenku.baidu.com/link?url=2vWQpeSyUQJQtclbYIwULoPe9Rf-UGdeUD0dNY7DhwIMgkVl1PARqmli-tmQckDB7C05asloIJOCN5JbI1BSLUQyQFuK1qO9U7duAYLkz_7转载 2014-10-16 21:44:31 · 885 阅读 · 0 评论 -
Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析
门面设计模式门面设计模式在 Tomcat 中有多处使用,在 Request 和 Response 对象封装中、Standard Wrapper 到 ServletConfig 封装中、ApplicationContext 到 ServletContext 封装中等都用到了这种设计模式。门面设计模式的原理这么多场合都用到了这种设计模式,那这种设计模式究竟能有什么作用呢?顾名思转载 2014-10-17 17:49:28 · 478 阅读 · 0 评论 -
Spring代码分析:加载与初始化
一般的Web项目都会在web.xml中加入Spring监听器,内容如下: org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath*:applicationContext-struts.xml,classpath*:sp转载 2014-08-28 10:48:47 · 851 阅读 · 0 评论 -
JAVA NIO 简介
1. 基本 概念IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。所有语言运行时系统提供执行 I/O 较高级别的工具。 (c 的 printf scanf,java 的面向对象封装 )2. Java 标准 io 回顾Java 标准 IO 类库是 io 面向对象的一种抽象。基于本地方法的底层转载 2014-08-28 10:54:03 · 416 阅读 · 0 评论 -
Google Guava Collections 使用介绍
Google Guava Collections 使用介绍Google Guava Collections(以下都简称为 Guava Collections)是 Java Collections Framework 的增强和扩展。每个 Java 开发者都会在工作中使用各种数据结构,很多情况下 Java Collections Framework 可以帮助你完成这类工作。但是在有些场合你使用转载 2014-08-28 10:34:30 · 460 阅读 · 0 评论 -
Java 8 里的 Lambda
http://developer.51cto.com/art/201304/388411.htm转载 2014-09-23 14:21:19 · 429 阅读 · 0 评论 -
PushbackInputStream简介及用法
1. java.io.PushbackInputStream拥有一个PushBack缓冲区,从PushbackInputStream读出数据后,只要PushBack缓冲区没有满,就可以使用unread()将数据推回流的前端。2. 假设一个文本文件中同时存储有ASCII码范围的英文字符与BIG5范围的中文字符。想要判断那些位置是ASCII而哪些位置是BIG5中文字符,BIG5中文字符使用转载 2014-09-24 18:31:29 · 1114 阅读 · 0 评论 -
J2EE高手眼里的OSGi
OSGI(Open Service Gateway Initiative)联盟成立于1999年,它是一个非盈利的国际组织,旨在建立一个开放的服务规范,为通过网络向设备提供服务建立开放的标准,是开放业务网关的发起者。 OSGI联盟的初始目标是构建一个在广域网和局域网或设备上展开业务的基础平台,对OSGI的最早设计也是针对嵌入式应用的,诸如机顶盒、服务网关、手机、汽车等都是其应用的主要环境。转载 2014-09-25 16:18:17 · 586 阅读 · 0 评论 -
Tomcat的classloader
1 - Tomcat的类载入器的结构Tomcat Server在启动的时候将构造一个ClassLoader树,以保证模块的类库是私有的Tomcat Server的ClassLoader结构如下:其中:- Bootstrap - 载入JVM自带的类和$JAVA_HOME/jre/lib/ext/*.jar- System - 载入$CLASSPATH/*.class- C转载 2014-11-14 15:21:44 · 560 阅读 · 0 评论 -
线程池的研究
什么是线程池?诸如web服务器、数据库服务器、文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务。构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务。但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对转载 2014-10-12 22:31:21 · 530 阅读 · 0 评论 -
BlockingQueue
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个转载 2014-10-12 11:10:24 · 467 阅读 · 0 评论 -
ReentrantLock和Synchronized的区别
ReentrantLock可以成为公平锁。所谓公平锁就是让等待最长的线程最早获得该锁(获得锁的顺序和申请锁的顺序是一致的);与之对应的synchronized是非公平的、当然ReentrantLock也可以成为非公平锁;只是公平锁的性能相对差一些。synchronized锁是基于对象的,一个线程占有了锁,其他线程不能再进入这个对象的任何synchronized方法。而ReentrantLock转载 2014-10-12 23:18:51 · 588 阅读 · 0 评论 -
java自带线程池和队列详细讲解
一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是限制系统中执行线程的数量。转载 2014-10-12 22:26:01 · 420 阅读 · 0 评论 -
Java中的ReentrantLock和synchronized两种锁定机制的对比
多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它转载 2014-10-12 23:35:19 · 566 阅读 · 0 评论 -
JAVA线程池的分析和使用
1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。转载 2014-10-12 23:09:01 · 420 阅读 · 0 评论 -
class卸载、热替换和Tomcat的热部署的分析
这篇文章主要是分析Tomcat中关于热部署和JSP更新替换的原理,在此之前先介绍class的热替换和class的卸载的原理。一 class的热替换ClassLoader中重要的方法loadClass ClassLoader.loadClass(...) 是ClassLoader的入口点。当一个类没有指明用什么加载器加载的时候,JVM默认采用AppClassLoader转载 2014-10-15 16:28:48 · 598 阅读 · 0 评论 -
非常详细GC学习笔记
这是我公司同事的GC学习笔记,写得蛮详细的,由浅入深,循序渐进,让人一看就懂,特转到这里。一、GC特性以及各种GC的选择1、垃圾回收器的特性2、对垃圾回收器的选择2.1 连续 VS. 并行2.2 并发 VS. stop-the-world2.3 压缩 VS. 不压缩 VS. 复制二、GC性能指标三、分代回收四、J2SE 5.0转载 2014-10-15 08:30:06 · 456 阅读 · 0 评论 -
(翻译)什么是Java的永久代(PermGen)内存泄漏
本文是我对这篇文章的翻译:What is a PermGen leak? 为了便于阅读,我将原文附于此处,翻译穿插在其中。此外,为了防止原链接在未来某一天失效后,文中的图片再也看不到的问题,我将原文中的图片也保存到了本站的服务器上,我不知道原作者是否允许这样做,但我翻译本文仅在于传播知识的目的,在此向原作者表示深深的感谢:感谢你们的分享。WHAT IS A PERMGEN LEAK?转载 2014-10-14 23:15:44 · 652 阅读 · 0 评论 -
Java的NIO以及线程并发
一、NIO的出现 NIO是JDK1.4里面才出现的东东,他给大家带来的最大好处是异步socket。其它file,pipe暂时就不多谈了。 在JDK1.4出现之前,如果你需要编写一个Java服务器,为了实现异步操作,你必须为每个连接请求生成一个Java线程,当连接请求很多时,线程的调度,上下文切换,所付出的代价是非常昂贵,而且由于Java是跨平台的,各个平台对线程转载 2014-10-16 21:25:21 · 506 阅读 · 0 评论 -
一个重大轮子: 基于mysql数据库binlog的增量订阅&消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解析转载 2015-03-13 16:21:15 · 472 阅读 · 0 评论