08 2024 档案

摘要:1.beanDefinition 查看代码 public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement { //单例 String SCOPE_SINGLETON = ConfigurableBeanF 阅读全文
posted @ 2024-08-17 13:37 辉辉、 阅读(6) 评论(0) 推荐(0) 编辑
摘要:1.CMS使用三色回收法清除垃圾,老年代使用标记-清除算法。 并发清除阶段使用 - 增量更新 2.具体工作流程: 初始标记:从GC Root根节点扫描直接引用到的对象。(需要SWT) 并发标记:与用户线程代码并行执行,扫描对象图关系。 预清除:关注并发标记到重新标记阶段对象引用的变化,目前是减少重新 阅读全文
posted @ 2024-08-16 15:15 辉辉、 阅读(5) 评论(0) 推荐(0) 编辑
摘要:老年代普生: 1.大对象直接进入老年区(XX:Pretenuresize Threshold),不会放在新生代分配 2.动态年龄判断,当对象年龄1,年龄2....年龄15加起来大于Survivor一半时,进入到老年代。 3.新生代minor gc年龄到15次后会进入到老年代。 4.空间担保策略(CM 阅读全文
posted @ 2024-08-16 09:28 辉辉、 阅读(6) 评论(0) 推荐(0) 编辑
摘要:通过数组与值实现,看源码 public void add(long x) { Cell[] as; long b, v; int m; Cell a; // 尝试直接通过CAS操作累加base的值 // 如果cells数组不为null,或者通过CAS操作未能成功累加base的值 //相当于是更新ba 阅读全文
posted @ 2024-08-15 18:24 辉辉、 阅读(5) 评论(0) 推荐(0) 编辑
摘要:关键信息 state(volatile修饰)/双向链表数据结构 AQS有那些实现? ReentrantLock、Semaphore、CountDownLatch AQS分为同步队列和条件队列 public class BoundedBuffer<T> { private final Lock loc 阅读全文
posted @ 2024-08-15 18:06 辉辉、 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1.对象有三个区域 对象头/实例数据/对其填充 对象头又包含Mark Word/类型指针->指向方法区/数组长度 Mark Word如下图所示 2.偏向锁 当线程首次进入synchronized,他会将对象头的mark work更新为偏向锁。 JDK已废除 3.轻量锁 当线程获取已被偏向的锁时,会将 阅读全文
posted @ 2024-08-15 16:49 辉辉、 阅读(75) 评论(0) 推荐(0) 编辑
摘要:synchronized 代码块实现原理 java 字节码中,用来实现同步代码块的是 monitorenter 和 monitorexit 指令。 monitorenter 指令执行时,当前线程试图获取 objectref 所存储的对象锁(ObjectMonitor 对象) 如果取到的 monito 阅读全文
posted @ 2024-08-15 15:59 辉辉、 阅读(13) 评论(0) 推荐(0) 编辑
摘要:1.synchronized 2.ReentrantLock(可重入锁) public class Main { ReentrantLock lock = new ReentrantLock(); private ThreadLocal stream = new ThreadLocal(); pub 阅读全文
posted @ 2024-08-15 15:30 辉辉、 阅读(7) 评论(0) 推荐(0) 编辑
摘要:ThreadLocal有内部类ThreadLocalMap,ThreadLocalMap是ThreadLocal的核心 1.每个线程下的有一个ThreadLocalMap static class ThreadLocalMap { static class Entry extends WeakRef 阅读全文
posted @ 2024-08-15 15:15 辉辉、 阅读(11) 评论(0) 推荐(0) 编辑
摘要:1.参数说明 acc:上下文 corePoolSize:核心工作线程 maximumPoolSize:最大工作数量线程,包含了核心工作线程 keepAliveTime:非核心线程最大空闲回收时间 TimeUnit:指定keepAliveTime时间单位 workQueue:工作队列。如事件都让可用的 阅读全文
posted @ 2024-08-15 10:55 辉辉、 阅读(8) 评论(0) 推荐(0) 编辑
摘要:1.初始化 2.就绪 - 运行中 存在就绪是因为CPU有时间片,一个线程无法一直运行,需要切换到就绪,等待获得CPU执行时间片。 3.阻塞 synchronized 4.等待 object.wait(); object.join(); 唤醒通过 object.notify(); object.not 阅读全文
posted @ 2024-08-14 20:05 辉辉、 阅读(3) 评论(0) 推荐(0) 编辑
摘要:1添加源码 final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new NullPointerException(); int hash = spread(key 阅读全文
posted @ 2024-08-14 16:17 辉辉、 阅读(4) 评论(0) 推荐(0) 编辑
摘要:1.开放寻址法 出现hash冲突,一直寻找可用的hash地址,直到找到不冲突的地址即可。 2.链地址法 参考hashMap 3.在哈希法 一旦出现哈希冲突,更换函数方法。知道找到不冲突的哈希值 4.一致性哈希法 分布式一致性哈希算法,将哈希归纳到不同位置上,近可能均匀,减少冲突。 阅读全文
posted @ 2024-08-14 15:36 辉辉、 阅读(68) 评论(0) 推荐(0) 编辑
摘要:subList是arrayList的内部类 private class SubList extends AbstractList<E> implements RandomAccess { private final AbstractList<E> parent; private final int 阅读全文
posted @ 2024-08-14 15:28 辉辉、 阅读(3) 评论(0) 推荐(0) 编辑
摘要:public class LRUCache { int cap; LinkedHashMap<Integer, Integer> linkedHashMap = new LinkedHashMap<>(); LRUCache(int cap){ this.cap = cap; } public in 阅读全文
posted @ 2024-08-14 15:23 辉辉、 阅读(4) 评论(0) 推荐(0) 编辑
摘要:ArrayList:是数组数据结构,扩容是通过扩容数组。可快速访问其中一个元素或修改。 ListedList:是链表数据结构,可高效的实现中间元素修改/删除。但是访问没有数组高效。 vector:是强同步的ArrayList ArrayList扩容步骤 1.判断申请的元素后,元素数量超过现有容量。 阅读全文
posted @ 2024-08-14 15:16 辉辉、 阅读(4) 评论(0) 推荐(0) 编辑
摘要:删除集合方法 public static void main(String[] args) { ArrayList<Integer> arrayList = new ArrayList(); arrayList.add(1); arrayList.add(2); arrayList.add(3); 阅读全文
posted @ 2024-08-14 14:55 辉辉、 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1.fail-fast(快速失败) 比如程序执行到1/0的时候,无法进行计算。则直接抛出异常,进行提示。 如HashMap中,添加一个新的元素后,modCount会增加。modCount会传递给创建迭代器,而迭代器会维护expectedModCount,则使用迭代器期间只能通过迭代器修改。否则直接促 阅读全文
posted @ 2024-08-14 14:47 辉辉、 阅读(6) 评论(0) 推荐(0) 编辑
摘要:1.源码全集如下 查看代码 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { @java.io.Serial private static final l 阅读全文
posted @ 2024-08-14 12:18 辉辉、 阅读(38) 评论(0) 推荐(0) 编辑
摘要:1.方法多态 重载:同一个方法,兼容处理不同参数处理。 重写:子类重写父类。 2.对象 类继承:子类继承父类 接口实现:不同类实现不同接口 多态还分为:编译多态和运行多态 编译多态:在编译器根据参数判断执行哪个方法。运行多态:子类重写父类方法,在运行的时候。根据变量指向的实际对象类型带调用对象。 阅读全文
posted @ 2024-08-13 19:53 辉辉、 阅读(7) 评论(0) 推荐(0) 编辑
摘要:接口:接口主要用来约束某个实物实现,制定规范 抽象类:抽象类可以理解用来复用代码。 区别。 1.接口不考虑default方法,则只需要声明方法,不需要实现。而类可以写具体实现。 2.抽象类可以有构造函数,接口不能有 3.单继承,多实现,一个类只能一次继承指定类,而接口可以多实现。 使用原则:制定实现 阅读全文
posted @ 2024-08-13 19:42 辉辉、 阅读(20) 评论(0) 推荐(0) 编辑
摘要:Thread.Sleep(0)可以让出CPU执行权,使得线程处于就绪状态,让CPU执行其他线程执行。 阅读全文
posted @ 2024-08-13 19:25 辉辉、 阅读(10) 评论(0) 推荐(0) 编辑
摘要:![](https://img2024.cnblogs.com/blog/1751565/202408/1751565-20240813191926197-1945950237.png) 阅读全文
posted @ 2024-08-13 19:19 辉辉、 阅读(3) 评论(0) 推荐(0) 编辑
摘要:类型 占用 byte 1字节 short 2字节 char 2字节 int 4字节 long 8字节 double 8字节 boolean 1/8字节 float 4字节 阅读全文
posted @ 2024-08-13 15:56 辉辉、 阅读(6) 评论(0) 推荐(0) 编辑
摘要:JDK:是开发工具包,是最全面的包含JRE以及一系列开发工具包 JRE:是所谓的JAVA程序运行环境,包含JVM、Java类库。 阅读全文
posted @ 2024-08-13 15:31 辉辉、 阅读(3) 评论(0) 推荐(0) 编辑
摘要:public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); //创建引导上下文 DefaultBootstrapContex 阅读全文
posted @ 2024-08-11 21:41 辉辉、 阅读(5) 评论(0) 推荐(0) 编辑
摘要:@SuppressWarnings("deprecation") protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { // 实际处理时用的请求,如 阅读全文
posted @ 2024-08-11 12:29 辉辉、 阅读(38) 评论(0) 推荐(0) 编辑
摘要:![](https://img2024.cnblogs.com/blog/1751565/202408/1751565-20240810162506308-951175843.png) 阅读全文
posted @ 2024-08-10 16:23 辉辉、 阅读(5) 评论(0) 推荐(0) 编辑
摘要:` public void refresh() throws BeansException, IllegalStateException { this.startupShutdownLock.lock(); try { // 启动关闭线程,这个线程用来表示启动当前容器使用的线程 // 该成员变量在之 阅读全文
posted @ 2024-08-10 14:28 辉辉、 阅读(15) 评论(0) 推荐(0) 编辑
摘要:BeanFactory是Spring的早期接口,称为Spring的Bean工厂,ApplicationContext是后期更高级接口,称之为Spring容器 ApplicationContext,在beanFactory基础上进行了扩展,如监听功能、国际化功能。而beanFactory更像是底层be 阅读全文
posted @ 2024-08-10 10:09 辉辉、 阅读(13) 评论(0) 推荐(0) 编辑
摘要:1.大对象直接进入老年代 根据XX:PretenureSizeThreshold指定 2.长期存活的对象直接进入老年代 对象一开始分配到Ende区域,然后因Ende区域内存不够触发monin GC,然后将存活的对象放到S0或S1。年龄+1,+到15放到老年代 3.对象动态年龄判断 新生代S0或S1区 阅读全文
posted @ 2024-08-07 17:33 辉辉、 阅读(4) 评论(0) 推荐(0) 编辑
摘要:验证:验证字节码是否符合JVM的安全要求,确认不会危害JVM系统运行 准备:为类分配静态成员分配内存,并初始化,确保类的静态变量使用 解析:JVM将符号引用转化为直接引用,将类/接口/方法转化为内存地址 初始会:执行类的构造函数,初始化类 阅读全文
posted @ 2024-08-07 16:53 辉辉、 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1.直接内存不由JVM内存管理,是来源于java NIO向操作系统申请而来的。 当把磁盘文件复制到内存中 JVM通过NIO直接访问数据。(起到了优化系统性能,避免了复制到java堆空间) 阅读全文
posted @ 2024-08-07 15:29 辉辉、 阅读(3) 评论(0) 推荐(0) 编辑
摘要:1.类持有静态成员变量,如ArrayList数组。(如果真的遇到该场景需要手动设置为null) 2.打开资源要关闭,try catch finally及时关闭资源 3.内部类,引用外部类 publicclassStaticReferenceLeak{publicstatic List<Integer 阅读全文
posted @ 2024-08-07 13:40 辉辉、 阅读(4) 评论(0) 推荐(0) 编辑
摘要:作用:因并发标记过程中,程序还在跑。对象间的引用会发生变化,可能会导致漏标或错标情况。因此采用三色法,将扫描的各情况用颜色区别出来。 三种颜色 白色:一开始所有对象的颜色都是白色,即未扫描过的对象。 灰色:表示对象已经扫描到了,但是对象所在的引用对象,还未全部扫描完成。 黑色:表示当前对象自身以及引 阅读全文
posted @ 2024-08-07 13:34 辉辉、 阅读(11) 评论(0) 推荐(0) 编辑
摘要:1.jstack 可以分析java进程中,线程死锁/线程问题 案例1死锁 `@ApiOperation("登录") @PostMapping("/login") @ResponseBody public CommonResult login( @RequestBody UmsAdminLoginPa 阅读全文
posted @ 2024-08-07 11:59 辉辉、 阅读(15) 评论(0) 推荐(0) 编辑
摘要:1.JVM内存划分图 2.线程栈 阅读全文
posted @ 2024-08-06 22:34 辉辉、 阅读(2) 评论(0) 推荐(0) 编辑
摘要:1.容量区别 HashMap是16个容量,HashTable是11个 扩容HashMap是*2,HashTable*2+1 2.线程安全 HashTable是安全,HashMap不是 3.key是否可以为null HashMapkey可以为null,hashTable不能为null 4.迭代器 Ha 阅读全文
posted @ 2024-08-04 22:45 辉辉、 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1.concurrentHashMap 2.concurrentListekQueue 3.CopyOnWriteArrayList 4.CopyOnWriteArraySet 阅读全文
posted @ 2024-08-04 22:07 辉辉、 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2024-08-04 22:03 辉辉、 阅读(4) 评论(0) 推荐(0) 编辑
摘要:1.throwable顶级父类 2.error是系统错误,可能出现outOfMenoryError 3.exception常用RuntimeException(受检异常),不收件异常有IOException/FileNotFoundExceptrion 阅读全文
posted @ 2024-08-04 21:28 辉辉、 阅读(5) 评论(0) 推荐(0) 编辑
摘要:java只有值类型传递,如果是object传递传递,其实是将地址复制一份到参数里,将引用关系传递所以是值传递。 阅读全文
posted @ 2024-08-04 21:17 辉辉、 阅读(2) 评论(0) 推荐(0) 编辑
摘要:== 1.对于基础类型,对比的值是否相等 2.如果是引用类型object,是对比引用地址是否相等 equals 1.用于对比两个类是否相等,在源码里面会先对比地址,如果不是在调用equals方法进行对比,equals方法可重写。 一般equals与hahcode都要同步重写 阅读全文
posted @ 2024-08-04 21:12 辉辉、 阅读(4) 评论(0) 推荐(0) 编辑
摘要:1.java类型包含 int/long/boolean/float/double/char/byte byte:一个字节 short:两个字节 int:4个字节 long:8 double:8 float:4 阅读全文
posted @ 2024-08-04 21:08 辉辉、 阅读(7) 评论(0) 推荐(0) 编辑
摘要:1.变量命名规则 组成符号只能由a-z,数字,_,$ java区分大小写 不能以数字开头 2.类命名规则 如OrderUpdate必须首字母大写,并且驼峰方式 DTO、VO、BO、PO、DO、POJO DTO:数据传递对象 VO:视图层对象 BO:业务对象 PO:持久化对象 DO:领域实体对象 阅读全文
posted @ 2024-08-04 21:02 辉辉、 阅读(35) 评论(0) 推荐(0) 编辑
摘要:JDK:是整个Java的核心,包含运行环境+一系列的开发工具包 JRE:java程序开发环境+核心工具类+JVM等。不能用于编译工作。 阅读全文
posted @ 2024-08-04 20:57 辉辉、 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1.继承: 如B类继承A类,继承父类的B类,有父类的相应特征。 2.封装 如业务常见的商品,可以封装不同的虚拟类和实物类。 3.多态 多态可以理解成,一个类继承父类。即为指向子类引用指向父类,子类所自定义的子类动作。 如一个汽车,写出子类继承汽车,用于生产兰博基尼或宝马,就是多态。 3.抽象 jav 阅读全文
posted @ 2024-08-04 20:49 辉辉、 阅读(8) 评论(0) 推荐(0) 编辑

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