程序猿都有哪些“黑话”

视频:https://www.bilibili.com/video/av21006208/

PPT

日常中经常听到技术的师兄们说一些奇怪的“技术黑话”,什么“对象”什么“进程”之类,引得PM们都不解起来,交流中充满了不解的气息。

1.对象,类

所以今天咱们就梳理一下他们常用的“黑话” 类、对象、抽象和实例在技术的世界里,有一类编程语言叫面向对象编程,例如典型的面向对象语言Java。说到面向对象,不得不提的几个概念是类、对象、抽象和实例。

首先介绍第一个概念“抽象”。我们说某一个概念听起来非常抽象的意思是不具体的事物,对应的反义词是具象。抽象在技术术语里的意思是提炼出一个通用模板,然后基于模板做具象化的实现。例如,在现实世界中关于人的分类,会有男人、女人、老人和小孩,如果将这个具体的分类抽象出一个类别,得到的抽象结果就是人。


所以,人就是一个抽象出来的分类,也就是技术术语里面的“类”。在编程语言的世界中,通过程序语言描述现实世界中的事物时,使用的就是抽象的方法,将一类事物抽象成一个类,就得出了程序世界中的一个基本模型。

有了基本模型后,可以基于抽象出来的模型(类)产生很多具体的实例,也就是基于类实例化的具体对象。例如,将“人”这个类实例化为两个对象,分别是男人和女人,也可以实例化为其他对象,例如小孩和老人,甚至可以实例化为具体的人,例如Maggie和Ryan。这一系列的过程如图所示。

从上述流程中可以看出,程序猿做的工作就是根据产品需求将现实世界中的事物抽象成程序世界中的一个个类,然后根据需要实例化很多对象,不同对象间通过相互协作完成一个具体的产品功能。

2.“写死”是什么

例如淘宝收货地址,两种方案,设计一个下拉选择框用来切换不同的城市,这个产品需求在技术层面有两种实现方案,第一种是将城市数据放在服务器端,客户端通过请求数据接口将城市数据获取回来再显示在下拉列表中。

第二种是将城市列表数据存放在客户端,客户端从本地读取城市列表并展示在下拉列表中。简单的官网例子第一种方式是一种相对灵活的方案,当城市数据有变化时,只需要调整服务端的数据内容即可,客户端不用做任何修改,但需要开发一个专门的数据接口获取这部分数据。第二种方式就是工程师所说的“写死”,将数据集写死在本地,这样可以省去数据接口的开发,也能快速实现想要的效果。

这两种不同的实现方式在很多产品设计环节中都会体现,例如一些客户端的文案或者图片会经常变化,这时就不太适合将需要变化的数据“写死”在本地,合理的方案是将变化的数据存储在服务端,客户端通过数据接口灵活地获取这部分数据。

当然,也不是所有的数据都不适合“写死”在本地,例如性别数据,无非就是男和女,不必专门为了它开发一个数据接口,我们得根据具体需求和使用场景判断哪些数据应该写死。

3 进程与线程

当我们点击手机屏幕上的一个App按钮(启动一个产品)时,系统会为这个产品的运行分配系统资源(例如CPU和存储空间),分配好资源后,产品会在这个资源区域运行应用程序。这里所说的运行应用程序就是进程,也可以理解为每一个正在运行的App都是一个进程。

线程是什么?要理解这个概念,须要先了解一下操作系统的一些相关概念。大部分操作系统(如Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。任务执行的一小段时间叫做时间片,任务正在执行时的状态叫运行状态,任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就处于就绪状态等待下一个属于它的时间片的到来。这样每个任务都能得到执行,由于CPU的执行效率非常高,时间片非常短,在各个任务之间快速地切换,给人的感觉就是多个任务在“同时进行”,这也就是我们所说的并发(别觉得并发有多高深,它的实现很复杂,但它的概念很简单,就是一句话:多个任务同时执行)。

4.脚本

当需要对数据库进行批量处理时,程序猿会说“跑一个脚本统一处理一下”当需要查询某一数据报表时,工程师会说“用一个脚本批量查询”。脚本也是一种被计算机执行的程序,为什么叫脚本呢?可以把脚本理解成拍戏用的剧本,剧本里会按照角色及对白把要拍的戏清晰地列出来,导演和演员会严格按照剧本表演。脚本就是一种面向计算机的剧本,是一个可被计算机执行的文件,文件里是一系列计算机指令,这些指令会按照顺序被计算机解析并执行。

5.同步处理与异步处理

同步:发送一个请求,等待返回,然后再发送下一个请求 

异步:发送一个请求,不等待返回,随时可以再发送下一个请求 

同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。

异步则是可以提高效率了,现在cpu都是双核,四核,异步处理的话可以同时做多项工作,当然必须保证是可以并发处理的。这些都是对的。同步和异步最大的区别就在于。一个需要等待,一个不需要等待。

比如广播,就是一个异步例子。发起者不关心接收者的状态。不需要等待接收者的返回信息

电话,就是一个同步例子。发起者需要等待接收者,接通电话后,通信才开始。需要等待接收者的返回信息


以上存在不足的地方,专业技术人员轻喷~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,184评论 6 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • 众所周知,在北方人眼里,远比下雪本身有趣的,是看见下雪的南方人。 今年冬天极其寒冷,这一点从比往年提前了一个月穿上...
    薇布什克多利亚阅读 319评论 0 0
  • 乔布斯,作为我们这一代最伟大的CEO之一,他的职业生涯并不是一帆风顺的。 从1985年被赶出苹果到1996年回归,...
    老徐的自白书阅读 522评论 0 0