摘要: 模型原理图 BOSS线程(ServerSocketChannel)专门负责建立链接,然后将accept到的SocketChannel分发给多个Worker线程。Worker线程有多个,可以分摊来自多个Client的SocketChannel。Worker线程专门负责read和write。 NIO多线 阅读全文
posted @ 2022-05-14 20:12 iamswf 阅读(276) 评论(0) 推荐(0) 编辑
摘要: wait和notify作用 wait和notify是定义在Object类中的,而且是final的。因此会被所有的Java类继承并且无法重写。这两个方法要求在调用时所处的线程已经获取了对象monitor锁,因此对这两个方法的调用需要在synchronized方法或者代码块中。比如wait方法的Java 阅读全文
posted @ 2022-05-06 20:08 iamswf 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 1. JDBC操作数据库的步骤? (1). 注册数据库驱动; (2). 建立数据库连接; (3). 创建一个statement语句; (4). 执行sql语句; (5). 处理结果集; (6). 关闭数据库连接; Connection connection = null; Statement sta 阅读全文
posted @ 2021-10-16 23:50 iamswf 阅读(123) 评论(0) 推荐(0) 编辑
摘要: package com.demo; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; // 测试接口和类 interface Wai 阅读全文
posted @ 2021-08-13 14:14 iamswf 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 三级缓存的原因: Spring针对代理的设计原则是:先实例化原对象,原对象的依赖完成注入,然后在创建代理对象。 比如BeanA依赖BeanB,BeanA有代理对象:BeanA_Proxy。 情况1: BeanB不依赖BeanA_Proxy,即没有循环依赖,则Bean依赖注入流程如下: BeanA实例 阅读全文
posted @ 2021-08-12 20:39 iamswf 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 对象的内存布局可以分为两种对象:普通对象和数组对象。 一、普通对象: 1. 对象头(Mark Word):8Byte 2. 类指针(Class Pointer): -XX:+UseCompressedClassPointers开始的话是4Byte,不开启是8Byte 3. 实例数据(成员变量): 引 阅读全文
posted @ 2021-03-25 21:40 iamswf 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 【happens-before】规则定义了某个线程修改的变量,何时对其他线程可见。 指令重排 https://www.cnblogs.com/chenssy/p/6393321.html http://tutorials.jenkov.com/java-concurrency/java-happen 阅读全文
posted @ 2021-03-25 21:38 iamswf 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 属于jdk1.6优化手段,jdk1.6之前都是传统的重量级锁实现方式,优化后 如果程序运行期间永远是单线程,则只使用到偏向锁阶段,但是假如有第二,三个不同的线程介入,则升级为轻量级锁,如果这些线程只是交替有序的进行,则保持在轻量级阶段,一旦发生了并发冲突,则升级为重量级锁阶段。重量级锁阶段会先通过自 阅读全文
posted @ 2021-03-25 21:17 iamswf 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 首先说下兜底方案:一般缓存都会设置失效时间,所以最终缓存和database肯定会一致的。 但是如果想在更新database的同时,提前更新下缓存,那么就存在各种方案了。可以参考如下的文章: https://www.cnblogs.com/rjzheng/p/9041659.html https:// 阅读全文
posted @ 2021-03-15 22:39 iamswf 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 什么是缓存雪崩? Redis缓存,一般是加在database前一层,因此一般的请求处理过程是这样的: 请求进入web后端服务器 -> web后端服务器请求redis,查看是否命中缓存,如果命中,则直接返回 -> 如果缓存没有,则继续查询database -> 查到数据后,更新到缓存,同时返回给请求端 阅读全文
posted @ 2021-03-15 22:07 iamswf 阅读(122) 评论(0) 推荐(0) 编辑