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

原创 下载Lua plugin遇到的坑

问题描述今天在idea中第一次写Lua脚本,创建.lua文件后,被提示安装lua插件,然后就点下载,等待安装,但是在安装好像结束时,idea直接被弹出去,然后再次点击idea时就无法打开了,报错如下出现的原因根据报错,其实大概可以才出来,是因为重复读取了Lua脚本插件的配置导致的。网上找了一波,结果如下:安装多个Lua插件,并且插件之间不兼容,就会导致idea无法启动。所以Idea(2020.3.2) 在默认安装时是直接安装两个Lua插件。到这里问题基本就解决了,删除上述两个插件中的任意一个

2021-10-04 20:22:33 383 1

原创 并发——ConcurrentHashMap1.7 原理分析

ConcurrentHashMap 原理分析1. 成员2.内部类3. 方法3. 1 构造方法3.2 put()3.3 remove()3.7 getObject()3.6 rehash()4.总结这篇文章仅分析ConcurrentHashMap 的安全性和并发性,hashMap的原理看java系列中的另一篇。1. 成员对比hashMap 和Concurrentmap 可以发现后者多了一个关键的对象Segment和一些该对象相关的属性2.内部类Concurrenthashmap 1.7 和has

2021-08-19 20:41:41 302

原创 并发—— CountDownLatch应用之王者荣耀游戏加载

