https://www.youtube.com/playlist?list=PLzAv_uHZw7dTI2e0F8-lxxOWV9zXMzwNE
计算机科学是对计算机和计算能力的研究。它关注计算机软件和硬件的理论和实践,以及应用程序的设计、开发和操作。
计算理论研究可以被计算机解决的问题。它处理可以用算法解决的问题以及无法用算法解决的问题。1944年,教皮特·赫尔发现了某些问题尽管可以被明确定义,但没有已知的有效算法来解决它们。这些问题属于不可解决性问题。
算法设计研究如何解决特定类型的问题。它考虑问题的输入,执行的步骤以及输出结果。成功设计一个算法需要明确问题的规范并产生一个高效并正确地解决问题的步骤序列。
软件工程研究如何设计、实施和维护软件系统。它处理软件开发过程,包括需求分析、设计、实现、测试、部署和维护。软件工程师致力于制定重复使用和可靠的方法,以促进软件产品质量和生产力。
计算机体系结构研究计算机硬件的设计和组织。它处理CPU、内存和外设及它们相互之间的通信。体系结构设计关注硬件成本、性能和可靠性的折中。不同体系结构导向不同类型的应用。
操作系统管理和控制计算机硬件资源以实现软件组件的协调工作。它提供抽象接口使软件组件可以访问硬件资源而无需了解底层细节。操作系统处理IO操作、内存管理、线程和进程的同步和通信。
网络研究将计算机与其他计算机连接在一起以实现资源共享和远程访问。网络协议如TCP/IP标准化了机器之间的通信。网络包括物理层、数据链路层、网络层、传输层和应用层等结构。研究网络和通信领域涉及嵌入式系统和移动计算。
人工智能研究如何使用计算机模拟人类智能,例如机器学习、专家系统和语言处理。AI领域对于开发智能体系统以解决复杂问题至关重要。计算机视觉、机器学习和深度学习使机器在视觉和语音识别方面取得重大进展。
计算机系统包括软件和硬件两个部分。
软件包括操作系统和应用软件。操作系统负责管理计算机的硬件资源,为应用软件提供统一的接口。常见的操作系统有Windows、Mac OS、Linux等。
应用软件则包括各种软件工具和应用程序,例如Office软件、浏览器、编程软件等。它运行在操作系统之上,直接为用户提供服务。
硬件主要包括:
中央处理器(CPU):计算机的大脑,负责执行指令。CPU的主要特点有生成速度和并行度。
内存:用于暂时存储程序和数据,可以快速随机访问。常见的有RAM和ROM。
硬盘:用于long期存储大量数据。与内存相比,硬盘读写速度较慢,但存储空间大。
显示器:用来显示图形和文字的输出设备。
键盘和鼠标:输入设备。
其他接口:如USB端口、网卡等,用于连接外设扩展功能。
计算机系统的工作原理是软件指令控制硬件执行各种操作,并通过互动完成用户任务。随着技术发展,计算机硬件越来越强大浑,软件也不断丰富,带来了人类生活的巨大变化。
操作系统负责管理计算机硬件资源并为应用程序提供统一接口。常见操作系统类型有:
桌面操作系统:如Windows、Mac OS、Linux,用于个人电脑。
移动操作系统:如Android、iOS,用于手机平板。
服务器操作系统:如Windows Server、Linux发行版,用于服务器。
嵌入式操作系统:如FreeRTOS,用于小型设备。
主要组成:
核心(Kernel):管理CPU、内存和设备驱动等硬件资源。
文件系统:管理硬盘空间和文件操作。
图形界面:管理窗口、鼠标等输入输出。
应用程序接口(API):统一对外服务接口。
设备驱动:控制各种硬件设备操作。
实用程序软件:辅助管理系统的工具。
进程管理:任务调度、处理并发等。
内存管理:动态内存分配回收。
文件管理:文件创建读写许可控制。
设备管理:硬件资源访问控制。
信息安全:用户账户/权限管理等。
系统服务:时间管理、打印机管理等。
操作系统作为计算机最基础层软件,是所有其他软件运行的基础。它管理硬件资源使用,协调各个应用程序的运行。
处理器(CPU)是计算机的中央处理单元,负责计算机系统内部的计算和控制工作。
主要特点:
CPU工作分为四个阶段:
指令寻址:从内存中取出待执行指令
指令解码:将指令代码翻译成硬件可以识别的操作信号
执行阶段:运算和逻辑单元依次执行指令指定的操作
写回阶段:将执行结果写回内存或CPU内部寄存器
一次完整的工作周期需要通过以上四个步骤完成。
频率:越高指令执行速度越快
指令集:支持不同类型指令能力越强
管脚数:可同时处理的任务数量
缓存数量和大小:影响内存访问效率
并行处理能力:多核或超线程技术
综合多个因素来评价CPU的整体性能水平。高性能CPU是现今计算机的基石。
计算机中的存储单元用于存放程序和数据。主要类别有:
注册器:数量少,直接连接到CPU,读写速度极快。
缓存存储器:数量更多但仍少,极高速存储一小部分主存储内容。
主存(RAM):数量很多,速度较快,但比缓存慢。用于运行中的程序和活动数据。
辅助存储(硬盘、SSD):数量极多,速度慢但容量大,用于长期存储程序和非活动数据。
内存技术决定其性能和容量:
SRAM:速度快但产能低。用于寄存器和缓存。
DRAM:速度比SRAM慢但产能高,成本低,普遍用于主内存。
闪存:写入速度快于DRAM,不需电保持数据,广泛用于U盘、SSD等。
内存层次结构使系统充分利用各级存储的优点,克服容量和速度的取舍矛盾。
操作系统通过内存管理来有效调配和使用各块存储器:
分页机制:将内存按页划分,实现共享和保护。
虚存管理:通过内存映射表实现最大限度利用内存。
文件缓存:高速缓存近期访问文件。
对象分配:动态内存分配回收实现内存弹性使用。
良好的内存管理可以充分发挥硬件资源的潜能。
计算机与外界通信依赖不同的输入输出接口:
串行端口:传统的串行传输,传输速度慢。
并行端口:传输 Parallel数据,传输速度快。
USB接口:通用串行总线,数据传输高速便携。
显卡接口:连接显示设备的接口。
网络接口:以太网端口或无线网卡等。
音频接口:连接音箱或麦克风。
存储介质接口:连接U盘、外置硬盘等。
图形用户界面(GUI)采用图标和窗口进行人机交互:
窗口:独立的应用程序区域。
菜单栏:包含不同功能菜单。
工具栏:快捷操作图标。
状态栏:显示当前信息。
对话框:信息输入和选择框。
图标:代表文件文件夹应用程序。
GUI极大提高了用户体验并广泛应用于个人设备和办公软件。
主要输入设备:
鼠标:选择控制图形界面。
键盘:输入文本和控制命令。
指针设备:触摸板或笔输入。
语音输入:语音识别文字输入。
图像采集:数码相机扫描仪等。
人机交互通过多种输入输出实现自然信息交换。
计算机网络是将几台或几十台以上计算机连接成一个整体的计算系统。网络通过交换机或路由器将节点间通信进行连接。
TCP/IP是Internet功能模型的基础,主要包含四层:
物理层:互联网络的硬件设备,如线缆和无线介质。
链路层:提供数据链路和重传控制功能。
网络层:负责信息 between主机之间的转发路由。
运输层:为应用层提供可靠的端到端数据传输服务。
应用层:具体应用软件及协议,如HTTP、FTP等。
根据规模和使用目的可分为:
局域网:一家公司或学校内部计算机网络。
metro区网络:城市或地区内部连接的网络。
广域网:跨地区或国家连接的网络。
广域网:覆盖超大范围地域的全球性网络。
计算机网络架构提供计算资源的协同工作和信息共享基础,极大提升工作效率。
根据TCP/IP模型,计算机网络包含以下几层:
物理层:网络交换和传输媒体。
数据链路层:实现物理地址和帧格式管理。
网络层:负责地址解析及数据包发送路由。主
数字信息以二进制流的形式在网络上发送。
常见的物理介质和标准:
广域网:同轴电缆、光纤网线标准。
局域网:结对电缆UTP、STP标准。
无线网络:IEEE 802.11标准系列。
通过交换机驱动逻辑链路子网,实现主机与主机之间可靠数据传输功能。
以太网:利用MAC地址实现链路地址。
PPP:便携式设备间点对点连接协议。
HDLC:用于广域网的标准链路层协议。
利用IP地址实现主机间的逻辑连接,完成分组的源目的地标记与转发功能。
IP地址:基于IPv4和IPv6地址标记主机。
弹性分组:可变长分组以节省带宽。
路由选择:动态路由表实现最短路径转发。
通过端口号实现进程间的可靠连接通信。
TCP:面向连接的可靠数据传输服务。
UDP:无连接的轻量级数据传输协议。
TCP/IP参考模型在互联网中得到广泛应用,成为计算机通信的基础载体。
互联网基础设施包括:
全球SetMax干线:高带宽光纤通信系统。
互联网交换中心:路由中心转发数据流量。
国际出口节点:连接国内网络到国外网络。
区域互联网数据中心:内容分发网络和云平台。
网络接入点:拨号上网ADSL或光纤接入。
万维网:基于HTTP协议提供网页和应用服务。
电子邮件:采用SMTP和POP3协议提供邮件交换。
文件传输:FTP用于文件下载和上传。
远程登录:Telnet和SSH用于远程访问主机。
多媒体播放:视频音频点播和流式媒体。
Web2.0带来新一代网络应用:
网络社交:Facebook、Twitter等社交软件。
视频分享:YouTube点播和视频通话软件。
云服务:Dropbox、WordPress等在线服务。
移动互联:App商店和智能终端应用程序。
网络技术促进了信息产业和生活方式的深刻变革。
DoS攻击:阻断服务使网站不可访问。
ダイアルアップアタック:非法访问资源或系统漏洞。
信息窃取:默ker探查系统漏洞获取登录密码等敏感信息。
木马程序:植入后门程序从远程控制受害系统。
网站破解:破坏网站数据库获取用户信息或管理员权限。
加强系统安全基础:更新补丁、限制非法访问等。
防火墙:过滤非法流量并阻断未授权访问。
入侵检测系统:监测异常活动并发出警报。
数据加密传输:https、vpn等加强信道安全。
应急预案:定期备份数据、及时修复漏洞等。
教育提高安全意识:谨防信息泄漏和钓鱼型攻击。
网络安全一直是技术和管理并重的一个课题。
软件开发是一套规范的过程,包括需求分析、设计、编码、测试和部署等阶段。
瀑布模型:顺序开发,适用于比较简单系统。
V模型:验证驱动型,每个阶段需要进行验证测试。
增量模型:分模块重复开发,+1增量改进。
螺旋模型:迭代开发综合各种技术风险分析。
Agile:弹性模型,注重及时反馈和更新制品。
统一建模语言UML:用于软件设计实现。
需求管理:需求采集分析跟踪变更。
设计方法:架构设计和详细设计说明。
代码开发:面向对象或过程式实现。
测试:单元测试集成测试验收测试等。
版本控制:实现版本管理和配置控制。
良好的软件开发流程有助于研发高质量可维护性的软件系统。
系统分析设计的主要内容:
流程划分:划分系统各个功能模块。
数据设计:确定各种数据元素之间的关系。
接口设计:确认系统与外部系统的交互点。
非功能需求:如可用性、可靠性、性能等。
安全设计:用户身份验证与权限控制。
主要阶段为:
概念设计:初步设想系统的基本功能框架。
逻辑架构设计:归纳出系统中各层或模块的职能。
物理架构设计:确定硬件软件环境与部署拓扑。
埋头细致的设计每个模块或组件的功能和接口:
流程设计:工作流程及控制流程图。
类设计:类层次结构图和类关系图。
数据库设计:表结构设计与关系。
界面设计:画出各页面格式框架与控件位置。
系统设计使需求实现得以明确规范化开发。
操作系统:微软windows、Linux等。
应用软件:办公软件、游戏绘图软件等。
系统软件:编译器、调试器等。
实用工具:压缩解压、杀毒软件等。
低级语言:汇编语言(近机器级)。
高级语言:C/C++(过程式)、Java、Python、C#等。
脚本语言:Shell、Python、JavaScript等。
表示语言:HTML(标记语言)等。
数据库语言:SQL语句。
编译系统:编译原程序为目标代码。
链接器:将对象文件连接成可执行程序。
IDE:集成环境提供编程调试支持。
版本控制:源代码版本管理工具。
测试工具:自动和手工测试支持。
选择合适的软件开发语言和环境有利于提高开发效率。
面向对象的三大特性:
封装性:定义类和对象,隐藏内部细节。
继承性:派生新类扩展已有类功能。
多态性:同一操作作用于不同的对象产生不同效果。
类:描述对象属性和行为的蓝图。
对象:具体实例化的对象实体,根据类定义产生。
属性:描述对象的数据成员。
方法:描述对象的功能行为。
常用UML图示类关系:
类图:展示类名,属性,方法,关系线等。
类层次图:继承关系树形结构。
对象图:运行时具体对象与关系。
规范的分析与设计有利于面向对象开发高内聚低耦合的软件系统。
面向对象设计突出封装、继承、多态机制。
定义通用算法和结构,实现代码重用。
定义泛型函数:
template <class T>
T max(T a, T b) {
return a > b ? a : b;
}
定义泛型类:
template <class T>
class Stack{
public:
void push(T item);
T pop();
private:
vector<T> items;
}
支持泛型算法操作各种容器:
for(vector<int>::iterator it = v.begin(); it != v.end(); ++it)
// do something
提供序列式容器(vector、list)、关联式容器(set、map)等。
模板机制提高代码复用性,降低开发维护成本。
静态内存分配:整个程序生命周期固定大小。
动态内存分配:运行期间分配扩展内存块。
new:在堆上动态申请内存,返回指针。
delete:回收new分配的堆内存。
shared_ptr:智能指针实现引用计数回收。
unique_ptr:独占使用智能指针,禁止拷贝。
weak_ptr:弱引用,支持观察对象是否存活。
空间换时间:动态内存管理开销提高可扩展性。
内存外泄:new失败或忘记delete可能导致内存泄露。
分配碎片:长期分配回收可能造成内存空闲区域破碎。
使用RAII和智能指针有效管理堆内存和资源。
数据库与 SQL 规范化存储管理大容量结构化数据。
第一范式(1NF):属性是不可分割的原子值。
第二范式(2NF):完全 función依赖,消除部分依赖。
第三范式(3NF):传递函数依赖,消除传递依赖。
B树索引:对排序字段进行建立,提高查询效率。
哈希索引:通过哈希算法建立,快速访问唯一索引字段。
复合索引:对多个字段建立组合索引。
虚表:基于sql查询定义的结果集表。
简化查询:使用视图隐藏复杂查询细节。
提升安全:通过视图限定用户访问的范围。
InnoDB:支持事务,冗余索引,noDB默认。
MyISAM:不支持事务,对嵌入式设备性能好。
规范化与优化可提高数据库访问效率与数据完整性。
原子性(Atomicity):整个事务所有的操作都成功,或者失败回滚。
一致性(Consistency):事务前后数据保持一致。
隔离性(Isolation):多个事务并发执行同一数据时相互隔离。
持久性(Durability):事务成功提交后数据永久保存。
污迹数据:两个事务读写同一数据可能产生的不一致。
虚读:事务读取其他未提交事务修改的数据。
脏读:事务读取其他事务改写并后续回滚的数据。
高级别事务隔离效率低,选择适当级别平衡一致性和并发性。
TCP:面向连接,提供可靠数据传输服务。
UDP:无连接,不保证可靠到达但传输效率高。
IP:Internet独立的包交换协议,封装数据包。
ICMP:Internet控制报文协议,IP报文传输监控。
HTTP:超文本传输协议,WWW信息交互。
FTP:文件传输协议,传输文件。
SMTP:简单邮件传输协议,电子邮件传送。
网络通信模型和标准协议规范各层之间数据格式和接口。
规范RESTful接口便于理解和扩展。
JavaScript具有简洁灵活的语法,广泛应用于Web页面交互等场景。
-基本匹配:/pattern/ -标志修饰符:g(全局搜索)、i(忽略大小写)等 -常用方法:test()、exec()、replace()
JavaScript灵活强大的动态语言特性,广泛应用于Web开发。
通过DOM操作实现动态Web页面交互效果。
冒泡模型:事件开始于最具体元素,然后向上冒泡到document。
捕获模型:事件开始于最不具体元素document,然后向内捕获到最具体元素。
HTML事件属性绑定:onclick等
addEventListener()方法绑定:解耦代码,支持同一事件多个监听器。
event.target:引发事件的元素
event.currentTarget:绑定事件的元素
event.preventDefault():阻止默认行为
click:鼠标点击
mouseover/out:鼠标移入/移出
mousemove:鼠标移动
keydown:按下键盘
keyup:松开键盘
input:输入框值变化
通过事件处理实现与用户交互。