看看你处于哪一层?

【字节面试题】你真的分得清路由器、交换机、集线器处于网络哪一层? 网络体系结构如图: 正确答案是:在五层协议的体系结构中路由器处于网络层、交换机处于数据链路层、集线器处于物理层 当我答出这个答案后,面试官还不满意,质疑道:你确定吗?这个答案一定正确吗?你是怎么判断他们处于那一层的? 当时我瞬间心虚,因为当时我也是记忆的,还不算很理解。这是我才明白面试官想要的是什么~,他想要的是思考过程,然后一顿讲解,才放过我。 前方高能,开始飙车: 先来看一下路由器、交换机、集线器的专业术语定义: 路由器:(Router)是连接因特网中各局域网、广域网的设备。在路由器中记录着路由表 阅读详情

粗略地分一下,程序员的日常工作基本上会被划分到这三层: 系统层, 中间件层,应用层。

640?wx_fmt=png

我们从下到上,逐层走一下,看看每一层都在做什么。

640?wx_fmt=gif

1

系统层指的是操作系统,数据库,编译器,TCP/IP协议栈,虚拟机等。另外,我把编程语言也归入到这一层。

能在这一层工作的程序员基本上都是大神。比如写Linux的Linus Torvalds,  一边读协议,一边写TCP/IP实现的Bill Joy。

用汇编写Delphi(Object Pascal)编译器的Anders,还有各种编程语言的发明人, 就不一一列举了。

这一层的人大部分都在默默地工作,构建我们赖以生存的世界,他们深藏功与名,很少对外发出的声音,因为即使他们发出了声音,很多人也听不懂,因为太专业,太精深。

这一层的人有两个特点:

(1) 对计算机是真的热爱,否则不会探究到这么深的层次,并且能耐得住寂寞在这一层工作。

(2) 能力超强。因为这一层的工作性质要求高性能,高可靠,需要和硬件打交道,需要处理巨多的细节,一般人真搞不了。

2

中间件层很有趣,有些东西系统层不想管,应用层又管不了,只好交个中间件来做。

传统的中间件是像WebLogic, Websphere, JBoss,Tomcat, MQ这样的东西, 如果我把他泛化一下,也可以把Docker, Elastic Search , Kafka , Spring , Zookeeper,Ngnix,Redis,Dubbo等给包括进来。 还可以包括一些公司的技术平台部门所推出的,供整个公司试用的软件和系统。

在这一层工作的人发出的声音会有很多人侧耳倾听,因为用户众多,大家都能听明白。

程序员对这一层的关注非常多,出了什么新技术?有什么新特性?布道师出来写一些文章,“鼓吹”一番,热闹非凡。

对于程序员来说,能够在这一层工作,也非常有成就感:

(1) 直接参与开发,当你开始做通用的组件和框架的时候,对于技术能力,抽象能力的要求相比应用层就会大大提高。

(2) 对某个领域极为精通,成为专家,例如缓存、搜索、分布式、负载均衡等。

3

最后是应用层,主要使用系统层和中间层的东西来实现业务逻辑,戏称为增删改查。

绝大部分人都在这一层工作,尤其是刚刚培训出来的同学,肯定要在这一层呆上一段时间,也有可能一直呆下去,做一辈子。

千万别小看这一层,它需要把业务需求直接转化成技术实现,是直接产生价值的。

比较“悲催”的是,应用层的同学需要掌握下面两层的知识,不一定精深,但是需要知道原理。

在这一层工作,关注点是如何更好更快地实现业务需求,及后续的变更,所以要有面向对象的设计,设计模式,敏捷开发,持续集成,持续交付,DevOps,领域驱动开发,TDD, Code Review等各种工程实践。

这一层也有大师级别的人物,比如Martin Fowler,他写了《分析模式》,《企业应用架构》,《重构》等经典书籍,特别擅长把业界的实践总结成概念。

再比如Robert Martin,面向对象设计的大牛,他10多年前的书《敏捷软件开发:原则,模式与实践》中提出的SOLID原则,至今仍然是OOD领域的指导原则。

为了把这一层的的事情做好,需要有个特殊的岗位来负责整个系统的设计,这个岗位就是:架构师。

架构师一般是资深的程序员,有丰富的实践经验,知道技术的优缺点,能根据具体的需求,设计合适的技术方案,建立合适的技术组件并连接起来,从而解决问题。

4

系统层,中间件层,应用层并没有高下之分,每一层都有足够多的东西供你去探索,去创造。

如果你喜欢开发一些东西,让很多程序员使用,可以考虑进入中间件层,比如公司的技术平台部。

如果你真的喜欢系统层的东西,那就要选定方向,比如数据库,然后深挖,现在国内已经有公司提供这样的工作机会让你去定制OS,定制数据库,定制JVM。

