自定义博客皮肤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)
  • 收藏
  • 关注

原创 Java:关于 ThreadLocal 的知识来了!

面试题:1、ThreadLocal 与 ThreadLocalMap 的数据结构和关系?2、ThreadLocal 的 key 是弱引用,这是为什么?3、ThreadLocal 内存泄漏问题你知道吗?4、ThreadLocal 中最后为什么要加 remove 方法?一、ThreadLocal 简介1、ThreadLocal 是什么?ThreadLocal 能提供线程局部变量,这些变量与正常的变量不同,因为每一个线程在访问 ThreadLocal 实例的时候(通过 get 或 set 方法)都有

2021-02-19 13:52:05 1175

原创 JVM 学习笔记(一)内存结构

一、前言1、什么是 JVM ?1)定义Java Virtual Machine ,Java 程序的运行环境(Java 二进制字节码的运行环境)。2)好处一次编译,处处执行自动的内存管理,垃圾回收机制数组下标越界检查3)比较JVM、JRE、JDK 的关系如下图所示2、学习 JVM 有什么用?面试必备中高级程序员必备想走的长远,就需要懂原理,比如:自动装箱、自动拆箱是怎么实现的,反射是怎么实现的,垃圾回收机制是怎么回事等待,JVM 是必须掌握的。3、常见的 JVM我们主

2021-02-09 20:58:57 29785 23

原创 Java 并发编程下篇 -(JUC、AQS 源码、ReentrantLock 源码)

5、J.U.CAQS 原理1)概述2)实现不可重入锁3)自定义同步器4)自定义锁ReentrantLock 原理读写锁原理1)Semaphore2)CountdownLatch3)CyclicBarrier4)ConcurrentHashMap5)ConcurrentLinkedQueue6)BlockingQueue7)CopyOnWriteArrayList6、disruprot高性能无阻塞队列7、guava1、RateLimiter高性能型号量限制器8、异步编程

2021-02-07 08:43:12 4098 3

原创 Java 并发编程下篇 -(线程池)

七、线程池

2021-02-06 16:42:45 3347 1

原创 IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!

本次搭建使用 jdk 的版本为 jdk1.8.0_201,idea 版本 2020.1,提供 jdk 2 - 15 压缩包如下:JDK1.2 到 15 压缩包(密码:ia4z)一、找到 JDK 的 src.zip我们找到 JDK 安装包所在目录,会看到 src.zip 的压缩包,这里面就是 JDK 的源码,如下图。二、使用 IDEA 进行搭建1、创建一个简单的 Java 工程file -> new -> project -> next -> next -> 输入工程

2021-02-06 15:25:12 706 1

原创 Java 并发编程中篇 -(JMM、CAS 原理、Volatile 原理)

四、共享模型之内存五、共享模型之无锁六、共享模型之不可变

2021-02-04 14:07:56 6559 9

原创 Java 并发编程上篇 -(Synchronized 原理、LockSupport 原理、ReentrantLock 原理)

一、基本概念1、进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器 等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)线程一个进程之内可以分为一到多个线程

2021-02-01 23:16:51 18155 14

原创 尚硅谷经典 Java 面试题第一季笔记总结

一、JavaSE 面试题1、自增变量代码的执行结果是什么呢?public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println("i = " + i); System.out.println("j = " + j); System

2021-01-22 17:39:14 9316 3

原创 数据结构基本介绍

数据结构基本介绍1、基本数据结构1、数组、字符串 / Array & String优点:构建一个数组非常简单能让我们在 O(1) 的时间里根据数组的下标 (index) 查询到某个元素缺点:构建时必须分配一段连续的空间查询某个元素是否存在时需要遍历整个数组,耗费 O(n) 的时间删除和添加某个元素时, 同样需要耗费 O(n) 的时间例如:leetcode 242.有效的字母异位词2、链表 / Linked-list单链表:链表中的每个元素实际上是一个单独的对象,而所有对象

2022-02-07 10:42:00 299

原创 Linux - Centos7 搭建 JAVA 环境,安装 MAVEN

