自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 jvm -垃圾回收

可达性分析法的基本思想是从一组称为“GC Roots”的根对象出发,通过遍历对象之间的引用关系,找到所有与根对象直接或间接相连的对象,这些对象被认为是可达的(活动的),而那些不与根对象相连的对象则被认为是不可达的(垃圾对象)。如果一个对象的内存超过了新生代的容量,以至于无法在新生代中分配足够的空间来存储该对象,那么这个对象就会被直接分配到老年代中。虚拟机栈中存储着每个线程的方法调用栈,每个栈帧中都包含了局部变量表,其中存储了对对象的引用。本地方法栈用于执行本地方法,其中可能会有对对象的引用。

2024-04-17 16:16:22 1035

原创 jvm -直接内存 - Direct Memory

常见于NIO操作时,用于数据缓冲区分配回收成本较高,但读写性能高不受VM内存回收管理零拷贝操作: 直接内存位于堆外(off-heap),而不是受到 Java 堆内存管理的限制。这意味着直接内存可以更容易地进行零拷贝操作,例如在进行网络通信、文件 I/O、NIO 操作时,可以直接将数据传输到直接内存中,而不需要经过 JVM 的堆内存。减少垃圾回收压力: 直接内存不受 Java 堆内存管理的影响,因此不会对垃圾收集器的运行造成影响。

2024-04-17 16:01:08 155

原创 jvm-常量池 -字符串常量池

javac 在编译阶段优化,结果已经在编译器确定为 ab 这种动态。

2024-04-11 09:49:54 625

原创 jvm -2 虚拟栈 堆 方法区

​ 通过new 关键字 创建对象都会使用堆内存​ 通过new 关键字 创建对象都会使用堆内存。

2024-04-10 11:01:40 826

原创 jvm - 程数计数器 结构

​ 注意: 需要注意的是,寄存器的数量有限,且不同的CPU架构可能具有不同数量和类型的寄存器。因此,虽然程数计数器通常放在CPU的寄存器中,但随着线程数量的增加或者程序的复杂性,可能会出现寄存器不足的情况,这时候虚拟机可能会采取一些策略来进行寄存器分配和管理,以确保程序的正常执行。​ JVM 指令集与机器码之间的翻译是由 JVM 的即时编译器(JIT编译器)完成的。JIT编译器的类型有多种,例如 HotSpot JIT、C1 JIT、C2 JIT 等,它们在不同的阶段以不同的方式进行优化。

2024-04-10 10:47:36 362

原创 es 聚合查询 cardinality terms 对应java 解析代码

例如 es 的 categories 擦查询语法。2 如果包含 cardinality 语法。对应jiava 代码组装 和解析数据。对应的 java 解析代码。

2024-04-08 17:46:38 151

原创 为什么这些SQL语句逻辑相同,性能却差异巨大?

对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。第二个例子是隐式类型转换,第三个例子是隐式字符编码转换,它们都跟第一个例子一样,因为要求在索引字段上做函数操作而导致了全索引扫描。MySQL 的优化器确实有“偷懒”的嫌疑,即使简单地把 where id+1=1000 改写成 where id=1000-1 就能够用上索引快速查找,也不会主动做这个语句重写。因此,每次你的业务代码升级时,把可能出现的、新的 SQL 语句 explain 一下,是一个很好的习惯。

2023-11-24 17:32:41 56

原创 个人成长 --怎么做好事

为了激励自己,我就在自己的日历上写下了持续俩字。内功就是基础,那什么是基础呢,对于开发人员来说,每个阶段的基础含义不一样,初级开发,会简单的开发,crud 就够了,例如sql ,会写一些 简单的查询,删除等sql ,对于高级开发,分析sql 性能,优化sql ,表结构设计,业务逻辑设计等。因为很多事情都是越做越深,在内容层面,不管是媒体还是教育,我们都在往深水区游,现在遇到的问题没有比之前少,反而是越来越多了,程序开发中,越复杂的系统考验程序员的内功越多,怎么简化问题,这么提高并发,怎么降低接口时长等等。

2023-11-24 16:46:27 55

原创 错失恐惧症

当你知道自己手上做的事情是最有价值的时候,你想获取的信息也会比较集中,大概率会只关注对你现阶段有用的信息,这样,由于种种乱七八糟的信息导致的错失恐惧症也就会减轻甚至消失了。最后,错失恐惧症很大程度上来自于对错失后果的想象和夸大,所以我们不妨逆向思维,如果你真的错失了这些信息和活动,会对你造成多大的影响,算是一种脱敏治疗法,也能帮助你在这个多变的时代找到属于你的不变的事物。可惜的是,作为人类,我们的时间和精力是有限的,对信息的处理能力也是有上限的,我们无法赶上所有的新鲜事,也无法知悉所有的信息。

