记录由于数据库用户权限导致的一次线上事故 1. 背景 11.3 生产环境和用户查询相关的功能,都报错could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet ELK查询原因,Caused by: org.postgresql 2024-07-07 数据库 #线上事故
JVM调优案例 1. 案例一 ——测试环境服务异常挂掉1. 问题测试环境服务异常挂掉 2. 排查步骤查看操作系统日志,发现发生了OOM,操作系统的OOM KIiller 机制 将Java进程杀掉了(使用命令 egrep -i 'Out of memory' /var/log/messages) [root@sith-mom-test-node deploy]# egrep -i ‘Out of 2024-07-04 JVM #性能调优
xxlJob使用 1. 任务调度1. 什么是任务调度任务调度是为了自动完成特定任务,在约定的特定时刻去执行任务的过程。 2. 什么场景会需要任务调度 某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券 某银行系统需要在信用卡到期还款日的前3天进行短信提醒 某财务系统需要每天凌晨结算前一天的财务数据 2. 分布式任务调度1. 什么是分布式任务调度采用分布式架构,一个服务往往会部署多个冗余实例来运行我们的 2024-07-04
pgsql 1. pgsql的优势1. 开源和社区支持 开源:PostgreSQL 是完全开源的,无需支付许可费用。 活跃的社区:有一个活跃的社区提供支持和开发,不断改进和更新功能。 2. 强大的功能集 ACID 合规:完全遵循 ACID 原则,确保数据的可靠性和一致性。 高级 SQL 功能:支持复杂查询、子查询、窗口函数、CTE(Common Table Expressions)等。 并发控制:使用多版本 2024-07-03
内存泄漏和内存溢出 1.内存泄漏 (Memory Leak)1. 定义 内存泄漏是指程序未能释放已经不再使用的内存,从而导致内存资源被浪费。尽管这些内存不再被程序使用,但由于程序仍然持有对它们的引用,垃圾收集器无法回收它们。 2. 症状: 随着时间推移,程序占用的内存不断增加。 程序可能在长时间运行后变得越来越慢。 最终可能导致内存溢出错误(OutOfMemoryError)。 3. 原因: 忘记移除不再使用的对象 2024-06-13 JVM
RabbitMQ的消息零丢失方案 RabbitMQ如何保证消息的可靠性?哪些环节会有丢消息的可能? 普通消息处理流程 消息生成者发送消息 MQ收到消息,将消息进行存储(持久化到硬盘)。 返回ACK给生产者 MQ push 消息给对应的消费者,然后等待消费者返回ACK 如果消息消费者在指定时间内成功返回ack,那么MQ认为消息消费成功,在存储中删除消息,即执行第6步;如果MQ在指定时间内没有收到ACK,则认为消息消费失败,会尝试重新 2024-06-13 RabbitMQ #MQ #消息可靠性
FullGC 1. FullGC 是什么?Full GC(Full Garbage Collection,全垃圾收集)是 Java 虚拟机(JVM)执行的一种垃圾收集过程,它会对整个堆内存进行垃圾收集,包括年轻代(Young Generation)和老年代(Old Generation),以及永久代(PermGen)或元空间(Metaspace)。 Minor GC:仅针对年轻代(Eden 和 Survivo 2024-06-13 JVM
操作系统OOM Killer 1. OOM Killer 是什么?OOM Killer(Out of Memory Killer)是 Linux 操作系统内核中的一个机制,用于在系统内存耗尽时,通过终止进程来释放内存资源,从而防止系统崩溃或无法响应。 2. OOM Killer 的触发条件当系统的物理内存和交换空间(swap)都被完全占用,且内核无法再分配内存时,就会触发 OOM(Out of Memory)状态。在这种情况下 2024-06-12
脑裂 1. 脑裂是什么?脑裂是指在分布式系统中,网络分区或其他原因导致集群中的节点分裂成多个子集。由于互相无法通信,这些子集各自认为自己是唯一的集群,从而可能导致数据不一致性、服务重复、竞态条件等严重问题。 在分布式数据库、分布式文件系统、分布式锁等系统中,脑裂问题尤为重要,因为它直接影响系统的正确性和一致性。 2. 脑裂的成因 网络分区:集群中的节点因网络故障被分隔成多个子集,子集之间无法通信。 节点 2024-05-30
java基础 1. Java 面向对象的三大特性及理解 默认情况下,面向对象有三大特性:继承、封装、多态。但如果考官让回答4大特性,我们就把抽象加上去。 1、继承 继承就是从已有的类继承信息创建新类的过程,被继承的类称为父类(也叫基类、超类),继承的类叫做子类(也叫派生类)。子类可以全盘接受父类的所有属性和方法(甚至是private修饰的,也可以继承,但是不能在父类之外访问,提供共有的访问方法(比如封装s 2024-05-25