当前位置: 首页 > news >正文

【Day 57】Linux-Redis

一、Redis 简单介绍

        作用​:在现代应用架构中,Redis 扮演着至关重要的角色,其核心作用体现在作为高性能的缓存服务器,能够显著提升业务的访问速度。通过将频繁访问的数据存储在 Redis 中,应用程序可以避免频繁地访问数据库,从而减少响应时间,提高系统的吞吐量。​

        应用场景:缓存服务器,提升业务的访问速度​

        Redis 作为缓存服务器,适用于多种业务场景,例如电商网站的商品详情页、新闻网站的热门新闻列表、社交应用的用户信息等。在这些场景中,数据的访问频率高,通过 Redis 缓存可以有效减轻数据库的压力,提升用户体验。​

        应该缓存哪些数据?​

  • 静态数据:这类数据不经常发生变化,如网站的静态资源(图片路径、样式表、脚本等)、系统的配置信息等。将静态数据缓存到 Redis 中,可以减少对静态资源服务器的访问,提高加载速度。​

  • 热点数据:指在一定时间内被频繁访问的数据,例如电商平台的促销商品、热门游戏的排行榜数据等。缓存热点数据能够避免数据库因大量重复查询而产生的性能瓶颈。​

  • 具有过期时间的数据:对于一些临时有效的数据,如用户的登录令牌、验证码等,通过设置过期时间,Redis 可以自动对其进行清理,无需人工干预,保证数据的时效性。​

        核心关注点:缓存命中率​

        缓存命中率是衡量 Redis 缓存效果的关键指标,它指的是从缓存中成功获取数据的请求次数与总请求次数的比值。较高的缓存命中率意味着更多的请求可以通过缓存得到响应,从而更好地发挥 Redis 的作用。为了提高缓存命中率,需要合理地选择缓存的数据、设置合适的过期时间,并采用有效的缓存淘汰策略。​

        Redis 特性​

  • 基于内存存储数据:Redis 将数据存储在内存中,这使得它的读写速度非常快,能够达到毫秒级甚至微秒级的响应时间。​

  • 以 key-value 键值对的方式存储数据:这种简单的数据结构使得 Redis 的操作非常高效,同时也支持多种数据类型,如字符串、哈希、列表、集合、有序集合等,能够满足不同的业务需求。​

  • 支持数据持久化存储:Redis 提供了两种数据持久化方式,即 rdb 数据文件和 aof 日志。rdb 方式是在指定的时间间隔内将内存中的数据快照写入磁盘;aof 方式则是将每一个写操作都记录到日志文件中,当 Redis 重启时,可以通过重新执行这些命令来恢复数据。​

  • 支持多实例:可以在同一台服务器上运行多个 Redis 实例,每个实例都有自己独立的配置和数据,从而更好地利用服务器资源。​

  • 主从复制:通过主从复制,可以实现 Redis 数据的备份和读写分离。主节点负责处理写操作,从节点则复制主节点的数据,并负责处理读操作,提高系统的读性能。​

  • 分片集群:当数据量过大时,单个 Redis 实例可能无法满足需求,此时可以采用分片集群的方式,将数据分散存储到多个 Redis 节点上,提高系统的存储容量和处理能力。​

  • 哨兵集群:哨兵集群用于监控 Redis 主从节点的运行状态,当主节点出现故障时,能够自动将从节点升级为主节点,保证系统的高可用性。​

二、Redis 安装部署​

