![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构师之路
松花皮蛋me
京东资深工程师-梁松华,在稳定性保障、敏捷开发、JAVA高级、微服务架构方面有深入的理解
展开
-
值传递和引用传递,看这篇就够了!!!
概念介绍从学术严格角度来讲JAVA中只有值传递!!!但是就像JAVA编程规范那样约定俗成业界习惯了说成值传递和引用传递。值传递: JAVA中基本数据类型是值传递引用传递: JAVA中引用类型是引用传递实践说明伟大的领导人说过,实践是检验真理的唯一标准。那么就从一道面试题开始吧。首先创建一个实体Persion类(注意idea中安装Lombok插件)import lo...原创 2019-12-23 09:19:11 · 264 阅读 · 0 评论 -
高效能研发的四个习惯
不知道读者有没有下面的这些体验。案例一: 产品需求预评审、正式评审时,一些看似简单的需求,我们习惯简单思考后就答复,实现是没问题的,保证能按时按质完成任务,然而在开发过程或者测试过程还会拉上产品沟通困惑点,甚至验收时无法达到一致。案件二:和服务使用方联调时,别人觉得你的参数不合理,或者对他来说过于麻烦,最后不得不再去修改代码、发布、自测。案例三:测试同事和你...原创 2019-10-20 14:48:24 · 135 阅读 · 0 评论 -
谈谈上线变更
文章首发于公众号 松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解为什么今天要讨论这个话题呢?因为我最近上线时就犯了一个错误,想把这事和后来的复盘分享给大家,事故的过程如果没看懂可以直接往下拉看复盘。过程是这样的:我的需求是在方法参数POJO类中新增一个可选参数,我将这个参数定义在POJO类的父类的最后一个。其中提供的是远程调用RPC服务,所以...原创 2019-10-14 09:25:02 · 247 阅读 · 0 评论 -
作为非管理者的我们可以从西贝中学到什么
文章首发于公众号 松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解这几天看了一本经济管理的书,叫做《西贝的服务员为什么总爱笑》,副标题是贾国龙激励3万员工的管理哲学。这本书列举了很多感人的真事,能让我们看到这家企业的发展脉络和人情味的企业文化。但是作为普通读者,我无法真正领会到管理方面的经验,所以将书中打动我的一些点修改后摘录如下。一、把钱当成能...原创 2019-10-05 08:25:59 · 299 阅读 · 0 评论 -
我在极客时间的首次分享
文章首发于公众号 松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解当时我将自己的文章投稿到InfoQ,然后总编辑郭总邮件邀请我来分享,于是有了这次值得纪念的演讲。欢迎朋友们前往极客时间App观看。主题为:如何利用有效的资源抗住618大促流量大概内容如下:性能测试性能优化硬件优化可包括配置升级比如使用支持NIO的Tomcat版本代替低版本...原创 2019-10-03 19:46:23 · 439 阅读 · 0 评论 -
精益敏捷之认知篇
文章首发于公众号 松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解我们在开发过程中面临的最大挑战是什么?或许你之前没有认真思考过,那最好把目光转移一下,然后想一下,再回来阅读这篇文章。一百个读者心中有一百个哈姆雷特,你可能认为最大的挑战是部门协作墙,或者是产品的需求规划不清晰。这些答案都有一定的置信度,但是我想说的是,我们正处在一个快速变化的互联...原创 2019-08-29 09:31:37 · 119 阅读 · 0 评论 -
精益敏捷之站会
文章首发于公众号:松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解有些程序员其实不爱和技术领域外的人过多交流,包括上级领导,很烦他们不了解技术又不了解业务然后又喜欢问之问那的,其实这种烦恼是自己造成的,因为你没有主动和上级沟通。沟通的渠道有很多,可以面对面交流,也可以选择在会议中同步一些信息,可能你会跳出来反驳我的观点,领导那么忙,单独找他沟通太麻...原创 2019-08-26 21:29:15 · 141 阅读 · 0 评论 -
精益敏捷之任务拆解
这是一个关于著名高尔夫球手“老虎”伍兹的故事。高尔夫球手在打球的时候,可能会受到一些外界干扰。一般情况下还好,如果他已经开始挥杆,这时候受到了干扰,一般选手肯定是继续把杆挥下去,但通常的结果是打得不理想。而伍兹遇到这种情况,他会停下来,重新做挥杆的动作,保证了每一杆动作的标准。伍兹能停下来,固然是经过了大量的练习,但还有一个关键在于,对于别人而言,挥杆击球是一个动作,必须一气呵成。而对伍兹来...原创 2019-08-21 12:58:45 · 292 阅读 · 0 评论 -
分布式系统之中心化复制集管理
文章首发于公众号:松花皮蛋的黑板报作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解为了避免分布式系统单点异常引发的系统可靠性和高可用问题,可行的办法就是数据冗余,也称为复制集,那么复制集是怎么管理的呢?实际上管理方式可以有去中心化副本集和中心化副本集两种。去中心化副本集的特点是,无中心节点,所有节点地位平等,都可以接受读写请求,通过协商达到数据的一致。这种方式...原创 2019-08-25 16:38:17 · 91 阅读 · 0 评论 -
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 · 136 阅读 · 0 评论 -
秒杀系统技术解剖
我们知道秒杀类的活动对整个运营贡献是最大的,它的特点是瞬间流量俱增、请求数量远大于库存数量,导致保证下单扣库存准确性难度大,那我们前端、后端怎么做才能保证呢?下面是我的一些思考。先来说说整体的设计理念,秒杀类的活动光靠水平扩展扩增机器只能是个备选方案,它的成本和收益不对等。那我们就应该尽量利用有效的资源最大化处理业务,可从限流、异步处理、内存缓存角度考虑。接下来说说具体的落地方案。秒杀类的活...原创 2019-08-19 13:03:27 · 93 阅读 · 0 评论 -
Mysql高级使用和技巧
一、普通索引和唯一索引查询上来说,普通索引查找到满足条件的记录后会接着查找下一个记录(innodb的数据是按页读写的),判断是否满足。然而唯一索引是查询到了就立即返回了。所以如果你明确知道只有一条结果则应该加上limit 1更新上来说,普通索引会用到charge buffer优化,将更新操作记录在charge buffer中,不需要从磁盘中读取数据然后再更新,当下次查询该数据页时再读入内存然...原创 2019-08-02 13:13:54 · 127 阅读 · 0 评论 -
微服务架构之Msgpack序列化最佳实践
任何Java序列化工具,序列化/反序列化的时候,都是通过反射去遍历Class属性,然后挨个生成byte数组。Msgpack序列化的时候,filed不写key,只写index,类似数组,它的编码方式是type+length+body,这样传输时整体包会小很多,另外Msgpack支持启动预生成msgpack模版,而不用每次都反射(题外话:方法的反射调用会带来不少性能开销,原因主要有变长Object[...原创 2019-08-02 13:10:46 · 407 阅读 · 0 评论 -
分布式系统之一致性哈希算法
一致性哈希是用来解决缓存节点删除增加或者微服务架构中的粘性负载均衡后端节点删除增加时,避免大部分节点缓存失效的一种算法。原理是将对象和节点都进行相同hash算法( MurmurHash, MetroHash or SipHash1–3,SHA-1 or MD5)处理后映射到一个圆环中(This should be familiar to every Java programmer – the ha...原创 2019-08-01 22:59:57 · 245 阅读 · 0 评论 -
避免过度设计
许多文章都在强调不要过度设计自己的系统,但是没有道出个所以然来,所以本文列出一些经典的过度设计,希望能给你带来启发,在工程上做一些平衡,避免过度设计把我们推到另外一个复杂度上1、Engineering is more clever than Business工程师通常认为自己是最聪明的,这第一个错误容易让自己过于工程化。我们计划了100件事,业务方会提出我们之前没有考虑到的第101件。如果我...原创 2019-08-05 23:48:44 · 416 阅读 · 0 评论 -
leetcode并发题目解题报告JAVA版
一、Print in OrderSuppose we have a class:public class Foo { public void first() { print("first"); } public void second() { print("second"); } public void third() { print("third"); }}T...原创 2019-08-01 07:36:39 · 184 阅读 · 0 评论 -
分布式系统之Raft共识算法
分布式系统除了提升整个体统的性能外还有一个重要特征就是提高系统的可靠性。提供可靠性可以理解为系统中一台或多台的机器故障不会使系统不可用或者丢失数据。保证系统可靠性的关键就是多副本,一旦有多副本,那么就面临多副本之间的一致性问题一致性算法正是用于解决分布式环境下多副本之间数据一致性的问题的。业界最著名的一致性算法就是大名鼎鼎的Paxos,但Paxos是出了名的难懂,而Raft正是为了探索一种更易...原创 2019-07-30 13:01:38 · 182 阅读 · 0 评论 -
敏捷开发之LinkedIn的高效代码评审技巧
阅读和代码评审是每个工程师在日常工作中都要做的事情,然而一个标准的code review流程,实际上很难落地,它要求每次代码变更在部署到生产环境前,甚至是在提交合并前,都需要被另外一个小组成员进行正式的评审。在LinkedIn公司,自从2011年起code review成为了开发流程中法定、强制的一部分,也意味着它成为代码质量保证和知识分享中必不可少的一部分,目标是让团队成员能够迅速提升自己的技...原创 2019-07-29 22:43:27 · 187 阅读 · 0 评论 -
程序员都应该了解的运维知识经验
以一个经典问题抛砖引玉,当用户在浏览器中输入一个URL到底发生了什么?常见的URL格式是http://www.liangsonghua.me,由协议+域名+端口号组成,这里涉及到一个不可轻视的知识点,就是跨域,浏览器有一个同源策略限制,协议、域名、端口号有一个不同就会发生跨域冲突,从而保证了其他站点不能非法操作正常站点的cookie和修改dom元素,重要性不言而喻。当不得已冲突时,可以通过JS...原创 2019-07-29 22:39:12 · 245 阅读 · 0 评论