一些记录
-
id选择器
- id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 “#” 来定义。
#para1 { text-align:center; color:red; }
-
class选择器
- class 选择器用于描述一组元素的样式,class 选择器有别于id选择器,class可以在多个元素中使用。class 选择器在HTML中以class属性表示, 在 CSS 中,类选择器以一个点"."号显示
.center {text-align:center;}
JavaScript记录
JavaScript 显示数据
JavaScript 可以通过不同的方式来输出数据:
-
使用 window.alert() 弹出警告框。
-
使用 document.write() 方法将内容写到 HTML 文档中。
-
使用 innerHTML 写入到 HTML 元素。
-
使用 console.log() 写入到浏览器的控制台。
JavaScript 是一个脚本语言。它是一个轻量级,但功能强大的编程语言。
Mybatis
- 使用Mybatis需要Mybatis-config.xml文件配置数据库基本信息
- 需要xxxMapper.xml文件配置数据库查询与绑定语句
- 使用接口编程
OGNL表达式一般用于动态SQL
OGNL会进行字符串与数字的转换
Mybatis缓存
-
一级缓存(本地缓存)
- 与数据库同一次会话期间查询到的数据会放到本地缓存中,以后如果需要获取相同的数据直接从缓存中拿取,没必要再去查询数据库
- 一级缓存失效的四种情况
- sqlSession不同则一级缓存失效
- sqlSession相同,但是查询条件不同,一句缓存失效
- sqlSession相同,但是两次查询之间执行了增删改操作,这次增删改可能对当前数据有影响
- sqlSession相同,但是手动清除了一级缓存
-
二级缓存(全局缓存)基于namespace 级别的缓存,一个namespace对应一个二级缓存
-
工作机制
- 一个会话,查询一条数据,这个数据就会被放在当前会话的一级缓存中
- 如果会话关闭,一级缓存中数据会被保存在二级缓存中,新的查询信息就可以参照二级缓存中的内容
- 不同namespace查询的数据会放在对应的缓存中(map)
-
使用
- 开启全局二级缓存配置
<setting name="cacheEnabled" value="true"></setting>
- 去mapper.xml中配置使用二级缓存
<cache eviction="" flushInterval="" readOnly="" size="" type=""></cache> <!-- evication:缓存回收策略 LRU – 最近最少使用:移除最长时间不被使用的对象。 FIFO – 先进先出:按对象进入缓存的顺序来移除它们。 SOFT – 软引用:基于垃圾回收器状态和软引用规则移除对象。 WEAK – 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。 flushInterval:缓存刷新间隔 readOnly:缓存是否只读 true(只读):mybatis认为所有从缓存中获取的操作都是只读操作,不会修改数据;mybatis为了加快获取速度,直接会将数 据在缓存中的引用交给用户。不安全,但速度快 false(非只读):mybatis会利用序列化&反序列化技术克隆一份新数据给用户。安全,但速度满 size:缓存存放多少个数据 type:指定自定义缓存全类名 -->
- pojo需要实现序列化接口
-
SpringMVC注解配置详解
@requestMapping
- RequestMapping是一个用来处理请求地址映射的注解(将请求映射到对应的控制器方法中),可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping请求路径映射,如果标注在某个controller的类级别上,则表明访问此类路径下的方法都要加上其配置的路径;==
@RequestParam
- 用于将请求参数区数据映射到功能处理方法的参数上
@PathVariable绑定URI模板变量值
- 用于将请求URL中的模板变量映射到功能处理方法的参数上
@RequestMapping(value="/users/{userId}/topics/{topicId}")
public String test(
@PathVariable(value="userId") int userId,
@PathVariable(value="topicId") int topicId)
@Controller
- Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示
@Repository
- 用于注解dao层
SpringBoot
自动配置原理
- SpringBoot启动时加载主配置类,开启了自动配置功能@EnableAutoConfiguration
- @EnableAutoConfiguration的作用:
- 利用EnableAutoConfigurationImportSelector给容器中导入组件
- 可以参照selectimports()方法中的内容
原理总结:将类路径下的META-INF/spring.factories里面配置的所有EnableAutoConfiguration的值加入到容器中
- 每一个自动配置类进行自动配置功能
精髓
- SpringBoot启动时会加载大量的自动配置类
- 观察我们需要的功能有没有SpringBoot默认写好的自动配置类‘
- 再看这个自动配置类中配置了哪些组件,只要需要的组件有,我们就不需要再来配置
- 给容器中自动配置类添加组件的时候,会从properties类中获取某些属性,我们就可以在配置类中指定这些属性的值
SpringBoot日志关系
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
- 总结:SpringBoot底层也是使用SLF4J+logback方式进行日志记录
- SpringBoot将其他的日志替换成slf4j
- 如果引入其他框架,必须将该框架的默认日志依赖移除
SpringBoot对静态资源的映射规则
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
} else {
Integer cachePeriod = this.resourceProperties.getCachePeriod();
if (!registry.hasMappingForPattern("/webjars/**")) {
this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{"/webjars/**"}).addResourceLocations(new String[]{"classpath:/META-INF/resources/webjars/"}).setCachePeriod(cachePeriod));
}
String staticPathPattern = this.mvcProperties.getStaticPathPattern();
if (!registry.hasMappingForPattern(staticPathPattern)) {
this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{staticPathPattern}).addResourceLocations(this.resourceProperties.getStaticLocations()).setCachePeriod(cachePeriod));
}
}
}
-
所有/webjars/*都去classpath:/META-INF/resources/webjars/寻找资源
- webjars:以jar包的方式引入静态资源
-
/**访问当前项目下任何资源(静态资源文件夹)
"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public",
"/":当前项目根路径
SpringBoot启动配置原理
- 启动流程
- 创建SpringApplication对象
- 保存主配置类
- 判断当前是否为一个web应用
- 从类路径下找到META-INF/spring.factories配置的所有ApplicationContextInitializer;然后保存起来
- 从类路径下找到META-INF/spring.factories配置的所有ApplicationListener
- 从多个配置中找到有main方法的主配置类
- 运行Run方法
- 从类路径下META-INF/spring.factories,获取springApplicationRunListerner
- 回调所有获取springApplicationRunListerner.toString()方法
- 封装命令行参数
- 准备环境
- 创建ApplicationContext;决定创建web的IOC还是普通IOC
- 准备上下文环境,将environment保存到IOC中
- 回调之前保存的所有ApplicationContextInitializer的initialize()方法
- 创建SpringApplication对象
Docker核心概念
- Docker主机:安装了Dockcer程序的机器(Docker直接安装在系统上)
- Docker客户端:连接Docker主机进行操作
- Docker仓库:用来保存各种打包好的软件镜像
- Docker镜像:软件打包好的镜像,放在Docker仓库中
- Docker容器:镜像启动后的实例称为一个容器。容器时独立运行的一个或一组应用