自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 java language specification官方地址

背景:刚才在看volatile修饰符的时候看到作者都是在阅读了java language specification后翻译为自己的理解讲述出来的调查:java language specification即java语言规范,是一切java编程的基础参照文档。官方文档(Java Language and Virtual Machine Specifications):http:/

2015-07-17 18:44:38 1296

转载 超级全的Java开发中的23种设计模式详解

一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式

2015-07-17 18:21:47 1058

转载 Java 中的语法糖 (Syntactic Sugar)

语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会;但是这种语法对语言的功能并没有影响。Java中的泛型,变长参数,自动拆箱/装箱,条件编译等都是,下面做简单的介绍和分析。泛型

2015-07-17 17:15:43 412

转载 TCP的三次握手(建立连接)和四次挥手(关闭连接)

参照:http://course.ccniit.com/CSTD/Linux/reference/files/018.PDFhttp://hi.baidu.com/raycomer/item/944d23d9b502d13be3108f61 建立连接: 理解:窗口和滑动窗口TCP的流量控制TCP使用窗口机制进行流量控制什么是窗口?连接建立时,各端分配一块缓冲区用

2015-07-16 16:48:01 628

转载 Java面试题全集(下)

这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题,如果需要了解相关内容,可以参考我的另一篇文章《Java面试题集(86-115)》。此外,这篇文章还对企业应用架构、大型网站架构和应用服务器优化等内容进行了简单的探讨,这些内容相信对面试会很有帮助。

2015-07-16 16:31:35 1087

转载 JVM 结构图

一:Java技术体系模块图二:JVM内存区域模型1.方法区也称"永久代” 、“非堆”,  它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。

2015-07-16 16:18:17 550

转载 Servlet&JSP思维导图

2015-07-16 12:50:02 869

转载 Java面试题全集(中)

这部分主要是与Java Web和Web Service相关的面试题。96、阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。补充:Sun Micr

2015-07-16 11:23:15 783

转载 struts1源码分析(三)请求处理主线

在初始化主线一文中,我们详细分析了框架的初始化过程。本文将从Struts的另外一条主线出发,分析框架的实现原理。上文的初始化主线是一个铺垫,它将框架运行时需要的数据和组件准备完毕,为请求处理主线打下基础。本文基于Struts1.2.8版本,1.3.x系列的差异性将另文说明。 [请求处理接口]在整体概览和核心组件一文中,我们提到了Struts框架抽象出统一的业务逻辑基类,用户

2015-07-15 16:32:33 674

转载 struts1源码分析(二)初始化主线

在Struts1整体概览和核心组件一文中,我们提到了Struts1框架的两条主线:初始化主线和请求处理主线,本文将探寻Struts1框架初始化这条主线。本文使用的Struts版本为1.2.8, 不同版本会略有差异,1.3.x系列对请求处理进行优化,差异性将另文叙述。 [问题]在介绍初始化过程之前,我们先来思考几个问题。1. 如何在web应用中植入框架的初始化过程?

2015-07-15 16:25:47 620

转载 struts1源码分析(一)整体概览和核心组件

今年12月Apache官方正式宣布Struts1 EOL( End-of-Life),标志着这个里程碑式的框架正式告别历史舞台。从Struts1第一版发布,至今已十来余年,Apache在2008年底发布了最后一个版本1.3.10。这几年随着Struts2和Spring MVC等框架的红红火火,Struts1已被人慢慢淡忘。 从今天的角度来看Struts1,或许你能提出一堆设计上的问题,但每个框架背

2015-07-15 16:24:50 1214

转载 Hashcode的作用

============================================================ 如何理解hashCode的作用:============================================================ 以java.lang.Object来理解,JVM每new一个Object,它都会将这个Object丢到一个Has

2015-07-15 13:28:55 422

转载 Java7里try-with-resources分析

