java
fly_air
这个作者很懒,什么都没留下…
展开
-
Tomcat请求处理(六) -- Servlet实例创建
首先,来看一下Servlet的载入过程。 具体是在org.apache.catalina.core.StandardWrapper#allocate()这个方法中,源代码如下: Java代码 public Servlet allocate() throws ServletException { if (unloading)转载 2014-01-23 14:13:00 · 1375 阅读 · 0 评论 -
Tomcat请求处理(二) -- 请求处理框架
书接上文。 当Tomcat的Acceptor监听到有请求到来时,就会结束阻塞,继续进行程序下面的动作。如下面的代码所示: Java代码 public void run() { while (running) { while (paused) { try {转载 2014-01-23 14:16:03 · 728 阅读 · 0 评论 -
如何使用Proxy模式及Java内建的动态代理机制
1.Proxy模式代理模式支持将某些操作从实际的对象中分离出来,通过它的代理类提供处理。这样便于修改和管理这些特定的操作。下面示例一个代理模式的实现。>Subject.javapackage com.zj.proxy; public class RealSubject implements Subject { public voi转载 2014-01-20 13:54:41 · 702 阅读 · 0 评论 -
8张图理解Java
一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选。如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟。1、字符串不变性下面这张图展示了这段代码做了什么12String s = "abcd";s = s.concat("ef");转载 2014-06-15 09:20:21 · 532 阅读 · 0 评论 -
对密钥,密钥对,公钥,证书,私钥,jks,keystore,truststore,cer,pfx的一点理解
密钥:我理解是公钥+私钥的统称。密钥对:公钥(证书)和私钥成对存在。通信双方各持有自己的私钥和对方的公钥。自己的私钥需密切保护,而公钥是公开给对方的。在windows下,单独存在的公钥一般是后缀为.cer的文件A用自己的私钥对数据加密,发给B,B用A提供的公钥解密。同理B用自己的私钥对数据加密,发送给A后,A用B的公钥解开。公钥的两个用途:1。验证对方身份:防止其他人假转载 2014-07-05 11:10:29 · 1785 阅读 · 0 评论 -
java动态代理(JDK和cglib)
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为转载 2015-05-31 02:19:29 · 379 阅读 · 0 评论 -
JVM 内存设置大小(Xms Xmx PermSize MaxPermSize)
Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains. It is strongly recommendedthat you exit and restart MyEclipse with new virtual ma转载 2015-08-26 22:28:23 · 754 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置: java -Xmx3550m -Xms3550m -...转载 2015-08-26 22:17:28 · 448 阅读 · 0 评论 -
深入理解Java:注解(Annotation)基本概念
深入理解Java:注解(Annotation)基本概念转载 2016-01-06 12:01:41 · 310 阅读 · 0 评论 -
深入理解Java:注解(Annotation)自定义注解入门
深入理解Java:注解(Annotation)自定义注解入门转载 2016-01-06 12:22:25 · 323 阅读 · 0 评论 -
深入理解Java:注解(Annotation)--注解处理器
深入理解Java:注解(Annotation)--注解处理器转载 2016-01-06 12:26:09 · 357 阅读 · 0 评论 -
java垃圾回收机制详解
一、按代实现垃圾回收先看一下整体结构:新生代(Young generation): 绝大多数最新被创建的对象会被分配到这里,由于大部分对象在创建后会很快变得不可到达,所以很多对象被创建在新生代,然后消失。对象从这个区域消失的过程我们称之为”minor GC“。新生代中存在一个Eden区和两个Survivor区。新对象会首先分配在 Eden 中(如果新转载 2016-01-31 14:34:29 · 393 阅读 · 0 评论 -
java 线上问题定位工具
java 线上问题定位工具转载 2016-10-02 15:29:57 · 1213 阅读 · 0 评论 -
JVM的内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen
JVM的内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen转载 2017-03-29 12:38:09 · 2259 阅读 · 0 评论 -
Tomcat的Session管理(二) - Session后台处理
Tomcat会开启一个后台线程每隔一段时间检查Session的有效性,这个线程是在Tomcat启动的时候当StardardEngine启动时随之启动的。可以参看StardardEngine的基类ContainerBase的#threadStart()方法: Java代码 protected void threadStart() { if (thr转载 2014-01-23 14:09:35 · 1547 阅读 · 0 评论 -
Tomcat的Session管理(一) - Session的生成
Session对象的创建一般是源于这样的一条语句: Session session = request.getSession(false);或者Session session = request.getSession();如果不在乎服务器压力可能多那么一点点的话。 在Tomcat的实现中,这个request是org.apache.catalina.connector.Request类的转载 2014-01-23 14:08:25 · 3343 阅读 · 0 评论 -
JAVA、CORBA版HelloWorld程序
开发环境:JDK1.5,Windows XP实现步骤: A 编写编译IDL接口 B 编写编译服务端程序 C 编写编译客户端程序 D 运行实现详解:1 编写IDL接口HelloWorld.idl:module sample{ interface HelloWorld{ string sayHello(); };};转载 2014-01-23 14:03:13 · 1074 阅读 · 0 评论 -
Ant入门教程
本内容包含了Ant的历史简要介绍,Ant的功能以及Ant框架的介绍,并对下载安装使用Ant进行了示例介绍,同时通过一个Java程序讲解了Ant的基本使用方法。1. Ant简介:这里引用Ant帮助文档中对Ant的介绍: Apache Ant是一个基于Java的构建工具。从理论上讲,也是一种类似于Make的工具,只是去除了Make工具的缺点。转载 2013-11-20 10:01:08 · 787 阅读 · 0 评论 -
Servlet单例多线程分析
Servlet的生命周期:1. Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法;2. service运行请求对应的doXXX(doGet,doPost)方法;3. 服务器销毁实例,运行其destory方法;Servlet的生命周期由Servlet容器管理;Servlet容器 Servlet容器的主要任务就是管理Servlet的生命周期转载 2013-11-24 12:40:09 · 677 阅读 · 0 评论 -
myeclipse自动生成注释
在使用Eclipse编写Java代码时,自动生成的注释信息都是按照预先设置好的格式生成的,例如其中author的属性值。我们可以在Eclipse中进行设置自己希望显示的信息。 现在看看如何修改我们的用户名即作者信息:点击Windows->Preferences->Java->Code Style->CodeTemplates, 然后我们就可以选转载 2013-12-07 21:23:22 · 597 阅读 · 0 评论 -
Java transient Serializable Externalizable 关键字使用
1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,转载 2013-12-29 15:34:40 · 827 阅读 · 0 评论 -
JVM内存配置详解
基本概念 堆/Heap JVM管理的内存叫堆;在32Bit操作系统上有4G的限制,一般来说Windows下为2G,而Linux 下为3G;64Bit的就没有这个限制。 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64但小于1G。 JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4但小于1G。 默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制转载 2013-12-30 15:39:39 · 766 阅读 · 0 评论 -
java 泛型
Java代码 class Point{ // 此处可以随便写标识符号,T是type的简称 private T var ; // var的类型由T指定,即:由外部指定 public T getVar(){ // 返回值的类型由外部决定 return var ; } public void se转载 2014-01-03 09:08:20 · 567 阅读 · 0 评论 -
java多线程
1、多线程有几种实现方法?同步有几种实现方法?多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notifywait():使一个线程处于等待状态,并且释放所持有的对象的lock。sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉Interrupted转载 2013-12-24 14:23:17 · 597 阅读 · 0 评论 -
JAVA多线程suspend()、resume()和wait()、notify()的区别
suspend() 和 resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,并且不会自动恢复,必须其对应的resume() 被调用,才能使得线程重新进入可执行状态。典型地,suspend() 和 resume() 被用在等待另一个线程产生的结果的情形:测试发现结果还没有产生后,让线程阻塞,另一个线程产生了结果后,调用 resume() 使其恢复。但suspend()方转载 2013-12-26 15:09:43 · 651 阅读 · 0 评论 -
java 通过Thread实现多线程
1. Thread getID()获取线程ID。getName(), setName()获取和设置线程名。getPriority(), setPriority()获取和设置线程优先级。getState()获取线程状态。getThreadGroup转载 2013-12-26 15:11:02 · 695 阅读 · 0 评论 -
Tomcat请求处理(七) - Servlet实例的调用
Tomcat请求处理中Servlet实例的调用是和Filter的调用联系在一起的,是在StandardWrapperValve类的#invoke()方法中调用的,前面的文章中提到过,就是下面的这句: filterChain.doFilter(request.getRequest(), response.getResponse()); 它的源代码如下: Java代码转载 2014-01-23 14:11:53 · 1290 阅读 · 0 评论 -
Tomcat请求处理(五) -- 请求在容器间的流动
请求在Tomcat中传到了CoyoteAdapter的#service()方法中后,就要准备进入Pipeline了,如#service()方法中的这句所示: connector.getContainer().getPipeline().getFirst().invoke(request, response); 这里的Container是Engine,然后得到它的Pipeline对象,然转载 2014-01-23 14:13:51 · 812 阅读 · 0 评论 -
Tomcat请求处理(四) -- Request, Response, 和Pipeline
1. Request和Response 当处理请求的时候,Tomcat使用org.apache.coyote.Request和org.apache.coyote.Response对象来封装对Socket的数据处理,就好像它们是输入流和输出流一样。 Request和Response是low-level的,并不是用于在开发中使用的,所以,Tomcat使用了适配器模式定义了两个类org.apac转载 2014-01-23 14:14:28 · 922 阅读 · 0 评论 -
Tomcat请求处理(三) -- coyote请求处理
在上一篇文章文章中,Tomcat的请求处理到了JIoEndpoint$Worker#run()方法的handler.process(socket)这个调用中。 这个handler在JIoEndpoint中是这样定义的: Java代码 protected Handler handler = null; 这个Handler是在JIoEnd转载 2014-01-23 14:15:17 · 3631 阅读 · 0 评论 -
会话COOKIE 持久COOKIE
引用当浏览器得到这个sessionid会将它放在自己的进程内存里,这里不同的浏览器会有所不同,IE进程间不能共享这个sessionid,也就是新开一个IE将不能共享这个sessionid;而Firefox进程间可以共享.然后你继续发请求给这个网站的时候,浏览器就会把这个sessionid放在请求头里发送给该服务器了,这样服务器得到sessionid后再和自己内存里存放的sessionid对转载 2014-01-23 14:18:29 · 1452 阅读 · 0 评论 -
String参数传递问题的症结所在
其实,要想真正理解一个类或者一个API/框架的最直接的方法就是看源码。 下面我们来看看new出String对象的那小段代码(String类中),也就是String类的构造函数: public String(String original) { int size = original.count; char[] originalValue =转载 2013-11-20 09:47:15 · 848 阅读 · 0 评论