目录

1.冯诺依曼体系

1.1冯诺依曼体系的构成

1.2 存储器-内存

1.2.1 为什么需要存储器(内存)的两个理由

1.3 冯诺依曼体系的重要性

1.4 一个生动的例子理解冯诺依曼体系运作

2. 操作系统OS

2.1 什么是操作系统OS

2.2 操作系统OS的作用

2.3 操作系统OS如何管理软硬件资源

2.4 操作系统如何管理数据

2.5 OS的核心管理逻辑*


1.冯诺依曼体系

要讲操作系统OS , 首先我们就要从最底层的硬件 , 冯诺依曼体系结构讲起。

1.1冯诺依曼体系的构成

冯诺依曼体系结构分别由 输入设备  输出设备   存储器(内存)  中央处理器(运算器&&控制器)四大件组成。

四大设备的举例 :

输入设备 : 键盘 磁盘 网卡 话筒

输出设备 : 显示器 磁盘 网卡 音响

存储器 : 存储器仅指内存!!!并不指磁盘硬盘!!!不要混淆

运算器&&控制器 : 合称中央处理器CPU , 其中运算器可以计算 , 控制器可以输出控制指令。

四大设备说明 : .

输入设备主要用来向内读取输入数据

输出设备主要用来向外输出数据信息。

有些设备既可以做输入设备 , 也可以做输出设备 。 例如磁盘 , 磁盘可以做输入设备 , 我们可以读取磁盘(输入设备)上的数据到内存存储器中 ,  同时 , 磁盘也可以做输出设备 , 将内存中的数据写入到磁盘(输出设备)当中

运算器&&控制器 , 合称中央处理器CPU , 其实就是指芯片--高精度集成电路 , 当今大数据时代进步都是依靠CPU的进步。CPU中的运算器 , 可以进行算术运算和逻辑运算 , 如 +-*/% 算术运算 , | & ^等逻辑运算 。CPU中的控制器 , 可以执行CPU中某些控制逻辑 , 如读取,分析,执行指令 , 响应某些中断信号。

当然冯诺依曼体系中最重要最核心的是 存储器(专指内存)  , 下面会我们对之做详细介绍。

1.2 存储器-内存

1.2.1 为什么需要存储器(内存)的两个理由

在冯诺依曼体系中 , 存储器专指内存 , 切处在最核心的位置(沟通其他所有器件) , 那为什么要有内存呢? 我们首先看一下冯诺依曼体系结构的运作过程 :

四大设备之间的运行过程 (即冯诺依曼体系结构数据信号的流动处理过程):

我们以黑色的数据信号为例 , 首先我们通过输入设备获取到数据 , 由输入设备 将数据信息 传输 到存储器即内存当中 , 之后内存将数据传输给CPU中的运算器进行运算 , CPU计算完毕后将数据再传回到内存当中 , 最后内存再将计算好的结果交给输出设备进行输出

所以内存在整个过程处在最核心的位置 , 是输入设备 , CPU , 输出设备 交互的唯一桥梁

同样也可以说明 , 任何的程序,数据,文件只有在导入到内存后,才能被CPU操作,才能输出显示

那这个过程中我们可不可以不要内存(存储器)呢?

事实上是可以这样做的但是世界上没人这样做

如果我们不要内存 , 那输入设备就会直接将数据交给CPU , CPU也会直接将计算的结果交给输出设备。然而 , 我们还需要考虑到不同设备的效率差问题!

输入设备的输入效率是ms毫秒级别的(比如磁盘) , CPU的计算效率是ns纳秒级别的,如果直接进行CPU和输入设备的交互 , 此时我们的运算效率就不再由CPU来决定 , 而是由输入设备来决定,那计算机的运行效率效率就变得很低了(ns->ms) , 所以我们引入了内存的概念。(内存的速度是us微秒级别的)

而当我们有存储器(内存)作为核心沟通的硬件设备。此时输入设备就不用直接打到CPU当中,而是先将数据传到内存存储器当中 , 工作的生活 , 等到CPU计算任务不是特别繁重时 , 存储器再将数据传输给CPU去进行运算 , CPU计算出结果后 , 此时也不会把结果直接交给输出设备 , 而是先交给内存 , 内存再适时将数据刷新到输出设备当中

