假期复习资料及其完成情况(打卡贴—Done!!)

博主分享了假期的复习进度,包括完成毕业论文、清考和重修课程。接下来,他们打算系统复习基础知识,重点是Servlet、Spring入门、Spring MVC和Spring Boot。还分享了使用SpringBoot+EasyPoi+Redis实现Excel异步导入数据库的系列教程,并提供了码云项目的链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

哈哈哈哈哈哈 假期来临了 ~ 重返校园 贼开心~
毕业论文也撸得差不多了 ~ 清考也过了~ 重修网课也上完了~ cool !!!
准备趁着这段假期,系统地过一遍基础~

(7月7日留言:很多资料建议最好还是直接去看文字类文档,看视频来学习or复习其实有点低效了,例如mybatis可以直接去www.mybatis.org/mybatis-3/zh/index.html)

要求学习链接要求完成情况及其完成日期
Java入门——Java基础http://www.imooc.com/learn/85完成所有内容学习,并且做完相关练习题、编程练习done-5月26日
Java入门——面向对象http://www.imooc.com/learn/124同上done-5月26日
Java入门——集合框架等http://www.imooc.com/learn/110同上done-5月27日
Guavahttp://ifeve.com/google-guava/了解并熟悉guava常用apidone-7月5日
Linux&shellhttps://www.imooc.com/learn/181完成课程学习done-7月5日
mysql基础https://www.imooc.com/learn/122完成课程学习done-7月5日
mysql优化http://www.imooc.com/learn/194同上done-7月5日
Githttp://www.imooc.com/learn/208同上done-5月21日
Mavenhttp://www.imooc.com/learn/443同上done-5月24日
Servlethttp://www.imooc.com/learn/269同上done-5月31日
Jsphttp://www.imooc.com/learn/166同上选看-done-5月31日
web开发之过滤器http://www.imooc.com/learn/213同上选看-done-5月31日
web开发之监听器http://www.imooc.com/learn/271同上选看-done-5月31日
Spring入门http://www.imooc.com/learn/196同上done-6月1日
Spring MVChttp://www.imooc.com/learn/47同上done-6月1日
Spring Boothttp://www.imooc.com/learn/933选修done-6月2日
Mybatishttp://www.mybatis.org/mybatis-3/zh/完成课程学习done-7月5日
Junithttp://www.imooc.com/learn/356完成课程学习done-5月31日

Java中运算符的优先级
这里写图片描述

returntry-catch-finally中:
1、不管有木有出现异常,finally块中代码都会执行;
2、当trycatch中有return时,finally仍然会执行;
3finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;
4finally中最好不要包含return,否则程序会提前退出,返回值不是trycatch中保存的返回值。

1.e.printStackTrace()可以输出异常信息
2.-1为抛出异常的习惯写法
3.如果方法中try,catch,finally中没有返回语句,则会调用这三个语句块之外的return结果
4.finally块无论如何,不管前面是正常还是异常,都要执行。
5.finallytry中的return之后 在返回主调函数之前执行。

只有Error,Exception,RuntimeException提供了带cause参数的构造器,其他的所有异常类只能通过initCause()来设置cause。
所有Throwable的子类构造器中都可以接受一个cause对象作为参数。cause是异常原由,代表着原始异常。既可以在当前位置创建并抛出行的异常,也可以通过cause追踪到异常最初发生的位置。
异常链是一种面向对象编程技术,指将捕获的异常包装进一个新的异常中并重新抛出的异常处理方式。原异常被保存为新异常的一个属性(比如cause)。这个想法是指一个方法应该抛出定义在相同的抽象层次上的异常,但不会丢弃更低层次的信息。
把捕获的异常包装成新的异常,在新异常里添加原始的异常,并将新异常抛出,它们就像是链式反应一样,一个导致(cause)另一个
这个想法是指一个方法应该抛出定义在相同的抽象层次上的异常,(将所有捕获到的异常包装为新的异常类,即定义在相同的抽象层次上抛出)但不会丢弃更低层次的信息。

1、处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
2、在多重catch块后面,可以加一个catchException)来处理可能会被遗漏的异常
3、对于不确定的代码,也可以加上try-catch,处理潜在的异常
4、尽量去处理异常,切记只是简单的调用printStackTrace()去打印
5、具体如何处理异常,要根据不同的业务需求和异常类型去决定
6、尽量添加finally语句块去释放占用的资源

