计算机小知识(2024.04.28更新)

yokila
yokila
发布于 2024-04-21 / 9 阅读
0
0

计算机小知识(2024.04.28更新)

一、词汇

1.1 GoF

简介:GOF是设计模式的经典名著Design Patterns: Elements of Reusable Object-Oriented Software(中译本名为《设计模式——可复用面向对象软件的基础》)的四位作者,他们分为是:Elich Gamma、Richard Helm、Ralph Johnson、以及John Vlissides。这四个人常被称为Gang of Four, 即四人组,简称Gof。

相关链接:GOF的23种设计模式

1.2 SSM

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。

1.3 卫语句

如果条件语句极其复杂,就应该将条件语句拆解开,然后逐个检查,并在条件为真时立刻从函数中返回,这样的单独检查通常被称之为“卫语句”(guard clauses)

——《重构---改善既有代码的设计》

《阿里巴巴Java开发手册》(7)控制语句 中推荐:避免后续代码维护困难,请勿超过3层。如果 if-else 超过3层则逻辑判断代码可以使卫语句、策略模式、状态模式等来实现。

维护困难的写法:

if(true){
        if(true){
                if(true){
                        if(true){
                                if(true){
                                       if(true){
                                       }
                                }
                        }
                }
        }
 }

卫语句示例:

public void today() {
	if (isBusy()) {
		System.out.println("change time.");
		return;
	}
	if (isFree()){
		System.out.println("go to travel.");
		return;
	}
	system.out.println("stay at home to learn Alibaba java coding cuidelines.");
	return;
}

1.4 语法糖

语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。

举个例子:在C语言里用 a[i] 表示 *(a+i),用 a[i][j] 表示 *(*(a+i)+j) ,由此可见语法糖不是“现代语言”独有,这种写法简洁明了,容易被人理解。

——百度百科

语法糖实际并没有产生内存占用、误差、运算等差异,加糖前后的代码编译后实际上一模一样,它只是方便了书写代码,增加了代码的可读性。

各个计算机语言里,实际上都有提供了一些语法糖。

代码编译过程前,编译器往往会先进行解糖(desugar),将语法糖写法转换为基础语法结构。

实际上,语法糖可用可不用,都行。但是不能滥用,因为滥用反而可能会导致影响代码的理解难度,从而降低可读性。

1.5 语法盐

语法盐(Syntactic Salt)旨在避免编写出糟糕代码,鼓励更好的代码实践,以提高代码的质量和可维护性。不过也因此往往需要额外编写一些额外的代码(与语法糖恰恰相反)。语法盐充当了程序员必须跨越的障碍,不一定是为了表达程序操作,而是为了展示他们对代码运作的理解 。

例子:Java 中不允许将一个声明为 float 类型的变量赋值给一个声明为 int 类型的变量(防止隐式转换引入不可预测的行为),但是 C 和 C++ 会自动将 float 类型的变量舍去小数并赋值给 int 类型的变量。

int num1;
float pi = 3.14159;
num1 = pi; // 赋值错误

语法盐通常会增加代码量,过度使用可能会使代码晦涩难懂,从而降低其质量,甚至破坏其目的——在极端情况下,代码的基本部分可能比为满足语法盐要求而引入的代码要短。

语法盐的另一种方法是,当代码很有可能是错误的结果时,生成编译器警告——这是现代 C/C++ 编译器中常见的做法。

1.6 语法糖精

语法糖精(Syntactic Saccharin)或者说语法糖浆(Syntactic Syrup),指的是未能让编程更加方便的附加语法。通常是只增加了代码复杂性,但是不增强功能。

另外,国内部分博客有提及语法海洛因这个词,也是错误的一种编程方式。但是实际上我检索了一些国内外的论坛和百科,并未发现这个词存在的痕迹。存在性存疑。

1.7 DevOps

DevOps 是开发 (Dev) 和运营 (Ops) 的复合词,它将人、流程和技术结合起来,不断地为客户提供价值。

DevOps 对团队意味着什么? DevOps 使以前孤立的角色(开发、IT 运营、质量工程和安全)可以协调和协作,以生产更好、更可靠的产品。通过采用 DevOps 文化、做法和工具,团队能够更好地响应客户需求,增强对所构建应用程序的信心,更快地实现业务目标。

