Java进阶学习
文章平均质量分 93
SherryWang0622
这个作者很懒,什么都没留下…
展开
-
Java内存模型和多线程基础
在多线程环境中,我们需要考虑的主要问题是:线程之间如何进行通信,在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信原创 2016-04-06 14:18:01 · 1042 阅读 · 0 评论 -
深入理解JAVA虚拟机(四):虚拟机类加载机制
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的。1、类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期如下图所示: 加载原创 2017-02-18 16:33:09 · 346 阅读 · 0 评论 -
深入理解JAVA虚拟机(二):垃圾收集器与内存分配
一、垃圾收集1、垃圾收集器在哪里收集? 程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知,因此这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题。而Java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多原创 2017-02-11 13:39:32 · 305 阅读 · 0 评论 -
全面解读Java NIO工作原理
◆ 输入/输出:概念性描述I/O 简介I/O ? 或者输入/输出 ? 指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上是内置在操作系统中的。单独的程序一般是让系统为它们完成大部分的工作。在 Java 编程中,直到最近一直使用 流 的方式完成 I/O。所有 I/O 都被视为单个的字节的移动,通过转载 2017-01-19 13:22:42 · 356 阅读 · 0 评论 -
深入理解JAVA虚拟机(三):类文件的结构
Java虚拟机不和包括Java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联,Class文件中包括了Java虚拟机指令集和符号表以及若干其他辅助信息。例如,使用Java编译器可以把JAva代码编译为存储字节码的Class文件,使用JRuby等其他语言的编译器一样也可以把程序代码编译成Class文件,虚拟机不关心Class来源于何种语言。注意:任何一个Class文件都原创 2017-02-18 11:08:45 · 514 阅读 · 0 评论 -
深入理解JAVA虚拟机(一):内存区域与内存溢出异常
1、内存区域Java虚拟机在执行JAva程序的过程中会把它所管理的内存划分为若干个不同的数据区域,称为运行时数据区域,如图所示。Java虚拟机内存结构中的程序计数器、虚拟机栈和本地方法栈这三个区域随线程创建而生,随线程销毁而灭,因此这三个区域的内存分配和回收是确定的,java垃圾收集器重点关注的是java虚拟机的堆内存和方法区内存。其中方法区和堆是由所有线程共享的数据区原创 2016-08-24 15:10:25 · 1123 阅读 · 0 评论 -
JAVA 泛型总结(结合JAVA核心技术和Effective Java两书)
一、基础知识1、类型擦除类型擦除指的是通过类型参数合并, 将泛型类型实例关联到同一份字节码上。 编译器只为泛型类型生成一份字节码, 并将其实例关联到这份字节码上, 因此泛型类型中的静态变量是所有实例共享的。(1) 一个static 方法, 无法访问泛型类的类型参数, 因为类还没有实例化, 所以, 若 static方法需要使用泛型能力, 必须使其成为泛型方法,(泛型参数稍后会原创 2016-12-18 15:23:20 · 1585 阅读 · 0 评论 -
Java安全通信:HTTPS与SSL
1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。这个系统的最初研发由网景公司进行,提供了身份验证转载 2017-02-09 13:12:51 · 3303 阅读 · 0 评论 -
并发数据结构----ConcurrentHashMap原理分析
在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。通过分析Hashtable就知道,synchronized是针对整张Hash表的,即每次锁住整张表让线程独占,ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制转载 2016-11-22 20:28:36 · 509 阅读 · 0 评论 -
Java关键字synchronized详解
转载自:http://kb.cnblogs.com/page/73756/ synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行它包括两种用法:synchronized 方转载 2016-04-06 14:48:05 · 366 阅读 · 0 评论 -
深入理解Session和 Cookie
首先,Session与Cookie的作用都是为了保持访问用户与后端服务器的交互状态,也就是跟踪用户的整个会话。不同的是,Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。一、理解Cookie1、Cookie为什么会出现?Web应用程序是使用HTTP协议传输数据的,HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,原创 2017-01-07 13:01:42 · 423 阅读 · 0 评论