随笔 - 530  文章 - 0  评论 - 3  阅读 - 10098 
10 2024 档案
synchronize关键字 原理
摘要:一个monitor 同一时间只被一个线程获取 使用monitorenter ,monitorexit 指令,指令执行时,当前线程判断: 1. monitor的计数器 =0 ,没有被任何线程获取 2. 被其他线程获取 3. 被当前线程获取(可重入) 阅读全文
posted @ 2024-10-28 12:52 towboat 阅读(2) 评论(0) 推荐(0) 编辑
布隆过滤器和 set
摘要:用于查询集合中是否有某个元素 布隆过滤器的优点 空间效率高: 布隆过滤器是一种基于位数组和多个哈希函数的数据结构。相对于 Redis 的 Set(基于哈希表实现),布隆过滤器在存储大量元素时,占用的空间更少。 当存储非常庞大的数据集时,布隆过滤器能够显著减少内存占用,比如在内存受限或者数据量极大的场 阅读全文
posted @ 2024-10-19 00:47 towboat 阅读(17) 评论(0) 推荐(0) 编辑
内部调用@Transactional 注解的方法
摘要:当客户端代码调用某个带有 @Transactional 注解的方法时,调用实际上是通过代理对象进行的 当同一个类中的普通方法直接调用另一个 @Transactional 方法时,调用是类内部发生的,而不是通过代理对象 解决办法: 1. 外部调用(依赖注入,然后调用). 2. aopcontext.g 阅读全文
posted @ 2024-10-19 00:33 towboat 阅读(61) 评论(0) 推荐(0) 编辑
java值传递
摘要:说下引用类型的,比如一个对象,那么这个对象是分配在堆上的,赋值时可以理解为赋予地址 所以改这个存地址的变量是不会对原来的对象产生影响的; 修改地址对应的堆上的变量的信息,当然会有影响 阅读全文
posted @ 2024-10-18 02:57 towboat 阅读(3) 评论(0) 推荐(0) 编辑
字符串常量池
摘要:执行 new String("hello") 可能创建 一个或两个对象,具体情况取决于 "hello" 是否已经存在于字符串常量池中。 情况分析 如果常量池中已存在 "hello" 字符串: new String("hello") 会直接在堆中创建一个新的 String 对象,并且这个对象的值指向常 阅读全文
posted @ 2024-10-17 18:20 towboat 阅读(8) 评论(0) 推荐(0) 编辑
epoll ----多路复用
摘要:epoll是 多路复用的一个实现 linux内核提供了epoll : epoll_ create () epoll_ ctl () epoll_wait () 1. 使用红黑树帮助组织fd ,fd的 crud 很高效 2. io事件准备完毕的监测? poll 回调机制: fd 告诉epoll准备完毕 阅读全文
posted @ 2024-10-17 11:02 towboat 阅读(7) 评论(0) 推荐(0) 编辑
zookeeper 记录
摘要:zookeeper集群 leader follower(参与选举) observer leader选举 1. 过半投票的机制 2 . master同步slave数据 ,保证数据一致性 3. 历史协议 4. 新leader开始工作 过半机制防止脑裂 应用 选主和故障检测(例如监控master节点健康状 阅读全文
posted @ 2024-10-14 18:39 towboat 阅读(5) 评论(0) 推荐(0) 编辑
缓存更新
摘要:改:更新数据库, 删除缓存 仍然会有缓存一致性性问题,但概率小 例如 A先查询 ,b再更新 可以看到,条件需要 写缓存时间 > 更新数据库+删除缓存 时间 阅读全文
posted @ 2024-10-13 14:13 towboat 阅读(3) 评论(0) 推荐(0) 编辑
redis 记录
摘要:redis 的单线程: 是指Redis的网络IO和键值对读写是由一个线程来完成的 诸如持久化,异步操作,集群同步都是多线程 IO多路复用: 多个客户端连接服务端时,Redis 会将客户端 socket 对应的 fd 注册进 epoll,epoll 同时监听多个文件描述符(FD)是否有数据到来,如果有 阅读全文
posted @ 2024-10-13 12:14 towboat 阅读(5) 评论(0) 推荐(0) 编辑
非对称加密与 jwt
摘要:公钥加密 的 数据只有私钥可以解密 ,反之 jwt :验证的服务器保存 私钥 , 公钥 通过一些方式传递给其他服务器 ,如配置中心 阅读全文
posted @ 2024-10-13 01:04 towboat 阅读(11) 评论(0) 推荐(0) 编辑
mysql update 语句执行过程
摘要:开启事务,把旧的内存内容写undo_log , 然后更新内存数据,写redo_log , 硬盘数据的同步稍后执行(WAL技术) 写binlog , 只写到bin_cache 两阶段提交(过程中binlog数据同步到硬盘) 阅读全文
posted @ 2024-10-11 22:47 towboat 阅读(8) 评论(0) 推荐(0) 编辑
回表查询与覆盖索引
摘要:二级索引的叶子节点有主键id和查询使用的索引值(a,b), 如果有查询的字段(select a,b where a=2,c=2. , 查询字段a,b,c) 没有被查询索引值完全包含,就需要用主键id去聚簇索引树里查询得到完整记录(回表查询 否则就已经在叶子节点得到需要的字段信息(覆盖索引) 一个索引 阅读全文
posted @ 2024-10-11 16:34 towboat 阅读(6) 评论(0) 推荐(0) 编辑
hashmap 扩容原理
摘要:arr [ capacity*2 ] 每个元素(有一个hash值) ,对应的新位置 计算如下 (hashcode & oldCapacity)。 oldCapacity只有一个最高位的1,和hash对应位 & 为1,则 位置+=oldCapacity, 否则不变 阅读全文
posted @ 2024-10-10 18:27 towboat 阅读(2) 评论(0) 推荐(0) 编辑
rabbitmq 记录
摘要:消息: 消息体, topic routing key, binding key ,exchanger 多个消费者可以订阅同一个队列 ,消息会被分摊 交换器的模式有 direct topic fanout( 类似广播,不看routing key) 比较下相似的direct,topic, topic可以 阅读全文
posted @ 2024-10-08 01:44 towboat 阅读(7) 评论(0) 推荐(0) 编辑
事务传播行为
摘要:主要用于控制在方法调用过程中是否需要重新开启一个新的事务,还是沿用已有的事务 假设a调用b 1.REQUIRED ,作为默认的传播行为,B 方法在事务环境中执行。具体情况如下: 如果 A 方法开启了事务:B 方法会加入 A 的事务,共享同一个事务环境。 如果 A 方法没有开启事务:B 方法会新建一个 阅读全文
posted @ 2024-10-07 16:47 towboat 阅读(7) 评论(0) 推荐(0) 编辑
spring 记录
摘要:ioc:控制反转,不需要new 对象,由ioc容器来实例化对象(包括创建,依赖注入) aop:把和业务无关,诸如日志记录这些功能封装起来,提高代码的复用性 aop使用情景: @Before("execution(* chapter04.concert.Performance.perform(..)) 阅读全文
posted @ 2024-10-06 19:59 towboat 阅读(5) 评论(0) 推荐(0) 编辑
jvm 记录
摘要:jvm内存模型 包括 本地方法栈,虚拟机栈, 堆:保存对象,数组 程序计数器:指出了进程下一条指令的位置,线程切换后恢复到正确位置) 元空间:保存类信息,常量,静态变量 java内存泄漏常见 : 静态变量,事件监听没有关闭 内存溢出: 栈溢出, 堆溢出 堆: 新生代 eden区 minor GC > 阅读全文
posted @ 2024-10-06 16:24 towboat 阅读(5) 评论(0) 推荐(0) 编辑
mybatis 记录
摘要:嵌套对象映射 <resultMap id="userResultMap" type="com.example.User"> <id property="id" column="user_id"/> <result property="name" column="user_name"/> <resul 阅读全文
posted @ 2024-10-06 01:36 towboat 阅读(3) 评论(0) 推荐(0) 编辑
nginx 记录
摘要:正向代理:代理服务器代理客户端,客户端对目标服务器不可见 反向代理: 代理服务器代理目标服务器,客户端不知道访问的具体哪台服务器 阅读全文
posted @ 2024-10-06 00:40 towboat 阅读(4) 评论(0) 推荐(0) 编辑
零拷贝
摘要:常用于网络文件传输 正常的网络传输 4次 上下文切换与拷贝 如下图 而零拷贝使用诸如 mmap+write 或 sendfile ,只有 一次系统调用(sendfile) , DMA复制(2次)和 内核缓冲区和网络缓冲区 的复制(1次) sendfile 允许数据直接从一个文件描述符发送到另一个文件 阅读全文
posted @ 2024-10-05 16:43 towboat 阅读(5) 评论(0) 推荐(0) 编辑
CAS操作
摘要:代码大概如下 do { old_value = atomic_load(&c->count); // 获取当前值 //1 } while (!atomic_compare_exchange_weak(&c->count, &old_value, old_value + 1)); 1处c->count 阅读全文
posted @ 2024-10-05 00:22 towboat 阅读(4) 评论(0) 推荐(0) 编辑
netty 记录
摘要:采用nio:同步非阻塞的io模型 bio: 处理多个客户端请求时,每个客户端连接需要一个独立的线程来处理 I/O 操作,会大量消耗资源 nio组成: buffer ,selector,channel nio采用selector,监听socket channel 上是否有读写操作的事件,然后才执行读写 阅读全文
posted @ 2024-10-04 14:32 towboat 阅读(10) 评论(0) 推荐(0) 编辑
计算机网络 八股记录
摘要:http请求报文,响应报文 301 Moved Permanently 和 404 Not Found 301,服务器会返回新的 URL,客户端应该用新的 URL 进行访问。 502 错误意味着代理服务器和上游服务器无法通信,比如上游服务器故障 504 Gateway Time-out 上游服务器响 阅读全文
posted @ 2024-10-02 14:29 towboat 阅读(17) 评论(0) 推荐(0) 编辑
bean相关
摘要:单例 生命周期 在bean加载/销毁前后,如果想实现某些逻辑? xml配置+类内实现方法init_method ,destroy_method Bean注入和xml注入 2个方法来配置bean ? 1 . 解析xml/类路径扫描 2.注册 Bean 定义 3.依赖注入(根据bean的配置) 阅读全文
posted @ 2024-10-01 22:00 towboat 阅读(2) 评论(0) 推荐(0) 编辑
解决spring循环依赖:三级缓存
摘要:1. 完全初始化的单例对象缓存(singletonObjects) 功能: 这个缓存用于存储已经完全初始化并可以使用的单例 bean 实例。 存储内容: 当一个 bean 完成初始化,包括所有的依赖注入和后处理之后,它会被放入这个缓存中。之后,对该 bean 的请求将直接返回这个缓存中的实例。 2. 阅读全文
posted @ 2024-10-01 14:41 towboat 阅读(44) 评论(0) 推荐(0) 编辑
spring aop记录
摘要:使用: import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.an 阅读全文
posted @ 2024-10-01 12:53 towboat 阅读(4) 评论(0) 推荐(0) 编辑
jdk动态代理
摘要:代理机制: 1. 创建代理对象, Proxy.newProxyInstance 时,JVM 会: 生成代理类的字节码:使用字节码技术生成一个代理类,该代理类实现了所提供的接口。这种代理类继承自 java.lang.reflect.Proxy 并实现了指定的接口。 动态加载代理类:将生成的代理类加载到 阅读全文
posted @ 2024-10-01 12:24 towboat 阅读(6) 评论(0) 推荐(0) 编辑

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