这个所谓的try-with-resources,是个语法糖。实际上就是自动调用资源的close()函数。和Python里的with语句差不多。例如:[java] view plaincopystatic String readFirstLineFromFile(String path) throws IOException {  

2015-07-14 23:07:15 465

转载 最新版本的Hive 0.13发布,增加ACID特性

【编者按】近日发布的Hive 0.13中采用了ACID语义的事务机制,在分区层保证事务原子性、一致性和持久性,并通过开启ZooKeeper或内存中的锁机制保证事务隔离性。数据流摄取、缓慢变化维、数据重述这些新的用例在新版本中成为了可能,当然新版Hive中也还存在一些不足,Hive新版本具体带来哪些改变呢?作者Alan Gates为我们带来了精彩分析。以下为原文:什么是ACID,有什

2015-07-14 20:51:05 918

转载 Java面试题全集(上)

2013年年底的时候,我看到了网上流传的一个叫做《Java面试题大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《Java面试大全》进行了全面的修订并重新发布在我的CSDN博客。在修订的过程中,参照了当时JDK最新版本(Java 7)给出了题目的答案和相关代码,去掉了EJB 2.x、JSF等无用内容或过时内容,补

2015-07-14 12:26:48 2091

转载 设计模式:常见类的关系小结

在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。1. 依赖(Dependence)         依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中

2015-07-14 00:22:51 354

转载 java:IO流学习小结

今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结:        IO流主要用于硬板、内存、键盘等处理设备上得数据操作,根据处理数据的数据类型的不同可以分为:字节流(抽象基类为InPutStream和OutPutStream)和字符流(抽象基类为Reader和Writer)。根据

2015-07-13 22:43:53 301

转载 java io

Java IO       本篇主要讲述IO相关的内容,主要包括:与IO相关的简单的历史背景知识;Java IO的简单分类;与IO设计相关的两个模式;同时列举几个简单的例子;分析其中几个实现的源代码;最后给大家一些简单扩展的例子。治学先治史,下面我们先从简单的历史开始吧! 一、      历史背景       “对语言设计人员来说,创建好的输入/输出系统是一项特别困

2015-07-13 19:45:00 336

转载 SpringMVC源码剖析(五)-消息转换器HttpMessageConverter

概述在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制,就是Spring3.x中新引入的HttpMessageConverter即消息转换器机制。Http请求的抽象还是回到请求-响应,也就是解析请求体,然后返回响应报文这个最基本的Http请求过程中来。我们

2015-07-11 14:33:01 994

转载 SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现

SpringMVC完成初始化流程之后,就进入Servlet标准生命周期的第二个阶段,即“service”阶段。在“service”阶段中,每一次Http请求到来,容器都会启动一个请求线程,通过service()方法,委派到doGet()或者doPost()这些方法,完成Http请求的处理。在初始化流程中,SpringMVC巧妙的运用依赖注入读取参数,并最终建立一个与容器上下文相关联的Spr

2015-07-11 14:32:10 779

转载 SpringMVC源码剖析(三)- DispatcherServlet的初始化流程

在我们第一次学Servlet编程,学java web的时候,还没有那么多框架。我们开发一个简单的功能要做的事情很简单,就是继承HttpServlet,根据需要重写一下doGet,doPost方法,跳转到我们定义好的jsp页面。Servlet类编写完之后在web.xml里注册这个Servlet类。除此之外,没有其他了。我们启动web服务器,在浏览器中输入地址,就可以看到浏览器上输出我们写好的

2015-07-11 14:31:09 951

转载 SpringMVC源码剖析(二)- DispatcherServlet的前世今生

上一篇文章《SpringMVC源码剖析(一)- 从抽象和接口说起》中,我介绍了一次典型的SpringMVC请求处理过程中,相继粉墨登场的各种核心类和接口。我刻意忽略了源码中的处理细节,只列出最简单的类甚至是接口类,目的就是让大家先从最高层次的抽象意义上来审视SpringMVC这个框架;我也刻意将SpringMVC和Struts2做对比,目的是让大家看到,SpringMVC究竟吸取了Sturts2设

2015-07-11 14:29:29 594

转载 SpringMVC源码剖析(一)- 从抽象和接口说起

SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的开发者们就算没使用过SpringMVC,也应该对其略有耳闻。我试图通过对SpringMVC的设计思想和源码实现的剖析,从抽象意义上的设计层面和实现意义上的代码层面两个方面,逐一揭开SpringMVC神秘的面纱,本文的代码,都是基于Spring的 3.1.3RELEASE版本。任何一个框架,都有

2015-07-11 14:28:52 967

转载 源码剖析之sun.misc.Unsafe

转载于:http://zeige.iteye.com/blog/1182571首先介绍一下什么是Compare And Swap(CAS)?简单的说就是比较并交换。CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在 CAS 

2015-07-11 13:18:12 381

转载 Java多线程之Lock的使用

[java] view plaincopyprint?import java.util.concurrent.ExecutorService;  import java.util.concurrent.Executors;  import java.util.concurrent.Future;  import java.util.concurrent.

2015-07-11 12:44:40 332

转载 数据库并发控制

1.    并发冲突当两个进程试图在同一时间修改同一数据,就会产生冲突。2.    并发控制有两种方式管理并发数据访问:乐观并发控制、悲观并发控制。这两种控制模式的区别在于,是在冲突发生前进行防止,还是在发生后采用某种方法来处理冲突。3.    悲观并发控制悲观并发模式假定系统中存在足够多的数据修改操作,以致任何确定的读操作都可能会受到由别的用户所制

2015-07-06 15:13:19 472

转载 阿里巴巴常考面试题及汇总答案

原文地址:http://blog.csdn.net/free0sky/article/details/7927275一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?答:   1、String是字符串常量,StringBuffer和StringBuilder都是字符串变量。后两者的字符内容可变,而前

2015-07-02 16:21:23 486

转载 WEB服务器与应用服务器的区别

一.简述WEB服务器与应用服务器的区别:1.WEB服务器:理解WEB服务器,首先你要理解什么是WEB?WEB你可以简单理解为你所看到的HTML页面就是WEB的数据元素,处理这些数据元素的应用软件就叫WEB服务器,如IIS、apache。 WEB服务器与客户端打交道,它要处理的主要信息有:session、request、response、HTML、JS、CS等。2.应用服

2015-07-02 16:17:52 351

转载 【Java线程】volatile的适用场景

把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。原子性意味着个时刻,只有一个线程能够执行一段代码,这段代码通过一个monitor object保护。从而防止多个线程在更新共享状态时相互冲突。可见性则更为微妙,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的。 —— 如果

2015-07-02 16:01:06 426

转载 HashMap实现原理分析

1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。      数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难

2015-07-02 13:10:36 285

转载 ARRAYLIST VECTOR LINKEDLIST 区别与用法

最近用到了,所以依然是转载ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向

2015-07-02 11:54:35 323

JMX所需jar包

JMX学习所需jar包,配套实践教程请参考本人博客。

2014-11-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除