Servlet笔记记录:
这里写图片描述
这里写图片描述
这里写图片描述

Jsp的前身就是servlet 
 什么是servlet?
  Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“请求-响应” 编程模型来访问的这驻留来服务器内存的Servlet程序。


  1.客户端发送请求给服务器。
2.服务器开始接受,先判断该请求的servlet实例是否存在,如果不存在先装载一个servlet类并创建实例。如果存在则直接调用该servlet的service方法,之后进行判断是调用doGet方法还是doPost方法。
3.servlet创建实例后,调用init方法进行初始化。之后调用servce方法,判断是调用doGet方法还是doPost方法。
4.最后判断服务是否关闭,如果关闭则调用destroy方法

servlet生命周期阶段包括初始化、加载、实例化、服务和销毁。

这里写图片描述
这里写图片描述


#Junit——常用注解#
1.@Test:将一个普通的方法修饰成为一个测试方法
2.@Test(expected=XXX(异常类).class):会抛出该异常
3.@Test(timeout=毫秒 ):设置执行的时间,用于结束死循环或是性能测试
4.@Ignore:所修饰的测试方法会被测试运行器忽略
5.@RunWith:可以更改测试运行器org.junit.runner.Runner

JUnit测试套件的使用
测试套件就是组织测试类一起运行的
1.写一个作为测试套件的入口类,这个类里不包含其他的方法!!!
2.更改测试运行器Suite.class.
3.将要测试的类作为数组传入到Suite.SuiteClasses({})

Spring 入门:

spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
——轻量大小、开销轻量
——通过IoC达到松耦合
——提供了面向切面编程的丰富支持允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发
——包含并管理应用对象的配置和生命周期是一种容器

#spring——bean的配置及作用域#
1.bean的常用配置项:(理论上只有class是必须的)
id:唯一标识
class:具体是哪一个类
scope:范围
constructor arguments:构造器的参数
properties:属性
Autowiring mode:自动装配模式
lazy-initialization mode:懒加载模式
initialization/destruction method:初始化/销毁的方法
2.bean的作用域
singletion 单例 bean容器只有唯一的对象(默认模式)
prototype 每次请求会创建新的实例,destory方式不生效
request 对于request创建新的实例,只在当前request内有效
session 对于session创建新的实例,只在当前session内有效
global session 基于portlet(例如单点登录的范围)的web中有效,如果在web中同session
bean的作用域:


#spring——bean的生命周期#
生命周期:定义,初始化,使用,销毁
一.初始化:
方法1.实现org.springframework.beans.foctory.InitializingBean接口,覆盖afterPropertiesSet方法。系统会自动查找afterPropertiesSet方法,执行其中的初始化操作
方法2.配置init-method
例如设置bean中init-method="init"那么在初始化过程中就会调用相应class指定类的init()方法进行初始化工作

二 销毁(与初始化类似)
方法1.实现org.springframework.beans.foctory.DisposableBean接口,覆盖destory方法。
方法2.配置destory-method

三 配置全局初始化、销毁方法(属于默认配置,参考截图)

注意:
当三种方式同时使用时,全局(默认的)初始化销毁方法会被覆盖。
另外实现接口的初始化/销毁方式会先于配置文件中的初始化/销毁方式执行。
即使没有以上三种初始化方法也是可以编译执行的

#spring——Aware接口#
作用:实现了Aware接口的bean在初始化后可以获取相应资源并进行相应的操作(对于操作的结果要慎重!)
举例:
ApplicationContextAware:向实现了该接口的bean提供IOC容器的上下文信息(ApplicationContext),实现了该接口的bean必须配置到配置文件中并由spring的bean容器加载
BeanNameAware:向实现了该接口的bean提供关于beanName定义的相关内容

Resources (针对于资源文件的统一接口)

A、UrlResource:URL 对应的资源,根据一个 URL 地址即可获取
B、ClassPathResource:获取类路径下的资源
C、FileSystemResource:获取文件系统里面的资源
D、ServletContextResource:ServletContext 封装的资源,用于访问 ServletContext 环境下的资源
E、InputStreamResource:获取输入流封装的资源
F、ByteArrayResource:获取字节数组封装的资源

通过实现 ApplicationContextAware 接口中的方法 
setApplicationContext(ApplicationContext applicationContext)

Resource resource = applicationContext.getResource("xxx");

classpath:config.txt
file:C:\\config.txt
ftp:C:\\config.txt


Bean 的定义及作用域注解

