编译原理第3章:词法分析
1 词法分析程序的设计1.1 词法分析流程逐个读入源程序字符并按照构词规则切分成一系列单词(token)。
单词是语言中具有独立意义的最小单位,包括保留关键字、标识符、常量、运算符、标点符号、分界符等。
词法分析是编译过程中的一个阶段,在语法分析前进行,也可和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。
词法分析程序的主要任务及输出:
读源程序,产生用二元组表示的单词符号
滤掉空格,跳过注释、换行符
记录源程序的行号,以便出错处理程序准确定位源程序的错误
宏展开等…
2 正则表达式
正则表达式(Regular Expression,RE)是一种用来描述正则语言的更紧凑的表示方法。
例如:$r = a (a \mid b)^* (\varepsilon \mid(. \mid \_ )(a \mid b)(a \mid b)^*)$
正则表达式可以由较小的正则表达式按照特定规则递归地构建。每个正则表达式 $r$ 定义(表示)一个语言,记为$L(r)$。
这个语言也是根据 $r$ 的子表达式所表示的语言递归定义的。
2.1 ...
线性代数第4章:向量组的线性相关性
1 向量组及其线性组合1.1 向量
【定义1】n个有次序的数$a_{1}, a_{2}, \cdots, a_{n}$所组成的数组称为n维向量,这n个数称为该向量的n个分量,第i个数$a_i$称为第i个分量。
1.1.1 向量的表示法
n维向量写成一行,称为行向量,也称为行矩阵,常用$a^{T}, {b}^{T}, \alpha^{T}, \beta^{T}$等表示,如$a^{T}=\left(a_{1}, a_{2}, \cdots, a_{n}\right)$。
n维向量写成一列,称为列向量,也称为列矩阵,常用$a, {b}, \alpha, \beta$等表示。
说明:
行向量和列向量总看成两个不同的向量。
行向量和列向量都按矩阵的运算法则进行运算。
在没有明确说明时,向量均理解为列向量。
1.2 向量组与矩阵的关系由若干个同维数的列向量(或同维数的行向量)组成的集合,称为一个向量组。
反之,由有限个向量组成的向量组可以构成一个矩阵。
1.3 线性组合及线性表示
【定义2】给定向量组$A: a_{1}, a_{2}, \cdots, a_{m}$,对于任 ...
线性代数第3章:矩阵的初等变换与线性方程组
1 矩阵的初等变换1.1 矩阵的初等变换将解方程组的过程总结如下:
解方程组的方法称为消元法;
解方程组时,始终将方程看成一个整体变形,并且用到了如下三种变换
交换方程次序
以不为0的数乘某个方程
一个方程加上另一个方程的k倍
上述3种变换都是可逆的,由此变换前与变换后的方程组同解。
在上述变换过程中,只对方程组的系数和常数项进行运算,未知量并未参加运算,因此若记方程组的增广矩阵为:
则上述方程组的变换可转化为对矩阵B的变换。
1.1.1 定义1下列三种变换称为矩阵的初等行变换:
对换2行
以数$k \neq 0$乘某一行中的所有元素
某一行所有元素的k倍加到另一行对应元素上去
将定义中的“行”换成“列”,即得到矩阵的初等列变换的定义(所用记号是将“r”换成“c”)。
矩阵的初等行变换与初等列变换,统称为矩阵的初等变换。初等变换的逆变换也是初等变换,且与原变换的类型相同。
如果矩阵A经过有限次初等变换变成矩阵B,则称矩阵A与矩阵B等价,记作$A \sim B$。
矩阵之间的等价关系具有下列性质:
反身性:$A \sim A$
对称性:若$A \sim B$,则$B \s ...
6.23天津大学夏令营初筛机试
题目设置:一共5道题,只有10%~30%的样例。
考试时间:9:30~11:30,共2h。
1 题目A:整数化1.1 题目描述小Z在处理二维坐标点上的数据,受到性能限制,他希望把所有的点对应到距离它最近的整数点(横纵坐标均为整数)上, 请你帮他完成这个程序。
如果一个点有多个距离它最近的点,取横纵坐标更小的那个点。如(1, 1.5)将对应到(1, 1),(-1, -1.5)将对应到(-1, -2)。
1.2 输入多组样例输入,第一-行输入一个整数T表示样例数。
对于每个样例,包含两个数表示需要整型化的点。
1.3 输出对于每组样例,输出一行包含两个整数的坐标,用空格分割。
1.4 样例输入
31 1.52 3.2-1 -2
1.5 样例输出
1 12 3-1 -2
1.6 解题思路一开始直接使用了取整int(),但是当输入为负数的时候,例如-1.6取整为-1,但是题意要求是-2,所以应该判断一下小数部分和0.5的关系,分类讨论。
最终这个对于部分数据AC了,但是不知道剩下的数据怎么样。
12345678910111213141516171819202122232425262 ...
计网课设:基于TCP协议的简历聊天室程序设计
1 题目要求设计题目:基于TCP协议的简易聊天室程序设计
设计要求:使用Java编程语言,设计并实现一个基于TCP协议的简易聊天室程序。
程序包括服务器端和多个客户端,客户端能够连接到服务器并实现实时的聊天功能。
实现基本的用户登录、消息发送和接收功能。
2 整体架构设计在线聊天室程序通常采用客户端-服务器(C/S)架构设计如图3.1所示,其中服务器端负责管理用户连接、消息传递和群聊管理等核心功能,而客户端则提供用户界面,允许用户登录、发送消息和接收其他用户消息。
图3.1 TCP聊天室系统架构图
当设计一个聊天室程序时,除了客户端-服务器(C/S)架构外,通常还涉及到服务器与数据库的交互部分。服务器需要与数据库交互来存储用户的用户名和账号信息。
2.1 服务器端设计在日常生活中,服务器通常要同时接收来自客户端的多个请求,需要同时为这些客户端提供它们想要的服务,因此服务器端通常采用多线程或异步IO等技术,以支持多个客户端同时连接和消息处理。
在此次课程设计任务中,服务器实现的核心功能列举如下:
接受和管理连接:服务器通过绑定到特定端口的ServerSock ...
信息安全实验3:密码爆破
1 实验环境
操作系统版本:Windows 11 家庭中文版23H2
VMware® Workstation 16 Pro:16.2.3 build-19376536
Metasploitable2虚拟机版本:2.6.24-16-server
Kali虚拟机版本:6.6.9-amd64
2 实验内容Metasploitable2是一个特意设计用来进行渗透测试和漏洞分析的虚拟机。它基于Ubuntu Linux操作系统,包含了大量的已知漏洞,以便安全专业人员和研究人员可以使用渗透测试工具,如Metasploit等,来测试和验证其安全性。
Kali Linux是一种基于Debian Linux的渗透测试和网络安全分析的专用发行版。它旨在为安全专业人员、渗透测试人员和网络管理员提供一个功能强大的平台,用于评估系统和网络的安全性,并测试安全防御的有效性。Kali Linux包含了大量的渗透测试工具和网络安全工具,包括Metasploit框架、Nmap、Wireshark、Aircrack-ng等。这些工具涵盖了从信息收集、漏洞分析到渗透测试和数据包嗅探等多个方面,使用户能够全面地评估和测试目 ...
线性代数第2章:矩阵及其运算
1 线性方程组和矩阵1.1 线性方程组n个未知数m个方程的线性方程组如下:
上述线性方程组的解取决于系数a和常数项b。
当常数项b=0时,方程组
称为n元齐次线性方程组,当b≠0时,称为n元非齐次线性方程组。
线性方程组的系数和常数项按原位置可以排成数表如下:
对线性方程组的研究,可以转化为对此表的研究。
1.2 矩阵的定义由$m \times n$个数$a_{ij}(i=1,2,…,m;j=1,2,…,n)$排成的m行n列的数表
称为m行n列的矩阵,简称$m \times n$矩阵,记作
这$m \times n$个数称为矩阵A的元素,简称为元,数$a_{ij}$位于矩阵A的第i行第j列,$m \times n$矩阵A也可记作$A_{m \times n}$。
元素为实数的矩阵称为实矩阵;元素有虚数的矩阵称为复矩阵。
1.2.1 几种特殊的矩阵(1)行数和列数都等于n的矩阵称为n阶矩阵或n阶方阵,n阶矩阵A也记作$A_n$。
(2)只有一行的矩阵$A=\left(\begin{array}{llll}a_{1} & a_{2} ...
概率论第8章:假设检验
1 假设检验1.1 基本原理背景:在总体的分布函数完全未知或只知其形式、但不知其参数的情况下, 为了推断总体的某些性质,提出某些关于总体的假设。
例如, 提出总体服从泊松分布的假设;又如,对正态总体提出数学期望等于$\mu$的假设等.
假设检验就是根据得到的样本对所提出的假设作出判断: 是接受, 还是拒绝.
例1:某车间用一台包装机包装葡萄糖, 包得的袋装糖重是一个随机变量, 它服从正态分布.当机器正常时, 其均值为0.5千克, 标准差为0.015千克.某日开工后为检验包装机是否正常, 随机地抽取它所包装的糖9袋, 称得净重为(千克):0.497 0.506 0.518 0.524 0.498 0.511 0.520 0.515 0.512, 问机器这一天是否正常?
分析:用$\mu$和$\sigma$分别表示这一天袋装糖总体X的均值和标准差,由长期实践可知,标准差较稳定,设$\sigma=0.015$,则$X \sim N\left(\mu, 0.015^{2}\right)$,其中$\mu$未知。
目标:根据样本值判断$\mu ...
概率论第7章:参数估计
1 参数估计设有一个统计总体, 总体的分布函数为$F(x, \theta)$,其中$\theta$为未知参数。$X_{1}, X_{2}, \cdots, X_{n}$是从总体X得到的样本,要根据该样本对参数$\theta$做出估计,或估计$\theta$的某个已知函数$g(\theta)$,这类问题成为参数估计。
已知总体的分布,来估计总体的参数。本章主要讲解参数估计中的点估计和区间估计。
2 点估计2.1 点估计的概念设总体X的分布函数$F(x ; \theta)$的形式已知,$\theta$是待估参数,$X_{1}, X_{2}, \cdots, X_{n}$是X的一个样本,$x_{1}, x_{2}, \cdots, x_{n}$是相应的样本值,用样本值估计参数值。
定义:构造一个适当的估计量$\hat{\theta}\left(X_{1}, X_{2}, \cdots, X_{n}\right)$,用它的观察值$\hat{\theta}\left(x_{1}, x_{2}, \cdots, x_{n}\right)$来估计未知参数$\theta$,称$\hat{\thet ...
信息安全实验2:数据包抓取与分析
1 实验环境
操作系统版本:Windows 11 家庭中文版23H2
Wireshark版本:4.2.5
Cmd版本:10.0.22631.3296
2 实验内容2.1 Ping数据包抓取以及ICMP协议分析Ping命令是一种网络工具,用于测试主机之间的连接性。通过发送ICMP回显请求消息到目标主机,并等待目标主机的回复,可以确定目标主机是否可达以及往返延迟(Round-Trip Time,RTT)是多少。Ping命令通常用于诊断网络连接问题,也可用于测量网络的稳定性和性能。
使用Wireshark工具抓取ping数据包,首先在Cmd状态下使用ping命令连接百度网址。
图2.1 Ping命令结果
由图2.1可知,向www.baidu.com发送了4个数据包,总共收到了4个,没有丢失。之后在Wireshark中查看抓取的数据包。
图2.2 Ping命令抓包结果
由图2.2所示,通过过滤器查看ICMP协议的数据包,可以从数据包的Info字段看到有来自发送方的请求和来自接收方的回复。
ICMP(Internet Control Message Protocol)是TCP ...