- 博客(241)
- 资源 (4)
- 收藏
- 关注
原创 第5章:堆
从内存模型而不是垃圾收集的角度,对Eden区域继续进行划分,JVM为每个线程分配了一个私有缓存区域,它包含在Eden空间内。多线程同时分配内存时,使用TLAB可以避免一系列的非线程安全问题,同时还能够提升内存分配的吞吐量,因此我们可以将这种内存分配方式称之为快速分配策略。据我所知所有OpenJDK衍生出来的JVM都提供了TLAB的设计。、每个线程都有一个TLAB空间2、当一个线程的TLAB存满时,可以使用公共区域(蓝色)的。
2024-12-11 17:12:17
688
原创 AI程序员-Cursor的介绍和使用
在开发一个项目前,可以现在本地创建一个文件夹,然后通过cursor打开,后续通过唤起对话控制图即可完成需求开发。alt + l 唤起对话框进行问答。
2024-12-10 09:33:04
1030
原创 第4章-运行时数据区-虚拟机栈
2. 局部变量表,最基本的存储单元是Slot(变量槽),局部变量表中存放编译期可知的各种基本数据类型(8种),引用类型(reference),returnAddress类型的变量。(this也相当于一个变量)栈帧中的局部变量表中的槽位是可以重用的,如果一个局部变量过了其作用域,那么在其作用域之后申明新的局部变量变就很有可能会复用过期局部变量的槽位,从而达到节省资源的目的。操作数栈就是JVM执行引擎的一个工作区,当一个方法刚开始执行的时候,一个新的栈帧也会随之被创建出来,这时方法的操作数栈是空的。
2024-11-28 10:52:05
588
原创 第3章-运行时数据区-程序计数器和本地方法栈
JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。
2024-11-28 10:30:24
909
原创 第2章-类加载子系统
除了以上七种情况,其他使用Java类的方式都被看作是对类的被动使用,都不会导致类的初始化,即不会执行初始化阶段(不会调用 clinit() 方法和 init() 方法)除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)如果程序中需要额外的功能类(如加密算法、压缩库),通常可以将 JAR 包放到这个目录中,扩展类加载器会自动加载这些类。是 Java 中最顶层的类加载器,负责加载 JVM 核心类。
2024-11-28 10:17:00
964
原创 第1章-JVM和Java体系架构
Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条Java指令,Java虚拟机规范中都有详细定义,如怎么取操作数,怎么处理操作数,处理结果放在哪里。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。凡是能生成被Java虚拟机所能解释、运行的字节码文件,那么理论上我们就可以自己设计一套语言了。无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。JVM是运行在操作系统之上的,它与硬件没有直接的交互。,另外一种指令集架构则是。
2024-11-28 10:02:26
1185
原创 logback日志级别动态切换四种方案
代码如下/***//*** logback动态修改包名的日志级别* @param level 日志级别* @param packageName 包名* @return 当前的日志级别*/// 默认值-1,更改全局日志级别;否则按传递的包名或类名修改日志级别。} else {在条件允许的情况下建议使用方案四。
2024-10-30 13:48:19
963
原创 设计-重试框架的思考和运用(全网最落地的思考)
1:等待时间间隔的实现基于指数退避公式 : baseDelay(初始等待时间) * (2 ^ (retryCount(重试次数) - 1))可以保证时间按照指数级缓存递增2: 业务方式解耦,作为基础框架的设计,我们希望在对2的业务流程中,不仅是满足某一个特定业务的重试, 也可以满足不同业务的重试,基于以上事实我们可以思考1:重试流程是独立的, 业务方法是多变的,2:重试流程 业务流程分开,允许不同的业务方法重用这套逻辑3:可以通过和 Lambda 来进一步简化代码。将。
2024-10-28 15:06:12
393
原创 重试框架的思考和运用(全网最落地的思考)
1:等待时间间隔的实现基于指数退避公式 : baseDelay(初始等待时间) * (2 ^ (retryCount(重试次数) - 1))可以保证时间按照指数级缓存递增2: 业务方式解耦,作为基础框架的设计,我们希望在对2的业务流程中,不仅是满足某一个特定业务的重试, 也可以满足不同业务的重试,基于以上事实我们可以思考1:重试流程是独立的, 业务方法是多变的,2:重试流程 业务流程分开,允许不同的业务方法重用这套逻辑3:可以通过和 Lambda 来进一步简化代码。将。
2024-10-23 10:29:46
260
1
原创 设计模式03-组合模式
组合模式又称为“部分-整体”模式,它将对象组合成树形结构以表示“整体-部分”的层次结构。组合模式让客户端能够忽略单个对象和组合对象的差异,以统一的方式处理它们。组合对象:包含一个或多个叶子对象,同时也可以包含其他组合对象,形成一个树形结构。叶子对象:最基本的对象,不包含其他对象。组合模式是一种强大的设计模式,它允许以一致的方式处理单个对象和对象组合,从而简化了客户端代码,提高了系统的可扩展性和灵活性。然而,在使用组合模式时,也需要注意其可能带来的设计抽象化、性能问题和复杂性增加等缺点。
2024-07-10 17:49:48
761
原创 Etcd 基本入门
Etcd 是 CoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用。
2024-03-27 10:37:27
1147
原创 Raft 共识算法
典型的共识算法使 当他们的大多数服务器可用时,进度;如果更多的服务器出现故障,它们将停止前进(但永远不会返回 不正确的结果)。共识通常出现在复制状态机的上下文中,一个 构建容错系统的一般方法。在客户看来,他们是 与单个可靠的状态机交互,即使少数 群集中的服务器出现故障。我们希望 Raft 能使 更广泛的受众可以达成共识,并且这个更广泛的受众将是 能够开发各种更高质量的基于共识的系统 今天可用。作为 结果,每个状态机处理相同系列的命令,因此 生成相同系列的结果并达到相同系列的状态。集合 x 应用于 3。
2024-03-27 09:37:26
459
转载 万级数据深分页查询SQL性能优化实践
如何在Mysql中实现上亿数据的遍历查询?先来介绍一下系统主角:关注系统,主要是维护京东用户和业务对象之前的关注关系;并对外提供各种关系查询,比如查询用户的关注商品或店铺列表,查询用户是否关注了某个商品或店铺等。但是最近接到了一个新需求,要求提供查询关注对象的粉丝列表接口功能。该功能的难点就是关注对象的粉丝数量过多,不少店铺的粉丝数量都是千万级别,并且有些大V粉丝数量能够达到上亿级别。
2024-01-18 09:26:07
138
1
原创 如何看网络架构图-1基础篇
其实我们已经了解了各个图的含义,现在其实缺少的就是怎么串联起来,这个时候,举例说明,才能做到逻辑自洽。以在电商平台购买手机为例你在浏览器中输入网站地址或点击购买手机的链接。浏览器向 LVS(Linux Virtual Server)发送购买手机的请求。信号经过路由器转为电信号,这个时候经过路由器就是物理层LVS 接收到请求后,根据预定义的负载均衡算法和规则,选择一个可用的后端服务器(通常是 Nginx 服务器)。
2023-11-30 10:54:24
1382
原创 英语学习2
我想要知道是否你是周杰伦 I want to know if you are Jay Chou /aɪ/ /wɑnt/ /tə/ /no/ /ɪf/ /ju/ /ɚ/ /dʒe/ /tʃo/我需要知道是否我是重要的 I need to know if I am important /aɪ/ /nid/ /tə/ /no/ /ɪf/ /aɪ/ /æm/ /ɪm'pɔrtnt/
2023-11-30 09:18:53
476
原创 java中SPI机制
SPI的作用其实就是,在系统内部,定义一个能力接口,该接口可以满足自己的业务需要,比如发送短信,定义一个发送短信的接口,至于用什么方式实现,可以交给短信服务提供商去实现,然后根据自己的需要选择使用其中的实现放,这里需要注意几点。1:x系统内部需要将所有的实现放的jar包都要依赖进来,因为实现类的代码是服务提供商写的2: SPI就是一个选择的能力,选择使用哪个接口。jia1需要开发一个接口,该接口的实现可以由jar2和jar3提供,所以在jar1中,一定要依赖jar2和jar3的依赖包。,才能使用SPI的能力
2023-11-27 11:53:04
1041
原创 谈谈中间件设计的思路
想要设计和真正理解中间件的架构理论和思想。对于开发来说需要具备两个关键的能力当然其实还有很多要求,比如安全,日志,异构能力,高可用,不过本人觉得这些可以慢慢了解,不应该一上来就要高大上,仿佛不知道所有的东技术和源码就搞不了中间件开发一样,其实没有那么复杂,先做好基础,才能去了解其他领域,基于这样的愿景,本次专栏将从基础讲起,教中级和高级开发如何做好中级间的架构。
2023-11-27 11:19:50
924
原创 学习英语1
现在做这件事情(它)是不可能的。现在做这件事情(它)是不可能的。我需要告诉你重要的某些事情。做这件事情(它)是不可能的。每天见到你(它)是非常好的。每天见到你(它)是不可能的。我需要告诉你重要的某些事情。做这件事情(它)是重要的。吃这个食物(它)是重要的。来到这里(它)是非常好的。每天见到你(它)是可能的。我想要知道是否它是可能的。我想要知道是否它是重要的。所以我不必现在做这件事情。我不喜欢现在做这件事情。我今天不需要做这件事情。我不必一整天做这件事情。对我来说它是非常重要的。来到这里(它)是重要的。
2023-10-30 14:23:12
227
原创 linux系列11-rpm/yum包管理
rpm包的管理一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。Linux的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。查询已安装的docker rpm包..
2022-01-15 19:06:11
277
原创 linux系列10-进程和网络
基本介绍1) 在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。2) 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。3) 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。4) 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。显示系统执行的.
2022-01-15 18:16:05
226
原创 linux系列9-磁盘情况查询
查看磁盘整体使用情况df -h磁盘卸载umount /dev/sda1查看指定目录的磁盘占用情况du -h /目录-s 指定目录占用大小汇总-h 带计量单位-a 含文件--max-depth=1 子目录深度-c 列出明细的同时,增加汇总值1) 统计/dog文件夹下文件的个数ls -l /dog | grep "^_" | wc -l2) 统计/dog文件夹下目录的个数ls...
2022-01-14 11:51:53
321
原创 linux系列8-磁盘文件挂载
1:虚拟机添加硬盘1.1:打开虚拟机硬盘配置选择SCSI点击下一步分配磁盘大小并选择拆分成多个文件点击下一步然后点击完成1.2:reboot重启虚拟机2:创建分区输入fdisk /dev/sdb输入m输入n,增加一个新的分区提示是否需要划分一个主分区输入p,并标识为主分期的第一个分区最后一步输入w输入lsblk -f查看挂载结果,此时已完成分区创建...
2022-01-13 12:23:23
525
原创 linux系列7-常用命令
2:文件目录类pwd 显示当前工作目录的绝对路径cd /home 绝对路径进入cd ../home 相对路径进入mkdir指令mkdir /home/y1创建多级目录mkdir -prmdir 删除空目录rmdir删除的是空目录,如果目录下有内容无法删除如果需要删除非空目录,使用rm -rf创建空文件touch创建多个...
2022-01-10 20:46:33
992
原创 docker容器数据卷 四
一:什么是容器数据卷---持久化数据,用来保存容器运行产生得数据,有点类似我们Redis里面的rdb和aof文件---Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。 为了能保存数据在docker中我们使用卷注意: 卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union FileSystem提供一些用于持续存储或共享数据的..
2021-11-12 15:27:17
830
原创 docker镜像 三
一:什么是镜像镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。1.1:UnionFS(联合文件系统)UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into .
2021-11-11 17:48:51
178
原创 docker常用命令 二
一:docker服务1: 启动# 启动systemctl start docker# 开机自启systemctl enable docker2: 停止systemctl stop docker3: 重启systemctl restart docker4: 查看docker状态systemctl status docker二:docker镜像1: 查看镜像docker imagesdocker images -a 列出本地所有的镜...
2021-11-11 17:46:09
151
原创 Docker的 安装和说明 一
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。一个完整的Docker有以下几个部分组成:.
2021-11-11 17:38:49
460
原创 maven常用指令
一:查看依赖Jar 的关系1.1//查看部分依赖树mvn dependency:tree1.2// 查看完整的依赖关系mvn dependency:tree-Dverbose1.3//查看感兴趣的依赖部分mvn dependency:tree -Dverbose -Dincludes=*guava*注意: includes 支持通配符的形式1.4// 直接输出到当前项目下,然后在idea中打开,搜索要找的j...
2021-08-25 16:14:04
334
原创 logback日志集成
一、logback的介绍Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块:logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能二:常见配置说
2021-07-25 18:23:23
937
1
原创 Arthas 基础教程
1:an'zh下载math-game.jar,再用java -jar命令启动:wget https://arthas.aliyun.com/math-game.jar java -jar math-game.jarmath-game是一个很简单的程序,它随机生成整数,再执行因式分解,把结果打印出来。如果生成的随机数是负数,则会打印提示信息。...
2021-06-03 15:11:46
418
2
原创 linux系列6-基本用户管理操作
1:关机/重启shutdownshutdown -h now 立刻关机shutdown -h 1 一分钟后关机shutdowm -r now 立即重启halt 关机reboot重启系统sync 把内存的数据同步到磁盘当我们关机或重启时,都应该执行sync,防止数据丢失2:用户登录和注销在提示符下输入logout即可注销用户登录后用su -切换用户注意:logout命令是无法在图...
2021-04-12 13:58:15
180
原创 linux系列5-v和vim的基本介绍
1:v和vim的基本介绍所有的linux系统都会内建vi文本编辑器vim具有程序编辑能力,2:vi和vim的三种常见模式2.1:正常模式在正常模式下,可以使用快捷键2.2:插入/编辑模式按下il o a等任何一个模式就会进入编辑模式2.3:命令模式在这个模式中,可以提供你相关指令,完成读取,存盘,替换,离开vim,显示行号等的动作则是在此模式中达成3:写一个小程序直接进入某个目录下输入vim wkn,java...
2021-04-10 15:22:00
691
原创 linux系列4-文件基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:[root@www /]# ls -ltotal 64dr-xr-xr-x 2 root root 4096 Dec 14 2012 bindr-xr-xr-x 4 root root 4096 Apr 19 2012
2021-04-10 14:37:21
112
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人