CS101
Turing machine:图灵机
理论上可以计算任何东西
CPU(Center Process Unit):中央处理器
是现代电脑的“大脑”,其中包含数十亿细小开关的硅片,即晶体管
Transistors:晶体管
每个开关代表一个“位”
Bit:位
是电脑能够识别的最小信息
Byte:字节
每 8 个位一组,称为一个字节
ASCII character encoding:美国信息交换标准代码字符编码
键盘输入的字符按照 ASCII 的规则转换成一串特定的二进制编码
Binary:二进制
一种特殊的计数方式,由 0 和 1 构成,遵循“逢二进位”的规则
Hexadecimal:十六进制
由 0~9 以及 a~f 表示一个组合,称为“半字节”
Nibble:半字节
Machine code:机器码
将编程语言转为及其能够识别的语言,即 0 和 1 构成的字符串,从而告诉机器“怎么做”,但并不保存“做的结果”
RAM(Random Access Memory):随机存储器
机器处理指令的空间
Memory address:内存地址
标记 RAM,CPU 通过内存地址来读写数据
I/O(Input/Output):输入输出
处理输入输出
Kernel:内核
应用程序通过内核控制电脑硬件
Shell:壳
包裹着内核,是与计算机核心交流的接口
CLI(Command Line Interface):命令行界面
在此通过 Shell 与内核进行交流
SSH(Secure Shell Protocol):安全壳协议
通过该协议即可与本地或者远程计算机进行交流
Mainframe:主机
bulk data processing computer:批数据处理计算机
Programming language:编程语言
帮助人类与机器进行沟通的语言,如 C/C++ 语言、Java 语言、Python 语言等
Abstraction principle:抽象原理
编程语言用抽象的原理,逐步方便人类与机器交流
Interpreter:解释器
逐行执行编辑好的代码
Compiler:编译器
编译器将所有代码全部编译后由 CPU 逐步执行
Executable:可执行文件
.exe文件Data types:数据类型
编程语言中描述数据的“工具”,如整型、浮点型、字符串型等
Variable:变量
数据的命名,在使用数据前,需要声明一个变量来表示该数据
Dynamically typed:动态类型
Python 是一种动态类型的语言,声明变量时无需指定数据类型
number = 100
Statically typed:静态类型
C 语言是一种静态类型的语言,声明变量时必须指定数据类型
int number = 100;
Pointer:指针
是一个特殊的变量,其值为另一个变量(可以是指针)的内存地址,可以通过指针对底层内存进行控制
Garbage collection:垃圾回收器
实现了垃圾回收的机制,程序中不再被引用的对象称为“垃圾”,需要从内存中清除实现内存的释放,即“垃圾回收”
int(Integer):整型
表示整数的数据类型,可以表示正数(无符号)、负数(有符号)
Signed:符号
辅助 int 区分值的正负性
Floating point:浮点
表示浮动的小数点
double:双精度浮点数
相比 float 浮点数数据类型具有更高的精度,可以提供更大范围的精度
char:字符
表示字符的数据类型
string:字符串
表示字符串的数据类型
Big endian:大 字节存储次序
先到先进
Little endian:小 字节存储次序
先到后进
Data structures:数据结构
数据的存储关系
Array:数组
含有一列数据的数据结构,从 0 开始索引
Linked list:链表
含有一列数据的数据结构,每个数据仅知道自己前后的数据(通过指针实现),并不清楚自己的次序
Stack:栈
链表的一种,遵循“后进先出”的原则
Queue:队列
链表的一种,遵循“先进先出”的原则
Hash:哈希
又称为 map、dictionary,类似数组,但使用独一无二的标签或关键字进行索引(key:键)
Tree:树
像树形的数据结构,按层级将各个数据节点组织起来,类比家族树
graph TB
太爷爷-->爷爷 & 叔公
爷爷-->伯父 & 爸爸 & 叔叔
爸爸-->我Graph:图
多个数据节点无序联系的数据结构,类比社交网络
graph LR
张三-->李四
-->王五
-->张三
-->赵六
-->李四node:节点
edge:边节点是图中的各个数据,边是任意两个节点之间的存在的联系
Algorithm:算法
用来解决问题的方法
Function:函数
可以完成接收输入、处理输入、返回输出的代码块
Return:返回
Arguments:参数
分为实参和形参,在原始主程序中的变量为实参,在函数中临时使用的变量为形参
Operators:操作符
如大于号、小于号、等于号等
Boolean:布尔数据类型
其值分为 true 和 false
Expression:表达式
对于代码产生值的代码可称为表达式
Statement:语句
未产生任何值而是完成操作的代码称为语句
Conditional logic:条件逻辑
if(condition) {
statement;
} else {
statement;
}
While loop:while 循环
while(condition) {
statement;
}
Iterable:迭代器
For loop:for 循环
for(condition 1; condition 2; condition 3) {
statement;
}
void:空函数
没有返回值
Recursion:递归
函数调用自己,如同镜中镜
Call stack:调用栈
Stack overflow:栈溢出
存入的内容超出栈的空间导致从栈中溢出
Base condition:基本条件
控制 for 循环的结束条件
Big-O notation:大 O 表示法
用于估算算法在大规模应用时的表现
Time complexity:时间复杂度
算法执行速度
Space complexity:空间复杂度
算法使用空间
Brute force:暴力法
一种算法,强行暴力尝试所有可能,直至找到答案
Divide & Conquer:分治法
一种算法,将问题分成若干部分,分别解决,最终解决大问题,如二分查找
Dynamic programming:动态规划
一种算法,将问题分成若干部分,每次处理的结果会存储起来,采用 memonization 技术
Memonization:记忆化
Greedy:贪心算法
一种算法,选择短期内最有益的选择,而不考虑整体问题的最优解
Dijkstra's shortest path:Dijkstra 最短路径
一种贪心算法
Backtracking:回溯算法
一种算法,采取逐步的方法,查看所有可能的选项
declarative:声明式编程
向计算机说明需求,而不过多指定具体步骤
举例,使用 Haskell 编写 Fibonacci 算法fib :: Integer -> Integer
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
Functional languages:函数式语言
Imperative:命令式编程
向计算机详细解释每一个步骤
举例,使用 C 编写 Fibonacci 算法int fib(int n) {
int a = 0, b = 1, c, i;
if(n == 0) {
return a;
}
for(i = 2; i <=n; i++) {
c = a + b;
a = b;
b = c;
}
return b;
}
Procedural languages:过程式语言
Multiparadigm languages:多范式语言
如 Python、JavaScript、Kotlin
Object-oriented:面向对象编程
使用类为代码中的数据或对象编程
Class:类
对象的属性、方法的模板
class Person {
int age = 20;
void getAge() {
cout << this.age;
}
}
Property:属性
int age = 20;
Method:方法
void getAge() {
cout << this.age;
}
Inheritance:继承
类通过继承来共享行为,子类可以在保留父类行为的基础上进行扩展和重写
class Father:
pass class Son(Father):
pass
Design patterns:设计模式
Instantiate:实例化
类在使用时需要实例成对象
class Person {} int main() {
Person Tom = new Person();
}
Heap:堆
一种独立的内存区域,用于长时间存储数据,以方便多次调用。堆的大小可以根据应用的使用情况进行自由扩展和收缩
Reference:引用
堆允许通过引用在不同的变量之间传递对象
const person = {
age: 20,
} const person1 = person
const person2 = person
Threads:线程
线程的作用是将实际的 CPU 核心分割成虚拟核心,使其能够同时运行多段代码
Parallelism:并行处理
可以编写能够在两个不同线程上同时执行的代码
Concurrency:协程
可以暂停或延迟代码的正常执行,以便在单个线程上同时处理多个任务
Bare metal:裸机
Virtual machine:虚拟机
模拟硬件的软件
IP address:IP 地址
每台机器都有一个独特的 IP 地址,以在网络进行标识
URL(Uniform Resource Locator):统一资源定位器
IP 地址会被映射成 URL
DNS(Domain Name System):域名系统
IP 地址映射成的 URL 会在域名系统中进行注册
TCP(Transmission Control Protocol):传输控制协议
两台计算机通过 TCP 握手建立连接
Packets:包
建立连接的计算机之间可以交换数据包来传递消息
SSL(Secure Sockets Layer):安全套接层
加密和解密网络上的消息
HTTP(HyperText Transmission Protocol):超文本传输协议
两台计算机可以通过 HTTP 安全地共享数据
API(Application Programming Interface):程序编程接口
一种标准化的数据请求方式,最常见的架构是 REST
Printers:打印机
-End-
CS101的更多相关文章
- Intro to Computer Science Class Online (CS101) - Udacity
Intro to Computer Science Class Online (CS101) - Udacity Building a Search Engine
- 转一下关于struct字对齐的原因
作者:張道遠链接:https://www.zhihu.com/question/27862634/answer/38506197来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- c++怎么将一个类,拆分出接口类,和实现类
还拿上一遍中定义的GradeBook类来实现: #include <iostream> using std::cout; using std::endl; #include <str ...
- c++l类
c++类和C#中定义类的方法异同之处: 1. 相同处: 1.1.都需要使用 class标识: 1.2.都包含有成员:函数,属性: 1.3.都有private public protect 标识的成员 ...
- 七行jquery代码实现图片渐变切换【兼容ie6+、 Chrome、 Firefox】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 无责任共享 Coursera、Udacity 等课程视频
本文转载自网络,原作者不详. (本文是用 markdown 写的,访问 https://www.zybuluo.com/illuz/note/71868 获得更佳体验) 程序语言 interactiv ...
- Nitrous.IO融资665万美元 帮助开发者省去配置调试等工作-CSDN.NET
Intro to Computer Science Class Online (CS101) - Udacity Building a Search Engine Nitrous.IO融资665万美元 ...
- Rabin-Karp【转载】
问题描述: Rabin-Karp的预处理时间是O(m),匹配时间O( ( n - m + 1 ) m )既然与朴素算法的匹配时间一样,而且还多了一些预处理时间,那为什么我们还要学习这个算法呢?虽然Ra ...
- 基于 MySQL 的数据库实践(准备工作)
背景 本学期在北京大学选修了<数据库概论>的实验班课程,由于 SQL 语法并不是特别理论的内容,因此课上暂时也没有特别展开.出于探索数据库领域的兴趣,使用国内普遍使用的数据库软件 MySQ ...
- 基于 MySQL 的数据库实践(自然连接)
在基本查询一节的示例中,我们有从 instructor 和 teaches 表组合信息,匹配条件是 instructor.ID 等于 teaches.ID 的查询,ID 属性是两个表中具有相同名称的所 ...
随机推荐
- nginx设置访问账号密码
第一:为kibana加上了用户登陆访问 第二:不暴露服务器上5601端口,只开放80端口即可.这对服务器的安全也是一个很大的保护. 接下来我们就开始配置nginx与kibana. 一.配置nginx ...
- C++入门编程----C++运算符(8)
什么是运算符 运算符是让程序执行特定的数学或逻辑操作的符号,用来表示针对数据的特定操作,也称之为操作符.C++运算符分别有算术运算符.关系运算符.逻辑运算符.赋值运算符.位运算符.移位运算符.size ...
- react 中 动态添加 class,防止图片 重复加载, 主要是 background-image的二次加载会有新请求,和图片的闪烁
react 中 动态添加 class,防止图片 重复加载, 主要是 background-image的二次加载会有新请求,和图片的闪烁 let imageTopBg if (imgSrcBg) { c ...
- TI工程师总结的判断ADS129x是否工作正常的方法步骤
当大多数 ADC 出现无响应时,可以通过一些基本的调试技术帮助验证器件是否仍然正常工作.以下是 ADS129x 器件出现无响应时需要采取的一些基本步骤: 为器件通电.然后探测器件电源引脚或最近的去耦电 ...
- Ambiq Micro-AMA3B2KK-KBR芯片可穿戴产品解决方案开发之RTC时钟
一 RTC RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片.绝大多数mcu芯片都集成了这个功能.在可穿戴产品中,时间往往是非常重要的因素,怎么让时间保持一直在运行,那就是 ...
- Grails的数据库相关开发
1.开发domain和service 在出来的输入框里输入domain的名字,可以包括包名. 这里我输入test.domain.House,点finish 创建了两个groovy文件,一个当然是tes ...
- C++11 中运行代码块耗时的方法以及坑(chrono 方法)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- RageFrame学习笔记:创建路由+导入layui
这是我写的学习RageFrame的第二篇,这一篇给大家分享下我是如何创建路由,导入外部js,css文件的,这里写下我的全部流程,希望对大家有所帮助. 话不多说,直接开始,在上一章中,我们已经把项目实例 ...
- Linux命令行常用命令(一)
ls 命令,展示文件夹内内容 -R :连同子目录内容一起列出来: -S :以档案容量大小排序! -t :依时间排序 cd 命令 cd /root/Docements # 切换到目录/root/Doce ...
- 《写给程序员的Python教程》阅读随笔---python禅学(Zen_of_python)
Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Comp ...