需求分析

1.按照软件工程的要求,复述用户的需求,得到用户的认可。

2.用户化需求和专业化需求。

3.需求规格说明书的主要内容
1)用例:系统中的角色。
2)事件流:系统中的角色如何协作完成具体的功能。
3)异常流:对各种意外情况的处理。
4)前置条件:事件流和异常流中每个具体环节的依赖条件。
5)后置条件:事件流和异常流中每个具体环节的输出结果。

名词解释

DMS:数据挖掘系统(Data Mining System)

用户:需要使用Unix实验室出租业务的客户,用户通过电信公司提供的帐号和密码登录指定的Unix机器,并使用Unix服务。

终端机器:用户通过一台本地终端机器来访问我们的Unix机器,并使用Unix服务,该本地终端就是我们所说的终端机器。在我们的程序中要记录这一终端的IP,做为向用户收费的依据之一。

登录日志文件:在Unix机器中自动记录用户登入/登出日志的文件,该文件为:/var/adm/wtmpx;在我们的程序中该文件也可以是程序外部指定的另一个文件。我们的程序需要提取该文件的数据来匹配出用户登入/登出的记录,并将其作为将来的收费依据。

用户登入记录:在登录日志文件中记录的用户登入Unix系统的日志记录,该日志记录包含用户的登录名,用户登入Unix的时刻,登录的终端机器IP等信息。

用户登出记录:在登录日志文件中记录的用户登出Unix系统的日志记录,该日志记录包含用户的登录名,用户登出Unix的时刻,登录的终端机器IP等信息。我们需要将用户的登入记录和登出记录匹配起来,得到一条条完整的登录信息,并计算出用户本次登录的时长。
用户的登录记录:将用户的登入记录和登出记录按照对应关系匹配起来,形成一条完整的登录记录,登录记录中包含以下信息:用户登录名,登入时刻,登出时刻,登录时长,登录终端机器IP等。

匹配的登入/登出记录:等同于用户的登录记录。

未匹配的登入记录:在登录日志文件中理论上一条登入记录跟一条登出记录匹配,但有可能在我们采集数据时用户还没有登出,所以日志文件中可能出现没有登出记录与之匹配的登入记录,这些登入记录我们将其保存在一个指定的文件中,在下次采集时再读取。

项目背景

在电信的业务中,有一种Unix实验室出租业务。只要用户向电信运营商申请一个Unix帐号,就可以远程登录Unix实验室,并使用Unix系统。
用户使用电信运营商提供的Unix实验室的服务需要缴纳一定的费用,电信运营商需要一套数据采集系统,把用户登录实验室的时间长度数据采集起来,便于在指定的时间范围内作为对用户的收费依据。
要求数据采集系统必须采集如下信息:登录用户名,登录的时间,登出的时间,登录总的在线时间,登录的实验室IP,用户的终端IP等信息。
DMS3.0项目需要开发这样一个通用的数据采集系统程序,来采集Unix机器记录的用户登入和登出的原始记录,并将这些记录解析匹配成用户的登录记录,然后发送给数据采集服务器,在服务器端将这些数据以日期为单位保存在数据库中,然后整合这些数据形成日报表,月报表和年报表。

业务原理

任何用户登录Unix系统,Unix系统都会记录用户的登录信息,所有用户登入/登出的信息都保存在Unix的系统日志文件中。数据采集系统就是通过读取Unix系统日志文件中用户登入/登出信息,并找出成对的登入/登出记录,得到用户登录实验室的登入时刻、登出时刻、登录时间长度等电信用户收费需要使用的数据,最后把匹配处理好的数据保存成电信工作人员可以阅读的文本文件,做为电信收费依据。
用户登录Unix系统的日志记录文件在Unix的/var/adm目录下,文件名是wtmpx,日志记录文件是一个二进制文件,在Unix中可以使用last指令查看,last命令格式为:
last [-a] [-n number | -number] [-f filename] [name | tty]
wtmpx文件中一条登录记录包含372字节,每条记录包含的数据项格式说明如下表1-1所示: (其中黄色背景标识的数据项就是要采集的数据项)

登录记录总数计算公式为:登录记录总数=日志文件大小/372。

匹配后的数据记录

功能概述

DMS3.0系统主要实现以下核心功能:数据读取,数据匹配,数据发送,数据接收,数据存储,数据整合。

1. 数据读取

