02 2021 档案
摘要:对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出jstack和内存信息,然后重启系统,尽快保证系统的可用性。这种情况可能的原因主要有两种: 代码中某个位置读取数据量较大,导致系统内存耗尽,从而导致Full GC次数过多,系统缓慢; 代码中有比较耗CPU的操
阅读全文
摘要:反射机制介绍 JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。 获取 Class 对象的四种方式 1.知道具体类的情况下可以使用: C
阅读全文
摘要:1、#{}和${}的区别是什么? ${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。 #{}是 sql 的参数占位符,MyBatis 会将 sql 中的#{}替换
阅读全文
摘要:5.1 Spring 中的 bean 的作用域有哪些? singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。 prototype : 每次请求都会创建一个新的 bean 实例。 request : 每一次HTTP请求都会产生一个新的bean,该bean仅在当前
阅读全文
摘要:synchronized 具体用法 https://www.cnblogs.com/lukelook/p/9946065.html synchronized 关键字加到 static 静态方法和 synchronized(class) 代码块上都是是给 Class 类上锁。 synchronized
阅读全文
摘要:主要三点: 异步 购票系统 -> 短信系统 可以异步发送,不用同步发送导致响应时间太长 解藕 购票系统—> 短信系统 或者邮件系统 在代码编写的时间就可以更加轻松解藕 消峰 购买系统可以同时承受很大的tps, 但短信系统不需要 关于rocketmq的存储结构和PageCache与Mmap内存映射以及
阅读全文
摘要:在单机环境下,多线程同时访问变量可以用锁实现,但服务做集群呢 也就是多进程的情况,就没办法了,就需要分布式锁,跨jvm,就要保证一个方法或变量在同一个线程执行。 基于数据库实现分布式锁;基于缓存redis等实现分布式锁;基于Zookeeper实现分布式锁。 数据库只要是加一张表,有唯一索引不让重复加
阅读全文
摘要:我们可以尝试对JVM进行调优,主要就是堆内存那块 所有线程共享数据区大小=新生代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m。所以java堆中增大年轻代后,将会减小年老代大小(因为老年代的清理是使用fullgc,所以老年代过小的话反而是会增多fullgc的)。此值对系统性能影响较
阅读全文
摘要:加载 类加载过程的第一步,主要完成下面3件事情: 通过全类名获取定义此类的二进制字节流 将字节流所代表的静态存储结构转换为方法区的运行时数据结构 在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访问入口 加载阶段和连接阶段的部分内容是交叉进行的,加载阶段尚未结束,连接阶段可能就已经
阅读全文
摘要:针对 HotSpot VM 的实现,它里面的 GC 其实准确分类只有两大种: 部分收集 (Partial GC): 新生代收集(Minor GC / Young GC):只对新生代进行垃圾收集; 老年代收集(Major GC / Old GC):只对老年代进行垃圾收集。需要注意的是 Major GC
阅读全文
摘要:事务隔离级别 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行。 事务的特性(ACID) 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性: 执行事务前后,数据保持一致,例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是
阅读全文
摘要:简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。 Redis 基于 Reactor 模式来设计开发了自己的一套高效的事件处理模型 (Netty 的
阅读全文
摘要:乐观锁:对数据操作的时候不担心数据被修改,不上锁,每次修改数据的时候要根据数据进行判断是否被修改过. 适合用于db读大于写的场景 悲观锁: 自己操作数据的时候就会对数据上锁,防止自己操作的时候别人也动. 场景:在db读取大的时候,如果有线程修改操作上锁 就会被全部挂起,等修改完成释放锁才能读到数据,
阅读全文
摘要:HASH 算法 我理解就是hash表数据结果中的hash函数用的那个东西 比如比如 MD5、SHA 哈希算法的定义和原理非常简单,基本上一句话就可以概括了。将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。但是,要想设计一
阅读全文
摘要:在运输层分为 传输控制协议 TCP(Transmission Control Protocol)--提供面向连接的,可靠的数据传输服务。 用户数据协议 UDP(User Datagram Protocol)--提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)。 应用层分为HTTP S
阅读全文
摘要:从上面图可以看出 IOC也叫做控制反转,控制反转这种思路是为了解决依赖倒置这种问题,举个例子 制造汽车,new Car() 车里面要有车身,车身里面有车底盘,底盘包含轮胎,要new Car()需要弄好多东西啊,甚至我想改下轮胎代码,车上的代码还得改,这样的意思就是高层依赖了低层,不想让这种事情发展,
阅读全文
摘要:aop 面向切面编程,调用某个方面前可以做前置,后置处理,底层逻辑为运行期间可以动态改变 class文件。 基本用法可以看 https://www.cnblogs.com/joy99/p/10941543.html //具体源码 可以自己研究下 todo Spring AOP就是基于动态代理的,如果
阅读全文

浙公网安备 33010602011771号