Java EE 期末复习提纲太原理工大学
Posted 栈老师不回家
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java EE 期末复习提纲太原理工大学相关的知识,希望对你有一定的参考价值。
目录
一、题型
1. 选择题 20 个,每个 1 分,共 20 分。
2. 填空题 20 个,每个 1 分,共 20 分。
3. 判断题 10 个,每个 1 分,共 10 分。
4. 程序修改题 2 个,每个 5 分,共 10 分。
5. 程序阅读题 2 个,每个 12 分,共 24 分。
6. 编程题,1个,16 分。
选择、填空、判断小题均为题库里的题,请务必过两遍题库,程序修改题可能就是给出我们一个基本程序,然后让你以不同的形式实现相同的功能,程序修改题可能出题的点,第一个是动态 SQL 条件查询里面的 where 和 trim 替换、collection 迭代三种情况,第二个是 Bean 的三种装配方式,再一个就是依赖注入的两种方式 ,对于setter 注入和构造注入方式在程序题里面考的概率不是很大,那么依赖注入和控制反转绝对是会考小题的,还是不容忽视,最后一道编程题我们集中在 10 ~ 12 章,提示是 Spring MVC 相关的。然后说一下考试范围,4、5、9、13、15 章不考,其他章节都考,SSM 整合考的不多,可以说大题不会考,小题也是基于题库,再次强调题库的重要性,最后,以下考点即考试内容。
我把比较重要的两个内容 MyBatis 核心配置和动态 SQL 链接放在下面,有一些元素及配置参数需要理解,之前由于忙于出复习内容,Java EE 专栏暂时断更了,所以我这里只更新到了 Spring,见谅。
MyBatis 核心配置https://blog.csdn.net/m0_52861684/article/details/127623237
动态 SQLhttps://blog.csdn.net/m0_52861684/article/details/127772993?spm=1001.2014.3001.5502
二、考点
1. MyBatis
1. MyBatis 的概念。(半自动)
2. 6 到 8 页,MyBatis 入门程序及核心配置必须掌握。
3. 映射配置文件。(是什么,怎么用,不一定让你去手写代码,但最起码能看懂)
4. 14 页,MyBatis 工作原理,基于核心配置文件。(数据源、Mapper)
5. 核心配置中的一些元素都是什么意思?(有一些重要的,比如 properties、typeAliases、environments 及 mappers)
6. 21 页到 24 页,Mapper 映射文件也是比较重要的,select 以及增删改对数据库的修改。(namespace、各种属性及功能、id、parameterType、resultType 等)
7. 增删改和 select 返回值都是一个查找的结果。
8. 25 页 sql 以及 include 的使用务必掌握。(通过 id 属性把自定义的 SQL 片段引进来)
9. resultMap 手动映射数据表和 java 字段。(id 映射主键,result 映射普通的字段)
10. @before、@test、@after。(@before 初始化,在执行 test 之前先执行 before 的内容)
11. 动态 sql,条件查询、更新操作、复杂查询。(不想看课本的话,我前文中有动态 SQL)
12. 条件查询里面,if、choose、where、trim 等,各自的使用场景是什么?
13. where 出现的意义,当条件语句里面至少有一个条件满足时,它就会动态地帮我们增加 where 关键字,并将第一个条件的 and 去掉。
14. 更新操作里面,set 关键字的作用,出现的意义?(只更新需要更新的字段,避免资源浪费,并且它会自动帮我们去掉最后多余的逗号,就是说不用全部更新,哪里需要就更哪里)
15. 复杂查询里面,foreach 元素中的属性。(各个属性都是什么功能,有哪些取值)
16. 注意 collection 属性,这里会出一个小题。(在遍历参数时,collection 属性的值是必须指定的,不同情况下,该属性的取值也是不一样的,主要有以下三种情况:
① 若遍历的参数是单个参数且参数类型是一个 List,collection 属性值为 list;
② 若遍历的参数是单个参数且参数类型是一个数组,collection 属性值为 array;
③ 若传入的参数为多个参数,就需要把参数封装为一个 Map 进行处理,collection 属性值为 Map。)
2. Spring
17. Spring 概念。(是个容器,能自动帮我们完成一些事情)
18. Spring 有什么优点?(小题会考)
19. 82 页核心容器必须看。(BeanFactory、ApplicationContext)
20. ApplicationContext 也被称为应用上下文。
21. 84 页,commons-logging 怎么写?(这个单词怎么写记住)
22. 87 页控制反转是啥?
23. 依赖注入是啥?(将被需要对象赋值给需要的人)
24. 依赖注入和控制反转必须掌握。(不同角度,同一概念)
25. 依赖注入的两种方式。(setter 注入和构造方法注入)
26. 96 页 Bean 的实例化三种方式,构造器实例化、静态工厂方式实例化和实例工厂方式实例化。(① New;② 类.方法名;③ 先 New 个工厂,工厂对象.方法名)
27. Bean 的作用域。(singleton、prototype)
28. 使用 singleton 定义的 Bean 在 Spring 容器中将只有一个实例,每次通过 Spring 容器获取的 prototype 定义的 Bean 时,容器都将创建一个新的 Bean 实例。
29. Bean 的生命周期。(对于 singleton 创建、初始化、销毁,而 prototype 只负责创建,后面德的生命周期不再跟踪)
30. Bean 的装配方式。(基于XML、基于 Annotation 以及自动装配)
31. 基于 Annotation 的装配,注解使用。(这里会考一个小题,Autowired 既可以标注在实现类上,也可以标注在接口上)
32. 109 页,Spring AOP 概念。(面向切面 / 面向方面编程)
33. AOP 是 OOP(面向对象)的延伸和补充,但并不是 OOP 的替代品。
34. 110 页 AOP 术语。(Aspect 切面、Joinpoint 连接点、Pointcut 切入点等)
35. 动态代理,只需知道,我们在传统的 Spring AOP 开发中,默认用的是 JDK 动态代理。(JDK 代理的是接口,CGLIB 代理的是类)
36. 115 页 AspectJ 开发。(aop:config、aop:aspect等等,起码知道这些元素配的是什么东西)
37. 常见的 5 种通知。(前置、后置、环绕、返回和异常,只有这五种通知类型,出现其他的都是错的)
38. 119 页 基于注解的声明式。(各注解都是什么意思)
39. 120 具体用法,8 行和 12 行。(定义了一个切点,目的是干嘛,直接执行 PointCut 方法即可)
3. Spring MVC
40. 首先 Spring MVC 概念必须清楚。(web 开发,接收客户端请求)
41. 150 页工作原理。(处理器映射器、处理器适配器、视图解析器等是什么)
42. 图 10-14 重中之重。(所有的流程都得经过前端控制器)
43. 注意流程的第六点,Controller 执行完成后,会返回一个 ModelAndView 对象。(该对象会包含视图名或包含模型和视图名)
44. DispatcherServlet 是 Spring MVC 的核心类,是 Spring MVC 的流程控制中心,也是前端控制器。(作用就是拦截前端请求,调用处理器映射器 → 处理器适配器 → 最后去执行)
45. 229 页和 154 页结合看,web.xml 里面包含了啥。(DispatcherServlet、context-param)
46. RequestMapping 作用范围,可以作用在方法上也可以作用在类上。(注意一下 value 属性)
47. 159 页,请求映射方式。(GetMapping、PostMapping、PutMapping、DeleteMapping 分别是什么意思)
48. 165 页数据绑定非常重要,数据绑定的几种方式都是重点。
49. 如果前端发过来的简单类型参数名与后端对不上的话,需要进行重命名。
50. 知道整合的思路是什么?(Spring 先整合 MyBatis,再整合 Spring MVC,整合两次把三个都串起来)
山东科技大学 软件安全 期末复习
-
软件是程序、数据和文档的集合体。
-
网络攻击中,超过 70% 的漏洞来自应用程序软件。
-
移动互联网App存在安全漏洞的比例超过 90%。
-
软件面临的安全威胁分为三类,分别为 软件漏洞、恶意代码 和 软件侵权 。
-
漏洞利用的过程:漏洞发现 、漏洞挖掘 、漏洞验证、漏洞利用、实施攻击。
-
0day漏洞是指已经被发现(有可能未被公开)但官方还没有相关补丁的漏洞。
-
1day漏洞是指厂商发布安全补丁之后但大部分用户还未打补丁时的漏洞,此类漏洞仍然具有可利用性。
-
//存在漏洞,x*y是int型整数,会爆int(溢出) c++和java都存在此问题 long foo(int x, int y) long result= x * y ; return result;
-
int i = -3; unsigned short ui=i; printf("%u",ui); //结果为65533,对65536取模
-
char c1='a'; char c2='b'; char c3=c1+c2; printf("%d,",c3); //结果为-61 ---------->应改为int c3=c1+c2;
-
软件安全错误一般包含六个方面,分别是 需求说明错误 、设计错误、编码错误、测试错误 、配置错误 和 文档错误 。
-
漏洞是引发信息安全事件的根源。
-
软件开发过程中,人为错误称为(软件错误),软件中,软件内部的错误称为(软件缺陷 ),软件运行中,不正常的状态称为(软件故障)。
-
网络空间包含电子设备、基础设施、应用、数据,还有(人)。
-
网络安全框架的核心PDRR模型中,P指( 保护 )、D指( 检测 )。
-
unsigned short int a =32768; short int i=a; //-32768 ~ 32767 printf("%d",i); //-32768 a=65535; i= a; printf("%d",i); // -1
-
int bigint=2147483647; printf("%d",bigint++); //2147483647 unsigned int z=0; printf("%d",--z); //-1
-
unsigned int i=ULONG_MAX; int c= -1; printf("%d", c==i); //1
-
栈帧是系统为进程中的每个(函数)调用划分的一个空间。
-
指向当前栈帧的栈顶的指针是(ESP),指向栈底的是(EBP)。
-
缓冲区溢出指向缓冲区写数据时,没有做(边界)检查,缓冲区的数据超过预先分配的(边界),使得一簇数据覆盖在合法数据上引起的系统异常。
-
数据区存储(全局)变量和(静态)变量。
-
栈增长方向是从(高)地址到(低)地址;堆增长方向是从(低)地址到(高)地址。 //站高
-
Win32系统中,进程空间按功能分为4个区域,从低地址到高地址依次为(栈区)、(堆区)、(代码区)、(数据区)。
-
程序中所用的缓冲区可以是堆、栈、数据区。 √
-
代码区只存放机器代码。 ×------>存放程序汇编后的机器代码和只读数据
-
//改错 1.char s1[5]; // ---->char s1[6]; 2.char s2[]="abcde"; 3.char *p; 4.int i; 5.strcpy(s1,s2); 6.p=(char *) malloc (strlen(s1)); //----> p=(char*)malloc(strlen(s1)+1);
-
char s[10]; //----->cin.width(10) cin>>s; cout<<s<<endl;
-
在C语言的格式化输出中,表示十进制数输出的格式符号是%d,那么表示宽度为6,右对齐的十进制数输出的格式符号是(%6d);表示宽度为6,左补零右对齐的十进制数输出的格式符号是(%06d);输出16进制数的格式符号是(%x);输出字符串的格式符号是(%s);以小数形式输出浮点数的格式符号是(%f);输出十进制无符号数的格式符号是(%u);输出asc码字符的格式符号是(%c);以指数形式输出浮点数的格式符号是(%e);输出指针地址的格式符号是(%p);输出长整型数的格式符号是(%ld)。
-
unsigned short s=4; while (--s >=0) // ---->死循环,应改为while (--s>0) printf("%d",s);
-
在32位系统中,size_t相当于类型 unsigned int最大值是 4294967295(2^32-1)
-
char s1[5]; //---->char s1[6] char s2[5]; //---->char s2[6] char s3[10]; //---->char s3[11] strcpy(s1,"12345"); strcpy(s2,"abcde"); strcpy(s3,s1); strcat(s3,s2); cout<<s1<<endl; cout<<s2<<endl; cout<<s3<<endl;
-
char s[10]; puts("input a string:") ; gets(s); // ----> fgets(s,sizeof(s),stdin) cout<<s<<endl;
-
void test(char *c) short s=strlen(c); //可能会爆short char buf[100]; cout << "strlen(c)=" << strlen(c)<<endl; if(s<100) strcpy(buf,c); else cout<<"overflow!" <<endl;
-
// n赋初值为10 n=(2* ++n)*(n = 'a')+ (n>0?1:-1); //----->答案是2135,但编译器不同意
-
软件生命周期由三个时期构成,分别是**(软件定义)时期、(软件开发)时期和(软件维护)时期**。
-
确定软件完成总目标的是(软件定义)时期,由(系统分析员)负责完成。
-
软件定义时期,一般分为三个阶段,分别是(问题定义)、(可行性研究)和(需求分析)。
-
完成设计和实现任务的是(软件开发)时期,其中系统设计分为(总体设计)和(详细设计)阶段,系统实现分为(编码和单元测试)和(综合测试)阶段。
-
使软件能够满足用户长久需求的是(软件维护)阶段。
-
软件安全中,软件安全测试和开发过程包括:软件安全(需求分析 )、软件安全(设计 )、软件安全( 编码)、软件安全( 测试)、软件安全(部署)。
-
威胁建模可以在软件**(设计)**之初,就帮助发现安全问题,发现风险。
-
解决软件产品自身安全实质性的方法是(威胁建模)。
-
威胁建模有3种,分别是以**(软件)、(安全)和(资产和风险)**为中心。
-
测试人员使用**(威胁模型)**来生成安全测试用例。
-
开发团队使用**(威胁模型)**来实现安全控制和编写安全的代码。
-
威胁建模的作用可以跨越软件生命周期,一个完整的威胁建模是软件**(设计)、(开发)、(测试)、(部署)和运营团队**的代表性输入项。
-
设计阶段,由**(软件架构团队)**识别威胁,建立威胁模型。
-
威胁建模是循环反复的过程。 √
-
软件开发阶段,会发现所有的可能威胁。 ×
-
FILE *file=fopen("test.txt","w"); fprintf(file,"%s","hello"); //后面增加fflusf(stdout) fclose(file); return 0;
-
void change (int * q) //改成int* & q if(q==NULL) q=new int(20); int main() int *p=NULL; change(p); printf("%d\\n,*p);
-
威胁建模过程:确定安全目标,创建应用程序概况图,分解应用程序,确定威胁,威胁评估,确定威胁缓解计划和策略,验证威胁,威胁建档
-
int foo(char * s) char *d=new char[10]; if (s==NULL) //也要释放d return 0; strncpy(d,s,10); delete[] d; return 1;
-
信息安全三大基本属性:保密性,认证性,完整性。
保密性:实现保密性的方法一般是对信息加密和分配访问权限。
完整性:实现完整性的方法一般为预防和检测两种机制。
可用性:为了实现可用性,可以采取备份(实时备份、定时备份)和灾难恢复、应急响应、系统容侵等许多安全措施。
-
char * s="c language"; //----->char s[]="c language"; s[0]='C';
-
函数栈帧包含的信息:前一个栈帧的栈低位置,即前栈帧EBP;该函数的局部变量;函数调用的参数;函数的返回地址RET,用于保存函数调用前指令的位置。
-
栈溢出:越界的数组元素覆盖相邻的局部变量,甚至覆盖前栈帧EBP和函数返回地址RET。
-
格式化串漏洞的根源:C语言不对数组边界进行检查的缓冲区错误。
-
需求分析:头脑风暴,问卷调查和访谈,策略分解,数据分类,主/客体关系矩阵…
-
需求分析:核心安全需求,通用安全需求(安全架构,会话管理),运维安全需求,其它安全需求。
-
STRIDE威胁分类:
假冒 认证性 攻击者能够伪装成另一个用户或身份 验证主体、验证代码或数据
篡改 完整性 在传输、存储或归档过程中能够修改数据 访问控制列表、数字签名
否认 不可否认性 攻击者能够否认攻击 强身份验证、数字签名
信息泄露 机密性 信息泄露给未授权的用户 加密、访问控制列表
拒绝服务 可用性 对于合法用户拒绝提供服务 访问控制列表、授权
特权提升 授权性 攻击者能够跨越最小权限限制 访问控制列表、输入验证
-
Java类加载器:启动类加载器,标准扩展类加载器,路径类加载器,网络类加载器。
-
int **a =new int *[3]; for (int i=0;i<3;i++) a[i]=new int[2]; delete []a; //----->应该删除每个a
-
char *s1="abcd"; char s2[5]; strcpy(s2,s1); if(s1==s2) //改为 if(strcmp(s1,s2)==0) printf("equal!"); else printf("not equal!");
-
Obj * obj=new Obj[10]; delete []obj //释放 OObj * obj=new Obj(10); delete obj //释放
-
代码静态检测:不在计算机上实际执行所检测的程序,而是采用人工审查或类似动态分析的方法。
代码动态检测:实际运行代码时进行检测的方法。
上述知识是考前整理的,考完之后发现只复习上述知识是远远不够的
以上是关于Java EE 期末复习提纲太原理工大学的主要内容,如果未能解决你的问题,请参考以下文章