如果你喜欢在应用层解决实际业务问题,可以考虑向架构师方向发展。

往期精彩回顾

关于老刘和码农翻身

我是一个线程

我是一个Java Class

面向对象圣经

TCP/IP之大明邮差

CPU阿甘

我是一个网卡

我是一个路由器

一个故事讲完HTTPs

编程语言的巅峰

Java:一个帝国的诞生

JavaScript:一个屌丝的逆袭

MATLAB PDE工具箱电磁场仿真平行电容板及电偶极子详解 首先打开matlab,在命令行输入pdetool打开PDE工具箱 工具箱的功能我就不赘述了,大概就是以有限元的数值计算方法,计算二阶偏微分方程,因此可以解决电磁场、热力学等问题。 首先点击左上角按钮,画三个矩形 画完一个后可以双击矩形编辑,参数如下: 其中R1表示上极板,R2表示下极板,R3表示整个空间区域。 在上方Set formula为R3-R2-R1,表示求解区域是整个空间区域减去两个极板。下拉框选择Electrostatics表示求解的是静电场问题。 接下来点击上方菜单栏中的这个按钮,表 阅读详情

相关推荐

CMake接口库实战:如何用add_library的INTERFACE选项管理跨项目依赖

本文深入探讨了CMake中add_library的INTERFACE选项在管理跨项目依赖时的实战应用。通过创建不包含源代码的接口库,开发者可以集中管理头文件路径、编译定义、链接库等公共配置,并将其声明式地传递给依赖目标。文章以构建模块化跨平台网络应用为例,详细展示了如何利用接口库实现配置的集中化、依赖关系的显式化,从而提升大型项目的可维护性和可移植性。

water的专栏 1040

系统架构设计笔记(77)—— 中间件技术

中间件( middleware )是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处在操作系统 、 网络和数据库之上,应用软件的下层(如图 1 所示),也有人认为它应该属于操作系统中的一部分。 1 中间件的概念 中间件从诞生到现在,虽然仅有 10 多年时间,但发展极其迅速,是有史以来发展最快的软件产品,但在技术上还处于成长阶段,还没有统一的标准和模型,通常都是用 C++ 语言以面向对象的技术来实现的,但是它的特性已超出面向对象的表达能力,由于它属于可重用构件,目前趋向于用构件技术来实现。然而,中

读万卷书,行万里路 1479

Yolov5实现道路裂缝检测

Yolov5实现道路裂缝检测 参考代码链接 Github代码链接 基于Pytorch的Yolov5道路裂缝检测程序运行说明。大家可以结合我的说明和原文说明使用,有问题欢迎询问。 文章目录Yolov5实现道路裂缝检测环境要求测试训练自己的数据集1.创建dataset.yaml文件2.创建标签文件3.组织文件路径4.选择模型5.开始训练 环境要求 Python 3.8或之后的版本 还要安装requirements.txt文件中所有依赖包,包括1.7及以上版本的torch $ pip install -r req

qq_26751379的博客 2万+

[架构之路-229]:整体 - 计算机系统的矩阵知识体系结构

上层向下层传递数据和请求,以使数据在网络中得到正确的处理和传输。协议栈的分层结构使得不同层次的协议能够独立进行开发、测试和升级,同时也提供了灵活性和可扩展性,以适应不同的应用场景和需求。这种分层的设计有助于提高系统的可移植性、可扩展性和维护性,同时也方便不同层次的开发人员进行独立的开发和测试。在实践中,我们需要学习和理解这两个维度的知识,掌握软件开发的各个阶段的技能和方法,并了解计算机系统中各层次的功能和协议。不同的协议栈可能有不同的层次数量和名称,但都遵循类似的分层设计原则,以实现有效的通信和数据传输。

文火冰糖(王文兵)的博客 711

【Telephony】APN配置及加载流程&项目实践(AOSP)

学习APN关键是学会明白apns-conf.xml文件各个参数的意思,然后熟悉TelephonyProvider是如何读取文件创建数据库的,譬如数据库表的约束、文件的读写顺序等,还有读取后的ApnSetting的二次定制以及显示(例如屏蔽xcap等)。虽然一般在项目中APN的需求很简单,就是按照客户提供的APN参数添加上配置,或者在显示屏蔽一些参数,但是项目维护的过程中APN的问题也是比较多的。

weixin_44513784的博客 5509

别再傻傻分不清PBR和NPR了!从《原神》到《双城之战》,聊聊游戏里那些让你眼前一亮的渲染风格

本文深入解析了PBR(基于物理的渲染)与NPR(非真实感渲染)在游戏视觉风格中的应用差异,通过《原神》和《双城之战》的案例,展示了两种渲染技术如何创造出截然不同的艺术效果。从技术原理到实战案例,帮助读者理解如何根据项目需求选择合适的渲染风格。

