![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 51
坚持比努力可怕
这个作者很懒,什么都没留下…
展开
-
AQS源码简单梳理
注:本人学习留存原创 2022-04-28 11:16:54 · 218 阅读 · 0 评论 -
Spring(1)体系结构
一.体系结构Spring是模块化的。(1)核心容器由核心,Bean,上下文和表达式语言模块组成:核心(Core):提供了框架的基本组成部分,包括IoC和依赖注入功能Bean:提供BeanFactory,它是一个工厂模式的复杂实现上下文(Context):由核心和Bean模块提供的坚实基础上,它是访问定义和配置的任何对象的媒介。ApplicationContext接口是上下文模块的重点。表达式语言(...转载 2018-04-25 09:50:29 · 189 阅读 · 0 评论 -
Java访问控制修饰符
一.Java修饰符Java修饰符大致分为两类:1.访问控制修饰符;2.非访问控制修饰符修饰符的位置:用来定义类、方法和变量,通常放在语句的最前端。二.访问控制修饰符Java可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。访问权限主要针对四处,当前类、子类、当前包和其他包。访问修饰符当前类同包子类其他包privateYNNNdefaultYYNNprotec...原创 2018-05-09 10:01:43 · 489 阅读 · 0 评论 -
Java多线程
一.线程与进程1.线程:进程中负责程序执行的执行单元,线程本身依靠程序进行运行,线程时程序中的顺序控制流,只能使用分配给程序的资源和环境。2.进程:执行中的程序一个进程至少包含一个线程3.单线程:程序中只存在一个线程,实际上主方法就是一个主线程4.多线程:在一个程序中运行多个任务目的是更好地使用CPU资源个人见解:多线程为并发服务,并发不是同时执行所有的线程,而是按照合理的顺序去执行线程,合理利用...翻译 2018-04-24 15:19:46 · 153 阅读 · 0 评论 -
Java基础:Static关键字的使用
Static关键字一.概念static最常用的功能就是修饰类的属性和方法,让他们成为类的成员属性和方法,通常将用static修饰成员称为类成员或者静态成员。1.static变量static变量也称作静态变量,静态变量和非静态变量的区别:静态常量在内存中,当且仅当类初次加载时会被初始化。而非静态变量,在创建对象的时候被初始化。注意1:初始化的时机不同,类成员变量是在类加载过程初始化,对象成员常量是在...原创 2018-04-18 19:03:01 · 344 阅读 · 0 评论 -
深入理解Java虚拟机(7)——内存分配与回收策略
一.内存分配与回收策略1.自动管理最终可以归结为自动化解决了两个问题:(1)给对象分配内存(2)回收分配给对象的内存2.对象内存分配,在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲(TLAB),将按线程优先在TLAB上分配。少数情况下也可能直接分配在老年代中,分配的规则并不是百分之百固定的。3.对象优先在Eden分配对象在新生代Eden区中分配。当Eden区没有足够空间...翻译 2018-04-13 11:24:06 · 235 阅读 · 0 评论 -
深入理解Java虚拟机(6)——垃圾收集器
一.垃圾收集器种类新年代:(1)Serial (2) ParNew (3)Parallel Scavenge 老年代:(1)CMS (2)Serial Old(MSC)(3)Parallel Old新年代和老年代:G11.Serial收集器:一个单线程的收集器,它在进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。优点:简单高效,对于限定单个CPU的环境来说,Seri...翻译 2018-04-13 09:22:11 · 162 阅读 · 0 评论 -
MySQL的索引
一.索引的概念在关系数据库中,索引是一种单独的、物理的对数据表中一列或多列的值进行排序的一种存储结构。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据使用索引以找到特定值,然后顺指针找到包含该值的行。二.索引的作用(1)快速取数据(2)保证数据记录的唯一性(3)实现表与表之间的参照完整性(...原创 2018-07-03 22:02:51 · 196 阅读 · 0 评论 -
equals()和HashCode()深入理解以及Hash算法原理
1.深入理解equals()方法Object类中的equals方法和“==”是一样的,没有区别,即两个对象的比较是比较他们的栈内存中存储的内存地址。而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==”不同,他们比较的是值是不是相等,所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。当我们...转载 2018-07-02 22:36:28 · 668 阅读 · 0 评论 -
数据结构、集合框架整合
一.数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。1.集合:数据结构中的元素之间除了“同属一个集合”的相互关系2.线性结构:数据结构中的元素存在一对一的相互关系3.树形结构:数据结构中的元素存在一对多的相互关系4.图形结构:数据结构中的元素存在多对多的相互关系常用的数据结构:数组、栈、队列、链表、树、图、堆、散列表二.各类数据结构1.数组数组:将...转载 2018-05-31 16:22:22 · 1233 阅读 · 0 评论 -
分布式系统介绍
一.分布式系统的介绍1.1初识分布式系统1.1.1 分布式的定义一是组件分布在网络计算机上,二是组件之间仅仅通过消息传递来通信并协调行动。分布式系统一定是由多个节点组成的系统,一般来说一个节点就是我们一台计算机;然后这些节点不是孤立的,而是互相连通的;最后这些连通的节点部署上了我们的组件,并且相互之间的操作会有协同。案例:我们通过浏览器去访问某一个网站,在对浏览器发出请求的背后是一个大型的分布式...原创 2018-05-30 09:47:51 · 298 阅读 · 0 评论 -
ConcurrentHashMap的实现原理及源码分析
一.ConcurrentHashMap分代锁HashTable性能差主要是由于所有操作需要竞争同一把锁,而如果容器中有多把锁,每一把锁锁一段数据,这样在多线程访问时不同段的数据时,就不会存在锁竞争,这样便可以有效地提高并发效率。这就是ConcurrentHashMap所采用的分段锁思想。二.ConcurrentHashMap源码分析ConcurrentHashMap的主干是Segment数组。fi...转载 2018-06-04 17:09:27 · 233 阅读 · 0 评论 -
Java8系列之重新认识HashMap
1.(1)Map接口:HashMap、HashTable、TreeMap和LinkedHashMap;(2)HashMap不是线程安全的。(3)HashTable是线程安全的。2.JDK1.8对HashMap底层的实现进行了优化,引入红黑树的数据结构和扩容的优化等。各个实现类的特点:(1)HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度...转载 2018-05-22 16:06:25 · 986 阅读 · 0 评论 -
Java基础:try catch finally的使用
try{}catch{}finally{}1.try{} catch{}finally{} 捕获处理异常2.throws 冒泡处理机制注意:1.try{}catch{}如果没有catch块,那一定会有finally块。2.throws是向外抛出。3.throw可以任意使用。4.try{}catch{}finally{} catch块不一定执行,但是finally块一定会执行。...原创 2018-04-26 09:57:40 · 379 阅读 · 0 评论 -
深入理解Java虚拟机(5)——垃圾收集算法
一.垃圾收集算法(简单介绍思想和发展过程)1.标记—清除 算法 首先标记处所有需要回收的对象,在标记完成后统一回收所有被标记的对象。不足之处:(1)效率:标记和清除两个过程效率不高(2)空间问题:标记清除后会产生大量不连续的内存碎片,空间碎片太多导致以后程序运行时需要分配较大的对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。2.复制算法将可用内存容量划分为大小相等的两块,每...翻译 2018-04-12 09:55:15 · 131 阅读 · 0 评论 -
Java基础:抽象类和抽象方法
一.Java抽象类概念:在面向对象的概念中,所有的对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描述对象的,如果一个类中没包含足够的信息来描述一个具体的对象,这样的类就是抽象类。理解:对象跟类相互依赖,Java通过类来创建对象,类用来描述对象。抽象类除了不能实例化对象之外,类的其他功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。理解:抽象类不能实例化对象,但是可以作为...原创 2018-04-18 16:01:16 · 398 阅读 · 0 评论 -
Java基础:继承
一.继承概念:继承是Java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为(重写)。类的继承格式:class 父类{}class 子类 extends 父类{}继承的特性*子类拥有父类非private的属性,方法*子类可以拥有自己的属性和方法,即子类可以对父类进行扩...原创 2018-04-19 09:51:47 · 143 阅读 · 0 评论 -
Java基础:数据类型
Java基本数据类型概念:变量就是申请内存来存储值,当创建变量的时候,需要在JVM中申请空间。JVM根据变量为变量分配存储空间,分配的空间只能用来存储该类型数据。Java的两大数据类型:*内置数据类型*引用数据类型内置数据类型八种基本类型,六种数字类型,一种字符类型,一种布尔型。引用类型*对象、数组都是引用数据类型*所有引用类型的默认值都是null自动类型转换整型、实型、字符型数据可以混合运算。运...原创 2018-04-19 10:50:08 · 163 阅读 · 0 评论 -
Java基础知识:集合框架
1. 集合框架 集合框架是一个用来代表和操纵集合的统一架构。接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。实现类:是集合接口的具体实现。算法:是实现集合接口的对象里的方法执行一些有用的计算。例如:搜索和排序。集合框架两大接口:Collection接口和Map接口 任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。1.所有集合类都位于...原创 2018-05-10 09:09:29 · 241 阅读 · 0 评论 -
深入理解Java虚拟机(2)——对象的创建、对象的内存布局和访问定位
一.对象的创建 1. 对象的创建 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否在常量池中定位到一个类(class)的符号引用,并且检查这个符号引用代表的类(class)是否已经被加载、解析和初始化。如果没有,就必须先执行相应的类加载过程。 类加载检查通过之后,JVM为新生的对象分配内存,对象所需内存的大小在类加载完成后便可完全确定。分配内存等同于把一块确定大小的内存从...翻译 2018-04-10 09:11:20 · 167 阅读 · 0 评论 -
深入理解Java虚拟机(1)——JVM内存区域
一.运行时数据区域1.Java虚拟机执行Java程序的过程会把它管理的内存划分为若干个不同的数据区域。其中这些区域包括:方法区、堆、虚拟机栈、本地方法栈、程序计数器、直接内存。线程共享:方法区(方法区中的常量池)、堆线程私有:虚拟机栈、本地方法栈、程序计数器直接内存2.程序计数器(线程私有) 一块较小的内存空间,被视为当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变程序计数...翻译 2018-04-10 09:09:05 · 185 阅读 · 0 评论 -
深入理解Java虚拟机(4)——对象是否存活
一.垃圾收集器与内存分配策略1.概述(1)Java内存运行时区域的各个部分:程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;(2)栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。因此这几个区域的内存分配和回收都具备确定性。而Java堆和方法区则不同,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有程序处于运行期间时才能...翻译 2018-04-11 09:06:07 · 130 阅读 · 0 评论 -
深入理解Java虚拟机(3)——内存溢出异常
一 .实战:OutOfMemoryError异常第一,通过代码验证Java虚拟机规范中描述的各个运行时区域存储的内容。第二,能根据异常的信息判断是哪个区域的内存溢出,知道什么样的代码能导致这些区域的内存溢出,以及出现这些异常应该如何处理。1.Java堆溢出 Java堆用于存储对象实例,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,在对象达到最大堆的容量限制后就会...翻译 2018-04-10 14:25:04 · 158 阅读 · 0 评论