2023-11-22 18:00:18 145

原创 个人成长. --- 三个原则

行走江湖,每个人都有自己的处事原则,有些原则只适合自己,有些可能普适大众,有些是好原则,有些是坏习惯,如人饮水,冷暖自知。

2023-11-21 10:04:11 228

原创 “order by”是怎么工作的?

开发应用的时候 ,我们经常会用到按照一定的字段排序规则来返回字段,例如订单列表 ,我们都是默认按照id,创建时间 等字段排序规则字段返回的但是,一些特出场景可能是指定字段,也可能是指定多个字段排序例如下面这个例子这个语句看上去逻辑很清晰,但是你了解它的执行流程吗?今天,我就和你聊聊这个语句是怎么执行的,以及有什么参数会影响执行的行为。

2023-11-20 14:04:59 17

原创 VARCHAR(255) 与 VARCAHR(256)的区别在哪里?

varchar(255) 与 varchar(256) 的区别在哪里

2023-11-16 18:26:04 591 1

原创 mysql count(*) 真的慢吗?

在开发系统的时候,可能经常需要计算一个表的行数,比如一个订单表的所有订单总数。通常 我们都是解决但是,慢慢我们会发现,随着我们系统的记录行数,表中的数据越来越多,这条语句的执行时间也会越来越长。

2023-11-16 14:16:29 145 1

原创 mysql --- 索引初识篇--MySQL其他索引的创建使用方式

mysql --- 索引初识篇--MySQL其他索引的创建使用方式

2023-10-12 11:51:33 147

原创 mysql --- 索引初识篇--多样化的索引分类

先列一些大家都听说过的索引称呼:聚簇索引、非聚簇索引、唯一索引、主键索引、联合索引、全文索引、单列索引、多列索引、复合索引、普通索引、二级索引、辅助索引、次级索引、有序索引、B+Tree索引、R-Tree索引、T-Tree索引、Hash索引、空间索引、前缀索引......是不是看的眼花缭乱,这些都是MySQL中索引的一些称呼,一通看下来,估计大家看“索引”两个字都有点不认识了^_^但实际上MySQL中真的有这么多索引类型吗?

2023-10-11 13:36:24 52

原创 mysql --- 索引初识篇--索引机制概述

MySQL索引机制概述索引是什么 : 索引就是用来帮助表快速检索目标数据的

2023-10-10 16:53:57 84 1

原创 技术人核心能力 ---- 底层认知篇 --制定个人目标

个人目标 以始为终

2023-09-26 15:10:19 25

原创 技术人核心能力 ---- 底层认知篇 --五大最有价值的思维框架

全面质量管理活动的全部过程,就是质量计划的制订和组织实现的过程,这个过程就是按照PDCA循环,不停顿地周而复始地运转的。,对总结检查的结果进行处理,对成功的经验加以肯定,并予以标准化;以上四个过程不是运行一次就结束,而是周而复始的进行,一个循环完了,解决一些问题,未解决的问题进入下一个循环,这样阶梯式上升的。而双赢思维会促使我们寻求双边利益,有福同享 、有难同当,而不是非此即彼、非赢即输,不是零和博弈,不是他人之得就是我之失。,总结执行计划的结果,分清哪些对了,哪些错了,明确效果,找出问题。

2023-09-26 14:49:33 91

原创 技术人核心能力 ---- 底层认知篇 -- 高认知是最重要的核心竞争力

高层次的认知往往可以向下兼容,但低层次的认知很难真正明白上一个层次的内涵,一切都要达到才能知道,阶段很难跨越,否则就叫顿悟或渐悟。懂者恒懂,不懂者恒不懂。而认知是有层次的,我们具有哪个层次的认知,就是哪个层次的人。所以,人的认知是可以改变的,层次也是可以提升的。层次隔阂既然是难免的,各自做好自己就是第一选择,如果偏巧能够给低层次的人带来促进其提升的影响,那也属于难能可贵的事情,算是功德一件。要知道还有另外一个可能:就是更低层次的人认识不到这种层次是存在的,甚至认为自己的认知便是终极认知标准,舍此无它。

2023-09-19 21:01:21 60

原创 技术人核心能力 ---- 底层认知篇 -- 如何树立正确的价值观