有了内存作为核心沟通设备 , CPU就不再需要和外设们打交道了 , 而只需要和内存打交道。这个过程中 , 计算机效率的体现就不再是输入设备和CPU之间的数据传输过程了(ms毫秒级别) , 而就是在于内存与CPU之间的数据传输过程(us微秒级别) ,  这样我们计算机的运算效率就大大提高了。

以上是计算机需要存储器的第一个理由 , 即内存的出现 拉高了计算机的总体运行效率 , 不过与此同时内存的出现也大大降低了计算机的制造成本。那内存是如何降低成本的呢?

我们首先要知道 : 在计算机体系中 , 凡是离CPU越近的存储设备 , 单价就越高 , 效率就越高 , 凡是离CPU越远的存储设备 , 单价就越低 , 效率就越低

例如寄存器离CPU最近 , 寄存器的效率就最高 , 不过寄存器的造价也最贵 , 再远一点的主存DRAM(即内存)的效率次之 , 造价相对便宜 , 再再远一点就是本地磁盘 ,  其造价最低 , 不过效率也是最低的。

举个例子 : 我们花500块钱 , 能买几百G的磁盘 ,  而寄存器的也就能买到几M , 差价就是这么离谱!

所以如果没有存储器(内存)的出现 , 输入设备带来的大批数据需要直接导入到CPU内部进行运算 , 这就需要我们以极巨大的成本来扩充寄存器的大小 , 来存储输入的大批数据 。所以内存的出现可以帮助CPU存储来自输入设备的大批数据 , CPU计算多少数据就从内存中拿多少, 这样做就降低了计算机的成本。

综上 , 存储器(内存)既能提高计算机的运行效率 , 又能降低计算机的存储造价 , 所以冯诺依曼体系下存储器必不可少的 ! 同时我们也看到 , 在计算机运行过程中 , 输入设备 , 输出设备 , CPU都需要以存储器为桥梁来完成自己的工作 , 所以存储器的核心地位也是不可动摇的 !

1.3 冯诺依曼体系的重要性

当代计算机遵循的体系结构就是冯诺依曼体系。

计算机的运行机制就是围绕冯诺依曼体系结构来运行的 ,  万物都围绕冯诺伊曼来走 , 这其实是从是底层纯硬件角度揭示计算机的运行原理

通俗点说 :

我们每个人的计算机其实就是一组冯诺依曼体系

计算机中一切的运行 , 都可以看作在硬件层面  数据信号 在冯诺依曼体系中 流动全过程。即一切的程序运行都是在冯诺依曼体系中的运行

这样说还是太抽象 , 而且我们对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上 , 下面我们通过一个生动的例子来帮助我们继续理解冯诺依曼体系的运作。

1.4 一个生动的例子理解冯诺依曼体系运作

高中毕业后 , 你和高中的好朋友们都远走高飞 , 去到了全国各个城市的大学 , 假设你现在在北京市的中国地质大学 , 然后你的兄弟在西安市的西安电子科技大学 , 你们相隔十万八千里 , 但是你们还是能够通过QQ在各自的笔记本电脑上远程聊天 , 比如身处北京的你在笔记本电脑上输入发送了 我想你了 这个消息 , 那你的好朋友就能在他的笔记本电脑的QQ上收到这条富有感情的消息 , 下面我们从纯硬件的角度来解析数据流向的过程

首先每一台计算机都是一组冯诺依曼体系 , 两台计算机的交互 , 其实是两组冯诺依曼体系之间的交互 。然后QQ作为一款软件程序 , 必须要首先导入到内存中才能被我们使用。

我们首先在我们的计算机的键盘(输入设备)输入消息数据 , 然后加载到内存当中 , 然后消息数据从内存再交给CPU进行加密逻辑的运算 , 随后CPU将数据结果加载回内存中 , 内存最后将加密的数据信息传输到我这台笔记本的输出设备 --网卡当中。

随后网卡将加密数据再网络中进行转发 , 最后将数据接入传输到你好朋友的电脑中的输入设备--网卡当中。之后在好朋友的冯诺依曼体系中 , 数据从输入设备网卡中 , 首先被加载到内存当中 , 之后内存将数据信息交与CPU进行解密运算 , CPU最后把解密后的消息传回内存 , 最后这条消息从内存传输写入到了输出设备显示器当中 , 你的好朋友就知道你想他了。

