保存成功
保存失败,请重试
提交成功
文心紫竹

文心紫竹

架构师
Dubbo 最早实战者,现转战 Spring Cloud ,构建高并发、高性能、高可用系统;DDD 实战者,以解决互联网复杂业务场景;长链挑战者,深入研究 Socket 、线程、锁、并发、分布式等...更多
文章21

架构设计:配置信息管理

您的配置信息是怎么管理的呢?让我们一起见证下配置信息管理的不同方案。 通过本篇文章,您可以了解以下几种常见配置管理方案: 1. 将配置信息写死在业务代码中 2. 将配置信息配置到配置文件中 3. 使用 Maven 的 Profile 功能 4. 全环境打包结合运行时配置 5. 集中式配置 6. 全环境打包结合集中配置
免费
140 订阅

架构设计:大型互联网架构演化简史

对于一个大型网站,主要有以下几个特征: 1. 支撑海量数据 2. 非常高的访问量 我们常见的大型网站,如百度、淘宝、京东等,都是一个分布式系统。这么复杂的系统也不是一天建成的,每个系统都经历了漫长的演变过程。 让我们一起研究下大型互联网架构是如何演变的。
免费
155 订阅

领域驱动设计战术模式:领域事件

领域驱动设计战术部分,是一组面向业务的设计模式,是基于技术的一种思维方式,相对开发人员来说更接地气,是提升个人格局比较好的切入点。 该文章为战术模式的第五篇,重心讲解领域事件模式。 在建模时,有时会遇到一些业务逻辑的概念,它放在实体或值对象中都不太合适。这就是可能需要创建领域服务的一个信号。 使用领域事件来捕获发生在领域中的一些事情。 领域驱动实践者发现他们可以通过了解更多发生在问题域中的事件,来更好的理解问题域。这些事件,就是领域事件,主要是与领域专家一起进行知识提炼环节中获得。 通过本 Chat,您可以: 1. 理解领域事件 2. 实现领域事件 3. 实现领域事件模式 4. 小结
免费
148 订阅

领域驱动设计战术模式:领域服务

领域驱动设计战术部分,是一组面向业务的设计模式,是基于技术的一种思维方式,相对开发人员来说更接地气,是提升个人格局比较好的切入点。 该文章为战术模式的第四篇,重心讲解领域服务模式。 在建模时,有时会遇到一些业务逻辑的概念,它放在实体或值对象中都不太合适。这就是可能需要创建领域服务的一个信号。 从概念上说,领域服务代表领域概念,它们是存在于问题域中的行为,它们产生于与领域专家的对话中,并且是领域模型的一部分。 通过本 Chat,您可以: 1. 理解领域服务 2. 实现领域服务 3. 领域服务建模模式 4. 小结
免费
192 订阅

领域驱动设计战术模式:实体

领域驱动设计战术部分,是一组面向业务的设计模式,是基于技术的一种思维方式,相对开发人员来说更接地气,是提升个人格局比较好的切入点。 该文章为战术模式的第三篇,重心讲解实体模式。 实体是具有唯一标识的概念,找到领域中的实体并对其进行建模是非常重要的环节。如果理解一个概念是一个实体,就应该追问领域专家相关的细节,比如概念生命周期、核心数据、具体操作、不变规则等;从技术上来说,我们可以应用实体相关模式和实践。 通过本 Chat,您可以: 1. 理解实体 2. 实现实体 3. 实体建模模式 4. 总结
免费
135 订阅

领域驱动设计战术模式:实体

领域驱动设计战术部分,是一组面向业务的设计模式,是基于技术的一种思维方式,相对开发人员来说更接地气,是提升个人格局比较好的切入点。 该文章为战术模式的第三篇,重心讲解实体模式。 实体是具有唯一标识的概念,找到领域中的实体并对其进行建模是非常重要的环节。如果理解一个概念是一个实体,就应该追问领域专家相关的细节,比如概念生命周期、核心数据、具体操作、不变规则等;从技术上来说,我们可以应用实体相关模式和实践。 通过本 Chat,您可以: 1. 理解实体 2. 实现实体 3. 实体建模模式 4. 总结
免费
110 订阅

领域驱动设计战术模式:值对象

领域驱动设计战术部分,是一组面向业务的设计模式,是基于技术的一种思维方式,相对开发人员来说更接地气,是提升个人格局比较好的切入点。 该文章为战术模式的第二篇,重心讲解值对象模式。 值对象经常被掩盖在实体的阴影之下,但它却是非常重要的 DDD 概念。 值对象不具有身份,它纯粹用于描述实体的特性。处理不具有身份的值对象是很容易的,尤其是不变性与可组合性是支持易用性的两个特征。 通过本 Chat,您可以: 1. 理解值对象 2. 何时使用值对象 3. 实现值对象 4. 值对象建模模式 5. 值对象持久化 6. 值对象其他用途 7. 小结
免费严选
599 订阅

高性能系统设计:基于领域模型的互联网点赞系统

