自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

新栋BOOK

经历过才知道有多美 ,脚踏实地,做一个不飘的架构师。公众号 [程序架道]

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

原创 一周技术学习笔记(第67期)-CPU的设计跟开闭原则有关系吗

你能想到CPU的设计是开闭原则的设计吗说CPU的设计很符合软件设计的开闭原则,估计一般的同学肯定不会这样意识到。其实我也一样不太可能把它们能够想在一起,并将它们关联起来。可确实就这样发生了。实际上CPU的设计本身就是朝着开闭去的。CPU,中央处理器,它要运行指令,这些指令是稳定的。比如加减乘除的计算类指令,读写数据的IO指令。但是,指令序列是变化的,是按照循环,还是按照分...

2022-06-05 22:12:25 92

原创 一周技术学习笔记(第66期)-设计模式,除了面试还有什么用处

设计模式有什么用面试的时候会被问到。当然,这的确是一个作用。还是先从“模式”这个概念说起,每一个大类的问题都会有自己的模式,比如生活中教育孩子,有自然生长模式,有专制型模式、有溺爱型模式等,在教育孩子的落地实践上自觉不自觉的都落到了某个模式里面。在我们学习的软件技术中,比如分布式系统环境下,处理高可用问题,我们在数据库上采用主从复制模式,在应用服务的性能上采用本地缓存模式...

2022-05-29 22:02:42 103

原创 一周技术学习笔记(第65期)-到底是返回错误码还是返回异常信息

1、分布式程序调用到底是返回错误码还是返回错误信息分布式系统环境里面,RPC往往被我们称为:连接各个服务之间的纽带。当然,也有MQ。如果纽带这个词显得高雅,通俗点就是信息交互,或者通信。好,还是说RPC。现如今,市面上有很多RPC框架,它所要解决的本质问题就是A系统能够和B系统通信,还有智能化些的服务自动发现作为基础。我们现在主要关注A能够调用B,如果B程序出现错误了是返...

2022-05-22 22:04:59 374

原创 一周技术学习笔记(第64期)-分布式系统是“小米加步枪”的集合

分布式系统是“小米加步枪”的集合2008年阿里发起了去IOE运动,也就是我们说的IBM小型机、Oracle数据库和EMC存储设备。当时我在工作的时候听到这个消息,想当然的理解为这是因为这些厂商的东西太贵了。那么随着后来我对分布式系统的逐步理解,除了贵的原因,除了单机性能无法突破摩尔定律的约束。还有一个重要的原因,就是解决了大规模软件系统的开发效率和开发成本的问题。怎么解决...

2022-05-15 22:01:00 86

原创 一周技术学习笔记(第63期)-扩容是一种进攻思维

用户视角和技术视角看问题用户进入景区看到的是漂亮干净的古代建筑,想到的是宏伟壮观,园区维护人员看到的是墙面是不是该粉刷了,考虑的是上次粉刷距离现在多久了。用户进入景区的小卖部看到的是饮料、面包等实物资源,园区后勤人员看到的是货架上面的东西还能卖多久,是否库存充足。诸如此类。用户和维护人员看到的永远是两个视角的内容,因为他们本身就站在不同的视角看问题。软件也一样。一样会有用...

2022-05-08 17:44:16 98

原创 一周技术学习笔记(第62期)-CQRS是”有点不同“的读写分离

对数据的操作一共就四种。图自https://time.geekbang.org/dailylesson/detail/100056986我们把这四种操作,又划分为两类,读和写。为了提升对数据库的性能,我们又做了读写分离。上面这个图是我们最为熟悉的读写分离场景了,另外我们也熟悉了这样的方法有两个不好地方。1、写库有单点故障问题。2、数据库同步有延迟。TIP:读写分离,更主要...

2022-05-01 21:24:44 969

原创 一周技术学习笔记(第61期)-如何编写可测试的代码

如何编写可测试的代码重构和测试是要成对出现的。重构是在不改变原先功能的前提下就行的代码调整。那你怎么确保没有改变原先的功能呢,就需要测试。要测试,不是说,我硬写一个Junit、Spock,最关键的是你的代码要可测试。下面这段代码可测试吗?代码片段选自极客专栏《遗留系统现代化实战》看到这样的代码,你可能会说,这质量还行啊,可读性不错,职责也比较清晰。的确是这样,但这样的代码...