计算机中的硬件是最底层的 , 即冯诺依曼体系在计算机的最底层 , 而操作系统OS位于冯诺依曼体系的上一层 , 所以操作系统实际上沟通管理了冯诺依曼体系 , 即掌管对最底层硬件的管理使用 , 进而OS才可以操作这台计算机 , 所以我们要了解OS , 就需要先了解最底层的冯诺依曼体系。下面我们正式开始了解操作系统OS。

2. 操作系统OS

2.1 什么是操作系统OS

操作系统是一款软件 , 是程序员写出的程序,且后续经过编译的 , 在内存中运行起来的一个程序 , 而这款软件是专门针对软硬件资源进行管理工作软件

由以上对于OS的简介我们可以衍生以下三点认识 :

操作系统也是软件程序 , 操作系统在没有启动的时候,是存储在磁盘当中或者其他外设当中

所谓操作系统OS的启动 , 就是将软件数据与代码 , 都加载到内存当中

如果把将你电脑上的WindowsOS操作系统删除 , 只留下纯硬件的话 , 你是无法跑程序使用计算机的。比如你想在磁盘删除一个文件 , 你想让CPU跑一个代码 , 你想让网卡发送一个数据 , 这些都是不能做的或者更准确的说成本太高 , 你不得不去直接操作这些硬件 , 所以你就得懂各个硬件的协议使用标准等 , 硬件种类繁多而且型号互不相同 , 不要OS操作系统(例如windows)作为管理硬件的中介 , 用户是很难直接操作各个硬件设备的。

总之 , 操作系统就是一款软件,一个程序 , 这款软件的作用是管理计算机的软硬件资源用户需要管理软硬件资源的操作系统OS作为中介 , 从而使用软硬件资源(使用我们的计算机)。

2.2 操作系统OS的作用

下面我们通过一个生动的例子来说明 操作系统OS 硬件资源 软件资源 之间的关系 :

在大银行当中 , 我们有 仓库,电脑,窗口,板凳,员工宿舍,警棍,警盾 等等物体 , 这是银行的硬件资源 , 同时银行中也有 各种各样的员工们 , 这其实是银行的软件资源 。同时银行中也有 管理人员 , 比如说 行长或管理班子 , 这其实是银行的操作系统OS 

银行中 , 管理团队 工作的员工 硬件设备 , 三者缺一不可 , 三者集齐才能维持银行正常的运作服务 ,  比如员工没有窗口电脑等硬件设备 , 就没法做好自己的本职工作 , 只有硬件设备而没有员工 , 老百姓很多服务也没法自己做到 , 没有管理班子 , 那银行的例如设备采购,人员招聘等事情也就没法做出决策 。再具体一点 , 比如老百姓需要进行存钱取款的服务 , 那工作员工就必须通过电脑,窗口来服务老百姓 。 比如现在员工反映银行点钞机都坏了 , 数钱效率低下 , 这时反馈给管理团队 , 管理团队就做出购买点钞机决策 , 再依托采购部的员工去采购 ,从而在以后提升对老百姓的服务效率。 比如现在员工工作情绪低迷 , 管理班子就会组织开展激励大会 , 来振奋员工更好的为老百姓服务。比如管理班子考虑到银行的安全问题 , 就会决策审批招聘更多的安保员工 , 决策加固防弹玻璃 , 让下面员工去招买 , 来更好的保障老百姓的生命财产安全。

计算机中为什么要有OS操作系统? 这个问题可以类比为在银行中为什么要有管理班子?

银行管理班子对下 : 管理好员工与银行硬件设备

银行管理班子对上 : 给老百姓一个稳定的,高效的,安全的服务环境。

操作系统OS 对下 : 管理好软件硬件资源。

操作系统OS 对上 : 给用户提供稳定的,高效的,安全的运行环境。

其中主要的逻辑就是 , 银行的管理团队通过管理银行的员工和管理银行的硬件设备 , 来更好的为老百姓提供金融服务。OS操作系统通过管理好软硬件资源 , 来给用户提供稳定的,高效的,安全的运行环境。管理软硬件资源是方式 , 更好的服务用户是目的

这里我们知道了操作系统OS的作用 , 那再具体点, OS操作系统是具体如何管理软硬件资源的呢?

2.3 操作系统OS如何管理软硬件资源

