正文内容加载中...
posted @ 2022-10-05 09:37 古道轻风 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 就像在学习之前先要识字,我想在介绍优化 JavaScript 代码之前,先介绍一下自己对编程语言的理解。故事要从一只叫做 Theseus 的机械鼠和其发明人克劳德-香农(Claude Shannon)说起。在传记《A Mind at Play:How Claude Shannon Invented the Information Age》中,作者 Jimmy Soni 和 Rob Goodman 强烈希望将香农的作品 Theseus 展示给广大读者。面对复杂的迷宫,Theseus 仅用一堆继电器、ROM 存储等简单而古老的电子元器件,就完成了对复杂迷宫的探索和成功线路的记忆,第二次沿着正确道路走出迷宫的 Theseus 没犯一点儿错误。大多数人认为这不过是骗人的把戏和小玩意儿,弃之如敝履。少数聪明人眼里 Theseus 蕴含的惊人智慧简直可以和牛顿、爱因斯坦媲美,香农凭借一己之力将布尔代数引入电子电路设计启发了后世数字电路乃至计算机的发明。 阅读全文
posted @ 2022-10-04 21:21 古道轻风 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径,加速业务的上线速率,也体现在优秀工程师在工作效率提升、产品性能优化和用户体验改善等经验方面的分享,以提高我们的专业能力。本文作者阿里巴巴技术专家三画,分享了自己和团队在画好架构图方面的理念和经验,首发于阿里内部技术分享平台,梓敬、鹏升和余乐对此文亦有贡献。 阅读全文
posted @ 2022-10-01 22:07 古道轻风 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 这篇文章主要整理了一下计算机中的内存结构,以及 CPU 是如何读写内存中的数据的,如何维护 CPU 缓存中的数据一致性。什么是虚拟内存,以及它存在的必要性。如有不对请多多指教。 阅读全文
posted @ 2022-09-26 16:37 古道轻风 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 在我看来并不是MVC的基础上增加领域层,使用充血模型,解耦基础服务,我的代码就符合DDD了。 为什么要使用DDD? DDD分为战略部分跟战术部分,相信大家都认同DDD的核心在战略而非战术。而战略方面的核心我认为在业务建模,领域划分、统一语言等都在为业务建模服务。 为什么业务建模重要? 以前的开发流程有什么问题? 先说结论,开发人员交付的程序对业务方,产品人员,测试人员来说就是一个黑盒子。除了开发人员自己,没人知道盒子里有什么。当新的需求加入来,需求方,产品人员,甚至测试人员都认为可行,开发人员却给出相反结论。 阅读全文
posted @ 2022-09-22 08:45 古道轻风 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 导读:面对多种多样的跨端诉求,有哪些跨端方案?跨端的本质是什么?作为业务技术开发者,应该怎么做?本文分享阿里巴巴ICBU技术部在跨端开发上的一些思考,介绍了当前主流的跨端方案,以及跨端开发的经验心得。 阅读全文
posted @ 2022-09-20 16:54 古道轻风 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 随着前端的范畴逐渐扩大,深度逐渐下沉,富前端必然带来的一个问题就是性能。特别是在大型复杂项目中,重前端业务可能因为一个小小的数据依赖,导致整个页面卡顿甚至崩溃。本文基于Quick BI(数据可视化分析平台)历年架构变迁中性能的排查、解决和总结出的“个性”问题,尝试总结整个前端层面相对“共性”的问题,提供一些前端性能解决思路。 阅读全文
posted @ 2022-09-20 13:32 古道轻风 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 本文的重点在于说明工作中所使用的设计模式,为了能够更好的理解设计模式,首先简单介绍一下业务场景。使用设计模式,可以简化代码、提高扩展性、可维护性和复用性。有哪些设计模式,这里就不再介绍了,网上很多,本文只介绍所用到设计模式。 阅读全文
posted @ 2022-09-20 08:47 古道轻风 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 上个月我写的一篇文章《关于技术能力的思考和总结》引起了大家的关注,好多读者的评论“以写代想、以想促真、以讲验真”,大家的感受很深刻,基于上次的文章,这篇文章我其实更想跟大家聊聊一些常用的思考方法,思考问题的方式对了,往往可以帮助大家少走弯路。 阅读全文
posted @ 2022-09-19 18:17 古道轻风 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 在写开源项目的时候,想到了要支持多种redis部署方式,于是对于这块的生产环境的架构选型展开调研。 推荐使用更新的引擎版本以支持更多的特性, Redis 6.0新特性说明 模块系统新增多个API。 支持SSL/TLS加密。 支持新的Redis协议:RESP3。 服务端支持多模式的客户端缓存。 支持多线程IO。 副本中支持无盘复制(diskless replication)。 Redis-benchmark新增了Redis集群模式。 支持重写Systemd。 支持Disque模块。 阅读全文
posted @ 2022-09-18 13:49 古道轻风 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 安全是产品的底座,是体验的基础,也是企业的一项核心竞争力。安全生产是一项系统性的工作,同时也是一件比较琐碎的事,需要做方方面面的考虑尽一切可能保障系统安全稳定运行。个人之前一直负责商品的稳定性工作,在这方面有比较多的经历和实践。 记得在18年的时候,我们做商品发布的组件化改造,当时正好碰上网站刚开始类目调整,一度连续3个月每个月都有故障,当时稳定性的压力很大。当然那也是一个契机,商品的稳定性建设也是从那个时候开始起步,然后逐步的完善。 阅读全文
posted @ 2022-09-15 13:20 古道轻风 阅读(19) 评论(0) 推荐(0) 编辑
摘要: Web 水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印),本文将分别予以介绍,带你探秘 web 水印技术。 阅读全文
posted @ 2022-09-13 18:18 古道轻风 阅读(55) 评论(1) 推荐(0) 编辑
摘要: 内卷告诉我们,表面的精细、复杂、讲究不等于高级,更不等于先进,那只是一种自欺欺人的假象,一种黑暗中无知的消耗,一种悲哀的精神寄托。只有跳出圈圈,站在更高层次上的不断向外突破、创新和创造,才能不让那种精致的、繁复的、看起来特别敬业的内卷化状态困扰我们,才能回归到向上勃发的新常态上来。 明白了内卷的含义,大家便可以有意识地避免陷入内卷,减少内卷造成的浪费和伤害。 阅读全文
posted @ 2022-09-11 16:02 古道轻风 阅读(55) 评论(2) 推荐(2) 编辑
摘要: 工作中总是遇到数据存储相关的 Bug 工单,新需求开发设计中也多多少少会有数据模型设计和存储相关的问题。经过几次存储方案设计选型和讨论后发现需要有更全面的思考框架。 日常开发中常用的存储方案选型很多都是 “拿来主义” 的,凭借着经验、习惯选用,但对它们的细节特性或约束少有研究。 除了手边会用的存储方案,也应该关注市面上更合适的存储方案。 一定的技术预研和储备能够帮助未来更好的技术方案设计。 故写了这篇文章,抛出我的观察和思考,希望日后可以将一些更先进 (合适) 的技术引入公司业务,助力业务发展。 阅读全文
posted @ 2022-09-05 08:33 古道轻风 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 弹性伸缩是云计算时代给我们带来的一项核心技术红利,但是 IT 的世界中,没有一个系统功能可以不假思索的应用到所有的场景中。这篇文章,我们将应用企业级分布式应用服务-EDAS 的客户在进行系统架构设计时,在弹性场景下遇到的点滴做了一个系统的梳理,总结为五个条件和六个教训分享给大家。 阅读全文
posted @ 2022-09-04 20:19 古道轻风 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 一个单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行校验。 单元测试几乎都是用单元测试框架编写的;只要产品代码不发生变化,单元测试的结果是稳定的。 为什么需要单元测试 在我看来,单元测试的意义可以总结如下三点: 单元测试是保证你写的代码是你想要的结果的最有效办法 单元测试帮我们塑造设计 单元测试是最好的文档之一 单元测试描述了代码的预期行为,可以最有效地保证代码正确运行,减少代码缺陷;由于单元规模较小,当因为代码变更出现问题的时候,可以帮助我们快速定位问题;有单元测试覆盖的代码,让我们更有信心,敢于放心做代码重构; 写单元测试的过程往往伴随着代码重构,如果发现一段代码单元测试很难写,就需要反思我们的设计,进而重构促进代码设计的优化,帮助我们塑造设计; 同时单元测试也是一个最佳的、自动化的、可执行的文档;没有单测覆盖的代码,是很难被维护的。 阅读全文
posted @ 2022-09-01 17:13 古道轻风 阅读(62) 评论(0) 推荐(0) 编辑
摘要: Serverless 架构将成为未来云计算领域重要的技术架构,将会被更多的业务所采纳。进一步深究,Serverless 架构在什么场景下有优秀的表现,在什么场景下可能表现得并不是很理想呢?或者说,有哪些场景更适合 Serverless 架构呢? 阅读全文
posted @ 2022-09-01 10:52 古道轻风 阅读(33) 评论(0) 推荐(0) 编辑
摘要: In a certain project, I need to calculate the altitude of the current location given the current location temperature and current location pressure. Temperature, pressure and altitude of a 'reference-level' could be provided if necessary (using a fixed sea-level pressure constant is also acceptable). This project is done between altitudes of-100 meters to 2000 meters above sea level. 阅读全文
posted @ 2022-08-25 18:13 古道轻风 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 通过 DNS 查询,得到域名的 IP 地址,才能访问网站。 那么,DNS 查询到底是怎么完成的?本文通过实例,详细介绍背后的步骤。 阅读全文
posted @ 2022-08-25 13:18 古道轻风 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 我从 1999 年就开始了编程生涯,到今年已经有 20 多年了。我先是从 Basic 开始,很快转到了 Pascal 和 C 语言,然后又学习了面向对象编程语言 Delphi 和 C++。2006 年,我开始使用 Java,2011 年开始使用 JavaScript。我参与过各个行业的软件开发,从机器人、金融科技、医疗到媒体和通信。我还担任过研究员、CTO、TPM(技术产品经理)、老师、系统架构师和技术负责人,但不管怎样,我一直都在编程。 在我参与过的项目当中,有些为数百万人提供服务,有些在发布之前就宣告失败。我做过咨询顾问,还创办过自己的公司。我在开源项目、闭源项目和内部开源项目上花了很多时间,从微控制器到移动应用、桌面应用,再到云服务和无服务器架构。 阅读全文
posted @ 2022-08-24 18:01 古道轻风 阅读(52) 评论(0) 推荐(1) 编辑
摘要: 当人们试图将“代码整洁之道(Clean Code)”的原则应用于现有的代码库时,我经常会问这个问题。 我认为这是合情合理的。 当我们开始重构遗留代码时,通常会将内容提取到较小的方法中。然后再将方法提取到类中。很快,我们可能就能感觉到原来 30 行的方法现在已经分散在不同的类中。 我们想知道的是:这在实际上是否是更容易维护了呢。 也许我们是一个小团队。也许我们必须支持我们继承的一个相对较大(并且没有文档记录的)的代码库。 寻求代码可维护性是一件好事。 错误在于,认为代码可维护性与代码行数(lines of code,LOC)相关。LOC 可能是一个有趣的度量指标,但它并不是关键所在! 不要使用 LOC 作为代码可维护性的度量指标。 阅读全文
posted @ 2022-08-24 17:33 古道轻风 阅读(23) 评论(1) 推荐(0) 编辑
摘要: 我们曾经接触到一家企业,它一开始只有8个人,那个时候每个月都可以发一两个版本出去,客户都可以用到,因为他们是做医院的信息管理HIS系统。他们觉得做得还不错。后来团队发展比较快,规模到了80人左右,却半年没发一个版本。这导致实施团队没脸见客户,因为客户说半年前提的需求怎么还发不出来。 这个时候悖论就来了:我们以为团队规模越大,研发效率就会越高,可以做越多的东西,但是我们发现团队规模大到一定程度,整个研发效率是会下降的,甚至降得非常快。 阅读全文
posted @ 2022-08-23 19:15 古道轻风 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 服务一个人的系统,和服务一亿人的系统,复杂度有着天壤之别。本文从工程师文化、组织战略、公司内部协作等角度来分析软件复杂度形成的原因,并提出了一些切实可落地的解法。 阅读全文
posted @ 2022-08-23 13:11 古道轻风 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 在面向对象出现之前,已有面向过程的分析方法,为什么面向对象被提出了呢?究其本质原因,人们发现面向过程并不是按照人正常认识事物的方式去分析软件,那么人究竟是怎么认识事物的呢,Yourdon 在《面向对象的分析》一书中提到,人类认识事物是遵循分类学的原理,分类学主要包含三点:区分对象及其属性;区分整体对象及其组成部分;不同对象类的形成及区分。 我们现在可以回想下我们认识事物的过程,是不是和分类学所提到的 3 个要点很相似,看到一个事物,大概会感知到它的组成结构是怎样的,形状是怎样的,属于什么分类。所以,人认识事物是以对象的视角切入的,然后赋于对象具体的概念,比如苹果、梨子、汽车等等概念名称。 阅读全文
posted @ 2022-08-22 19:13 古道轻风 阅读(31) 评论(0) 推荐(1) 编辑
摘要: 同步、异步,并发、并行、串行,这些名词在我们的开发中会经常遇到,这里对异步编程做一个详细的归纳总结,希望可以对这方面的开发有一些帮助。 阅读全文
posted @ 2022-08-22 11:06 古道轻风 阅读(27) 评论(0) 推荐(0) 编辑