点赞服务在社交类平台中,是一个最常见的功能。每天会有成千上万的用户对其进行操作,在这看似简单的功能背后,蕴藏了不少设计哲学。让我们从领域驱动设计出发,从零设计、开发一套高性能的通用点赞服务。 通过本 Chat 您将学习到: 1. 领域驱动设计核心组件及应用 2. 领域事件实战 3. CQRS 架构实战 本 Chat 主要面向于中、高级程序员;或对高性能系统设计有兴趣的码农。
严选
385 订阅

领域驱动设计:战术模式预览

领域驱动设计,又称“软件核心复杂性应对之道”。是一套基于对象思维的业务建模设计思想,相对于 CRUD 系统有更高的灵活性,是业务人员处理复杂问题的有效手段。 领域驱动设计,整体包括战略和战术两部分,其中战略部分的落地需要团队合作、开发过程、流程制度等一系列支持,实施阻力相对较大。相反,战术部分,是一组面向业务的设计模式,是基于技术的一种思维方式,相对开发人员来说比较接地气,是提升个人格局比较好的切入点。 本 Chat 为战术模式预览,对战术相关模式进行简单介绍,其中包括: 1. 实体 2. 值对象 3. 领域服务 4. 模块 5. 聚合 6. 工厂 7. 仓库 8. 领域事件 9. 事件溯源 面向人群: 厌倦 CRUD,寻求更高发展的业务开发人员
免费
357 订阅

高性能系统设计:互联网短链接服务

短链接是指将原本较长的网址转化成较短的网址,从而便于用户的记忆与社交软件上的传播。是互联网营销的重要支撑模块,我们将从零开始设计开发一套高性能多场景支持的短链接服务。 通过本 Chat 您将学习到: 1. 短链接服务工作原理 2. Number 生成器 3. 基于 Redis 和 Protobuf 的分布式缓存加速 4. 基于 Guava 的本地缓存加速 5. 基于策略模式的多场景支持
严选
377 订阅

穷人的新年红包系统,单节点 12W TPS

每年春节都是红包漫天飞,今年百度红包成为了最耀眼的明星。本届春晚红包活动,百度APP 最终累计互动量达到 208 亿次,百度 DAU 峰值突破 3 亿。 面对这些数字,我不由感叹大厂技术的强大,机器资源的海量。作为一个穷人,又该如何在有限的资源上搭建一个高性能的红包系统? 本 Chat 主要从业务角度对红包系统进行 N 轮迭代,在水平扩展的前提下,最大限度提升单节点的处理能力。 主要包括: 1. 一切从简,TPS:375/s; 2. 引入红包预分配策略,TPS:2205/s; 3. 引入 Redis List 红包分配策略,TPS:3365/s; 4. 引入 Queue 异步化红包处理,TPS:6917/s ; 5. 引入 Local Store 完成批处理,TPS:124688/s。
严选
322 订阅

RedisTemplate 自动注册之旅

RedisTemplate 是 Spring Boot 访问 Redis 的核心组件,底层通过 RedisConnectionFactory 对多种驱动进行集成,上层通过 XXOperations 提供丰富的 API,并结合基于泛型的 Bean 注入,极大的提供了便利。但在使用时,需要根据场景使用不同的 RedisSerializer 对 RedisTemplate 进行定制。 那有没有办法简化这一过程呢?本 Chat 将通过注解完成 RedisTemplate 的自动定义。所涉及内容包括: 1. RedisTemplate 简介; 2. Spring Boot 对 RedisTemplate 的支持; 3. Spring Bean 生命周期以及 BeanPostProcessor 扩展点; 4. 开发基于注解的 RedisTemplate 自动注册器。
186 订阅

Spring Boot 扩展,Schedule 方法的 Web 接入点

Spring 对定时任务进行了非常好的封装,只需在业务方法上添加 @Scheduled 注解即可。但在测试时,比较麻烦。为了测试定时任务相关逻辑,往往需要开发人员修改定时配置,提交代码、部署、测试;测试完成后,将配置修改回去、提交代码、部署、上线。整个过程由人工完成,稍有差错便会造成严重的线上事故。 有没有一种策略,可以降低风险,同时把主动权归还给 QA 呢?在开发、测试时,将 Schedule 方法暴露成 Web 接入点,并与 Swagger 集成,即可通过 Swagger-UI 手工触发 Schedule 方法。在线上环境,停用该功能,从而有效保护业务。 本 Chat 涉及内容包括: 1. Spring MVC 核心流程及扩展点; 2. Swagger API 信息收集梳理; 3. Schedule 方法 Web 接入点设计开发。
141 订阅

文件读取、解析、入库,究竟可以多快?

解析文件并入库(MySQL),是工作中最常见的需求,也算的上是职场必备技能之一。现假定需要从一个大文件中解析数据,并将其以最快速度完成入库操作,你能想到的最佳方案是什么?应该如何演进,一步步对效率进行提升? 本 Chat 将对其进行比较全面的剖析,所涉及内容如下: 1. 问题剖析,核心组件及其职责; 2. 基于 Spring Boot 工程搭建; 3. 基于 Stream 的文件读取能有多快; 4. 简单的字符串解析,效率如何; 5. 数据入库的瓶颈在哪,事务、批量、还是 SQL; 6. 多线程如何提升效率。
严选
375 订阅