王者荣耀加载1.介绍1.介绍王者荣耀加载过程模拟,10个线程表示不同的玩家,加载进入王者荣耀import java.util.Arrays;import java.util.Random;import java.util.concurrent.*;public class Main1 { public static void main(String[] args) throws Exception{ ExecutorService pool = Executors.n

2021-08-18 19:51:09 170 1

原创 并发 —— AQS原理

AQS原理1.介绍1.1 特点:1.2 实现的功能1.3 设置2. 原理2.1 内部类3. 自定义锁实现4.ReentrantLock4.1 内部类4. 2非公平锁和公平锁的两处不同:4.3 非公平锁加锁流程4.4 解锁流程4.5 公平锁4.6 可重入原理4.7 可打断原理4.8 条件变量实现原理1.介绍AQS 全名AbstractQueueSynchronizer 抽象同步队列,是java中锁实现的一个抽象基类,大部分需要同步控制的工具类都继承了AQS。AQS主要是为了实现进程控制,作用类似于Syn

2021-08-17 22:09:22 126

原创 并发——定期执行

线程池应用实现:每个星期四19点定期执行直接上代码:public class Main { public static void main(String[] args) throws Exception{ ScheduledExecutorService pool = Executors.newScheduledThreadPool(2);// 获取当前时间 LocalDateTime now = LocalDateTime.now();

2021-08-16 19:34:16 53

原创 并发—— LongAdder源码分析

LongAdder 源码分析1.AtomicLong 和 LongAdder 的性能比较2. 分析原因 AtomicLong3.LongAdder 分析3.1 类关系3.11 Striped64 类3.12 计算机缓存 —— 伪共享3.13 成员3.13 increment()3.14 sum()4.总结1.AtomicLong 和 LongAdder 的性能比较直接上代码开启16个线程,每个线程执行1000万次的自增;AtomicLongpublic class Main1 { p

2021-08-15 21:38:12 109

原创 并发——Synchronized原理

synchronized原理1. Monitor 介绍2. MarkWord2. Synchronized 原理 (重量级锁)2.1 synchronized 在字节码中 的体现3. Synchronized进阶原理3.1 轻量级锁3.2 锁膨胀3.3 偏向锁3.31 hashcode问题4. 自旋优化5. 锁消除1. Monitor 介绍Monitor 被成为锁或者是管程,是操作系统底层为了控制线程,进程同步时使用的一个对象。在Monitor中有三个管家的属性见下图:分别是:waitSet

2021-08-04 23:00:07 93

原创 javaSe——hashmap jdk1.8

hashmap jdk1.81.实现的接口2.内部类3.hashmap内部的成员4.默认值 (注意)5.方法分析5.1构造方法5.2put方法hashjdk1.7的实现看另一篇1.实现的接口jdk1.8的hashmap 和 1.7的一样都是实现一个map接口包含了一些操作kv键值的一些常用的方法,get(),put(),remove()等等。依然使用一个Set集合来保存所有的key,保证key的唯一性2.内部类迭代器就不介绍了。相较于jdk1.7,这里的出现了两个内部类,node和tr

2021-07-27 17:20:27 121

原创 数据结构——红黑树原理

红黑树性能分析定义节点变色插入节点左旋转右旋转三级目录性能分析首先,无论是插入数据还是查找数据,红黑树都是平衡的,查找键值的过程类似于二叉查找树,但是确不会出现树失衡,降低查找效率,其次是在插入键值时,虽然会通过左旋或者右旋来调节树的平衡,但是其限制比较低,所以插入的效率依然比较高。定义红黑树中的每个节点需要满足以下五个定义1.每个节点是红的或者是黑的2.根节点是黑的3.每个叶子节点是黑的 —— 这里的叶子节点指的原来叶子节点的左右节点4.如果一个节点是红的,那么它的两个儿子节点都是黑的5

2021-07-27 10:41:37 110

原创 数据结构——树的演变

树的演变笔记最开始的树二叉查找树(BST)自平衡二叉查找树红黑树最开始的树组开始的树是,由一个根节点,然后每个节点对应着多个子节点,大概就是以下这个样子每个接待你对应的数据是没有限定的,就是没每个的值相互之间不受影响,所以使用这种树,在根据值查找某个节点的时候,就需要一层一层的遍历所有的节点,执行的效率比较低,时间复杂度为O(n),所以就引入二叉查找树。二叉查找树(BST)在查找某个值的时候,一共就只有三种结果,大于,小于,等于,根据这三种情况并设计出了二叉查找树,某个节点的左边存放比该节点值小

2021-07-26 22:18:15 740

原创 算法——String和StringBuilder

String和StringBuilderstringStringBuilder分析原理小结leetcode257. 二叉树的所有路径一个小知识点记录以下: 执行效率两种递归的实现方式stringclass Solution { List<String>ans1 = new LinkedList<>(); public List<String> binaryTreePaths(TreeNode root) { if (root == n

2021-07-26 11:01:12 59

原创 javaSe——HashMap1.7

hashMap —— jdk1.7版本1. hashmap实现的接口2. hashmap的内部类分析3.hashmap 中的四个重要的实例变量3. hashmap内部中重要的默认属性4.重要方法4.1构造方法4.2 put(K,V)4.2 get()4.3 删除操作4.4扩容5. 小结hashmap的使用比较简单,就不记了,这里直接分析hashmap的内部结构1. hashmap实现的接口这是map接口中的一些方法,包括了常见的get(),put(),remove(),contain()等等。观察

2021-07-25 18:19:57 186 1

转载 javaSe——泛型

泛型相关知识,总结的比较好

2021-07-20 22:12:46 49

原创 javaSe —— 方法调用

方法调用java中的两种类型的方法: 方法重写,方法重载静态类型 —— 重载解析 —— 静态绑定对于方法重载的方法,在java程序在编译时期就以及确定的方法的版本—— 就是方法的调用者是谁。编译器在编译一个对象时,会查看对象声明的类型和方法名字。由于方法重载,所以就有可能会出现很多方法名字一样的方法。接下来在调用方法的时候,为了确定一个具体的方法, 就需要进行方法中提供的参数匹配, 整个过程称为重载解析但是这里的匹配可能找不到匹配的参数类型,比如重载的方法中的参数类型只有flout和double两

2021-06-30 22:37:30 82

原创 javaSe —— 值传递

java —— 值传递首先给出总结:java 调用一个方法时,总是按照值传递分析过程学个c++ 的同学可能知道,有指针这个东西,但是在java中却没有这个概念,但是java 中却也体现着指针。在java中创建一个对象时,包含两个部分,一个是 在栈中的引用对象,另一个是存储在堆中的对象,通过引用,来访问堆中对象的数据。比如: Student a = new Student();public class Main1 { public static void main(String[] args

2021-06-30 21:50:14 45

原创 操作系统——进程描述与控制

进程描述与控制主要的知识点进程概念进程状态操作系统表示每个进程状态所需要数据结构、操作系统如何使用这些数据结构控制进程的执行首先一个关键的问题:为什么要引入进程?—— 在现代的多道程序并发执行的操作系统种,多道程序并发的访问共享资源,所以这些程序共同决定了共享资源的访问状态,所以就会出现程序断断续续的执行的情况,这些都是程序执行的动态过程中发生的,所以用程序这个静态的概念来描述不能反映出并发执行过程中的这些特征,所以引入了进程这一概念来描述这个动态的过程。—— 现在我们知道了进程是一个动

2021-06-26 21:05:17 307

转载 操作系统——过程调用和系统调用

转载

2021-06-26 16:24:01 793

空空如也

空空如也

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

TA关注的人

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