随笔分类 - Java学习
摘要:java8之重新认识HashMap 摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JD
阅读全文
摘要:ReentrantLock ReentrantLock可以等同于synchronized使用。 ReentrantLock 类实现了Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似锁投票、定时锁等候和可中断锁等候的一些特性。此外,它还提供了在激烈争用情况下更佳的
阅读全文
摘要:多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和vol
阅读全文
摘要:package com.cwcec.test; public class TraditionalThreadCommunication { /** * @param args */ public static void main(String[] args) { final Business business = new ...
阅读全文
摘要:5.2 网络类加载器 下面将通过一个网络类加载器来说明如何通过类加载器来实现组件的动态更新。即基本的场景是:Java 字节代码(.class)文件存放在服务器上,客户端通过网络的方式获取字节代码并执行。当有版本更新的时候,只需要替换掉服务器上保存的文件即可。通过类加载器可以比较简单的实现这种需求。
阅读全文
摘要:1 基本信息 每个开发人员对Java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失
阅读全文
摘要:类加载器概述: java类的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制.JVM中用来完成上述功能的具体实现就是类加载器.类加载器读取.class字节码文件将其转换成jav
阅读全文
摘要:1 前言 GC(Garbage Collect)是jvm对于内存管理的核心功能,正是因为它才让Java程序员从内存释放的苦海中脱离出来,所以作为一个程序员都有必要去了解一下他的原理。 说一句题外话,我曾经被问到GC的具体实现,那个时候我就知道一些基本的思想,结果被人鄙视了。对于这个问题我到现在仍保留
阅读全文
摘要:在Java中有两类线程:用户线程 (User Thread)、守护线程 (Daemon Thread)。 所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非守护线程结束时,程序也就终止了
阅读全文
摘要:因为网上已经太多的关于HashMap的相关文章了,为了避免大量重复,又由于网上关于java8的HashMap的相关文章比较少,至少我没有找到比较详细的。所以才有了本文。 本文主要的内容: 1.HashMap的数据结构,以及java 8的新特征2.HashMap的put方法的实现原理3.resize(
阅读全文
摘要:1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表 链表存储区间离散,占用内存比较宽松,故空间复杂度
阅读全文
摘要:分布式计算就是通过计算机网络将计算工作分布到多台主机上,多个主机一起协同完成工作。我试着列一下相关知识吧。 网络通讯,网络是分布式的基础,对分布式的理解建立在对网络的理解上,包括: OSI模型的7层 TCP/IP,DNS,NAT HTTP,SPDY/HTTP2 Telnet 网络编程,是通过程序在多
阅读全文
摘要:Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。 如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共
阅读全文
摘要:在写java的时候,基本上都喜欢用arraylist,甚至我都不知道有个vector的存在。查了一下发现又是线程安全问题。。。咋个线程安全天天围着我转呢。。。多得阿里巴巴,让我开始认识java的所谓线程安全问题。 1. Vector & ArrayList 1. Vector & ArrayList
阅读全文
摘要:其中,程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭。
阅读全文
摘要:一:java多线程互斥,和java多线程引入偏向锁和轻量级锁的原因? 一:java多线程互斥,和java多线程引入偏向锁和轻量级锁的原因? 一:java多线程互斥,和java多线程引入偏向锁和轻量级锁的原因? >synchronized的重量级别的锁,就是在线程运行到该代码块的时候,让程序的运行级别
阅读全文
摘要:堆内存 堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survi
阅读全文
摘要://匿名内部类: interface Contents { int value(); } public class Parcel7 { public Contents contents() { return new Contents() { private int i = 11; @Override
阅读全文

浙公网安备 33010602011771号