weixin_30425949的博客 147

Android分应用层、应用框架层、系统应用层、核心层

1. Android手机操作系统是一个基于Linux Kernel的分层智能手机操作系统,其共分为4层,从上到下分别是:  应用层(Java Application),包括了Android各种应用程序  应用框架层(Java Frameworks),是Google发布的核心应用所使用的API框架  系统运行库层(User Libraries),包含了手机系统平台必须的C/C++核心库、Dal...

麦小洛 1万+

Windows配置L2TP/IPsec连接

Windows 系统的 L2TP/IPsec 功能,通过配置即可构建加密 VPN 通道。

m0_61806534的博客 1668

系统架构、技术构架、应用构架 区别

系统架构:指的完整系统的组成架构,例如系统分成几个部分?服务平台、管理门户、终端门户、ATM门户、外部系统以及接口、支撑系统等,将这些系统进行合理的划分。然后再进行功能分类细分,例如服务平台内部划分为系统管理、用户管理、帐号管理、支付管理、接口层、统计分析等逻辑功能。总之,将整个系统业务分解为逻辑功能模块,并且科学合理,就是系统架构了。 技术架构:从技术层面描述,主要是分层模型,例如持久层、数据...

forBurnInG的专栏 7013

从4A架构的角度出来 帮我分析一下:数字化转型深水区:企业架构如何成为价值重构的核心引擎?

4A 架构的本质是构建企业的数字神经系统,通过业务感知、数据传输、决策执行、技术支撑的闭环,实现从效率提升到生态重构的质变。正如华为通过该架构实现全球研发资源统一调度,某零售集团借此打造线上线下融合的新零售体系,当业务、数据、应用、技术四个维度形成共振时,企业将获得持续进化的数字免疫力,在不确定的市场环境中保持韧性生长。这一过程不仅需要技术工具的升级,更依赖组织文化的变革 —— 从 “部门墙” 到 “能力网” 的转型,才是数字化转型深水区的终极挑战。

金牌架构师 1046

9篇3章7节:基于 R 语言的 FAERS 数据提取与合并

本文主要探讨了 FAERS 数据提取与合并的操作流程。首先,通过程序化方法从本地存储的 FAERS ASCII 文件中提取指定季度或范围内的单药报告数据,并可通过参数设置控制数据存储位置、处理方式、计算资源分配以及报告者职业类别等。随后,通过批量读取的方式对多个季度的 DRUG 文件进行循环处理,并将其合并为一个综合数据框。

MD Code 1265

架构-三层架构:三层架构

ylbtech-架构-三层架构:三层架构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,...

weixin_30273763的博客 976

从 VS Code 创建 ABAP Development Objects,包、命名、传输请求和 Clean Core 的一条线打通

文章摘要: SAP ABAP开发工具正从传统SAP GUI/Eclipse向VS Code迁移,通过ABAP Development Tools扩展实现代码编辑、调试和传输管理。文章重点分析了创建ABAP对象背后的治理逻辑:1)对象创建涉及包结构、命名规范、传输层等关键设计决策;2)VS Code通过命令面板(Ctrl+Shift+P)提供统一创建入口;3)对象类型选择反映架构意图,应从业务模型角度规划;4)Package是重要的治理边界,需按业务能力分区;5)命名和描述需体现业务语义;6)传输请求标记对象

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 175

ICMP是什么协议,处于哪一层?  

ICMP是什么协议,处于哪一层?     答案:Internet控制报文协议,处于网络层(IP层)

annan211的专栏 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

你们之间的关系处于哪一层

现在社会太过强调放下,以至于我们轻而易举的放下了和别人的情谊,轻而易举的放下了别人对我们的好,轻而易举的放下了我们所犯的错误,于是我们每一个人的朋友都成千上万,却没有人可以推心置腹,我们把感恩、道德、法律、职业素养挂在嘴边,做事的时候心里却只有自己,我们以放下作为理由逃避了太多的义务、责任、乃至于我们连应该吸取的教训都随意的放下了,我们许多人根本无法区分什么是有情有义,什么是当舍当得。好友经过长时间的相处、互相之间的感情超越大多数乃至于一切利益因素的时候所形成的不需要过多形式的简单的互相支撑关系。

立烺培训 1066

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

看看你处于哪一层?(转)

粗略地分一下,程序员的日常工作基本上会被划分到这三层: 系统层, 中间件层,应用层。 我们从下到上,逐层走一下,看看每一层都在做什么。 一.系统层 系统层指的是操作系统,数据库,编译器,TCP/IP协议栈,虚拟机等。另外,我把编程语言也归入到这一层。 能在这一层工作的程序员基本上都是大神。比如写Linux的Linus Torvalds, 一边读协议,一边写TCP/IP...