该功能模块的主要任务是读取Unix机器的用户登录记录文件,将文件的信息解析为程序对象,以方便匹配模块的匹配。

2. 数据匹配

该模块的主要任务是将数据读取模块读取到的数据按照登入/登出的关系匹配成一条完整的登录记录。

3. 数据发送

该模块的主要任务是建立客户端网络连接,将匹配好的用户登录记录以字符串的形式发送到服务器。

4. 数据接收

该模块的主要任务是建立服务器端网络连接,从客户端读取匹配好的用户登录记录字符串。

5. 数据存储

该模块的主要任务是将数据接收模块接收到的数据保存到指定的数据库表中。

6. 数据整合

该模块的主要任务是将数据库中保存的用户登录记录明细表的数据整合成日报表,月报表和年报表。

系统用例

0.术语概念

1)用例:系统中的角色。
2)事件流:系统中的角色如何协作完成具体的功能。
3)异常流:对各种意外情况的处理。
4)前置条件:事件流和异常流中每个具体环节的依赖条件。
5)后置条件:事件流和异常流中每个具体环节的输出结果。

1.用例图


【DMS3.0系统用例图】

2.用例描述

数据采集

功能简述 :DMS管理员运行DMS程序,完成数据采集的功能

前置条件 : DMS程序已正确安装并部署

基本流 :

  1. DMS管理员启动DMS服务端程序
  2. DMS管理员启动DMS客户端程序
  3. DMS客户端程序读取上次未匹配的登入记录
  4. DMS客户端程序读取用户登录数据文件
  5. DMS客户端程序得到用户登入/登出记录列表
  6. DMS客户端程序将用户的登入和登出记录按照对应关系匹配成完整的登录记录
  7. DMS客户端程序将不能成功匹配的登入记录写到文件中保存
  8. DMS客户端程序将匹配好的登录记录发送到数据采集服务端
  9. DMS服务端程序接收采集的数据
  10. DMS服务端程序将数据写到服务端文件中保存下来

分支与异常

第1步,若启动服务端程序失败,则报告异常。
第2步,若启动客户端程序失败,则报告异常。
第3步,若上次未匹配的登入记录文件不存在,则跳过到第3步。
第4步,若读取用户登录数据文件失败,则报告异常。
第7步,若指定的写出目录不存在,则创建目录。
第7步,若创建目录或写文件失败,则报告异常。
第8步,若发送数据失败,则定时重传。
第10步,若写入文件失败,则报告异常。

数据读取
功能简述:
DMS程序读取系统数据文件和上次未匹配的登入记录,形成用户登录记录列表。

前置条件
DMS客户端程序启动

基本流
1. 根据系统配置信息确定上次未匹配的登入记录文件的位置。
2. 读取上次未匹配的登入记录,形成用户登录记录列表。
3. 根据系统配置信息确定用户登录数据文件的位置。
4. 读取数据文件,将文件内容解析成用户登录记录。
5. 将上一步中解析得到的用户登录记录添加到列表中。
6. 返回用户登录记录列表。

分支与异常
第2步,若上次未匹配的登入记录文件不存在,则跳过到第3步。
第4步,若用户登录数据文件不存在,则报告异常。

读取上次未匹配的登入记录
功能简述
DMS程序读取上次未匹配的登入记录,形成用户登录记录列表。

前置条件
DMS客户端程序启动

基本流
1. 根据系统配置信息确定上次未匹配的登入记录文件的位置。
2. 读取文件内容,将数据解析成用户登入记录。
3. 创建内存列表,保存读取到的登入记录数据。
4. 清空未匹配的登入记录文件。

分支与异常
第2步,若上次未匹配的登入记录文件不存在,则结束此用例。
第2步,若读取文件失败,则报告异常。
第4步,若清空文件失败,则报告异常。

读取用户登录数据文件

功能简述
DMS程序读取用户登录数据文件,形成用户登录记录列表。

前置条件
DMS客户端程序启动

基本流
1. 根据系统配置信息确定数据文件位置。
2. 备份数据文件,并删除原始数据文件。
3. 根据系统配置信息确定上次未匹配的登入记录文件的位置。
4. 读取上次未匹配的登入记录,形成用户登录记录列表。
5. 读取数据文件,将文件内容解析成用户登录记录。
6. 将上一步中解析得到的用户登录记录添加到列表中。
7. 返回用户登录记录列表。

