自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RocketMQ源码级实现原理

RocketMQ实现原理笔记

2022-11-02 11:54:54 221

原创 金融里面的那些事儿

发行用户使用的银行卡的银行叫发卡行,发行商户使用的pos机的银行叫收单行,用户刷卡支付的时候,收单行先将资金垫付给商户,事后再统一找发卡行要回来,这样一来收单行和发卡行便产生了债权债务关系。用通俗的话解释,清算就是有两方因为某项合作业务,合作形式是先完成交易事后进行支付,导致一方欠了另一方一笔钱,形成债务关系,并最终通过某种方式偿还了这笔钱的过程。第二步是结清关系,根据计算出的应收应付结果,完成资金交割转移,结清债权债务,这一步专业叫“里面有通过发卡行与收单行的例子,解释清算的由来,以及银联的由来。

2024-07-23 21:36:49 219

原创 消费金融系统开发回忆录

整个支付链路上的功能支付系统应该有:账户管理、渠道管理、支付管理、对账管理、清算管理、结算管理 一笔支付订单,在支付系统侧就是要记录清楚,谁发起的、对哪个商品进行支付、通过哪个渠道支付、支付时间、支付结果等 展示: SS IQP 流程:APS TDL TDC TC CORE FA MM RMS/IRISK/RMFP 核

2024-07-20 08:58:03 685

原创 信贷业务知识学习

个人不可循环授信额度:授信100w,第一次贷款了50w,第二次再去贷30w不用重复授信,此时额度还剩20w,如果你此时把80w还了,但是你的额度还是20w,而不是100w。先授信,后用信:根据你提供的信用资质,你提供的抵押物的价值等,给你评估一个授信额度,授信额度出来以后,你才能去申请菜款,所以叫做先申请授信额度,然后使用授信额度。等额本息:就是每个月还的钱是一样的,比如每个月还2000,这2000中有本金有利息,每个月的利息是越来月底,也就意味着这2000块中,每个月的本金是越来越多。

2024-07-19 23:40:09 422

原创 关于大数据技术栈的一些总结

它就是hadoop,因为hadoop它是开源的,然后阿里、CDH、CDP等等大数据平台厂商,他们就是再去把它封装,封装的更好用一点,那我们就省的去去安装hadoop、安装Spark,安装hive、然后还要考虑他们的兼容性啊,系统的兼容性啊,还要提升他的计算效率呀,这些都厂商来处理,因为这些他们很专业,就是相当于他是专门就是做大餐的,然后我们自己做一顿就没那么好吃。市场上都是把菜把米都做好了,就我们买回来,然后去炒菜就可以了,这种都是他们都是高效低成本,然后专业化的,那我们再自己去搞一套就。

2024-07-19 23:38:46 308

原创 支付系统考点

1. 支付宝或者微信的支付是异步的,他的系统请求支付宝进行支付,支付宝响应成功,只代表支付宝成功接受到了你的支付请求,后续的实际支付操作支付宝还要异步调很多渠道,比如银行卡就要和对应的银行系统交互,比如账户余额就要和支付宝的余额系统进行交互,比如花呗可能还要调花呗的系统,当支付宝和这些渠道交互成功后才是实际的扣款,这时支付宝才能回调实际的支付结果给他。的最终一致性解决方案,轮训那些在支付中,但是还没有扭转到支付成功或者支付失败的支付订单,去主动调用支付宝或者微信查询支付结果。

2024-07-19 23:29:25 217

原创 RocketMQ源码级实现原理-内存映射

而之后访问数据时发现内存中并无数据而发起的缺页异常过程,可以通过已经建立好的映射关系,只使用一次数据拷贝,就从磁盘中将数据传入内存的用户空间中,供进程使用。36行代码,是释放内存映射的这片虚拟地址空间(删除这段内存映射,也就是从页表中把这段映射删除),否则当前进程的别的线程,就不能再使用这片虚拟地址空间了。可以看到第33行,就在使用指针的方式,来操作这片虚拟内存,因为是mmap映射下的这片内存,所以操作了这片虚拟地址空间,那么对应的磁盘文件也会被修改。

2024-07-18 21:23:25 862

原创 RocketMQ源码级实现原理-存储系统概要设计

存储逻辑层,比如CommitLog类中出了对外暴露putMessage()的接口外,还需要提供一些内部类,比如FlushRealTimeService这类的刷盘线程逻辑。1. ConsumeQueue里面放的是一个个索引条目,索引条目有三个字段:CommitLogOffSet ,MessageSize、TagHashCode。文件写入速度,顺序读写 3g/s左右,随机读写2g/s左右(内存条的读写速度是10个g左右)一个好的文件系统,它的性能肯定是要优于分布式KV和newSQL;

2024-07-16 23:39:54 191

原创 RocketMQ源码级实现原理-消息发送流程与高可用设计

如果本地缓存中没有找到topic路由信息,则发送远程请求去nameserver中查找当前topic对应的路由信息,查找到了则直接选择topic下的一个queue发送消息。一般,一台物理机上只会有一个MQClientInstance实例,一个MQClientInstance实例中保存了不同的producerGroup的producer,也保存了不同consumerGroup的consumer。RocketMQ的一个好的实践:命令细化,每个功能都有一个唯一的命令与之对应。1. 236行启动了很多的定时任务。

2024-07-15 20:57:10 160

原创 Gradle使用

Gradle初体验。

2023-12-28 13:28:08 376

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

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

2023-12-04 09:59:49 624

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

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

2023-11-30 19:19:31 1280

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

占位。

2023-11-17 09:48:52 86

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

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

2023-11-16 19:05:44 267

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

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

2023-11-15 17:02:08 1062

原创 Spring源码系列-Spring事务

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

2023-11-11 19:39:34 133

原创 Spring源码系列-Spring AOP

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

2023-11-09 08:34:22 114

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

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

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

原创 配置中心随记

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

2023-10-24 20:23:37 59

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

一天。

2023-09-10 21:45:42 262

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

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

2023-07-05 09:27:54 355

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

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

2023-06-27 20:44:08 402

原创 并发编程-注册中心

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

2023-06-26 09:57:37 149

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

占位。

2023-06-08 21:19:10 64

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

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

2023-06-06 16:45:29 124

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

占位。

2023-06-06 12:53:42 68

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

消费金融,交易异步。

2023-06-06 11:58:31 139

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

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

2023-06-06 11:47:38 121

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

定时任务+spring batch。

2023-06-06 11:45:21 52

原创 设计模式笔记

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

2022-09-14 21:05:28 819

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

多线程编程实战案例

2022-08-09 13:47:57 276

原创 何为高并发

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

2022-03-29 14:05:48 950

转载 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 236

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

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

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

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

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

2021-11-24 08:59:38 2286

原创 Java开发基础技术板块

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

2021-11-05 11:18:17 118

原创 Java事务板块

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

2021-11-04 16:52:26 152

原创 多线程编程优秀文章

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

2021-11-04 10:51:00 271

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

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

2021-10-27 16:29:08 220

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

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

2021-09-29 17:04:38 960

空空如也

空空如也

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

TA关注的人

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