dd10850的博客 371

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

路由器、防火墙处于哪一层_人在职场上成长进步的四个过程,看看你处于哪一层...

每个人进入职场后,都要经过一番学习、磨练的过程,才能逐步成长进步,由懵懂无知变得精明老练,成为职场上的精英,这个过程大致分为被轻视期、被嫉妒期、服从期和畏惧期,具体如下: 一、年轻无知或者能力不足,被轻视瞧不起 初入职场,对一切都懵懂无知,什么都不会,什么都不熟悉,只能处处依靠别人,向别人学习,或者虽然工作久了,可是因为学识不够,能力不足,水平有限,干不了多少实质性工作,当不了大任,只能打打杂之类...

weixin_30095343的博客 299

路由器、防火墙处于哪一层_热处理知识就这八种境界,你处于哪一层?

1、一分为二:材料不同、设备不同、工艺参数不同,热处理后的组织和质量也不同。即使材料牌号、设备、工艺参数都相同,由于化学成分含量上下限、热处理温度上下限、保温时间上下限不同,热处理后的组织和质量也会不同。即使化学成分含量上下限、热处理温度上下限、保温时间上下限都相同,由于热处理前期的冷热加工的工艺、质量、组织等不同,热处理后的组织和质量也同样会不同。因此,出现问题后要具体问题具体分析,即要一分为二...

weixin_32770297的博客 357

路由器、防火墙处于哪一层_“时间管理者”的三重境界,你处于哪一层?

近期,时间管理成为一个热词,好多人也想学习如何有更多的时间和好友五排,多打几把王者多打几盘吃鸡。但时间管理不是大家想的“挤挤”那么简单,挤掉睡眠和工作时间不单会让你秃头、黑眼圈,更有可能适得其反,个人事业也受影响。那么如何在不影响身体状况条件下,通过时间管理实现24h+n的理想呢?今天小万就和大家分享一些“排期”、“排序”、“剔除”等高效能人士必备的时间管理法。时间管理概念的由来在工业化大生产来临...

weixin_34378126的博客 214

Java优雅封装的6个段位,看看你现在处于哪一层?

封装是一种将对象的内部状态和行为隐藏起来,对外只提供一些公共接口的技术。在实际开发中,封装可以提高代码的可维护性、可复用性和安全性,减少代码的耦合度和错误率。

爱媳妇儿爱编程 1322

如何用sql查询分类表中处于某一层的所有记录?

class分类表结构, id              cname               cfather            clayer            1               车                   0                 000000      2               四轮车               1           

xishici1149的博客 528

socket通信处于网络协议那一层和两种接收发送消息方式

socket编程有两个典型的接收发送方式:轮询方式和select侦听及管道中断方式。 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。而我们所说的socket编程指的是利用soket接口...

jia12216的专栏 2万+

马斯洛需求层次五大阶段,你处于那一层呢?

      马斯洛需求层次理论是人本主义科学的理论之一,由美国心理学家亚伯拉罕·马斯洛在1943年年,书中将人类需求像阶梯一样从低到高按层次分为五种,分别是:生理需求,安全需求,社交需求,尊重需求和自我实现需求。现在正在奋斗的你有是处于哪个阶段呢?...

向死而生 8万+

集线器、路由器的功能是什么?他们各自处于OSI七层模型的哪一层?

OSI OSI是Open System Interconnect的缩写,意为开放式系统互联。在OSI出现之前,计算机网络中存在众多的体系结构,其中以IBM公司的SNA(系统网络体系结构)和DEC公司的DNA(Digital Network Architecture)数字网络体系结构最为著名。为了解决不同体系结构的网络的互联问题,国际标准化组织ISO(注意不要与OSI搞混))于 1981年制定了开放

YC.PENG的专栏 2801

AI进阶三境界:从聊天框到专家团队,你处于哪一层?

本文系统性地阐述了AI应用的三个发展层级:基础聊天框、Agent平台和中央调度系统,重点剖析了Agent作为"智能中介"的运作机制。文章创新性地将Agent比喻为"挽具",指出其由三大核心组件构成:多次请求提示词(任务拆解与渐进式披露)、上下文记忆系统(信息管理与防污染)和工具集合(Skill/MCP/CLI)。通过详实的类比和流程拆解,揭示了Agent如何将大语言模型从单纯对话工具转变为具备执行力的智能体,并特别强调了MCP工具调用时的"三次握手"协议。最后指出未来Chatbot与Agent将走向深度融合

2401_84204413的博客 184

数据可视化对企业经营的3层价值,你处于哪一层?

下面,小编会从两个方面来跟大家介绍数据可视化,让大家更了解数据可视化以更好的应用。

思迈特Smartbi 285
上一篇: 旺财和小强的三生三世
下一篇: 我是Java,这是我的2018年总结
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值