要讲明白操作系统OS管理软硬件资源的方式 , 我们首先举一个生动的例子 :

生活中 , 我们通常有两种事情需要做 , 一类是 做决策 , 一类是 做执行 。

现在我们说在学校里 , 有校长 , 辅导员 , 校长只负责做决策 , 辅导员只负责做执行 , 当然学校里还有被管理的同学们 。校长并不直接管理同学们 , 而是通过辅导员来间接管理到同学们 。校长我们站在校长的角度来思索校长是如何间接管理同学们的。

校长基本上是见不到学生的 , 我们也知道在学校中除了开学/毕业典礼 , 我们学生也见不到校长 , 那校长是通过什么来知道学生,并管理学生呢?      ->通过学生的数据!!!

校长并不需要直接和学生接触 , 而只需要获取每个学生的个人信息数据 , 比如校长其实只需要知道这个学生的绩点成绩 , 职务情况 , 奖惩历史 , 志愿活动 , 社团参加 等的数据信息 , 校长知道了学生的数据信息即可对之进行管理。事实上 , 我们每个同学都只是校长手上的一个一个数据而已。校长通过我们每个人的数据来对我们进行管理

例如 , 校长一天在办公室中看到了张三同学的数据 , 看到张三同学已经挂科重修二十门以上了 , 有多次违反校规校纪的记录。所以 , 校长就做出劝退张三同学的决策 , 校长只负责做决策 , 校长就会将这个决策告诉张三的辅导员 , 让辅导员去做这件事 , 辅导员就去通知张三,给张三做退学手续等等的执行行为。再比如 , 校长看到了李四同学的数据 , 发现李四同学全科满绩,而且任职学校团委部长 , 志愿活动时长全校第一 , 校长依据这些数据 , 做出给李四同学奖大钱的决策 , 专做决策的校长就会让做执行的辅导员去办这件事 , 辅导员就去组织召开表彰李四同学大会 , 辅导员去财政部申请领导奖金 , 在大会上辅导员把奖金交给李四同学。

那校长是如何知道张三,李四同学的数据信息的呢 , 还是做执行的辅导员 , 辅导员在开学或者什么时间段会去做学生的数据信息采集这件事 , 最后将数据汇总起来再交给校长。

其实 校长 , 辅导员 , 学生们 之间的关系 , 其实类比下来就是 操作系统 , 驱动程序 , 软硬件资源 之间的关系 ,学生的数据信息其实就是软硬件资源的数据操作系统也不直接操作管理软硬件资源 , 而是通过管理软硬件的数据信息间接的实现对软硬件资源的决策与管理 , 而数据的获取包括OS所做决策的执行 , 这些依托的都是执行者--驱动。操作系统所管理的硬件资源是以冯诺依曼结构组织的磁盘,网卡,内存等等硬件设备 , 操作系统所管理的软件资源有四大类 , 分别是 进程管理 , 内存管理 , 文件系统 , 驱动管理

2.4 操作系统如何管理数据

前面我们知道 , 操作系统是通过管理软硬件资源的数据信息 , 再通过中间执行者--驱动 , 来管理到这些软硬件资源。我们不妨再具体一点 , 操作系统是如何具体来处理这些数据信息的呢?

我们这次站在校长(OS)如何管理处理数据的角度 ,在上面的那个例子当中 , 校长是如何汇总处理这些海量的来自各个学院各个专业的学生的信息数据呢?

每个学生的数据是不是应该统一汇总在一起 , 而不是张三的数据信息混杂着李四的数据信息 , 各个学院专业的学生是不是应该统一的串在一起呢 , 而不是外国语学院的学生信息会和材料学院的学生信息混到一起。这就是我们下面要解决的[1][2]两个问题:

[1] 如何聚合同一个学生个体的数据  (如何聚合一个软硬件资源个体的数据信息)

首先第一步 , 校长必须要让获取的个体数据变得不再杂乱 , 即一次性看到的就是张三同学的全部信息 , 而不是张三同学的绩点成绩后面却配着李四同学的任职情况 , 再后面混着王五同学的竞赛信息 , 这并不方便校长对于数据的管理以及处理 , 这非常不方便校长进行数据的处理。

在C/C++中我们有结构体struct/类class 来帮助我们聚合一个个体对象的全部信息