A、@Controller :注解控制器类(控制层 MVC)
B、@Service :注解服务类(服务层)
C、@Repository :注解 DAO 类(持久层)
D、@Component :将普通的 bean 注解到 spring 容器中,相当于配置文件中的<bean id="xxx" class="xxx"/>

元注解(Meta-annotations)
元注解即是许多 Spring 提供的注解可以作为自己的代码,元注解是一个简单的注解,可以应用到另一个注解
除了 value() 元注解还可以有其他的属性,允许定制

类的自动监测及 Bean 的注册
Spring 可以自动检测类并注册 Bean 到 Applicationcontext 中

<context:annotation-config />
通过基于 xml 的 Spring 配置

为了能够自动检测到这些类并注册相应的 Bean ,需要
<context:component-scan base-package="xxx" />

<context:component-scan> 包含 <context:annotation-config>,通常使用前者后,就不需要再使用后者

使用过滤器进行自定义扫描

A、默认情况下,类被自动发现并注册 bean 的条件:使用 @Component @Repository @Service @controller 注解或者使用 @Component 的自定义注解

B、可以通过过滤器修改默认注解的行为

C、还可以使用 use-default-filters = "false" 禁用自动发现与注册

@Required
注解适用于bean属性的setter方法
这个注解仅仅表示,受影响的bean属

性必须在配置时被填充,通过在bean

定义或者通过自动装配一个明确的属

性值

@Autowired
可以将@Autowired注解为"传统"的

setter方法
可用于构造器或成员变量


默认情况下,如果因找不到合适的

bean将会导致autowiring失败抛出异

常,可以通过下面方式避免
@Autowired(required=false)
每个类只能有一个构造器被标记为

required=true
@Autowired的必要属性,建议使用

@Required注解


@·AOP基本概念及其特点
1)什么是AOP
·AOP:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
·主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。

2)对切面的理解
程序中的每一个模块或者说功能,任何一个模块中都要记录它的日志、事务、安全验证等等,给我们带来的工作量非常大。
当程序到达某种规模时,尤其是格式调整之类的,这种改动量是非常大的。如果通过切面方式,对开发人员是不可见的,默认地会对每一个子模块记录日志等这些工作。通过预编译或者动态代理的方式来执行这个功能,
对开发人员是透明,他不需要知道。
切面是和功能垂直的,也就是切面是横切与各个功能之上的

3)AOP实现方式
①预编译-AspectJ
②运行期动态代理(JDK动态代理、CGLib动态代理)-SpringAOP、JbossAOP

4)AOP几个相关概念
①切面---一个关注点的模块化,这个关注点可能会横切多个对象
②连接点--程序执行过程中的某个特定的点
③通知----在切面的某个特定的连接点上执行的动作
④切入点--匹配连接点的断言,在AOP中通知和一个切入点表达式关联
⑤引入----在不修改类代码的前提下,为类添加新的方法和属性
⑥目标对象-被一个或者多个切面所通知的对象
⑦AOP代理--AOP框架创建的对象,用来实现切面契约(包括通知方法执行等功能)
⑧织入---把切面连接到其他的应用程序类型或者对象上,并且创建一个被通知的对象,分为:编译时织入,执行时织入

Spring的AOP实现
·纯java实现,无需特殊的编译过程·,不需要控制类加载器层次
·目前只支持方法执行连接点(通知Spring Bean的方法执行)
·不是为了提供最完整的AOP实现(尽管它非常强大);而是侧重于提供一种AOP实现和Spring IOC容器之间的整合,用于帮助解决企业应用中的常见问题
·Spring AOP不会与AspectJ竞争,从而提供综合全面的AOP解决方案。

有接口和无接口的Spring AOP实现区别
·Spring AOP默认使用标准的JAVASE动态代理作为AOP代理,使得任何接口(或者接口集)都可以被代理
·Spring AOP中也可以使用CGLIB代理(如果一个业务对象并没有实现一个接口)


配置切入点Pointcut(001)


切入点的配置就是配置业务类中的哪些方法在执行前后会调用切面中的方法,切入点是和通知advice配合使用,配置了切入点,通知才会知道在哪些业务类的哪些方法执行
<aop:pointcut expression="execution(* com.imooc.aop.schema.advice.biz.*Biz.*(..))" id="moocPiontcut"></aop:pointcut> <br>
<br>
expression配置方式介绍:<br>
<br>
execution用于匹配方法执行的连接点

