thumbnail
管程
管程 1. 临界区 临界资源:在多线程环境下共享的资源,但一次只能由一个线程访问或修改 临界区:指一段代码或一段程序片段,其中包含对临界资源的访问和操作 竞态条件:多个线程在临界区内执行,由于代码的执行序列不同而导致结果无法预测,称之为发生了竞态条件 一个程序运行多个线程是没有问题,多个线程读共享资源也没有问题,在多个线程对共享资源读写操作时发生指…
thumbnail
SimpleFramework
🌟 SimpleFramework 🔗 项目源码:GitHub - SimpleFramework | Gitee - SimpleFramework 🛠️ 造轮子项目:从头实现Spring框架 📖 项目简介 Spring框架在Java开发界占据了举足轻重的地位,这主要归功于其易于理解和功能强大的特性。它广泛应用了多种设计模式,为项目提供了规范化的…
thumbnail
线程
线程 1. 创建线程 1.1 继承 Thread 类 步骤 定义一个线程类继承 Thread 类 重写 run 方法,里面是定义线程以后要干啥 new 一个新线程对象 调用 start 方法启动线程(执行的还是run方法) /** * 方法一、通过继承Thread * * @author Enndfp */ public class ThreadD…
进程和线程
进程和线程 1. 进程 进程是计算机中的一个独立执行单元,每个进程都有自己独立的内存空间、代码和数据,是系统进行资源分配的最小单位 进程之间是相互隔离的,一个进程的崩溃通常不会影响其它进程 进程之间通信较为复杂,通常需要使用进程间通信(Inter-Process Communication,IPC)机制,如管道、消息队列、共享内存等 创建和销毁进程…
thumbnail
Redis 分布式缓存
Redis 分布式缓存 基于 Redis 集群解决单机 Redis 存在的问题,单机的 Redis 存在四大问题: 1. 持久化 1.1 RDB 持久化 RDB 全称 Redis Database Backup file(Redis 数据备份文件),也被叫做 Redis 数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当 Redis 实例故…
thumbnail
Redis 通讯协议和内存回收
Redis 通讯协议和内存回收 1. RESP 协议 Redis 是一个 CS 架构的软件,通信一般分两步(不包括 pipeline 和 PubSub): 客户端(client)向服务端(server)发送一条命令 服务端解析并执行命令,返回响应结果给客户端 因此客户端发送命令的格式、服务端响应结果的格式必须有一个规范,这个规范就是通信协议 而在 …
thumbnail
Redis 网络模型
Redis网络模型 1. 用户空间和内核空间 服务器大多都采用 Linux 系统,这里我们以 Linux 为例来讲解: ubuntu 和 Centos 都是 Linux 的发行版,发行版可以看成对 Linux 包了一层壳,任何 Linux 发行版,其系统内核都是 Linux。我们的应用都需要通过 Linux 内核与硬件交互 用户的应用,比如 red…
thumbnail
Redis 数据结构
Redis 数据结构 1. 简单动态字符串 SDS 我们都知道 Redis 中保存的 Key 是字符串,value 往往是字符串或者字符串的集合。可见字符串是 Redis 中最常用的一种数据结构 不过 Redis 没有直接使用 C 语言中的字符串,因为 C 语言字符串存在很多问题: 获取字符串长度的需要通过运算 非二进制安全 不可修改 Redis …
thumbnail
缓存
缓存 1. 基本概念 缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码 // 1. 本地用于高并发 static final ConcurrentHashMap map = new ConcurrentHashMap(); // 2. 用于redis等缓存 static final Cach…
thumbnail
命令
命令 1. 通用命令 通用命令是所有数据类型都可以使用的指令,常见的有: KEYS:查看符合模板的所有 key,不建议在生产环境设备上使用 DEL:删除一个指定的 key EXISTS:判断 key 是否存在 EXPIRE:给一个 key 设置有效期,有效期到期时该 key 会被自动删除 TTL:查看一个 KEY 的剩余有效期 通过 help [c…