所以只要我们把张三同学的绩点成绩 ,担任职务 ,学号信息等等都统一在这一个struct中即可。

struct Stu
{string name;long long id;int grade[10];//...
}; //用结构体来汇总单个学生个体的所有信息

同样的 , 类比上面聚合学生数据信息的例子 , 操作系统对于各个软硬件资源个体数据管理 , 其实也都是首先用结构体来汇总每个软硬件个体的数据信息的。比如一个一个进程个体(软件资源) , 都是由一个一个结构体(名字叫struct task_struct)汇总起来的 , 里面存储的是进程个体的数据信息比如进程标号,上下文数据等等。

struct task_struct
{int pid;int code, exit_code;int status;mem* p;
};//这个是软件资源中 一个进程个体数的数据信息汇总

[2] 如何将多个学生的数据结构体 关联组织起来  (如何关联多个分散的数据信息个体)

现在每个学生个体的信息都聚合在一个一个的struct中了(你可以看作是结点) , 一所学校中学生有许多 , 大几千肯定有 , 而且都来自不同的学院专业 , 这亦不方便校长进行数据处理 , 因为我们在大几千个&&没有关联&&混杂各个学院专业的学生信息个体中 , 查找修改的效率必然是很低的 , 校长这时则会按照不同学院专业, 分别将这些独立结构体个体们都关联组织在一起

在计算机学科中 , 我们有数据结构这个利器 , 校长将这些结构体个体关联组织起来 , 其实就是用数据结构来将一个一个结点组织起来 , 例如我们可以用链表 , 二叉树 , 红黑树 , 哈希表等数据结构将这些结构体关联组织起来。

所以我们只要把外国语学院的学生数据个体struct按照数据结构组织起来 , 将材料学院的学生数据个体struct按照数据结构也组织起来 , 那么就方便校长对这些数据的增删查改 , 也即方便校长对数据的管理与处理 。

同样的 , 类比上面校长关联不同学生struct数据个体的例子 , 操作系统对于每一类软件资源/硬件资源 , 都会将该类资源的每一个个体struct信息 ,也会用数据结构组织关联起来。 例如我们拿计算机中的一类软件资源 --进程资源来说 ,  计算机中有许多的进程个体 , 操作系统OS是通过管理一个个进程的数据间接管理到进程实体的 , 所以OS就把每个进程的数据信息集合struct结构体通过数据结构关联组织起来 , 操作系统对进程数据信息组织起来的数据结构的增删查改(对数据的处理),间接管理处理到计算机中的一个一个进程实体(管理软件资源)

2.5 OS的核心管理逻辑*

总结如上操作系统如何管理处理数据的方式 (1.先用struct将数据个体信息聚合 2.使用数据结构将不同个体信息块组织起来) , 其实我们就可以总结为六个字 , 这六个字其实也是操作系统进行所有种类的软硬件资源管理绝对宗旨 , 六字真言

1.先描述       !!!!!      2.再组织      !!!!!!

先描述被管理的对象个体 , 再组织 将被管理对象使用特定的数据结构组织起来

所谓的操作系统OS做管理 就是先描述 在组织

其实最后就变成了OS对与数据结构的增删查改 , 这就是OS的管理!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

管理的本质就是先描述,再组织!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

下面我们举个例子具体应用这个六字真言:

操作系统如何管理进程资源呢?

-> 那必然是 先描述 在组织

-> 必然有一个描述进程的结构体(学名叫PCB -进程控制块 包括进程的状态优先级 进程对应的代码 上下文数据 都能从PCB struct中找到)

-> 同时操作系统也必然会将这些数据个体struct都用数据结构再组织起来。

-> 最后操作系统通过对这些数据的管理 , 即通过对数据结构的增删查改(决策->执行) , 来间接管理操作计算机中的进程资源。

2.6操作系统如何对上提供服务

2.6.1引出系统调用接口

刚刚我们了解都是操作系统对下管理软硬件资源的方式,通过数据化,即先描述在组织都方式,通过对数据的操作来完成对不同类软硬件资源的决策,然后通过驱动程序来完成执行,即对软硬件资源的具体操作。换句话说操作系统通过管理软硬件资源来更好的为用户提供服务,对下如何管理软硬件资源我们大概知道了,那具体是如何对上提供服务的呢?

