Java transient关键字使用详解

Java transient关键字使用详解
1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一...

Java并发包之线程池

Java并发包之线程池
在之前的所有案例中,我们总是通过启动一个新的线程来执行新的任务。对于一些小的应用来说, 这是OK的,但是对于一些大型的应用来说,这是不太合适的。例如对于一个高并发的web服务器,如果每一个HTTP请求,我们都使用一个新的线程来处理, 那么内存中必然会存在大量的线程,线程的上下文切换以及线程的创建与销毁,都会消耗大量的资源。 因此我们最好将线程的管理、创建、销毁等操作与线程需要执行的任务...

Java并发容器之ConcurrentHashMap精讲

Java并发容器之ConcurrentHashMap精讲
ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable。对于ConcurrentHashMap是如何提高其效率的,可能大多人只是知道它使用了多个锁代替HashTable中的单个锁,也就是锁分离技术(Lock Stripping)。实际上,ConcurrentHashMap对提高并发方面的优化,还有一些其它的技巧在里面(比如你是否知道在get操作的时候,它是否也使用了锁来保护?)。 ConcurrentMap 提供其他原子 put...

并发编程之可见性、有序性和原子性的理解

并发编程之可见性、有序性和原子性的理解
并发处理的广泛应用使得Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类“压榨”计算机运算能力的最有力武器。 在学习并发编程,很多概念需要理解透彻,理解清楚。 其中有三个基本的关注点: 安全性,也就是正确性,指的是程序灾并发情况下执行的结果和预期一致 活跃性,比如死锁,活锁 性能,减少上下文切换,家少内核调用,较少一致性流量等等 安全性问题是首要解决的问题,保证程...

class文件常量池和运行时常量池比对

class文件常量池和运行时常量池比对
在学习JVM过程中,接触到常量池这个概念,后来发现不仅仅有一个运行时常量池概念,还有一个class文件常量池概念,使得本来不懂的我更加迷惑了。要想理解,那么就得对这两者进行比较理解,加深记忆。 那么,我们先看一下JVM运行时数据区: 其中, 程序计数器(PC计数器):是JVM执行程序的流水线,存放一些跳转指令。 本地方法栈:是JVM调用操作系统方法所使用的栈。 虚拟机栈:是JVM调用Java代码所使用的...

Spring整合MyBatis配置中的问题

Spring整合MyBatis配置中的问题
最近在学习Java高并发秒杀API,项目使用SpringMVC、Spring和MyBatis框架来实现,其中必然要学习Spring与MyBatis的整合。 在spring整合mybatis单元测试中碰到如下问题: org.springframework.beans.factory.BeanCreationException:   Error creating bean with name 'sqlSessionFactory' defined in class path resource [spring/spring-dao.xml]:   Cannot resolve reference to bean 'classpath...

LinkedHashSet和LinkedHashMap源码剖析

LinkedHashSet和LinkedHashMap源码剖析
总体介绍 如果你已看过前面关于HashSet和HashMap,以及TreeSet和TreeMap的讲解,一定能够想到本文将要讲解的LinkedHashSet和LinkedHashMap其实也是一回事。LinkedHashSet和LinkedHashMap在Java里也有着相同的实现,前者仅仅是对后者做了一层包装,也就是说LinkedHashSet里面有一个LinkedHashMap(适配器模式)。因此本文将重点分析LinkedHashMap。 LinkedHashMap实现了Map接口,即允许放入key为null的元素...

大话Future模式

大话Future模式
说在前面的话 什么是Future 模式呢?对于多线程,如果线程A要等待线程B的结果,那么线程A没必要等待B,直到B有结果,可以先拿到一个未来的Future,等B有结果是再取真实的结果。其实这个模式用的很多,比如浏览器下载图片的时候,刚开始是不是通过模糊的图片来代替最后的图片,等下载图片的线程下载完图片后在替换。 思想 实例 Main:系统启动,调用Client发出请求 package com.ifcoding.future; pub...

Java虚拟机之辨清Java堆

Java虚拟机之辨清Java堆
Java堆是和Java应用程序关系最为密切的内存空间,几乎所有的对象都放在堆中。并且Java堆是完全自动化管理的,通过垃圾回收机制,垃圾对象会被自动清理,而不需要显式地释放,c/c++中的free()等为显示地释放内存。 根据垃圾回收机制的不同,Java堆有可能拥有不同的结构。最为常见的一种构成是将整个Java堆分为新生代和老年代。其中,新生代存放新生对象或者年龄不大的对象,老年代则存放老年对象。新生代有...

初识Java虚拟机的基本结构

初识Java虚拟机的基本结构
Java虚拟机是什么?是做什么的?可能这些问题在我们学习Java之初就伴随这我们。 一般来说我们使用IDE将我们编写好的Java程序,点击运行,在不出错的情况下,就会得到我们想要的结果。那么这期间到底发生了什么?先看下图: 知道的是Java程序通过编译器编译成class文件,那么后面到底发生了什么,就是Java虚拟机的工作。现在我们先要认识Java虚拟机的基本结构。 类加载子系统 类加载子系统负责从文件系统...
Copyright © If Coding 保留所有权利.   Theme  Ality   

用户登录