Java
_Emily
这个作者很懒,什么都没留下…
展开
-
JAVA华丽转身 —— I/O流
一、认识 流是数据的流动,是一种处理输入输出的简便方式。就像流水一样,有输入输出。如下图: 数据从一个数据文件读取出来,写入到另一个数据文件。读取数据的对象就是输入流,能向其写入数据的对象就是输出流。 流的特点:流是一维的,流是单向的。是对数据传输的总称或抽象。二、分类原创 2014-02-19 11:17:37 · 2828 阅读 · 49 评论 -
多线程编程(一)--进程和线程之由来
Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程。当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通使用的,需要在实践中不断积累。由于并发肯定涉及到多线程,因此在进入并发编程主题之前,我们先来了解一下进程和线程的由来,这对后面对并发编程的理解将会有很大的帮助。 下面是本文的目录大转载 2015-06-27 15:42:35 · 1383 阅读 · 5 评论 -
Java深入浅出系列(一)——浅析Java反射机制
一、反射的理解 反射类似于我们平时见到的平面镜的反射:被反射的目标(任意一个已知名称的类),反射出来的“镜像”(我们的类对象中任意一个类都对应有一个类对象>),通过这个“镜像”,类对象,我们就可以在运行时获取任意一个已知名称的类对应的信息。 二、Java反射机制提供的功能Java反射机制主要提供了以下功能:在运行时判断任意一个独享所属的类;在运行时构造任意一个类的对象原创 2015-06-19 17:03:47 · 2035 阅读 · 1 评论 -
Java深入浅出系列(四)——深入剖析动态代理--从静态代理到动态代理的演化
静态代理 如上图,在程序运行之前,程序员就要编写Proxy,然后进行编译,即在程序运行之前,代理类的字节码文件就已经生成了(Proxy类的class文件已经存在了)。 静态代理虽然在增强现有的接口业务功能方面有很大优点,但是大量使用这种静态代理,会使系统内的类的规模大量增大,不易维护;并且Proxy类和RealSubject类功能本原创 2015-06-27 12:05:59 · 1741 阅读 · 2 评论 -
多线程编程(五)--线程池
JDK 1.5之后加入了Java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。 一、池的由来 拿数据库来举例子:每当一个请求到达就创建一个新的链接,但当有大量请求并发访问时,就会不断地创建和销毁链接,开销很大。为了提高效率,达到复用的效果,就有了池的概念。 线程原创 2015-06-29 08:09:01 · 2828 阅读 · 6 评论 -
多线程编程(六)--Callable&Future
Thread类和Runnable接口和Java内存管理模型使得多线程编程简单直接。但是Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值。 Callable接口和Future接口的引入以及它们对线程池的支持优雅的解决了这两个问题。 Callable接口类似于Runnable接口,Callable接口被线程执行后,可原创 2015-06-29 08:09:37 · 2486 阅读 · 6 评论 -
多线程编程(四)--线程同步
当使用多个线程来访问同一个数据时,就容易出现线程安全的问题。例如,银行取钱。当我们去自动取款机取钱时,正好另一个人转账,即多个线程修改同一数据,这时就容易出现线程安全问题。线程安全/** * 账户类,该类封装了账户编号和余额两个属性 * @author Emily-T * */public class Account { //账户编号 private String原创 2015-06-28 10:48:21 · 2467 阅读 · 7 评论 -
Nginx系列(三)--管理进程、多工作进程设计
Nginx由一个master进程和多个worker进程组成,但master进程或者worker进程中并不会再创建线程。 一、master进程和worker进程的作用 master进程 不需要处理网络事件,不负责业务的执行,只会通过管理worker等子进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。 master是原创 2015-07-01 07:59:02 · 4835 阅读 · 6 评论 -
Nginx系列(二)--模块化
高度模块化的设计设Nginx架构的基础。在Nginx中,除了少量的核心代码,其他一切皆为模块。模块化设计具有以下特点:1、高度抽象的模块接口2、灵活性3、配置模块的设计使Nginx提供了高可配置性、高可扩展性、高可定制性、高可伸缩性。4、核心模块接口简单化5、多层次、多类别的模块设计 所有模块间是分层次、分类别的,官方Nginx有五大类型的模块:核心模块、配原创 2015-07-01 07:58:18 · 4467 阅读 · 7 评论 -
Nginx系列(一)--nginx是什么?
一、介绍 Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。 Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,原创 2015-07-01 07:57:58 · 68263 阅读 · 17 评论 -
Nginx系列(四)--工作原理
上篇文章介绍了Nginx框架的设计之管理进程以及多个工作进程的设计,master进程用来管理通过fork子进程与子进程通信,子进程通过处理进程信号接到master的通信去处理请求。 Nginx工作原理: Nginx会按需同时运行多个进程:一个主进程和几个工作进程,配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manage原创 2015-07-03 09:42:02 · 4587 阅读 · 7 评论 -
JAVA虚拟机的生命周期
一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。 Java虚拟机实例通过调用某个初始类的main()方法来运行一个Java程序。而这个main()转载 2015-12-14 16:13:14 · 2299 阅读 · 6 评论 -
Java深入浅出系列(二)——深入剖析代理模式
代理模式理解 为其他对象提供一种代理以控制这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。 为什么需要代理? 因为一个良好的设计不应该轻易的修改。这正是开闭原则的体现:一个良好的设计应该对修改原创 2015-06-19 21:00:12 · 1310 阅读 · 1 评论 -
多线程编程(三)--创建线程之Thread VS Runnable
前面写过一篇基础的创建多线程的博文:http://blog.csdn.net/liutengteng130/article/details/20036517那么本篇博文主要来对比一下这两种创建线程的区别。 继承Thread类: 还拿上篇博客的例子来说: 四个线程各自卖各自的票,说明四个线程之间没有共享,是独立的线程。每原创 2015-06-27 20:41:39 · 2786 阅读 · 6 评论 -
多线程编程(二)--进程&&线程
看完上篇博文的介绍后,大家应该大概了解进程和线程的由来。有了这样一个背景我们进一步来看一下线程和进程。 引入进程:进程可以提高系统的并发性,提高CPU的使用率,从而提高程序的性能。在以前单道操作系统中,一次只执行一个程序,这样执行效率很低,资源得不到充分的利用。所以后来多道操作系统出现了,由于多道操作系统一次并发执行很多程序,但管理起来非常麻烦。因此进程的概念就被提出来了,它是一个程序动态原创 2015-06-27 19:27:55 · 1315 阅读 · 5 评论 -
Java华丽转身 —— 容器API
Java.util包,包含许多类和接口,包括集合框架。集合框架是一个复杂接口和类的层,提供了管理对象组的优化技术。其中Collection类就是属于集合框架中的一个接口。 Collection接口是允许处理一组对象,它位于集合层次结构的顶部。是构造集合框架的基础,它必须被定义的任意类所实现。 List与Set List原创 2014-02-05 21:35:33 · 2754 阅读 · 38 评论 -
Java华丽转身 —— 异常处理
Java异常是一个运行时错误。异常可以是Java运行时系统生成,也可以是程序代码造成的。 Java抛出的异常与违反Java语言规则的基本错误或Java执行环境的约束有关。代码生成的异常通常用于向方法的调用者报告某些错误条件。 设计良好的程序应该在异常发生时提供处理错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。这就是程序的健壮原创 2014-01-28 15:46:36 · 2671 阅读 · 27 评论 -
Java华丽转身 —— 多线程(一)必备知识
什么是线程,什么是进程? 线程是一个程序内部的顺序控制流,运行中的程序就是进程,进程是静态的。 线程和进程有什么区别? 每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销。 线程可以看成是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。原创 2014-02-27 12:05:20 · 5826 阅读 · 88 评论 -
Java华丽转身 —— 内存学习
Java的内存主要包含4块,即heap(堆内存)、stack(栈内存)、datasegment(静态变量或是常量存放区)、codesegment(方法区) 栈:存取速度快,存放一些基本类型的变量或对象的引用变量。主要用来执行程序的。 堆:存取速度慢,通过New()方法来创建的对象或数组。主要用来存放对象的。 静态常量区:存放的是静态变量(类变量)或是常量原创 2014-01-17 11:16:10 · 3372 阅读 · 59 评论 -
Java华丽转身 —— GUI编程宝典
GUI,Graphics User Interface,图形用户界面。GUI直观的将计算机的功能呈现给用户,图形界面在视觉上更容易接受、更简单直观。 GUI需要操作系统和硬件的支持。因此,GUI编程往往要处理移植性问题。Java的GUI编程有相对比较好的可移植性。 GUI的三要素:组件、容器、事件。 组件,继承了一定的功能模块,提供了公用接原创 2014-03-12 08:17:11 · 34949 阅读 · 105 评论 -
Java华丽转身 —— J2EE规范(一) JNDI Java Naming and Directory Interface
Java命名和目录接口,是一组在Java应用中访问命名和目录服务的API。为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。 命名服务将名称和对象联系起来,可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称还有属性。 一、命名服务与目录服务 命名服务:作为一种基础设施原创 2014-03-19 08:16:02 · 5329 阅读 · 49 评论 -
Java华丽转身——浅识J2EE十三标准
J2EE技术的基础便是Java 2平台,不但有J2SE平台的所有功能,同时还提供了对EJB,Servlet,JSP,XML等技术的全面支持,同时J2EE还具有一次编译,到处运行的特点,灵活性很大。下面总结了J2EE十三个标准的特性。 1、JDBC(Java Database Connectivity):Java数据库连接 JDBC一看上去就很容易联想到ODBC,原创 2014-04-02 08:11:15 · 3557 阅读 · 44 评论 -
Java华丽转身 —— JSP剖析
JSP有点类似于ASP,是通过在HTML文件中加入java程序片段(Java Scriptlet)和JSP标记(tag),就构成了JSP文件。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。 JSP工作原理 当一个JSP页面第一次被访问的时候,JSP引擎将执行以下步骤: 首先会把原创 2014-03-26 08:29:23 · 3537 阅读 · 54 评论 -
Java华丽转身 —— 多线程(二)——同步
多线程在同时运行的时候,执行的先后次序是无法确定的,如果这些线程同时操作某个公共的资源,最终的执行结果是不可预测的,所以要在代码中采取某些方法来保护公共资源,保证同一时刻只允许一个线程访问这些资源。 线程同步机制: 1、多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。原创 2014-03-05 07:53:21 · 4983 阅读 · 42 评论 -
【Hibernate学习】——持久化对象的三种状态
在Hibernate中,持久化对象在被操作的过程中可以分为三个时期,这三个时期是和Session的周期相关的,因为Hibernate中的操作都是基于Session完成的。Session的特定方法能使对象从一个状态转换到另一个状态。 持久化对象的生命周期有三种,瞬时状态、持久状态和分离状态。如下图: 瞬时态 不曾进行持久化,未与任原创 2014-06-04 21:38:57 · 2417 阅读 · 36 评论 -
Java深入浅出系列(三)——深入剖析动态代理--性能比较
动态代理是指在运行时,动态生成代理类。代理类的字节码将在运行时生成并载入当前的ClassLoader. 生成动态代理类的方法很多,如JDK自带的动态代理、CGLIB、Javassist或者ASM库。 JDK动态代理使用简单,它内置在JDK中,因此不需要引入第三方Jar包,但相对功能比较弱。CGLIB和Javassist都是高级的字节码生成库,总体性能比原创 2015-06-19 22:56:22 · 7393 阅读 · 3 评论