自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

晨猫

https://morningcat2018.github.io

  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 jdk各种版本[openjdk/oracle/adopt/zulu...]

openjdkhttp://jdk.java.net/java-se-ri/8-MR3icedteahttp://openjdk.java.net/projects/icedtea/https://icedtea.classpath.org/wiki/Main_Pageatlassian adoptopenjdkhttps://adoptopenjdk.net/– 开发版 jdk 国内镜像https://mirrors4.tuna.tsinghua.edu.cn/AdoptOpenJDK/?

2020-06-01 12:03:18 3441 1

原创 Java并发学习笔记12 ThreadLocal

bilibili-Java并发学习笔记12 ThreadLocal基于 java 1.8.0P43_ThreadLocal底层源码剖析与解读本质上,ThreadLocal 是通过空间换时间,从而实现每个线程当中都会有一个变量的副本,这样每个线程就都会操作该副本,从而完全规避了多线程的并发问题。package java.lang;import java.lang.ref.*;import java.util.Objects;import java.util.concurrent.atomic.A

2020-06-30 20:56:22 178

原创 Java并发学习笔记11 Future

bilibili-Java并发学习笔记11 Future基于 java 1.8.0P41_Future模式示例剖析与源码详解package java.util.concurrent;/** * Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。 * 计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消则由 cancel 方法来执行。 * 还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能

2020-06-30 17:16:33 213

原创 Java并发学习笔记10 CAS

bilibili-Java并发学习笔记10 CAS基于 java 1.8.0P39_CAS详解及透过字节码分析变量操作的原子性悲观锁synchronized 关键字与 Lock 等锁机制都是悲观锁:无论做任何操作,首先都需要先上锁,接下来再去执行后续操作,从而确保了接下来的所有操作都是由当前这个线程来执行的。乐观锁线程在操作之前不会做任何预先的处理,而是直接去执行;当在最后执行变量更新的时候,当前线程需要有一种机制来确保当前被操作的变量是没有被其他线程修改的;CAS 是乐观锁的一种非常

2020-06-30 14:51:36 132

原创 Java并发学习笔记9 CountDownLatch CyclicBarrier

bilibili-Java并发学习笔记9 CountDownLatch CyclicBarrier基于 java 1.8.0P36_CountDownLatch使用场景与示例分析及底层源码解读package java.util.concurrent;import java.util.concurrent.locks.AbstractQueuedSynchronizer;/** * 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 * * 用给定的计数

2020-06-29 17:23:50 139

原创 Java并发学习笔记8 volatile

bilibili-Java并发学习笔记8 volatile基于 java 1.8.0P33_volatile关键字作用与锁的关系深入详解volatile 的作用:实现 long/double 类型变量的原子操作volatile double a = 1.0;jdk1.5 AtomicLong防止指令重排序实现变量的可见性JMM使用 volatile 时,不再会从寄存器中获取缓存值,而是直接从内存中获取;volatile 与 锁 相似的特点:确保变量的内存可见性

2020-06-29 16:09:16 141

原创 Java并发学习笔记7 Condition

bilibili-Java并发学习笔记7 Condition基于 java 1.8.0P27_Condition详解及相比于传统线程并发模式的改进public interface Lock { /** * 返回绑定到此 Lock 实例的新 Condition 实例。 * * 在等待条件前,锁必须由当前线程保持。调用 Condition.await() 将在等待前以原子方式释放锁,并在等待返回前重新获取锁。 * * Condition 实例的具体

2020-06-28 19:32:27 174

原创 Java并发学习笔记6 Lock锁

bilibili-Java并发学习笔记6 Lock锁基于 java 1.8.0P24_Lock锁机制深入详解/** * Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition 对象。 * 锁是控制多个线程对共享资源进行访问的工具。通常,锁提供了对共享资源的独占访问。一次只能有一个线程获得锁,对共享资源的所有访问都需要首先获得锁。不过,某些锁可能允许对共享资源并发访问,如 Rea

2020-06-28 14:00:45 367

原创 Java并发学习笔记5 锁升级(偏向锁/轻量级锁/重量级锁)、锁消除、锁粗化

bilibili-Java并发学习笔记5 锁升级(偏向锁/轻量级锁/重量级锁)、锁消除、锁粗化基于 java 1.8.0P18_锁升级与偏向锁深入解析在 JDK 1.5 之前(不包括1.5),若想实现线程同步,只能使用 synchronized 关键字这一方式来达到;jdk 层面,也是通过 synchronized 关键字来做到数据的原子性维护的;synchronized 关键字时 JVM 实现的一种内置锁,从 jvm 层面角度看,这种锁的获取和释放都是由 JVM 来完成的;在 JDK 1.5 中

2020-06-24 17:54:36 247

原创 Java并发学习笔记4 openjdk源码

bilibili-Java并发学习笔记4 openjdk源码基于 java 1.8.0P16_通过openjdk源码分析ObjectMonitor底层实现opensourceopenjdkMercurialdownloadhttp://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/d2c2cd90513e/src/share/vm/runtime/objectMonitor.hppclass ObjectMonitor { public

2020-06-23 17:43:31 672

原创 Java并发学习笔记3 synchronized

bilibili-Java并发学习笔记3 synchronized基于 java 1.8.0P11_synchronized关键字原理详解P12_透过字节码理解synchronized关键字JVM学习笔记13 synchronized对当前类实例上锁package new_package.thread.p12;public class SynchronizedTest2 { public synchronized void hello() { int i = 18;

2020-06-23 14:09:01 146

原创 Java并发学习笔记2 wait 和 notify

bilibili-Java并发学习笔记2 wait 和 notify基于 java 1.8.0P6_wait与sleep方法字节码分析waitwait()在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。换句话说,此方法的行为就好像它仅执行 wait(0) 调用一样。当前线程必须拥有此 monitor 。该线程释放对此 monitor 的所有权并等待,直到其他线程通过调用 notify 方法,或 notifyAll 方法通知在此对象的 mo

2020-06-22 16:30:26 11462

原创 Java并发学习笔记1 Thread 类

bilibili-Java并发学习笔记1 理论基础基于 java 1.8.0P5_从Thread与Runnable说开去Thread 概览java.lang.Threadpublicclass Thread implements Runnable { /* Make sure registerNatives is the first thing <clinit> does. */ private static native void registerNatives

