Raymon_社区达人页

个人头像照片
Raymon
已加入开发者社区1514

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
初入江湖
初入江湖

成就

已发布61篇文章
3条评论
已回答0个问题
0条评论
已发布0个视频
github地址

我关注的人 更多

技术能力

兴趣领域
  • Java
  • 设计模式
  • 项目管理
  • 微服务
  • 中间件
  • 运维
  • 架构师
擅长领域
技术认证

暂时未有相关云产品技术能力~

Java技术专家+架构师,个人公众号搜索OpenCoder

暂无精选文章
暂无更多信息

2023年07月

  • 07.28 18:48:02
    发表了文章 2023-07-28 18:48:02

    Java NIO系列教程四【完】-管道-文件锁-异步写入

    ​ 到此位置NIO的所有的内容都结束了,对于NIO来说主要是各种概念需要大家去理解然后有很多的用法和api也需要大家去熟悉所以想把NIO学懂学好其实并不容易一定要多写案例去测试巩固,也预祝大家能把NIO的知识看懂理顺!!!
  • 07.28 18:47:35
    发表了文章 2023-07-28 18:47:35

    Java NIO系列教程三

    ​ 今天主要给大家介绍的是Buffer的基本使用这个也是NIO里面最总要的概率之一,里面的操作也是有一些复杂的同时也是需要大家必须要重点掌握的知识点,同时也介绍了一下Selector的用法下一篇文章我们将为大家介绍Pipe管道以及FileLock文件锁这也是NIO里面最后的一分部内容了。
  • 07.28 18:47:09
    发表了文章 2023-07-28 18:47:09

    Java NIO系列教程二

    ​ 今天主要是为大家详细的介绍了常见的各种Channel以及他们的用法,本文编写了大量的案例还需要大家认真的去实践以后才能真正的掌握住。介绍完Channel那么下一篇文章我们就可以为大家介绍Buffer和Selector的具体使用了。
  • 07.28 18:46:20
    发表了文章 2023-07-28 18:46:20

    Java NIO系列教程一

    今天主要给大家介绍的是NIO的基本的概念以及Channel中常用的FileChannel的基本的用法,算是对Channel有一个简单的介绍。下一篇文章我们将详细的为大家介绍其他的常用Channel。
  • 07.28 18:45:27
    发表了文章 2023-07-28 18:45:27

    JDK1.7 HashMap并发安全问题

    虽然我们现在开发中使用的JDK一般都是JDK8了但是最近还是有很多同学在面试的过程中遇到了JDK1.7的一些问题那么接下来我们就带着大家一起来聊一下HashMap在1.7中的各种问题。
  • 07.28 18:44:40
    发表了文章 2023-07-28 18:44:40

    源码剖析之ConcurrentHashMap

    ​ JDK8中ConcurrentHashMap的结构是:数组+链表+红黑树。 ​ 因为在hash冲突严重的情况下,链表的查询效率是O(n),所以jdk8中改成了单个链表的个数大于8时,数组长度小于64就扩容,数组长度大于等于64,则链表会转换为红黑树,这样以空间换时间,查询效率会变O(nlogn)。 ​ 红黑树在Node数组内部存储的不是一个TreeNode对象,而是一个TreeBin对象,TreeBin内部维持着一个红黑树。 ​ 在JDK8中ConcurrentHashMap最经点的实现是使用CAS+synchronized+volatile 来保证并发安全
  • 07.28 18:43:26
    发表了文章 2023-07-28 18:43:26

    窥探HashMap原密码【下】

    本篇接着上篇文章继续。
  • 07.28 18:42:36
    发表了文章 2023-07-28 18:42:36

    窥探HashMap原密码【上】

    本篇文章主要给大家介绍了: 什么是哈希表 哈希冲突 HashMap定义的基本属性 HashMap的构造方法
  • 07.28 18:41:42
    发表了文章 2023-07-28 18:41:42

    源码剖析之LinkedHashMap

    LinkedHashMap是一个有序的map集合,他的特点就是在map的基础上增加了顺序从而让无序的map成为一个有序的集合,同时LinkedHashMap底层的实现也非常有意思。
  • 07.28 18:40:46
    发表了文章 2023-07-28 18:40:46

    源码剖析之ArrayList

    ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。
  • 07.28 18:38:48
    发表了文章 2023-07-28 18:38:48

    图解:非递归实现快速排序

    方法的调用实际是使用了方法调用栈。递归不就是方法调用本身就是入栈和出栈的过程吗。如果是这样的话,我们就可以使用栈来替换之前的递归,在栈中存储方法每次传入的参数即可。
  • 07.28 18:37:47
    发表了文章 2023-07-28 18:37:47

    图解:冒泡排序升级之【鸡尾酒排序】

    鸡尾酒排序,是冒泡排序算法的一种升级。冒泡排序的每个元素都可以像气泡一样,根据自身大小,一点点的向着数组的某侧移动。算法每一轮都是从左到右来比较元素,进行**单向**的位置交换的。而鸡尾酒排序是在此基础上元素比较和交换过程变成了**双向**的。固[鸡尾酒]排序又称双向冒泡排序、鸡尾酒搅拌排序、搅拌排序、涟漪排序、来回排序或快乐小时排序, 是冒泡排序的一种变形。
  • 07.28 18:36:20
    发表了文章 2023-07-28 18:36:20

    图解:快速排序算法之双边循环法

    之前我们学习了冒泡排序,有没有比冒泡排序更快的排序算法呢?当然有,例如快速排序,归并排序,堆排序。接下来即将介绍的快速排序就是由冒泡排序演变而来的。
  • 07.28 18:35:24
    发表了文章 2023-07-28 18:35:24

    图解:快速排序之单边循环法

    单边循环法是快速排序的算法之一,之前的双边循环法从数列的两边交替遍历元素,虽然更加直观,不过代码实现起来相对复杂。而单边循环法就要简单多了,只需要从数组的一边对元素进行遍历和交换即可。
  • 07.28 18:31:35
    发表了文章 2023-07-28 18:31:35

    图解冒泡排序

    本文通过图解的方式介绍冒泡排序算法,帮助读者更直观地理解其工作原理和实现过程。
  • 07.28 17:53:49
    发表了文章 2023-07-28 17:53:49

    图解二叉树

    二叉树是数据结构的一种,本章介绍了满二叉树和完全二叉树。以及二叉查询树的查询操作和新增操作。使用二叉树来存储数据,既可以保证顺序,又可以提高查询效率。不过最后我们发现如果二叉树长歪了,查询效率就会变低,要解决这个问题,我们需要让二叉树自己平衡。关于二叉树的自平衡下章介绍。
  • 07.28 17:52:34
    发表了文章 2023-07-28 17:52:34

    JVM面试整理总结②

    接上一篇JVM面试题:https://developer.aliyun.com/article/1287145?spm=a2c6h.13262185.profile.8.121f7de1fgxHPv
  • 07.28 17:50:46
    发表了文章 2023-07-28 17:50:46

    JVM面试整理总结①

    接下来会为大家整理JVM相关的面试题,整个JVM的复习以及面试准备分为以下六个方面即可: ①虚拟机类加载机制 ②JVM内存结构 ③JVM内存分配策略 ④垃圾收集器 ⑤JVM线上性能调优 ⑥线上OOM原因以及解决方案
  • 07.28 17:46:13
    发表了文章 2023-07-28 17:46:13

    40-对象太多了!堆内存实在是放不下,只能内存溢出!

    之前通过三篇文章的分析,介绍了 直接内存、Metaspace和栈内存三块区域的内存溢出,同时给出了一些常见的引发内存溢出的场景以及对应解决方案,一般只要vm参数配置合理,代码上不出现大问题,一般不太容易引发对应的OOM
  • 07.28 17:40:46
    发表了文章 2023-07-28 17:40:46

    39-无限制的调用方法是如何让线程的栈内存溢出的?

    《Java虚拟机规范》 明确允许Java虚拟机实现 自行选择是否支持栈的动态扩展, 而HotSpot虚拟机的选择是不支持扩展, 所以除非在创建线程申请内存时就因无法获得足够内存而出现OutOfMemoryError异常, 否则在线程运行时是不会因为扩展而导致内存溢出的, 只会因为栈容量无法容纳新的栈帧而导致StackOverflowError异常。
  • 07.28 17:39:54
    发表了文章 2023-07-28 17:39:54

    38-Metaspace区域是如何因为类太多而发生内存溢出的?

    永久代溢出,由于到了JDK8,已经完全废弃了永久代的概念,改用与JRockit、J9一样在本地内存中实现的元空间(Metaspace)来代替,因此后续我们不再说 方法区、永久代,直接使用Metspace元空间来称呼。
  • 07.28 17:29:37
    发表了文章 2023-07-28 17:29:37

    37-大厂面试题:什么是内存溢出?在哪些区域会发生内存溢出?请解释下直接内存OOM

    什么是内存溢出?在哪些区域会发生内存溢出?请解释下直接内存OOM
  • 07.28 17:28:49
    发表了文章 2023-07-28 17:28:49

    36-Java程序员的梦魇:OOM内存溢出!

    作为一名Java程序员,平时在公司拼命加班、任劳任怨干活,好不容易熬夜开发完系统,测试完毕,Bug修复完毕,然后上线部署系统,系统开始正常运行,终于歇口气能好好放松下,喝杯Java压压惊了,But!上线后最害怕的事是什么?
  • 07.28 17:27:44
    发表了文章 2023-07-28 17:27:44

    35-JVM性能优化总结-JVM性能优化到底该怎么做?

    通过之前大量的案例和工具的介绍,相信大家对于JVM优化有了一定的了解和熟悉,接下来我们将整个JVM性能优化的步骤做一个总结。
  • 07.28 17:24:47
    发表了文章 2023-07-28 17:24:47

    34-内存泄露MAT工具看本文就够了

    通过本篇文章的讲解,大家对于MAT工具的使用有了一定的理解和参考,后续遇到内存泄露、内存卡顿、大对象数据分析都可以直接通过MAT精准确定,更好的优化我们的项目。
  • 07.28 17:23:44
    发表了文章 2023-07-28 17:23:44

    33-一条SQL引发的系统卡死(下)-解决方案

    我们接着上篇文章的案例继续进行分析与优化
  • 07.28 17:23:01
    发表了文章 2023-07-28 17:23:01

    32-一条SQL引发的系统卡死(上)-数据分析

    今天给大家分享一个真实的案例,这是我之前一个朋友公司的项目在开发完毕后上线发现整个项目在线上的体验非常不好,有明显的频繁卡顿,后来经过一连串的排查、定位、分析和优化才发现原来是一条SQL引发的问题,而且该SQL语句是一位刚入职不久的工程师所写。 通过这次事故的教训也让这个团队在后续的开发中更加注重了JVM参数的设置以及GC的监控。
  • 07.28 17:07:46
    发表了文章 2023-07-28 17:07:46

    31-公司级别的JVM参数模板,拿走不送

    就目前大部分互联网创业型公司,其开发的系统几乎都不会考虑JVM性能优化这一块,哪怕一个团队中有1个技术Leader或架构师,往往都没有太多精力去把控到特别细节的地方上,以及对JVM也没有那么的精通与熟悉,这也导致一个很大的问题,大部分工程师开发完一个系统后,部署生产环境的时候根本对JVM参数什么的设置一窍不通,也就是默认的JVM参数进行系统的运行,等系统在某个时段出现问题后,开始大量分析找bug,很久也未能找出什么原因。
  • 07.28 17:06:48
    发表了文章 2023-07-28 17:06:48

    30-案例实战2:通过jps+jstat针对系统问题分析和优化

    接上篇文章,如不清楚可以先看上一篇文章
  • 07.28 17:04:47
    发表了文章 2023-07-28 17:04:47

    29-案例实战1:通过jps+jstat针对系统问题分析和优化

    实际开发中有很多类似的这样的应用场景,比如每秒多少个请求,每次请求分配多少对象等,我们的目的就是通过工具分析我们系统在实际运行过程中是否频繁触发GC以及对象是否频繁进入老年代引发Full GC,哪些对象存在影响性能以及没有及时回收的问题。
  • 07.28 16:58:29
    发表了文章 2023-07-28 16:58:29

    28-虚拟机性能监控&故障处理工具

    经过前面对于虚拟机内存分配与回收技术各方面的介绍, 相信大家已经建立了一个比较系统、 完整的理论基础。 理论总是作为指导实践的工具, 把这些知识应用到实际工作中才是我们的最终目的。 接下来的内容, 我们将从实践的角度去认识虚拟机内存管理的世界。
  • 07.28 16:57:50
    发表了文章 2023-07-28 16:57:50

    27-YongGC、MinorGC、 Major GC、FullGC傻傻分不清

    今天穿插一篇特别说明篇,有些同学在问YongGC、MinorGC、MajorGC以及Old GC、Full GC这么多名词到底谁是谁?搞晕了!本篇文章特别说明下
  • 07.28 16:57:17
    发表了文章 2023-07-28 16:57:17

    26-JVM优化到底优化什么?

    通过前两个系列我们把JVM相关的一些原理内容并结合一些案例和GC工作原理给大家都介绍清楚了,那么本系列开始重点给大家带来JVM优化相关内容和实战。
  • 07.28 16:56:31
    发表了文章 2023-07-28 16:56:31

    25-【扩展补充】JVM 三色标记 增量更新 原始快照

    本文将介绍JVM中的三色标记算法、增量更新和原始快照的概念。 首先,我们将深入探讨JVM中的三色标记算法。这种垃圾回收算法基于可达性分析,将对象分为三个状态:白色、灰色和黑色。通过标记对象的可达性,垃圾回收器可以确定哪些对象可以安全地回收,从而有效地管理内存。 接下来,我们将介绍增量更新技术。增量更新是一种垃圾回收的优化方法,它将垃圾回收过程分为多个阶段,并与应用程序交替执行。通过这种方式,增量更新可以减少垃圾回收的停顿时间,提高应用程序的响应性能。
  • 07.28 16:54:38
    发表了文章 2023-07-28 16:54:38

    24-一步一图带你理清G1垃圾回收流程

    G1的垃圾回收流程主要是从新生代回收开始,新生代回收与并发标记再到混合回收,接下来我们就先来说第一个新生代回收。
  • 07.28 16:54:03
    发表了文章 2023-07-28 16:54:03

    23-一文带你搞懂G1收集器

    G1是一款主要面向服务端应用的垃圾收集器。 HotSpot开发团队最初赋予它的期望是(在比较长期的) 未来可以替换掉JDK 5中发布的CMS收集器。 现在这个期望目标已经实现过半了, JDK 9发布之日, G1宣告取代Parallel Scavenge加Parallel Old组合, 成为服务端模式下的默认垃圾收集器, 而CMS则沦落至被声明为不推荐使用(Deprecate) 的收集器 。
  • 07.28 16:53:00
    发表了文章 2023-07-28 16:53:00

    22-大厂面试题:Con-current Mode Failure如何导致以及解决

    上文我们已经介绍了CMS垃圾收集器的工作原理以及流程,本篇我们接着深入说明CMS垃圾收集器的缺点以及所导致的一些问题应该如何解决。
  • 07.28 16:52:06
    发表了文章 2023-07-28 16:52:06

    21-看懂CMS收集器工作机制

    年轻代垃圾回收器机制我们都很清楚了,接下来我们介绍最核心的老年代垃圾回收环节。
  • 07.28 16:51:18
    发表了文章 2023-07-28 16:51:18

    20-Serial收集器+ParNew收集器

    如果说收集算法是内存回收的方法论, 那垃圾收集器就是内存回收的实践者。 《Java虚拟机规范》 中对垃圾收集器应该如何实现并没有做出任何规定, 因此不同的厂商、 不同版本的虚拟机所包含的垃圾收集器都可能会有很大差别, 不同的虚拟机一般也都会提供各种参数供用户根据自己的应用特点和要求组合出各个内存分代所使用的收集器。
  • 07.28 16:50:22
    发表了文章 2023-07-28 16:50:22

    19-案例实战剖析-日处理上亿数据的系统内存分析和优化

    这是当时开发中遇到的一个真实场景,也是大部分人在开发项目中有可能会遇到的一些场景,该系统主要是做大数据相关计算分析的,日处理数据量在上亿的规模。这里我们重点针对JVM内存的管理来进行模型分析,数据的来源获取主要是MYSQL数据库以及其他数据源里提取大量的数据,通过加载到JVM内存的过程我们来一起分析出现的问题以及如何优化解决
  • 07.28 16:49:17
    发表了文章 2023-07-28 16:49:17

    18-动态对象年龄判断+空间分配担保规则+老年代回收算法

    本文中用到的案例是接着上一篇文章继续的,如果有不清楚同学请先查看上一篇文章
  • 07.28 16:48:14
    发表了文章 2023-07-28 16:48:14

    17-长期存活的对象将进入老年代

    HotSpot虚拟机中多数收集器都采用了分代收集来管理堆内存, 那内存回收时就必须能决策哪些存活对象应当放在新生代, 哪些存活对象放在老年代中。
  • 07.28 16:47:05
    发表了文章 2023-07-28 16:47:05

    16-内存分配与回收策略-对象优先分配Eden+大对象进老年代

    大多数情况下, 对象在新生代Eden区中分配。 当Eden区没有足够空间进行分配时, 虚拟机将发起一次Minor GC。HotSpot虚拟机提供了-XX: +PrintGCDetails这个收集器日志参数, 告诉虚拟机在发生垃圾收集行为时打印内存回收日志, 并且在进程退出的时候输出当前的内存各区域分配情况。 在实际的问题排查中, 收集器日志常会打印到文件后通过工具进行分析 。
  • 07.28 16:46:06
    发表了文章 2023-07-28 16:46:06

    15-大厂面试题-JVM垃圾回收采用的是什么算法,有什么区别和优劣?

    通过之前的学习,我们知道了JVM会通过**可达性算法**来筛选出哪些对象是可回收的,哪些对象是不可回收的,GCRoots对象是哪些,java的引用类型有哪些以及finlize()方法的作用。同时我们也知道了当一个对象在创建的时候是存放在堆内存中的新生代里的,那么当新生代内存满了后就会触发Minor GC;但是问题是我们如何针对新生代内存进行管理,以及如何进行回收这也是一个值得分析和探讨的问题。
  • 07.28 16:44:34
    发表了文章 2023-07-28 16:44:34

    14-理解Java中的不同引用类型:强引用、软引用、弱引用和虚引用

    这篇文章将深入探讨Java中的四种引用类型:强引用、软引用、弱引用和虚引用。我们将逐一解释每种引用类型的特性和用途。
  • 07.28 16:41:37
    发表了文章 2023-07-28 16:41:37

    13-大厂面试题:为什么要垃圾回收以及如何判断对象可以回收

    接下来我们正式进入第二个系列,关于垃圾回收以及优化。
  • 07.28 16:40:03
    发表了文章 2023-07-28 16:40:03

    12-如何抗住双11一天几十亿的订单量?JVM该如何设置内存?

    通过之前相关JVM的基础知识学习我们可以结合一些实际生产案例来进行结合巩固和说明,我们在上线一个生产系统的时候,针对预估的并发压力,到底应该如何合理的给出一个未经过调优的比较合理的初始值。 另外我们会分析各种参数在设置的时候有哪些考虑的点,Java堆内存到底需要多大?新生代和老年代的内存分别需要多大?永久代和虚拟机栈分别需要多大?这些我们都会结合案例来一步一步的分析。 注意:JVM参数到底该如何设置,一定是根据不同的业务系统具体的一些场景来调整的,不是说有一个通用的配置和模板,照着设就没问题了,这个思路是肯定不对的,一定要结合案例和业务场景来分析。
  • 07.28 16:38:19
    发表了文章 2023-07-28 16:38:19

    11-方法区的演进以及StringTable的调整

    《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于 HotSpotJVM 而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。 所以,方法区看作是一块独立于Java堆的内存空间。
  • 07.28 16:11:21
    发表了文章 2023-07-28 16:11:21

    09-本地方法栈和堆内存

    本地方法栈和堆内存是Java虚拟机中的两个重要组成部分。 本地方法栈用于管理Java方法在执行过程中涉及的本地(Native)方法。它与Java虚拟机栈类似,但其不同之处在于本地方法栈是为本地方法服务的,而Java虚拟机栈则是为Java方法服务的。本地方法栈中包含本地方法的参数、局部变量以及方法调用和返回的相关信息。本地方法栈的内存分配和释放由JVM自行管理。 堆内存是Java虚拟机中用于存储对象实例的一块内存区域。堆内存是所有线程共享的,被用于存放Java程序中动态创建的对象。
  • 07.28 16:06:41
    发表了文章 2023-07-28 16:06:41

    10-JVM中的年轻代和老年代

    年轻代和老年代是Java堆内存的两个主要区域,用于存储对象。年轻代是新创建的对象经过短暂存活期后存放的区域,而老年代则是经过多次垃圾回收后仍然存活的对象存放的区域。
  • 发表了文章 2023-07-28

    Java NIO系列教程四【完】-管道-文件锁-异步写入

  • 发表了文章 2023-07-28

    Java NIO系列教程三

  • 发表了文章 2023-07-28

    Java NIO系列教程二

  • 发表了文章 2023-07-28

    Java NIO系列教程一

  • 发表了文章 2023-07-28

    JDK1.7 HashMap并发安全问题

  • 发表了文章 2023-07-28

    源码剖析之ConcurrentHashMap

  • 发表了文章 2023-07-28

    窥探HashMap原密码【下】

  • 发表了文章 2023-07-28

    窥探HashMap原密码【上】

  • 发表了文章 2023-07-28

    源码剖析之LinkedHashMap

  • 发表了文章 2023-07-28

    源码剖析之ArrayList

  • 发表了文章 2023-07-28

    图解:非递归实现快速排序

  • 发表了文章 2023-07-28

    图解:冒泡排序升级之【鸡尾酒排序】

  • 发表了文章 2023-07-28

    图解:快速排序算法之双边循环法

  • 发表了文章 2023-07-28

    图解:快速排序之单边循环法

  • 发表了文章 2023-07-28

    图解冒泡排序

  • 发表了文章 2023-07-28

    图解二叉树

  • 发表了文章 2023-07-28

    JVM面试整理总结②

  • 发表了文章 2023-07-28

    JVM面试整理总结①

  • 发表了文章 2023-07-28

    40-对象太多了!堆内存实在是放不下,只能内存溢出!

  • 发表了文章 2023-07-28

    39-无限制的调用方法是如何让线程的栈内存溢出的?

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息