【1.0】Python入门
前言Python 很容易使用,但它是一种真正的编程语言,提供了很多数据结构,也支持大型程序,远超 shell 脚本或批处理文件的功能。Python 还提供比 C 语言更多的错误检查,而且作为一种 “超高级语言”,它有高级的内置数据类型,比如灵活的数组和字典。
Python 是一种解释型语言,在程序开发阶段可以为你节省大量时间,因为不需要编译和链接。
注:本内容使用的Python版本为 3.8
Python解释器调用解释器如果你在安装Python的时候选择了自动添加Python环境变量,则可以在CMD或者直接在桌面空白处右键选择在终端处打开(仅Win11支持),在命令终端中直接输入python即可调用Python解释器。
如果你并没有配置环境变量,需要先配置对应的环境变量。
关于环境变量的说明,可以查看环境变量那些事
在调用解释器后,每次输入命令的样式变为如下:
1>>> 这里是你的命令
在Windows系统下,使用Ctrl + z 来退出调用解释器或者输入命令quit()来退出调用。
解释器运行的时候有点像 Unix 命令行:在一个标准输入 tty1 ...
【5.0】输入输出(IO)管理
前言NULL,懒得写了
I/O管理概述I/O设备的概念和分类“I/O”就是“输入/输出”(Input/Output)。I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。
UNIX 系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。
按使用特性分类
按传输速率分类
按信息交换单位分类
I/O控制器I/O设备的机械部件主要用来执行具体 I/O操作。如我们看得见摸得着的鼠标/键盘的按钮;显示器的LED屏;移动硬盘的磁臂、磁盘盘面。I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制。
I/O控制器的组成
注意:
一个I/O控制器可能会对应多个设备;
数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应 ...
【4.0】文件管理
前言这部分说明了文件整个系统的原理和底层大概逻辑。
文件系统基础初识文件管理文件——就是一组有意义的信息/数据集合。
文件的属性文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。
标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。
类型:指明文件的类型
位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见)
大小:指明文件大小
创建时间、上次修改时间,文件所有者信息
保护信息:对文件进行保护的访问控制信息
文件数据的组织
无结构文件(如文本文件)——由一些二进制或字符流组成,又称“流式文件。
有结构文件(如数据库表)——由一组相似的记录组成,又称“记录式文件。
用户可以自己创建一层一层的目录,各层目录中存放相应的文件。系统中的各个文件就通过一层一层的目录合理有序的组织起来了。目录其实也是一种特殊的有结构文件(由记录组成)。
文件的外存存放类似于内存分为一个个“内存块”,外存会分为一个个“块/磁盘块/物理块”。每个磁盘块的大小是相等的,每块一般包含2的 ...
【3.0】内存管理
前言内存管理部分内容,解释说明了内存如何对进程进行管理调度,来使得软件可以正常的运行在操作系统之中。
内存管理的概念内存的基础知识内存可存放数据。程序执行前需要先放到内存中才能被CPU处理——缓和CPU与硬盘之间的速度矛盾。
从写程序到程序运行
编译:由编译程序将用户源代码编译成若干个目标模块(编译就是把高级语言翻译为机器语言)
链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块
装入(装载):由装入程序将装入模块装入内存运行
装入的三种方式
绝对装入:在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。
绝对装入只适用于单道程序环境
可重定位装入(静态重定位):编译、链接后的装入模块的地址都是从0开始的,指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址。可根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对地址进行“重定位”,将逻辑地址变换为物理地址(地址变换是在装入时一次完成的)。
静态重定位的特点是在一个作业装入内存时,必 ...
【2.0】进程和线程
前言NULL,基础部分,很长很多很麻烦
进程与线程进程的概念程序:是静态的,程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。进程(Process):是动态的,是程序的一次执行过程。
进程的组成系统使用 PCB(进程控制块)来描述进程的基本情况和运行状态,进而控制和管理进程。
相应的,程序段,数据段和 PCB 三个部分构成了进程实体。进程是动态的,进程实体是静态的。
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
PCB 是进程存在的唯一标志
进程的特征
动态性:进程是动态产生,变化和消亡的
并发性:内存中有多个进程实体,各进程可以并发执行
独立性:独立运行,获得资源,进行调度的基本单位
异步性
结构性
进程的状态与转换
进程正在被创建时,其状态为“ 创建态 ”,这个阶段会分配资源,初始化 PCB
当进程创建完成后,便进入“就绪态”,处于就绪态的进程已经具备运行条件,但由于没有空闲CPU,就暂时不能运行
如果一个进程此时在CPU上运行,那么这个进程处于“运行态”。
在进程运行的过程中,可能会请求等待某个事件的发生。在这个事件发生之前,进 ...
【1.0】操作系统概述
前言操作系统的基本概述,内容来源自《王道操作系统》并略有补充,此为本人笔记,仅供参考
操作系统的基本概念操作系统概念操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。
内容来源:百度百科
操作系统特点
并发:指两个或者多个程序在同一个时间间隔内发生。
注意:区分并行,并行指同一时刻发生。这就意味着,对于单核的CPU同一时刻只能执行一个程序,各个程序只能并发的执行,而对于多核CPU可以同时执行多个程序,多个程序可以并行的执行。
共享,指系统中的资源可以供内存中多个并发执行的进程共同使用。共享可以分为两种类型:互斥共享方式和同时访问方式。
如果失去并发性,也就没必要实现共享性,反之同理,两者互为存在条件。
虚拟,指把一个物理上的实体变为若干个逻辑上的对应物。虚拟技术也可以分为两种类型:空分复用技术和时分复用技术。
异步,由于并发运行的程序会争抢着使用系统资源,而系 ...
随记开发日志
前言尝试开发第一个项目,详情可以查看关于我的短期想法,此文档是我的开发进度日志,希望我可以坚持到顺利开发更新。
一些想法想法第一版采用侧边栏任务栏,将功能模块尽量缩小,让更多的内容专注于写作的右侧主模块。
右侧主模块默认主页是类似于气泡框的呈现形式,类似于小组件后续方便组件开发和排版。
配色采用经典白色,蓝色纯属是为了迎合背景图片,其他重要的功能压缩在设置中。
想法第二版在尝试改进 UI 美化,参考了网上很多 UI 设计,做出来第二版的 UI 布局,相比于第一版的确美化程度上来说有质的飞跃,看起来更加的现代化,但是我个人感觉,这样的设计在增加美化的同时反而削弱了对写作记录本身的专注,使得使用者更加倾向于外观上的使用而不是写作内核的使用。
同样的右侧采用气泡框来展示每个内容,每个气泡框是一个小组件,用户可以自定义小组件的显示排序等,同样也可以根据我留下来的接口来开发其他小组件来完成首页的美化。
想法第三版思考了几天,这个软件的定位应该是“电子手账本”,软件设计的要灵活模块化,可以加载不同的 UI界面,不同的页面,以及插件。软件主体功能还是日记,日记事,计划,手账本以及记录一些自己 ...
【2.0】XAML
前言本来没打算写的,但是考虑到我的开源项目,我决定写一下当作复习了。
XAML(EXtensible Application Markup Language)是微软推出的对标 HTML 的标记语言,其本质就是XML的变体,微软在设计 WPF 的时候就学习了 HTML 的前后端分离的模式,这样就类比过来,WPF 技术,使用 XAML 作为前端,C#作为后端,分离了前后端,方便了团队合作和项目开发不必过于耦合。
理解XAMLXAML编译
WPF 创建者知道,XAML 不仅要能仅仅设计协作的问题,它还需要快速运行。尽管 XML 格式可以很灵活的迁移到其他工具和平台,但是它们并不是最有效的选择。XML 的设计目标是逻辑性,易读性而且简单,且没有被压缩。
WPF 使用 BAML(Binary Application Markup Language,是一种二进制应用程序标记语言)来克服这个缺点。BAML 并不是新事物,它实际上就是 XAML 的二进制表示形式。在 Visual Studio 中编译 WPF 应用程序时,所有的 XAML 文件都被转换为 BAML,这些 BAML 然后作为资源嵌入到最 ...
【基础 02】构建函数可视化图形
前言
前排说明:关于本教程目录导航以及说明:猫式教程
在本篇文章中你将会学到:
创建一个预制体(prefab)
实例化(Instantiate)多个立方体
图形化一个数学函数
创建surface shader and shader graph
将图形赋予动画
这是有关学习和使用 Unity 基础知识系列教程的第二篇。这次我们将会使用基本的游戏对象(物体)来构建函数图形,我们可以通过图形来展示(图形化)数学函数。同时我们将会使用函数和时间进行关联创建对应的动画。
本篇教程使用Unity 2020.3.38f1c1 编写。
创建一排”点”对数学的理解是编程所必不可少的。从表面上来说,数学是对表示数值的符号(即未知数)的操作。求解方程归结为一组符号(即方程)。数学规则(即函数定义)决定了这种结果。
例如,我们使用函数 $F(x) = X +1$ ,现在我们使用数值 $3$ 来替代 $X$ 的位置,你就可以得到输出为 $F(x) = 3 + 1 = 4$ 。我们可以说通过函数 $F(x) = X +1$ 将数值 $3$ 映射到 数 ...
猫式教程
前言这部分既是猫式教程的说明,也是猫式教程的索引开始文章页。
关于猫式教程猫式教程(Catlike Coding)系列原作者: Catlike Coding,作者名叫:Jasper Flick,是一位 software developer living in Amsterdam ,他创建并编写了 Unity 的 Catlike Coding 的博客教程。
关于作者Jasper Flick
我在前年的时候尝试翻译过他的博客,在翻译了 3 篇博文后由于一些事情遂放弃了,此次打算捡起来继续翻译,在翻译的时候也会对作者的过程进行复刻,一是提升我的 Unity 能力,二是为了能在翻译作者博文的时候校验可行性。
如果教程对你们有利的话,请对原作者进行打赏,最终知识版权归原作者所有。我本人仅做翻译和二次编写以及一些补充说明。因为很多小伙伴对于英语的编写查看以及复现起来很麻烦,所以我打算解决这个问题。
翻译过程中可能会出现错误或者其他问题,如果发现了请谅解,我会尽量保证不会出错
猫式教程更新我暂定于一周更新一篇博文的频率来尝试更新教程,我会在一些关键词和必要的部分进行英文和中午的双解释。
我会 ...