举个例子,我们printf("hello world\n");最终显示到硬件输出设备显示器上,这个过程肯定是 从用户程序员->到计算机内部(内存)->到驱动程序->到硬件显示器,要完成这次对计算机软硬件资源的使用,这个过程是肯定贯穿OS操作系统的,操作系统肯定在这个过程肯定去调度相应软硬件资源了,打印到屏幕也肯定是通过来自OS对上提供的服务实现的。那这个服务具体是以什么方式提供的呢?

在这之前我们先举个生动的例子:

第一件事,操作系统OS是不信任任何用户的,不允许任何外人直接调度操控计算机内部的软硬件资源模块,但是又必须对外提供服务 ,现实之中我们有一个相通的例子--银行。

银行是不信任任何用户的,换句话说银行不可能让用户你来亲自操控电脑,仓库,不可能让你直接去数钱,取钱,这对银行来说是十分极其不安全的!

所以银行对外提供了一个一个的窗口,通过一个一个窗口的方式来对用户提供不同的服务,窗口隔着一个大玻璃,只开了一个小口,窗口两侧分别隔着的是银行的内部的工作人员和寻求服务的外来者,如果用户要获取任何的服务,就必须通过这个窗口来获取服务

银行不会信任任何外来寻求服务的用户,操作系统也不会信任任何用户(不允许你直接使用软硬件资源,不允许你直接访问各种功能模块)

银行对外提供服务的方式是通过开放窗口,OS对上提供服务的具体方式是开放系统调用接口

银行对外开放的一个一个窗口其实就是操作系统对用户提供的一个一个系统调用接口

2.6.2介绍系统调用接口

说白一点,系统调用接口其实就是操作系统对外提供一个一个函数,外部的用户通过调用系统调用接口调用这些函数让操作系统完成用户想完成的操作,由操作系统帮你调度软硬件资源。

再说白一点,这些系统调用接口就是一个一个的可以被调用的C语言函数

如下面的write函数,fork函数,都是操作系统对上提供的系统调用接口(C函数)。

系统调用接口是我们作为用户,作为程序员操作使用软硬件资源的几乎的唯一的方式,但是其实我们是很少用的到的,实际上我们并不直接调用系统调用接口,而是一直在间接使用这些接口,下面我们讲下面一组关系就明白了:

系统调用接口 vs 库函数接口(C语言库函数接口 C++STL库函数接口 Python库函数接口...)

我们还是先来一个例子来区分系统调用接口和库函数接口:

如图我们可以看到,要在屏幕上打印hello world,使用系统调用接口,其实是比较复杂的! 调用起来困难,使用成本也很。其实历史上也是系统调用接口write被操作系统先提供出来,然后后面有大佬write进行封装实现出来了C库函数printf,来方便用户进行屏幕的打印

再进一步,各种语言的库函数与系统调用的关系,库函数实际上就是对系统调用接口的封装!是有一些厉害的大佬,对系统调用接口进行软件上的封装,以第三方库.lib的形式呈现,如C语言库,C++标准库,Python语言的库,都是对系统调用的封装出来的第三方语言(第三方库)

用户通常使用的都是C,C++等库语言的接口,用户并不直接使用系统调用接口,而是使用封装了系统调用接口的第三方库,间接使用了系统调用接口

总结一下,系统调用接口和库函数接口是上下层的关系,语言层面上其实库就是对系统接口的封装。

下图即可说明 用户操作,使用的库(库函数),系统调用接口,操作系统,这操作系统对上服务过程中,四者之间的关系。操作系统对外提供系统调用接口来对外服务,但是用户不直接使用系统调用接口,而是通过调用封装这些系统调用接口的库函数接口 , 间接来使用系统调用,通过系统调用沟通操作系统OS完成相应操作。

