08 2022 档案

摘要:springMVC执行流程 初始化阶段 在 Web 容器第一次用到 DispatcherServlet 的时候,会创建其对象并执行 init 方法 init 方法内会创建 Spring Web 容器,并调用容器 refresh 方法 refresh 过程中会创建并初始化 SpringMVC 中的重要 阅读全文
posted @ 2022-08-30 18:09 临易 阅读(24) 评论(0) 推荐(0) 编辑
摘要:事务失效的几种场景 1.抛出检查异常导致事务无法正确回滚。 原因:Spring 默认只会回滚非检查异常 解法:配置 rollbackFor 属性 @Transactional(rollbackFor = Exception.class) 2. 业务方法内自己 try-catch 异常导致事务不能正确 阅读全文
posted @ 2022-08-30 17:40 临易 阅读(295) 评论(0) 推荐(0) 编辑
摘要:Spring Bean生命周期 1.处理名称,检查缓存 一级缓存:放单例成品对象;二级缓存:放单例工厂的产品;三级缓存:放单例工厂。 2.检查父工厂 如果父子容器名称重复,优先子容器bean。 3.检查DependsOn 有依赖关系的bean创建次序有保障。无依赖关系时,A dependsOn B, 阅读全文
posted @ 2022-08-30 10:19 临易 阅读(33) 评论(0) 推荐(0) 编辑
摘要:Spring refresh 流程 Spring refresh 概述 refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext 容器,容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法,我们把 阅读全文
posted @ 2022-08-29 16:44 临易 阅读(63) 评论(0) 推荐(0) 编辑
摘要:当重写了finalize方法的对象,在构造方法调用时,jvm会将其包装成一个finalizer对象,并加入unfinalized队列中(双向链表)。当进行垃圾回收时,将这些对象对应的finalizer对象加入一个空的队列ReferenceQueue(单向链表)。真正的回收时机:即时对象无人引用,由于 阅读全文
posted @ 2022-08-29 11:47 临易 阅读(33) 评论(0) 推荐(0) 编辑
摘要:# 对象引用类型## 1.强引用内存空间不足时不会被GC回收。当没有任何引用指向它或者指向它的对象为null的时候会被GC垃圾回收。## 2.软引用适用于缓存。第一次回收时不会被回收,而后当内存满,进行GC回收时会被回收。防止内存溢出。当空间充足时不会被回收。## 3.弱引用垃圾回收时直接被回收。# 阅读全文
posted @ 2022-08-29 10:58 临易 阅读(19) 评论(0) 推荐(0) 编辑
摘要:类加载 类加载过程 1.加载 ①将类的字节码载入方法区,并创建.class对象。 ②如果此类的父类没有加载,先加载父类。 ③加载是懒惰执行。 2.链接 ①验证-验证类是否符合字节码规范,合法性、安全性检测。 ②准备-为static变量分配空间,设置默认值。 ③解析-将常量池的符号引用解析为直接引用。 阅读全文
posted @ 2022-08-26 17:23 临易 阅读(18) 评论(0) 推荐(0) 编辑
摘要:java创建对象的过程主要分为一下五个步骤: (1)类加载检查 Java虚拟机(jvm)在读取一条new指令时候,首先检查能否在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析和初始化。如果没有,则会先执行相应的类加载过程。 (2)内存分配 在通过(1)后,则开始为新生的 阅读全文
posted @ 2022-08-26 16:54 临易 阅读(58) 评论(0) 推荐(0) 编辑
摘要:内存溢出 项目中什么情况下会内存溢出,怎么解决的 1.误用固定大小线程池 当前线程任务超时后,其余任务将被加入任务队列中,任务对象所耗费的内存会导致整个堆内存耗尽,导致内存溢出异常。 解决方法: 不要用工具类提供的线程池来创建线程池。而是使用线程池时自己使用线程池的构造方法,根据实际情况设置一个有大 阅读全文
posted @ 2022-08-26 14:48 临易 阅读(24) 评论(0) 推荐(0) 编辑
摘要:JVM垃圾回收 GC和分代回收算法 GC的目的: 实现无用对象内存自动释放,减少内存碎片,加快分配速度。 GC要点: 1.回收区域是堆内存,不包括虚拟机栈,在方法调用结束会自动释放方法占用的内存。 2.判断无用对象,使用可达性分析算法,三色表记法标记存活对象,回收未标记对象。 3.GC具体的实现称为 阅读全文
posted @ 2022-08-26 11:54 临易 阅读(41) 评论(0) 推荐(0) 编辑
摘要:JVM垃圾回收算法 标记:找到不能被作为垃圾回收的对象并标记。标记的对象保留,未被标记的对象作为垃圾释放。 标记清除法 标记:将一定不能被回收的根对象作为GC Root对象,从根对象出发,沿着它的引用链找当前对象有没有被根对象引用到。若是则不能被回收,加标记。若否,则不加标记,GC时释放掉。 清除: 阅读全文
posted @ 2022-08-25 16:21 临易 阅读(23) 评论(0) 推荐(0) 编辑
摘要:JVM堆内存参数: 对于JVM内存配置参数:-Xmx10240m -Xms10240m -Xmn5120m -XX:SurvivorRatio=3 其最小内存值和Survivor区总大小分别是? -Xmx10240m Xmx:Java虚拟机最大内存10G m:单位,兆字节 -Xms10240m Xm 阅读全文
posted @ 2022-08-25 15:55 临易 阅读(240) 评论(0) 推荐(0) 编辑
摘要:虚拟机-jvm内存结构 方法区:存放类加载时的方法 堆:存放new出来的对象 虚拟机栈:记录方法内的局部变量和方法参数等信息。 程序计数器:记录main线程执行中执行其他线程,回到主线程时从哪里开始执行。 本地方法栈:调用本地方法接口实现由操作系统实现的功能(本地库) GC:内存不足时将不再使用的地 阅读全文
posted @ 2022-08-25 15:12 临易 阅读(24) 评论(0) 推荐(0) 编辑
摘要:ThreadLocal作用: 1.线程隔离。线程间:ThreadLocal可实现资源对象的线程隔离,让每个线程各用各的资源对象,避免争用引发的线程安全问题。 2.资源共享。线程内:ThreadLocal同时实现了线程内的资源共享。 ThreadLocal原理:关联资源 每个线程中都有一个独立的Thr 阅读全文
posted @ 2022-08-24 23:49 临易 阅读(233) 评论(0) 推荐(0) 编辑
摘要:HashTable与ConcurrentHashMap比较 1.HashTable与ConcurrentHashMap都是线程安全的Map集合。 2.HashTable与ConcurrentHashMap的键和值都不能为空。 3.HashTable并发度低,整个HashTable对应一把锁,同一时刻 阅读全文
posted @ 2022-08-24 22:43 临易 阅读(64) 评论(0) 推荐(0) 编辑
摘要:1.悲观锁的代表是synchronized和Lock锁。 1.核心思想:线程只有占有了锁,才能去操作共享变量,每次只有一个线程占锁成功,获取锁失败的线程都得停下来等待。 2.线程从运行到阻塞、再从阻塞到唤醒,涉及线程上下文切换,如果频繁会影响性能。 3.实际上,线程在获取synchronized和L 阅读全文
posted @ 2022-08-24 21:34 临易 阅读(22) 评论(0) 推荐(0) 编辑
摘要:volatitle能否保证线程安全? 线程安全要考虑三个方面:可见性,有序性,原子性。 1.可见性:一个线程对共享变量修改,另一个线程能看到最新结果。 2.有序性:一个线程内代码按照编写顺序执行。 3.原子性:一个线程内多行代码以一个整体运行,期间不能有其他线程代码插队。 volatile能够保证共 阅读全文
posted @ 2022-08-24 16:44 临易 阅读(20) 评论(0) 推荐(0) 编辑
摘要:语法层面 synchronized是关键字,源码在jvm中,用c++语言实现。 Lock是接口,源码由jdk提供,用Java语言实现。 使用synchronized时,退出同步代码块,锁会自动释放。 使用Lock时,需要手动调用unlock方法释放锁。 功能层面 二者均属于悲观锁,都具备互斥(一个线 阅读全文
posted @ 2022-08-24 15:47 临易 阅读(102) 评论(0) 推荐(0) 编辑
摘要:共同点: wait(),wait(long),sleep(long)的效果都是让当前线程暂时放弃CPU的使用权,进入阻塞状态。 不同点: 方法归属不同 sleep(long)是Thread的静态方法。 wait,wait(long)都是Object的成员方法,每个对象都有。 醒来时机不同 sleep 阅读全文
posted @ 2022-08-24 14:52 临易 阅读(30) 评论(0) 推荐(0) 编辑
摘要:示意图: 1.核心线程数:最多保留的线程数(可以为0) 2.最大线程数:核心线程+救急线程 3.workQuene:阻塞队列,对任务起到缓冲作用。还未进行的线程不会直接成为救急线程,而是先存在任务队列中,等核心线程空闲下来后,会被获取执行。(上限控制) 4.救急队列:当核心线程都在运行,任务队列也都 阅读全文
posted @ 2022-08-24 14:36 临易 阅读(92) 评论(0) 推荐(0) 编辑
摘要:java中的线程状态 线程状态_五种状态vs六种状态 五种状态:操作系统层面 分到CPU时间的:运行 可以分到CPU时间的:就绪 分不到CPU时间的:阻塞 Java中的Runnable涵盖了操作系统中的就绪、运行、阻塞 I/O状态。 阅读全文
posted @ 2022-08-24 11:49 临易 阅读(16) 评论(0) 推荐(0) 编辑
摘要:单例模式的五种实现方式 1.饿汉式 public class Singleton1 implements Serializable { private Singleton1() { if (INSTANCE != null) { throw new RuntimeException("单例对象不能重 阅读全文
posted @ 2022-08-24 10:42 临易 阅读(29) 评论(0) 推荐(0) 编辑
摘要:哈希表 应用场景:快速查找 通过计算元素的哈希码,得到元素的桶下标,计算元素位置。接下来只需要进行少量的比较即可找到元素。 当链表长度过长时,可以通过扩容减少链表长度。但如果元素的原始哈希码都一样时,即使扩容也无法改变链表长度,只能进行红黑树的树化。 底层数据结构,1.7与1.8有何不同? 1.7 阅读全文
posted @ 2022-08-23 09:14 临易 阅读(80) 评论(0) 推荐(0) 编辑
摘要:ArrayList: 1.基于数组,需要连续内存 2.随机访问快(根据下标访问)。(按照内容查询时ArrayList与LinkedList速率基本相同) 3.尾部插入、删除性能好,其他部分插入、删除都会移动数据,因此性能低。 4.可以利用cpu缓存,一定程度上提升读写性能。 (局部性原理:读到一个元 阅读全文
posted @ 2022-08-22 13:41 临易 阅读(14) 评论(0) 推荐(0) 编辑
摘要:1.failFast (ArrayList) 一旦发现遍历的同时其他人来修改,则立即抛异常。 当执行一个遍历时,另一个线程修改了遍历的数据,则会立即抛出ConcurrentModificationException(并发修改异常)。 实现原理:记录了循环开始时的次数,如果在循环的过程中修改次数被改, 阅读全文
posted @ 2022-08-22 11:36 临易 阅读(18) 评论(0) 推荐(0) 编辑
摘要:如果调用无参arrayList构造方法,则初始长度为0; 如果构造带参的构造方法,则初始容量为指定长度。 1.调用add()方法 1.第一次扩容为10(从0到9)。 2.后续扩容都是前一次的1.5倍(创建一个新数组(0-14),将旧数组的元素拷贝到新数组中去,用新数组代替旧数组,旧数组没有被引用,作 阅读全文
posted @ 2022-08-22 10:24 临易 阅读(197) 评论(0) 推荐(0) 编辑
摘要:1.一般(默认格式): 格式:星期 月份 日期 时:分:秒 时区 年份 Thu Aug 11 15:19:59 CST 2022 2.simpleDateFormat格式化date类: import java.text.SimpleDateFormat; import java.util.Date; 阅读全文
posted @ 2022-08-11 15:47 临易 阅读(2232) 评论(0) 推荐(0) 编辑
摘要:1.将api中的WXPay依赖移至service的pom.xml中。 2.OrderService: public interface OrderService { public Map<String,String> addOrder(String cids, Orders order) throw 阅读全文
posted @ 2022-08-09 19:32 临易 阅读(172) 评论(0) 推荐(0) 编辑
摘要:具体代码: index.html: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>字母消消乐</title> <link rel="stylesheet" href="css/game.css" /> </head> <b 阅读全文
posted @ 2022-08-03 22:16 临易 阅读(63) 评论(0) 推荐(0) 编辑
摘要:订单超时取消:当用户成功提交订单之后在规定时间内如果没有完成支付,则将订单关闭,还原库存。 实现订单的超时取消通常有两种解决方案: 1.使用定时任务(循环扫描)(quartz) 2.延时队列(MQ) 一、流程分析 二、实现 1.在service中的pom.xml中添加定时任务依赖: <depende 阅读全文
posted @ 2022-08-02 20:43 临易 阅读(381) 评论(0) 推荐(0) 编辑
摘要:完整日志: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project api: There are test failures. Please 阅读全文
posted @ 2022-08-01 11:35 临易 阅读(217) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示