自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JAVA前线技术专栏

微信公众号「JAVA前线」

  • 博客(133)
  • 收藏
  • 关注

原创 我的声明和公众号

本人技术员一枚,以上博客都是对技术的体会和感悟,不能保证全部博文正确或最优,期待大牛们指正。博文仅供学习交流,不能用作商业用途,不可作为除学习外的任何用途。本人的原创文章,未经允许不得转载。十分期待并欢迎技术以及生活的爱好者交流学习。敬请关注我的公众号【IT徐胖子】...

2012-02-05 11:25:18 2344 5

原创 浅析分布式业务一致性方案

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习。

2024-04-13 21:55:26 980

原创 遥远的相似性:足球理论和技术架构五大相通之处

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习足球是一项复杂而精妙的运动项目,其中蕴含的一些思想和方法论,与其它领域有相通之处。

2024-02-14 10:09:06 853

原创 吸积效应:为什么接口会越来越臃肿?我们从一个接口说起

从字面上解读可以将这一过程理解为吸附和积累。如同一粒粒沙子,每次加入一点点,最终汇聚成一座沙山。在软件开发的世界中,无论每一次的代码迭代在表面上看起来多么独立和微不足道,它们都在客观上促使代码量不断增长。

2023-12-03 12:51:40 894

原创 一体多面:哪有什么DO、BO、DTO,只不过是司空见惯的日常

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习。

2023-11-20 12:39:33 199

原创 八个短语速记架构设计八个维度

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习。

2023-07-15 08:43:44 767

原创 架构设计之三种业务模型:活动资源模型、契约模型、模板模型

活动资源模型中资源只设置本资源最本质的属性,活动灵活控制规则。契约模型中一旦契约签订不允许再改变,这也意味着契约需要记录大而全的信息。模板模型中模板定义规则,业务对象绑定模板,并且需要实时感知模板变化

2023-06-10 11:13:36 516

原创 探讨一次订单拆单流程

消费者在购物时,电商平台会生成订单。订单相当于是购物者和电商平台签订的合同,后续电商平台会进行履约。消费者一般只关心买什么东西、付多少钱、货什么时候送达,对底层订单逻辑并不关心,对订单拆单这个概念也比较陌生,本文我们探讨一次基本订单拆单流程。需要说明真实拆单场景非常复杂,不同公司拆单策略也不同,本文只是讲解一个简单实例,复杂场景需要根据策略具体分析。本文使用的是测试数据仅供演示。

2023-05-27 08:29:57 616

原创 商品领域十二张基础表设计思路与实现

商品在电商领域中是一个非常重要的领域,交易行为前提是有商品信息存在。本文我们分析商品表基本设计,其它复杂场景可以在此基础上进行扩展。需要说明第一本文所用数据是测试数据,可能与真实数据有偏差,仅供演示。第二本文展示商品核心字段,一些通用字段不展示

2023-05-21 14:58:09 1544

原创 长文多图一步步讲清楚:DDD理论、建模与代码实现全流程

本文第一提出并回答了六个问题,第二介绍了DDD相关基本概念,第三介绍了DDD分析七大步骤,第四介绍了代码分层结构,希望本文对大家有所帮助。欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习。

2023-05-11 06:03:34 921 1

原创 MySQL索引失效十种场景与优化方案

本文第一进行测试数据准备,第二介绍执行计划相关知识,第三介绍索引失效10种场景:查询类型错误,索引列参与运算,错误使用通配符,未用到覆盖索引,OR连接无索引字段,MySQL放弃使用索引,联合索引中索引不完整,索引中断,非等值匹配,最左索引缺失

2023-05-07 08:01:14 205

原创 MySQL深分页问题原理与三种解决方案

本文第一介绍深分页问题表现和原因。第二介绍深分页问题三种解决方法,方案一是从业务维度优化,方案二是使用覆盖索引进行优化,方案三是使用Id分页。第三展示MyBatis相关代码

2023-05-03 12:34:52 1578

原创 SpringBoot中自定义starter实例与原理

第一章节介绍如何自定义一个简单启动器,第二章节对自定义启动器进行测试,第三章节通过源码分析介绍启动器运行原理,第四章进行知识延伸介绍spring官方启动器,使用第三方启动器相关知识,希望本文对大家有所帮助。

2023-04-15 08:07:00 270

原创 遥远的相似性:经济学原理如何应用于技术架构

第一本文通过实例介绍了经济学中比较优势原理。第二本文不同领域有相通之处,例如技术架构中架构演进、领域划分、组织划分与任务拆分都体现了分工与交互。第三本文介绍了分工合作需要注意的问题,例如思维陷阱、复杂度上升与沟通成本上升

2023-04-08 10:09:40 99

原创 复杂任务处理三部曲:系统性思维、结构化思维、流程化管理

在面对复杂任务时,系统性思维核心是明确目标,结构化思维核心是拆解任务,流程化管理核心是及时抛出风险,可以使用三张表格管理项目进度

2023-03-05 20:15:18 733

