自定义博客皮肤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高级、微服务架构知识经验分享,公众号:松花皮蛋的黑板报

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

原创 梁老师小课堂|谈谈分布式任务调度

我们常说的定时任务有两种架构,一种是本地定时任务调度,另外一种是分布式的。前者将任务参数硬编码在代码配置中,通常还和业务代码混合在一起,部署时通过环境变量来区分。后者通过控制台动态管理任...

2020-12-06 19:17:05 11

原创 梁老师小课堂|谈谈模板方法模式

众多设计模式中,我觉得模板方法模式是很好理解,也很值得深入研究的技巧。定义如下,在一个包含多个步骤的业务框架中,大部分步骤是固定不变,并且适用于多种业务场景,可变的步骤则留给子类独立实现...

2020-11-08 21:46:57 4

原创 梁老师小课堂|谈谈线程池

线程池的使用场景通常有两大类。第一类场景是,并发执行,提高吞吐量。比如对多张图片进行校验,校验项有多个。在这种场景下,很容易出现父子任务,父子任务共用一个线程池的话可能会出现死锁,这个是...

2020-11-02 22:28:43 5

原创 梁老师小课堂|谈谈数据库的事务ACID

在数据库中新建一个字段并且设置为索引列,还有删除整张表的数据,类似这些操作都是一系列操作的组合,执行后不能出现中间状态,也就是不会出现新建了字段却不是索引的情况,也不会出现只有一部分数据...

2020-10-06 19:03:05 25

原创 梁老师小课堂|谈谈本地缓存

本地缓存指的是单机实例的JVM内存数据。多个实例共享着同一个分布式缓存,组成了多级缓存架构。这种多级缓存的特点是,最外层读取速度快但是空间小,越内层速度慢但是空间大,甚至最最内层还可以使...

2020-09-28 09:40:41 8

原创 当读写分离遇到事务

为了避免频繁创建构造成本大的对象,我们会选择使用线程池、连接池这类池化技术来复用对象。复用对象意味着可能在共享一个资源,如果前一个使用者使用完没有将对象属性值重置为初始状态的话,数据就错...

2020-09-23 23:13:01 9

原创 Redis中容易啋的坑

你好,我是梁松华,今天的话题是Redis中容易啋的坑。Redis内存数据库是一把双刃剑,用得好的话就合家欢喜,否则就是深陷泥潭。所以我今天来谈一谈使用它时容易碰到的坑,帮你探探路。我们在...

2020-09-21 08:07:31 76

原创 异常处理的那些事儿

你好,我是梁松华。今天想和你聊的话题是异常处理那些事儿。异常处理是很多新手搞不懂的逻辑,别人的代码有时进行了异常捕获,有时又不进行捕获,到底是为啥?有什么科学依据嘛?这种代码确定容易让人...

2020-08-14 22:04:22 37

原创 再谈任务分解

五万块钱能不能帮我做一个京东APP出来?很多人看到这句话都想笑,但是你看完这篇文章后就会后悔了。如果你恰恰从事互联网相关行业,比如产品经理、软件开发工程师,就更深有体会了。怎么理解呢?比...

2020-07-09 00:14:02 46

原创 可复用架构之分离关注点

你好,我是梁松华,今天想和你聊的话题是可复用架构之分离关注点。可复用架构的本质就是分和合。先打散再组合起来,只对外暴露各个场景下业务逻辑的调用入口。就好比,一个模型中有多个对象,这些对象...

2020-06-29 22:59:00 30

原创 程序员都惧怕的故障域

程序员最怕的是异常告警,特别是产品反馈有大范围的用户投诉,身上焦虑激素分泌必然瞬间暴涨。稍不留神就会眉毛胡子一把抓,无法从全局角度分析告警的来龙去脉。而本次分享正是针对故障域这个话题展示...

2020-06-02 23:21:37 131

原创 一文带你搞懂RPC核心原理

一、RPC的作用屏蔽远程调用跟本地调用的区别,让我们感觉就是调用项目内的方法。隐藏底层网络通信的复杂性,让我们更专注于业务逻辑。二、完整的RPC涉及到的核心点编解码、序列化和反序列、请...

2020-04-10 22:51:03 73

原创 代码审查常见问题,建议收藏

最近某宝弹窗事件导致其APP被大量用户删除,影响极其恶劣。我在想,如果他们的内部代码审查更加严格一点,少走形式,就能将隐患扼杀在摇篮里了。基于此,我们部门专门成立了由小组长和核心成员组...

2020-04-08 08:05:26 51

原创 浅谈组件化

我之前在做业务需求的时候,很多的个性化需求并不能快速响应,实现后有时也很难保证系统的可阅读性。不过好消息是,我今年在做京东内容领域的组件化改造和能力输出,之前的问题或许会得到根本性的解决...

2020-02-19 20:54:19 52

原创 在京东我们是怎么做版本迭代的

一个项目的完整生命周期包括以下几点,想法提出、竞品分析、调研、产品内部沟通确定、依赖解决、需求预审、技术方案初步确定、需求正式评审、技术方案正式评审、开发实现、代码评审、提给测试人员测试...

