自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RocketMQ源码级实现原理

RocketMQ实现原理笔记

2022-11-02 11:54:54 419

原创 交易所-资金费率系统

进行资金费率结算时,是不区分全仓还是逐仓仓位的。

2026-03-17 16:25:25 3

原创 交易所-域划分的一些思考

2026-03-14 13:08:48 14

原创 交易所-充值与提现

这两个系统之间为什么会选择用MQ来进行数据传递呢,我觉得可能的原因是因为链上操作是比较慢的,所以ex-finance只需要给ex-wallet一个通知,然后就让ex-wallet自己去处理链上的操作,后续处理完了给ex-finance一个响应就好了?

2026-03-13 16:34:08 10

原创 交易所-合约交易-撮合引擎

2026-02-27 13:51:27 17

原创 交易所-合约交易-清算模块

内部对冲 → 剩余仓位挂限价单 → 卖不掉就保险基金扛着 → 保险基金耗尽 → ADL。

2026-02-25 12:20:50 31

原创 交易所-合约交易-概览

强平单以市价卖出,进一步压低价格,这句话说的是,比如一部分多头的强平价是49000,这部分人在价格到49000时,触发强平,被系统要求以市价卖出,此时的买一价是48500,那么当前这批用户实际上,就会被以48500的价格卖出?

2026-02-24 14:03:16 60

原创 交易所-Finance-账户部分

现货下单流程 用户下单 → 冻结可用余额 → 撮合成交 → 扣除冻结 + 增加买入币种2. 核心业务流程。

2026-02-23 13:22:30 691

原创 交易所-做市商-账户部分

安全考虑:即使 API Key 泄露了,黑客拿到 Key 也没用,因为他的服务器 IP 不在白名单里,请求会被拒绝。❯ 黑客进入了你的内网,用你的 IP 出口 ,也就是说,我内网的网关,对应在外网的IP地址,对吗。✅ 在量化服务器1(192.168.1.100)上用 Key 1 发交易请求 → 成功。❌ 在量化服务器2(10.0.0.50)上用 Key 1 发交易请求 → 被拒绝。这把钥匙(API Key)只能在指定的地点(IP 地址)使用。- 交易所的响应会发到被伪造的 IP(你的服务器)

2026-02-04 18:06:46 311

原创 基于DDD开发的KYC用户实名认证

│ 3. Service 层变薄 │ Service 100+ 行混杂所有逻辑 │ Service 只负责协调,15 行搞定 │ 省 85 行 │。│ 1. 验证规则集中 │ 年龄验证在 10 个地方重复 │ 在聚合根中写一次,到处复用 │ 省 30-50 行 │。throw new KycDomainException("只有审核中的申请可以批准,当前状态:" + this.status);

2026-01-29 10:25:56 894

原创 KYC认证-全流程设计

对于复杂流程,有一个"主表/总表"来统管整个流程,确实是最佳实践。但不是绝对的,要看具体场景。

2026-01-23 12:13:11 930

原创 Sumsub-kyc认证接入

创建回调钩子Sumsub的网络钩子类型(Webhook Type)是指不同类型的通知事件分类。当你在Sumsub后台配置Webhook时,需要选择你希望接收哪些特定类型的事件通知。

2025-12-19 15:40:31 1021

原创 交易所-充值与提现

充值。

2025-12-12 16:39:27 115

原创 停车全生态系统-核心停车计费引擎+发券

您是对的。本地基础费用计算器。职责单一,结果确定。云端优惠费用计算器。职责复杂,依赖网络。当云端服务不可用时,降级策略是“在无法获得优惠信息的情况下,如何继续进行业务”,而不是“试图在本地完成云端的职责”。最常见的降级就是放弃优惠,按基础费用结算,事后再通过运营手段进行补偿。这保证了系统在异常情况下的最基本可用性。

2025-10-14 17:17:35 568

原创 停车全生态系统架构

