自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 收藏
  • 关注

原创 RocketMQ源码级实现原理

RocketMQ实现原理笔记

2022-11-02 11:54:54 170

原创 Gradle使用

Gradle初体验。

2023-12-28 13:28:08 360

原创 MySQL性能调优-2-实际优化案例

关于SQL优化的思路,一般都是使用执行计划看看是否用到了索引,主要可能有两大类情况:对业务字段建立了二级联合索引,但是MySQL错误地觉得走主键聚族索引全表扫描效率更高,而没有走二级索引走二级索引,但是引起了几万、几十万的回表,此时还不如利用聚簇索引进行正序或者倒序的全表扫描,配合limit n,全表扫描只需要扫到符合条件的n条就停止。

2023-12-04 09:59:49 506

原创 电商营销场景的RocketMQ实战01-RocketMQ原理

物理存储结构主要是为了优化写入和读取, 都是为了写入、存储 、 读取, 这三块去做一个设计的,写入尽可能高吞吐,高并发,如何让存储可以有效的进行数据结构组织服务于我们的写入和读取, 如何让高并发的读取可以有效的进行,broker主要要做到的一些事情1 、 写入优化。

2023-11-30 19:19:31 1183

原创 Spring Cloud Alibaba微服务组件-Nacos-配置中心

占位。

2023-11-17 09:48:52 72

原创 Spring Cloud Netflix微服务组件-Hystrix

上上图@HystrixCommand注解种鸽所有信息,默认就会被保存在这个元信息MetaHolder中去,spring的代码都是很统一的,这种注解的元数据一般都是用MetaXxxxx来保存的。大体流程:用户在调用findById()方法时,hystrix写的AOP切面类会拦截这个注解,拦截这个注解后会初始化一个GenericCommand命令,在初始化这个GenericCommand命令内部,就会通过这些线程池的配置,来初始化该命令特有的执行线程池。

2023-11-16 19:05:44 235

原创 Spring Cloud Netflix微服务组件-Eureka

分区容忍是能容忍一个或一部分节点挂掉后,整体系统也能正常工作(就是别的节点还是活着的),所以分布式系统中P是必须要有的。比如数据库主从架构,主从两个节点之间需要数据同步,主挂了,从还能提供服务,这就是分区容错的体现可用性是,每个请求都能得到正常的响应(不要求读到最新值)p分区容忍,既然是分布式系统那么分区容忍是逃不掉的,剩余的一致性和可用性相互矛盾,只能二选一有没有保证CA的系统,单机就是。因为单机没有分区,单机也就是只有一个节点,那么也就不需要网络通信,。

2023-11-15 17:02:08 1027

原创 Spring源码系列-Spring事务

540行,先通过扫描配置类,把配置类中用过通过@Bean自定义的Bean后置处理器,与通过Import注册到ioc容器中的第三方组件自己的Bean后置处理器等多种形式的处理器,通过在第543行中,来将它们全部从BeanDefinition,调用getBean方法实例化成处理器,并存入Ioc容器中的专有list中去。而事务的解析切面就简单了,Spring自己就提供了一个Advisor,都不需要去解析,直接就能拿到,拿到后事务的第一步解析切面的步骤就完成了。事务的增强逻辑是内置的,也就是spring自己写的。

2023-11-11 19:39:34 120

原创 Spring源码系列-Spring AOP

aop的运行原理就是,先把切面所有通知变成统一的Advisor,然后通过AspectJ的表达式匹配算法,判断出当前bean与哪些Advisor匹配,将这些匹配的Advisor们保存起来,在创建jdk动态代理对象时,将这些匹配的匹配的Advisor们,传入ReflctiveMethodInvocation中,然后就是通过递归调用,依次调用各个Advice,最后调到目标方法,然后再一步步的返回。有了上面的第17行,就能实现上上图中,select中调用的insert方法也是被动态代理过的方法。

2023-11-09 08:34:22 78

原创 Spring源码系列-框架中的设计模式

责任链执行器中有一个proceed(),方法内遍历执行负责人的invoke()方法,invoke方法以执行器作为参数:invoke(执行器),invoke(执行器)处理完业务后,执行器又调用proceed()方法,将索引移到下一个负责人位置。在方法体中,可以通过不同对Event类的判断来进行相应的处理。通过Spring接口的暴露,在实例化bean的阶段我们可以进行一些额外的处理,这些额外的处理只需要让bean实现对应的接口即可,那么spring就会在bean的生命周期调用我们实现的接口来处理该bean。

