- 博客(193)
- 资源 (2)
- 收藏
- 关注
原创 java中的回收算法-标记清除、复制、标记压缩、分代、分区
在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程中生成的临时变量,这些对象生命周期会比较短,比如:String对象,由于其不变类的特性,系统会产生大量的这些对象,有些对象甚至只用一次即可回收。以HotSpot中的CMS回收器为例,CMS是基于Mark-Sweep实现的,对于对象的回收效率很高。这种情况复制算法的回收整理,速度是最快的。
2026-11-08 10:45:59
530
原创 JVM中的GC垃圾回收器
同时,引入ZGC:可伸缩的低延迟垃圾回收器(Experimental)。删除CMS垃圾回收器,并弃用Parallel Scavenge和Serial Old的组合。1999年随JDK1.3.1一起来的是串行方式的Serial GC,它是第一款GC。有了虚拟机,就一定需要收集垃圾的机制,这就是Garbage Collection,对应的产品称为Garbage Collector。2018年3月,JDK 10中G1垃圾回收器的并行完整垃圾回收,实现并行性来改善最坏情况下的延迟。2020年9月,JDK15发布。
2026-11-08 10:45:06
365
原创 内存溢出&内存泄漏
只有连接被关闭后,垃圾回收器才会回收对应的对象。对于老版本的oracle JDK,因为永久代的大小是有限的,并且JVM对永久代垃圾回收(如,常量池回收、卸载不再需要的类型)非常不积极,所以当我们不断添加新类型的时候,永久代出现OutofMemoryError也非常多见,尤其是在运行时存在大量动态类型生成的场合;单例模式,和静态集合导致内存泄露的原因类似,因为单例的静态特性,它的生命周期和JVM 的生命周期一样长,所以如果单例对象如果持有外部对象的引用,那么这个外部对象也不会被回收,那么就会造成内存泄漏。
2026-11-05 20:15:32
65
原创 java中使用的可达性分析算法
如果只针对Java堆中的某一块区域进行垃圾回收(比如:典型的只针对新生代),必须考虑到内存区域是虚拟机自己的实现细节,更不是孤立封闭的,这个区域的对象完全有可能被其他区域的对象所引用,这时候就需要一并将关联的区域对象也加入GC Roots集合中去考虑,才能保证可达性分析的准确性。其原理简单来说,就是将对象及其引用关系看作一个图,选定活动的对象作为GCRoots,然后跟踪引用链条,如果一个对象和GCRoots之间不可达,也就是不存在引用链条,那么即可认为是可回收对象。比如:Java类的引用类型静态变量。
2026-11-05 20:09:52
227
原创 new关键字创建对象的步骤流程
查看创建对象的字节码# 步骤分析NEW:如果找不到class对象,则进行类加载。加载成功后,则在堆中分配内存,从object 开始到本类路径上的所有属性值都要分配内存。分配完毕之后,进行零值初始化。在分配过程中,注意引用是占据存储空间的,它是一个变量,占用4个字节。这个指令完毕后,将指向实例对象的引用变量压入虚拟机栈顶。DUP:在栈顶复制该引用变量,这时的栈顶有两个指向堆内实例对象的引用变量。如果<init>方法有参数,还需要把参数压人操作栈中。
2026-11-04 11:45:33
264
原创 jvm中的强软弱虚4种引用类型与gc的关系
默认情况下,通过System.gc()或者Runtime.getRuntime().gc()的调用,会显示触发Full GC,同时对老年代和年轻代进行回收。
2026-11-02 17:19:15
144
原创 mongo的索引操作
索引是特殊的数据结构,它以一种易于遍历的形式存储集合数据集的一小部分。索引存储一个或一组特定字段的值,按字段的值排序。索引项的排序支持有效的相等匹配和基于范围的查询操作。此外,MongoDB可以通过使用索引中的排序返回排序后的结果。mongo中使用 WiredTiger: B+单键索引如基于主键ID 进行的B+ tree 数据结构复合索引(复合索引只能支持前缀子查询)(A,B,C)基于name, age, position 建立的复合索引。
2026-10-23 17:58:49
61
原创 云服务器mongo搭建集群-分片
提供集群单一入口,转发应用端请求,选择合适的数据节点进行读写,合并多个数据节点的返回。客户请求应发给mongos,而不是 分片服务器,当查询包含分片片键时,mongos将查询发送到指定分片,否则,mongos将查询发送到所有分片,并汇总所有查询结果。还说明了下载指定操作系统版本包的方法,详细阐述了部署和验证工作,如准备配置文件、启动节点、初始化副本集等步骤。以复制集为单位,横向扩展最大1024分片,分片之间数据不重复,所有数据在一起才可以完整工作。每个分片集3个实例,2个分片集,一共6个实例。
2026-10-23 17:58:26
496
原创 mongodb集群模式的原理
mongo集群部署一起结合着方便理解云服务器mongo搭建复制集-优快云博客本文详细介绍了在云服务器上通过离线资源包方式安装MongoDB的完整流程,包括创建目录、上传解压安装包、配置环境变量、编写mongodb.conf启动配置文件、创建数据与日志目录、以配置文件方式启动mongod服务,以及使用mongo客户端或Navicat连接验证。创建复制集文件夹,将mongodb-linux-x86_64-rhel70-4.4.8.tgz文件解压到新目录中。
2026-10-22 22:26:47
94
原创 云服务器mongo搭建集群-复制集
本文详细介绍了在云服务器上通过离线资源包方式安装MongoDB的完整流程,包括创建目录、上传解压安装包、配置环境变量、编写mongodb.conf启动配置文件、创建数据与日志目录、以配置文件方式启动mongod服务,以及使用mongo客户端或Navicat连接验证。创建复制集文件夹,将mongodb-linux-x86_64-rhel70-4.4.8.tgz文件解压到新目录中。# 进入任何一个mongo中,输入命令,查看复制集状态。
2026-10-22 22:23:56
344
原创 使用spring-data-mongodb操作mongo记录
提供了与两种方式访问mongodb操作简单,MongoTemplate操作灵活,我们在项目中可以灵活适用这两种方式操作mongodb的缺点是不够灵活,正好可以弥补不足。1、使用MongoTemplate2、使用MongoRepository。
2026-10-21 18:06:28
227
原创 mongoDB入门
在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
2026-10-17 22:30:52
294
原创 云服务器docker的安装
第三步:更新并安装Docker-CE。第一步:安装必要的一些系统工具。第四步:开启Docker服务。第五步、测试是否安装成功。第二步:添加软件源信息。# 安装docker。
2026-10-17 10:00:00
273
原创 redis实现秒杀功能-超卖&库存遗留问题的解决
库存恢复100,再次使用ab调用,查看redis库存,正常了。需要使用ab工具模拟并发。# 使用如下命令进行安装。# 准备testfile。使用redis事务解决。2.记录秒杀成功人员。# ab指定文件内容。# ab命令参数说明。重新使用ab模拟并发。
2026-10-15 18:36:52
308
原创 云服务器redis主从复制-哨兵模式
从上一篇改进为哨兵模式云服务器redis主从复制-一主二仆-优快云博客主机数据更新后,自动同步到备机Master以写为主,Slave以读为主目的读写分离,性能扩展容灾快速恢复1 一个redis服务作为主机,主要负责写操作2 两个redis服务作为从机,主要负责读操作3 从机自动从主机同步数据下来4 从机主动找主机,而主机不会找从机!!注意:生产环境,主从复制每个服务都在不同的机器上,这里使用一台机器 不同端口模拟搭建真是环境。
2026-10-14 16:13:20
339
原创 云服务器redis主从复制-一主二仆
主机数据更新后,自动同步到备机Master以写为主,Slave以读为主目的读写分离,性能扩展容灾快速恢复1 一个redis服务作为主机,主要负责写操作2 两个redis服务作为从机,主要负责读操作3 从机自动从主机同步数据下来4 从机主动找主机,而主机不会找从机!!注意:生产环境,主从复制每个服务都在不同的机器上,这里使用一台机器 不同端口模拟搭建真是环境。
2026-10-14 14:58:01
426
原创 redis持久化
redis数据存储在内存中,断电后内存中的数据就没有了,重启后,redis通过持久化机制将数据重新加载到内存中。持久化方式有两种。
2026-10-13 22:40:38
162
原创 kafka顺序消费问题
将消息发送到同一分区中,可以保证消息的局部有序,kafka可以保证同一个分区的消息是严格有序的,并且要设置retries=0。如果允许了重试,失败了,重试,可能出现顺序靠后的优先失败的那个执行了。2、通过key将相同类型的消息发送到同一个分区中。1、针对一个topic只创建一个分区。
2026-10-11 23:55:20
232
原创 kafka为什么要分区,都有哪些分区策略
分区为了提供负载均衡的能力,实现系统的高伸缩性。分区策略是决定生产者将消息发送到哪个分区的算法,尽量避免造成数据"倾斜"kafka提供了默认的分区策略,同时也支持自定义的分区策略。
2026-10-11 10:30:00
213
原创 kafka消息可靠性传输
acks=-1(all):生产者发送过来数据,Leader和ISR(所有在线的副本)队列里面所有Follwer应答,可靠性高效率最低。acks=-1(all),一般用于传输重要不能丢失的数据(例如:钱、订单、积分等),对可靠性要求比较高的场景。acks=1:生产者发送过来数据,只需要Leader确认即可返回,可靠性中等,效率中等。acks=0:生产者发送过来数据,就不管了,可靠性差数据会丢,效率最高。acks=1,一般用于传输普通日志,允许丢个别数据;1.没写进去acks=0。acks=0 很少使用;
2026-10-10 17:37:48
324
原创 kafka一直restarting,报错InconsistentClusterIdException
问题出在这里由于使用down,只把容器删除了, 原来的数据挂载还保留原来的,导致再次up启动 clusterId和挂载的数据之前报错的不一致了,导致持续报错重启。# 复制到本地,改完后复制到容器中(或 直接进入到eagle容器内部直接改参数--可能没有vi命令,需要安装)通过docker compose up -d 启动,修改了yml内存配置,使用down删除容器在up启动。2.找到之前的挂载数据,修改clusterId,保持一致。# 停止容器 + 删除当前compose定义的全部数据卷。
2026-10-10 11:56:27
207
原创 kafka相关资源(kafka、efak、zookeeper)
链接: https://pan.baidu.com/s/1r30DOF8D_-ArDBafqUpYGw?pwd=s9xa 提取码: s9xa 复制这段内容后打开百度网盘手机App,操作更方便哦。
2026-10-07 23:23:11
81
原创 云服务器kafka环境搭建
新增一个docker-compose-kafka.yml文件,内容如下。修改docker-compose文件增加如下配置。访问eagle,报错了。
2026-10-07 23:20:08
539
原创 项目使用sentinel遇到的问题
- fixme 版本必须是 3.0.9 配合 spring alibaba的 2022.0.0.0-RC2版本 -->springboot版本使用4.1.1会报如下错误,需要把boot的版本降低。# springboot的版本使用 3.0.9。sentinel控制台可以看到实时监控了。springboodt项目引入依赖。启动/部署项目后访问测试。
2026-10-05 23:23:05
238
原创 云服务器sentinel搭建-控制台
控制台--Dashboard,基于springboot,打包后直接运行。用户密码:sentinel/sentinel。sentinel分为2部分。# 本地下载,上传到服务器。# 命令启动, 默认端口。核心库--java客户端。控制台-下载jar包。# 或 wget获取。
2026-10-05 21:47:22
440
原创 docker的备份与迁移
主要是四个命令对 容器①镜像②tar③镜像④容器 整个过程的转换。rz/sz (linux与windows)# 导出该新镜像为tar文件(可迁移)将tar文件在服务器直接进行传递。# 如果有数据挂载,需要单独备份。# 将当前容器状态提交为新镜像。# 加载tar为镜像。
2026-10-05 09:20:15
525
原创 云服务器nacos搭建-集群&持久化
部署了3个节点,上面多出了一个,是内网ip+端口,需要在application. 增加配置。部署了3个节点,上面多出了一个,是内网ip+端口,需要在application. 增加配置。--cluster.conf忘记配置,./startup.sh启动会报错上面的错误。# /conf下的cluster.conf确认是否自动添加了内网ip。# /conf下的cluster.conf确认是否自动添加了内网ip。上面所有配置修改完成后,复制另外2个节点并修改端口。/bin目录下的startup.sh修改。
2026-10-04 23:25:40
328
原创 云服务器nacos搭建-单机
默认:MODE="cluster"集群方式启动,如果单机启动需要设置-m standalone参数,否则,启动失败。账号密码:nacos/nacos。
2026-10-04 23:19:34
231
原创 通过kibana操作elasticsearch记录
操作路径创建索引查看所有索引查看单个索引删除索引多次操作 version会增加删除文档批量新增批量删除_doc查看映射must -- and关系should-- or关系如果should和must同时存在,他们之间是and关系filter 没有评分from+sizescoll高亮查询近似查询
2026-10-01 23:28:16
375
原创 docker安装常见软件集合
-p 参数:映射端口号,格式是“宿主机端口号:容器内端口号”。5672供客户端程序访问,15672供后台管理界面访问。# -e 参数:设置容器内的环境变量,这里我们设置了登录RabbitMQ管理后台的默认用户和密码。# -d 参数:后台运行 Docker 容器。# --name 参数:设置容器名称。# -v 参数:卷映射目录。
2026-10-01 22:13:47
71
原创 云服务器elasticsearch环境搭建-集群
下载链接:Elastic Stack 软件的过往版本 | Elastic正在寻找 Elasticsearch、Logstash、Kibana、es-hadoop、Shield、Marvel 或我们的语言客户端的过往版本?配置服务器集群时,集群中节点数量没有限制,大于等于2个节点就可以看做是集群了。# 注意 集群生成环境在3台机器以上,这里使用1台机器来安装集群环境。问题:上面的jvm内存参数配置错误了,注意是-Xms。#配置集群间通信的端口号。
2026-09-30 17:42:26
933
原创 云服务器kibana环境搭建
下载地址: https://www.elastic.co/cn/downloads/past-releases/kibana-7-8-0https://www.elastic.co/cn/downloads/past-releases/kibana-7-8-0https://www.elastic.co/cn/downloads/past-releases/kibana-7-8-0Kibana 的 Linux 安装过程主要分为解压、配置、启动和验证四个步骤。下面按顺序展开说明,并补充每一步的注意事项。解压完
2026-09-30 14:10:15
261
原创 云服务器elasticsearch环境搭建-单台
下载链接:Elastic Stack 软件的过往版本 | Elastic正在寻找 Elasticsearch、Logstash、Kibana、es-hadoop、Shield、Marvel 或我们的语言客户端的过往版本?您找对地方了。
2026-09-30 09:36:29
973
jp.gr.java-conf.ussiy.app.propedit,6.0.4
2017-08-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