分支与异常
第2步,若找不到数据文件,则报告异常。
第2步,若备份数据失败,则报告异常。
第3步,若上次未匹配的登入记录文件不存在,则跳过到第4步。
第4步,若读取备份数据文件失败,则报告异常。
第6步,若指定的写出目录不存在,则创建目录。
第6步,若创建目录或写文件失败,则报告异常。
第7步,若指定的写出目录不存在,则创建目录。
第7步,若创建目录或写文件失败,则报告异常。

数据匹配

功能简述
DMS程序读取用户登入/登出记录列表,按照登入/登出的对应关系匹配成完整的用户登录记录,并将本次未匹配的登入记录写到指定文件。
前置条件
已经获得用户登入/登出记录列表
基本流
1. 访问用户登入/登出记录列表,按照登入/登出的对应关系匹配登录记录。
2. 将未匹配的登入记录写到文件中。

匹配登录记录
功能简述
将用户登入/登出记录按照对应关系匹配成用户登录记录,以便计算用户登录时长。
前置条件
已经获得用户登入/登出记录列表
基本流
1. 定义两个列表分别用来保存登入记录和登出记录。
2. 循环访问用户登入/登出记录列表,将登入记录和登出记录分检出来,分别存入登入记录列表和登出记录列表。
3. 循环访问登出记录列表,每找到一条登出记录后循环访问登入记录列表,找到与之对应的登入记录,将两条对应的记录组合成用户登录记录,并将这两条记录从列表中删除。
4. 循环直至所有的登出记录都处理完成。

* 保存未匹配的登入记录*

功能简述
将匹配之后剩余的登入记录数据保存到文件中,以便下次匹配。

前置条件
匹配登录记录完成

基本流
1. 将匹配完成后,登入记录列表中剩余的记录写到文件中保存。

分支与异常
第1步,若找不到指定文件,则创建。
第1步,若创建文件失败,则报告异常。

数据发送

功能简述
采集系统客户端将匹配好的数据通过网络发送给服务器。

前置条件
用户登录记录已经匹配完成

基本流
1. 建立到服务器的网络连接。
2. 遍历匹配的用户登录记录集合,拿到一条匹配的用户登录数据记录。
3. 将匹配的用户登录数据记录按照指定格式发送。
4. 循环2-3步,直到所有匹配的登录记录处理完成。
5. 关闭网络连接。

分支与异常
第1步,若网络连接失败,则报告异常。
第2步,若写数据失败,则报告异常。

数据接收

功能简述
采集系统服务器接收从客户端传送过来的数据。

前置条件
服务器程序启动,客户端完成匹配,并已发送数据。

基本流
1. 开启服务程序。
2. 获得网络连接。
3. 开启新的线程为客户服务。
4. 获得输入流和输出流。
5. 包装流对象。
6. 循环从输入流中读取字符串,保存在本地列表中。
7. 成功读取一行字符串后向服务器发送成功传送标志。
8. 循环5-6步,直到所有字符串接收完成。
9. 关闭流对象,关闭网络连接,终止线程。

分支与异常
第1步,若开启服务失败,则报告异常。
第2步,若获得网络连接失败,则报告异常。
第4步,若获得流对象失败,则报告异常。
第6步,若读取数据失败,则报告异常。
第7步,若写出数据失败,则报告异常。

数据保存

功能简述
采集系统服务器将接收到的数据保存到数据库。

前置条件
服务器已经接收到数据。

基本流
1. 建立到数据库的连接
2. 循环访问接收到的数据列表
3. 将列表中的记录插入到用户登录记录明细表中
4. 访问完成后关闭连接

分支与异常
第1步,若建立数据库连接失败,则报告异常。
第3步,若插入记录失败,则报告异常。

数据整合

功能简述
采集系统服务器将用户登录记录明细表的数据整合出日表,月表和年表。

前置条件
用户登录记录明细表存在

基本流
1. 执行SQL语句,将用户登录记录明细表中前一天的记录按照用户名和实验室ip为条件组合,统计出每一天,用户登录某一实验室机器的总时长数据,形成日报表。
2. 执行SQL语句,根据用户登录记录日报表数据整合出用户登录记录月报表。
3. 执行SQL语句,根据用户登录记录月报表数据整合出用户登录记录年报表。

整合出日报表

功能简述
根据用户登录记录明细整合出用户登录记录日报表

前置条件
已经得到前一天所有用户登录记录明细
一天执行一次

