- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 JAVA 锁升级过程,进行一致性Hash,偏向锁与轻量级锁是否会升级
文章目录起因Mark Word(HotSpot)内存可视化工具无锁状态偏向锁轻量级锁重量级锁锁升级过程起因在周志明先生的《深入理解JAVA虚拟机》中,锁优化的章节讲到了,当一个对象当前正处于偏向锁状态,又收到需要计算其一致性哈希码的请求时,它的偏向状态会被立刻撤销,并且锁会膨胀成重量级锁,究其原因是因为对象头的Mark Word中,存储偏向锁的线程ID地址跟存储一致性Hash的比特位是冲突的那么,如果对象轻量级锁,重量级锁的Mark Word难道不会跟Hash编码冲突吗,轻量级锁进行一致性Hash操作
2021-09-07 22:29:15
671
2
原创 Java IO详解:从IO了解数据缓存的基本思想(四)
Stream文章目录StreamInputStreamread(byte b[], int off, int len)skip(long n)available()close()mark(),reset(),markSupported()OutputStreamwrite(byte b[], int off, int len)flush()InputStreamInputStream是所有从文件中获取字节流的超类,子类必须实现read()方法来获取下一个字节//返回的是0-255的数字,如果没有下一
2021-08-10 01:06:56
257
原创 Java IO详解:从IO了解数据缓存的基本思想(三)
Stream文章目录StreamInputStreamread(byte b[], int off, int len)skip(long n)available()close()mark(),reset(),markSupported()OutputStreamwrite(byte b[], int off, int len)flush()InputStreamInputStream是所有从文件中获取字节流的超类,子类必须实现read()方法来获取下一个字节//返回的是0-255的数字,如果没有下一
2021-08-10 01:05:43
336
原创 Java IO详解:从IO了解数据缓存的基本思想(二)
Buffer(以ByteBuffer为例)文章目录Buffer(以ByteBuffer为例)简介初始化put()写入flip(),切换为读就绪状态get()读取Mark()标记,reset()恢复标记位简介Buffer是一个线性有序集合,主要有三个标识:capacity, limit, position**capacity**就是Buffer的容量,不为负且不改变**limit**标识第一个不能读/写的元素索引,不为负且不大于capacity**position**标识下一个要被读/写的元素索
2021-08-10 01:04:32
193
原创 Java IO详解:从IO了解数据缓存的基本思想(一)
JAVA IO相关知识文章目录JAVA IO相关知识Java IO 与NIO的不同:IO硬件原理IO硬件设备IO四种控制方式1.直接程序控制2.中断驱动控制方式3.直接存储器访问控制方式(DMA)4.通道方式Java IO 与NIO的不同:IO是面向stream的,可以指定每次读取一定长度的字节,但是不能回退的访问数据,如果需要这么做则小把他存在缓存区中NIO是面向buffer的,数据先读取到buffer中,再做处理,可以在其中进行数据的前后访问IO是Blocking的,阻塞式的,对于一个
2021-08-10 01:02:28
302
原创 TreeMap源码阅读-基于Java8
TreeMap文章目录TreeMap简介构造方法方法详解successor() 查找下个节点getCeilingEntry()/getFloorEntry 获取[low,key]/[key,high]的最大/小值,没有返回nullgetHigherEntry()/getLowerEntry获取[low,key)/(key,high]的最大/小值,没有返回nullDescendingMap()翻转mapsubMap()+headMap()+tailMap()简介TreeMap是一个直接由红黑树实现的结构
2021-08-10 00:54:56
280
原创 LinkedHashMap源码阅读-基于Java8
LinkedHashMap文章目录LinkedHashMap简介afterNodeRemovalafterNodeInsertionafterNodeAccess使用LinkedHashMap实现LRU缓存简介趁着热乎劲,赶紧看下LinkedHashMap,直观上来看,它依旧是一个HashMap,但是又是Linked,有序的链表,其实就是把节点穿插成双向链表,由于继承的hashMap,所以它各种方法其实一样的,只不过在做完map的数组+链表/红黑树部分后,要把链表也做相应的操作,之前也看到过,具体方法
2021-08-10 00:53:08
234
原创 HashMap源码阅读-基于Java8
HashMap文章目录HashMap1.继承关系2.几个变量3.resize4.put4.1.treeifyBin()4.2.TreeNode.treeify()4.3.TreeNode.putTreeVal()5.get4.1.TreeNode.getTreeNode6.remove1.继承关系继承自 AbstractMap ,实现了 Map 接口,但是其实有点奇怪的是,明明它们的方法都是一样的,在stackoverflow找到了答案(点击这里跳转)public class HashMap<
2021-08-10 00:49:45
131
原创 ConcurrentHashMap源码阅读-基于Java8
ConcurrentHashMap文章目录ConcurrentHashMap1.继承关系核心原子性操作2.put2.1treeifyBin()3.get4.remove(),replace()1.继承关系public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable{}跟 map 一样,继承自 Abstrac
2021-08-10 00:48:27
92
原创 Java集合框架详解
Java集合框架总结目录一、思维导图?二、详解1.java.util.Collection\1.1.java.util.Collection\总结目录Java的学习一直比较零散,接下来系统的做一些总结归纳,提升自我一、思维导图?橙色的是接口类 ,青色的是实体类二、详解1.java.util.Collection<E>集合是 无序、不唯一 的,提供了一些通用的方法,常见的有:int size();集合大小boolean isEmpty(); 是否置空boolean co
2020-08-27 17:12:57
221
原创 Django "TemplateDoesNotExist at /index/"解决/Django加载HTML出错
Django "TemplateDoesNotExist at /index/"解决这个问题还困扰的有点烦人,查找了半天终于解决了结构目录如图:网上很多方法说是settings.py 的配置TEMPLATES中 'DIRS': [],未填写,事实上好多教程会改为路径'DIRS': [ os.path.join(BASE_DIR,"templates/") ...
2020-01-16 15:47:50
8203
3
原创 8.循环,遍历详解-Python基础知识
8.循环,遍历详解-Python基础知识break,continue,pass,elsewhile循环for循环计数器循环rangebreak,continue,pass,elsebreak:跳出整个循环continue:跳出当次循环pass:空语句,不执行任何操作else:当循环正常结束(没有break)时运行while循环while 条件语句: 执行语句else:(可以没...
2020-01-14 18:58:05
538
原创 7.if条件判断-Python基础知识
7.if条件判断-Python基础知识条件判断布尔值and or notif/else三元表达式其他技巧条件判断由缩进控制,同级语句缩进应相同,注意不要空格跟tab混用;可以任意嵌套。if 条件判断语句1: 执行语句1elif 条件判断语句2: 执行语句2...(elif可以有0或任意多个)else 条件判断语句n: 执行语句n布尔值所有对象都有一个固定的布尔真/假值任...
2020-01-13 20:01:09
320
原创 5.元组,文件-python3基础知识
5.元组,文件-python3基础知识元组tuple创建方法文件元组tuple元组是任意对象的有序集合,通过偏移量存取,是不可变对象。创建t=(1,)一个元素一定要加逗号,否则认为()是运算符号t=(1,2,3,4)t=1,2,3,4t=tuple(iterator)方法基本与列表相似t[i]索引t[i][j]嵌套索引t[i:j]切片t1+t2拼接t1*3重复t.i...
2020-01-10 19:15:52
214
原创 4.数值类型,集合-python3基础知识
数值类型 1. 整型: 2. 浮点型:float 3. 复数:complex 4.分数Fraction 运算集合(set) 集合创建 方法
2020-01-10 10:36:53
254
原创 PyQt5 pyinstaller Failed to execute script 解决办法
PyQt5 pyinstaller Failed to execute script 解决办法打包的时候取消**-w**参数,让显示命令行。打开文件夹,按住Shift,右键,在此处打开powershell,或者命令行将生成的exe文件拖入,按回车发现报错ImportError: unable to find Qt5Core.dll on PATH这个问题在查阅了以后发现是PyQt5有些...
2020-01-09 09:11:15
806
原创 2.列表详解-python3基础知识
2.列表详解-python3基础知识概念索引,切片方法推导式概念可迭代对象,可变对象,有序序列,偏移量访问,支持任意嵌套。列表中的元素可以是任意类型,包括字符串,数字,列表,字典等。索引,切片支持负索引,切片方法与字符串一样。单层列表:list1 = [0,1,2,3,4,5,6,7,8,9]list1[3]>>>3list1[-3]>>>7...
2020-01-08 14:15:32
581
原创 1.字符串详解-python3基础知识
一:字符串概念操作创建转义字符字符串前加u,b,r概念序列:由其它对象组成的有序集合。字符串可以看做是单字符的字符串组成的序列,按照从左到右的顺序。不可变对象:字符串一旦定义,则不会被改变,每次对字符串的更改操作实际是生成了新的字符串指向变量。操作创建s = 'abc' abc单引号创建s = "abc" abc双引号创建s = 'a"b"c' a"b"c中间插入引号s = "...
2020-01-07 20:06:10
725
1
原创 PyQt5自定义组件功能,包括鼠标事件与键盘事件(PyQt5.QtWidgets)
PyQt5自定义组件功能,包括鼠标事件与键盘事件(PyQt5.QtWidgets))引言定义组件类,继承自QtWidgets为自定义组件添加功能鼠标事件键盘事件建立信号跟槽通信完整代码参考链接引言QtWidgets 是PyQT5中负责UI组件的模块。要组建自定义组件功能需要QtWidgets中继承组件,并自定义功能。本文例子采用鼠标移入Label显示弹窗。定义组件类,继承自QtWidg...
2019-12-30 16:53:35
2939
2
原创 pyqt5实现窗口切换,弹窗
PyQt5 组件实现各种功能的方法(例子是鼠标悬停显示图片)前言前言主要通过自定义组件类,来为组件添加鼠标事件或者键盘事件,设计UI界面跟逻辑界面在之前的文章已经讲过了,可以翻看复习,这哦李...
2019-12-30 14:09:22
2748
1
原创 PyQt5 使用 Qt Linguist 完成语言转换功能,知识点与实例(例子是中英文转换翻译)
PyQt5 使用 Qt Linguist 完成语言转换功能,知识点与实例(例子是中英文转换)前言Qt Linguist介绍安装创建一个完整项目前言大概思路是做一个Language工具栏选项,通过点击选项实现中英文界面切换,具体用到了Qt Linguist.exe,工具栏创建与功能连接,下面将详细介绍。QT Linguist官方例子https://doc.qt.io/qt-5/examples...
2019-12-21 17:04:26
3830
4
原创 初探在Pycharm中使用QT开发GUI页面,安装配置以完整项目代码
初探在Pycharm中使用QT开发GUI页面,组件安装配置以及一个完整项目目录QT and PyQt5 介绍安装创建一个完整项目使用QTDesigner设计UI界面编写py文件来组合UI界面跟业务逻辑将py文件打包成exe程序目录由于项目要求最近在看GUI开发的一些知识,在了解了Python的tkinter库跟QT之后,分别做了一版。其中QT更便于上手,功能更加丰富,开发速度与可维护性都比较好...
2019-12-11 10:11:46
4538
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人