
Java
Moo_Lavender
做个内心阳光的人,不忧伤,不心急,坚强,向上☀️
展开
-
【操作系统】操作系统 高频考点总结归纳
总结 操作系统的高频考点,持续更新,观看愉快!原创 2020-06-20 14:16:30 · 517 阅读 · 0 评论 -
【Java并发 】并发篇 面试高频考点总结
总结Java 多线程并发 方面的高频考点,持续更新,观看愉快!原创 2020-05-20 15:34:28 · 1201 阅读 · 0 评论 -
【Java基础】Java基础 面试高频考点总结
总结Java基础和集合方面的高频考点,持续更新,观看愉快!原创 2020-05-17 22:26:31 · 697 阅读 · 0 评论 -
【JVM虚拟机】虚拟机的类加载机制
虚拟机将二进制字节流最终加载如虚拟机的内存中,并对其进行校验、转换解析、初始化,最终形成虚拟机可以直接使用的Java类型,这就是类加载的机制原创 2020-05-05 15:34:49 · 617 阅读 · 0 评论 -
【源码学习】深入剖析核心源码之 ConcurrentHashMap(JDK1.7 和JDK1.8)
面试中常被问到的数据结构就是哈希表,一般都是先问HashMap,再接着问ConcurrentHashMap,所以深入学习源码以及相关的知识是很重要的。本文带你学习1.7和1.8 的ConcurrentHashMap的原理,欢迎学习...原创 2020-03-28 19:35:04 · 472 阅读 · 0 评论 -
【Java 多线程】线程池 —— 详解线程池原理和使用
Java线程池是运用最多的并发框架,学号多线程以及合理的使用多线程可以带来很大的好处,今天就来一起学习线程池相关的知识吧!线程池一、线程池的实现原理二、使用线程池1. 使用线程池的好处2.线程池的创建3. 向线程池提交任务4. 关闭线程池一、线程池的实现原理当向线程池提交一个任务后,线程池会怎么做呢?首先线程池会在核心线程corePoolSize中找是否都在执行任务,如果不是,就创建...原创 2020-03-27 18:56:28 · 528 阅读 · 0 评论 -
【Java 并发】好多锁啊!偏向锁、轻量级锁、重量级锁、自旋锁、乐观锁、悲观锁 ......
是不是各种锁搞得自己晕头转向,这里看:详解 偏向锁、轻量级锁、重量级锁、自旋锁、乐观锁、悲观锁、读写锁、可重入锁、公平锁、非公平锁原创 2020-03-27 16:09:22 · 750 阅读 · 0 评论 -
【Java多线程】 CAS —— 一文了解CAS到底是什么
学过多线程就会接触到并发,并发再多线程中的重要性不言而喻,在Java中还有并发包,里面实现了各种各样的方法来帮助我们解决多线程带来的各种问题。而要想读懂这些底层问题,CAS是绕不过的知识,大多底层都是以CAS来实现的。今天就带大家来学习CAS相关的知识。CAS一、什么是CAS?二、为什么要有CAS三、CAS是怎么实现的?四、CAS有哪些应用?五、CAS存在的问题一、什么是CAS?CAS:...原创 2020-03-21 20:50:01 · 1018 阅读 · 0 评论 -
【Java多线程】 Java中atomic包下的原子操作类
多线程使用会导致不安全,其中原子性就是一个不可以破坏的。原子性指的是一条指令不可以再被分割成多个操作,而是一起完成也就是要么全部执行成功要么全部执行失败。我们常见的不满足原子性的操作就是对共享变量进行 i++。通常我们使用synchronized 关键字来解决这个问题,在 JDK 1.5 中开始提供了java.util.concurrent.atomic包,这个包中的原子操作类提供了一种用法简...原创 2020-03-21 14:51:32 · 377 阅读 · 0 评论 -
【源码学习】 深入剖析核心源码之 HashMap
HashMap作为面试常考的集合框架除了知道基本知识外也应该去学着剖析源码,只有清楚的学习了底层实现才能在面试中清楚的讲解出来,今天就来看看我的学习总结。源码学习之 HashMap一、HushMap 基础知识一、HushMap 基础知识哈希表基础知识总结允许null作为键和值不保证存入值的顺序HashMap的一个实例有两个影响其性能的参数: 初始容量和负载因子。 初始容量只是创建...原创 2020-03-02 21:32:13 · 370 阅读 · 0 评论 -
【JVM虚拟机】深入理解JVM垃圾回收算法
了解虚拟机就一定需要了解垃圾回收机制,人们很久就在思考这三件事:那些内存需要回收?什么时候回收?怎样回收?在这篇文章是自己参考《深入理解Java虚拟机》一书学习后的总结,看完相信就会对垃圾回收有了一定的了解。垃圾回收一、哪些内存需要回收?1.对象是否还有用?(1) 引用计数法(2) 可达性分析算法2.引用的四种分类3、finalize()方法3、回收方法区二、垃圾回收算法1.标记—清除算法(...原创 2020-02-18 14:02:41 · 524 阅读 · 0 评论 -
【JVM虚拟机】从虚拟机层面了解对象的创建与内存分布
Java是一门面向对象的编程语言,在Java程序中无时无刻都有对象被创建出来并使用。在语言层面,创建对象仅仅是使用一个new关键字,而在虚拟机中却发生了一系列的事情,今天就来从虚拟机层面了解对象的创建等一系列知识。从虚拟机层面了解对象一、对象的创建1、内存空间分配方式2.分配空间时的线程安全3.初始化零值4.设置对象信息5.init方法的执行二、对象的内存布局一、对象的创建1、内存空间分...原创 2020-02-17 14:25:32 · 335 阅读 · 0 评论 -
【源码学习】深入剖析核心源码之 LinkedList
看源码是必不可少的一步,源码的学习通常是将常用的方法的实现理解透彻并能合理的使用,掌握其特性。而输出才能更好的输入,所以写下博客将自己的学习记录下来,对于Java需要掌握的就是各种容器,我们已经上次学习了ArrayList的源码,这次继续来学习LinkedList的源码。源码学习之 LinkedList...原创 2020-02-08 19:28:32 · 551 阅读 · 2 评论 -
【源码学习】 深入剖析核心源码之 ArrayList
学习一段时间后看源码是必不可少的一步,源码的学习通常是将常用的方法的实现理解透彻并能写出来,掌握其特性。对于Java需要掌握的就是各种容器,今天首先开始学习ArrayList源码学习之ArrayList一、ArrayList常见知识点二、常用方法实现一、ArrayList常见知识点ArrayList 的底层是基于数组实现,且初始数组为空。由于被final和static修饰,该成员变量...原创 2020-02-05 23:34:36 · 870 阅读 · 0 评论 -
【Java多线程】典型的生产者消费者模型——线程间的通信
生产者消费者模型是多线程中最常问的知识点,而线程间的通信也是多线程中的重点,自己学习看了《Java并发编程的艺术》一书并看了很多博客后也学习总结出自己的学习心得供大家参考。生产者消费者模型一、线程间通信基础概念1.什么是线程间通信2.synchronized和volatile关键字3.等待/通知机制4. wait()和notift()方法的执行二、生产者消费者模型1.什么是生产者消费者模型2...原创 2020-01-22 18:54:41 · 432 阅读 · 0 评论 -
【算法】动态规划:适合新手的动态规划入门常见题目详解
动态规划一、什么是动态规划1.官方定义2.动态规划的特点二、题目练练手1.斐波那契数列一、什么是动态规划1.官方定义动态规划(英语:Dynamic programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即...原创 2019-12-16 20:42:01 · 1580 阅读 · 2 评论 -
【Java易混淆知识点】继承时子类super关键字在构造方法中的使用
在子类继承父类时,由于同时会继承到父类的成员变量和成员方法,同时子类也可以定义与父类同名的成员方法来覆盖父类方法。这次问题的起因是做到了一道很懵的选择题,才发现自己对super关键字还没有很理解,查阅资料后,终于理清楚这块的知识点,特地总结如下:一、super关键字的作用使用super关键字调用父类构造函数使用super关键字父类成员变量使用super关键字父类成员方法二、使用s...原创 2019-11-26 23:31:16 · 1761 阅读 · 2 评论 -
【Java进阶知识】Java中涉及到的对象比较
在Java中,我们常常涉及到对象的比较问题,总体来说就两种:一种是比较是否相等,另一种就是比较两个对象之间的大小关系。接下来一一介绍:一、相等比较通常我们在比较两个对象是否相等时,用到的就是“==”运算符和Object类下的equals方法。有关于这二者的区别,大家可以参考我的另一篇博客—>hashCode,equals,== 三者的区别是什么?这里简单的来说,==运算符通常是比较...原创 2019-11-25 20:45:17 · 315 阅读 · 0 评论 -
【Java进阶知识】关于String、Integer内存分析——常量池
对于字符串String的学习一直是迷迷糊糊,但这块知识却也是重点,要想真正的搞懂不仅要清楚的知道Java中的内存模型,也要能准确区分各种创建好的对象的存储位置。在自己看了深入理解Java虚拟机这本书后,结合多篇博客,才感觉稍微入门,用这篇博客总结记录一下自己理解下的字符串常量池。一、常量池link...原创 2019-11-24 21:40:16 · 963 阅读 · 3 评论 -
【Java进阶知识】初识synchronized关键字——监视锁(monitor lock)
前面我们讲到了线程的安全问题,并发现了多线程操作很容易引起线程不安全的问题,由于Java中线程是由操作系统调度的,因此如果多个线程对同一个变量进行非原子性的操作就会发生线程不安全。解决这个问题我们就可以用到synchronized关键字,接下来让我们进一步学习。1.对象头首先让我们来了解一下对象头的概念。在Java虚拟机中,对象在内存中的存储布局可以分为3快区域:对象头、实例数据、对齐填充...原创 2019-11-22 10:48:45 · 419 阅读 · 0 评论 -
【Java进阶知识】初识多线程下的单例模式——Sington
学习到多线程安全这块的知识时,就会接触到单例模式。单例模式指的是多个线程共享一个实例对象,要实现这样的操作,有 两种方式,俗称:饿汉模式和懒汉模式,接下来,让我们进一步学习1.饿汉模式饿汉模式通俗的来讲就是在类加载初期就为其分配一个空间供以后使用,无论是否会用到。接下来,让我们通过代码学习:public class Sington { //饿汉式 private sta...原创 2019-11-18 18:24:52 · 284 阅读 · 0 评论 -
【Java进阶知识】Java虚拟机中的内存区域
Java虚拟机在执行Java程序时,会将Java内存分为多个区域,它们各自有不同的存储数据以及作用,接下来就将介绍Java虚拟机中内存的分布情况。1.程序计数器程序计数器是一块较小的内存,可以看作是当前线程所执行行号指示器。字节码指示器的作用就是指示下一条需要执行的字节码的指令。分支、循环、跳转、异常处理、线程恢复等都需要依赖这个计数器来完成。由于Java多线程时通过线程轮流切换,并分配...原创 2019-11-18 17:39:07 · 314 阅读 · 0 评论 -
【Java进阶知识】多线程导致的不安全现象
在我们设计多线程时,要考虑的问题不外乎就两个——安全、效率!效率很好理解,那么对于安全呢?多线程为什么会不安全?这篇博客总结自己对多线程安全的初步讲解1.多线程体现出来的不安全如果现在让我们给定一个类的静态变量COUNT,并且创建20个线程,在每个线程中都对该变量进行+10000操作,那么,在执行完这个整个操作后,我们期望COUNT返回的值应该是20,0000 那是不是就会这样书写代码:p...原创 2019-11-17 17:38:58 · 299 阅读 · 0 评论 -
【Java 进阶知识】线程的中断——interrupt()
既然我们使得一个线程开始运行,那如果没有异常情况,线程将会一直运行直到代码执行完毕。当然,如果我们在线程运行中途想去终止此线程,也是有方法的。通常我们使用interrup方法接下来,为大家引入这个方法的使用:1.isInterrupted()、interrupted()方法的使用对于每一个线程,都会有一个Boolean类型中断标志位,该标志位默认false,表示没有被中断我们可以调用线程的...原创 2019-11-17 16:45:39 · 281 阅读 · 0 评论 -
【Java进阶知识】线程的六种状态
线程的状态线程有如下6种状态:New(新创建 )Runnable(可运行)Blocked(被阻塞)Waiting(等待)Timed waiting(计时等待)Terminated(被终止)其中,要获取一个线程当前的状态,可以调用getState 方法下面,对每种状态进行解释1.新创建线程(New)当我们使用new操作符来创建了一个线程时,如使用new Thread(r)时...原创 2019-11-17 15:28:33 · 274 阅读 · 0 评论 -
【Java & Mysql】JDBC编程基础操作
1.数据库编程的基本条件编程语言:Java、C、python等,这里使用Java数据库:MySql、SqlSever、Oracle,这里使用Mysql数据库驱动包:不同数据库对于不同的编程语言都提供的不同的驱动包,如MySQL提供Java的驱动包为:mysql-connector-java2.数据库编程:JDBCJDBC,即Java DataBase Connectivity,jav...原创 2019-11-11 17:15:46 · 304 阅读 · 0 评论 -
【Java习题练习】对于一个字符串,设计一个算法,计算其是否是一个合法的字符串
题目看起来并不难,第一想法就是使用栈来解决问题,左括号入栈,右括号出栈,遇到非括号就返回false,最后根据栈中是否还有元素,来确定括号组,是否合法。于是兴致勃勃写了如下代码:import java.util.*;//对于一个字符串,设计一个算法,计算其是否是一个合法的字符串。public class Parenthesis { public boolean chkParenth...原创 2019-11-09 23:21:19 · 703 阅读 · 0 评论 -
【Java基础知识】实现多线程的两种方式
1.继承Thread类,重写run()方法Thread本质上也是实现了Runnable接口的一个实例,他代表一个线程实例,并且,启动线程的唯一方法就是通过Thread类的start()方法。start()方法是一个本地方法,它将启动一个新的线程,并执行run()方法(Thread中提供的run()方法是一个空方法)这种方式通过自定义直接extend Thread,并重写run()方法,就可以启动...原创 2019-11-07 16:19:47 · 953 阅读 · 0 评论 -
【Java易混淆知识点】什么是线程、进程?有什么区别?为什么要使用多线程?
1.什么是线程?线程是指程序在执行过程中,能够以执行程序代码的一个执行单元。在Java语言中由四种状态:运行、就绪、挂起、结束2.线程与进程区别是什么?进程是指一段正在被执行的程序,而线程是程序执行的最小单元,一个进程可以有多个线程,各个线程之间共享程序的内存空间(代码段,数据段和对空间)以及一些进程级的资源(例如打开的文件),但是各个线程拥有自己的栈空间。进程是系统分配资源的最小单位,线...原创 2019-11-07 15:38:12 · 422 阅读 · 0 评论 -
【Java基础知识】哈希表知识总结
顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(log2Nlog_2 Nlog2N),搜索的效率取决于搜索过程中元素的比较次数。理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与...原创 2019-11-03 17:56:52 · 414 阅读 · 0 评论 -
【Java基础知识点】Collection集合框架
Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util包下的一组 接口 interfaces 和其实现类 classes 。其主要表现为将多个元素 element置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索retrieve 、管理 manipulate,即平时我们俗称的增删查改 CRUD...原创 2019-10-30 15:48:54 · 338 阅读 · 0 评论 -
【Java基础知识总结】继承(二)Object类与自动装箱自动拆箱
(一)object类Object 类是Java中所有类的父类,所有类都是由Object类派生而来,但在定义类是并不需要特意写出。如果没有明确地指出超类,Object 就被认为是这个类的超类,可以使用 Object 类型的变量引用任何类型的对象。1.equals方法Object 类中的 equals 方法用于检测一个对象是否等于另外一个对象。在 Object 类中,这个方法将判断两个对象是否具...原创 2019-10-29 20:14:02 · 656 阅读 · 0 评论 -
【Java易混淆知识点】方法重载和覆盖有什么区别?
重载(overload)和覆盖(override)时Java多态性的不同表现方式。(一)重载重载是在一个类中的多态性的一种表现,是指在一个类中定义了多个同名的方法,他们或有不同的参数个数或有不同的参数类型。在使用重载时,需要注意以下几点:重载是通过不同的方法参数来区分的,其中包括不同的参数个数,不同的参数类型或不同的参数顺序。不能通过方法的访问权限、返回值类型和抛出的异常类型来进行重载。...原创 2019-10-29 18:27:58 · 416 阅读 · 0 评论 -
【Java易混淆知识点】 (易懂)static关键字的作用有哪些?
static关键字在Java中使用频率也是很高的,今天就来将它所有的作用做一个总结归纳static关键字主要有两种作用:第一,为某些特定的数据类型或者对象分配单一的存储空间,而与创建对象的个数无关。第二,实现某个方法或者是属性与类而不是与对象关联起来也就是说,在不创建对象的情况下就可以直接调用方法或使用类的属性。具体而言,static关键字主要有四种使用情况:成员变量、成员方法、代码块...原创 2019-10-28 17:41:28 · 328 阅读 · 2 评论 -
【Java易混淆知识点】抽象类(abstract class)与接口(interface)有什么异同?
经常混淆接口与抽象类,于是还是应该总结的写出来二者的知识点以及异同如果一个类中包含抽象方法,那么这个类就是抽象类,使用 abstract 来表示一个类是抽象类。abstract关键字只能用来修饰类或者方法不能用来修饰属性。接口就是一个方法的集合,接口中所有方法都没有方法体,使用interface表示一个接口。一、一些知识点抽象类和接口都是支持抽象定义的两种机制,此处对于抽象类的意义不...原创 2019-10-27 14:58:13 · 472 阅读 · 0 评论 -
【Java易混淆知识点】hashCode,equals,== 三者的区别是什么?
对于我们时常混淆的三个比较大小的方式:1.“ == ”运算符“==”运算符用来比较两个变量的值是否相等。换而言之,该运算符用于比较变量对应的内存中所存储的数值是否相同,要比较两个基本数据类型或者两个引用变量是否相等(指向同一个对象)只能使用 “ == ”运算符。具体解释:如果两个变量是基本数据类型比如"int""float"等类型,可以直接使用 “= =”运算符;如果一个引用变量指向的数...原创 2019-10-27 14:17:13 · 244 阅读 · 0 评论 -
【Java基础知识总结】继承知识思维导图(一)类、父类、子类
继承(一) 类、父类、子类首先列举出重要知识点导图:1.关键字:extends在Java继承中,使用的关键字就是extend,直接在子类后加上extends再加上父类的名称子类就会拥有父类所拥有的属性与方法。class A { ...}class B extends A{ ...}注意,继承只能是单继承!!另外,Java中的继承都是公有继承2.覆写方法如果⼦类定义了...原创 2019-10-26 16:53:20 · 2783 阅读 · 0 评论 -
【Java基础知识】 字符串 String 类 知识总结
1.创建字符串常用的构造String 的方式:String str = "Hello";String str2 = new String("hello");char[] array = {'a','b','c'};String str3 = new String(array);要知道String不是基本数据类型,而是引用类型那么对于以下代码:String str1 = "Hell...原创 2019-10-25 20:36:11 · 440 阅读 · 0 评论 -
【算法与数据结构】万字长文总结——图解那些让你凌乱的七大排序!
七大排序有哪七大呢?就是这些啦:插入、希尔、选择、堆排、冒泡、快排、归并一开始学习时,我也会觉得很混乱。于是自己进行了总结和分类,现在思路也很清晰。接下来一个个介绍,最后将会从不同角度进行总结:一、插入排序1.思路讲解插入排序分为直接插入排序和二分插入排序,这里着重看直接插入排序,二分插入排序与二分查找整体思路相同。插入排序就是每次从无序区间选择第一个数,插入到有序区间的合适位置。可...原创 2019-10-24 20:45:31 · 4212 阅读 · 0 评论 -
Java基础知识1——数据类型及其运算符
在初识Java阶段,基础的知识就是掌握好Java语言的简易规则,今天就先来介绍数据类型及其运算符。一、Java中的四种变量属性实例变量静态属性类变量局部变量参数二、如何定义变量数据类型+变量名(identifier)定义变量后直接+分号 ——定义变量未初始化 (int a;)定义变量 = value —— 定义变量且进行初始化 (int a = 100)三、命名...原创 2019-05-09 13:34:12 · 567 阅读 · 0 评论