(1) 操作系统
操作系统属于一种底层软件,将上层软件和硬件连接起来,像调配资源的大管家。
操作系统的诞生:
1974年,世界上第一台电子计算机ENIAC诞生,它不具备操作系统,除运算过程意外,输入输出都由人工操作。到1950s,出现了批处理系统。操作员将用户提交的作业分类,每一批作业都有对应的监督程序依次处理,这个监督程序就是操作系统的雏形。后来,从多道程序系统到分时系统再到实时操作系统,不断接近于现代操作系统的概念。
(2)Unix
1964年,美国电话电报公司(AT&T)、通用电器公司(GE)及麻省理工学院(MIT)合作,提出了一个超级分时操作系统的开发计划Multics OS。五年之后计划未实现,贝尔实验室退出,其中的成员肯•汤普森(Ken•Thompson)为了能继续玩他在Multics上开发的一个游戏,自己又开发了一个简单操作系统Unics,谐音Unix。由于Unix硬件通用性和可移植性差,汤普森的同事丹尼斯•里奇(Dennis Ritchie)在B语言的基础上开发了一套新的语言,即C语言。后二人发表论文,Unix正式问世。
在Unix开始收费和商业闭源之后,一位名叫理查德·马修·斯托曼(RichardMatthew Stallman)的大叔心生不满,在1984年发起了自由软件体系GNU,模仿Unix的界面和使用方式,重新开发一个开源的版本,起草了GPL(General PublicLicense,通用公共许可证),开创了开源软件的黄金时代。
GPL协议下的自由软件,允许用户自由拷贝、修改和销售。但是,对其源代码的任何修改,都必须向所有用户公开。后来GNU开发了一系列高质量的免费软件,其中就包括gcc系列编译程序,还有emacs编辑系统、bash shell程序、gdb调试程序等。
(3)Linux
1987年,荷兰的谭宁邦教授为了方便教学自行开发了与Unix兼容的操作系统MINIX,由于他只认为其只用于教育目的,且不允许别人添加代码,所以MINIX的发展被限制。在芬兰求学的年轻小伙子林纳斯不满足于MINIX的功能,利用GNU的bash当做开发环境,gcc当做编译工具,成功编写出了拥有10000行代码的Linux内核(Linux kernel)。
林纳斯的Linux内核基于POSIX(Portable Operating System Interface for Computing Systems,可移植操作系统接口)标准,能够与绝大多数Unix操作系统兼容。他在发布时,选择了遵循GPL协议和GNU宗旨,所以正式发布时,命名为“GNU/linux”。
(4) Unix和Linux的区别
Linux是开源自由软件,Unix是对源代码实行知识产权保护的传统商业软件。两者完全不同。并且Linux也不是类Unix系统,只是风格相像,且未通过官方认证。
(是一位学英语的朋友告诉我,他们老师提到了北外的人工智能实验室,包括他们未来的保研方向也有和人工智能交叉的,所以搜索了一下。)
通过自然语言处理以求实现语言智能,主要还是服务于老年群体和与脑科学相关的临床医学(脑科学研究的最高水平就是人类语言的认知研究)。简而言之还是以人工智能为工具,研究人类在语言认知上的生理机制,为人类语言临床治疗及康复提供新方案。
(1) 了解概念:前端/后端
前端是展现给用户的、可视的网页界面。如登录时输入账号密码、获取用户数据、点击登录按钮从而实现登陆的交互操作,这一系列都与前端有关。
后端是在后台操控、用户感知不到却非常重要的存在,支撑着前端的运行。逻辑处理、数据交互、数据验证、数据安全、数据存放等都依托于后端实现。
(2) 软件开发的完整过程:
需求分析-概要设计-详细设计-开发-测试-验收上线-维护
(3) 研发部分为 后端、前端、大数据、测试、算法、客户端、基础架构、多媒体、安全、计算机视觉、数据挖掘、运维、自然语言处理、机器学习、硬件。
对编程能力、数据结构和算法基础、系统设计能力有较高的要求。
(1) 编辑时异常(如printf打成print)
(2) 编译时异常(如链接库时找不到头文件)
(3) 运行时异常(代码本身没有问题)
(简单加法计算)
调试-窗口-反汇编
mov移动 add添加 push压栈 pop出栈 call调用 eax32位寄存器
断点:在选中行前单击
逐语句执行:F11 逐过程执行:F10
跳出过程:Shift+F11 停止调试:Shift+F5
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。IDE多被用于开发HTML应用软件。
* 编辑——写;编译——变成可执行程序;
Ctrl+F,查找;Ctrl+S,替换;
Ctrl+回车,在上面开启新的一行;
Ctrl+Shift+U,小写变大写;Ctrl+U,大写变小写;
摁住Alt+方向键,可上下移动。
------------------------------------------------------
编译器预算对象(变量)分配的内存空间大小
数据的类型不同,开辟的空间大小就不同。
(1)常量:在程序运行过程中,其值不能发生改变。(只读变量)
变量:在程序运行过程中,其值可以发生改变。
const 数据类型 常量名=值 (不安全)
#define 常量名 值
(2)标识符: 驼峰命名法:RoleLv/role_lv
不能使用系统关键字;允许使用字母数字下划线;
不允许数字开头;区分大小写;见名知意。
(1)无符号unsigned;有符号signed(可省略)
(2)进制:二进制0-1 八进制0-7 %o
十六进制0-9 10-15(a-f/A-F) %x/%X
定义八进制数据,以0开头。
定义十六进制数据,以0x开头。
在计算机定义数据时,不可以直接定义二进制。
scanf安全问题解决:
#define _CRT_SECURE_NO_WARNINGS(放在首行)
或pragma warning(disable:4996)
(1) sizeof :计算数据类型在内存中占的字节(BYTE)大小
返回值类型:size_t
1字=2字节( 1 word = 2 byte ) 1字节=8位( 1 byte = 8bit )
sizeof(数据类型) sizeof(变量名)
(2)short <= int <= long < long long
*当一个小的数据类型赋值给一个大的数据类型。不会出错,因为编译器会自动转化;但当一个大的数据类型赋值给一个小的数据类型,可能丢失高位。
(1)char的本质就是一个1字节大小的整型。
‘0’-48 ‘A’-65 ‘a’-97
(2)转义字符
打印“你瞅啥”——printf(“ \“你瞅啥\” ”)
打印%需要使用%%
%p:输出一个变量对应的内存地址编号(无符号十六进制整型数)
%e:用于指定浮点类型数据使用指数形式输出
(1)浮点型数据存储在内存中的格式为符号位 指数位 小数位
(2)科学计数法赋值:
3.2e2=3.2*10^2 3.2e-2=3.2*0.1^2
小写转大写