2020-02-13 19:45:40 86

原创 代码质量之持续提升

一、重构的作用我曾经单纯的认为修改少就意味着错误少,所以习惯性在原有逻辑上打补丁,可错误往往就是因为那不起眼的修改引起的。聪明的人警醒我,我存在认知错误,因为添加一个新功...

2020-01-03 20:18:56 34

原创 值传递和引用传递,看这篇就够了!!!

概念介绍从学术严格角度来讲JAVA中只有值传递!!!但是就像JAVA编程规范那样约定俗成业界习惯了说成值传递和引用传递。值传递: JAVA中基本数据类型是值传递引用传递: JAVA中引用类型是引用传递实践说明伟大的领导人说过,实践是检验真理的唯一标准。那么就从一道面试题开始吧。首先创建一个实体Persion类(注意idea中安装Lombok插件)import lo...

2019-12-23 09:19:11 154

原创 一周的闪念胶囊,总有一个能帮助到你

1、不管是做需求还是测试,都应该考虑整个链路,确保兼容性或者其他模块不受影响。比如内容创作改动,应该考虑到审核侧、内容分发侧是否正常。2、需求一定要经过测试。不要站在自己的角度,以为测试...

2019-12-19 22:48:10 30 1

原创 分布式系统之负载均衡(案例篇)

我们知道单机的承载能力和垂直扩展能力都是有上限的,它无法满足高并发高吞吐量的场景,所以常使用水平扩展也就是增加机器数量来满足需求。但是不同机房、同机房不同年代上架的机器的性能也是千差万别...

2019-12-04 09:24:34 15

转载 对开发人员有用的定律、理论、原则和模式

这篇文章包含对一些定律、原则以及模式的解释,但不提倡其中任何一个。它们的应用始终存在着争论,并且很大程度上取决于你正在做什么。一、定律1、布鲁克斯法则这个定律表明,在许...

2019-11-26 00:18:13 73

原创 一种叫做FMEA的设计理念

FMEA是一种系统工程的可靠性分析方法,又称为失效模式及其影响分析,它主要分析所有可能产生的故障模式及其对系统造成的所有可能影响,并按每一个故障模式的严重程度,并进行分级...

2019-11-24 17:19:19 134

原创 在京东我们是如何做服务降级的

当我们依赖的中间件资源或者是上游服务性能出现严重问题时,为了防止用户看到错误页面或者加载页面时间过长,我们需要将服务降级静态页面。或者将不影响主流程的旁路服务关闭掉,以让...

2019-11-12 09:13:24 213

原创 谈谈数据异构

京东的内容创作平台有很多的样式,比如文章、单品推荐、搭配、店铺上新、秒杀、直播预告、优惠卷。有些样式可以投稿到不同的频道,频道就好比露出的位置,频道露出的前提是内容质量审...

2019-11-10 00:33:12 81

原创 从数据闭环谈微服务拆分

数据闭环,并不是说我们要将所有的功能全包揽在身上,不依赖其他业务方,也不依赖中台。而是想强调一件事,那就是业务问题排查过程尽量不要牵扯过多团队,因为数据链路越长越乱处...

2019-11-01 13:52:04 58

原创 JVM调优分享

1.默认配置配置及说明:-Djava.library.path=/usr/local/lib-server -Xms6144m-Xmx6144m-XX:MaxPermS...

2019-10-30 20:09:33 37

原创 高效能研发的四个习惯

不知道读者有没有下面的这些体验。案例一: 产品需求预评审、正式评审时,一些看似简单的需求,我们习惯简单思考后就答复,实现是没问题的,保证能按时按质完成任务,然而在开发过程或者测试过程还会拉上产品沟通困惑点,甚至验收时无法达到一致。案件二:和服务使用方联调时,别人觉得你的参数不合理,或者对他来说过于麻烦,最后不得不再去修改代码、发布、自测。案例三:测试同事和你...

2019-10-20 14:48:24 55

原创 谈谈上线变更

文章首发于公众号 松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解为什么今天要讨论这个话题呢?因为我最近上线时就犯了一个错误,想把这事和后来的复盘分享给大家,事故的过程如果没看懂可以直接往下拉看复盘。过程是这样的:我的需求是在方法参数POJO类中新增一个可选参数,我将这个参数定义在POJO类的父类的最后一个。其中提供的是远程调用RPC服务,所以...

2019-10-14 09:25:02 57

原创 作为非管理者的我们可以从西贝中学到什么

文章首发于公众号 松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解这几天看了一本经济管理的书,叫做《西贝的服务员为什么总爱笑》,副标题是贾国龙激励3万员工的管理哲学。这本书列举了很多感人的真事,能让我们看到这家企业的发展脉络和人情味的企业文化。但是作为普通读者,我无法真正领会到管理方面的经验,所以将书中打动我的一些点修改后摘录如下。一、把钱当成能...

2019-10-05 08:25:59 63

原创 我在极客时间的首次分享

