JavaSE
文章平均质量分 58
菜鸟老文
这个作者很懒,什么都没留下…
展开
-
JVM 内存03-GC日志解析:
还不会看GC日志快来看看把原创 2023-02-28 14:41:11 · 279 阅读 · 0 评论 -
JVM内存02-新生代和老年代介绍:
JVM 中新生代和老年代的比例大小是可以通过参数进行调整的。默认情况下,新生代和老年代的比例是 1:2,也就是新生代占整个堆空间的 1/3,老年代占整个堆空间的 2/3。可以使用 JVM 参数 -XX:NewRatio= 来调整新生代和老年代的比例。其中, 表示老年代和新生代的比例,比如设置 -XX:NewRatio=2,表示老年代占整个堆空间的 2/(2+1)=2/3,新生代占整个堆空间的 1/(2+1)=1/3。默认值为 2。原创 2023-02-28 14:34:31 · 4221 阅读 · 0 评论 -
ab压力测试-Windows安装&&使用:
转载至:window安装ab压力测试并使用转载 2022-02-26 09:54:12 · 886 阅读 · 0 评论 -
JDK源码阅读-集合01:List接口的设计逻辑?List接口源码解析?附上完整无注释源码
如果你读List源码还是从头开始,那么我推荐你读一下这篇文章。原创 2021-12-18 00:29:02 · 563 阅读 · 0 评论 -
数据结构+算法02:getOrDefault()方法介绍&&“map.getOrDefault(c,0)+1“ 为什么要这样写?&&找出重复字符
在刷力扣时候不知道为什么要“map.getOrDefault(c,0)+1”,这句话作用,可以进来看看原创 2021-12-13 09:48:29 · 1619 阅读 · 1 评论 -
源码方法论02:拿到项目怎么入手?深入原理?三大层面解析项目源码-业务&&设计模式&&数据结构之间的关系
职场新人,到公司拿到一个项目如何深入一个项目,业务和设计模式,数据结构之间关系是什么样?文章很短,看摘要能明白就不要花钱了原创 2021-12-11 10:22:00 · 328 阅读 · 0 评论 -
源码方法论-01:应该如何阅读源码?
01-不要忽视源码中的注释。源码并不是每一个地方都会写注解的,但是比较难理解地方一定会留下注释。02-先理清楚脉络,再死抠细节的,而不是上来之后就直接看细节。03-大胆猜测,小心验证。如果让你来设计,那么你是怎么设计?先想,后面看看的他的源码是不是这样实现。04-见名知意05-使用插件Translate:IDEA插件,可以用来翻译源码中的英文注释掉。SequenceDiagramIDEA插件,用来生成源码的执行的时序图坚持,坚持,再坚持奥力给兄弟们!!!推荐看源码顺序:推荐从S原创 2021-11-21 20:02:28 · 276 阅读 · 0 评论 -
数据结构+算法篇-01:冒号排序;选择排序;插入排序代码,关系,及其内蕴的共同算法逻辑
01-开始的故事:相信每一个接触数据结构和算法最开始接触的一定是排序,但是我问一下计算机系的学弟(大二)他们有时候完全说不清楚,都有哪些排序,甚至数据结构都没有办法说清楚;但是最让人痛苦的是一些,知道,但是写不出代码苦逼孩子。希望这篇文章可以给哪些知道,但是写不出代码孩子一些思考,我始终认为,真正的教育和思考,是要起于灵魂深处共鸣,只有灵魂深处共鸣,才可以触及灵魂的思考。只有这样你们才能够在笔试的时候,手写排序(其他另外篇章再说)02-三种排序:第一次看的时候,请不要死扣代码,特别是初学小白!!!原创 2021-11-17 23:38:35 · 570 阅读 · 0 评论 -
多线程基础02:面试真题---线程有多少种状态?哪7种?
4种常态+三种中间态=7种常态 1,New---------------线程刚被创建常态 2,Ready------------线程就绪中间态(1):TimeWaiting----限时等待中间态(2):Waiting-----------需要手动释放中间态(3):Blocked----------阻塞(上锁)常态 3,Running--------运行常态 4,Teminate-------销毁中间态就是处于就绪和运行之间,线程的状态(中间态,是作者自己为了便于记忆自己取的)常态 1,New-----原创 2021-10-11 00:26:39 · 84 阅读 · 0 评论 -
多线程基础01:面试:wait和sleep,yield和join有什么区别;怎么保证的多线程顺序执行?
看目录啦1, wait-Object方法---等待----释放资源2,sleep-Thread方法--睡眠--不释放资源3,yield-Thread方法--重回消息队列---重新竞争4,join-Thread方法---让另外一个线程执行完再执行(1)面试题:怎么让线程ABCD顺序执行?方法A:在主线程按照顺序方法B:在线程内部调另外一个线程1, wait-Object方法—等待----释放资源2,sleep-Thread方法–睡眠–不释放资源3,yield-Thread方法–重回消息队列—重新竞争也原创 2021-10-11 00:05:58 · 126 阅读 · 0 评论 -
JVM虚拟机06:JSR内存屏障
JSR内存屏障有四种,LoadLoad,StoreStore,LoadStore,StoreLoad。Load,表示读指令,Store,表示写指令,两两组合,标识两个指令之间不可以进行重排序。1,LoadLoad屏障:对于这样的语句Load1;LoadLoad;Load2,在Load2及后续读取操作要读取的数据被访问前,保证Load1要读取的数据被读取完毕、2,StoreStore屏障:对于这样得语句Store1;StoreStore;Store2,在Store2及后续写入操作执行前,保证原创 2021-10-09 11:57:08 · 218 阅读 · 0 评论 -
java多线程03:Volatile作用---保持线程可见性&&禁止CPU指令重排序
1,测试实验,测试有无volatile的区别:(1)volatile保证线程可见性,public class T01_HelloVolatile{ /*volatile*/ boolean runing=true; void m(){ System.out.println("线程开始"); while (runing) { //这里包含了刷新内存的操作 //System.out.print原创 2021-10-09 00:51:01 · 83 阅读 · 0 评论 -
java多线02:synchronize四个层级实现(代码,java 字节码,执行过程,汇编)
1,java代码层面:直接在需要上锁的代码中添加代码:synchronize源代码: public static void main(String[] args) { Object o=new Object(); System.out.println(ClassLayout.parseInstance(o).toPrintable()); synchronized(o) { System.out.pr原创 2021-10-08 23:37:38 · 105 阅读 · 0 评论 -
Java多线程&&JVM内存布局01:Java对象在内存中存储的布局
1添加JOL(Java Object Layout)依赖: <dependencies> <!-- https://mvnrepository.com/artifact/org.openjdk.jol/jol-core --> <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol原创 2021-10-08 22:45:43 · 134 阅读 · 0 评论 -
Java多线程01:为什么的锁会升级?无锁态(new)?偏向锁?轻量级锁(自旋锁,无锁,自适应自旋锁)?重量级锁?
1,总介绍如下:2,解说:(1)无锁态(刚刚new出来的对象):无锁态,也就是说的,这个对象的刚刚创建出来,没有被加锁(2)偏向锁(一个线程上锁):类似一个线程的CAS,当线程并不激烈的时候的,只需要记录上当前的线程指针,执行到当前记录当前的线程锁,直接执行。(3)轻量级锁(多个线程竞争,但是竞争不激烈):轻量级锁又称为,自旋锁,无锁:竞争的线程每一个都生成Lock Record,作为版本号,看看是不是我修改的线程,如果是,进入资源修改资源,如果不是,那么就不断请求的循环,因此叫做自旋锁原创 2021-10-08 22:44:44 · 342 阅读 · 0 评论 -
JVM虚拟机04:JVM调优怎么选择垃圾回收器(GC)?垃圾回收器(GC)发展历史
对于以下,新生代,老年代不了解的朋友可以看我往期文章:JVM虚拟机03:什么是GC(垃圾回收机制)?什么是新生代和老年代?内存分代模型1,根据应用场景选择垃圾回收器(GC):GC的演化历史:GC是随着内存大小的不断增长而演进的场景:从几兆(M)到几十兆(M)Serial :单线程STW垃圾回收 年青代 老年代场景:几十兆—上百兆(1G)parallel 并行多线程 (JDK1.8默认垃圾回收器 )场景:几十个G的内存(当增加再多的线程的时候,都已经没有用得时候。)Con原创 2021-10-07 10:40:28 · 490 阅读 · 0 评论 -
JVM虚拟机05-什么是三色标记算法?使用在并发标记阶段?CMS针对三色标记漏标怎么解决?CMS天生Bug
1,三色标记的应用场景:三色标记算法是应用于并发标记阶段,用标记判断是不是垃圾。(1)什么是并发标记阶段。七个阶段中第二阶段:并发标记阶段的主要工作是,通过遍历第一个阶段(Initial Mark)标记出来的存活root对象,继续递归遍历老年代,并标记可直接或间接到达的所有老年代存活对象。可以参考这篇文章:Java之CMS GC的7个阶段(2)什么是三色?三色标记中的,三色分别代表着,垃圾回收的扫描程度和节点的标记状态,黑色:表示该节点及其子节点已经完全扫描标记完成了,所以不再需要标记灰色原创 2021-10-07 09:39:05 · 729 阅读 · 0 评论 -
JVM虚拟机03:什么是GC(垃圾回收机制)?什么是新生代和老年代?内存分代模型
1,什么是GC(Garbage Collection)?GC就是垃圾回收器,在上面一篇文章中,我们说到一件事,在一直所有垃圾回收算法里面,标记清除(Mark-Sweep),Coping(复制),标记压缩(Mark—Compact),各有特点,也各有优点,想要进一步了解,可以这篇文章:JVM虚拟机02:学习GC回收期必备前置知识-----什么是Java的垃圾?定位垃圾方式有哪些?GC回收的清除算法有哪些?在这里就不再多说。垃圾回收器,则是个根据各种情况,使用上述三种清除算法机制。2,看一下垃圾回收机原创 2021-10-06 15:46:21 · 226 阅读 · 0 评论 -
JVM虚拟机02:学习GC回收期必备前置知识-----什么是Java的垃圾?定位垃圾方式有哪些?GC回收的清除算法有哪些?
1,什么是垃圾(Garbage)?JVM虚拟机01:程序的栈(栈帧stack frame)和堆首先我们之前就可以,GC(垃圾回收机制)是针对于内存在堆中的回收的?所以什么是垃圾?垃圾就是内存中无用实例。看下图,如果对象B还指向对象实例B的话,那么就说明,对象B是被引用的,不是垃圾,但是在图中,变量B已经没有引用对象了,所以实例没有被引用,也就是我们垃圾2,定位垃圾方式有哪些?GC回收方式一共有两种:(1)引用计数(Reference Count)Python参考文章:引用计数-百度百科原创 2021-10-06 13:06:18 · 140 阅读 · 0 评论 -
JVM虚拟机01:程序的栈(栈帧stack frame)和堆
1,什么是栈?什么是栈帧?(1)栈是每个线程独有的,也就是说每开辟一个线程就会开辟一个栈帧。(2)线程中的每一个,就相当于一个栈帧(3)栈帧间的进出方式与数据结构中栈的相同,先进后出。-------也就是说,一个方法执行完之后,就会弹出,执行上一个压的方法。2,什么是堆?3,实例这是一段很简单的代码:他在栈帧中的运行情况是:(1)问题一,为什么需要垃圾回收。我们知道一个常识,那就是在栈中栈帧在方法执行完之后,就会结束的...原创 2021-10-06 10:27:45 · 222 阅读 · 0 评论 -
计算机操作系统恶补-01:汇编语言的操作过程
1,什么是汇编语言的?1.1概念(1)汇编语言是一个注记语言。(2)汇编语言也就是机器语言,计算机能够直接读懂代码。1.2 解释(1)机器码本质即是01001,只有零和一,但是为了记忆,人们将一段指定01010数字描述为某个指定字符,也就是我们常说关键字。比如说(瞎扯的,只是为了举例)0110011这一段机械码指定为了sum,那么在汇编中就是sum关键字(2)用0和1表示开始和结束这样的一个过程,通电和端点,无数个0和1的组合就是无数个通电和断电,开或者关的过程。2,汇编语言(机器码)执行流程原创 2021-10-01 15:30:45 · 294 阅读 · 0 评论 -
Java面试题:Semaphare 和lock的区别?
Semaphere:是一个流程控制级别,Lock是锁定代码。区别在于,lock是占用锁,semaphere是释放一个信号。Semaphare的应用场景有,比如银行取钱,开放一个窗口就是permits为1,予许一个线程进行执行,一个线程得到信号之后就进行执行,...原创 2021-10-01 14:59:52 · 487 阅读 · 0 评论 -
JavaSE-01:String,StringBuild,StringBuild之间的区别?
常用的字符串对象一般有如下:String,StringBuffer和StringBuilderString1,首先String是一个对象是常量2,每次修改都会在内存空间中开辟新的空间StringBuffer(线程安全)1,StringBuffer线程安全,原因是StringBuffer中加了很多synchronized,保证可以线性操作StringBuilder1,初始开辟的一个默认16空间字符,也可以指定2,在字符没有达到上限之前不会申请开辟新的空间3,修改字符不会开辟新的空间4,St原创 2021-09-07 16:16:44 · 135 阅读 · 0 评论 -
JavaSE---线程篇:一张图搞懂进程,进程,同步异步,阻塞非阻塞之间的关系
什么都别说先上图:对其中概念还不清楚,欢迎去看这位大佬的博客:大佬思路超清晰原创 2021-08-05 23:10:41 · 205 阅读 · 0 评论