2022-04-24 22:35:00 494

原创 一周技术学习笔记(第60期)-软件模块不同的修改原因和频率是怎么发生的

我们已经知道面向对象的目的是为了模块化。这点请毋庸置疑,如果还不理解就想想过程编程,满眼的方法,以及方法调用,作为程序员的人看了,会疯掉。TIP:高内聚、低耦合是模块化的状态。因为一个人的心智消化系统只能够7+-2个事物。抽象成对象,再“凝结”成模块化是最好的解决方法。我们已经知道SRP是SOLID五大设计原则的“起始”原则,“终止”原则是OCP。所以SRP是每个面向对象...

2022-04-17 20:33:00 109

原创 一周技术学习笔记(第59期)-软件架构,到底在架构什么

软件架构,到底在架构什么。在架构组织结构。这里的组织,是指,组件、类、方法、包、服务等等,这里的结构是指它们的内聚性是否合理,它们之间的通信是否顺畅。无论从宏观的服务与服务、系统与系统之间,还是微观的类与类、方法与方法之间,对组织结构的设计都是我们的重点。TIP:“在架构组织结构”中的架构在这里是一个动词。这时,我们就很清楚软件架构到底在架构什么了。想想也是,现实世界中的...

2022-04-10 20:51:00 241

原创 一周技术学习笔记(第58期)-如何突破第四章障碍

你平时有没有过这样的经历,如果有个问题搞不懂,看一本书里面某块内容不能完全消化,就会堵得慌,而且这种堵不会因为你不去想它,就消失。我这次就遇到了。《微服务实战》这本书,一共13章节,除了第4章,其余内容我全消化了,却唯独第4章内容,不能被我完全消化。TIP:章节之间没有太多强关联性。都说熟能生巧,我一直想写关于这块的内容,但是那个巧一直长不出来,却无从落笔。今天,这个小长...

2022-04-03 21:55:00 78

原创 一周技术学习笔记(第57期)-需求那么多?-其实就两种

我的同事小A是一位后端研发工程师,最近在抱怨需求实在太多。业务方1要求在给商家返回的订单信息中增加库存剩余情况;业务方2要求在给用户发放权益前增加对用户积分的判断;业务方1又要增加这个订单,如果参与促销的话,再给商家返回单次促销收益情况;业务方X。。。我跟小A聊了下。系统是不是已经按照微服务的理念去实践的,是。那么一个后端系统是不是下面这样的交互方式?图1是。我说,需求...

2022-03-27 21:40:00 72

原创 一周技术思考笔记(第56期)-微服务的“二次创业”

在我们每个人的大脑里面,对一件事情,一类事物,如果没有一个概念的话,我们的大脑会有意识地躲避那件事情,从而不去想它,更不会继续思考它。微服务、DDD、中台这些词汇,恰恰是这样的概念。正是有...

2022-03-20 22:02:00 77

原创 一周技术思考笔记(第55期)-一名技术人员如何快速了解业务

我是一名技术研发人员,我应该如何快速地熟悉业务。一天,我去市场买萝卜。1、我:卖萝卜大哥,您这萝卜多少钱一斤?2、萝卜大哥:8块一斤。3、我:好的,价钱合适,买两斤。4、萝卜大哥:称好了,...

2022-03-13 21:59:11 325

原创 一周技术思考笔记(第54期)-活代码、睡代码、死代码

这周继续学习《UNIX编程艺术》这本书。如果有一天你听到或者看到,有人将我们周围的代码分成这样三类:活代码、睡代码、死代码,你会怎样来理解它们?活代码周围存在一个非常活跃的开发社团。睡代码...

2022-03-06 21:56:28 353

原创 一周技术思考笔记(第53期)-计算机编程的本质就是控制复杂度

近期在读《UNIX编程艺术》这本书,每天晚上回到家,会在群里跟大家分享书中的内容。实在太美妙了这本书的内容。后面还会在群里持续分享,另外计划用几期做一些我当时的笔记摘抄分享给大家,对这些内...

2022-02-27 22:00:00 269

原创 一周技术思考笔记(第52期)-从卖红薯,看什么是业务,什么是领域

