学习内容
12月23日学习内容:
-
学习正则表达式规则,能够在代码中应用正则表达式
-
了解加密算法种类和各自的应用场景
-
学习java多线程,掌握线程的几个状态以及状态之间如何进行转变
12月24日学习内容:
-
学习maven,能够使用maven开发项目
-
学习SQL,回顾SQL知识
-
学习Oracle教程
12月25日学习内容:
- 安装Oracle数据库
12月26日学习内容:
- 校招系统增加岗位和礼物置顶功能
- 校招系统增加岗位面试次数可选功能
学习总结
1. 正则表达式
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
正则表达式的匹配规则可参考下面网址:正则表达式 - 廖雪峰的官方网站研究互联网产品和技术,提供原创中文精品教程https://www.liaoxuefeng.com/wiki/1252599548343744/1255945288020320
2. 加密算法
2.1 对称加密
对称加密算法就是传统的用一个密码进行加密和解密。常用算法有DES、AES和IDEA等;
密钥长度由算法设计决定,AES的密钥长度是128/192/256位;
使用对称加密算法需要指定算法名称、工作模式和填充模式。
2.2 非对称加密
非对称加密就是加密和解密使用的不是相同的密钥:只有同一个公钥-私钥对才能正常加解密。
非对称加密相比对称加密的显著优点在于,对称加密需要协商密钥,而非对称加密可以安全地公开各自的公钥,在N个人之间通信的时候:使用非对称加密只需要N个密钥对,每个人只管理自己的密钥对。而使用对称加密需要则需要N*(N-1)/2
个密钥,因此每个人需要管理N-1
个密钥,密钥管理难度大,而且非常容易泄漏。
但是非对称加密的缺点就是运算速度非常慢,比对称加密要慢很多。所以,在实际应用的时候,非对称加密总是和对称加密一起使用。
2.3 数字签名
私钥加密得到的密文实际上就是数字签名,要验证这个签名是否正确,只能用私钥持有者的公钥进行解密验证。使用数字签名的目的是为了确认某个信息确实是由某个发送方发送的,任何人都不可能伪造消息,并且,发送方也不能抵赖。
在实际应用的时候,签名实际上并不是针对原始消息,而是针对原始消息的哈希进行签名。对签名进行验证实际上就是用公钥解密,然后把解密后的哈希与原始消息的哈希进行对比。
常用数字签名算法有MD5withRSA、SHA1withRSA、SHA256withRSA。
2.4 数字证书
摘要算法(哈希算法)用来确保数据没有被篡改,非对称加密算法可以对数据进行加解密,签名算法可以确保数据完整性和抗否认性,把这些算法集合到一起,并搞一套完善的标准,这就是数字证书。数字证书就是集合了多种密码学算法,用于实现数据加解密、身份认证、签名等多种功能的一种安全标准。数字证书可以防止中间人攻击,因为它采用链式签名认证,即通过根证书(Root CA)去签名下一级证书,这样层层签名,直到最终的用户证书。而Root CA证书内置于操作系统中,所以,任何经过CA认证的数字证书都可以对其本身进行校验,确保证书本身不是伪造的。我们在上网时常用的HTTPS协议就是数字证书的应用。浏览器会自动验证证书的有效性。
3. 多线程
一个进程可以包含一个或多个线程,但至少会有一个线程。
进程是资源分配的最小单位,线程是任务调度的最小单位。
3.1 多线程与多进程对比优缺点
多进程优点:稳定性比多线程高
多进程缺点:创建进程比创建线程开销大;进程间通信比线程间通信要慢
3.2 线程状态
Java线程对象Thread
的状态包括:New
、Runnable
、Blocked
、Waiting
、Timed Waiting
和Terminated
;
- New:新创建的线程,尚未执行;
- Runnable:运行中的线程,正在执行
run()
方法的Java代码;- Blocked:运行中的线程,因为某些操作被阻塞而挂起;
- Waiting:运行中的线程,因为某些操作在等待中;
- Timed Waiting:运行中的线程,因为执行
sleep()
方法正在计时等待;- Terminated:线程已终止,因为
run()
方法执行完毕。
3.3 线程死锁
避免线程死锁:线程获取锁的顺序要一致。
4 Oracle
4.1 数据库类型
-
小型数据库:ACCESS等
-
中型数据库:SQL Server、MySQL、INFORMIX等
-
大型数据库:ORACLE、DB2、SYBASE等
分类依据可根据项目规模、成本、安全性
4.2 数据库系统
组成:数据、数据库、数据库系统、数据库管理系统
数据库特特点:永久存储、有组织、可共享
数据库管理系统:连接用户和数据库
数据库系统:软件+数据库+数据库管理系统
4.3 数据库实例
启动数据库实例:
启动实例 -> 加载数据库 -> 打开数据库
启动数据库实例: STARTUP nomount | mount | open | force [pfile=filename]
关闭数据库实例:
关闭数据库 -> 卸载数据库 -> 关闭Oracle实例
关闭数据库实例:SHUTDOWN [normal | transactional | immediate | abort]
4.4 Oracle数据结构
用户进程 -> 服务器进程 -> 实例
文件:控制文件、数据文件、重做日志文件、归档日志文件、参数文件、密码文件
数据库服务器:实例(内存结构+后台进程)、数据库
数据库 -> 多个表 -> 多个段 -> 多个区 -> 多个块
数据块(块头、存储区):
- 逻辑结构的最小逻辑单位
- 一个数据库对应一个或者多个物理块、大小由参数DB_BLOCK_SIZE决定
- 块头:数据块表头、表目录、行目录
- 存储区:自由空间、行数据
数据区:连续的数据块
- 存储分配的最小单位
段:表和索引
- 数据段:存储表中的所有数据
- 索引段:索引数据
- 临时段:排序期间建立的临时表数据
- 回滚段(撤销段):存储修改之前的位置和值
表空间:
- 数据库的最大逻辑划分区
- 一个或者多个数据文件组成
- 表空间的大小是它对应的数据文件大小的总和
- 系统表空间、辅助表空间、撤销表空间、用户表空间
物理存储结构:
- 数据文件:系统数据文件、回滚数据文件、用户数据文件、临时数据文件
- 控制文件:二进制文件,最小的但是最重要文件
- 日志文件:重做日志文件、归档日志文件(归档模式、非归档模式)
- 其他文件:服务器参数文件、密码文件、警告文件、跟踪文件
内存结构:系统全局区(SGA)、程序全局区(PGA)
- SGA:高速数据缓冲区、共享池
- PGA:私有SQL区、会话区