自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 八股文总结

目录Java语言有什么特点JDK与JRE的区别Java的基本数据类型装箱和拆箱过程Java访问修饰符构造方法,成员变量和静态成员变量的初始化顺序面向对象的三大特征重载和重写的区别接口类和抽象类的相同点和不同点内部类及其作用static关键字的作用Java语言有什么特点 1.java是纯面向对象的语言,能够直接反映生活当中的对象。 2.java是具有平台无关性的解释性语言,java利用JVM来运行字节码,javac将.j...

2021-09-27 13:33:28 674 1

原创 了解JVM

目录JVM的内存划分JVM内存参数垃圾回收机制内存管理判别垃圾四种引用类型垃圾回收算法四个专业术语类加载类加载的步骤双亲委派模型首先需要了解一下为什么需要JVM,JVM诞生的初期是为了实现跨平台运行的功能,机器本身只能认得0和1两个字符,我们程序员自己编写的.java文件机器并不能识别,通过javac将.java文件编译为.class文件,为什么要编译?因为JVM只能识别.class文件,在经由JVM的编译形成机器能够识别的文件。J...

2021-09-26 19:37:44 115

原创 semaphore和CountDownLatch

semaphore semaphore信号量,是并发编程的一个重要概念,表示可用资源的数量。信号量涉及的核心操作:P操作:申请一个资源(可用资源-1),V操作:释放一个资源(可用资源+1)与此同时,可用资源变化的操作均属于原子操作。 semaphore持有acquire()方法和release()方法,分别对应P操作和V操作。当可用资源为0时执行acquire方法时线程就会进入阻塞状态,执行release方法时就会释放资源使可用资源+1,这时被阻塞的线程将会竞争这份资源,...

2021-09-26 09:29:18 648

原创 为什么有了synchronized还需要ReentrantLock

ReentrantLock是JUC(java.util.concurrent)的一个组件,并且也是一个可重入锁。ReentrantLock有两个方法,一个是lock()用于加锁,一个是unlock()用于解锁,这样的做法有优点也有缺点:缺点:程序员容易忘记解锁从而导致Bug的产生。优点:更加的灵活,可以将lock()放在一个方法里,unlock()放进另一个方法里。 ReentrantLock还提供了另一个方法tryLock(),对于synchronized来说,如果锁被占用...

2021-09-25 18:29:03 290

原创 synchronized的工作原理

首先来了解一下synchronized工作过程也成为了锁膨胀过程:场景:多个线程对同一变量的操作。当一个线程进行操作时首先需要进行加锁,但此时并不是真的加锁,而是在对象头里面通过一个标志位进行标记。此时synchronized是偏向锁,在赌没有其他锁来竞争,往往赌还能赌成功。 此时又有一个线程来进行操作时,第二个线程就会尝试加锁,与此同时第一个线程将会立即获取锁,而后面的线程也将尝试真正的加锁,此时涉及到锁竞争,synchronized此时为轻量型锁。 ...

2021-09-25 18:03:28 70

原创 认识CAS

compare and swap比较并交换CAS为一个原子操作,CPU会支持类似于swap等操作做到一条指令就完成计较和交换CAS的伪代码实现:boolean CAS(address,expectedValue,newValue){ if(*address == execptedValue){ *address = newValue; return true; } return false;}//实际上将内存中的值进行了改变

2021-09-25 17:23:03 47

原创 多种锁策略

乐观锁与悲观锁乐观锁:这个锁认为出现锁竞争大概率比较小(当前场景中,线程数目比较少,不太涉及锁竞争),工作量比较小,付出的代价也比较少。悲观锁:这个锁认为出现锁竞争大概率比较大(当前场景中,线程数目比较多,非常可能涉及锁竞争),工作量比较大,付出的代价也比较多。操作系统中的Mutex就是一个典型的悲观锁。Java中的synchronize既属于乐观锁也属于悲观锁,会根据当前锁冲突的状况来切换模式。读写锁这是一种特殊的锁,...

2021-09-25 16:15:23 70

原创 初步了解线程池

为了避免线程在使用完毕后就被销毁,我们引入了线程池,即使用时将线程从线程池中取出,使用后将线程放回至线程池中。Java标准库中已经引入了线程池的方法。建立一个动态变化的线程池:ExecutorService pool = Executors.newCachedThreadPool()建立一个固定长度的线程池:ExecutorService pool= Executors.newFixedThreadPool()简单来实现一下线程池:ExecutorService pool = Ex

