我们都是调包侠

· 浏览次数 : 0

小编点评

**应用层在应用层的角度看** * 利用高级编程语言和运行时API来控制计算机设备,无需关注硬件部分,操作系统部分也无需关注。 * 利用高级编程语言以及这些高级编程语言提供的运行时API或机器指令,以及操作系统的接口,来完成对计算机的控制。 * 站在这个角度看,我们完完全全就是调包侠。 **低级编程语言层** * 对性能要求很高,但依然是基于操作系统之上,调用操作系统的接口。 * 它调用操作系统的接口,完成对硬件的驱动,驱使电位改变,从而引起外部设备的工作。 **系统编程层** * 需要知道一些硬件的细节,但不是电气特性,而且接口特性,比如CPU控制一个外部设备,写入知道这个设备I/O接口的数据端口(数据寄存器)、状态寄存器(状态端口)、控制端口(控制寄存器)这些寄存器对应在内存地址空间的地址。 **硬件层** * 由很多很多个逻辑门电路、或者CMOS管连接而成的,它也是调包侠。 * 这些逻辑门,CMOS管不都是别人封装好的吗?然而在硬件层面,实现硬件设备需要考虑的因素和面临的挑战有很多。

正文

应用层

在应用层的角度看,比如 JavaScript 开发、Typescript开发、Java 开发、Android 应用开发等等,利用高级编程语言来控制计算机设备,根本无需关注硬件部分,操作系统部分也无需关注,除非是性能优化,可能需要关注操作系统的一些细节。大多数时候我们是利用高级编程语言以及这些高级编程语言提供的运行时API或机器指令,以及操作系统的接口,来完成对计算机的控制,站在这个角度看,我们完完全全就是调包侠。

低级编程语言层

在低级编程语言的角度看,例如高性能程序,比如数据库系统、编译系统、视频解码程序等等,他们对性能的要求很高,但依然是基于操作系统之上,调用操作系统的接口,无非是性能要求的高,那它也是调包侠,调用操作系统的接口。

系统编程层

在系统级编程的角度看,比如操作系统开发,它需要知道一些硬件的细节了,但不是电气特性,而且接口特性,比如CPU控制一个外部设备,写入知道这个设备I/O接口的数据端口(数据寄存器)、状态寄存器(状态端口)、控制端口(控制寄存器)这些寄存器对应在内存地址空间的地址(这属于硬件信息,一般是固定的,在电路板设计时由硬件工程师设计),在这个角度之上,操作系统的开发那也是调包侠,它调用硬件的接口,完成对硬件的驱动,驱使电位改变,从而引起外部设备的工作。

硬件层

在硬件层面的角度看,它是由很多很多个逻辑门电路、或者CMOS管连接而成的,它也是调包侠,这些逻辑门,CMOS管不都是别人封装好的吗?

然而在硬件层面,实现硬件设备需要考虑的因素和面临的挑战有很多,以下是一些主要的:
设计和优化:硬件设计需要考虑很多因素,包括但不限于性能、功耗、成本、可靠性和安全性。这些因素之间往往存在着相互竞争的关系,比如提高性能可能会增加功耗和成本,提高安全性可能会降低性能。因此,硬件工程师需要在这些因素之间找到一个平衡点。
制造过程:硬件设备的制造过程非常复杂,需要精确的控制和高度的技术。任何微小的错误都可能导致设备无法正常工作。此外,随着技术的发展,硬件设备的尺寸越来越小,这对制造过程提出了更高的要求。
测试和验证:硬件设备需要经过严格的测试和验证,以确保它们在各种条件下都能正常工作。这包括在极端的温度、湿度、电压等条件下进行测试。这个过程既耗时又耗费资源。
兼容性:硬件设备需要与各种其他设备和软件兼容。这需要硬件工程师对各种标准和协议有深入的理解。 可持续性和环保:随着环保意识的提高,硬件设备的设计和制造也需要考虑其对环境的影响。这包括使用环保的材料,减少能源消耗,以及设备的回收和处理。

总结

所以啊,无论在那个层面,它都是“调包侠”,都是分工模式,相互依赖的。
所以啊,不要再反感“调包侠”;
所以啊,不要在认为低级编程语言,比如:C/C++、Rust,就比 JavaScript、Java 高出一等;
所以啊,不要认为系统开发人员,比如开发操作系统的工程师,或者开发驱动程序的工程师,就比应用层的工程师高级、高人一等。

