HUST-CS-编译原理整理
引论什么是编译程序高级语言(源程序)-> compiler -> 目标程序(汇编语言)
java -> translator -> Intermediate Representation -> jvm
编译系统的作用:
翻译:支持高层的抽象,支持底层的硬件体系结构
优化:更快的执行速度,更少的空间
分析:程序理解
编译过程和编译程序结构c/c++源程序.c/.cpp -> preprocessor -> .i -> compiler(cc) -> .s -> assembler -> .o -> linker(ld) (+库代码.a) -> 机器代码
编译阶段的组合
前端
词法分析
语法分析
语义分析
中端
中间代码生成
代码优化
后端
代码优化
目标代码生成
词法分析
从左至右扫描字符流的源程序,分解构成源程序的字符串,识别出一个个单词token(种别码,值)
词法分析的结果是二元组:(token种别码,token值)
词法分析的过程,其实就是对一个字符串进行模式匹 ...
HUST-CS-系统结构整理
体系结构的基础知识体系结构基本概念计算机系统中的层次概念
计算机系统 = 软件 + 硬件/固件
计算机语言由低级向高级发展:高一级语言的语句相对于低级语言功能更强,更便于应用,但又都以低级语言为基础
从计算机语言的角度,把计算机系统按系统功能划分成多层次结构
层次
对应
划分
6
应用语言虚拟机
软件
5
高级语言虚拟机
软件
4
汇编语言虚拟机
软件
3
操作系统虚拟机
软件
2
机器语言(传统机器级)
硬件或固件
1
微程序机器级
硬件或固件
计算机体系结构定义
计算机体系结构定义:程序员所看到的计算机属性,即概念性结构与功能特性
按照计算机系统的多级层次结构,不同级程序员所看到的计算机具有不同属性
透明性:在计算机技术中,对这种本来是存在的事物或属性,但从某种角度看又好像不存在
Amdahl提出的体系结构:传统机器级体系结构————即一般所说的机器语言,程序员所看到的传统机器级所具有的属性
对通用寄存器型机器,属性主要指
数据表示(硬件能直接辨认和处理的数据类型)
寻址规则(最小寻址单元、寻址方式及其表示)
寄存器定义(各 ...
acme-nginx-configure
在vps上通过acme.sh自动申请证书,并用nginx作反向代理本篇博客记录一下个人在自己的vps服务器上通过acme.sh获取证书,并配置nginx反向代理的过程。
准备安装acme.sh安装acme.sh非常简单,只要照着github上面的说明走就可以了。
curl https://get.acme.sh | sh -s [email protected]
一般来说,都是把acme.sh直接安装到当前用户的用户根目录下。
安装nginx在Ubuntu上安装nginx直接通过apt就可以安装
sudo apt install nginx
域名需要购买一个自己的域名,只要有了根域名后就可以在cloudflare上创建多个子域名,干各种事情了。
为自己的域名申请证书假设在cloudflare上,为自己的域名解析添加了一个子域名test.example.com到自己的服务器xx.xx.xx.xx,类型为A,开启cloudflare代理。
创建一个随便的nginx配置文件首先在/etc/nginx/sites-available中随便创建一个nginx的配置文件(真的随便创建一个就好 ...
HUST-CS-操作系统
绪论多道程程序设计技术
定义: 在计算机主存中同时存放几道相互独立的程序,这些程序在管理程序控制之下,相互穿插的运行。当某道程序因为某种原因不能继续运行下去时候(如等待外设),管理程序便将另一道程序投入运行
特征
多道(内存中村南方多个相互独立的程序)
宏观上并行(相互穿插运行)
微观上穿行(CPU上永远只能执行单个程序)
硬件基础: 内存大、中断
分时技术
定义: 吧处理机时间划分称很短的时间片,轮流分配给各个应用程序使用,如果某个程序在分配的时间片用完之前计算还未完成,该程序就暂停执行,等待下一次获得时间片后再继续计算
特点
联机交互
独占使用
响应时间块
操作系统
定义: 一个大型的软件系统,负责计算机系统软硬件资源分配,控制和协调并发活动,提供给用户和其它软件方便的接口环境,使用户获得良好的工作环境
特点
并发
共享
虚拟
不确定
操作系统的物质基础、结构和用户接口物质基础CPU特权级
CPU特权级的意义:保护操作系统
分类
管理态(supervisor mode, 内核态): 操作系统的管理程序执行时机器所处的状态,又称处理机的特权态。在此状态下处理机可以使 ...
HUST-CS-计算机网络
计算机网络和因特网什么是因特网
因特网是世界范围的计算机网络
因特网向是应用程序提供服务的基础设置,提供统一的套接字编程接口
什么是协议协议是指计算机之间通讯的语言,定义了网络实体之间鹰遵守的原则
网络边缘网络划分
网络核心:
路由器/交换机
网络的网络
网络边缘:
主机:客户机/服务器
位于数据中心的服务器
网络边缘的组成主机(端系统):客户机 + 服务器
网络边缘的作用
让用户在端系统上运行各自的应用程序
用户享受到因特网的各种服务
网络接入接入网将网络边缘的端系统(主机)与网络连接起来的链路。
连接到哪里:将端系统连接到边缘路由器上
边缘路由器:端系统到任何其它远程端系统的路径上的第一台路由器
端系统接入网络的方式
点对点方式接入
通过电话线
Modem拨号:通过本地电话线路点对点连接ISP拨号池(通常是路由器),理论最高56kbps,无法实现上网同时拨打电话
ADSL:不对称数字用户线。用调制解调器将数据调制成高音频信号。
通过光纤到户
光纤通过光调制解调器(光猫)将光电信号互相转换。电脑通过双绞线连接到光猫。
通过卫星
以太网 ...
airhust视觉追踪入门
简介任务简介yolo简介提前准备
conda环境
python基础语法
tmux的基本用法
云端环境部署darknet-yolo, pjreddie版本克隆和编译darknet仓库git clone https://github.com/pjreddie/darknetcd darknet
知识点补充: git是一个版本管理器。一些常用的git命令是必须要能够掌握的。
进入到darknet文件夹以后,可以看到文件夹的结构如下
/darknet cfg/ 模型参数配置文件 data/ 训练相关参数 examples/ include/ python/ scripts/ src/ LICENSE* Makefile 工程项目构建文件 README.md 最重要,必须认真阅读!
README.md一般来说,在上手一个github项目的时候,必须先阅读的是这个项目中的README.md文件,该文件会告诉你本项目中的一些基础、必要的说明,甚至还有一些情况下会直接告诉你如何快速开始、如何跑起本项目的一个测试用例等。
Makefi ...
tmux的使用
tmux的作用
终端复用(能够把一个终端当作好几个终端来用,影视剧中很常见的“黑客场景” hollywood 就是基于tmux的)
可以让新窗口接入已经存在的会话
允许每个会话又多个连接窗口,因此可以多人实时共享会话
窗口垂直和水平分隔
一个窗口同时访问多个会话
使用会话管理新建会话tmux new-session -t ${session-name}
展示会话tmux ls
展示所有tmux的会话,和相应的状态
分离会话快捷键^b d,或者使用下面的命令
tmux detach
接入会话tmux a -t ${session-name}tmux a -t ${session-id}
其中,session-name或者session-id都可以通过tmux ls命令查看到
tmux同时还支持模糊识别,比如说如果你只有一个名字为”mysession”的会话,可以直接通过tmux a -t a接入到会话中。
杀死会话tmux kill-session # 按照id顺序杀死会话tmux kill-session -t $ ...
nmcli相关命令
nmcli相关命令sectionnmcli总共有八大部分的参数
section
描述
help
获取帮助
general
获得网络管理器相关的状态和全局参数的值
networking
开启、重启、停止网络管理器
radio
管理无线设备和相关协议
connection
管理连接
device
管理网络设备
agent
配置和管理安全设置
monitor
监控网络的相关变化情况
devdev管理的是机器的硬件设备
检查设备联网情况nmcli dev status
以上命令会打印出当前机器上所有可能用来联网的设备以及它是否有网络连接。
cassius@ubuntu:~$ nmcli dev statusDEVICE TYPE STATE CONNECTIONeth0 ethernet connected Wired connection 1wlan0 wifi connected AirHustAdocker0 bridge ...
HUST_CS_数据库整理
第一章 绪论数据库系统概述
数据
数据是信息的符号表示或载体,信息则是数据的内涵,是对数据的语义解释
数据库
数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合
数据是数据库中存储的基本对象
数据库的基本特征:
数据按一定的数据模型组织、描述和存储
可为各种用户共享
冗余度小
数据独立性高
容易扩展
数据库管理系统
DBMS是对数据库进行管理的大型系统软件,是数据库系统的核心组成部分
位于用户与操作系统之间的一层数据管理软件
是基础软件,是一个大型复杂的软件系统
用途:科学的组织和存储数据、高效的获取和维护数据
用户在数据库系统中的一切操作,包括数据定义、查询、更新一集各种控制,都是通过DBMS进行的
主要功能:
数据定义
数据组织、存储和管理
数据操纵功能
数据库的事务管理和运行管理
数据库的建立和维护功能(实用程序)
其它(如和其它系统的通信、交换)
数据库系统
构成
数据库
数据库管理系统(及开发工具)
应用系统
数据库管理员
目的:
给用户提供整体数据的抽象视图,将磁盘上的所有物理数据集合抽象成整体结构化的虚拟数据,隐藏了细节
文件系统 ...
HUST_CS_组成原理整理
第一章 计算机系统概述计算机系统的性能评价非时间指标
机器字长
机器一次性能够处理的二进制位数(一般于内部寄存器的位数相等)
总线宽度
数据总线一次能并行传送的最大信息位数
主存容量与存储带宽
容量:一台计算机主存包含的存储单元总数
带宽:单位时间内与贮存你交换的二进制信息量,Byte/s
时间指标
主频
CPU工作的时钟频率,与CPU运算能力之间不是唯一的、直接关系
时钟周期$T=\frac{1}{f}$
计算机中最基本的、最小的时间单位。一个时钟周期CPU仅完成一个最基本动作
外频
系统总线的工作频率,CPU与主板之间同步运行的速度
倍频
$主频=外频 \times 倍频$
CPI
执行一条指令(平均)需要的始终周期数$$CPI = 一段程序中所有指令的始终周期之和/指令条数 = 程序中各类指令的CPI \times 程序中各类指令的比例 $$
MIPS
$$ MIPS = \frac{指令条数}{执行时间 \times 10^6} = \frac{指令条数}{所有指 ...