—— 微软

不少厂商有在提供相应的解决方案,虽然我们不买,但是可以从他们的解决方案中窥探所谓 DevOps 的模样:

1.8 SRE

站点可靠性工程 (SRE) 是指使用软件工具自动执行 IT 基础架构任务(如系统管理和应用程序监控)的做法。组织使用 SRE 来确保其软件应用程序在开发团队频繁更新时保持可靠。SRE 特别提高了可扩展软件系统的可靠性,因为使用软件管理大型系统比手动管理数百台计算机更具可持续性。 

——Amazon

站点可靠性工程师是拥有 IT 运营经验的软件开发者,他了解如何编码,也知道如何保持大型 IT 环境持续运转。 

站点可靠性工程师将不超过一半的时间用于执行手动 IT 操作和系统管理任务,如分析日志、性能调整、应用补丁、测试生产环境、响应事件、进行后期检查,其余时间则用于开发代码来自动执行这些任务。 他们的目标是缩短前者所花的时间,逐步将更多时间用于后者。

——IBM

SRE全称:Site Reliability Engineering

来源:SRE 的概念由 Google 工程部副总裁 Ben Treynor Sloss 提出,他有一句名言:“SRE 是你要求软件工程师设计运营团队时必然会发生的事”。

相关书籍:SRE:Google运维解密

更多大厂的解释:

历史:SRE 的历史:为什么 Google 发明了 SRE 角色

1.9 CMS

全称:Content Management System(内容管理系统)

说白了,就是用来管理内容的系统。这个内容,可以是图片、表格、文章等。

如果是企业的话,比如用来整合知识材料、操作手册、帮助文档等等的“内容”。

如果是个人的话,最常见的,就是个人博客,每一篇博客就是“内容”。所以,WordPress、Halo都是CMS。

值得注意的是,这些内容在系统里是直接存数据库呢?还是存文件夹里呢?需要依据实际情况分析。

1.10 RSS

全称:Really Simple Syndication(真正简易联合)

推荐阅读:RSS的历史(源自W3school)

简介:一种使用 XML 向许多其他的网站分发某个网站上的网络内容的方法。

如果网站提供了RSS的支持,那么用户就可以不用亲自到网站上浏览内容,而是通过 RSS feed(RSS订阅源/RSS地址/RSS链接)的方式,直接拉取网站的更新信息。

RSS feed 长什么样子呢?举个例子,这是美团技术团队网站的 RSS feedhttps://tech.meituan.com/feed/

怎么用呢?你可以在 RSS聚合器 中配置好你想订阅的RSS链接,然后设置拉取网站的更新信息的频率。

至于RSS聚合器,有各种实现,有浏览器插件、应用、自建等等。感兴趣可以去搜索了解。

RSS有什么用呢?主要还是为了高效地获取信息(例如新闻、企业动态),毕竟相当于提前筛选了信息源,由RSS聚合器自动获取最新信息并整合到一起,用户可以在一处地方简单便捷地直接阅读聚合好的各路信息。不过,如果信息源(比如网站)的更新频率很低,那么使用RSS就意义不大。

使用实例:本站的 朋友圈 功能其实就是利用了 RSS feed

补充:

由于 RSS feed 毕竟会导致大量频繁的请求访问网站,会给网站带来一定的资源上的压力,所以有些网站直接停止了支持官方RSS(实测国内官媒网站提供的RSS就拉取不到最新的新闻动态)。

不过,官方不给 RSS feed 或者 不支持 或者 不更新,我们可以自制 RSS feed,可以直接给网页生成 RSS feed,比如使用 Feed43

1.11 CAP理论

CAP 理论是针对分布式数据库而言的,它是指在一个分布式系统中,一致性(Consistency, C)、可用性(Availability, A)、分区容错性(Partition Tolerance, P)三者不可兼得。

二、句子

1.2 Threads don't scale,Processes do!

词汇:Threads (线程),Process(进程),scale(扩展)

译:如果线程不能够扩展,那就去扩展进程。

相关书籍:《SpringBoot揭秘:快速构建微服务体系》(P5)


评论