与我们都是调包侠相似的内容:

我们都是调包侠

应用层 在应用层的角度看,比如 JavaScript 开发、Typescript开发、Java 开发、Android 应用开发等等,利用高级编程语言来控制计算机设备,根本无需关注硬件部分,操作系统部分也无需关注,除非是性能优化,可能需要关注操作系统的一些细节。大多数时候我们是利用高级编程语言以及这些

流量调度、微服务可寻址性和注册中心

前言 现代计算机基于计算、存储和调度的体系, 于是现代架构都是围绕这三大话题不断演进。 在基础架构部, 也是主要为了解决这三个难题,为业务事业部提供透明的、高可用、可快速伸缩的 三大能力, 我们组主要负责 [流量调度] 这个话题,下面是一些宏观的技术笔记。 在单体结构, 流量调度是直观且无感的(DN

[转帖]Linux性能调优,看这一篇就够了

调优是一件因地制宜的事情,生搬硬套可能适得其反。互联网企业,生产环境大多数都是linux操作系统,Linux服务器性能调优,是一个重要的课题。linux有成百上千的参数可以调整,对这些参数的理解,可以帮助我们更好的理解服务器工作的原理,帮助更快的找到瓶颈和解决问题。 为了帮助理解,先上一个Linux

面试官:你讲下接口防重放如何处理?

前言 我们的API接口都是提供给第三方服务/客户端调用,所有请求地址以及请求参数都是暴露给用户的。 我们每次请求一个HTTP请求,用户都可以通过F12,或者抓包工具fd看到请求的URL链接,然后copy出来。这样是非常不安全的,有人可能会恶意的刷我们的接口,那这时该怎么办呢?防重放攻击就出来了。 什

简单的限流过滤器

API接口都是提供给第三方服务/客户端调用,所有请求地址以及请求参数都是暴露给用户的。 每次请求一个HTTP请求,用户都可以通过F12,或者抓包工具看到请求的URL链接,然后copy出来。这样是非常不安全的,有人可能会恶意的刷我们的接口,那这时该怎么办呢? 增加一个全局过滤器 获取客户端的IP 限制

8.7 父进程检测反调试

首先这是一种比较奇特的反调试思路,通过检测自身父进程来判定是否被调试,原理非常简单,我们的系统在运行程序的时候,绝大多数应用程序都是由`Explorer.exe`这个父进程派生而来的子进程,也就是说如果没有被调试其得到的父进程就是`Explorer.exe`的进程PID,而如果被调试则该进程的父进程PID就会变成调试器的PID值,通过对父进程的检测即可实现检测是否被调试的功能。

如何使用csproj构建C#源代码组件NuGet包?

一般我们构建传统的NuGet包,都是打包和分发dll程序集文件。 至于打包和分发C#源代码文件的做法,比较少见。 那么这种打包源代码文件的做法,有什么优点和缺点呢? 优点: 方便阅读源代码。 方便断点调试。 减少 Assembly 程序集模块加载个数。 更利于发布期间的剪裁(PublishTrimm

SPI在Java中的实现与应用 | 京东物流技术团队

1 SPI的概念 API API在我们日常开发工作中是比较直观可以看到的,比如在 Spring 项目中,我们通常习惯在写 service 层代码前,添加一个接口层,对于 service 的调用一般也都是基于接口操作,通过依赖注入,可以使用接口实现类的实例。 简单形容就是这样的: 图1:API 如上图

JDK 17 营销初体验 —— 亚毫秒停顿 ZGC 落地实践

自 2014 年发布以来, JDK 8 一直都是相当热门的 JDK 版本。其原因就是对底层数据结构、JVM 性能以及开发体验做了重大升级,得到了开发人员的认可。但距离 JDK 8 发布已经过去了 9 年,那么这 9 年的时间,JDK 做了哪些升级?是否有新的重大特性值得我们尝试?能否解决一些我们现在苦恼的问题?带着这份疑问,我们进行了 JDK 版本的调研与尝试。

类定义、属性、初始化和析构知识点总结

一:前言:为什么要学类? 类 是一个独立存放变量(属性/方法)的空间 1.简化代码,提升效率,避免代码重复写入。如用户注册、校验、登录方法可以放在一个类中,需要哪个方法就调用哪个 类 》建立模型框架(建立一个方法) 》很多鼠标(实例化) 》都是独立的 2.面向对象:直接给我们结果例1. 列表的方法