小区楼下有个卖烤红薯的。时常路过,就买一个。这天想。如果我是一个卖烤红薯的个体户,我的工作主要有哪些。那么,大致会分为两部分。第一部分是我要生火烧炭,观察红薯的状态,并且将熟透的红薯挑选出...

2022-02-20 22:35:00 164

原创 一周技术思考笔记(第51期)-如何避免逻辑泄露

你听过,代码逃逸,逃逸出原有的设计。你听过,架构腐化,导致出现了坏味道。可是,你听过逻辑泄露吗。在应用领域驱动设计的时候,聚合与聚合根(Aggregation Root)是构成“富含知识的...

2022-02-13 22:52:50 251

原创 一周技术思考笔记(第50期)-软件开发的核心难度在哪里

软件开发的核心难度在于处理隐藏在业务知识中的复杂度。自从进入了“敏捷”时代,大家都好像要以速度取胜,唯恐天下武功唯快不能破,业务部门的同学想着要快速解决业务问题,研发部的同学想着快速解决技...

2022-01-30 22:02:53 395

原创 一周技术思考笔记(第49期)-到底是谁在需要一个接口

面向接口编程,都快成了程序员的一句口头禅了,但是,真正做到了吗。你对自己说,对周围的伙伴说,做到了。怎么做到的。你看,每个项目中所有的service都有一个interface,一个impl...

2022-01-23 21:36:14 225

原创 一周技术思考笔记(第48期)-多进程单线程还是单进程多线程

观察了周围,工作了几年,大部分人都是埋着头拉车,而不愿去抬头思考一下,思考spring为什么能够管理那么多的javabean,思考Tomcat为什么能够把用户的请求转发给java类,这些都...

2022-01-16 20:26:59 821

原创 时间不语,岁月要歌-我的2021

每年这个时间前后要写一篇总结,这已是第5个年头。照例,工作上的事情不方便讲,主要还是工作之外的事情,同样也主要是说向上的事情,烦恼不会展现给你。1、今年做了一个决定,要写100期技术思考文...

2022-01-01 21:49:26 838

原创 为什么我很用力,可还是学不好

图自网络1、为什么我很用力,可还是学不好我上中学的时候经常被班上的女生“围攻”,原因是她们说我都没有努力过,凭什么学习成绩那么好。这些女同学的每本书都记满了笔记,还用各种颜色的荧光笔画满了...

2021-12-26 11:00:46 514

原创 代码为什么会影响开发效率

首先,这个问题的前提是,肯定会影响。下面这个是网上的一张图。你说,这段代码对于开发者来讲清晰易懂吗?它的可读性在哪里?开发者能够很容易的来为这段代码编写单元测试吗?它的可测试性在哪里?当这...

2021-12-19 11:03:15 667

原创 流量来了,去努力保护好你的系统

怎么保护,又怎么努力。保护,我们要有方法,勤梳理、扩机器、加限流、做降级。努力,我们要在这些方法上进行有效、可持续落地。今天,我们不谈具体的概念,或者是算法,比如限流,目前已有很多这方面的...

2021-12-05 10:28:05 1305

原创 写代码,你以为的快方法,可能是慢方法

周一来到,小明接手了一个需求。要搞一次促销抽奖活动,奖池里配置了很多奖项,我们需要按运营预先配置的概率抽中一个奖项。解决思路貌似很简单,生成一个随机数,匹配符合该随机数生成概率的奖项即可。...

2021-11-28 09:35:33 144

原创 编写代码的速度,取决于读周边代码的速度

之前,我们也说过,程序员写代码的时间,要远远小于读代码的时间。正应了那句架构场景,读多写少。这个比例是多少呢,读与写花费的时间比例超过10:1。为什么这么大差距,想想看自己写代码的时候,是...

2021-11-20 16:15:42 237

原创 如果你在坑里,至少别再往下挖了

1、我最近在复习限流方面的知识,刚好在极客时间上面看到了一篇文章。限流【策略】,这里我特意用中括号将策略两字括住,后面我会再拿出来讲。常用的限流策略,有漏桶策略和令牌桶策略。这两种算法策略...

2021-11-14 08:00:00 675

原创 软件系统结构中都有哪些“关系户”

图自网络人、系统、机器之间的关系在一个软件开发环境里面会包含三种角色,分别是人、系统和机器。这里的人是指我们的程序员,系统就是程序员开发出的软件系统,然后把这个系统发布到机器上面并运行起来...

