随笔分类 - 学习笔记
摘要:线程等待实现 创建一个线程,然后在 while 循环里一直运行,通过 sleep 方法来达到定时任务的效果 public class Task { public static void main(String[] args) { // run in a second final long timeI
阅读全文
摘要:工作流概述 每一项业务的开始和结束,都可以理解为一个工作流,例如,公司的费用报销的基本流程如下: 员工先提出费用报销申请,提交给部门领导,部门领导审批后,提交给财务部门审批,审批完成后,通知提出申请的员工可以报销,报销流程结束。整个流程按照步骤完成,这就是一个简单的工作流。工作流可以理解为从开始节点
阅读全文
摘要:概述 随着数据量增多,势必会进行分库分表。假设 test 表有数据 [1,2,3,4,5,6,7,8],在单库的时候,查询第 2 页数据并且显示 2 条,语句是这样的: select * from test order by id limit 2 offset 2 数据返回 [3,4],但是数据切分
阅读全文
摘要:MyBatis 和 MyBatis-Plus 的区别 MyBatis 是基础的持久层框架,主要用于将 Java 对象与数据库表进行映射,需要手动编写映射文件(XML 或 注解方式),定义 SQL 语句、参数、结果映射等,适用于对 SQL 语句性能要求高,需要编写复杂 SQL 的场景 MyBatis-
阅读全文
摘要:概述 SpringMVC 中的 MVC 即模型-视图-控制器,该框架围绕一个 DispatcherServlet 改计而成,DispatcherServlet 会把请求分发给各个处理器,并支持可配置的处理器映射和视图渲染等功能 SpringMVC 的工作流程如下所示: 客户端发起 HTTP 请求:客
阅读全文
摘要:概述 ZooKeeper 是一个分布式协调服务,其设计初衷是为分布式软件提供一致性服务。ZooKeeper 提供了一个类似 Linux 文件系统的树形结构,ZooKeeper 的每个节点既可以是目录,也可以是数据,同时 ZooKeeper 提供了对每个节点的监控与通知机制。基于 ZooKeeper
阅读全文
摘要:概述 Spring 是一个企业级 J2EE 应用开发一站式解决方案,其提供的功能贯穿了项目开发的表现层、业务层和持久化层,同时,Spring 可以和其他应用框架无缝整合 Spring 的特性包括以下几个方面: 轻量:Spring 是一个轻量级的框架,其核心 JAR 包的大小均为 1MB 左右。从系统
阅读全文
摘要:概述 流控指控制系统流量的平均速度,一般会为系统设置一个阀值,对阀值内的流量正常处理,如果流量超过这个值,就对超出阀值部分的流量进行拒绝或丢弃操作,保障系统不被冲量冲垮 工作中常用的流控算法有固定窗口算法、漏桶算法和令牌桶算法 固定窗口算法 固定窗口算法指设定一个时间窗口,给这个时间窗口设定一个阈值
阅读全文
摘要:概述 租约机制指在租约期限内,拥有租约的节点有权利操作一些预设好的对象,具体如下 租约是由授权者授予的一段时间内的承诺 授权者一旦发出租约,则无论接受方是否收到,也无论后续接收方处于何种状态,只要租约不过期,授权者就得遵守承诺,按承诺的时间和内容执行。 接收方在有效期内可以使用授权者的租约,如果租约
阅读全文
摘要:Java 网络编程 早期的 Java API 只支持由本地系统套接字库提供的所谓的阻塞函数,下面的代码展示了一个使用传统 Java API 的服务器代码的普通示例 // 创建一个 ServerSocket 用以监听指定端口上的连接请求 ServerSocket serverSocket = new
阅读全文
摘要:概述 负载均衡建立在现有的网络结构之上,提供了廉价、有效、透明的方式来扩展网络设备和服务器的带宽,增加了吞吐量,加强了网络数据的处理能力,提高了网络的灵活性和可用性。项目中常用的负载均衡有四层负载均衡和七层负载均衡。 四层负载均衡与七层负载均衡的对比 四层负载均衡基于 IP 地址和端口的方式实现网络
阅读全文
摘要:核心注解 1. @SpringBootApplication 主要用于开启自动配置,它也是一个组合注解,主要组合了 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan 2. @EnableAutoConfiguration
阅读全文
摘要:SpringBoot 概述 Spring 为开发 Java 应用程序提供了全面的基础架构支持,它将 Java 对象交由容器统一管理,从而实现控制反转(IOC)和依赖注入(DI),并提供了一些常用模块如 SpringAOP、SpringJDBC、SpringMVC 等等 SpringBoot 继承了
阅读全文
摘要:为什么使用消息队列? 以用户下单购买商品的行为举例,在使用微服务架构时,我们需要调用多个服务,传统的调用方式是同步调用,这会存在一定的性能问题 使用消息队列可以实现异步的通信方式,相比于同步的通信方式,异步的方式可以让上游快速成功,极大提高系统的吞吐量 消息队列的使用场景有如下: 异步处理:以上述用
阅读全文
摘要:概述 随着互联网的发展,软件系统由原来的单体应用转变为分布式应用。分布式系统把一个单体应用拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作。这种分布式系统下不同服务之间通过远程协作完成的事务称之为分布式事务,例如用户注册送积分事务、创建订单减库存事务,银行转账事务等都是分布
阅读全文
摘要:概述 所谓接口幂等性就是:在特定场景下,同一条件的多次接口调用,保证操作只执行一次,如果接口没有保证幂等性,在以下场景就会产生问题 前端重复提交:用户进行注册、创建个人信息等操作,由于网络抖动导致页面没有及时响应,用户认为没有成功而多次点击提交按钮,发生重复提交表单请求 接口超时重试:提供外部系统调
阅读全文
摘要:什么是死锁? 死锁是指两个或多个进程在执行过程中,因争夺资源而造成的一种相互等待的现象,如果没有外力干涉,这些进程将永远无法继续执行 死锁通常发生在多个进程试图同时访问同一资源而无法获取的情况下,例如,进程 A 需要访问资源 C,进程 B 需要访问资源 D,如果进程 A 获取了资源 C 的锁,进程
阅读全文
摘要:概述 系统中的三高一般指:高并发、高吞吐、高可用。高并发指在某个时间点上能够接收多少并发访问。高吞吐主要关注处理的数据量。高可用指在部分服务出现故障后仍能对外提供服务。 高并发的核心指标 QPS(Query Per Second):每秒的请求或查询数量,在互联网领域指每秒响应的请求数量 TPS(Tr
阅读全文
摘要:## 概述 Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强 #### 1. 正向代理 如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,需要通过代理服务器来访问,这种访问就称为正向代理 ![](https:/
阅读全文