- 博客(259)
- 收藏
- 关注
原创 粒度数据权限控制框架
本文摘要: 权限控制是系统安全的核心,主要包括功能权限和数据权限。基于角色的访问控制(RBAC)通过用户、角色和资源的三层关联实现权限分配,Spring Security等框架已较好解决功能权限问题。数据权限通常与组织结构绑定,细分为全量、部门级、个人等5类,传统硬编码方式存在耦合度高、维护难等问题。文中提出FDPC模型,结合功能权限与数据权限的交错组合,并引入双层密钥管理方案实现细粒度控制。系统通过角色分配将权限与组织结构映射,支持功能与数据的动态组合约束,从而降低耦合度并提升灵活性。
2025-09-01 17:24:47
34
原创 金融数据安全
金融数据生命周期安全框架涵盖采集、传输、存储、使用、删除和销毁全过程,基于数据分级(1-5级)实施差异化防护。核心要求包括:建立四级安全管理体系(决策、管理、执行、监督),遵循七大安全原则(合法正当、最小够用等);重点落实数据溯源(跟踪操作记录)、安全审计(日志留存6个月以上)等技术措施,对3级以上数据实施重点保护。证券行业和跨境数据需遵守特殊监管要求,云环境数据应符合国家规范。该框架通过组织保障、技术防控和运维管理的协同,构建覆盖全生命周期的动态防护体系。
2025-09-01 17:22:59
913
原创 动态代理设计模式
摘要:动态代理分为JDK代理和cglib代理。JDK代理基于接口在运行时动态生成代理类,而cglib通过字节码技术为无接口类生成子类代理。cglib底层使用ASM操作字节码,Spring AOP对其封装实现方法增强。两种代理方式主要区别在于:JDK代理需接口,编译时无实际class;cglib可代理普通类,运行时生成子类字节码。
2025-09-01 17:15:47
335
原创 高性能:为什么说Elasticsearch的倒排表比mySql的B+树查询快呢?
而每一个页的存储空间是有限的,如果data数据较大时将会导致每个节点(即一个页)能存储的key的数量很小,当存储的数据量很大时同样会导致B-Tree的深度较大,增大查询时的磁盘I/O次数,进而影响查询效率。Elasticsearch为了能快速找到某个term,将所有的term排个序,二分法查找term,logN的查找效率,就像通过字典查找一样.这样我们可以用二分查找的方式,比全遍历更快地找出目标的term。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。
2025-09-01 17:13:01
941
原创 国内大型银行数据模型实践案例
采用以数据驱动为主,业务驱动为导向,通过双向结合的方式既保证设计的数据模型符合业务实际发展导向,又保证了数据模型建立在现有的真实数据基础之上,从而间接地保证了数据模型的易懂性与可用性。智能化是指在建模过程中,通过建立语料库,近义词识别等步骤,对新建数据模型所引用的属性进行智能化标准推荐,贯彻数据标准智能化管控,可加快建模工作的效率和模型成果的准确度。随着数据架构的演化,农行引入了数据湖的新技术,拓宽了数据底座,以数据湖为源对数据架构进行了优化,分为基础宽表、通用宽表、服务宽表三层逻辑架构。
2025-08-31 22:19:59
661
原创 技术总体方案设计思路
项目需求分析与系统设计摘要 项目背景明确客户需求、建设意义及前期准备,强调政策性和时间要求。业务分析聚焦建设目标,通过涉众分析识别关键干系人。用例分析采用UML建模,区分业务用例(泳道图)与系统功能用例(角色-计算机交互)。领域模型通过E-R图定义核心实体关系及状态机制,明确存储方案。应用架构分层设计模块,技术架构基于SpringCloud+中间件,辅以关键环节优化(如缓存、限流)。物理架构部署图展示服务器/网络资源配置,支持高可用(多活/热备)、高并发(负载均衡)及安全(等保要求)。全文结构化呈现需求到设
2025-08-31 22:17:04
49
原创 电商系统的分布式事务调优
微服务架构下分布式事务的解决方案主要包括XA规范的二阶提交(2PC)、三阶提交(3PC)和TCC补偿性事务。2PC通过准备和提交两个阶段保证事务一致性,但存在阻塞和数据不一致风险;3PC在2PC基础上增加预提交阶段以降低阻塞时间。TCC采用最终一致性,通过Try、Confirm、Cancel三个阶段实现柔性事务,虽性能更优但对业务侵入性强。Seata是新兴的分布式事务解决方案,旨在平衡性能与侵入性,但其稳定性仍需验证。在跨服务场景下,TCC是目前最常用的方案。
2025-08-31 22:09:52
851
原创 开放银行整合银企直连的代发工资服务
本文介绍了银企直联与开放银行在数据安全合规方面的对比及升级方案。在合规方面,系统通过协议授权、TLS加密传输、密钥安全存储等措施确保数据安全。随着市场发展,传统银企直联面临挑战,其复杂流程和高成本促使企业倾向OpenAPI模式。开放银行在SSL链路安全、报文安全和身份认证等方面更具优势。方案采用分级密钥管理,为高安全需求客户提供硬件加密机等模式,目前已成功应用于多个项目,获得客户好评。该方案既保障了交易安全,又满足了企业对便捷服务的需求。
2025-08-31 21:54:10
1362
原创 DDD主要概念以及之间的关系
领域驱动设计(DDD)是一种应对复杂业务需求的软件开发方法,通过建立统一语言和领域模型连接业务与实现。其核心是将业务划分为子域(核心域/支撑域/通用域),用限界上下文划分逻辑边界,通过实体、值对象、聚合等概念建模业务规则。DDD强调开发团队与业务专家的持续沟通,使软件模型与业务心智模型保持一致,从而提升代码质量、降低复杂度,实现业务价值的有效传递。
2025-08-31 21:51:17
713
原创 责任链模式实践-开放银行数据保护及合规
摘要:责任链模式是一种行为设计模式,通过链式处理传递请求。开放银行基于该模式构建数据保护体系,采用ZuulFilter责任链实现认证授权等安全措施。核心PreFilters包含报文转换、鉴权、加解密等处理节点,各节点独立工作通过RequestContext共享状态,确保数据收集、传输、存储全流程合规。该方案实现了敏感信息脱敏、最小化数据输出等隐私保护要求,ErrorFilters和PostFilters分别处理异常和记录日志,形成完整的数据安全防护链。(149字)
2025-08-31 21:48:31
1059
原创 业务架构步骤一:选择参考模型、视角和工具
文章摘要:业务架构设计需根据业务驱动因素和利益相关者需求,选择合适的模型、视角和工具。通过业务建模识别目标状态,分析当前差距,确定所需业务能力。采用价值流图、流程建模等技术分解业务功能,明确服务边界和契约。建立目录、矩阵和图表展示架构关系,确保涵盖所有关注点。需求管理需与架构定义范围一致,超出部分应通过治理流程处理。最终输出为业务架构视图,指导后续解决方案设计实施。
2025-08-28 22:56:27
588
原创 如何进行系统设计
系统设计是定义系统架构、接口和数据以满足特定需求的过程。它将需求转化为技术规范,采用迭代方法产生多种设计方案。系统设计包含架构设计、逻辑设计和物理设计三个层次,涉及硬件/软件基础设施、数据存储等要素。常见系统类型包括水平/垂直扩展、单体应用和微服务架构。系统设计流程分为六个步骤:澄清功能与非功能需求、评估系统规模、规划数据流、组件拆分、详细技术方案设计和识别解决瓶颈。设计过程中需权衡缓存、负载均衡、数据分区等技术方案,并关注单点故障、冗余备份等问题,最终目标是构建简单可靠的技术解决方案。
2025-08-28 22:35:29
1021
原创 在架构开发方法中应用迭代
企业架构开发方法(ADM)通过迭代方式管理复杂性,主要包括三种迭代类型:全面架构景观开发、集成架构过程和管理架构能力变更。ADM支持基线优先和目标优先两种开发方法,前者聚焦问题识别,后者注重目标达成。迭代过程需考虑组织流程、利益相关者参与度、团队结构和风险偏好等因素,通过阶段循环和检查点确保架构开发的一致性和可行性。实践表明,ADM应始终采用迭代方式,具体实施需根据组织特点灵活调整。
2025-08-28 22:33:44
835
原创 领域、子域、核心域、通用域和支撑域:傻傻分不清?
摘要:DDD(领域驱动设计)通过划分领域、子域等概念来降低业务复杂度,核心思想是明确边界。领域代表业务问题范围,可细分为核心域(核心竞争力)、通用域(通用功能)和支撑域(必需但非核心功能)。类似于自然科学研究中的逐层分解,DDD通过细分领域建立模型,最终映射为微服务实现。不同行业领域建模方法相似,关键在于分解问题域以简化理解和实现。核心域是重点,决定产品竞争力;通用域和支撑域则分别对应通用系统和企业特定功能。
2025-08-26 18:25:08
872
原创 如何在本地使用 DeepSeek Janus-Pro
本文介绍了如何本地部署DeepSeek Janus-Pro多模态模型。Janus系列包含Janus、JanusFlow和Janus-Pro三个版本,通过创新框架统一视觉理解和生成任务。文章详细指导了从GitHub克隆项目、修改代码(改用1B轻量级模型)、创建Docker镜像到本地运行的完整流程。测试表明,1B模型在多模态理解和文本生成方面表现优异,能准确解释图像内容并生成细节丰富的超现实主义图像,效果媲美Stable Diffusion XL。该方法解决了原Gradio演示的软件冲突问题,使模型可在个人电脑
2025-08-08 19:58:04
951
原创 2025 年最佳 AI 代理:工具、框架和平台比较
AI代理:企业创新与效率的新引擎 随着企业面临重复性任务与创新需求的双重挑战,传统自动化已难以应对复杂场景。AI代理凭借感知、决策、学习和多模态处理能力,成为突破性解决方案。2025年领先的AI代理工具包括: 开发框架:如LangGraph(状态保持)、AutoGen(多代理协作)和CrewAI(角色化代理),适合技术团队定制开发。 无代码/开源工具:Dify(低代码)、AutoGPT(任务分解)和Rasa(对话AI),助力非技术团队快速部署。 企业级平台:DevinAI(全栈开发)、Agentforce(
2025-08-08 19:40:23
904
原创 2025 年最佳no-code和open-source AI Agents
低代码/开源AI工具助力非技术团队快速开发智能应用。Dify作为低代码平台支持可视化开发,兼容数百种语言模型;AutoGPT能分解复杂任务并保持记忆,适合技术团队;n8n提供拖拽式工作流自动化;Rasa专注定制化对话系统;BotPress结合可视化与代码钩子创建聊天机器人。这些工具均支持多模型集成、API连接和开源扩展,显著降低AI应用开发门槛,适用于企业级部署和快速原型设计。
2025-08-07 22:30:16
822
原创 什么是AI Agents
AIAgent是一种能够感知环境、自主决策并采取行动以实现目标的智能系统。文章介绍了AIAgent的核心特征:自主性、学习适应性和环境交互能力,以及反应型和思考型两种主要类型。在应用方面,AIAgent在医疗领域可辅助诊疗和预测分析,在金融领域则用于自动化交易和欺诈检测。文章还推荐了使用Docker和SpringAI运行AI模型的技术方案。这些智能系统正通过实时数据处理和决策能力,推动各行业的数字化转型。
2025-08-07 20:08:40
1123
原创 如何设计一个开放授权平台?
本文介绍了开放授权平台的两大核心功能:认证和授权。在认证方面建议采用OAuth2.0协议标准;授权方面详细说明了第三方应用注册流程,包括提供clientID、消息推送地址和密钥对等必要信息,并阐述了公钥加密、私钥解密的交互机制。特别指出授权平台会同步返回处理结果,而业务数据则通过异步推送方式传输。最后推荐了SpringAI-LLM模型自动生成SQL语句的技术方案。
2025-08-06 22:53:23
343
原创 什么是OAuth2.0协议?有哪几种认证方式?什么是JWT令牌?和普通令牌有什么区别?
OAuth2.0是一种开放授权标准,允许用户授权第三方应用访问其存储在服务提供方的数据,而无需共享密码。该协议包含四种认证模式,核心在于处理三方之间的信任关系。普通令牌存在性能瓶颈问题,而JWT令牌通过将授权信息加密存储在令牌字符串中,使资源服务器无需频繁向授权服务器验证,有效提升性能。JWT令牌本质是一个包含用户信息和授权的加密字符串,解决了高并发场景下的令牌验证效率问题。
2025-08-06 22:50:18
490
原创 ES集群规划与调优
Elasticsearch集群规划需考虑数据规模、增长趋势和机器配置。JVM堆内存建议不超过32G,30G堆约可处理10T数据。业务搜索场景通常需要2-4台机器(千万到数十亿数据),大数据分析场景(如ELK)可能需要上百节点(千亿级数据)。节点可配置为Master、Data或Coordinator角色,支持多角色组合。分片数量建议按节点数的1.5-3倍设置,单个分片不超过30GB,日志类按日期索引可设单分片。
2025-08-04 18:16:11
308
原创 ESDocValues机制
ElasticSearch通过倒排索引实现快速搜索,但在排序和聚合时效率较低。DocValues通过构建正排索引解决了这个问题,将文档映射到词项,便于排序、聚合等操作。DocValues默认开启,关闭后无法进行相关操作。它采用列式存储结构,支持数据压缩(如数字类型使用最大公约数),减少磁盘空间占用并提高访问速度。DocValues与倒排索引配合使用,前者用于搜索,后者用于聚合,共同提升ElasticSearch性能。
2025-08-04 18:10:04
692
原创 ES集群调优策略
本文介绍了Elasticsearch索引性能优化的几个关键方法:1)首次数据导入时设置副本数为0,写入完成后再恢复;2)自动生成docID避免版本检查;3)合理设置mappings减少不必要索引;4)禁用_source字段或过滤不必要内容;5)调整刷新间隔降低系统负载;6)使用批处理提升写入效率。这些优化措施通过减少磁盘I/O、降低CPU消耗、合并操作等方式,可显著提升Elasticsearch的索引性能。
2025-08-04 18:03:07
696
原创 衡量分布式系统的指标有哪些
本文介绍了分布式系统的关键性能指标:吞吐量、响应延迟和并发能力,三者往往相互制约。同时阐述了系统可用性的衡量方式及其作为容错能力体现的重要性。在可扩展性方面,指出了分布式系统追求线性扩展性的目标。最后讨论了副本机制带来的数据一致性问题,强调一致性模型对用户体验的影响。文章还推荐了相关技术架构体系的延伸阅读。
2025-07-29 09:05:38
312
原创 JVM 内存分配性能问题
JVM内存分配不合理会导致频繁GC,影响系统吞吐量和响应时间。文章通过模拟抢购接口的压力测试,发现高并发下堆内存不足引发FullGC问题。通过分析GC日志,调整-Xms和-Xmx参数增大堆内存后,系统吞吐量提升40%,响应时间降低50%。建议结合具体业务场景,通过监控GC日志持续优化JVM内存配置,以提升系统性能。
2025-07-29 08:44:12
830
原创 TLAB(Thread Local Allocation Buffer)
TLAB是JVM为每个线程分配的私有内存区域,用于避免多线程对象分配时的同步冲突。线程在自己的TLAB中分配对象,满后归还给Eden区并申请新TLAB。这种机制分摊了同步开销,提高了分配效率。GC时Eden区的TLAB和非TLAB区域会被统一处理,存活对象被复制到Survivor区。所有堆上对象均可共享,GC只根据根集合扫描对象。该机制类似于TCMalloc等内存分配器的优化策略。
2025-07-24 22:24:41
363
原创 G1垃圾收集器
G1垃圾收集器采用"垃圾优先"原则,通过分区域(Region)内存管理实现,兼顾空间回收效率与停顿时间控制。其设计目标是避免完全回收,但当并发收集速度不足时会触发单线程全GC(计划优化为并行)。关键参数包括:Region大小(1-32MB)、最大停顿时间、并行/并发线程数等。G1通过动态区域分配平衡吞吐量与延迟,适合大内存应用场景。
2025-07-24 22:22:29
426
原创 JVM之方法内联
方法内联是JVM将高频调用方法替换为其方法体的优化技术,旨在消除方法调用的额外开销(栈帧操作、参数传递等)。热点代码判定标准取决于编译模式(客户端1500次/服务端10000次),可通过参数调整。内联条件包括:方法体大小限制(热点方法<325字节)、推荐使用private/static/final修饰以避免类型检查。该优化能提升性能,但需平衡方法体大小与缓存效率。
2025-07-10 20:54:22
328
原创 Kafka的无消息丢失配置怎么实现
Kafka保证消息不丢失的核心在于确保消息"已提交"并满足特定条件:生产者需使用带回调的send方法,设置acks=all和适当的重试次数;Broker端需配置unclean.leader.election.enable=false,设置副本数≥3且min.insync.replicas>1;消费者应禁用自动提交位移。这些措施共同构成了Kafka消息可靠性的保障机制,但需注意其保证是有限度的,依赖于系统的基本可用性前提。
2025-07-10 20:48:44
850
原创 JVM调优第一步,了解JVM常用命令行参数
本文介绍了JVM命令行参数使用指南,包括标准参数(-开头)、非标准参数(-X开头)和不稳定参数(-XX开头)的分类。通过HelloGC示例程序演示了内存溢出情况,并对比了内存泄漏与内存溢出的区别。重点讲解了GC日志分析方法和内存区域地址表示方式,强调不同垃圾回收器的日志格式差异。最后探讨了JVM调优的两个核心指标:吞吐量(用户代码时间占比)和响应时间(STW时长),建议根据应用类型(科学计算/Web服务)选择合适的GC策略(PS+PO或G1)。
2025-06-22 19:39:57
635
原创 彻底征服 Spring AOP 之 理论篇
AOP(面向切面编程)是OOP的补充,其基本单元是切面(Aspect),由切点(Pointcut)和增强(Advice)组成。Spring AOP通过动态代理将切面织入目标对象的方法连接点(Joinpoint)中,实现横切逻辑。Advice包括前置、后置、环绕等类型,通过切点表达式定位特定方法。典型应用场景如权限校验、日志记录等,通过@AspectJ注解配置切面,结合@Pointcut定义匹配规则,用@Before/@Around等实现增强逻辑,使核心业务与通用逻辑解耦。
2025-06-22 19:33:44
812
原创 怎样设计聚合?
摘要:本文介绍了DDD领域建模中聚合构建的5个步骤。以保险投保业务为例,首先通过事件风暴识别实体和值对象;其次选择具有独立生命周期的聚合根(如投保单和客户);然后根据高内聚原则构建包含聚合根、实体和值对象的聚合;接着建立聚合内对象间的引用关系模型;最后将相关聚合划分到同一限界上下文中。文中特别说明了投保聚合中客户数据引用的处理方式,确保数据一致性。
2025-06-17 23:22:57
475
原创 如何理解DDD的领域和子域?
领域是指特定的业务范围或边界,领域驱动设计(DDD)通过细分业务领域来解决问题。领域可以划分为更小的子领域,类似于科学研究中的分析方法。例如,研究桃树时将其细分为器官、组织直至细胞单元,对应DDD中从领域到子域的分解过程。子域的划分有助于建立清晰的模型边界,最终构建完整的业务知识体系。
2025-06-17 23:20:15
424
原创 如何调优Kafka
Kafka调优的核心目标是提升吞吐量(TPS)和降低延时。吞吐量指每秒处理的消息数或字节数,延时则指消息从发送到持久化或消费的耗时。调优时可采用批次化处理策略,通过适当增加少量延时(如从2ms增至10ms)换取吞吐量的大幅提升(如从500条/秒提升至100,000条/秒),这种权衡在实际场景中往往可接受,因为内存操作远快于网络I/O。优化漏斗表明,合理设计可显著改善系统性能。
2025-06-14 21:58:12
1078
2
原创 Spring中观察者模式的应用
观察者模式与发布订阅模式都用于对象间通信,但存在关键差异。观察者模式包含观察者和被观察者,被观察者直接通知观察者;而发布订阅模式通过经纪人(Broker)中介,发布者和订阅者完全解耦。在Spring框架中,事件驱动模型基于观察者模式实现,包含ApplicationEvent(事件)、ApplicationListener(监听器)、ApplicationEventPublisher(发布者)和ApplicationEventMulticaster(事件广播)四大核心组件。Spring提供了多种内置事件如Co
2025-06-14 21:41:07
1577
1
原创 如何评价代码的质量
摘要:本文探讨了高质量代码的五个核心特性:1)可维护性,强调代码修改时能保持稳定;2)可读性,提出代码应便于人类理解;3)可扩展性,遵循"对修改关闭,对扩展开放"原则;4)灵活性,体现为代码对新功能的兼容性;5)简洁性,遵循KISS原则,用简单方案解决复杂问题。文章指出这些特性相互关联,共同构成优秀代码的标准。其中,可维护性因人而异,而可读性是其他特性的基础,最终目标都是提升代码质量和开发效率。
2025-06-11 21:53:49
434
原创 Spring Security是如何完成身份认证的?
摘要:Spring Security认证流程包含四个关键步骤:1)用户凭证被封装为UsernamePasswordAuthenticationToken;2)AuthenticationManager进行验证;3)验证成功返回包含权限信息的Authentication对象(密码被移除);4)认证信息通过SecurityContextHolder存入安全上下文。示例代码展示了完整的认证过程,包括自定义AuthenticationManager实现和线程绑定认证信息的操作。该流程体现了Spring Securi
2025-06-11 21:45:24
608
原创 UC并发工具 CountDownLatch应用&源码分析
摘要:CountDownLatch是JUC包下的并发计数器工具,用于并行任务协同。主线程通过await()等待计数器归零,子任务完成时调用countDown()减1。源码分析显示其基于AQS实现,state存储计数值,await()阻塞线程至state=0,countDown()CAS减state并在归零时唤醒阻塞线程。适用于多任务并行处理并需全部完成的场景,如文中的三任务并行示例。还介绍了超时等待和中断处理机制。
2025-06-08 14:49:56
945
原创 深入了解NIO的优化实现原理
网络通信中,最底层的就是内核中的网络 I/O 模型了。随着技术的发展,操作系统内核的网络模型衍生出了五种 I/O 模型,《UNIX 网络编程》一书将这五种 I/O 模型分为阻塞式 I/O、非阻塞式 I/O、I/O 复用、信号驱动式 I/O 和异步 I/O。每一种 I/O 模型的出现,都 是基于前一种 I/O 模型的优化升级。
2025-06-08 14:35:13
637
原创 CDN:静态资源如何加速?
CDN(Content Delivery Network/Content Distribution Network,内容分发网络)。简单来说,CDN 就是将静态的资源分发到,位于多个地理位置机房中的服务器上,因此它能很好地解决数据就近访问的问题,也就加快了静态资源的访问速度。在大中型公司里面,CDN 的应用非常的普遍,大公司为了提供更稳定的 CDN 服务会选择自建 CDN,而大部分公司基于成本的考虑还是会选择专业的 CDN 厂商,网宿、阿里云、
2025-06-06 23:04:09
1165
企业架构是连接业务与IT的桥梁,本文系统介绍了企业架构的概念、作用及实施方法 企业架构作为企业“城市规划图”,涵盖业务、应用、数据
2025-08-28
蚂蚁金融智能中台的数据底座建设与应用场景
2025-02-06
腾讯社交网络APM端到端运维监控体系解析及其应用场景
2025-01-20
对于MySQL调优,需要确认业务表结构设计是否合理,SQL语句优化是否足够,该添加的索引是否都添加了,是否可以剔除多余的索引等等
2025-01-17
基于Activiti的低代码办公平台设计与开发:实现流程与表单自动化管理
2025-01-11
银行业IT治理最佳实践-构建安全、高效的IT治理框架以适应数字化转型
2025-01-10
华为变革及流程管理框架:IPD和ISC流程的详细解析
2024-12-18
领域驱动设计中实体与限界上下文的重构方法
2024-12-17
构建高效研发体系:IPD理论及案例解析
2024-11-01
领域驱动设计(DDD)中统一语言的开发方法与实践
2024-10-26
代码为王时代:车企软件开发能力转型策略解析
2024-10-21
云闪付微服务基础设施建设及分布式ID实践
2024-10-10
加州政府企业架构框架V2.0
2024-09-24
业务结果驱动型企业架构的分阶段规划
2024-09-24
TOGAF系列指南:企业架构中的业务场景方法论
2024-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人