官网文档:Downloads | Redis

    ​1、安装 gcc​。Redis 是用 C 语言开发的,因此在编译安装 Redis 之前,需要先安装 gcc 编译器。​
    [root@localhost ~] yum install -y gcc2、准备 Redis 安装包并解压​
    wget http://download.redis.io/releases/redis-5.0.12.tar.gz # 假设通过wget下载,若已下载可跳过此步​
    [root@localhost ~] tar xf redis-5.0.12.tar.gz 
    [root@localhost ~] cd redis-5.0.12/3、进入解压后的 Redis 目录,进行编译和安装redis。​
    ​[root@localhost redis-5.0.12] make ​
    [root@localhost redis-5.0.12] make PREFIX=/usr/local/redis50 install
    # PREFIX:编译安装时的路径参数,指定 Redis 最终会被安装到什么目录下。
    # install:将编译好的 Redis 可执行程序(如 redis-server、redis-cli 等)、配置文件模板等复制到 PREFIX 指定的目录中。​4、配置环境变量​。为了方便在任何目录下都能使用 Redis 的命令,需要将 Redis 的安装目录添加到系统的环境变量中。
    [root@localhost ~] ​​​​​​vim /etc/profile
    export PATH=$PATH:/usr/local/redis50/bin
    [root@localhost ~] source /etc/prof​ile5、在安装目录下创建 conf 文件夹,并将 Redis 源码目录中的 redis.conf 配置文件复制到该文件夹中。​        
    [root@localhost ~] mkdir -p /usr/local/redis50/conf​ 
    [root@localhost ~] cp redis-5.0.12/redis.conf /usr/local/redis50/conf​/6、修改配置文件,设置 Redis 以守护进程的方式运行(Redis 会在后台运行)。
    [root@localhost ~] vim /usr/local/redis50/conf/redis.conf
    daemonize yes # 将该参数设置为yes,使Redis以守护进程方式运行​7、通过指定配置文件启动服务
    [root@localhost ~] redis-server /usr/local/red​is50/conf​/redis.conf 
    # 73893:C 15 Sep 2025 09:58:25.748 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    # 73893:C 15 Sep 2025 09:58:25.748 # Redis version=5.0.12, bits=64, commit=00000000, modified=0, pid=73893, just started
    # 73893:C 15 Sep 2025 09:58:25.748 # Configuration loaded
    [root@localhost ~] netstat -tunlp​ | grep redis
    # tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      73894/redis-server8、测试数据读写
    [root@localhost ~] redis-cli 
    127.0.0.1:6379> set name Sylvia
    # OK
    127.0.0.1:6379> get name
    # "Sylvia"
    127.0.0.1:6379> set url "http://www.jd.com" EX 10
    # OK
    127.0.0.1:6379> get url
    # "http://www.jd.com"
    127.0.0.1:6379> get url
    # (nil)
    127.0.0.1:6379> get name
    # "Sylvia"
    127.0.0.1:6379> exit9、关闭redis服务
    [root@localhost ~] redis-cli shutdown
    

    ​// 此外,还可以通过杀死 Redis 进程的方式关闭服务,但这种方式可能会导致数据丢失,不推荐使用。

    三、Redis bin 目录解析

    文件名功能说明
    redis-serverRedis 服务器程序,用于启动 Redis 服务的核心进程。
    redis-cli

    Redis 命令行客户端工具,用于连接 Redis 服务并执行命令(如数据读写、配置修改)

    使用方式:redis-cli(连接本地默认服务)

    redis-cli -h 主机IP -p 端口(连接远程服务)

    redis-benchmark

    Redis 性能测试工具,用于模拟多种请求场景(如 GET/SET 操作),测试 Redis 服务的吞吐量、响应时间等性能指标。

    示例:redis-benchmark -c 100 -n 100000(100 个并发客户端,执行 10 万次请求)。

    redis-check-aof

    AOF 日志文件检查和修复工具。当 AOF 文件(持久化日志)因异常损坏时,可通过此工具修复。

    使用方式:redis-check-aof --fix /path/to/appendonly.aof。

    redis-check-rdb

    RDB 快照文件检查和修复工具。当 RDB 文件(内存快照)损坏时,用于检查完整性并尝试修复。

    使用方式:redis-check-rdb /path/to/dump.rdb。

    redis-sentinel

    Redis 哨兵程序,用于监控 Redis 主从集群的状态。当主节点故障时,自动将从节点升级为新主节点,保证集群高可用。

    使用方式:redis-sentinel /path/to/sentinel.conf(指定哨兵配置文件启动)。

    四、Redis 配置文件解析

            Redis 的配置文件(通常为 redis.conf)是管理 Redis 服务行为的核心,包含了监听设置、持久化、安全、性能等多方面的配置。以下是对各配置项的详细解析:

    (一)NETWORK

    1.保护模式(protected-mode)

    • protected-mode yes 
    • 作用:限制未授权的外部连接,增强 Redis 安全性。
    • 触发条件:当满足以下所有条件时,保护模式会拒绝外部连接:
      • 未配置 bind 指令(即监听所有网络接口);
      • 未设置密码(requirepass 未配置);
      • 尝试从非本地(非 127.0.0.1)地址连接。
    • 行为
      • yes(默认):拒绝未授权的外部连接,仅允许本地连接或已授权连接(如配置密码后)。
      • no:关闭保护模式,允许任意地址连接(即使未配置 bind 和密码,公网环境禁用)。
    • 使用建议:生产环境保持 yes,如需外部访问,需配合 bind 限制 IP 并配置密码。

    2.监听地址( bind

    • bind x.x.x.x       // 默认为 127.0.0.1

    • 作用:指定 Redis 服务监听的 IP 地址。默认为 127.0.0.1(仅本地可访问)。

      若需允许远程连接,可修改为服务器的实际 IP(如 192.168.140.10),或设置为 0.0.0.0(监听所有网卡)。
    • 注意:生产环境中不建议设置为 0.0.0.0,需配合密码和防火墙限制访问。

    • protected-mode yes # 默认值,限制未授权的外部连接,增强 Redis 安全性。

    3. 监听端口( port

    • port 6379      // 默认 6379

    • 作用:指定 Redis 服务的端口号,默认 6379(取自 Redis 作者的名字谐音)。

    • port 0:禁用 TCP 监听(仅允许通过 Unix 套接字连接,需同时配置 unixsocket)。

    • 说明:若需运行多个 Redis 实例,需修改端口号避免冲突(如 6380、6381)。

    4. TCP 连接队列长度( tcp-backlog

    • tcp-backlog 511    // 默认511

    • 作用:设置 Redis 接收客户端连接的队列长度,队列满后新连接会被拒绝。

    • 关联系统参数:该值受系统内核参数限制,需同步修改以下参数确保生效:

    # 编辑系统配置文件
    vim /etc/sysctl.conf
    # 系统级别的网卡接收队列长度(需 ≥ tcp-backlog)
    net.core.somaxconn = 1000
    # TCP 三次握手时的半连接队列长度
    net.ipv4.tcp_max_syn_backlog = 1000# 生效配置
    sysctl -p
    
    • 查看所有系统参数:sysctl -a(可用于验证配置是否生效)。

    5.Unix socket

    作用:通过 Unix 套接字(本地进程间通信方式)提供连接,比 TCP 更高效(无网络开销)。

    • # unixsocket /tmp/redis.sock     //套接字文件路径
    • # unixsocketperm 700        //套接字文件权

    使用方式:客户端通过套接字连接

    redis-cli -s /tmp/redis.sock  # 替代 -h 和 -p 参数

    6.客户端空闲超时时间( timeout

    • timeout 30

    • 作用:设置客户端连接的空闲超时时间(单位:秒)。若客户端超过该时间无操作,Redis 会主动关闭连接。

    • 说明:默认值为 0(不超时),建议根据业务场景设置(如 30 秒),避免无效连接占用资源。

    (二)GENERAL 部分

    1. 守护进程模式

    • daemonize yes      // 默认值为 no,建议生产环境设为 yes
    • 作用:控制 Redis 是否以守护进程(后台进程)方式运行。

      • yes:Redis 在后台运行,不占用当前终端,适合生产环境。

      • no:Redis 在前台运行,终端关闭则服务停止,适合调试。

    • 注意:设置为 yes 时,Redis 会自动生成 PID 文件(默认 /var/run/redis.pid,可通过 pidfile 自定义)

    2. 进程监控模式

    • supervised no  
       
    • 作用:配置 Redis 与进程管理工具(如 upstart、systemd)的交互方式,用于监控 Redis 状态。

    • 可选值

      • no:不与任何监控工具交互(默认)。

      • upstart:向 upstart 发送 SIGSTOP 信号,配合 upstart 管理。

      • systemd:向 systemd 写入 READY=1 信号(通过 $NOTIFY_SOCKET 环境变量)。

      • auto:自动检测环境中的 upstart 或 systemd 并适配。

    • 适用场景:仅在使用 systemd/upstart 作为服务管理器时需要修改(如 Linux 系统通过 systemctl 管理 Redis 服务)。

    3 . PID 文件路径( pidfile

    • pidfile /var/run/redis_6379.pid

    • 作用:指定 Redis 进程 ID(PID)的存储文件路径,便于管理进程(如停止、重启服务)。

    • 说明:文件名通常包含端口号(如 redis_6379.pid),便于识别不同实例的进程。

    • 注意

      • 若 daemonize yes 且未指定 pidfile,默认路径为 /var/run/redis.pid。

      • Redis 启动时会尝试创建该文件,若失败(如权限不足),服务仍可正常运行,但无法通过 PID 文件管理进程。

    4. 日志配置(loglevel 和 logfile)

    • 配置格式:

      loglevel warning  # 日志级别
      logfile "/var/log/redis_6379.log"  # 日志文件路径
      
    • 日志级别:

      • debug:详细调试信息(开发环境用)。

      • verbose:普通信息。

      • notice:重要通知。

      • warning:警告信息(生产环境推荐)。

      • 说明:日志文件需确保 Redis 进程有写入权限,便于问题排查。

      • 作用:设置日志输出的详细程度,控制日志信息量。

    • 日志文件路径(logfile)

      • 空字符串(默认):日志输出到标准输出(前台运行时显示在终端,守护进程模式下输出到 /dev/null)。

      • 自定义路径(如 logfile "/var/log/redis/redis_6379.log"):日志写入指定文件,需确保 Redis 对目录有写入权限。

      • 建议:生产环境设置为具体路径(如 /var/log/redis/ 下),便于日志收集和问题排查。

    5. 系统日志配置

    # syslog-enabled no
    # syslog-ident redis
    # syslog-facility local0
    
    • 作用:配置 Redis 是否将日志发送到系统日志(如 /var/log/messages),默认禁用。

    • 参数说明

      • syslog-enabled yes:启用系统日志。

      • syslog-ident:指定日志标识(默认 redis),用于区分不同服务的日志。

      • syslog-facility:指定日志设备(需为 USER 或 LOCAL0-LOCAL7)。

    • 适用场景:需要集中管理日志(如通过 rsyslog 收集)时启用。

    6. 数据库数量(databases

    • databases 16

    • 作用:设置 Redis 支持的数据库数量(编号 0-15),不同数据库可隔离数据(如按业务模块划分)。
    • 使用方式:通过 SELECT <dbid> 命令切换数据库(如 SELECT 7 切换到第 8 个数据库)。

    • 注意:数据库之间完全隔离,同一键名在不同数据库中视为不同键。

      • 不同数据库可隔离不同业务的缓存数据(如数据库 0 存用户信息,数据库 7 存商品信息)。

      • 默认使用数据库 0,可通过 SELECT <编号> 切换:

    7. 启动 Logo(always-show-logo)

    • always-show-logo yes  
    • 作用:控制 Redis 启动时是否显示 ASCII 艺术 Logo(Redis 标志)。
    • 说明

      • 默认仅在前台运行且输出到终端(TTY)时显示 Logo。

      • 设置为 yes 时,无论运行模式如何,启动日志中都会显示 Logo。

    • 实际影响:仅为视觉效果,不影响服务功能。

    (三)SNAPSHOTTING和PERSISTENCE

    Redis 支持两种持久化方式,用于将内存数据保存到磁盘,防止重启后数据丢失。

    (1)RDB 方式(快照持久化)

    • 配置格式:

      # RDB 文件名
      dbfilename dump_6379.rdb
      # RDB 文件存储路径(需手动创建目录)
      dir /usr/local/redis50/data
      
    • 触发方式:

      • 手动触发:通过 bgsave 命令(后台异步执行,不阻塞服务):

        redis-cli -h 192.168.140.10
        192.168.140.10:6379> bgsave
        Background saving started  # 开始后台保存
        
      • 自动触发:通过 save 配置设置触发条件(save <秒数> <修改次数>):

        # 900 秒内有 1 次修改则触发
        save 900 1
        # 300 秒内有 10 次修改则触发
        save 300 10
        # 60 秒内有 10000 次修改则触发
        save 60 10000
        

    (2)AOF 方式(日志持久化)

    • 配置格式:

      # 开启 AOF(默认关闭)
      appendonly yes
      # AOF 文件名
      appendfilename "appendonly_6379.aof"
      
    • 原理:记录每一条写操作到日志文件,重启时通过重放日志恢复数据。

    • 优势:比 RDB 更可靠,数据丢失风险低(可配置每秒或每操作同步一次)。

    (四)SECURITY

    • requirepass foobared          //默认注释(无密码)

    • 作用:设置 Redis 访问密码,增强安全性。

    • 使用方式:客户端连接后需通过 auth 命令认证:

      redis-cli -h 192.168.140.10
      192.168.140.10:6379> auth 123456  # 密码认证
      OK  # 认证成功
      192.168.140.10:6379> set a 10    # 认证后可执行操作
      OK
      

    (五)CLIENTS

    • maxclients 50000        //最大并发连接

    • 作用:限制 Redis 最大客户端连接数,默认无限制(受系统文件描述符限制)。

    • 说明:需根据服务器性能设置(如 50000),避免连接过多导致服务崩溃。

    (六)MEMORY MANAGEMENT 

    (1)内存使用限制

    • # maxmemory <bytes>

    • 作用:设置 Redis 可使用的最大内存(单位:字节)。当内存达到此限制时,Redis 会根据 maxmemory-policy 配置的策略淘汰旧键,或拒绝新的写操作。

    • 使用场景

      • 作为 LRU/LFU 缓存时,限制内存使用以避免占用过多系统资源。

      • 使用 noeviction 策略时,作为实例的硬性内存上限。

    • 注意事项

      • 若节点有从节点(replica),Redis 会从已用内存中扣除用于同步的输出缓冲区大小,避免因网络问题导致的「淘汰循环」(不断淘汰键 → 从节点缓冲区充满 DEL 命令 → 进一步触发淘汰)。

      • 建议为带从节点的主节点设置更低的 maxmemory,预留内存给从节点的输出缓冲区。

    (2)内存淘汰策略

    • # maxmemory 700M     // 最大可用内存(根据服务器内存设置,如 700M)

    • # maxmemory-policy noeviction    //默认值

    当内存达到 maxmemory 限制时,Redis 会根据以下策略选择淘汰键:

    策略

    说明

    volatile-lru

    从设置了过期时间的键中,淘汰「最近最少使用」(LRU)的键

    allkeys-lru

    从所有键中,淘汰「最近最少使用」(LRU)的键

    volatile-lfu

    从设置了过期时间的键中,淘汰「最近访问频率最低」(LFU)的键

    allkeys-lfu

    从所有键中,淘汰「最近访问频率最低」(LFU)的键

    volatile-random

    从设置了过期时间的键中,随机淘汰一个键

    allkeys-random

    从所有键中,随机淘汰一个键

    volatile-ttl

    从设置了过期时间的键中,淘汰「剩余过期时间最短」(TTL 最小)的键

    noeviction

    不淘汰任何键,对写操作返回错误(默认策略)

    • LRU(Least Recently Used):基于「最近使用时间」,淘汰最长时间未被访问的键。

    • LFU(Least Frequently Used):基于「访问频率」,淘汰一段时间内被访问次数最少的键。

    • 两种算法均为近似实现(通过随机采样优化性能),而非精确计算。

    • 推荐策略:

      • 若主要缓存带过期时间的数据,用 volatile-lru 或 volatile-lfu。

      • 若所有数据都可能被淘汰,用 allkeys-lru 或 allkeys-lfu。

    • ​写操作限制:当没有符合条件的键可淘汰时,Redis 会对以下写命令返回错误(读命令不受影响):set、lpush、sadd、hset、zadd 等(完整列表见配置注释)。

    3. 淘汰算法精度调优(maxmemory-samples)

    • # maxmemory-samples 5  # 默认值
    • 作用:设置 LRU/LFU/TTL 算法的采样数量。Redis 会随机抽取指定数量的键,从中选择最符合淘汰条件的键。

    • 权衡

      • 采样数越多(如 10),结果越接近真实的 LRU/LFU,但消耗更多 CPU。

      • 采样数越少(如 3),性能更好,但精度较低。

    • 默认值:5(平衡精度和性能的推荐值)。

    4. 从节点内存策略(replica-ignore-maxmemory)

    • # replica-ignore-maxmemory yes  # 默认值(Redis 5+)
    • 作用:控制从节点是否忽略自身的 maxmemory 配置。
    • 默认行为
      • 从节点默认不执行内存淘汰(忽略自身 maxmemory),仅通过主节点的淘汰操作同步(主节点淘汰键后,发送 DEL 命令给从节点)。
      • 确保主从数据一致性,是推荐配置。
    • 修改建议
      • 需监控从节点内存,避免因从节点内存不足导致 OOM(从节点内存可能因缓冲区或数据结构差异略大于主节点)。
      • 仅当从节点可写,且写入操作是「幂等的」(重复执行结果一致)时,才可关闭此配置(no),允许从节点独立执行淘汰。

    (七)REPLICATION(主从复制)

    用于配置 Redis 主从复制(主库与从库的数据同步),核心配置包括:

    • replicaof <masterip> <masterport>:指定当前实例为从库,设置主库的 IP 和端口(Redis 5.0 前用 slaveof,5.0 后推荐 replicaof)。
    • masterauth <password>:如果主库有密码认证,从库连接主库时需要的密码。
    • replica-read-only yes:设置从库为只读模式(默认 yes,避免从库写入数据)。
    • repl-diskless-sync:是否使用无盘复制(默认 no,开启后从库通过网络直接接收主库数据,不写临时文件)。

    (八)CLUSTER(集群配置)

    当使用 Redis 集群(Redis Cluster)时,相关配置包括:

    • cluster-enabled yes:是否开启集群模式(默认 no)。
    • cluster-config-file:集群配置文件路径(自动生成和更新,记录集群节点信息)。
    • cluster-node-timeout:集群节点超时时间(默认 15000 毫秒,超过此时长未响应则认为节点下线)。
    • cluster-replica-validity-factor:从库选举主库时的有效性因子(默认 10,用于计算超时时间)

    (九)LIMITS(资源限制)

    • maxclients:最大客户端连接数(默认 10000,超过后拒绝新连接)。
    • maxmemory:Redis 可使用的最大内存(默认 0,即不限制,建议根据服务器配置设置)。
    • maxmemory-policy:内存达到上限时的淘汰策略(如 volatile-lru、allkeys-lru 等)。

    (十)SLOW LOG(慢查询日志)

    用于监控和排查慢命令,配置包括:

    • slowlog-log-slower-than:记录执行时间超过多少微秒的命令(默认 10000)。
    • slowlog-max-len:慢查询日志的最大条数(默认 128,超过后覆盖旧日志)。

    (十一)LATENCY MONITOR(延迟监控)

    • latency-monitor-threshold:延迟监控阈值(默认 0,关闭;设置为 N 微秒时,记录超过 N 的延迟事件)。

    文章转载自:

    http://BBsLxVnR.zdsdn.cn
    http://PA9iLvfP.zdsdn.cn
    http://A76K3BLC.zdsdn.cn
    http://DP480sFQ.zdsdn.cn
    http://2Z2ZEdeO.zdsdn.cn
    http://SXlVhGMR.zdsdn.cn
    http://oB7jDHhk.zdsdn.cn
    http://NTp9WUtv.zdsdn.cn
    http://RzLbrpaK.zdsdn.cn
    http://2zN5hqfU.zdsdn.cn
    http://qjlKDWHh.zdsdn.cn
    http://S4f80ECk.zdsdn.cn
    http://P1LWrHjg.zdsdn.cn
    http://WbKqnx1l.zdsdn.cn
    http://6eG2qdNL.zdsdn.cn
    http://RrJ2x3Cb.zdsdn.cn
    http://cHGCDru3.zdsdn.cn
    http://7o5gcVIC.zdsdn.cn
    http://qKr54AHk.zdsdn.cn
    http://ARsmcwmH.zdsdn.cn
    http://EY7WAom6.zdsdn.cn
    http://tkFWzRf4.zdsdn.cn
    http://B7tIaiRW.zdsdn.cn
    http://hgqOi10x.zdsdn.cn
    http://jQKtkXnL.zdsdn.cn
    http://KRT3BhuK.zdsdn.cn
    http://OPi6PqEK.zdsdn.cn
    http://VrPacnxB.zdsdn.cn
    http://Eyz7zv2d.zdsdn.cn
    http://VsCBmNal.zdsdn.cn
    http://www.dtcms.com/a/384528.html

    相关文章:

  • Go语言爬虫:爬虫入门
  • HarmonyOS图表组件库对比:UCharts、VChart、Omni-UI、mcCharts
  • 生活中的花花草草和各色人物
  • HTML属性和值
  • 【STL库】unordered_map/unordered_set 类学习
  • 学习threejs,使用自定义GLSL 着色器,实现水面、粒子特效
  • 机器学习-第二章
  • 贪心算法在SDN流表优化中的应用
  • 植物1区TOP——GWAS eQTL如何精准定位调控棉花衣分的候选基因
  • iOS 灵动岛 ActivityKit 开发实践
  • JVM 垃圾收集器
  • 学习日记-XML-day55-9.14
  • SenseVoice + WebRTC:打造行业级实时语音识别系统的底层原理与架构设计
  • C++ 异常机制深度解析:从原理到实战的完整指南
  • 在 Qoder 等 AI 二创 IDE 里用 VS Code Remote-SSH 的“曲线连接”实战
  • 云计算与大数据技术深入解析
  • 如何用Verdi APP抽出某个指定module的interface hierarchy
  • MySQL 锁机制详解+示例
  • 消息队列的“翻车“现场:当Kafka和RocketMQ遇到异常时会发生什么?
  • 在Cursor上安装检索不到的扩展库cline的方式方法
  • 第二十一章 ESP32S3 IIC_OLED 实验
  • 能取代 transform 的架构目前看来 有哪些
  • 为什么基频是信号速率的1/2?
  • Unity UI坐标说明
  • 微美全息(NASDAQ:WIMI)以声誉混合多层共识,开启区块链共识算法创新篇章
  • LAN9253通过CHIP_MODE改变链路顺序
  • 矩阵运算_矩阵A和向量a的转置T相关
  • C++异步任务处理与消息可靠性保障指南:从基础到实战
  • 总结-十大管理输入输出
  • 【Vue3】09-编写vue时,reactive的使用