后端

【MySQL基础】MySQL复合查询全面解析:从基础到高级应用

MySQL学习:#前言: 前面学习了表的增删查改之后,今天我们重点来讲解一下有关查询的复杂问题——复合查询 目录一、复合查询基础概念1.1 什么是复合查询1.2 复合查询的主要类型二、示例数据库结构详解2.1 完整的表结构设计2.2 示例数据填充三、子查询深度解析3.1 子查询分类与语法3.1.1 按子查询位置分类3.1.2 按子查询相关性分类3.2

MySQL快速入门——库的操作

MySQL快速入门——库的操作 1. 创建数据库 2. 创建数据库案例 3. 字符集和校验规则 3.1 查看字符集和校验规则 3.2 验证不同校验编码的影响 4. 操作数据库 4.1 查看数据库 4.2 修改数据库 4.3 数据库删除 4.4 备份和恢复 5. 查看连接情况 1. 创建数据库1. 语法:CREATE DATABASE [I

JVM中的锁优化

锁优化 Jvm 在加锁的过程中,会采用自旋、自适应、锁消除、锁粗化等优化手段来提升代码执行效率。 什么是锁升级,降级? 锁的4中状态:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态(级别从低到高)。 所谓的锁升级、降级,就是 JVM 优化 synchronized 运行的机制,当 JVM 监测到不同的竞争状况是,会自动切换到不同的锁实现。这种切换就是锁的升级、降级。 锁升级

MySQL系列之数据类型(Numeric)

导览 前言 一、数值类型综述 二、数值类型详解 1. NUMERIC 1.1 UNSIGNED或SIGNED 1.2 数据类型划分 2. Integer类型取值和存储要求 3. Fixed-Point类型取值和存储要求 4. Floating-Point类型取值和存储要求 结语 精彩回放 前言MySQL系列最近三篇均关注了和我们日常工作或学习密切相关

Java 线程间通信

1. 线程之间如何通信 共享内存(隐式通信) 消息传递(显式通信 wait / notify synchronized) 1.2 阻塞 BLOCKED 和 WAITING 的线程都处于阻塞状态,不占用 CPU 时间片 BLOCKED 线程会在 Owner 线程释放锁时唤醒 WAITING 线程会在 Owner 线程调用 notify 或 notifyAll 时唤醒,但唤醒后并不意味着立刻获得

Redis集群Lettuce主从切换问题

一、问题描述 Redis Cluster集群,当master宕机,主从切换,客户端报错 timed out 二、原因 SpringBoot2.X版本开始Redis默认的连接池都是采用的Lettuce。当节点发生改变后,Letture默认是不会刷新节点拓扑的。 三、解决方案 3.1 方案一:把lettuce换成jedis 只需要在pom.xml里调整一下依赖的引用 <depende

说说HashMap原理吧?

HashMap主要是由数组和链表组成,它不是线程安全的。 核心点就是put插入数据的过程,get查询数据以及扩容的方式。JDK1.7和1.8的主要区别在于头插和尾插方式的修改,头插容易导致HashMap链表死循环,并且1.8后加入红黑树对性能有提升。 put插入数据流程 往map插入元素的时候,首先通过key 进行hash算法,然后与数组长度-1进行与运算((n - 1) & hash),

nginx和gateway的区别

相同点:都是可以实现对[api]接口的拦截,负载均衡、反向代理、请求过滤等,可以实现和网关一样的效果。 a、底层实现 [Nginx]采用C语言编写的 [微服务]都是自己语言编写的 比如Gateway就是java写的。 毕竟Gateway属于Java语言编写的, 能够更好对微服务实现扩展功能,相比Nginx如果想实现扩展功能需要结合Nginx+Lua语言等。 b、负载均衡 Nginx实现[负载均衡]

2025年03月12日 Go生态洞察: Go 1.24 中新增os.Root 防遍历文件 API

2025年03月12日 Go生态洞察: Go 1.24 中新增os.Root 防遍历文件 API 摘要 ✨大家好,我是猫头虎。本篇文章将带你深入探索 Go 1.24 中新增的 os.Root API,全面解析路径遍历(Path Traversal)攻击的原理、传统防御方式的局限,以及 os.Root 提供的跨平台