基本流
1. 建立到数据库的连接。
2. 执行SQL语句,将用户登录记录明细表中前一天的记录按照用户名和实验室ip为条件组合,统计出每一天,用户登录某一实验室机器的总时长数据,形成日报表。
3. 关闭到数据库的连接

分支与异常
第1步,若建立连接失败,则报告异常。
第2步,若执行SQL失败,则报告异常。
第3步,若关闭数据库连接失败,则报告异常。

整合出月报表

功能简述
根据用户登录记录日报表整合出月报表

前置条件
已经得到前一天所有用户登录记录日报表
如二号时已经得到一号所有的数据
一天执行一次

基本流
1. 建立到数据库的连接。
2. 按用户登录名和实验室IP为条件分组,计算出每个用户登录每个实验室的月登录时长,将其存入月表中 若是第一次存入对应的月表则插入 不是第一次就是更新操作。
3. 关闭数据库连接。

分支与异常
第1步,若建立连接失败,则报告异常。
第2步,若访问表失败,则报告异常。
第3步,若关闭连接失败,则报告异常。

* 整合出年报表*
功能简述
根据用户登录记录月报表整合出年报表

前置条件
已经得到前一月所有用户登录记录日报表
如二月时已经得到一号所有的数据
一个月执行一次

基本流
1. 建立到数据库的连接。
2.按用户登录名和实验室IP为条件分组,计算出每个用户登录每个实验室的月登录时长,将其存入年表中 若是第一次存入对应的年表则插入 不是第一次就是更新操作。
3.关闭数据库连接。

分支与异常
第1步,若建立连接失败,则报告异常。
第2步,若访问表失败,则报告异常。
第3步,若关闭连接失败,则报告异常。

概要设计

名词解释

物理结构:描述系统各功能模块与物理设备之间的联系。

系统模块:描述系统的功能模块。

接口设计:设计出系统与用户,系统与外部,系统各功能模块之间的依赖关系。

用户接口:描述系统与用户交互的依赖关系。

外部接口:描述系统与外部其他系统间的依赖关系。

内部接口:描述系统内部各功能模块间的依赖关系。

总体设计

业务流程
这个是项目的大体流程图,还没涉及到具体的细节。大体的流程如图所示,先读取数据即把数据从日志文件中读取出来,之后把放入内存集合中的数据进行匹配成需要的数据,把匹配好的集合发送到服务端。服务端接收数据,保存数据到数据库,数据进入数据库进行整合。

说明:
1,业务流程中几个存储文件的命名规则:
1.1 系统日志文件由外部传递给程序,程序需要判定是否存在然后才能采集。
1.2 未匹配登入数据项集合的存储路径由外部传递给程序,文件名采用logins.dat。
2, 业务规则说明:
2.1日志登入/登出数据项读取规则
系统日志文件中的数据项有很多,但并不是所有数据项都需要采集的,只有满足如下条件的数据项才是需要采集的:
a) 登录名不能以点号(.)开头,以点号开头的一般是登录程序本身的日志数据项,不需要采集。
b) 登录类型必须是7(登入)或8(登出),登录类型具体说明见下面列表:
系统模块

1, 数据采集模块:该模块的主要功能职责是读取Unix机器上的用户登录日志文件的内容,将其转化为登录记录对象,将这些对象存储在STL集合中并传给数据匹配合分析模块来分析。该模块的输入数据是Unix机器的日志文件/var/adm/wtmpx,输出数据是若干个登录记录对象(保存在集合中)。
2, 数据匹配和分析模块:该模块的主要功能职责是将数据采集模块采集到的用户登录记录数据按照登录/登出的关系匹配成一个完整的登录/登出记录,并计算出该用户本次登录的时长,然后将这些完整的登录/登出记录传送给数据发送模块。该模块的输入数据是原始的登录记录对象,输出数据是匹配好的登录/登出记录对象。
3, 数据发送模块:该模块的主要功能职责是将匹配好的登录/登出记录用网络传送的发式发送到采集系统服务器。
4, 数据接收模块:该模块的主要功能职责是从网络中读取采集客户端发送来的登录/登出数据。
5, 数据存储模块:该模块得主要功能职责是将数据接收模块接收到的数据按照指定的格式写入数据库中,保存为用户登录记录明细表。
6, 数据整合模块:将数据库中保存的用户登录记录明细表的数据整理成日报表,根据日报表整合出月报表,根据月报表整合出年报表。

接口设计