2021-11-07 08:00:00 230

原创 一周技术思考(第38期)-请重新认识“我”

大家好,我是微观世界的产物。我可以通过Thread类new一个出来,也可以通过Runnable实现出来。我跟各个系统平台有很大关系,我虽然诞生自JVM的虚拟环境,但运行时的程序本身是用C语...

2021-10-30 16:00:00 65

原创 一周技术思考(第37期)-如何快速的学好并发编程

图自网络前言曾经有一个人在一个 4C8G 的机器上把一个 Tomcat 节点的线程池配置到了 4000。问他为什么要这么配置,他说想支持 4000 的并发用户。并发是什么,我们一般知道肯定...

2021-10-23 12:18:45 96

原创 一周技术思考(第36期)-缓存踩踏与惊群效应

图自网络”10年前的那一天Facebook发生了什么“,本想用这个题目,但不符合本系列的气质,那,那天到底发生了什么呢。Facebook的事故介绍2010年9月23日,Facebook遭遇...

2021-10-17 11:20:59 319

原创 用计划打败时间

在今年国庆假期前我发了一份被大家认为的假期KPI,一直想找个时间来汇报下这份绩效到底完成了怎么样,今天得以机会,开始汇报。这次休了3天年假,时间范围从9.30到10.10。公司里面工作上,...

2021-10-16 11:43:18 58

原创 一周技术思考(第35期)-如何让自己舒服的阅读别人的代码

图《长津湖》你会经常阅读别人的代码,毕竟新开发一套系统应用的机会还是有限的,我们在代码上也映照了架构上的一个词汇“读多写少”。当你接手一个老系统的时候,你都是花费了多长的时间,才彻底搞懂了...

2021-10-10 14:27:51 134

原创 一周技术思考(第34期)-系统可用性问题与数字7的渊源

图1 电影《我和我的父辈》1、为什么当我们谈系统可用性问题的时候经常跟数字7有关系。对一个事物进行总结,往往我们会列出1、2、3...出来,但是很少有人会把这个数字撑到10几个,因为大多数...

2021-10-04 11:43:25 109

原创 一周技术思考(第33期)-为什么会有高可用的问题?

先开始我们这周的第一个话题。我在今年2月份的时候看到一篇文章,以至于我对它里面描述的高可用的观点,印象真的很深刻,才导致我又翻开收藏夹去找寻它。当然,也有可能是马上又到双十一了,我们又开始...

2021-09-25 16:08:39 122

原创 一周技术思考(第32期)-为什么有了系统设计还要进行组织设计

大家好,这里记录,我每周读到的技术书籍、专栏、文章以及遇到的工作上的技术经历的思考,不见得都对,但开始思考总是好的。1、软件进化是指在软件工程中,软件在第一次开发后,不断被更新、改进的...

2021-09-19 15:20:55 327

原创 一周技术思考(第31期)-高效率不代表高质量

大家好,这里记录,我每周读到的技术书籍、专栏、文章以及遇到的工作上的技术经历的思考,不见得都对,但开始思考总是好的。1、在一个业务快速发展的企业里面,如果你对自己部门的研发人员做一个调...

2021-09-11 15:05:25 162

原创 一周技术思考(第30期)-不要成为过度工程化的牺牲品

大家好,这里记录,我每周读到的技术书籍、专栏、文章以及遇到的工作上的技术经历的思考,不见得都对,但开始思考总是好的。1Spring是工程化,依赖注入框架,可以允许用户通过约定或者注解,...

2021-09-04 17:48:30 100

原创 一周技术思考(第29期)-一个系统最坏的状态是什么

大家好,这里记录,我每周读到的技术书籍、专栏、文章以及遇到的工作上的技术经历的思考,不见得都对,但开始思考总是好的。这周,让我们先从一张图开始。1、能看出下面这张图想要表达什么含义吗?...

2021-08-28 16:56:48 94

原创 一周技术思考(第28期)-架构师,从象牙塔里走出来

大家好,这里记录,我每周读到的技术书籍、专栏、文章以及遇到的工作上的技术经历的思考,不见得都对,但开始思考总是好的。架构师,从象牙塔里走出来象牙塔这个词从百度百科上搜索其定义,有如下的介...

2021-08-21 17:15:44 189

空空如也

空空如也

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

TA关注的人

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