![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 90
Tu9oh0st
这个作者很懒,什么都没留下…
展开
-
Java核心技术-继承
super关键字public Manager(String name, double salary, int year, int month, int day){ super(name, salary, year, month, day); bonus = 0;}这里的关键字super具有不同的含义。语句super(n, s, year, month, day);是“...原创 2018-09-04 00:32:31 · 176 阅读 · 0 评论 -
JDK源码分析(4)HashMap
HashMapHashMap简介HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collec...原创 2018-10-14 20:30:47 · 146 阅读 · 0 评论 -
JVM学习(2) 对象已死?
概述说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史远远比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期时,人们就在思考GC需要完成的三件事:那些内存需要回收?什么时候回收?如何回收?经过半个世纪的发展,内存的动态分配与内存回收技术已经...原创 2018-09-30 01:12:02 · 114 阅读 · 0 评论 -
JVM学习(3) 垃圾收集算法
由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,因此不打算过多地讨论算法地实现,只是介绍几种算法地思想及其发展过程。标记-清除算法最基础地收集算法是“标记-清除”(Mark-Sweep)算法,算法分为”标记“和”清除“两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记地对象,它地标记过程其实在前一节讲述对象标记判定时已经基本介绍过了...原创 2018-09-30 17:46:39 · 172 阅读 · 0 评论 -
Java并发学习(1)volatile的实现原理与应用
Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令。volatile的应用在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性...原创 2018-10-24 21:49:54 · 184 阅读 · 0 评论 -
Java并发学习(2)synchronized的实现原理与应用
Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令。synchronized的实现原理与应用在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对synchronized进行了各种优化之后,...原创 2018-10-24 21:52:32 · 137 阅读 · 0 评论 -
Java并发学习(3)原子操作的实现原理
Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令。原子操作的实现原理原子(atomic)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为“不可被中断的一个或一系列操作”。在多处理器上实现原子操作就变得有点复杂。1....原创 2018-10-24 21:55:53 · 227 阅读 · 0 评论 -
Java并发学习(4)Java内存模型基础
Java内存模型的基础并发编程模型的两个关键问题在并发编程种,需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程种,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里,线程之间没有公共状态,...原创 2018-12-12 21:06:32 · 215 阅读 · 0 评论 -
Spring入门(5) Spring MVC 起步
跟踪Spring MVC的请求在请求离开浏览器时①,会带有用户所请求内容的信息,至少会包含请求的URL。请求旅程的第一站是Spring的DispatcherServlet。与大多数基于Java的Web框架一样,SpringMVC所有的请求都会通过一个前端控制器(front controller)servlet。前端控制器是常用的Web应用程序模式,在这里一个单实例的Servlet将请求委托给...原创 2018-12-19 20:43:17 · 159 阅读 · 0 评论 -
JDK源码分析(3)HashSet
HashSetHashSet简介HashSet特点非线程安全允许null值添加值得时候会先获取对象的hashCode方法,如果hashCode 方法返回的值一致,则再调用equals方法判断是否一致,如果不一致才add元素。注意: 对于HashSet中保存的对象,请注意正确重写其equals和hashCode方法,以保证放入的对象的唯一性。HashSet源码public cla...原创 2018-10-14 20:01:52 · 111 阅读 · 0 评论 -
JDK源码分析(2)LinkedList
LinkedList简介LinkedList属性public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable,原创 2018-10-14 19:08:37 · 133 阅读 · 0 评论 -
Java核心技术-具体的集合
除了Map结尾的类之外,其他都实现了Collection接口,而以Map结尾的类实现了Map接口。链表在Java程序设计语言中,所有链表实际上都是双向链表的(double linked)——即每个节点还存放着指向前去节点的引用。从链表中间删除一个元素是一个很轻松的操作, 即需要更新被删除元素附近的链接。在链表中添加或删除元素时,绕来绕去的指针可能已经给人们留下了极坏的印...原创 2018-09-17 10:43:44 · 204 阅读 · 0 评论 -
Java核心技术-映射
集是一个集合,它可以快速地查找现有的元素。但是,要查看一个元素,需要有要查找元素的精确副本。这不是一种非常通用的查找方式。通常,我们知道某些键的信息,并想要查找与之对应的元素。映射(map)数据结构就是为此设计的。映射用来存放键/值对。如果提供了键,就能够查找到值。基本映射操作Java类库为映射提供了两个通用的实现:HashMap和TreeMap。这两个类都实现了Map接口。散列映射对键进行...原创 2018-09-18 00:45:15 · 185 阅读 · 0 评论 -
Spring实战-第一次内作业-Java反射和注解
第一次内作业详细理解Java反射机制反射是什么反射的作用用一句简单的话来讲就是可以对代码进行操作的代码,这个特性经常在被用于创建JavaBean中,通常造轮子的人会用到这个特性,而应用程序员用到这个特性的场景则较少。能够分析类能力的程序就叫做反射,简单来说就是可以对代码进行操作的代码。反射机制的功能极为强大,可以用来:在运行时分析类的能力在运行时查看对象实现通用的数组操作...原创 2018-09-14 19:11:44 · 329 阅读 · 0 评论 -
JVM学习(4) 垃圾收集器
如果说收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器都可能会有很大的差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。这里讨论的收集器基于Sun HotSpot虚拟机1.6版Update 22,这个虚拟机包含的所有收集器如图所示:图中...原创 2018-10-01 16:05:35 · 132 阅读 · 0 评论 -
JVM学习(5) 内存分配与回收策略
Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。对象的内存分配,往大方向上讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地在栈上分配),对象主要分配在新生代地Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配地规则并不是百分百固定地,其细节取决于...原创 2018-10-01 20:19:28 · 189 阅读 · 0 评论 -
Java核心技术-并发
多任务(multitasking):在同一时刻运行多个程序的能力。并发执行的进程数目并不是由CPU数目制约的。操作系统将CPU的时间片分配给每一个进程,给人并发处理的感觉。多线程程序在较低的层次上扩展了多任务的概念:一个程序同时执行多个任务。通常,每一个任务称为线程(thread),它是线程控制的简称。可以同时运行一个以上线程的程序称为多线程程序(multithreaded)。多进程与多线程...原创 2018-09-20 22:34:30 · 245 阅读 · 0 评论 -
JVM学习(1) 自动内存管理机制
Java内存区域与内存溢出异常Java和C++之间有一堵由内存动态分配和垃圾手机技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。概述对于从事C和C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝,又是从事最基础工作的劳动人民——既有用每一个对象的“所有权”,又担负着每个对象生命开始到终结的维护责任。对Java程序员来说,在虚拟机的自动内存管理机制的帮助下,不再...原创 2018-09-26 17:56:31 · 128 阅读 · 0 评论 -
JDK源码分析(1)ArrayList
ArrayList简介ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功...原创 2018-10-14 16:09:46 · 266 阅读 · 0 评论 -
Java并发学习(5)并发容器——ConcurrentHashMap
ConcurreentHashMap的实现原理与使用ConcurrentHashMap是线程安全且高效的HashMap。为什么要使用ConcurrentHashMap在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。线程不安全的HashMap在多线程环境下,使用Ha...原创 2018-12-20 00:00:07 · 209 阅读 · 0 评论