1. 用户接口
用户:执行命令,启动DMS3.0服务端程序。
系统:服务端系统运行,等待接收数据。

用户:执行命令,启动DMS3.0客户端程序。
系统:客户端系统运行,采集并发送数据。

用户:修改客户端配置文件参数
系统:下次运行时根据新的配置参数来处理数据。

用户:修改服务端配置文件参数
系统:下次运行时根据新的配置参数来处理数据。

2. 外部接口
系统读取用户登录记录文件,获得用户登录信息。
系统读取上次未匹配的登入记录文件,获取未匹配的登入记录数据。
系统将匹配好的数据写入指定数据库表中。
系统整合出月报表和年报表。
3. 内部接口
数据读取模块与数据匹配模块间的接口:
输入:解析好的用户登入/登出记录列表。
输出:无

数据匹配模块与数据发送模块间的接口:
输入:匹配好的用户登录记录列表。
输出:无

数据发送模块与数据接收模块间的接口:
输入:匹配好的用户登录记录数据项
输出:接收成功与否的消息

数据接收模块与数据保存模块间的接口:
输入:匹配好的用户登录记录列表
输出:无

数据保存模块与数据库间接口:
输入:匹配好的用户登录记录列表
输出:无

数据整合模块与数据库间接口:
输入:用户登录记录明细
输出:用户登录记录日报表,月报表和年报表

数据结构设计

根据系统需求,设计出如下数据实体:
1, LogRec:登入/登出记录类,用来表示一条原始的用户登入/登出记录。
2, MatchedLogRec:匹配的登录记录类,用来表示一条匹配的用户登录记录。
以下分别对这两个实体类的设计作出说明:

LogRec类图:

说明:

MatchedLogRec类图:

说明:

数据库设计

详细设计

1.数据类图

服务器端类图

1)server类说明
成员变量说明:

类方法说明:

  • public void initSocket( ) :初始化服务,启动Socket 的bind listen 和accept
  • public void startService( ) :响应客户连接请求,开启线程为客户服务
    2)DataReciveThread类说明


成员说明:
threadid 创建线程时使用 标示一个线程对象
方法说明:
run 完成具体的数据接收工作
start 完成线程的创建和启动线程
reciveData(void *) 创建线程时调用的线程函数
3)DataSaveThread类说明

成员说明:
threadid 创建线程时使用 标示一个线程对象
logDao 向数据库中存储数据的对象
方法说明:
run 完成具体的调用dao的工作
start 完成线程的创建和启动线程
saveData(void *) 创建线程时调用的线程函数
4)LogDao类说明

方法说明:
connect 连接数据库
saveData 存储数据 根据日志记录的退出时间放入相应的日志表中
如退出时间是8日 则放入logdetail08日志表中
commitData 提交事务
disconnect 断开连接
5) UserData类说明

成员变量说明

类方法说明

  • public:void push_data(LogData rec) :向缓冲池中加入数据
  • public:LogData pop_data() 从缓冲池中取出数据

客户端类图

1)client类的说明:


- public void sendLogs()
函数功能:执行数据采集客户端的完整过程 logReader 负责读取数据 logSender负责发送数据.

2)LogReader类的说明:
logReader类封装了日志读取的所有功能

成员变量说明

类函数说明:

  • public List readlogs() :读取日志文件总调度函数 得到匹配好的集合
    活动图:
  • public: void readFailLogins :读取上一次没有匹配的 登入记录

活动图:

  • private:void backup()
    备份日志文件 把变化的文件处理成不变的 把日志文件改名即可,系统会自动生成wtmpx文件
  • public: void readBackupFile()
    读取备份的日志文件 把读取到的数据放入对应的属性中
  • public void matchLogRec()
    将用户登入/登出记录匹配为完整的登录记录 logins
    ,logouts进行匹配存入matches.
  • public void saveFailLogins() :将匹配失败的日志记录存到文件

3) LogSender类

成员变量说明

  • public void sendMatches(list*matches):发送匹配日志集合到服务端
    活动图:
  • public void initNetWork() :根据ip和port 以及serverIp建立到服务端的socket连接初始化网络.
  • public void readSendfailed (list*matches):读取发送失败的数据文件
  • public void saveSendfailed (list*matches):存储发送失败的数据 以备下次读取发送

异常类

1)客户端异常类说明