2021-09-25 14:55:14 70

原创 定时器的实现

定时器就类似一个闹钟,约定任务在什么时候进行执行。Timer提供一个核心的接口,schedule制定一个任务交给定时器,在一定的时间后执行该任务。通过分析功能我们可以分为一下几步:1.Timer中要包含一个Task类,每一个Task都是一个需要执行的实例。 Task中包含有一个时间戳决定什么时候执行,包含一个Runnable决定具体执行的任务。 2.Timer通过一个优先级阻塞队列来组织若干个Task,即时间戳越小的优先进行判断是否执...

2021-09-25 11:10:42 93

原创 了解阻塞队列

阻塞队列是一种线程安全的特殊队列:如果队列满,往队列里面添加元素的时候就会阻塞,直到队列不为满;如果队列空,出队列时也会进入阻塞状态,直到队列不为空。阻塞队列是用来实现生产者消费者模型的常用基础之一,java标准库提供了BlockingQueue和LinkedBlockingQueue来实现,通过put来存放元素,通过take来取出元素。阻塞队列的代码实现:package Thread;import java.util.concurrent.BlockingQueue;impor

2021-09-25 10:15:46 83

原创 两种单例模式:饿汉式和懒汉式以及优化

单例模式就是一种设计模式,即强制使对象只能有一个实例就称为单例模式。单例模式分为两种风格,一种是饿汉式,一种是懒汉式:饿汉式代码实现:static class Singleton{ private static Singleton instance = new Singleton(); public Singleton getInstance(){ return instance; } private Singleton(){}}不难看出.

2021-09-25 09:19:08 318

原创 线程安全问题

package Thread;public class ThreadDemo7 { public static class counter{ public int count = 0; public void print(){ System.out.println(count); } } public static void main(String[] args) { counter co.

2021-08-19 23:18:47 107 1

原创 多线程编程

线程也被称为轻量型进程 每个线程对应一个独立的执行流,在这个执行流里就能完成一系列的指令 一个进程包含了多个线程。 一个线程出现问题,整个进程也可能会出现问题。 进程和线程的区别: 进程包含线程 进程是资源分配的基本单位,线程是系统调度执行的基本单位 进程和进程之间相互独立,互不影响;线程与线程会共享资源,某线程出问题可能会影响其它线程 JVM在启动时会划分若干个区域,其中方法区和堆,是多个线程...

2021-08-16 16:13:34 102

原创 初步了解操作系统

冯诺依曼体系结构 中央处理器(CPU):进行算数运算和逻辑运算 存储器:存储数据,包括内存和外存,其中内存空间小,访问速度快;外存相反。 CPU CPU在制造时被提供以一组由二进制数据组成的指令,CPU的核心功能就是执行指令。 编写的代码会被编译器/JVM转译成CPU指令,由CPU执行 代码编译好后得到的一组二进制CPU指令将被存储进磁盘当中,当执行操作时,操作系统将CPU指令存储进内存当中,再由CPU来读取执行。 寄存器:存在于C.

2021-08-15 21:28:40 54

原创 网络原理基础知识

OSI七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 TCP/IP五层协议栈 物理层 数据链路层 网络层 传输层 UDP:无连接,不可靠,面向数据报 TCP:有连接,可靠,面向字节流 应用层 传输层数据一般叫做数据段 网络层数据一般叫做数据报 ..

2021-08-13 01:18:10 145

原创 二叉搜索树

左节点均比根节点值小,右节点均比根节点值大。一.构造(插入)二叉树构造二叉搜索树先输入一组数据,循环插入这一组数据BinarySearchTree binarySearchTree = new BinarySearchTree(); for(int i = 0 ; i < array.length ; i++){ binarySearchTree.insert(array[i]); }首先创建新的节点,判断该搜索二叉树是否为

2021-05-16 12:59:58 49

原创 七种常用排序总结(插排,希尔, 选择, 冒泡,快排,堆排,归并)

七种常用排序总结(插排,希尔,选择,冒泡,快排,堆排,归并)一.插入排序从第二个数字开始记录,比较前i个数字,超过记录的数字则后移,使得前i个数字有序。 /* * 插入排序 * 空间复杂度O(1) * 时间复杂度O(n^2) * 稳定 */ public static void insertSort(int[] array){ for(int i = 1 ; i < array.length ; i++){ ...

2021-05-14 15:51:59 240

一个超简单的博客系统,初学者可以来瞅瞅

第三方库中有大量所需要的包https://mvnrepository.com/

2021-08-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除