技术栈基石是 C++:在需要直接、高效、稳定地控制硬件的领域,C++因其无与伦比的性能和控制力,依然是无可替代的“重器”。架构是混合的:以C++为核心,周围环绕着用其他更适合快速开发的语言(如Go, C#)编写的辅助服务,共同构成一个完整、稳定、高效的本地系统。选型哲学:这种技术选型体现了经典的软件工程思想——“用合适的工具做合适的事”。在性能和控制力是首要需求的底层,选择C++;在业务逻辑和运维效率是首要需求的上层和云端,选择Java/Go/Python。

2025-10-13 16:15:32 876

原创 停车管理系统-后端系统架构设计和核心模块的开发

崩溃类型问题根源TTL的防护机制资源型崩溃内存泄漏,Redis内存耗尽自动清理:为数据设置生命周期,到期自动删除,释放资源。业务型崩溃进程挂掉导致锁等关键资源永不释放超时释放:作为安全网,强制释放资源,让其他进程可以继续工作,保证业务流通。逻辑型崩溃脏数据长期存在,导致业务逻辑错乱数据保鲜:确保数据不会“永垂不朽”,系统有机会自动或手动恢复到一致状态。所以TTL不仅仅是一个资源清理工具,更是一种重要的系统容错和稳定性设计模式。

2025-10-13 10:25:59 849

原创 停车计费系统-核心要点

入场无出场”漏单的处理,是一个“技术为主、人工为辅”的侦探过程。其核心在于利用出口抓拍图像这一关键证据进行反向匹配。为了减少此类漏单,停车场会采取以下预防措施:优化识别算法:提高车牌识别的准确率,尤其是在夜晚、雨雪天气。安装冗余摄像头:在出口通道不同角度安装多个摄像头,避免因车辆跟太紧或被遮挡而漏拍。强制支付抬杆:除非系统故障,否则必须检测到支付成功信号后才抬杆。规范人工操作:所有手动抬杆必须记录原因并强制输入车牌号,以便后续核查。

2025-10-11 13:11:00 1243

原创 Deepseek-财务系统学习

业务事件财务本质系统自动完成的动作发放贷款资产形态转换借:应收贷款贷:银行存款每日计提确认应计收入借:应收利息贷:利息收入用户还款资产权利变现借:银行存款贷:应收贷款 & 应收利息给你的启示:财务不是事后记账,而是与业务同步发生,深度嵌入业务流程。财务语言(分录)是描述业务实质的“翻译官”。自动化是生命线:没有系统自动化,面对海量交易,人工根本无法完成如此精细、及时的核算。这趟初体验之旅旨在让你感受到,财务板块是信贷业务的“数字心脏”,它每一次跳动(生成分录),都真实、准确地记录着业务的生机与活力。

2025-10-11 09:52:31 1091

原创 Deepseek-支付技术学习

收单机构是为商户提供支付受理服务并完成资金结算的持牌金融机构。它的核心工作是:为商户安装和维护收款设备/系统。处理支付交易,将消费者的钱从付款账户划走。将结算资金打入商户的银行账户(这个过程叫“清算结算”)。承担交易风险和处理纠纷。银行:如工商银行、招商银行,为大型商户提供收单服务。第三方支付公司:如拉卡拉、银联商务、通联支付等,是中小商户的主力收单方。网联:全称“非银行支付机构网络支付清算平台”。它主要负责处理支付机构(如支付宝、微信)相关的网络支付业务,是“断直连”后为支付机构专门设立的枢纽。

2025-10-10 22:14:00 401

原创 消费金融系统-风控系统

风控出额的具体规则是一个由数百个甚至上千个逻辑条件组成的、动态变化的、高度机密的复杂系统。从定性到定量:先将用户分类(如优质、中等、高风险),再定量计算额度。从否定到肯定:先用人人平等的硬规则排除高风险用户,再用精细化的软规则奖励好用户。动态调整:规则不是一成不变的,会根据宏观经济、业务数据和坏账情况不断进行策略调优。希望这个详细的分解能帮助您真正理解“风控出额的具体规则”是如何运作的。信用评分模型好的,我们来深入探讨信用评分模型。

2025-10-10 08:58:18 1027

原创 消费金融系统-利息核算与财务核算

这里开始详细解析一下金融业务中(特别是信贷领域)核算系统(这里指财务核算)的基本流程。核算系统,通常也称为核心账务系统或总账系统,是金融机构的“会计大脑”。它负责准确、完整、及时地记录所有金融交易引起的财务变化,是生成财务报表、满足监管要求的基础。其核心目标是遵循“有借必有贷,借贷必相等”的复式记账法原则。简单来说,核算就是会计记账。每一笔业务交易(如用户提现、用户还款、支付利息等)在核算系统中都会体现为一个或多个会计分录。会计分录:包含借方科目和贷方科目,以及金额。借方。

2025-10-09 12:16:10 1022

原创 面试场景题-

如果不是CPU,内存等资源瓶颈,导致的性能问题,那么就可能是数据库,比如数据库行锁竞争顺丰一面:订单服务调用时间从200ms飙升至1.5s,如何排查?Java面试前一定要看看!_哔哩哔哩_bilibili。

2025-10-02 23:54:15 342

原创 RocketMQ-生产常见问题汇总

死信队列堆积问题。

2025-09-24 23:00:56 259

原创 JVM性能优化总结

因为方法的局部变量,和类的静态变量,才可以作为gc roots。

2025-09-17 20:13:16 302

原创 Netty-02-

Netty的异步,指的是发起请求调用的线程,和处理响应结果的线程,是两个不同的线程。如果发起发起请求调用的线程,和处理响应结果的线程是同一个,那就是同步处理上面的ChannelInitializer#initChannel(channel),只有连接建立好后,才会执行的连接的初始化的动作执行流程一个channel一定要绑定一个selector(一个EventLoop就是一个工人,每个工人内部都有一个selector),这么做的目的是为了线程安全。

2025-09-15 18:48:48 581

原创 Netty-01-NIO前置知识

NIO三大组件:Channel、Buffer、SelectorSelector适合channel连接数特别多,但是每个channel上来回的流量低的场景int count = channel.read(buffer),如果返回-1,表示channel中的数据读取完毕了。

2025-09-15 09:51:09 461

原创 分布式文件系统08-架构升级和性能优化

aaa。

2025-09-13 10:12:47 346

原创 企业级支付系统

从课程中学习:产品思维。

2025-09-12 15:42:14 399

原创 RocketMQ源码级实现原理12-remoting模块分析

正常如果 broker调用了channel.close()关闭了连接,nameserver的epoll会收到一个Read事件,nameserver的事件read线程,去调用int count = channel.read(buffer),会得到count返回的-1,从而nameserver就知道某个broker与它之间的长连接断开了。

2025-09-11 17:15:32 227

原创 RocketMQ源码级实现原理05-文件恢复、过期文件清理

commitlog写入后,ConsumeQueue的构建是异步的,所以没有办法刚开始就保证强一致如果ConsumeQueue有一部分commitlog没有的数据,那么这部分数据就是脏数据,那么就要把这部分数据删掉所有的文件大小,因为要方便做内存映射,所以所有文件的大小都是固定的。

2025-09-11 10:13:06 274

原创 面试可能问到的问题思考-Redis

一般不太会考虑redis连接池的问题,配合5,10之类的,都没有太大问题,只有在高并发的情况下,可能会因为连接池争抢,导致程序阻塞。生产上,可以配20甚至更高,以此来应对高并发情况。

2025-08-21 17:32:47 465

原创 面试可能问到的问题思考-MySQL

引入缓存,因为缓存只是数据库数据的副本,那么就可能存在副本和原数据不一致的情况。

2025-08-21 17:30:41 1067

原创 RocketMQ源码级实现原理-消息重试、定时消息、批量消息

延迟避退可以根据这个实现逻辑,本质就是一个分段函数,实现一个根据线程池中任务数,决定往线程池写任务时,阻塞多长时间如果broker端,返回的响应码是591到595行这几种,是会continue继续重试的,而如果是broker端因为pagecache等锁定太久等原因太繁忙,而返回的SYSTEN_BUSY,是不会进行发送重试的。

2025-08-21 09:00:12 228

原创 网上的一个信贷系统开发

从0开始意味着你要考虑的事情也会更多,比如:最基础的系统设计,技术选型,交互方式,可复用性,可扩展性,系统健壮性,安全性、、、等等一系列问题;所有的核心业务未必就适合于放在一个系统中处理,如贷款的账务处理和贷款的授信、审批以及贷后管理就不适合放在一个系统中,因为账务处理力求稳定和高效,而贷款的流程管理力求灵活多变,不同的功能需求更适合在不同的系统中处理。其实,上面的用户注册、用户绑定、用户认证,都是进件系统来串的流程,CIS系统只是流程上的一个节点,负责维护一下用户的基本信息,用户的认证状态等等。

2025-08-19 08:34:24 672

原创 分布式文件系统06-分布式中间件弹性扩容与rebalance重平衡

当宕机的DataNode-A重新启动后的下一次心跳发送到NameNode时,NameNode就会把这25w个RemoveReplicaTask都下发给DataNode-A,DataNode-A拿到这25w个RemoveReplicaTask后,就会开始执行它们,对应的也就是删除DataNode-A本地的25万个文件副本。某个之前某个宕机的数据节点DataNode-A又重启后,肯定会再次注册,并进行全量上报的流程,此时,就会导致DataNode-A上的文件副本,实际上在整个DataNode集群中存了3份。

2025-08-05 10:10:55 485

原创 分布式文件系统05-生产级中间件的Java网络通信技术深度优化

【代码】分布式文件系统05-生产级中间件的Java网络通信技术深度优化。

2025-08-03 17:13:02 254

原创 分布式文件系统04-DataNode海量数据分布式高可靠存储

啊。

2025-07-20 13:29:30 383

原创 RocketMQ源码级实现原理06-NameServer路由机制

从年末生产故障解锁RocketMQ集群部署的最佳实践 - 求其在我 - 博客园

2025-07-19 07:13:11 202

原创 RocketMQ源码级实现原理-长轮询与零拷贝

rocketmq提供了一种兜底策略,就是PullRequestHoldService内部的死循环,会每5秒醒一次,醒来后会检查pullRequestTable内部的pullRequest,是否达到了超时时间,如果已经超过超时时间,不管是否有没有满足条件的新消息,都将拿到专门处理PullMessageProcessor相关工作的线程池,在该线程池中创建一个task来调用getMessage(PullRequest,brokerAllowSuppend = false)

2025-07-19 07:05:43 466

原创 RocketMQ源码级实现原理04-Commitlog刷盘机制

写入消息时候写到的是DirectByteBuffer——堆外内存中,读消息走的是PageCache(对于DirectByteBuffer是两步刷盘,一步是刷到PageCache,还有一步是刷到磁盘文件中),带来的好处就是,避免了内存操作的很多容易堵的地方,降低了时延,比如说缺页中断降低,内存加锁,污染页的回写。,这样子读写都在pagecache里面不可避免会有锁的问题,在并发的读写操作情况下,会出现缺页中断降低,内存加锁,污染页的回写。(1)第一种,Mmap+PageCache的方式,

2025-07-18 09:38:15 710

空空如也

空空如也

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

TA关注的人

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