电信主机计费系统_数据采集子模块相关推荐

  1. java电信计费项目论文_毕业论文-基于JAVA开发的电信IP计费系统3.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 毕业论文-基于JAVA开发的电信IP计费系统3.doc ...

  2. 电信主机托管费用_电信托管服务器需要如何计费?

    电信服务器托管一年要多少钱?电信服务器托管如何托管?电信服务器与挪动.中国联通网络服务器是如今销售市场上常常采用的网络服务器.网络服务器归类诸多,从作用.从运行内存.从配备这些视角不一样网络服务器的归 ...

  3. ETL工具Informatica开发流程 综合应用 电信通话计费系统开发项目案例10

    一.准备数据源 在Oracle数据库中创建 OLTP用户导入源数据 oracle_oltp_data.sql 在Mysql数据库中创建表,插入产品相关数据 mysql_product_data.sql ...

  4. c++网吧计费系统_云游戏火了,中国14万家网吧走向何处?

    日前微软与谷歌两大科技巨头纷纷宣布其在云游戏布局的最新进展,一时间云游戏成为游戏圈的热门词汇.作为云游戏一大落地场景,网吧这一发展了二十余年的产业,又将迎来新的变量. 一些观点认为云游戏将大幅降低网吧 ...

  5. Radius CBMS 3.16与ROS、BRAS对接电信级计费系统完美综合教程

    首先我们需要用到的基于linux有  ftp://213.115.162.55/redhat/ISO/RHEL4-U2-i386-AS-disc1.iso ftp://213.115.162.55/r ...

  6. 电信主机托管费用_电信服务器托管价格

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. 电信主机托管费用_电信服务器托管费用

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. java电信计费项目论文_基于JAVA开发的电信IP计费系统设计毕业论文

    基于JAVA开发的电信IP计费系统设计毕业论文 本科毕业设计(论文)基于 JAVA 开发的电信 IP 计费系统毕业设计(论文)任务书学院:信息科学与工程学院 系级教学单位:电子与通信工程学号学生姓名专 ...

  9. 走进四川电信 揭秘核心计费系统改造的背后

    数据,已成为这个时代的基调.当我们因为数据带来新的机遇而喜不自胜的时候,也常常会不可避免地遇到一些随之而来的困扰.与如何更好地使用数据相比,数据的存储和管理是更棘手的问题所在.甚至说,我们能够发挥数据 ...

最新文章

  1. spring 配置文件位置
  2. php js实现异步图片上传,使用php+js异步上传图片
  3. [FJOI2016]建筑师(斯特林数)
  4. leetcode算法题--数组中数字出现的次数 II
  5. 【PP模块】报废(损耗)类别简介(Scrap Categories and Their Effects)
  6. mac 更换默认蓝牙适配器_蓝牙防丢器实现安卓的BLE接口编程
  7. 动态规划 HDU1231-------最大连续子序列
  8. 【转】Nutz | Nutz项目整合Spring实战
  9. python解释器在语法上不支持什么编程_python解释器和编辑器的区别 - CSDN
  10. 吴江智慧城市产业化“航母”起航
  11. 图:智能手机Android系统的评委专用的比赛打分客户端,开发进行中...
  12. PLSQL Developer安装破解 ,以及连接配置
  13. 检索汉字拼音,实用工具类
  14. JQuery右下角弹窗广告
  15. 整活小能手!Windows系统滑动关机!一行脚本实现炫酷效果
  16. 战地3一直显示服务器断开连接,战地3一直Joining Server.解决办法_游侠网
  17. Map使用对象作key
  18. SQL语句 -非空约束 - 唯一约束 - 主键约束 - 默认约束 -外键约束
  19. Spark大数据技术与应用 第一章Spark简介与运行原理
  20. MPI以太网通讯处理器在铝型材时效炉中的实际应用案例

热门文章

  1. 【算法基础五】通讯录管理系统(自我评价)
  2. 基于Springboot的生活方式分享平台的设计与实现
  3. 微信小程序判断iphonex xs xr 样式
  4. 【干货】软件安装报“不能注册DLL/OCX:RegSvr32失败;退出代码Ox3”
  5. 7-10 计算多门课的平均绩点
  6. [数论 斐波那契] 51nod1355. 斐波那契的最小公倍数
  7. C#基础——字符串、数字之间的转换
  8. 0门槛的数据可视化软件,帮你快速上手制作炫酷的可视化大屏
  9. MySQL的数据是存在哪的
  10. Java使用Itext5与html模板生成pdf并支持下载