一、下载 MAVEN1、到官方网址下载:http://maven.apache.org/download.cgi2、下载好后,使用 FTP 类软件,将下载好的本地文件上传到 Linux 服务器上来。我使用的是 PSFTP ,如果想试试这个软件的可以去下 Putty,我自己有一篇关于 PSFTP 常用命令的文章,可以看看如何使用该软件进行文件上传与下载。psftp> cd maven // 移动目录Remote directory is now /software/java/mavenpsf

2021-09-15 15:19:20 226

原创 Linux - Centos7 搭建 JAVA 环境,安装 JDK

一、下载 JDKwget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz在终端输入上面的命令,下载 JDK。二、解压1、下载好

2021-09-15 14:40:12 193

转载 PSFTP 常用命令

PSFTP 是 PuTTY SFTP 客户端,用于本地与服务器间安全传输文件,常用的操作命令如下:1、建立远程连接open hostname # hostname 为 ip 地址, 然后会验证用户名和密码open username@hostname # 用户名@ip地址 然后输入密码2、操作远程服务器pwd # 查看当前所在目录cd + 路径 # 进入某个目录ls # 列出当前目录下的文件dir # 列出当前目录下的文件rm + 文件名 # 删除文件del + 文件名 # 删除文件p

2021-02-22 22:52:33 2857

原创 VsCode 搭建 Java 开发环境

前提:已经安装 jdk一、vscode 安装插件1)点击扩展(Ctrl+Shift+X)2)搜索查找 Java Extension Pack3)点击安装注意如果是 jdk 11 可以直接安装,如果是 jdk 8 那么需要先安装 Language Support for Java™ by Red Hat,让 Language Support for Java™ by Red Hat 的版本回退到 0.64.1 因为 0.65.0 只支持 java11。然后再安装 Java Extension Pa

2021-02-14 12:05:57 3671 1

原创 JVM 学习笔记(三)类加载与字节码技术&内存模型

四、类加载与字节码技术1、类文件结构通过 javac 类名.java 编译 java 文件后,会生成一个 .class 的文件!以下是字节码文件:0000000 ca fe ba be 00 00 00 34 00 23 0a 00 06 00 15 09 0000020 00 16 00 17 08 00 18 0a 00 19 00 1a 07 00 1b 07 0000040 00 1c 01 00 06 3c 69 6e 69 74 3e 01 00 03 28 29 0000060

2021-02-11 22:54:39 8847 7

原创 JVM 学习笔记(二)垃圾回收

三、垃圾回收1、如果判断对象可以回收1)引用计数法当一个对象被引用时,就当引用对象的值加一,当值为 0 时,就表示该对象不被引用,可以被垃圾收集器回收。这个引用计数法听起来不错,但是有一个弊端,如下图所示,循环引用时,两个对象的计数都为1,导致两个对象都无法被释放。2)可达性分析算法JVM 中的垃圾回收器通过可达性分析来探索所有存活的对象扫描堆中的对象,看能否沿着 GC Root 对象为起点的引用链找到该对象,如果找不到,则表示可以回收可以作为 GC Root 的对象虚拟机栈(栈帧中的

2021-02-10 17:41:42 11489 9

原创 使用 javap 指令没有显示局部变量表 LocalVariableTable

解决方法:在 javac 编译的时候加上参数 -g:vars,可能是编译的时候就没有生成,那么使用 javap 指令反编译的时候肯定也没有。解决步骤如下:1)javac -g:vars xxx.java2)javap -v xxx.class

2021-02-08 13:27:36 320

原创 JAVA基础&高级之基本语法篇

先来看看Java基础知识框架图从图中可以看出,Java的基础知识分为4个部分,该篇会讲解Java的基础语法基础语法面向对象高级知识新特性一、关键字和保留字1、关键字(keyword)定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)特点:关键字中所有字母都是小写按照关键字用途分类可以分为如下几类:1)定义数据类型的关键字class、Interface、enum、byte、short、int、long、float、double、char、boolean、void2

2020-09-01 21:51:58 1149 2

空空如也

空空如也

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

TA关注的人

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