🍐1.协议概述 协议是一种约定,通过约定,不同的进程可以对一段数据产生相同的理解,从而可以相互协作,存在进程间通信的程序就一定需要协议。 比如不同表的插头,需要根据不同的国标进行各种转换。如果我们两端进行通信没有约定好协议,那彼此是不知道对方发送的数据是什么意义。
🚒 1.日志作用 日志在软件开发和维护中扮演着至关重要的角色。它不仅帮助开发者追踪程序运行状态,还能在出现问题时提供宝贵的调试信息。通过日志,我们能够了解软件在特定时间点的行为,分析性能瓶颈,甚至预测潜在的系统故障。日志的重要性不言而喻,它就像是软件世界中的“黑匣子”,记录着程序的每一个细微动作。
🚒1.分布式锁概述 1.1 为什么需要分布式锁 通常我们说的锁,指的是单机单进程中多线程环境下,当多个线程同时访问共享资源时,会引发并发访问的问题,可能导致数据不一致或竞态条件。通过使用锁,可以确保一次只有一个线程能够访问共享资源,从而避免这些问题。
🏎️1.内存泄漏概述 1.1 什么是内存泄漏 内存泄漏是在没有自动 gc 的编程语言里面,经常发生的一个问题。 自动垃圾回收(Automatic Garbag
🌶️1.死锁 1.1 死锁的定义 死锁,是指多个线程或者进程在运行过程中因争夺资源而造成的一种僵局,当进程或者线程处于这种僵持状态,若无外力作用,它们将无法再向前推进。 如下图所示,以申请锁资源为例。线程 A 想申请线程 B 的锁,线程 B 想申请线程 C 的锁,线
🍏1.定时器的应用 定时器就像闹钟,可以设定一个时间,然后进入倒计时,到点了提醒我们。同样,应用开发也需要一个定时器,通过设定时间,到点了唤醒程序去执行某项任务。 常见的应用场景有: 1)心跳检测 2)游戏技能冷却 3)倒计时 4) 其他需要延时处理的功能 定时器由两部分组成:容器 + 检测触发机
🍔1. 无锁队列 1.1 什么是无锁队列 无锁队列(Lock-Free Queue)是一种并发数据结构,它允许多个线程在没有锁的情况下进行并发操作。 传统的队列通常通过互斥锁来实现线程安全的操作,但互斥锁在高并
🍇1. CPU缓存结构 1.1 CPU的多级缓存 因为CPU的计算速度非常快,但内存的访问速度相对较慢。因此,如果CPU每次都要从内存读取数据,会造成大量的等待时间,降低整体性能。 通过引入多级缓存,可以在CPU和内存之间建立数据缓存层,将最常用的数据暂时保存在靠近CPU的高速缓存(CPU Cac
⌚️1.数据库连接池 1.1池化技术 在手写线程池一文中,我们简单介绍了什么是线程池、为什么需要线程池、以及如何实现线程池。本文介绍的数据库连接池,与线程池一样,也是利用池化技术来避免频繁创建资源对象,从而减小系统开销。