原创 六个思考维度:DDD + SpringBoot工程九层结构图解与实战

微服务和九层结构表述的是不同维度概念。微服务重点描述系统与系统之间交互关系,九层结构重点描述一个工程不同模块之间交互关系

2023-02-03 09:48:30 6804 1

原创 微服务之变化多端:入口要灵活、服务要稳定

第一点上图所有应用都可以使用九层结构。第二点中台应用承载核心逻辑,暴露核心接口,中台并不要理解所有端数据结构,而是通过client接口暴露相对稳定的数据。第三点针对面向B端、面向C端、面向运营三种端,各自拆分出一个应用,在此应用中进行转换、适配和裁剪,并且处理各自业务。第四点什么是大中台、小前台思想?中台提供稳定服务,前台提供灵活入口。第五点如果后续要做秒杀系统,那么也可以理解其为一个前台应用(seckill-front)聚合各种中台接口

2023-02-03 09:47:25 268

原创 使用分布式锁一定注意两个坑

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习

2023-02-03 09:44:45 240

原创 五个分层维度:SpringBoot工程分层实战

分层优点是每层只专注本层工作,可以类比设计模式单一职责原则,或者经济学比较优势原理,每层只做本层最擅长的事情

2022-12-05 22:57:44 1413

原创 服务端技术方案应该具有哪些章节

本文展示了一篇技术方案需要具备的章节,需要说明根据需求复杂度,并不是所有章节都必须。如果一个需求复杂度不高,可以只选取其中几个章节

2022-11-30 21:35:51 376

原创 通过压测表格讨论并发量、RT、QPS量化关系

通过压测介绍一个公式,定量描述了并发量、RT、QPS三者关系,并阐述了应该如何理解这个公式和适用场景

2022-09-24 08:06:52 1521

原创 异步性能不如同步?通过压测讨论应该如何设置线程数

结合不同线程池配置进行压测,如果线程池选择不合适,异步执行性能不如同步,所以要配置合适线程数

2022-09-11 16:10:31 180

原创 通过一款插件动态观察ES分片如何分布

第一本文介绍了ES基本概念并提出了两个问题,第二本文为了回答这两个问题搭建了ES集群,第三本文通过六个维度回答了第一个问题,第四本文通过五个维度回答了第二个问题

2022-08-22 08:52:52 653

原创 性能问题从发现到优化一般思路

技术系统有一个发展过程,在业务初期主要是实现业务功能和目标,由于数据和访问量都不大,所以性能问题并不作为首要考虑。但是随着业务发展,随着数据和访问量增大甚至激增,造成例如首页五秒钟才能展示等问题,这种不佳体验会造成用户流失,此时性能就是必须面对之问题。早期:主要实现业务需求,性能非重点考虑中期:性能问题注解显现,影响业务发展后期:技术迭代性能与业务必须同时考虑如何发现性能问题,并且最终如何解决性能问题就是本文讨论之要点。...

2022-08-08 08:29:57 181

原创 通过实例讲清楚MongoDB九种聚合操作

第一介绍了MongoDB与关系型数据库关系,并且准备本文需要的测试数据,第二介绍了聚合语法和聚合管道相关概念,第三通过实例介绍了如何使用聚合操作

2022-07-02 11:02:01 306

原创 《结合DDD讲清楚编写技术方案的七大维度》再讨论

第一章节回顾《结合DDD讲清楚编写技术方案七大维度》这篇文章并且提出扩展两个维度:概念映射与代码结构,第二三四章节对应扩展第一个维度概念映射,第五章节对应扩展第二个维度代码结构...

2022-06-19 14:37:16 230

原创 MySQL自增主键用完报什么错?有什么建议?

MySQL自增主键用完报什么错?有什么建议?

2022-06-04 14:58:59 280

原创 多图详解:七种具体方法增强代码可扩展性

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 六大原则在设计模式中有六大设计原则:单一职责原则:一个类只做一件事里式替换原则:子类可以扩展父类依赖倒置原则:面向接口编程接口隔离原则:高内聚低耦合迪米特法则:最少知道原则开闭原则:关闭修改,开放新增我认为在这六个原则中开闭原则最为重要,开闭原则是可扩展性的重要基石。第一个原因是需求变化时应该通过新.

2022-05-08 08:52:55 2397 2

原创 自定义validation注解:解决动态多字段联动校验问题

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 文章概述javax.validation是基于JSR-303标准定义的一组接口,目的是使开发者简洁地校验参数,hibernate-validator实现了这一组接口,可以作为工具独立引用。<dependency> <groupId>javax.validation</groupI.

2022-05-03 17:22:33 7164 1

原创 一文讲清楚SpringBoot六种读取配置方式

本文梳理了SpringBoot六种读取配置方式,大家在项目中可以进行灵活组合和应用,希望本文对大家有所帮助

2022-04-23 19:41:40 784