2020-06-22 16:04:14 150

原创 JVM学习笔记21 java 工具

bilibili-JVM学习笔记21 java 工具The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM学习笔记19 JVM内存空间JVM学习笔记20 jvisualvm基于 java 1.8.0jmap与jstat工具实战分析 67➜ ~ jmap -hUsage: jmap [option] <pid> (to connect to running

2020-06-19 16:45:08 186

原创 MacOs 下的 C 编译器

clangclang编译 Cclang++编译C++案例:clang++ -std=c++11 -stdlib=libc++ example.cpp -o example_program> clang++ -vApple clang version 11.0.3 (clang-1103.0.32.59)Target: x86_64-apple-darwin19.3.0Thread model: posixInstalledDir: /Library/Developer/C

2020-06-19 14:34:33 2005

原创 JVM学习笔记24 CMS 垃圾收集器

bilibili-JVM学习笔记24 CMS 垃圾收集器The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM学习笔记19 JVM内存空间JVM学习笔记20 jvisualvmJVM学习笔记21JVM学习笔记22 垃圾回收理论知识JVM学习笔记23内存泄漏 和 VM参数设置基于 java 1.8.0安全点与安全区域详解 83Concurrent Mark Sweep --> CMS

2020-06-18 14:50:17 207

原创 JVM学习笔记23内存泄漏 和 VM参数设置

bilibili-JVM学习笔记23The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM学习笔记19 JVM内存空间JVM学习笔记20 jvisualvmJVM学习笔记21JVM学习笔记22 垃圾回收理论知识基于 java 1.8.0Java内存泄露经典原因分析 77Java 内存泄漏的经典原因对象定义在错误的范围(Wrong Scope)异常(Exception)处理不当集合

2020-06-17 15:51:35 279

原创 JVM学习笔记22 垃圾回收理论知识

bilibili-JVM学习笔记22 垃圾回收算法The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM学习笔记19 JVM内存空间JVM学习笔记20 jvisualvm基于 java 1.8.0JVM垃圾回收重要理论剖析 74运行时区域程序计数器 PC本地方法栈Java虚拟机栈 (JVM Stack)Java 虚拟机栈描述的是 Java 方法的执行模型:每个方法执行的时候

2020-06-16 15:56:33 253

原创 JVM学习笔记20 jvisualvm

bilibili-JVM学习笔记20 jvisualvmThe Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM学习笔记19 JVM内存空间基于 java 1.8.0实战 jvisualvmpackage new_package.jvm.p62;import java.util.ArrayList;import java.util.List;/** * -Xms5m -Xmx5m -X

2020-06-15 16:22:46 222

原创 JVM学习笔记19 JVM内存空间

bilibili-JVM学习笔记19 JVM内存空间The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM内存空间划分与作用详解

2020-06-13 18:12:42 166

原创 JVM学习笔记18 字节码知识总结

bilibili-JVM学习笔记18 字节码知识总结The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记11 - Java字节码初识JVM学习笔记12 - 解读笔记11中的attributesJVM学习笔记13JVM学习笔记14 异常JVM学习笔记15 方法执行JVM学习笔记16 字节码执行JVM学习笔记17 动态代理运作机制字节码知识总结...

2020-06-13 18:08:08 218

原创 JVM学习笔记17 动态代理运作机制

bilibili-JVM学习笔记17 动态代理运作机制The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记11 - Java字节码初识JVM学习笔记12 - 解读笔记11中的attributesJVM学习笔记13JVM学习笔记14 异常JVM学习笔记15 方法执行JVM学习笔记16透过字节码生成审视Java动态代理运作机制package new_package.jvm.p57;public interface

2020-06-13 17:32:22 191

原创 JVM学习笔记16 字节码执行

bilibili-JVM学习笔记16The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记11 - Java字节码初识JVM学习笔记12 - 解读笔记11中的attributesJVM学习笔记13JVM学习笔记14 异常JVM学习笔记15 方法执行编译执行 解释执行现代 JVM 在执行 Java 代码的时候,通常都会将解释执行与编译执行二者结合起来进行;解释执行通过 jvm 解释器来读取字节码,遇到相应的字

2020-06-13 16:18:52 228

原创 JVM学习笔记15 方法执行

bilibili-JVM学习笔记15 方法执行The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记11 - Java字节码初识JVM学习笔记12 - 解读笔记11中的attributesJVM学习笔记13JVM学习笔记14 异常栈帧 stack frame栈帧是一种用于帮助虚拟机执行方法调用与方法执行的数据结构;方法的局部变量表动态链接信息符号引用直接引用方法的返回地址操作数栈一个栈帧只会

2020-06-12 20:17:30 152

原创 JVM学习笔记14 异常

bilibili-JVM学习笔记14 异常JVM学习笔记11 - Java字节码初识JVM学习笔记12 - 解读笔记11中的attributesJVM学习笔记13P49 异常处理1 try catch异常处理2 throw

2020-06-11 13:46:10 220

原创 JVM学习笔记13 synchronized

bilibili-JVM学习笔记13JVM学习笔记11 - Java字节码初识JVM学习笔记12 - 解读笔记11中的attributes实例方法加 synchronizedpackage new_package.jvm.p46;public class SynchronizedTest1 { private int i = 0; public synchronized void test1() { i++; System.out.printl

2020-06-10 20:15:52 175

原创 JVM学习笔记12 - 解读笔记11中的attributes

bilibili-JVM学习笔记12 - 解读笔记11中的attributesJVM学习笔记11 - Java字节码初识4.7. Attributes附加属性attribute_info { u2 attribute_name_index; u4 attribute_length; u1 info[attribute_length];}Table 4.7-A. Predefined class file attributes (by section)Attri

2020-06-09 23:53:20 716

原创 番外 GC算法

引用计数算法:最初的算法现代虚拟机大多已弃用此算法导致循环引用效率高可达性分析算法/根搜索算法:HotSpotGC Roots虚拟机栈的栈帧的局部变量表所引用的对象本地方法栈的JNI所引用的对象方法区的静态变量和常量所引用的对象可达性图论什么时候进行垃圾回收:当 eden 区或者 S 区(包括 s0 和 s1 ,又称 from 和 to 区)不够用时当老年代不够用时当方法区不够用时System.gc()标记清除算法先标记(根据可达性分析算

2020-06-06 16:56:30 130

转载 二叉树遍历(非递归非栈法 Java版)

二叉树遍历(非递归,非栈)package tree.morris;import tree.TreeNode;import java.util.ArrayList;import java.util.List;/** * 二叉树遍历:非递归,不用栈,O(1) * <p> * {link https://www.cnblogs.com/AnnieKim/archive/2013/06/15/MorrisTraversal.html} 原版使用 C 编写 */public cl

2020-06-04 20:39:26 444

原创 eclipse

– 下载https://www.eclipse.org/downloads/packages/– githubhttps://github.com/eclipse/eclipsehttps://github.com/eclipse/openj9– git.eclipse.orghttps://git.eclipse.org/c/www.eclipse.org/eclipse.git/

2020-06-04 10:57:01 113

MD5Util.class

class文件,用于自定义ClassLoader加载文件使用; 类加载器是负责加载类的对象。ClassLoader 类是一个抽象类。如果给定类的二进制名称,那么类加载器会试图查找或生成构成类定义的数据。一般策略是将名称转换为某个文件名,然后从文件系统读取该名称的“类文件”。

2020-04-23

空空如也

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

TA关注的人

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