08 2022 档案
摘要: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.
阅读全文
摘要:通过 DNS 查询,得到域名的 IP 地址,才能访问网站。
那么,DNS 查询到底是怎么完成的?本文通过实例,详细介绍背后的步骤。
阅读全文
摘要:我从 1999 年就开始了编程生涯,到今年已经有 20 多年了。我先是从 Basic 开始,很快转到了 Pascal 和 C 语言,然后又学习了面向对象编程语言 Delphi 和 C++。2006 年,我开始使用 Java,2011 年开始使用 JavaScript。我参与过各个行业的软件开发,从机器人、金融科技、医疗到媒体和通信。我还担任过研究员、CTO、TPM(技术产品经理)、老师、系统架构师和技术负责人,但不管怎样,我一直都在编程。
在我参与过的项目当中,有些为数百万人提供服务,有些在发布之前就宣告失败。我做过咨询顾问,还创办过自己的公司。我在开源项目、闭源项目和内部开源项目上花了很多时间,从微控制器到移动应用、桌面应用,再到云服务和无服务器架构。
阅读全文
摘要:当人们试图将“代码整洁之道(Clean Code)”的原则应用于现有的代码库时,我经常会问这个问题。
我认为这是合情合理的。
当我们开始重构遗留代码时,通常会将内容提取到较小的方法中。然后再将方法提取到类中。很快,我们可能就能感觉到原来 30 行的方法现在已经分散在不同的类中。
我们想知道的是:这在实际上是否是更容易维护了呢。
也许我们是一个小团队。也许我们必须支持我们继承的一个相对较大(并且没有文档记录的)的代码库。
寻求代码可维护性是一件好事。
错误在于,认为代码可维护性与代码行数(lines of code,LOC)相关。LOC 可能是一个有趣的度量指标,但它并不是关键所在!
不要使用 LOC 作为代码可维护性的度量指标。
阅读全文
摘要:我们曾经接触到一家企业,它一开始只有8个人,那个时候每个月都可以发一两个版本出去,客户都可以用到,因为他们是做医院的信息管理HIS系统。他们觉得做得还不错。后来团队发展比较快,规模到了80人左右,却半年没发一个版本。这导致实施团队没脸见客户,因为客户说半年前提的需求怎么还发不出来。
这个时候悖论就来了:我们以为团队规模越大,研发效率就会越高,可以做越多的东西,但是我们发现团队规模大到一定程度,整个研发效率是会下降的,甚至降得非常快。
阅读全文
摘要:服务一个人的系统,和服务一亿人的系统,复杂度有着天壤之别。本文从工程师文化、组织战略、公司内部协作等角度来分析软件复杂度形成的原因,并提出了一些切实可落地的解法。
阅读全文
摘要:在面向对象出现之前,已有面向过程的分析方法,为什么面向对象被提出了呢?究其本质原因,人们发现面向过程并不是按照人正常认识事物的方式去分析软件,那么人究竟是怎么认识事物的呢,Yourdon 在《面向对象的分析》一书中提到,人类认识事物是遵循分类学的原理,分类学主要包含三点:区分对象及其属性;区分整体对象及其组成部分;不同对象类的形成及区分。
我们现在可以回想下我们认识事物的过程,是不是和分类学所提到的 3 个要点很相似,看到一个事物,大概会感知到它的组成结构是怎样的,形状是怎样的,属于什么分类。所以,人认识事物是以对象的视角切入的,然后赋于对象具体的概念,比如苹果、梨子、汽车等等概念名称。
阅读全文
摘要:同步、异步,并发、并行、串行,这些名词在我们的开发中会经常遇到,这里对异步编程做一个详细的归纳总结,希望可以对这方面的开发有一些帮助。
阅读全文
摘要:我们从应用的视角出发整理抽象了我们在访问、使用数据库时场景的一些稳定性治理、性能优化、提效等方面的实战经验,对于每一个后端应用来说,数据库无疑是重中之重,我们希望通过我们的数据库治理能力,可以帮助到大家更好地使用数据库服务。
本文将详细介绍 MSE 数据库治理的热点功能,动态读写分离的设计与实现。
阅读全文
摘要:To continue our migration series, today’s post will focus on pgloader. Pgloader is another Open Source data migration utility for PostgreSQL from MySQL and SQL Server. Today’s demo will migrate a sample database (StackOverflow) from MS SQL Server 2019 to Postgresql v10.
阅读全文
摘要:本文既能助你清晰表达,也能帮你建立“长期主义的核心认知”促进自己进步。只字不差读它,会有收获。
当面沟通,表达上可以有重复、反复、甚至逻辑不清,因为可以通过多次互动来弥补,直至双方清楚。但如果以文字/文章/文档进行非当面沟通或大会分享,结构合理、观点明确、逻辑清晰就非常重要。
如何清晰表达?我有2个视角:
1.“金字塔”结构及《金字塔原理》书中介绍的方法。
2.日常写文章总结出来的经验
阅读全文
摘要:消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,削峰填谷等问题。实现高性能、高可用、可伸缩和最终一致性架构。
阅读全文
摘要:发布和订阅模式(Pub/Sub)是构建企业级 .NET 应用程序不可或缺的工具。Pub/Sub 是一种消息传递范式,消息的发送方(发布者)不知道目标接收方(订阅者)的任何信息。此外,发布者和订阅者之间不直接发生交互,而是依赖一种叫作主题的公共媒介。因此,这是一个松散耦合的消息模型。
现在,我们假设在同一个架构中部署了多个不同的应用程序,它们需要一种机制来向彼此发送事件通知。这些事件可能是短暂的(因运行时发生变更引起的),也可能是数据库事件(因数据库发生变更引起的)。发布和订阅模式可以帮你实现这种分布式事件通知。
阅读全文
摘要:本篇介绍SQL:2016(ISO/IEC 9075:2016)标准中定义的序列生成器(Sequence generator)和相关操作,以及六种主流数据库中的实现及差异:Oracle、MySQL、Microsoft SQL Server、PostgreSQL、Db2、SQLite。
阅读全文
摘要:SQL 作为关系型数据库的标准语言,是 IT 从业人员必不可少的技能之一。SQL 本身并不难学,编写查询语句也很容易,但是想要编写出能够高效运行的查询语句却有一定的难度。
查询优化是一个复杂的工程,涉及从硬件到参数配置、不同数据库的解析器、优化器实现、SQL 语句的执行顺序、索引以及统计信息的采集等,甚至应用程序和系统的整体架构。本文介绍几个关键法则,可以帮助我们编写高效的 SQL 查询;尤其是对于初学者而言,这些法则至少可以避免我们写出性能很差的查询语句。
以下法则适用于各种关系型数据库,包括但不限于:MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite 等。
阅读全文
摘要:本文结合自身后台开发经验,从高可用、高性能、易维护和低风险(安全)角度出发,尝试总结业界常见微服务接口设计原则,帮助大家设计出优秀的微服务。
阅读全文
摘要:携程酒店订单系统的存储设计从1999年收录第一单以来,已经完成了从单一SQLServer数据库到多IDC容灾、完成分库分表等多个阶段,在见证了大量业务奇迹的同时,也开始逐渐暴露出老骥伏枥的心有余而力不足之态。基于更高稳定性与高效成本控制而设计的订单存储系统,已经是携程在疫情后恢复业务的必然诉求。
目前携程酒店订单系统,在着在业务高增长的同时,也面临着信息读写管理能力受制于数据库自身性能与稳定性的窘境。综合分析,一则为携程服役了十多年的SQLServer服务器集群的磁盘容量设计,已经跟不上时下新增订单量的空间诉求;二则在系统能力提升上造成了各大业务系统巨大的底层瓶颈与风险,同时又相比业界主流已基于MySQL架构设计存储系统而言,我们的订单存储系统仍基于SQLServer构建也整体推高了运营成本。
为了支撑未来每日千万级订单的业务增长目标,同时满足高可用、高性能、高可扩展的高效成本控制期望,我们为酒店部门的订单DB所有访问开发并落地了一套稳定且可靠的统一中间件封装方案,对现状收敛并提供了全局统一的热点缓存系统,彻底解决了当下订单上层应用与数据库间直连的方案缺陷。
阅读全文
摘要:如何讲清楚一件事我相信很多人都很困惑也很无助,尤其是在晋升场合,在向上汇报或者是做大范围分享的时候,恨不得找个地缝钻进去。很多时候我们常常是这样安慰自己,我是实干派技术人,不需要那些花里胡哨的东西,我技术过硬比什么都重要。曾经一度我也是这样认为,最后改变我这个想法的是一句话:如果你讲不清楚多半是想不清楚,如果你都想不清楚如何能够带领更多人拿到结果?
所以我总结了一些关于如何讲清楚的一些技巧,以供大家参考。
阅读全文
摘要:技术 Leader 是一个对综合素质要求非常高的岗位,不仅要有解具体技术问题的架构能力,还要具备团队管理的能力,更需要引领方向带领团队/平台穿越迷茫进阶到下一个境界的能力。所以通常来说技术 Leader 的技能是虚实结合的居多,繁杂的工作偏多。为此我把自己在工作中经常用到的思考技巧也做了一个整理。
阅读全文
摘要:2288H v5服务器安装Windows系统后,PCI数据捕获和信号处理控制器 出现感叹号
可以在IBMC界面的“诊断-黑匣子” 关闭黑匣子功能,然后重启设备解决
也可以通过在操作系统侧安装IBMA软件解决
阅读全文