编程的GCRoot应该怎么去找?

news2024/11/14 19:41:38

本文导读

本文通过抛出一个编程的上帝视角问题,我们了解什么是编程的上帝视角,编程如何学习以及编程的root是什么,找到root之后,我们有如何利用上帝视角去解决编程中的推理。

一、编程的上帝视角

上帝视角乃是叙述视角中,第三人称叙述者如同无所不知的上帝,能够以非现实的方式不受限制的描述任何事物,操控者一切,监视着一切,想没想过,如果你打开了编程世界的上帝视角,会干嘛?

这将意味着: 1、学习将不区分语言 2、遇到问题快速定位 3、不再纠结于如何学习 4、对任何新技术,只要看一下架构和功能,马上能猜(推理) 出底层实现原理 5、抓住语言共同点学习

从底向上学习:操作系统->计算机组成->计算机网络->汇编与C/C++语言 ->数据结构算法->其他高级语言 (Java、Python、Go…),刨根问底,从源码论证,去除不必要的争论与错误,对计算机思维模式进行训练。

二、编程 Root 是什么

我们需要找到一个 Root 点,然后往下对比学习分析,扩展知识脉络。那么我们先来定义下本文要探究的 Root是什么?

既然我们需要打开混沌视角,那么必然得把多个语言进行融合分析,不过我们先来基于已经知道的知识来进行推理:

1、计算机基础硬件:CPU、内存、硬盘(计算机组成原理、计算机体系结构

2、程序员直接通过命令或者鼠标、键盘外设来跟操作系统交流,操作系统来调度硬件完成操作(操作系统、计算机体系结构

3、我们的编程语言自然也是通过某种方式来跟操作系统进行沟通(操作系统编译原理、汇编语言

4、而如果是多个机器进行沟通,那么我们需要在硬件上支持网卡,操作系统上支持网络栈(操作系统计算机网络

三、找到 Root——系统调用

通过第二章我们得到了一个结论,一切事情由操作系统来完成。

操作系统和硬件将用户所处的环境分为,用户空间和内核空间,不过不懂也没关系。我们可以想想你在网站中编写的Controller,然后通过浏览器输入地址,然后就可以通过Http协议访问这个Controller(SpringMVC),从而获取到返回结果。

那么读者这里可以将操作系统提供的这些功能接口想象为Controller,而我们所需要做的就是通过编程语言去调用这些接口完成需要的功能。在上面我们提到了,通过Http协议来调用,那么我们与系统调用之间,是不是也需要定义一个协议来完成操作

这就是系统调用, 我们需要使用操作系统提供的方法来完成参数传递到操作系统,从操作系统中获取到结果。所以对于Http协议来说只不过是通过TCP/IP协议栈来完成调用,而系统调用来操作系统是单机上完成调用。这时我们找到了 Root,所有编程语言都会使用系统调用,来告诉操作系统需要完成的动作和获取结果。

四、Root 的扩展和运用

1、在计算机中保存计算数据的地方就是内存,一个内存基础单元为1byte = 8bit (位) 【存放数据的盒子,最小就是1byte ,不能再小了,比如:没有1bit的盒子,最小给的盒子就是1byte】编程语言需要提供些什么呢,操作这些不同大小盒子的东西,那是什么?基础数据类型

2、基础数据类型让我们可以从操作系统中获取到给定规格大小的盒子,而如果我们需要获取不属于这些规格的盒子呢?我们就需要:分配这些盒子的功能

3、如果我们只分配盒子,不释放,那么显然最终盒子用尽,导致系统奔溃,那么我们需要归还这些盒子,那么这时我们有两种方法:由某个东西帮我们自动归还、通过编程方式手动归还

4、在提供了这些基本操作后,我们考虑下,需要用户直接按照协议来直接操作系统调用么?那必然不是,我们需要在编程语言中提供给用户便捷的使用方法

这时,通过以上分析我们可以得出以下编程语言需要提供的功能结论

1、封装系统调用方便用户调用(线程库、I0库、 图形库、网络编程库

2、提供基础数据类型来使用规格化的内存(堆、栈、方法区…

3、提供内存分配和释放的手段

4、提供基础算法与数据结构(数组、链表、队列、栈、树

5、按照编程语言的特性,提供面向对象的支持(抽象、继承、多态

当读者掌握到以上的内容后,恭喜已经打开了编程世界的上帝视角。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

23.网络编程(一)

目录 一.网络编程 1.1 什么是网络编程 1.2 网络通信基本模式 1.3 网络通信三要素 1.4 IP地址 1.4.1 什么是IP地址 1.4.2 IP的常见分类 1.4.3 IP地址基本寻路 1.4.4 IP地址形式 1.4.5 IP常用命令(在命令提示符窗口中使用) 1.4.6 特殊IP地址 1…

Docker安装Postgresql

测试环境:Centos7.x docker1.13.1 postgres12本文使用的是在镜像仓库直接pull的方式,非Dockfile的方式。Postgresql的Dockerfile参考:https://github.com/docker-library/postgres/blob/master/12/alpine/Dockerfile常用命令docker命令大全…

MySQL的卸载

步骤1:停止MySQL服务 在卸载之前,先停止MySQL8.0的服务。右击“此电脑“,选择”管理“,可以在“服务”列表找到“MySQL8.0”的服务,如果现在“正在运行”状态,可以右键单击服务,选择“停止”选…

java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Kafka【Kafka的概念、单机及集群部署】~整起

Rust一、Kafka基本概念1.Kafka是什么?Kafka与Flume?2.Kafka的整体架构:3.kafka的生产者与消费者:4.kafka的Topic与日志、分区【分区可以提高咱们kafka的写入能力和存储能力】5.kafka的顺序写入:6.kafka的零拷贝技术7.k…

MQ 队列消息

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成,通过提供消息传递和消息排队模型,它可以在分布式环境下拓展进程间的通信,对于消息中间件,常见的角色大致也就有Producer(生产者).Consumer(消费者) MQ 消息中间件 消息队列 …

【数据结构基础】树 - 基础和Overview

知识体系结构树树是一种数据结构,它是n(n>0)个节点的有限集。n0时称为空树。n>0时,有限集的元素构成一个具有层次感的数据结构。区别于线性表一对一的元素关系,树中的节点是一对多的关系。树具有以下特点:n>0时,根节点是…

Linux嵌入式开发——文件权限

文章目录Linux嵌入式开发——文件权限文件权限文件权限管理修改文件权限修改文件所属用户拥有者拥有者组Linux嵌入式开发——文件权限 文件权限 文件权限是指不同的用户或用户组对某个文件拥有的权限,文件的权限分为三种,并且可以使用二进制表示文件权…

kerberos环境下parcel方式部署flink1.15.3 基于CDH6.3.2 Flink on Yarn

1.1 Flink on Yarn的优势相对于 Standalone 模式,在Yarn 模式下有以下几点好处:1.资源按需使用,提高集群的资源利用率;2.任务有优先级,根据优先级运行作业;3.基于 Yarn 调度系统,能够自动化地处…

通信原理笔记—模拟信号的数字编码

目录 低通与带通信号的抽样定理: 模拟信号数字编码的基本概念: 模拟信号的抽样: 低通信号的理想抽样: 低通采样定理: 采样方式: 冲激采样示例: 低通信号的自然抽样: 带通抽样…

正版授权|Charles 4 网络封包分析调试工具软件

Charles 4 是一款 HTTP 代理 /HTTP 监视器/反向代理,使开发人员能够查看其机器和 Internet 之间的所有 HTTP 和 SSL / HTTPS流量。这包括请求、响应和 HTTP 标头(包含 Cookie 和缓存信息)。 授权分类:单许可证 站点许…

Python程序设计-第2章Python程序语句

第2章Python程序语句一.预习笔记 1.1 if语句 if 条件 : 执行语句 注意:条件后面要有 : 号,其次条件不需要括号包裹,然后执行语句需要有缩进 1.2 if else语句 if 条件 : 执行语句1 else : 执行语句2 注意:条件成立执行语…

Vue3中使用Tinymce富文本编辑器(版本最新)

使用目录前言一、安装方法一(npm、yarn下载)二、安装方法二(下载官网压缩包方法)——推荐总结前言 最近使用了WangEditor编辑器和Tinymce编辑器,使用方法如下(采用的编辑器版本是官网最新的) 汉…

@Configuration 和 @Component 区别

本文参考1:https://blog.csdn.net/isea533/article/details/78072133 本文参考2:https://blog.csdn.net/weixin_52850476/article/details/124410800 一句话概括就是 Configuration 中所有带 Bean 注解的方法都会被动态代理,因此调用该方法…

数据库密码定期轮换(AWS版)

问题 需要定期轮换AWS上面的RDS数据库的密码,而且,需要让业务程序无感知。 思路 AWS有个一个aws-secretsmanager-jdbc库,只要在SpringBoot的基础上面集成即可,就可以使用secrets manager来定期轮换数据库的密码了。 解决步骤 …

Excel VBA 讲座05 - InputBox和MsgBox使用

本篇介绍的内容: 1,当用户使用宏或procedure时,使用InputBox来接收或收集用户输入的信息。 2,根据需求使用IF语句构建逻辑。 3,使用Message Box将信息展示给用户,比如用户输出错误,就提示用户…

np.loadtxt()读取数据

前言 机器学习中使用np.loadtxt()可以高效的导入数据,np.loadtxt()适合.txt文件和.csv文件。但是它默认读取float类型的值。 1.np.loadtxt()读取txt文件 1-1 基础参数 numpy.loadtxt(fname, dtype, comments#, delimiterNone, convertersNone, skiprows0, usecol…

uniapp获取支付宝user_id - 支付宝提现 - 登录授权 - APP支付宝登陆 - H5支付宝授权

效果图 uniapp须知(无奈之处) uniapp绑定支付宝user_id提现 - 方法对比: ==== 不同接口 ==== 【APP支付宝登录】 https://opendocs.alipay.com/open/218/105325 【网站支付宝登录】

PMP证书有什么用?

有没有用看你的考证目的,总的来说就是敲门砖的作用,项目招聘、应聘项目经理都需要pmp 证书。⭕但是事在人为,祈祷考完 PMP 就能升职加薪走上人生巅峰的想法,一纸证书是做不到的。PS:身边有考了 PMP 之后跳槽薪资涨幅 3…

阳康后身体还是不舒服怎么办?

很多年轻朋友阳康后恢复的还可以,逐渐回到以前的身体状态,但是家里老人体质偏弱,恢复情况就没那么乐观了。有些还一直伴随着没有嗅觉、疲惫、咳嗽等后遗症。要让老人快速恢复健康,生病后一定要注意这几点:每天保证7-8小…

测试开发中的虫剂悖论

测试开发中的虫剂悖论 1 初识虫剂悖论 提到 虫剂悖论(pesticide paradox),我相信很多人都没听说的,除非是生物学专业的同学或者老师。 虫剂悖论描述的是重复使用某种农药杀灭害虫,时间越久,杀虫的效果就越差。 之所以这样&#xf…