Spring Boot 晋级:统一异常处理

每次 Review 代码,看到 Controller 中海量的 try cache 语句,内心无比的崩溃。虽然 Spring Boot 对 Exception 处理提供了多种的支持,但如何更好的应用于系统需要更多的思考。 如何针对 Ajax 请求和 Page 请求进行统一的 Exception 处理,让我们一起进入本次Chat。 本场 Chat 主要内容: - ExceptionHandler:添加在 Controller 或 ControllerAdvice 类中,最灵活的异常处理机制。 - HandlerExceptionResolver:DispatcherServlet 核心组件之一,内部使用责任链模式,应用多种异常恢复策略,其中 ExceptionHandler 也是基于此实现的。 - ErrorController:JEE 容器异常恢复机制,当 DispatcherServlet 对异常无法恢复时启用。
310 订阅

Java高级程序员必备:反射、动态代理

反射、动态代理作为 Java 高级特性被各类框架广泛使用,对其系统学习有助于了解框架的内部运行机制。正因如此反射、动态代理也成为了面试笔试的重要一环。 本 Chat 所涉及的内容包括: 1. Java 类型系统。 2. 反射,包括 ClassLoader、Class、Constructor、Field、Method。 3. 动态代理,包括 InvocationHandler、Proxy。 4. 基于 SPI、反射、动态代理的 Plugin Demo。
3 订阅

基于 MySQL 的分布式乐观锁:ID 生成器

在分布式架构中,锁是一个永恒话题,基于 Redis、Zookeeper 等已有很多实现策略, MySQL 作为最常见的存储引擎,却很少有人提及。最近由于业务需求,需要根据规则(第三方提供)生成 ID,并要保障在并发场景下的唯一性。这一需求正好符合乐观锁的应用场景。 通过本 Chat 你可以学习到: 1. 悲观锁和乐观锁; 2. 乐观锁实现原理----CAS; 3. JDK5 Atomic* 家族; 4. 基于 MySQL 的乐观锁:ID 生成器。
严选
345 订阅

SpringBoot : 一个应用启动引擎而已

公司很早就将 SpringBoot 作为核心研发框架,最近在与同学们交流时,发现很多人在认知上存在偏差,将 SpringBoot 彻底的神化,称其无所不能,但问其设计理念时,却很少人能说清楚。 其实 SpringBoot 并没有想象中的那么神秘,其内核设计极其简单,但插件扩展极其庞大(包括各类 Stater,面向微服务的 Spring Cloud 体系,这也是感觉它复杂的一大因素),但万变不离其宗,想要学好 SpringBoot,必须从了解其内部设计开始。 让我们一起走进 SpringBoot 内核设计,通过本 Chat 你可以掌握以下内容: 1. SpringBoot 内核设计 SpringApplication。 - SpringApplication 初始化流程,特别是基于 SPI 插件的使用。 - SpringApplication 启动流程,其中包括 Starting、EnvironmentPrepared、ContextPrepared、ContextLoaded、Started、Running、Failed等阶段 2. SpringBootApplication 注解揭秘。 - SpringBootConfiguration,标记为 Configuration 配置类。 - EnableAutoConfiguration,启用装配。 - ComponentScan,定义组件扫描。
严选
385 订阅

Java 常用武器库之枚举

枚举是 Java5 引入的新特性之一,至此已有些年头,但在实际开发和面试过程中,发现很多程序员对其并不了解,更谈不上灵活使用。 对于一些特殊场景,Enum 堪称终极解决方案,通过本次 Chat,你可以学习到: 1. 枚举的核心本质 2. 枚举的集合支持 3. 枚举使用案例
223 订阅

揭开 Java 注解的神秘面纱

Java 注解是 Java5 引入的重要语言特性之一,在日常工作中我们今天与注解打交道,例如 Java 原生注解@Override、@Deprecated、@SuppressWarning,框架注解@Controller @SpringBootApplication 等,那么注解背后的运作机制又是什么呢? 我们将从如下几方面逐步揭开注解的面纱: 1.定义注解 2.使用注解 3.自定义注解处理器 (1)通过反射方式解析注解 (2)通过编译器扩展工具 APT(Annotation Processing Tool) 解析注解 4.自己动手写一个代码生成器 通过本节chat您将学会 1.注解的运行机制 2.注解在代码中如何处理的(了解spring 注解的机制) 3.通过注解实现代码生成器
269 订阅

Java 函数式编程

前些年 Scala 大肆流行,打出来 Java 颠覆者的旗号,究其底气来源,无非是函数式和面向对象的“完美结合”,各式各样的“语法糖”,但其过高的学习门槛,又给了新来者当头一棒。 随着 Java8 的发布,Lambda 特性的引入,之前的焦灼局面是否有所转变,让我们一起揭开 Java 函数式编程的面纱: 1. 面向对象 VS 函数式。 2. FunctionalInterface 和 Lambda。 3. 类库的升级改造(默认方法、静态方法、Stream、Optional)。 4. Lambda 下模式的进化。 5. Lambda 下并发程序。
严选
606 订阅
微信扫描登录