后端架构技术
文章平均质量分 75
后端架构技术
原味的你
这个作者很懒,什么都没留下…
展开
-
mybatis-plus通用业务分页查询封装
mybatis-plus通用业务分页查询封装原创 2022-09-29 12:32:42 · 2094 阅读 · 0 评论 -
Linux内核零拷贝底层原理
传统拷贝模式写过程:用户空间到内核空间:用户态切换到内核态,调用CPU Copy进行一次数据拷贝,拷贝到内核空间缓存。由DMA中断去触发,进行一次DMA Copy,把内核空间缓存数据拷贝到磁盘/网络中。完成之后,就不再发生拷贝了,就由内核态切换回用户态了。此时经历:2次上下文切换,1次CPU拷贝,1次DMA拷贝。读过程:由用户空间发送read()命令到内核空间,此时经历用户态切换到内核态。由DMA中断触发,使磁盘/网络发生一次DMA Copy,把数据拷贝到内核缓存空间。再由内核缓存原创 2022-01-07 11:21:53 · 1221 阅读 · 0 评论 -
CountDownLatch底层源码分析
先写一个简单的demopublic class Test7766 { static CountDownLatch countDownLatch = new CountDownLatch(1); public static void main(String[] args) { Thread t1 = new Thread(()->{ try { System.out.println(Thread.currentTh原创 2022-01-06 20:03:36 · 343 阅读 · 0 评论 -
ReentrantLock锁底层源码分析
主要针对lock()、unlock()、锁的可重入性进行源码分析先来看一个测试代码public class Test7878 { public static ReentrantLock lock = new ReentrantLock(true); public static void main(String[] args) { Thread t1 = new Thread(()->{ lock.lock();原创 2022-01-06 18:41:59 · 458 阅读 · 0 评论 -
微服务注册中心Nacos底层源码分析
Nacos版本1.3.1启动console项目启动配置修改为单机启动-Dnacos.standalone=trueNacos服务注册与发现启动nacos服务端,启动nacos客户端,注册到nacos服务端查看一下控制台输出日志客户端2022-01-03 23:01:18.864 INFO 14756 --- [ main] c.a.c.n.registry.NacosServiceRegistry : nacos registry, DEFAULT_GROUP原创 2022-01-04 21:34:05 · 1464 阅读 · 0 评论 -
分布式事务Seata框架底层源码分析
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。TC:事务管理器TM:事务开始服务RM:事务参与过程的其他服务底层实现流程TM和RM都连接到我们的事务协调器TC。TM和RM服务的数据源都被Seata代理,执行语句的前后会保存两条记录,一条是执行前的记录,一条是执行后的记录,是方便后期可以逆向的生成sql去回滚事务。具体记录存放在seata的undo_log表中。TM在使用RPC-Feign远程调用的时候,在ThreadLocal中获取xid。RM原创 2022-01-04 19:41:01 · 1056 阅读 · 0 评论 -
微服务注册中心Eureka核心源码分析
服务注册源码分析查看一下eurekaClient端启动注册的日志信息2022-01-03 02:00:34.662 INFO 8184 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_ORDER-SERVICE/DESKTOP-QP9T922:order-service:9001: registering service...我们根据日志,找到DiscoveryClient这个类对应的原创 2022-01-03 17:21:22 · 854 阅读 · 0 评论 -
SpringAop代理模式底层核心源码分析
aop核心的bean是什么?一般情况会使用@EnableAspectJAutoProxy注解来使Aop注入到我们Spring的IoC容器中,那这个注入的类是啥呢测试代码如下@Configuration@EnableAspectJAutoProxypublic class MyConfig {} public static void main(String[] args) { AnnotationConfigApplicationContext context = new原创 2021-12-31 21:52:25 · 464 阅读 · 0 评论 -
Spring框架Ioc容器加载流程及Bean的生命周期源码分析
Spring源码分析-IoC容器原创 2021-12-30 23:56:57 · 716 阅读 · 0 评论 -
RocketMQ解决分布式事务问题
现模拟一个分布式事务的小例子给出两个服务:order-service:订单服务stock-service:库存服务库存服务表结构如下CREATE TABLE `stock_info` ( `stock_id` bigint(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `num` bigint(11) DEFAULT NULL, PRIMARY KEY (`stock_id`)) ENGINE=Inn原创 2021-12-16 23:20:55 · 989 阅读 · 0 评论 -
LinkedList底层源码分析
LinkedList源码分析add()public boolean add(E e) { linkLast(e); return true;}继续跟到linkLast()这个方法void linkLast(E e) { final Node<E> l = last; final Node<E> newNode = new Node<>(l, e, null); last = newNode; if (l == n原创 2021-08-09 22:11:19 · 65 阅读 · 0 评论 -
ArrayList底层源码分析
ArrayList底层源码分析ArrayList底层,主要是由数组实现看代码List<String> list = new ArrayList<>();我们new出一个ArrayList()后,看看底层构造函数做了哪些事情private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};transient Object[] elementData;public ArrayList() {原创 2021-08-07 16:49:01 · 112 阅读 · 0 评论 -
MySQL底层索引优化
MySQL索引调优原则禁止join超过三张表联合索引左前缀法则禁止回表查询MySQL查询EXPLAIN-type级别All 全表扫描,最原生的sql状态,有很大的优化空间index 另一种形式的全表扫描,扫描顺序是按照索引的顺序,扫描根据索引然后回表查询数据range 指的是有范围的全表扫描,相对于index有了范围,要优于indexref 查询条件使用了索引,而没用主键和unique,虽然用烂了索引但索引列的值不唯一,有重复ref_eq 比ref好在它原创 2021-08-02 10:15:12 · 243 阅读 · 0 评论 -
Java9~Java11常用新特性整合
本地变量类型判断var str = "hello Java11";System.out.println(str);//hello Java11var list = new ArrayList<String>();list.add("hello Java11");System.out.println(list.get(0));//hello Java11可以使用var,而不用写具体的类型字符串新特性isBlank()// 判断空白字符串String str = " ";原创 2021-08-01 14:49:49 · 320 阅读 · 0 评论