- 博客(12)
- 收藏
- 关注
原创 ConcurrentHashMap详解与Unsafe使用
先来说说Unsafe吧,它的全类名是sun.misc.Unsafe,这是一个java不推荐的编程使用的类,只在源码中使用,它的构造方法被私有化了,不能去new,但是有一个getUnsafe方法:@CallerSensitive public static Unsafe getUnsafe() { Class var0 = Reflection.getCallerClass(); if (var0.getClassLoader() != null) {
2020-10-30 16:33:48 881
原创 HashMap类方法详解
首先我们先看一下jdk7中的put方法的源码: public V put(K key, V value) { if (table == EMPTY_TABLE) { inflateTable(threshold); } if (key == null) return putForNullKey(value); int hash = hash(key); int i = index
2020-10-27 20:24:02 712
原创 类在jvm中的存储形式,类的加载过程与静态实行的获取
class文件在被加载到内存中是如何存储的呢?是以(c++)InstanceKlass来存储Klass包含两个子类 InstanceKlass与ArrayKlassInstanceKlass有三个子类, 分别是InstanceMirrorKlass, InstanceClassLoaderKlass, InstanceRefKlass。其中的InstanceMirrorKlass代表class类,是存放在堆内存的,InstanceClassLoaderKlassInstanceRefKlass代
2020-10-25 23:09:32 240
原创 java内存模型与Volatile关键字
共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入时,能对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。Volatile 关键字的作用是变量在多个线程之间可见。Volatil
2020-07-10 20:18:12 174
原创 synchronized放在方法上
放在方法上class Test{ public synchronized void test() { } } 等价于 class Test{ public void test() { synchronized(this) { } } }class Test{ public synchronized s
2020-06-12 18:13:47 776
原创 用两阶段终止模式来终止线程
使用stop()方法会将线程完全终止,没有机会释放锁,这样会使锁永远无法释放。使用System.exit(int)方法会杀死整个进程。 //两阶段终止模式 static Thread test3(){ Thread thread = new Thread(()->{ while (true) { Thread thread1 = Thread.currentThread(); if (t
2020-06-12 10:28:55 150
原创 关于List集合类的一些细节
/** * @author biozzo * 这两个都是基于数组实现的List Vector是线程安全的但是十分古老,在List集合类没有出现时就有了,所以尽量少的使用Vector,推荐视同Collections工具类,来包装线程安全的集合类 * Vector还提供了一个stack子类,模拟栈的数据结构。 线程安全,但是由于十分古老,不推荐使用,推荐使用LinkedList * * 工具类Arrays,该工具中提供了asList(Object... a)方法,该方法可以把一个数组或者指定个数的对
2020-06-07 18:01:39 148
原创 正则表达式的合法字符
正则表达式的所支持的合法字符字符解释x字符x可以代表任何字符\0mnn八进制数 0mnn所表示的字符\xhh十六进制0xhh所表示的字符\uhhhh十六进制值0xhhhh所表示的 UNICODE字符\t制表符("\u0009")\n换行符(“\u000A”)\r回车符(“\000D”)\f换页符(“\u000C”)\a报警(bell)符(“\u0007”)\eEscape符(“\u001B”)\cxx对应
2020-06-06 17:17:54 1784
原创 native方法的实现过程
加载文件和动态链接库主要是对native方法有用,对于一些特殊的功能,比如,访问操作系统底层的硬件设备(比如开启线程的start()方法)java程序无法实现,必须通过C语言来完成,此时就需要使用c语言为java提供实现。具体的内容如下:(1)java程序中声明native方法,类似于abstract方法,只有方法签名,没有实现。编译该java程序,生成一个class文件。(2)用javah编译第一步生成的class文件,将产生一个.h文件。(3)写一个.cpp文件来实现native方法,其中需要包含
2020-06-05 18:52:44 303
原创 el-button与css样式冲突导致无法点击
<li v-for="chapter in chapterNestedList" :key="chapter.id"> <h2> {{chapter.title}} <span class="acts"> <el-button type="text">添加课时</el-button
2020-06-02 18:00:21 1863 1
原创 关于删除cookie的问题
在我这次做登录验证的时候出现了一个问题就是如果用github三方登陆的话,存在cookie的登录状态总是删不掉,但是如果是本站的注册的账号就可以删除掉。后来我去浏览器的cookie中查发现他们的存储路径不一样,怎么不一样呢,后来发现在谷歌cookie默认是存在页面的同一级目录下面的比如: 我拦截的路径是 @GetMapping("/toLogin/callback") 那我的cookie的...
2020-03-18 08:24:54 174
原创 关于二叉排序树的添加,查找与删除
二叉排序树(BST):对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。特备说明:如果有相同的值,可以将该节点放在左子节点或右子节点public class BinarySortTree { private static class Node{ int value; Node left; ...
2020-02-21 09:37:15 94
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人