0%

配置文件分类

目的:

  1. 掌握SpringBoot加载配置文件作用
  2. 掌握配置文件分类有两大类,如果同时存在会怎么样?

解析:

配置文件的作用:

  • 修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

  • SpringBoot官方讲解:约定 优于 配置 优于 编码

阅读全文 »

PageHelper使用

1.引入依赖

1
2
3
4
5
6
<!--引入分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
阅读全文 »

解决方法:

  • jdbcConfig.properties
    1
    2
    3
    4
    5
    6
    7
    8

    jdbc.username=cinema
    jdbc.password=123456
    jdbc.url=jdbc:mysql://localhost:3306/cinema?characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false
    jdbc.driver=com.mysql.cj.jdbc.Driver
    #jdbc.driver=com.mysql.jdbc.Driver


阅读全文 »

方式1:实现HandlerExceptionResolver接口

不推荐

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class HandlerExceptionResolverImpl implements HandlerExceptionResolver {


// 全局异常操作
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// 日志
Logger logger = LoggerUtil.getLogger(ex.getClass());
logger.info(ex.getMessage());
// System.out.println("自定义异常处理");
// HandlerException handlerException = null;
//
// //如果抛出的是系统自定义异常则直接转换
// if(ex instanceof HandlerException){
// handlerException = (HandlerException)ex;
// }else{
// //如果抛出的不是系统自定义异常则重新构造一个系统错误异常。
// handlerException = new HandlerException("未知错误,请与管理员联系!");
// }

/* 使用response返回 */
response.setStatus(404); //设置状态码
response.setContentType("application/json; charset=utf-8"); //设置ContentType
response.setCharacterEncoding("UTF-8"); //避免乱码
response.setHeader("Cache-Control", "no-cache, must-revalidate");
try {
ObjectMapper objectMapper = new ObjectMapper();
String s = objectMapper.writeValueAsString(ResponseMsg.fail.setMsg("未知错误,请联系管理员!"));
response.getWriter().write(s);
} catch (IOException e) {
logger.error("与客户端通讯异常:"+ e.getMessage(), e);
}
return null;
}
}

方式二:使用注解方式

1
2
3
4
5
6
7
8
9
10
// 全局contoller抛出的异常处理
// 用于定义全局组件
@ControllerAdvice
public class HandlerExectionResponse {
@ExceptionHandler(value = HandlerException.class)
@ResponseBody
public ResponseMsg jsonExceptionHandler(HttpServletRequest request, HandlerException e) {
return ResponseMsg.fail.setMsg(e.getMessage());
}
}

人资管理体系的6大模块

一、人力资源规划

是使企业稳定的拥有一定质量的和必要数量的人力,以实现组织目标而拟订的一套措施,从而求得人员需求量和人员拥有量之间在企业未来发展过程中的相互匹配,这就像一个导航,把握总体的线路。

  • 目的:在于结合企业发展战略,通过对企业资源状况以及人力资源管理现状的分析,找到未来人力资源工作的重点和方向,并制定具体的工作方案和计划,以保证企业目标的顺利实现。

  • 重点:在于对企业人力资源管理现状信息进行收集、分析和统计,依据这些数据和结果,结合企业战略,制定未来人力资源工作的方案。

阅读全文 »

初步认识

  • 缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。

  • 缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。

  • 缓存雪崩:当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。

缓存穿透解决方案

有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。

另外也有一个更为简单粗暴的方法(我们采用的就是这种),如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。

缓存击穿解决方案

key可能会在某些时间点被超高并发地访问,是一种非常“热点”的数据。这个时候,需要考虑一个问题:缓存被“击穿”的问题。

使用互斥锁(mutex key)

业界比较常用的做法,是使用mutex。简单地来说,就是在缓存失效的时候(判断拿出来的值为空),不是立即去load db,而是先使用缓存工具的某些带成功操作返回值的操作(比如Redis的SETNX或者Memcache的ADD)去set一个mutex key,当操作返回成功时,再进行load db的操作并回设缓存;否则,就重试整个get缓存的方法。

SETNX,是「SET if Not eXists」的缩写,也就是只有不存在的时候才设置,可以利用它来实现锁的效果。

个人理解:在缓存失效后,想要再次缓存时,添加一个互斥锁,只让一条线程访问数据库加缓存,缓存完毕后立一个flag告诉别的线程已经缓存好了,直接缓存取

缓存雪崩解决方案

  • 大多数系统设计者考虑用加锁或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。
  • 还有一个简单方案就时讲缓存失效时间分散开,比如我们可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件

oracle介绍

ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组
软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或 B/S 体系结构的数据库之一。比如
SilverStream 就是基于数据库的一种中间件。ORACLE 数据库是目前世界上使用最为广泛的数据
库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,
它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只
要在一种机型上学习了 ORACLE 知识,便能在各种类型的机器上使用它。

Oracle 数据库是数据的物理存储。这就包括(数据文件 ORA 或者 DBF、控制文件、联机日志、参数文件)。
其实 Oracle 数据库的概念和其它数据库不一样
这里的数据库是一个操作系统只有一个库。
可以看作是 Oracle 就只有一个大数据库。

阅读全文 »

搭建整合环境

SSM整合MyBatis与Spring对应版本.png
详细信息可以进入以下网址查看
http://www.mybatis.org/spring/

整合说明:SSM整合可以使用多种方式,咱们选择XML + 注解的方式

整合的思路

  1. 先搭建整合的环境
  2. 先把Spring的配置搭建完成
  3. 再使用Spring整合SpringMVC框架
  4. 最后使用Spring整合MyBatis框架

ps:其实都无所谓啦。。。下面为了看起来不臃肿,代码不重复放出来

阅读全文 »