- 博客(361)
- 资源 (4)
- 收藏
- 关注
原创 Arthas使用排查内存
Arthas 是一个强大的 Java 诊断工具,可以帮助你快速定位和解决生产环境中的问题。通过以上步骤,你可以使用 Arthas 来排查和解决生产环境中 Java 应用的 GC 问题。如果你怀疑某个类或方法有问题,可以使用 sc 命令查看类的加载信息,或者使用 jad 命令反编译类。watch 命令可以让你观察某个方法的入参和返回值,trace 命令可以跟踪方法的调用路径。ognl 命令可以让你执行 OGNL 表达式,获取对象的属性值或调用方法。这些命令可以帮助你找到可能导致高内存使用的方法。
2025-07-16 16:30:37
189
原创 k8s多集群管理中的联邦和舰队如何理解?
Fleet 是由 Rancher Labs 开发的一种多集群管理工具,旨在简化多集群环境中的应用部署和管理。Kubernetes 联邦 是一种多集群管理技术,它允许用户通过一个统一的控制平面来管理和调度多个 Kubernetes 集群中的资源。在 Kubernetes 多集群管理中,联邦(Federation)和舰队(Fleet)是两种不同的方法,用于管理和协调多个 Kubernetes 集群。Fleet 更适合需要通过 GitOps 流程管理和同步多个集群配置的场景,特别是在多集群应用部署和持续交付中。
2025-07-03 10:53:34
446
原创 git tag使用场景和实践
每次上线一个迭代,为了区分本次代码的分支是哪个迭代,可以给分支打上tag,这样利于追踪分支所属迭代,如果devops没有自动给分支打tag,需要自己来打。
2025-04-24 14:24:47
406
原创 K8s使用LIRA插件更新安全组交互流程
在Kubernetes集群中,当使用Lira作为CNI(容器网络接口)插件,并且需要更新ConfigMap中的安全组()securityGroups字段)时,实际上你是在配置与Pod网络相关的高级选项。更新ConfigMap中的securityGroups字段后,Lira将基于此配置为新创建的Pod配置网络,确保它们能够遵循指定的安全策略。当你更新ConfigMap中的securityGroups字段时,比如添加或移除安全组ID,这个操作主要影响的是新创建的Pod。
2025-04-21 16:03:19
352
原创 docker镜像被覆盖了怎么办?通过sha256重新上传镜像
如果一个镜像通过相同的标签被重新推送(覆盖),那么旧的镜像内容虽然在 Docker 的存储中可能仍然存在,但通过原来的标签将无法直接访问到它。Docker 和 Harbor 默认情况下不会自动删除旧的镜像层,除非进行了垃圾回收(Garbage Collection)。因此,在某种程度上,你有可能找回旧的镜像层,但这需要一些操作。查找与 sha256:079474e205ef280a5ce1 相关的条目。如果有找到,你可以直接使用它。
2025-04-18 20:40:38
342
原创 Deployment重启后,怎么验证其功能是否正常?
如果名称发生变化,说明新的 Pod 已被创建。检查 Deployment 更新:确认 annotations 中的 restartedAt 字段被正确更新。检查状态:确保 Deployment 和 Pod 处于健康状态(如 Ready 和 Running)。替换 为你的 Deployment 的选择器标签(如 app=my-app)。确认所有 Pod 的状态为 Running,并且 READY 列显示为 x/x。检查 Pod 重新创建:确认新的 Pod 被创建,并且创建时间晚于重启时间。
2025-04-15 13:44:41
254
原创 在 Kubernetes (k8s) 中,apiserver 的 IIP和 VIP的区别
在 Kubernetes (k8s) 中,apiserver 的 IIP(Internal IP) 和 VIP(Virtual IP) 是与集群网络通信和高可用性设计相关的两个重要概念。配置 HAProxy 将流量转发到多个 apiserver 的 IIP。
2025-04-07 20:19:05
700
原创 error evaluating “metav1.CreateOptions{}“ as argument 3 in function mockSecretAccountIfc.EXPECT().Cr
这是由于调用的 mockSecretAccountIfc这个对象没有赋值,或mockSecretAccountIfc的实现类没有实现改方法。
2025-02-25 15:07:35
128
原创 kubeconfig与RBAC直接的关系
KubeConfig本身并不直接体现RBAC的配置细节,但它包含了用于认证的凭据,这些凭据(如token)与RAM用户或角色绑定,而这些RAM用户或角色又通过RBAC机制关联到具体的ClusterRole,从而间接体现了用户在集群中的权限范围。KubeConfig在此过程中起到了桥梁作用,它携带了经过RAM和RBAC双重授权验证的凭据,使得用户能够基于其被赋予的角色执行相应操作。综上所述,KubeConfig提供了进入集群的入口,而RBAC则负责在用户进入后,根据预设的角色和规则来界定其操作权限的边界。
2024-11-21 10:36:24
256
原创 iLogtail采集日志过程
iLogtail 是阿里云日志服务(Log Service)提供的一款轻量级日志采集工具,专门用于 Kubernetes 环境下的日志采集。使用 iLogtail 可以方便地将新 Pod 中的日志数据实时采集并上传至阿里云日志服务中。
2024-09-20 17:52:29
701
原创 filebeat采集挂载出来的/home/Logs下的日志过程
Filebeat 是 Elastic Stack 中的一个轻量级日志收集器,用于收集、转发日志文件到 Logstash 或 Elasticsearch 中。下面是使用 Filebeat 采集 Node 节点上挂载的/home/Logs目录下日志文件的步骤。
2024-09-20 17:43:42
890
原创 org.mockito.exceptions.misusing.WrongTypeOfReturnValue报错
如果clusterModelList不是List类型,而是其他实现了List接口的类(例如ArrayList),并且这个类覆盖了toString()方法并返回了非String类型的值,那么也会导致同样的错误。这个错误信息表明Mockito在尝试调用toString()方法时遇到了问题,这通常是因为Mockito内部在处理Mock对象时需要调用toString()方法来生成一些调试信息或标识符,而你的模拟(stubbing)可能意外地影响到了这个过程。如果这是正确的签名,那么你模拟的方式看起来是正确的。
2024-09-13 08:34:33
1740
原创 Hadoop的namenode启动不起来
1、查看/data/namenode/current/VERSION中的clusterID和/data/namenode/current/VERSION中的clusterID是否一致,2、 重启服务,stop-dfs.sh ,start-dfs.sh。3、jsp查看服务状态,查看服务状态,启动成功就解决啦。如果不一致,改为一致。
2024-06-30 16:43:18
2233
原创 java中有两个对象分别,如果AEntity的某个属性值为空则将BEntity的相同属性赋值给AEntity
【代码】java中有两个对象分别,如果AEntity的某个属性值为空则将BEntity的相同属性赋值给AEntity。
2024-03-28 23:21:28
380
1
原创 CAS中的ABA问题
ABA 问题是指在并发编程中,一个值从 A 变成 B,然后再变回 A,而导致误判的问题。:Java 中的一些并发工具类,如 ConcurrentHashMap、AtomicReference、AtomicStampedReference 等,提供了一些方法来避免 ABA 问题。总的来说,解决 ABA 问题的关键是引入额外的信息(如版本号或标记)来跟踪共享变量的变化,以便在 CAS 操作中进行比较。:在数据结构中引入中间节点,使得即使值从 A 变成 B 再变回 A,中间节点的存在可以防止误判。
2024-03-28 22:36:47
360
原创 JVM–内存模型/垃圾回收流程
JVM 内存模型和垃圾回收流程对 Java 程序的性能和稳定性起着至关重要的作用,开发人员可以根据应用需求和特点选择合适的垃圾回收器和调优参数来优化程序性能。
2024-03-28 22:32:53
442
1
原创 对java元空间的理解
总的来说,Java 元空间是用于存储类元数据的内存区域,相比于永久代,它具有动态调整大小、GC 机制回收、减少内存泄漏风险等优势。:尽管元空间解决了永久代的一些问题,但仍然可能出现元空间溢出(OOM)问题,通常可以通过调整元空间大小和垃圾回收参数来解决。:元空间用于存储类的元数据信息,如类名、方法信息、字段信息等,而不再像永久代那样存储在 JVM 的堆内存中。:元空间使用的是 JVM 的垃圾回收机制来回收不再使用的类元数据,而不再依赖于传统的永久代的垃圾回收。
2024-03-28 22:32:02
527
原创 java是怎么把java文件编译成.class文件的?
总的来说,Java 编译器通过词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成等步骤,将 Java 源代码编译成可在 JVM 上执行的字节码文件。Java 编译器(javac)将 Java 源代码文件(.java 文件)编译成 Java 字节码文件(.class 文件)。:最后,编译器将优化后的中间代码转换为特定平台的机器码(二进制代码),生成可在 Java 虚拟机(JVM)上运行的字节码文件(.class 文件)。:编译器进行语义分析,检查代码的语义正确性,例如类型检查等。
2024-03-28 10:33:54
2380
转载 git撤销merge,彻底学会git revert的用法
因为 d 和 e 两个提交曾经被丢弃过,如此合并到 master 的代码,并不会重新包含 d 和 e 两个提交的内容,相当于只有 goudan/a-cool-feature 上的新 commit 被合并了进来,而 goudan/a-cool-feature 分支之前的内容,依然是被 revert 掉了。其中 G’ 是对 G 的 revert 操作生成的 commit,把之前撤销合并时丢弃的代码恢复了回来,然后再 merge 狗蛋的分支,把解决 bug 写的新代码合并到 master 分支。
2023-06-30 10:21:18
886
原创 【mysqlplus apply()】
使用apply拼接使用FIND_IN_SET来查找type字段中为1或2的类型。寻找数据库钟以逗号分隔的模糊查询。
2023-05-16 16:02:13
318
原创 Transaction accross db is not supported in current transaction policy
Transaction accross db is not supported in current transaction policy
2023-03-29 15:07:56
1142
原创 chatgpt是否能取代程序员
按照当前的发展趋势,人们对属性平台、算法、大数据处理和数据的可视化、分析与快捷开发路线的需求正在上涨,这些领域可能是未来程序员需要着力攻关的方向。尽管人工智能技术在某些方面能够取代程序员执行一些简单的任务,但人们需要清楚地认识到,AI并不能完全取代程序员。如果程序员想避免被AI迅速取代,应该注重提高自己的核心素质,培养自己的创造力、领导力、沟通力等方面的技能。如果出现了程序员被大量取代的情况,那么程序员应该注意适应行业变化,并选择更加高级复杂的任务来进行处理,这些任务并不容易被人工智能所代替。
2023-03-20 15:42:54
691
原创 MongoDB报错:there are no users authenticated
MongoDB报错:there are no users authenticated
2023-03-09 11:19:33
1852
原创 easyExcel生成动态表头
easyExcel生成动态表头,如图,问题是可以根据数据自动生成的,只是举了个栗子,可以把表头headers和内容contents根据数据来生成
2022-11-25 19:57:49
3710
jav后台生成Josn递归嵌套的demo
2018-07-17
jquery.treegrid.extension.js
2018-10-26
BATExecutorUtil.java
2019-12-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人