1.加密SHA1算法
1.hash的本质是函数:变量x经过特定的计算得到唯一值
2.Hash碰撞:不同的数据经过相同的hash算法,得到了相同的结果,称为hash碰撞,数学界无法规避
2.关于Spring框架的理解
Spring框架是针对bean的生命周期进行管理的轻量级容器
生命周期:对象的创建,初始化,对象业务逻辑执行,对象销毁
轻量级容器:Spring在内存中申请了一块内存空间,用来存储其他对象
IOC控制反转:把创建对象的权利交给Spring容器,Spring容器负责创建bean对象和管理对象之间的关系
AOP面向切面编程,降低组件之间的耦合性,便于后期维护
3.Spring如何创建对象( spring早期都使用.xml配置文件的方式来管理对象)?
1.定义Spring的配置文件地址
2.Spring容器启动时,加载指定的配置文件
3.当Spring扫描到bean标签时,加载属性id和class
4.根据反射机制实例化对象,根据class路径反射
5.Spring如何管理对象?
Spring容器在内部维护了一个大型的Map<K,V>集合,bean的id充当Map中的key,实例化对象充当Map中的Value
6.从Spring容器中通过Id或class类型获取对象
7.根据对象调用业务方法
4.Spring中的单例与多例和懒加载
单例:在内存中对象只有一份. 多例:在内存中对象有多份
Spring中默认为单例对象
@Bean @Scope("prototype") :表示多例对象 //@Scope("singleton") :表示单例对象
默认条件下,Spring容器启动,则会创建对象.(类比:饿汉式),如果开启了懒加载.则用户什么时候使用.则对象什么时候创建(类比:懒汉式).
注解: @Lazy 该注解只对单例模式有效 .多例模式均是懒加载.
5.Spring的生命周期
对象创建/初始化/业务调用/对象销毁
6.Spring DI 依赖注入
将Spring容器中的对象进行引入
@Autowired:将Spring容器对象按照类型注入
如果注入的类型是接口,则自动的查找其实现类对象进行注入
* 注意事项: 一般spring框架内部的接口都是单实现,特殊条件下可以多实现
按照名称注入:@Autowired+@Qualifier(name="")
@PropertySource 加载指定路径的配置文件
7.MVC设计思想
M:Model 数据层
V:View 视图层
C:Control 控制层
MVC的主要目的:降低代码的耦合性
基于MVC设计思想,在后端为了提高代码的扩展性,一般将后端代码分为三层
1.控制层 controller 与前端页面交互的 @controller
2.业务层 Service 编辑业务逻辑 @Service
3,持久层 Mapper 实现数据库的相关操作 @Mapper/@Repository
被调用的一般有接口和实现类:C(调用)---->S(调用)------>M
8.Spring-AOP:面向切面编程
代理模式说明:在业务层不方便做但是又不得不做的事情,可以放到代理对象中,通过这样的设计可以解决业务的耦合问题
Jdk代理:要求被代理对象必须是接口或者是其实现类, 类型名称: class com.sun.proxy.$Proxy9
Cglib代理:有些类没有接口,无法生成Jdk代理对象,代理对象是被代理者的子类
总结:Spring中的Aop 利用代理对象,再不修改源码的条件下,对方法进行扩展
编辑配置类,添加@EnableAspectJAutoProxy,让AOP机制有效
9.AOP中的专业术语
1.切面=切入点表达式+通知方法
@PointCut() 切入点:可以理解为if判断 ,
2.切入点表达式
* 2.1 bean("对象的Id")
* 2.2 within("包名.类名")
* 2.3 execution(返回值类型 包名.类名.方法名(参数列表))
* 2.4 @annotation(注解的路径)
3.定义通知方法:
* 1.前置通知 在目标方法执行之前执行.@Before("pointcut()")
* 2.后置通知 在目标方法执行之后执行.@AfterReturning()
* 3.异常通知 在目标方法执行之后抛出异常时执行.@AfterThrowing()
* 4.最终通知 都要执行的通知 @After
说明: 上述的四大通知一般用于记录程序的运行状态.只做记录.
* 5.环绕通知 在目标方法执行前后都要执行的通知 @Around
10.框架之间的调用关系
10.Spring-Mvc简单参数传递
常识: 通过浏览器的地址栏 只能发起GET请求.
- @ResponseBody 将返回的数据转化为JSON串, 如果是字符串本身 原数据返回
- @RequestMapping("/hello") 实现浏览器的请求路径与方法的映射
11.RestFul参数接收
restful格式 URL: http://localhost:8080/user/tomcat/18/男
restFul参数接收的语法:
* 1.参数使用{}进行包裹,并且指定属性名称
* 2.使用注解@PathVariable进行参数接收
* 3.restFul要求请求的路径不能出现动词
12.Linux系统常用操作命令总结
检查ip地址: ip addr if config
查询该目录下的所有文件: ls
定位该文件所在位置: pwd
创建a目录:mkdir a
在当前目录下创建b,c,d三个目录:mkdir b c d
创建文件:vim/vi i(编辑)-->esc(退出)--> : wq (保存并退出)
复制文件a取名b: cp a b
关闭防火墙: systemctl stop firewall service
查看防火墙状态: firewall -cmd --state
关于日志查看命令:
cat 8091.log 输出文档所有内容
more 8091.log
tail -10 nginx.config 查看nginx.config的最后10行