Spring Cloud 并不是一个单一框架,而是一套 微服务解决方案集合 ,它整合了很多组件,用来解决微服务架构中的常见问题,比如:服务注册与发现、配置管理、负载均衡、熔断限流、网关路由、链路追踪等
继承是一个纵向的层级。
抽象是横向的层级。
继承是为了能复用代码,建立类之间的层次关系。
抽象是隐藏具体的实现细节,只暴露行为的设计思想。
通过shell脚本,每天定时全量备份mysql数据库数据。并记录备份操作日志。
核心线程数 = CPU核数 × (1 + IO等待时间 / CPU时间)
最大线程数,在核心线程数的基础上加一点点做缓冲即可。
工作队列(workQueue),只需要缓冲1~3秒的突发QPS流量即可,其余的请求应该触发线程池的拒绝策略。
MySQL的执行流程:连接器 --> 分析器 --> 优化器 --> 执行器 --> innodb存储引擎;
B+树作为索引结构原因:B+树的非叶子节点不存储完整的数据,只存储索引字段数据,叶子结点是两两互相连接的;
JVM的内存模型,主要分为堆、方法区、栈、程序计数器、本地方法栈;
类的加载流程是加载 --> 验证 --> 准备 --> 解析 --> 初始化;
对象的创建流程是:类加载检查 --> 加载类 --> 内存分配 --> 初始化 --> 设置对象头 --> 执行 <init> 方法;
内存分配流程:先判断栈帧(逃逸分析),然后判断老年代(大对象),再是堆内存空间的年轻代(TLAB);
ArrayList、CopyOnWrityArrayList、HashMap等常见问题
SpringIOC的核心是配置解析、容器管理、依赖注入;
spring中bean的生命周期顺序是实例化 --> 依赖注入 --> 初始化 --> 销毁;
在实际应用中,我们经常需要对查询结果进行特定顺序的排序,而不仅仅是按照字母或数字的自然顺序。
MySQL提供了 ORDER BY FIELD 函数,允许我们根据自定义的顺序对查询结果进行排序。
本文将详细介绍 ORDER BY FIELD 的用法,并通过具体示例展示其强大功能。
ACID有四个特性,原子性、隔离性、持久性、一致性。
分别由undo log日志、锁和MVCC机制、redolog日志保证
@EnableAutoConfiguration 注解和 spring.factories 指定配置类
UserService.class ---> 构造方法 ---> 创建普通对象 ---> 依赖注入(属性赋值) ---> 初始化前 ---> 初始化 ---> 初始化后(AOP) ---> CGLIB代理对象 ---> Bean
在 JDK 8 中:
所以不能简单说 “常量池在堆” 或 “在方法区” ,要区分类型。
一个接口需要执行多个任务时,如task1、task2、task3三个任务,先执行完task1需要耗时1秒,再执行task2需要耗时2秒,最后执行task3需要耗时3秒,那么正常情况下这个接口总共需耗时6秒;
这个总耗时就有些长了很影响系统体验,此时就可以使用@Async进行一个异步调用,此时主线程就不需要等待task1执行完之后,再去调用task2、task3,主线程会同时去调用task1、task2、task3任务,3个任务会同时执行,那么此时该接口的总耗时就是耗时最长的task3任务的3秒;