原创 OAuth2.0原理图解:第三方网站为什么可以使用微信登录

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 文章概述假设小明开发了一个A网站,需要支持微信登陆和淘宝账号登陆。如果你是微信或者淘宝开发人员,你会怎么设计这个功能?本文结合淘宝开放平台官方文档以淘宝账号为例。从最简单视角去思考,用户在网站A输入淘宝用户名和密码,网站A调用淘宝接口校验输入信息,校验通过则登陆成功,整体流程如下图:上述思路存在什么问题?最显.

2022-02-20 17:11:56 674

原创 长文图解七种负载均衡策略

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 三组概念负载均衡、集群容错、服务降级这三个概念在DUBBO中非常重要,同理其它分布式框架也都有相同或者相近之概念。从调用顺序角度分析,调用顺序依次是负载均衡、集群容错、服务降级。从解决问题角度分析,负载均衡解决了「选哪一个」问题,集群容错解决了「换哪一个」问题,服务降级解决了「全错怎么办」问题。假设有1个服务消费者面.

2022-02-03 20:45:24 2059

原创 DUBBO负载均衡、集群容错、服务降级有什么区别与联系

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 文章概述负载均衡、集群容错、服务降级这三个概念在DUBBO中非常重要,同理其它分布式框架也都有相同或者相近之概念,那么三者分别代表什么含义,有什么联系和区别,解决了什么问题,正是本文需要回答的问题。从调用顺序角度分析,调用顺序依次是负载均衡、集群容错、服务降级。从解决问题角度分析,负载均衡解决了「选哪一个」问题,集群.

2022-01-28 13:29:56 1371

原创 一文讲清楚DUBBO SPI机制六个特性

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 文章概述SPI(Service Provider Interface)是一种服务发现机制,本质是将接口实现类全限定名配置在文件,并由服务加载器读取配置文件加载实现类,这样可以在运行时动态为接口替换实现类,通过SPI机制可以为程序提供拓展功能。之前在文章《JDK SPI机制》已经讨论了JDK SPI如何实现,在文章《S.

2022-01-18 12:26:00 626

原创 多图详解:二叉堆原理并手写一个优先队列

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 优先队列应用队列是一种先进先出的数据结构,先放入队列的元素会先出队列。但是有这样一种场景,我们希望出队列顺序不是根据放入队列顺序,而是根据元素本身具有的优先级,例如元素优先级高则先出队列,这时就要使用优先队列。1.1 应用一我们设想这样一种发送消息的业务场景:消息具有优先级属性,在同一个队列中优先发送优先级高的消.

2022-01-03 09:44:16 417

原创 MySQL乐观锁扣减库存原理图解

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 基础知识在电商系统中扣减库存是一步非常关键的操作,例如秒杀系统中一定要防止超卖情况出现,如果商家设置了100件库存但是最后卖出1000件,这样就会产生资金损失。在扣减库存时一般使用如下语句:udpate goods set stock = stock - #{acquire} where sku_id = #{sk.

2021-12-29 07:57:53 1200 1

原创 复杂、繁杂、庞杂:图解七种代码耦合类型

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 复杂、繁杂、庞杂在开发工作中我们经常会听到:这个业务很复杂,这个系统很复杂,这个逻辑很复杂,只要是处理遇到困难的场景,似乎都可以使用复杂这个词进行描述。但是我认为困难之所以困难,原因还是有所不同的,不能用复杂这个词笼而统之,有加以区分的必要。大体上我认为可以分为复杂、繁杂、庞杂三个类型。复杂和繁杂二者均包含分支多和逻.

2021-12-11 10:51:59 3822 2

原创 架构权衡评估方法(ATAM):如何评估一个系统的质量

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 质量属性在系统设计和开发过程中,我们比较容易关注系统的功能维度,例如有没有实现预期功能,输入参数和输出参数是否匹配等等,这是比较容易衡量的。但是我们不能就此止步,因为满足功能是系统的基本要求,还需要关注系统的非功能维度,例如系统性能是否优秀,代码可扩展性如何,出现异常是否可以自动降级等等,这些指标决定了系统能否提供高.

2021-11-07 13:55:45 7751

原创 长文多图:结合DDD讲清楚编写技术方案的七大维度

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 为什么要写技术文档回顾软件开发历史,我们可以将其分为程序设计时代、程序系统时代和软件工程时代三大历史阶段。在程序设计时代(1946-1956),软件开发主要依赖于个人编程技巧,技术文档只要存在个人开发者的大脑即可,因为没有沟通和协作需要,编写技术文档也不具有紧迫性。在程序系统时代(1956-1968),计算机性能显著.

2021-10-01 21:47:28 611

原创 多图详解:如何不停服分库分表

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 理论知识1.1 分库分表是否必要分库分表确实可以解决单表数据量大这个问题,但是并非首选。因为分库分表至少引入了三个必须解决的突出问题。第一是分库分表方案本身具有的复杂性。第二是本地事务失效问题,原本在同一个数据库中可以保证强一致性业务逻辑,分库之后事务失效。第三是难以聚合查询问题,因为分库分表后查询条件中必须带有s.

2021-08-30 12:57:39 520 1

空空如也

空空如也

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

TA关注的人

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