WebSocket整合SpringBoot常用操作
一、WebSocket简介WebSocket是HTML5提供的全双工通信协议,客户端和服务器可以互相主动推送数据。
特点:
全双工通信
建立在TCP之上
与HTTP兼容
低开销
适用场景:
实时消息推送
在线聊天
实时数据监控
协同编辑
二、SpringBoot整合WebSocket添加依赖1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId></dependency>
开启WebSocket支持12345678@Configurationpublic class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointE ...
HTTP协议详解
一、HTTP协议概述HTTP(HyperText Transfer Protocol)是应用层协议,用于客户端和服务器之间的通信。
特点:
无状态协议
基于请求-响应模型
简单可扩展
支持多种数据类型
二、HTTP版本HTTP/1.0
每次请求都建立新连接
请求完成后断开连接
HTTP/1.1
默认持久连接(Keep-Alive)
支持管道化
支持分块传输
增加Host头
HTTP/2.0
二进制分帧
多路复用
头部压缩
服务端推送
HTTP/3.0
基于QUIC协议
使用UDP替代TCP
减少连接建立延迟
三、HTTP请求请求方法
方法
作用
幂等
安全
GET
获取资源
是
是
POST
创建资源
否
否
PUT
更新资源
是
否
DELETE
删除资源
是
否
PATCH
部分更新
否
否
HEAD
获取响应头
是
是
OPTIONS
获取支持的方法
是
是
请求报文结构1234请求行:方法 URL 版本请求头:头部字段: 值空行请求体
示例:
123456POST /api/user H ...
单例模式详解
一、单例模式概述单例模式确保一个类只有一个实例,并提供全局访问点。
适用场景:
需要频繁创建销毁的对象
创建耗时或耗资源的对象
工具类对象
配置类对象
二、饿汉式类加载时就创建实例。
静态常量12345678910public class Singleton { private static final Singleton INSTANCE = new Singleton(); private Singleton() {} public static Singleton getInstance() { return INSTANCE; }}
优点:实现简单,线程安全。缺点:类加载时就初始化,可能造成资源浪费。
静态代码块1234567891011121314public class Singleton { private static final Singleton INSTANCE; static { INSTANCE = new Si ...
OpenFeign常用操作
一、OpenFeign简介OpenFeign是Spring Cloud的声明式HTTP客户端,简化了微服务间的HTTP调用。
特点:
声明式调用,面向接口编程
集成Ribbon实现负载均衡
集成Sentinel实现服务熔断
支持Spring MVC注解
二、基本使用添加依赖1234<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
启用Feign1234567@EnableFeignClients@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, arg ...
Redis整合SpringBoot常用操作
一、Redis简介Redis是开源的内存数据结构存储系统,可用作数据库、缓存和消息队列。
特点:
高性能:基于内存操作
丰富数据类型:String、List、Set、Hash、ZSet等
持久化:RDB和AOF
高可用:主从复制、哨兵、集群
二、SpringBoot整合Redis添加依赖1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>
配置连接123456789101112spring: redis: host: localhost port: 6379 password: database: 0 timeout: 3000 lettuce: pool: max-active: 8 max-idle: 8 ...
MySQL日志详解
一、MySQL日志类型MySQL主要有以下日志:
错误日志(Error Log)
二进制日志(Binary Log)
中继日志(Relay Log)
慢查询日志(Slow Query Log)
一般查询日志(General Query Log)
重做日志(Redo Log)
回滚日志(Undo Log)
二、错误日志作用记录MySQL启动、运行、停止过程中的错误信息。
配置12345-- 查看错误日志位置SHOW VARIABLES LIKE 'log_error';-- 查看错误日志级别SHOW VARIABLES LIKE 'log_error_verbosity';
使用场景
排查启动失败
定位运行时错误
查看警告信息
三、二进制日志作用记录所有修改数据的SQL语句,用于主从复制和数据恢复。
格式STATEMENT:记录SQL语句ROW:记录行数据变化MIXED:混合模式
12345-- 查看binlog格式SHOW VARIABLES LIKE 'binlog_format';-- 设置格式SET binlog ...
MySQL锁详解
一、锁概述锁是保证数据一致性和并发控制的重要机制。
锁的作用:
保证数据完整性
实现事务隔离
控制并发访问
二、锁的类型全局锁锁定整个数据库实例。
使用场景:
全库逻辑备份
数据迁移
12345-- 加全局读锁FLUSH TABLES WITH READ LOCK;-- 释放锁UNLOCK TABLES;
特点:
整个库只读
阻塞所有写操作
表级锁锁定整张表。
表锁12345678-- 加读锁LOCK TABLES table_name READ;-- 加写锁LOCK TABLES table_name WRITE;-- 释放锁UNLOCK TABLES;
读锁:可以读,不能写写锁:独占表,其他会话不能读写
元数据锁DDL操作自动加MDL锁。
MDL读锁:DML操作
MDL写锁:DDL操作
意向锁InnoDB支持,表示事务意图在表中的行上加锁。
意向共享锁(IS)
意向排他锁(IX)
作用:表锁和行锁兼容性判断。
行级锁InnoDB支持的细粒度锁。
Record Lock锁定单条记录。
1SELECT * FROM user WHERE id = 1 FOR U ...
MySQL事务详解
一、事务概述事务是一组数据库操作,要么全部成功,要么全部失败。
ACID特性原子性(Atomicity):
事务是不可分割的工作单位
要么都做,要么都不做
一致性(Consistency):
事务必须使数据库从一个一致性状态变换到另一个一致性状态
隔离性(Isolation):
多个事务并发执行时,互不干扰
持久性(Durability):
事务一旦提交,对数据库的改变是永久的
二、事务的使用基本语法1234567891011121314-- 开启事务START TRANSACTION;或BEGIN;-- 提交事务COMMIT;-- 回滚事务ROLLBACK;-- 设置保存点SAVEPOINT savepoint_name;ROLLBACK TO savepoint_name;
示例1234567START TRANSACTION;UPDATE account SET balance = balance - 100 WHERE id = 1;UPDATE account SET balance = balance + 100 WHERE id = 2;COMMIT;- ...
MySQL索引详解
一、索引概述索引是帮助MySQL高效获取数据的数据结构,相当于书的目录。
索引的作用:
加快数据检索速度
降低I/O成本
加速排序和分组
索引的代价:
占用存储空间
降低写操作性能(需要维护索引)
二、索引数据结构B+树MySQL使用B+树作为索引结构。
特点:
非叶子节点只存储键值和指针
叶子节点存储所有数据和指针
叶子节点通过双向链表连接
高度低,减少磁盘I/O
优势:
范围查询效率高
单节点存储更多键值,树更矮
天然排序
为什么不用B树B树:
每个节点存储数据
范围查询需要中序遍历
高度可能更高
B+树更适合:
叶子节点存储所有数据,便于范围查询
非叶子节点不存数据,单节点存储更多键值
三、索引类型主键索引数据表的主键自动创建索引。
1234CREATE TABLE user ( id INT PRIMARY KEY, name VARCHAR(50));
特点:
唯一且非空
InnoDB使用聚簇索引
唯一索引索引列的值必须唯一。
1CREATE UNIQUE INDEX idx_email ON user(email ...
MySQL查询技巧
一、基础查询SELECT语句1234567891011-- 查询所有列SELECT * FROM table_name;-- 查询指定列SELECT column1, column2 FROM table_name;-- 别名SELECT column1 AS alias_name FROM table_name;-- 去重SELECT DISTINCT column FROM table_name;
条件查询12345678910111213141516171819-- 基本条件SELECT * FROM table WHERE column = 'value';SELECT * FROM table WHERE column > 100;-- 多条件SELECT * FROM table WHERE condition1 AND condition2;SELECT * FROM table WHERE condition1 OR condition2;-- 范围查询SELECT * FROM table WHERE column BETWEEN 10 A ...