[入门篇]初识操作系统OS(这篇博客将帮你打开操作系统OS大门的第一步 超超超超超详细)相关推荐

  1. 篇百度前员工发表的博客,在这篇长文里回忆了他离开百度的原因、他眼中的百度乱

    这是一篇百度前员工发表的博客,在这篇长文里回忆了他离开百度的原因.他眼中的百度乱象以及对百度文化的反思.全文转载,无删减.          1.离开          离开百度已经一年多了.     ...

  2. shaderToy初学笔记(一)(​转载自最简单的ShaderToy入门 - 笑脸渲染_亨利王的博客-CSDN博客_shadertoy)

    void mainImage( out vec4 fragColor, in vec2 fragCoord ) {vec2 uv = fragCoord/iResolution.xy;uv-=.5;f ...

  3. DayDayUp:Markdown编辑器的简介、入门、使用方法(Markdown编辑器撰写博客)

    DayDayUp:Markdown编辑器的简介.入门.使用方法(Markdown编辑器撰写博客) 目录 Markdown编辑器简介 Markdown编辑器入门 Markdown常用语法 Markdow ...

  4. python博客项目评论_Python 爬虫入门——小项目实战(自动私信博客园某篇博客下的评论人,随机发送一条笑话,完整代码在博文最后)...

    之前写的都是针对爬虫过程中遇到问题的解决方案,没怎么涉及到实际案例.这次,就以博客园为主题,写一个自动私信博客下的评论人员(在本篇留下的评论的同学也会被自动私信,如果不想被私信,同时又有问题,请私信我 ...

  5. 9篇小白都能懂系列博客学完MySQL基础

    博主经过三天的时间整理终于把MySOL基础部分内容总结成了这九篇博客,如果博主漏写了重点的基础部分的内容,或者说博主写的地方有错误还请CSDN的兄弟们提醒(这一点就比较重要了),由于博主的时间比较有限 ...

  6. Jerry Wang一篇介绍ABAP调试心得的博客上了SAP社区的首页

    这篇博客是我2013年写的.

  7. 第一篇什么都没写的博客

    这是我的第一篇博客 大家好 Pixiv 大家好 这是我的第一篇博客 此博客主要用来堆放各种奇怪的东西 由于个人编程水平有限,所以在相当一段时间内 这里面可能不会出现特别高质量的内容 另外本人只会使用散 ...

  8. 【C初阶】第一篇——初识C语言(万字篇,带你敲响C语言的大门)

    接受平凡,努力出众,承认普通,但拒绝沉沦于平庸.大家好,我是你们的老朋友,小KK.  满满的 ​前言 ​什么C语言? ​数据类型 ​变量和常量 ​定义变量的方法 ​变量的分类 ​变量的作用域和生命周期 ...

  9. 【综合类型第 21 篇】声明:更改 CSDN 博客昵称

    这是[综合类型第 21 篇],如果觉得有用的话,欢迎关注专栏. 更改前昵称:程序人生道可道 更改后昵称:Allen Su 自己的第一篇博客是 2018年10月12日 12:07 写的,写博客将近一年, ...

最新文章

  1. 用Qt 4.4编写drcom的GUI (转)
  2. C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法
  3. 小技巧之chm文件无法显示
  4. ubuntu c++ 实现自动回车键功能_特斯拉已实现完全自动驾驶功能?是噱头还是技术的突破?...
  5. python笔试题(1)
  6. .net core 整洁架构入门
  7. 明天上线!部分开发者手机已安装鸿蒙OS:超流畅,可装安卓应用
  8. 机器人水库涵洞检测_【展商秀】广州市江达潜水疏浚工程有限公司将携水下清淤机器人重磅亮相2020城市管网展览会...
  9. Looper对文件描述符的监控与处理
  10. Python Day56-57 js
  11. paip.提升用户体验与安全性----登录与权限流程总结
  12. python dict排序
  13. ADB连接手机和简单命令
  14. esp32单片机入门学习
  15. Android多国语言缩写(全)
  16. Excel 公式CORREL算出相关系数
  17. Toolbox修改镜像加速器地址(针对于windows非专业版)
  18. am调制解调仿真matlab,MATLABAM调制解调系统仿真报告.doc
  19. [CISCN]2020
  20. [转载]hostapd配置解析

热门文章

  1. nginx和openresty配置静态资源时,样式错乱
  2. 阿里云字体图标的引用
  3. java 风的角度转风向
  4. 一个模仿微信群聊的H5页面
  5. javascript动态构建函数
  6. python怎么取共轭_python矩阵运算,转置,逆运算,共轭矩阵实例
  7. 计算机是如何执行程序的(转)
  8. Thomson.Reuters.EndNote.X6.v16.0.0.6348.Cracked-EAT
  9. linux下运行omnet,Linux中安装OMNeT++过程
  10. 201571030130/201571030124《小学四则运算练习软件需求说明》结对项目报告