小破站,记录和学习
mybatis的实现原理 mybatis的实现原理
MyBatis是一个流行的ORM框架,面向接口编程的方式,大大简化了数据库的操作。MyBatis的底层操作封装了JDBC的API,MyBatis的工作原理以及核心流程与JDBC的使用步骤一脉相承,MyBatis的核心对象(SqlSessio
2022-02-13
分区分表分库 分区分表分库
互联网时代,传统应用都有这样一个特点:访问量、数据量都比较小,单库单表都完全可以支撑整个业务。随着业务的发展和用户规模的迅速扩大,对系统的要求也越来越高。因此传统的MySQL单库单表架构的性能问题就暴露出来了。而有下面几个因素会影响数据库性
2022-02-09
并发编程AQS详解 并发编程AQS详解
AQS全名:AbstractQueuedSynchronizer,是并发容器J.U.C(java.util.concurrent)下locks包内的一个类。它实现了一个FIFO(FirstIn、FisrtOut先进先出)的队列。底层实现的数
2022-01-08
Synchronized之轻量级锁 Synchronized之轻量级锁
在偏向锁出现竞争后,加锁失败的线程会把Mark Word中的锁状态改为轻量级锁,这样其他线程再来时就会走向轻量级锁的加锁流程。下面开始轻量级锁获取流程分析,代码在bytecodeInterpreter.cpp#1816。 CASE(_mon
2021-05-09
Synchronized之偏向锁 Synchronized之偏向锁
synchronized 是我们日常使用频率很高的关键字,它是控制线程安全的同步锁。虽然开发中一直使用,但对于它的实现原理一直理解不够透彻,在面试中也是经常被问,对于一些高级资深的岗位来说,不仅仅只是简单的问一下synchronized 的
2021-04-30
Java的对象头MarkWord Java的对象头MarkWord
在Java中任意对象都可以用作锁,因此必定要有一个映射关系,存储该对象以及其对应的锁信息(比如当前哪个线程持有锁,哪些线程在等待)。一种很直观的方法是,用一个全局map,来存储这个映射关系,但这样会有一些问题:需要对map做线程安全保障,不
2021-04-25
InnoDB存储引擎 InnoDB存储引擎
InnoDB是事务安全的mysql存储引擎,设计上采用了类似于Oracle数据库的架构。InnoDB存储引擎是多线程模型,其后台有多个不同的后台线程,负责处理不同的任务 Master Thread:主要负责将缓存池中的数据异步刷新到磁盘,
2021-04-04
Netty的线程模型 Netty的线程模型
Netty是一个异步、基于事件驱动的网络应用程序框架,其对 Java NIO进行了封装,大大简化了 TCP 或者 UDP 服务器的网络编程。它的设计参考了许多协议的实现,比如 FTP,SMTP,HTTP 和各种二进制和基于文本的传统协议,因
2021-01-10
RPC与gRPC框架 RPC与gRPC框架
RPC的语义是远程过程调用,在一般的印象中,就是将一个服务调用封装在一个本地方法中,让调用者像使用本地方法一样调用服务,对其屏蔽实现细节。而具体的实现是通过调用方和服务方的一套约定,基于TCP长连接进行数据交互达成。上面的解释似云里雾里,仅
2020-11-15
Servlet的本质 Servlet的本质
作为一个Web开发者,Servlet是每天工作过程中都要打交道的老伙伴了。尽管现在随着Spring Boot的流行,几乎不需要再实现Servlet接口了,但是Spring Boot默认Web容器是Tomcat,Servlet仍然在我们看不见
2020-11-08
4 / 7