价值观是指人们在认识各种具体事物的价值的基础上,形成的对事物价值的总的看法和根本观点。一方面表现为价值取向、价值追求,凝结为一定的价值目标:另一方面表现为价值尺度和准则,成为人们判断价值事物有无价值及价值大小的评价标准。一个人的价值观一旦确立,便具有相对稳定性(来自百度百科价值观 --------- 什么是好的 ,什么需要坚持 (简化来说。

2023-09-19 11:12:27 52

原创 mysql 索引基本介绍

创建方式查询/删除/指定查看索引这条命令在后续排除问题、性能调优时,会有不小的作用,比如可以通过分析其中的Cardinality字段值,如果该值少于数据的实际行数,那目前索引有可能 失效删除索引在MySQL中并未提供修改索引的命令,也就说当你建错了索引,只能先删再重新建立一次,删除索引的语句如下。

2023-09-04 16:45:03 32 1

原创 redis --跳跃表--- Skip List

跳跃表是一个多层级的链表,每个节点包含两个关键信息:键(key)和值(value)。节点按照键的大小从小到大排列,最底层包含所有元素,而每个后续层都是前一层的子集。在每一层中,节点通过跳跃指针链接到下一层级的节点。顶层只有一个节点,而底层的节点数量与总元素数量相同。在跳跃表中,查找一个特定的键(key)需要从顶层开始,通过跳跃指针逐层向下查找。如果在当前层级中找到一个比目标键大的节点,就会在前一层级继续查找。当查找到最底层时,即可找到目标节点或确定目标节点不存在。

2023-07-31 14:35:44 50 1

原创 redis -- 字符串内部结构

Redis 中的字符串是可以修改的字符串,在内存中它是以字节数组的形式存在的。我们知道 C 语言里面的字符串标准形式是以 NULL 作为结束符,但是在 Redis 里面字符串不 是这么表示的。因为要获取 NULL 结尾的字符串的长度使用的是 strlen 标准库函数,这个 函数的算法复杂度是 O(n),它需要对字节数组进行遍历扫描,作为单线程的 Redis 表示承 受不起。Redis 的字符串叫着「SDS」,也就是 Simple Dynamic String。它的结构是一个带长度信 息的字节数组。

2023-07-25 11:03:34 31

转载 Spring Cloud动态配置实现原理与源码分析 - RefreshScope

这与bean的生命周期有关,bean中的字段只会在bean创建阶段赋值一次,后续不会改变,如果引用的是代理对象,那么当调用代理对象的方法时,方法拦截器先从代理对象拿到TargetSource,然后调用TargetSource对象的getTarget方法从bean工厂获取目标bean,最后再通过反射调用目标bean的方法,以此实现bean的动态更新。xxxAware接口的方法在bean被实例化且注入属性完成之后,在调用bean的初始化方法之前被调用,代理对象实际是在setBeanFactory方法中创建的。

2023-05-30 13:56:02 340 2

转载 nacos 负载均衡算法 解析

这篇文章,就带大家从源码层面分析一下,Nacos客户端采用了如何的算法来从实例列表中获取一个实例进行请求的。也可以称作是Nacos客户端的负载均衡算法。

2023-05-18 14:30:36 446 1

原创 nacos 概念功能介绍

nacos 基本概念 服务发现 权重管理。优雅上下线 在线编辑 灰度发布 等

2023-05-17 14:38:19 433 1

转载 Java - 深入理解Java中的逃逸分析

在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件。第二段编译是把.class转换成机器指令的过程。第一段编译就是​​javac​​命令。在第二编译阶段,JVM 通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢很多。这就是传统的JVM的解释器(Interpreter)的功能。为了解决这种效率问题,引入了技术。

2023-04-03 17:17:10 1771

原创 jdk client server端区别

HotSpot虚拟机分client端和server端,准确的说应该是分两种类型,因为client,server VM是两种适用不同业务场景的虚拟机类型。client VM使用的是C1编译器, server VM使用的是C2编译器。

2023-03-31 16:25:46 550

转载 java 锁消除 锁粗化 逃逸分析

通常情况下,为了保证多线程间的有效并发,会要求每个线程持有锁的时间尽可能短,但是大某些情况下,一个程序对同一个锁不间断、高频地请求、同步与释放,会消耗掉一定的系统资源,因为锁的讲求、同步与释放本身会带来性能损耗,这样高频的锁请求就反而不利于系统性能的优化了,虽然单次同步操作的时间可能很短。。

2023-03-30 15:46:10 135

原创 java 在匿名内部类和lambda表达式中 使用局部变量需要使用final 修饰

关于 匿名内部类 和 lambda表达式 在java 中 我们都可以认为只是一个 简单Template ,简化我们的开发难度那么 ,通过以上内容 我们可以发现 :对于内部类的实现 其实就是相当于 建了一新类 如果我们需要操作原类中的 成员变量 就会将原类。作为新类中的成员变量 引入进来, 从而达成可以操作原类中的成员变量 , 而局部变量 是通过拷贝而来的。

2023-03-05 12:29:01 389 1

原创 elasticsearch 基础

elasticsearch 基础es 基础查询语法查询语法term : 查询对于查找单个值非常有用创建删除修改功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入es 基础查询语法查询语法term : 查询对于查找单个值非常有用

2022-01-20 13:39:46 50

空空如也

空空如也

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

TA关注的人

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