- 博客(7)
- 收藏
- 关注
原创 线程池
创建方式 1、newSingleThreadExecutor 创建一个单线程的线程池。这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行 2、newFixedThreadPool 创建固定大小的线程池。每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小。线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程。如果希望在服务器上
2021-03-17 00:15:50 67
原创 Spring Boot
1.什么是springboot? spring组件一站式解决方案,主要是简化了使用spring的难度,简省繁重的配置,提供各种启动器, 是开发者能快速上手; 优点: 1.减少开发,测试时间和努力; 2.使用javaConfig,避免使用xml; 3.避免大量的maven导入和各种版本冲突; 4.通过默认值快速开发; 5.没有单独的web服务器需要(无需启动tomcat);内嵌tomcat 6.通过@Configuration和@Bean,spring将自动加载对象并像以前一样对其管理 7.基于环境配置(-
2021-03-14 23:43:57 99
原创 Spring Cloud
Spring cloud组件 1、Eureka 是微服务的注册中心,复制微服务的注册和发现 有:Eureka Client 复制将微服务注册到Eureka Server中 Eureka Server 是注册中心,有一个注册表,保存每个微服务的所在的机器和端口 2、getWay 负责服务网关 3、Feign 通过@FeignClient 注解,Feign将会对每个接口创建一个动态代理。 根据接口的@RequestMaping等注解,来动态构造出请求的服务的地址,最后对这个地址发起请求,解析相应。 4、Ri
2021-03-14 23:38:03 65
原创 Redis
一、redis的数据类型 String list hash set sortedSet 二、redis的穿透 key对应的数据在数据库中不存在。每次针对此key的请求从缓存获取不到。请求都会到数据库,从而可能击垮数据库。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有 处理方式: 1、布隆过滤器 2、缓存空对象:当数据查询时,未查询到值时候返回一个空值并存到缓存中,设置一个较短的过期时间,之后访问数据将会从缓存中获取。从而不去数据库获取。 三、redis的击穿 key对应的数据库中存在,但是
2021-03-11 00:05:35 62
原创 JVM学习
JVM加载过程 1、加载: 通过类的全限定名来获取定义此类的二进制字节流 2、验证: 确保被加载类(class文件)的正确性 确保class文件的字节流中包含的信息符合当前虚拟机的要求,并不会危害虚拟机自身安全 有文件格式验证、元数据验证、字节码验证、符号引用验证 3、准备: 为静态变量分配内存,并将其赋默认值 4、解析 将常量池中符号引用替换为直接引用(内存地址)的过程 比如(符号引用只是一个表示3,直接引用指向内存地址) 5、初始化 为静态变量赋初值 赋初值两种方式: 定义静态变量时指定初始值。如 pr
2021-03-09 20:21:46 76
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人