文章首发于公众号 松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解当时我将自己的文章投稿到InfoQ,然后总编辑郭总邮件邀请我来分享,于是有了这次值得纪念的演讲。欢迎朋友们前往极客时间App观看。主题为:如何利用有效的资源抗住618大促流量大概内容如下:性能测试性能优化硬件优化可包括配置升级比如使用支持NIO的Tomcat版本代替低版本...

2019-10-03 19:46:23 135

原创 谈谈技术债务

最近在我身上发生了这么一件事。我主要负责内容创作的,提供了一个写入的逻辑接口,但是在校验链中对图片来源空间包括域名进行了校验,你可以理解空间是一种业务名位置,空间涉及到精...

2019-09-28 11:58:55 192

原创 谈谈系统监控应该怎么做

什么样的系统才算成功的呢?很显然,能让系统关联方满意的系统才算是成功的,想要做好这点,必须做好监控。监控是系统的眼睛,它能让我们及时发现问题,不至于被动地...

2019-09-17 00:32:04 69

原创 我在极客时间的分享

当时我将自己的文章投稿到InfoQ,然后总编辑郭总邮件邀请我来分享,于是有了这次值得纪念的演讲。欢迎朋友们前往极客时间App观看。主题为:如何利用有效的资源抗住61...

2019-09-11 08:15:04 219

原创 精益敏捷之认知篇

文章首发于公众号 松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解我们在开发过程中面临的最大挑战是什么?或许你之前没有认真思考过,那最好把目光转移一下,然后想一下,再回来阅读这篇文章。一百个读者心中有一百个哈姆雷特,你可能认为最大的挑战是部门协作墙,或者是产品的需求规划不清晰。这些答案都有一定的置信度,但是我想说的是,我们正处在一个快速变化的互联...

2019-08-29 09:31:37 44

原创 精益敏捷之站会

文章首发于公众号:松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解有些程序员其实不爱和技术领域外的人过多交流,包括上级领导,很烦他们不了解技术又不了解业务然后又喜欢问之问那的,其实这种烦恼是自己造成的,因为你没有主动和上级沟通。沟通的渠道有很多,可以面对面交流,也可以选择在会议中同步一些信息,可能你会跳出来反驳我的观点,领导那么忙,单独找他沟通太麻...

2019-08-26 21:29:15 47

原创 分布式系统之中心化复制集管理

文章首发于公众号:松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解为了避免分布式系统单点异常引发的系统可靠性和高可用问题,可行的办法就是数据冗余,也称为复制集,那么复制集是怎么管理的呢?实际上管理方式可以有去中心化副本集和中心化副本集两种。去中心化副本集的特点是,无中心节点,所有节点地位平等,都可以接受读写请求,通过协商达到数据的一致。这种方式...

2019-08-25 16:38:17 32

原创 精益敏捷之任务拆解

这是一个关于著名高尔夫球手“老虎”伍兹的故事。高尔夫球手在打球的时候,可能会受到一些外界干扰。一般情况下还好,如果他已经开始挥杆,这时候受到了干扰,一般选手肯定是继续把杆挥下去,但通常的结果是打得不理想。而伍兹遇到这种情况,他会停下来,重新做挥杆的动作,保证了每一杆动作的标准。伍兹能停下来,固然是经过了大量的练习,但还有一个关键在于,对于别人而言,挥杆击球是一个动作,必须一气呵成。而对伍兹来...

2019-08-21 12:58:45 92

原创 秒杀系统技术解剖

我们知道秒杀类的活动对整个运营贡献是最大的,它的特点是瞬间流量俱增、请求数量远大于库存数量,导致保证下单扣库存准确性难度大,那我们前端、后端怎么做才能保证呢?下面是我的一些思考。先来说说整体的设计理念,秒杀类的活动光靠水平扩展扩增机器只能是个备选方案,它的成本和收益不对等。那我们就应该尽量利用有效的资源最大化处理业务,可从限流、异步处理、内存缓存角度考虑。接下来说说具体的落地方案。秒杀类的活...

2019-08-19 13:03:27 28

原创 JVM解剖乐园

1、JVM锁粗化和循环原文标题:JVM Anatomy Quark #1: Lock Coarsening and Loops众所周知Hotsport编译器会进行JVM锁粗化和优化,它将相邻的锁区块进行合并,有效减少锁的的占用成本,类似synchronized (obj) { // statements 1}synchronized (obj) { // statements ...

2019-08-12 09:34:52 79

原创 ARTS-22-JVM解剖乐园

1、JVM锁粗化和循环原文标题:JVM Anatomy Quark #1: Lock Coarsening and Loops众所周知Hotsport编译器会进行JVM锁...

2019-08-11 22:00:08 39

原创 避免过度设计

许多文章都在强调不要过度设计自己的系统,但是没有道出个所以然来,所以本文列出一些经典的过度设计,希望能给你带来启发,在工程上做一些平衡,避免过度设计把我们推到另外一个复杂度上1、Engineering is more clever than Business工程师通常认为自己是最聪明的,这第一个错误容易让自己过于工程化。我们计划了100件事,业务方会提出我们之前没有考虑到的第101件。如果我...

2019-08-05 23:48:44 235

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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