Spring MVC:

MVC的核心思想是业务数据抽取同业务数据呈现相分离。
控制器:负责业务数据的抽取
视图模板:负责页面呈现
前端控制器:负责分发调度

MVC:(Model-View-Controller)
MVC是一种架构模式,程序分层,分工合作,既相互独立,又协同工作,分为三层: 模型层、视图层和控制层。
MVC是一种思考方式
View:视图层,为用户提供UI,重点关注数据的呈现,为用户提供界面
Model:模型层,业务数据的信息表示,关注支撑业务的信息构成,通常是多个业务实体的组合。
Controller:控制层,调用业务逻辑产生合适的数据(Model),传递数据给视图用于呈现。

Spring MVC 基本概念
1、DispatcherServlet:  前端控制器
2、Controller: 调用业务逻辑生成model的地方
3、HandlerAdapter:DispatcherServlet通过HandlerAdapter调用controller
4、HandlerInterceptor:拦截器 该接口提供after postHandle preHandle 三个方法,调用controller前后使用
5、HandlerMapping:前端控制器与controller映射关系的类
6、HandlerExecutionChain: preHandle->Controller method->postHandle->afterCompletion的执行链
7、ModelAndView:model的具体表现
8、viewResolver:视图解析器,决定需要用哪个视图来进行视图的呈现。
9、view:界面

SpringMVC的动态概念:
1.用户发送请求request 
2.DispatcherServlet拦截request  就需要找到一个Controller 如何找?
3.DispatcherServlet就把功能代理给了HandlerMapping
4.HandlerMapping根据配置  通过annotation找到Controller也找到了HandlerInterceptor
形成了一个HandlerExcutionChain 作为一个Handler或者是HandlerAdapter返回给DispatcherServlet
5.DispatcherServlet调用这个Handler或者是HandlerAdapter(找到Controller,Controller目的:生成ModelAndView) 生成ModelAndView 并返回给DispatcherServlet
6.DispatcherServlet调用ViewResolver(视图解析器)方法 返回View对象给DispatcherServlet
7.DispatcherServlet调用ModelAndView作为模型数据传递给我们的View完成了呈现 返回给DispatcherServlet
8.DispatcherServlet再把视图响应给用户
---------------------------------------------
1.DispatcherServlet,HandlerMaping 只需要配置
2.Handler/HandlerAdapter忽略掉
3.Controller需要自己写
4.HandlerInterceptor(Controller调用前后干点啥)是一个接口,需要就写不需要就不用实现
5.ModelAndView:只是一个类  也可以使用Map把需要的放进去就好了
6.ViewResolver和HandlerMapping差不多只需要知道使用那种类型就可以了
7.view:不需要管具体的呈现。只需要管是哪一个就好了

---------------------------------------
综上所述:需要自己写的就是Controller 其他的就是配置

Spring Boot:
【Excel_To_DB】SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库(一)
【Excel_To_DB】SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库(二)
【Excel_To_DB】SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库(三)
【码云地址】:https://gitee.com/ydc_coding

springboot 打包命令:

mvn -Dmaven.test.skip -U clean package
其中 -Dmaven.test.skip 表示过滤吊test代码部分

默认打包是jar,如果打war包,需要配置

<packaging>war</packaging>
并且创建项目结构为标准web项目,需要添加webapp-->WEB-ING--->web.xml文件

然后再打包,该war包可以用java -jar 的方式运行,也可放入tomcat等容器里面运行

课程主要介绍了一下Spring boot2.0的新特性,web flux和reactive,主要作用是将以前阻塞的函数运行变成了异步非阻塞的,增加系统的吞吐量。增加了Route类来做路由信息

其他就是项目构建以及项目打包和运行的方式

特性:
1、spring-boot 自动装配,spring-mvc jdbc 等组件(有一定条件)
2、嵌入式容器 tomcat、netty等
3、为生产做了相关整合

运行模式:
1、ide模式
比较简便,直接运行,生产环境不一定有条件。
2、jar或者war方式(自测相对快点)
记住要改成war包需要遵循maven的webapp目录规范,需要自己创建webapp\WEB-INF\web.xml。
注意在编译插件中自定义配置主类全名称,让插件能找到主类。
3、maven插件化执行
需要将各个模块的依赖安装到本地:mvn -Dmaven.test.skip -U clean install
然后再打包,就可以运行了。
运行方式 mvn spring-boot:run
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值