2023-11-09 08:32:03 240 1

原创 配置中心随记

监听器动态java反射更新bean属性值。配置定时刷新以及长轮询查询。

2023-10-24 20:23:37 47

原创 13-RocketMQ主从同步(HA实现)源码原理

一天。

2023-09-10 21:45:42 221

原创 从零开始开发亿级流量电商优惠券项目实战

2. **优惠券生成模块**:这个模块应该能够创建新的优惠券,并设定相应的参数,比如优惠券的有效期、可用商品或类目、优惠幅度(比如是打折还是直接减价)、优惠券数量限制等。6. **报表和分析模块**:分析优惠券的使用情况,包括哪些优惠券被使用的最多,哪些用户最常使用优惠券等。5. **优惠券核销模块**:当用户想要使用优惠券时,系统需要验证优惠券的有效性,包括是否在有效期内、是否符合使用条件等。1. **用户管理模块**:存储和管理用户的信息,包括用户的优惠券使用历史和当前可用的优惠券。

2023-07-05 09:27:54 323

原创 并发编程-Hadoop之edits_log批量刷磁盘

复杂一点的多线程编程场景,总结起来也就是。

2023-06-27 20:44:08 374

原创 并发编程-注册中心

核心就是有一个RegisterClient内部会起一个HeartbeatWorker线程,负责每隔30s往注册中心推送一次心跳、 内部会起一个后台线程,通过sleep 30s的方式,每30s去注册中心拉取一次注册表。微服务的注册表定时拉取机制实现。

2023-06-26 09:57:37 138

原创 并发编程-内存级缓存刷新框架

占位。

2023-06-08 21:19:10 49

原创 并发编程-生产者消费者级联的性能优化

电子发票的生成,用户先提交发票生成的需求,然后异步执行发票生成逻辑,生成成功后再短信或者微信通知用户。

2023-06-06 16:45:29 100

原创 并发编程-内存合并请求

占位。

2023-06-06 12:53:42 57

原创 并发编程-异步任务执行框架

消费金融,交易异步。

2023-06-06 11:58:31 127

原创 并发编程-并行任务执行框架

反正,这个并行任务执行框架的核心逻辑,就是把每个item都拆散投入到了线程池的不同的线程中了,而不是分片的思想,可能10个或者100个item作为一个分片,进去一个线程。内部持有一个线程池,给出一个ItemProcessor接口,让客户实现每一个元素的处理逻辑,客户自己决定元素处理成什么样算成功,什么样算失败,什么样抛出异常。由于需要对任务的执行进度,执行情况进行管理,实时的监控,所以,需要对每一组item用一个统一的jobName进行管理。

2023-06-06 11:47:38 108

原创 领域驱动开发-数据迁移

定时任务+spring batch。

2023-06-06 11:45:21 41

原创 设计模式笔记

三大类设计模式创建者模式结构型模式行为型模式创建者模式 - 工厂模式重点掌握: 简单工厂 + 配置文件的实现方式也就是ioc的最基本实现原理

2022-09-14 21:05:28 691

原创 并发编程-内存队列合并与线程同步阻塞唤醒

多线程编程实战案例

2022-08-09 13:47:57 253

原创 何为高并发

小红书-内卖秒杀项目总结_yuyanggo的博客-CSDN博客1)守住数据库的底线:MySQL订单入库限流,避免MySQL被压垮2)将商品数据提前初始化到redis中,利用redis缓存在实际下单前做好各种校验3)用isMember函数(Set),记录用户已经购买过哪些商品,购买过的不许再次购买...

2022-03-29 14:05:48 938

转载 IO多路复用原理

课程目录:基础知识点1: Linux操作系统中断1.1:什么是系统中断?(软中断 / 硬中断)1.2:系统中断,内核会做什么事?1.3:再深一点点,硬件中断触发的过程(ps:8259A芯片中断控制器的工作流程)基础知识点2:Socket基础2.1:Java 使用 Socket 编程Demo,带你再简单回忆一下Socket API。2.2:Socket 读/写 缓冲区工作机制基础知识点3:系统调用,用户态 内核态3.1:为什么要有这两种状态?(用户栈 / 内核栈)3.2

2022-03-06 21:37:44 221

原创 实际场景中的多线程并发编程案例

一、CountDownLatchCountDownLatch的用法CountDownLatch典型用法1:某一线程在开始运行前等待n个线程执行完毕。将CountDownLatch的计数器初始化为n new CountDownLatch(n) ,每当一个任务线程执行完毕,就将计数器减1 countdownlatch.countDown(),当计数器的值变为0时,在CountDownLatch上 await() 的线程就会被唤醒。一个典型应用场景就是启动一个服务时,主线程需要等待多个组件加载完毕,之后再继

2021-12-06 09:57:45 6824 1

原创 RocketMQ源码级别面试题板块

讲述rocketmq线程模型的设计优势,做到线程池隔离图解Kafka线程模型及其设计缺陷

2021-11-24 08:59:38 2156

原创 Java开发基础技术板块

1. 优秀文章合集1.1 讲述Java集合的普通便利删除与迭代器删除这道Java基础题真的有坑!我求求你,认真思考后再回答。

2021-11-05 11:18:17 107

原创 Java事务板块

1 优秀文章合集1.1@Transactional注解如果想要生效,需要调用被Spring动态代理后的类实例的方法事务没回滚?来,我们从现象到原理一起分析一波!

2021-11-04 16:52:26 142

原创 多线程编程优秀文章

1 优秀文章合集1.1 学习CompletionService ,以及它的思想送你一个并发编程的奇淫巧技,舒服的很...

2021-11-04 10:51:00 233

原创 关于Java线程池的前前后后

一个线程池中的线程异常了,那么线程池会怎么处理这个线程?有的线程它死了,于是它变成一道面试题

2021-10-27 16:29:08 207

原创 用户请求从Tomcat如何走进SpringMVC

什么是Web容器早期的 Web 应用主要用于浏览新闻等静态页面,HTTP 服务器(比如 Apache、Nginx)向浏览器返回静态 HTML,浏览器负责解析 HTML,将结果呈现给用户。随着互联网的发展,我们已经不满足于仅仅浏览静态页面,还希望通过一些交互操作,来获取动态结果,因此也就需要一些扩展机制能够让 HTTP 服务器调用服务端程序。于是 Sun 公司推出了 Servlet 技术。你可以把 Servlet 简单理解为运行在服务端的 Java 小程序,但是 Servlet 没有 main 方

2021-09-29 17:04:38 849

原创 RocketMQ应用篇

topic和queue的关系:Queue是组成Topic的更小单元

2021-09-23 17:47:31 399

原创 从@Async注解的实现原理看Sring Aop

通过博主 “why技术”的这篇文章:https://mp.weixin.qq.com/s/SdxnKw94H6V_UBD9oe6DGQ学到了很多解决问题,看源码的思路;

2021-09-09 16:42:11 358

原创 【javaweb】自己动手实现简易的Tomcat2

一个服务器server中可以存放jd,oa这样的多个web应用;Web应用是通过sun公司制定的servlet接口与Tomcat,JBoss等多个服务器解耦合的所以,同一个web应用,就可以运行在多种不同的服务器上;(Tomcat,JBoss等服务器就是通过sun制定的Servlet接口来找到要执行的servlet类,从而启动web应用)Java程序和数据库也是 JDBC接...

2019-04-10 19:12:40 259

原创 【javaweb】自己动手实现简易的Tomcat

单线程版本:转载自:https://blog.csdn.net/weixin_39033443/article/details/83901722分以下几个步骤:(1)提供Socket服务(2)把请求和响应封装成request/response(3)进行请求的转发代码实现如下:1、工程截图:2、封装请求对象:通过输入流,对HTTP协议进行解析,拿到了HTTP请求头的方法和...

2019-04-08 21:16:50 784

原创 自己动手实现简易的springmvc

自定义注解MyController.javapackage cn.huangyan.spring.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;impor...

2019-04-04 19:52:20 500 1

原创 并发编程-多线程编程实战指南

1.8之多线程文件下载package com.ch1;import io.github.viscent.mtia.util.Debug;import io.github.viscent.mtia.util.Tools;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import jav...

2019-04-03 14:30:48 343

原创 LeetCode之226. Invert Binary Tree

Invert a binary tree.Example:Input: 4 / \ 2 7 / \ / \1 3 6 9Output: 4 / \ 7 2 / \ / \9 6 3 1自己的代码:(递归)Runtime:0 ms, faster than100.00%o...

2019-03-31 21:21:33 160

原创 LeetCode之26. Remove Duplicates from Sorted Array

Given a sorted arraynums, remove the duplicatesin-placesuch that each element appear onlyonceand return the new length.Do not allocate extra space for another array, you must do this bymodifyi...

2019-03-25 22:40:14 113

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除