NoSQL之Redis配置优化

NoSQL之Redis配置优化

  • 一、Redis
    • 1.关系数据库与非关系型数据库
      • 关系型数据库
      • 非关系型数据库
      • 非关系型数据库产生背景
    • 2.Redis基础
      • Redis简介
      • Redis安装部署
      • 配置参数
    • 3.Redis命令工具
      • redis-cli命令行工具
      • redis-benchmark 测试工具
    • 4.Redis数据库常用命令
      • key相关命令
        • (1)keys
        • (2)exists
        • (3)del
        • (4)type
        • (5)rename
        • (6)renamenx
        • (7)dbsize
      • 5.多数据库常用命令
        • (1)多数据库切换
        • (2)多数据库间移动数据
        • (3)清理数据库内数据
  • 二、Redis持久化
    • 1.RDB和AOF的区别
    • 2.RDB和AOF的优缺点
    • 3.Redis持久化配置
    • 4. AOF 重写

一、Redis

Redis 数据库是一个非关系型数据库,在正式学习 Redis 之前,先来了解关系型数据库与非关系型数据库的概念。

1.关系数据库与非关系型数据库

数据库按照数据库的结构可以分为关系型数据库与其他数据库,而这些其他数据库我们将其统称为非关系型数据库。

关系型数据库

关系型数据库是一个结构化的数据库,创建在关系模型基础上,一般面向于记录。它借助于集合代数等数学概念和方法来处理数据库中的数据。关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。现实世界中,各种实体与实体之间的各种联系都可以用关系模型来表示。SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。
主流的关系型数据库包括 0racle、MySQL、SQL Server、Microsoft Access、DB2 等

非关系型数据库

NoSQL(NoSQL = Not 0nly SQL),意思是“不仅仅是 SQL”,是非关系型数据库的总称。主流的 NoSQL 数据库有 Redis、MongBD、Hbase、CouhDB 等等。以上这些非关系型数据库,他们的存储方式、存储结构以及使用的场景都是完全不同的。所以我们认为它是一个非关系型数据库的集合,而不是像关系型数据库一样,是一个统称。换言之,除了主流的关系型数据库以外的数据库,都可以认为是非关系型的。NoSQL 数据库凭借着其非关系型、分布式、开源及横向扩展等优势,被认为是下一代数据库产品。

非关系型数据库产生背景

(1)High performance–对数据库高并发读写需求
Web2.0 网站会根据用户的个性化信息来实时生成动态页面和提供动态信息,因此无法使用动态页面静态化技术。所以数据库的并发负载非常高,一般会达到10000 次/s以上的读写请求。关系型数据库对于上万次的查询请求还是可以勉强支撑的,但出现上万次的写数据请求,硬盘I0 就已经无法承受了。对于普通的 BBS 网站,往往也会存在高并发的写数据请求。
(2)Huge Storage–对海量数据高效存储与访问需求
类似于 Facebook、Friendfeed 这样的 SNS 网站,每天会产生大量的用户动态信息。如 Friendfeed,一个月就会产生不少于 2.5 亿条用户动态信息,对于关系型数据库来说,在一个包含 2.5 亿条记录的表中执行 SQL 查询,查询效率是非常低的。
(3)High Scalability && High Availability–对数据库高可扩展性与高可用
用性需求在 Web 架构中,数据库是最难进行横向扩展的。当应用系统的用户量与访问量与日俱增时,数据库是没办法像Web 服务一样,简单地通过添加硬件和服务器节点来扩展其性能和负载能力的。尤其对于一些需要24 小时对外提供服务的网站来说,数据库的升级与扩展往往伴随着停机维护与数据迁移,其工作量是非常庞大的。

2.Redis基础

Redis简介

Redis(RemoteDictionaryServer,远程字典型)是一个开源的、使用C语言编写的 NoSQL 数据库。Redis 基于内存运行并支持持久化,采用 key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。
Redis 服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis 进程,而 Redis 的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行一个 Redis 进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降;若在同一台服务器上开启多个Redis 进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。即:在实际生产环境中,需要根据实际的需求来决定开启多少个 Redis 进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。若CPU 资源比较紧张,采用单进程即可。
Redis 具有以下几个优点:

具有极高的数据读写速度,数据读取的速度最高可达到110000次/s,数据写入速度最高可达到 81000 次/s。

支持丰富的数据类型,不仅仅支持简单的 key-value 类型的数据,还支持Strings,Lists,Hashes,Sets 及Ordered Sets 等数据类型操作。

支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

原子性,Redis 所有操作都是原子性的。

支持数据备份,即 master-salve 模式的数据备份。

Redis安装部署

Redis 的安装相对于其他服务来说比较简单 。首先需要到 Redis 官网(https://www.redis.io)下载相应的源码软件包,然后上传至 Linux 系统的服务器中进行解压、安装。本章中以 redis-4.0.9.tar.gz为例进行 Redis 服务的安装和配置讲解。
通常情况下,在 Linux 系统中进行源码编译安装,需要先执行./configure进行环境检查与配置,从而生成 Makefile 文件,再执行 make && make install命令进行编译安装。而 Redis 源码包中直接提供了 Makefile 文件,所以在解压完软件包后,可直接进入解压后的软件包目录,执行make与make install命令进行安装。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
make install 只是安装了二进制文件到系统中,并没有启动脚本和配置文件。软件包中默认提供了一个 install_server.sh 脚本文件,通过该脚本文件可以设置 Redis 服务所需要的相关配置文件。当脚本运行完毕,Redis 服务就已经启动,默认侦听端口为 6379。
在这里插入图片描述
在这里插入图片描述
初始化之后自动启动
在这里插入图片描述
Redis 安装完成,可通过 Redis 的服务控制脚本/etc/init.d/redis 6379来对 Redis 服务进行控制,如停止 Redis 服务、启动 Redis 服务、重启 Redis服务、查看 Redis 运行状态。
在这里插入图片描述

配置参数

Redis 主配置文件为/etc/redis/6379.conf,由注释行与设置行两部分组成与大多数 Linux 配置文件一样,注释性的文字以“#”开始,包含了对相关配置内容进行的说明和解释。除了注释行与空行以外的内容即为设置行。可根据生产环境的需求调整相关参数,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
除了上述配置参数外,Redis 主配置文件中还包含很多其它的配置参数,具体内容如表所示。

参数作用
timeout 300当客户端闲置‌300秒‌后关闭连接,指定为0则关闭该功能
dbfilename dump.rdb指定本地数据库文件名为‌dump.rdb‌,为默认值
dir /var/lib/redis/6379指定本地数据库存放目录为‌/var/lib/redis/6379
maxclients 10000设置同一时间最大客户端连接数为‌10000‌,达到限制时Redis会关闭新连接并返回错误信息。如果设置 maxclients0,表示不限制。
rdbcompression yes指定存储至本地数据库时‌启用‌数据压缩,采用LZF算法,关闭可节省CPU但数据库文件会增大
slaveof 当本机为从服务器时,设置主服务的 IP 地址及端口。‌在 Redis 启动时,从服务器会自动从主服务进行数据同步‌。
masterauth 当主服务设置了密码保护时,从服务连接主服务所需的密码。
requirepass foobared指定 Redis 连接密码。如果配置了连接密码,客户端在连接 Redis 时需要通过 ‌AUTH 命令‌ 提供密码,默认关闭。
maxmemory 指定 Redis 最大内存限制。Redis 启动时会加载数据到内存中,达到最大内存后,会先尝试清除已到期或即将到期的 Key。若仍超出限制,则无法进行写入操作,但可读取。Redis 新 VM 机制会将 Key 存放在内存,Value 存放在 Swap 分区。
appendonly no指定是否在每次更新操作后进行日志记录。Redis 默认异步写入磁盘,不开启可能导致断电时数据丢失。因为 Redis 按 save 条件同步数据,所以部分数据可能仅存在于内存中。默认为 no。
appendfilename appendonly.aof指定更新日志文件名,默认为 appendonly.aof。
appendfsync everysec指定更新日志条件:
- ‌no‌:等待操作系统同步数据到磁盘(快)
- ‌always‌:每次更新后手动调用 fsync() 写入磁盘(慢,安全)
- ‌everysec‌:每秒同步一次(折衷,默认值)
activerehashing yes指定是否激活重置哈希,默认为开启。
include /path/to/local.conf指定包含其他配置文件。可在同一主机上多个 Redis 实例间使用同一份配置文件,同时各实例拥有特定配置文件。

3.Redis命令工具

Redis 软件提供了多个命令工具。安装 Redis 服务时,所包含的软件工具会同时被安装到系统中,在系统中可以直接使用。这些命令工具的作用分别如下所示。

redis - server: 用于启动 Redis 的工具
redis - benchmark: 用于检测 Redis 在本机的运行效率
redis - check - aof: 修复 AOF 持久化文件
redis - check - rdb: 修复 RDB 持久化文件
redis - cli: Redis 命令行工具

redis-cli命令行工具

Redis 数据库系统是典型 C/S(客户端 / 服务器端)架构应用,访问其数据库需用专门客户端软件,自带的 redis-cli 命令行工具就是 Redis 服务的客户端软件。使用 redis-cli 连接指定数据库,成功后进入提示符为 “远程主机 IP 地址:端口号>”(如 “127.0.0.1:6379>” )的数据库操作环境,用户可输入操作语句管理数据库,执行 ping 命令可检测 Redis 服务是否启动 。
在这里插入图片描述
以下是提取的内容: 在进行数据库连接操作时,可以通过选项来指定远程主机上的Redis数据库。命令语法为redis - cli - h host - p port - a password,其中 - h指定远程主机、 - p指定Redis服务的端口号、 - a指定密码。若不添加任何选项表示,连接本机上的Redis数据库;若未设置数据库密码可以省略 - a选项。例如执行以下命令可连接到主机为192.168.10.161,端口为6379的Redis数据库,并查看Redis服务的统计信息。若要退出数据库操作环境,执行“exit”或“quit”命令即可返还原来的Shell环境。
在这里插入图片描述
…//省略

在数据库操作环境中,使用 help 命令可以获取命令类型的帮助。有三种获取命令帮助的方式。

help @< group> :获取< group>中的命令列表
help < command>: 获取某个命令的帮助
help < tab>: 获取可能帮助的主题列表

具体操作方法如下所示。
在这里插入图片描述
在这里插入图片描述

redis-benchmark 测试工具

redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。
基本的测试语法为:
redis-benchmark [option] [option value]

在这里插入图片描述
结合上述选项,可以针对某台 Redis 服务器进行性能检测,如执行 redis - benchmark - h 192.168.10.161 -p 6379 -c 100 -n 100000 命令即可向 IP 地址为 192.168.10.161、端口为 6379 的 Redis 服务器发送 100 个并发连接与 100000 个请求测试性能 。 主要介绍了利用 redis - benchmark 命令对特定 Redis 服务器(IP 192.168.10.161 、端口 6379 )进行性能检测的操作及参数含义,-h 指定 IP,-p 指定端口,-c 指定并发连接数,-n 指定请求数
在这里插入图片描述
… …
在这里插入图片描述
测试存取大小为 100 字节的数据包的性能
在这里插入图片描述
测试本机上 Redis 服务在进行 set 与 lpush 操作时的性能
在这里插入图片描述

4.Redis数据库常用命令

前面提到 Redis 数据库采用 key - value(键值对)的数据存储形式。所使用的命令是 set 与 get 命令

set: 存放数据 set key value

get: 获取数据 get key

例如,在 Redis 的命令行模式下执行”set teacher zs”,表示在当前数据库下存放一个 key 为teacher,value 为 zs 的数据,而执行get teacher“命令即可查看刚才存放的数据。
在这里插入图片描述

key相关命令

在 Redis 数据库中,与 key 相关的命令主要包含以下几种。

(1)keys

使用 keys 命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)exists

exists命令可以判断键值是否存在
在这里插入图片描述

(3)del

del 命令可以删除当前数据库的指定 key。
在这里插入图片描述

(4)type

使用 type 命令可以获取 key 对应的 value 值类型
在这里插入图片描述

(5)rename

命令是对已有 key 进行重命名,其命令格式为:rename 源key 目标renamekey。使 用 rename 命令进行重命名时,无论目标 key 是否存在都进行重命名,且源 key 的值会覆盖目标 key 的值。在实际使用过程中,建议先用 exists 命令查看目标 key 是否存在,然后再决定是否执行 rename 命令,以避免覆盖重要数据。
在这里插入图片描述

(6)renamenx

renamenx 命令的作用是对已有 key 进行重命名,并检测新名是否存在。其命令格式与 rename 的命令格式除命令关键字不同外基本相同:renamenx 源 key 目标 key。使用 renamenx 命令进行重命名时,如果目标 key 存在则不进行重命名。
在这里插入图片描述

(7)dbsize

dbsize 命令的作用是查看当前数据库中 key 的数目。
在这里插入图片描述

5.多数据库常用命令

(1)多数据库切换

Redis 支持多数据库,Redis 在没有任何改动的情况下默认包含 16 个数据库,数据库名称是用数字 0-15来依次命名的。使用 select 命令可以进行Redis 的多数据库之间的切换,命令格式为 selectindex,其中 index 表示数据库的序号。而使用 redis-cli 连接 Redis 数据库后,默认使用的是序号为0的数据库。
如下所示,使用 select 命令切换数据库后,会在前端的提示符中显示当前所在的数据库序号如“127.0.0.1:6379[10]>”表示当前使用的是序号为 10 的数据库。若当前使用的数据库是序号为0的数据库,提示符中则不显示序号,如“127.0.0.1:6379>”表示当前使用的是序号为 0 的数据库。
在这里插入图片描述

(2)多数据库间移动数据

Redis 的多数据库在一定程度上是相对独立的,例如在数据库0上面存放king的数据,在其它 1-15 的数据库上是无法査看到的。

在这里插入图片描述
Redis 数据库提供了一个 move 的命令,可以进行多数据库之间的数据移动。命令的基本语法格式为“move key dbindex”。其中“key”表示当前数据库的目标键,“dbindex”表示目标数据库的序号,具体操作方法如下所示。
在这里插入图片描述
在这里插入图片描述

(3)清理数据库内数据

Redis 数据库的整库数据删除主要分为两个部分:清空当前数据库数据,使用FLUSHDB 命令实现:清空所有数据库的数据,使用FLUSHALL命令实现。但是,数据清空操作比较危险,生产环境下一般不建议使用。
在这里插入图片描述
在这里插入图片描述

二、Redis持久化

Redis 是一种高级 key-value 数据库。它跟 Memcached 类似,不过数据可以持久化,而且支持的数据类型很丰富,有字符串、列表、集合和有序集合。支持在服务器端计算集合(difference)等,还支持多种排序功能。所以 Redis 也可以被看成是一个数据结构服务器。

Redis 的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为 “半持久化模式” );也可以把每一次数据变化都写入到一个 append only file(aof)里面(这称为 “全持久化模式” )。

由于 Redis 的数据都存放在内存中,如果没有配置持久化,Redis 重启后数据就全丢失了。所以,需要开启 Redis 的持久化功能,将数据保存到磁盘上,当 Redis 重启后,可以从磁盘中恢复数据。Redis 提供两种方式进行持久化,一种是 RDB 持久化(原理是将 Reids 在内存中的数据库记录定时 dump 到磁盘上的 RDB 持久化),另外一种是 AOF(append only file)持久化(原理是将 Reids 的操作日志以追加的方式写入文件)。那么这两种持久化方式有什么区别呢?在实际使用的时候该如何选择呢?下面简单介绍一下二者的区别

1.RDB和AOF的区别

RDB 持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是 fork 一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储,如图所示。
在这里插入图片描述
AOF 持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录
在这里插入图片描述

2.RDB和AOF的优缺点

RDB优缺点
(1)RDB优点
一旦采用该方式,那么整个 Redis 数据库将只包含一个文件,这对于文件备份而言是非常完美的。比如,计划每个小时归档一次最近 24 小时的数据,同时还要每天归档一次最近 30 天的数据。通过这样的备份策略,一旦系统出现灾难性故障,可以非常容易地进行恢复。

对于灾难恢复而言,RDB 是非常不错的选择。可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上。

性能最大化,对于 Redis 的服务进程而言,在开始持久化时,它唯一需要做的只是 fork 出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行 IO 操作了。

相比于 AOF 机制,如果数据集很大,RDB 的启动效率会更高。

(2)RDB 缺点
如果想保证数据的高可用性,即最大限度的避免数据丢失,那么 RDB 将不是一个很好的选择。因为系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。

由于 RDB 是通过 fork 子进程来协助完成数据持久化工作的,因此当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是 1 秒钟

AOF优缺点
(1)AOF优点
AOF 机制可带来更高数据安全性(数据持久性)。Redis 提供每秒同步、每次修改同步、不同步 3 种同步策略。每秒同步异步完成,效率高,但系统宕机时一秒内修改数据可能丢失;每次修改同步是同步持久化,数据变化立即记录到磁盘,效率最低 。

因对日志文件写入用 append 模式,写入中宕机不破坏已有内容。若操作写一半系统崩溃,Redis 下次启动前可用 redis - check - aof 工具解决数据一致性问题 。

日志过大时,Redis 可自动启用 rewrite 机制。Redis 以 append 模式写修改数据到旧磁盘文件,同时创建新文件记录期间修改命令,rewrite 切换时能更好保证数据安全 。

AOF 包含格式清晰、易理解的日志文件记录所有修改操作,可通过该文件重建数据 。
(2)AOF缺点
相同数据集下,AOF 文件通常比 RDB 文件大,RDB 恢复大数据集速度比 AOF 快 。

因同步策略不同,AOF 运行效率往往慢于 RDB。每秒同步策略效率较高,同步禁用策略效率和 RDB 一样高效 。

二者选择标准:看系统愿牺牲性能换更高缓存一致性(AOF),还是写操作频繁时不用备份换更高性能,待手动运行 save 再备份(RDB)

3.Redis持久化配置

RDB 持久化配置
Redis 会将数据集的快照 dump 到 dump.rdb 文件中。此外,也可以通过配置文件来修改 Redis 服务器 dump 快照的频率。在打开 6379.conf 文件之后,搜索 save,可以看到如下所示配置信息。

背景知识:RDB(Redis DataBase)是 Redis 的一种持久化方式,它按照指定时间间隔将内存中的数据集生成快照并保存到磁盘(即 dump 到 dump.rdb 文件 ),重启 Redis 时可通过加载该文件恢复数据,常用于数据备份、灾难恢复等场景 ,通过配置 save 相关规则(如 “save 900 1” 表示 900 秒内有 1 次修改就触发快照生成 )来控制 RDB 持久化的频率

在这里插入图片描述
在这里插入图片描述

AOF 持久化配置

appendonly no 改为yes 开启 AOF
在这里插入图片描述
在 Redis 的配置文件中存在三种同步方式,它们分别是:
appendfsync always 每次有数据修改发生时都会写入 AOF 文件
appendfsync everysec 每秒钟同步一次,为 AOF 的缺省策略
appendfsync no 从不同步,高效但数据不会被持久化

4. AOF 重写

Redis 会不断地将被执行的命令记录到 AOF 文件里,随着 Redis 持续运行,AOF 文件体积会不断增长,极端情况下可能用尽硬盘可用空间。Redis 重启后需通过重新执行 AOF 文件记录的写命令还原数据集,若 AOF 文件体积过大,还原操作时间会很长。

为解决 AOF 文件体积增大问题,用户可向 Redis 发送 BGREWRITEAOF 命令,该命令通过移除 AOF 文件中的冗余命令来重写 AOF 文件,减小其体积 。

BGREWRITEAOF 工作原理和 BGSAVE 创建快照相似:Redis 会创建子进程,由子进程负责重写 AOF 文件。因用到子进程,快照持久化因创建子进程导致的性能和内存占用问题,在 AOF 持久化中也存在 。

与快照持久化通过设置 save 选项自动执行 BGSAVE 类似,AOF 持久化可通过设置 auto - aof - rewrite - percentage 选项和 auto - aof - rewrite - min - size 选项自动执行 BGREWRITEAOF

举例,若用户为 Redis 设置配置选项 auto - aof - rewrite - percentage 100 和 auto - aof - rewrite - min - size 64mb ,且启动 AOF 持久化,当 AOF 文件体积大于 64MB ,且比上一次重写后的体积大至少一倍(100%)时,Redis 将执行 BGREWRITEAOF 命令。若重写执行过频,可考虑将 auto - aof - rewrite - percentage 选项值设为 100 以上,这会让 Redis 在 AOF 文件体积更大后才执行重写,但也会使 Redis 启动时还原数据集所需时间更长
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86249.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86249.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《HTTP权威指南》 第14章 安全HTTP

安全HTTP需要提供的功能&#xff1a; 服务器认证客户端认证完整性加密效率普适性管理的可扩展性适应性在社会上的可行性 HTTPS HTTPS方案的URL以https://开头&#xff0c;区别于https://。 HTTPS在HTTP的基础上使用SSL或者TLS&#xff08;传输层安全&#xff09;进行加密。 …

Kubernetes、Docker Swarm 与 Nomad 容器编排方案深度对比与选型指导

Kubernetes、Docker Swarm 与 Nomad 容器编排方案深度对比与选型指导 在微服务和云原生时代&#xff0c;容器编排已成为保证应用可用性与扩展性的核心技术。本文将从问题背景出发&#xff0c;深入对比 Kubernetes、Docker Swarm 和 Nomad 三大主流编排方案&#xff0c;分析各自…

c++开源库项目框架汇总

Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL&#xff0c;测试网站在压力下工作的性能&#xff0c;最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁&#xff0c;源…

【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置、高效微调与评估 Qwen2.5-VL

【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置、高效微调与评估 Qwen2.5-VL 1. 引言2. 为什么从 WebUI 转向命令行&#xff1f;3. 准备工作&#xff08;回顾&#xff09;4. 核心&#xff1a;创建并理解训练配置文件4.1 选择并复制基础模板4.2 逐一解析与修改配置文件4.3…

3、NLP黄金九步法(问题定义-数据获取-数据探索)

&#x1f3af; 为什么要学习NLP流程&#xff1f; 想象一下&#xff0c;你要做一道菜&#x1f373;。如果没有清晰的步骤&#xff0c;随便把食材扔进锅里&#xff0c;结果会怎样&#xff1f;NLP项目也是如此&#xff01; 就像做菜有固定流程一样&#xff1a; 买菜 → 洗菜 → …

docker 安装DM8达梦数据库

搭建Docker 环境 查看docker 是否安装 yum list installed | grep docker如若未安装则安装docker 环境 yum -y install docker启动Docker systemctl start docker查看docker启动结果 systemctl status docker搭建达梦数据库 下载镜像 传送门 #导入镜像 docker load -i…

Chrome MCP Server:AI驱动浏览器自动化测试实战「喂饭教程」

Chrome MCP Server:AI驱动浏览器自动化测试实战 一、项目简介二、原理剖析1. 架构总览三、安装1. 环境准备2. 安装步骤2.1 下载 Chrome 扩展2.2 安装 mcp-chrome-bridge2.3 加载扩展2.4 启动 MCP Server2.5 配置 AI 客户端四、Chrome MCP Server API 参考五、用法实战1. 与 AI…

.NET多线程任务实现的几种方法及线程等待全面分析

文章目录 1. 引言2. .NET多线程编程基础2.1 线程概念回顾2.2 .NET线程模型概述 3. 多线程任务实现方法3.1 Thread类实现3.2 ThreadPool实现3.3 Task Parallel Library (TPL)3.4 Parallel类3.5 BackgroundWorker组件3.6 Async/Await模式3.7 各种方法的比较与选择 4. 线程等待机制…

Typecho handsome访客统计插件最新版VistorLoggerPro

文章目录 介绍功能特点页面预览安装及更新方法系统要求使用说明基本使用&#xff08;Handsome主题适用&#xff09; 隐私保护技术实现更新日志最后 介绍 这是一个为 Typecho 博客系统开发的访客统计插件&#xff0c;基于原版的VistorLogger修改版本。该插件提供了详细的访问统…

蓝桥杯备赛篇(上) - 参加蓝桥杯所需要的基础能力 1(C++)

目录 一、&#xff08;工具&#xff09;DevC的安装和使用1.1 DevC介绍1.2 下载1.3 部分使用技巧1.3.1 快捷键介绍1.3.2 调试快捷键 二、第一个C程序2.1 基础程序2.2 main函数2.3 字符串2.4 头文件2.5 cin和cout初识2.6 名字空间 三、注释四、题目练习3.1 输出第二个整数3.2 字符…

Bugku-CTF-web(适合初学者)

今天刷了一下 Bugku-CTF-web 的1-10题&#xff0c;比较简单&#xff0c;比较娱乐&#xff0c;基本上看看源代码就可以了&#xff0c;非常适合初学者。能够学习到base64编码&#xff0c;unicode编码&#xff0c;dirb web目录遍历&#xff0c;SourceLeakHacker 备份文件遍历&…

【实时Linux实战系列】基于实时Linux的音频处理应用开发

在实时系统中&#xff0c;音频处理应用&#xff08;如实时音频效果处理、语音通信等&#xff09;需要低延迟和高精度的时间控制。实时Linux通过优化内核调度和提供高效的I/O操作&#xff0c;能够满足音频处理对实时性的严格要求。掌握基于实时Linux的音频处理应用开发对于开发者…

Linux中信号的三种产生方式

在 Linux 中&#xff0c;信号&#xff08;Signal&#xff09;是一种进程间通信的机制&#xff0c;用于通知进程发生了某种事件。理解信号的来源对于开发可靠、健壮的程序至关重要。本文将介绍三种常见的信号产生方式&#xff0c;包括&#xff1a;kill 命令、键盘输入&#xff0…

Android15启动icon界面的背景图颜色

Android15启动icon界面的背景图颜色 在一加Ace 5启动时有个图标在中间的&#xff0c;它界面的背景图是灰色的&#xff0c;不好看&#xff0c;想改为白色。 解决方案&#xff1a; 在app下的AndroidManifest.xml文件的<application这个标签的android:theme增加&#xff1a;…

用福昕阅读器打开pdf文件,整个程序窗口自动缩小的问题

原因&#xff1a; 这个问题&#xff0c;其实是pdf自带了某个缩放比例&#xff0c;与窗口的比例不一致&#xff0c;因此会进行窗口缩放。 解决方法: 用acrobat&#xff08;我没有找到如何用福昕阅读器进行设置的方法&#xff09;&#xff0c;打开【文档属性】&#xff0c;然后打…

Windows环境Browser-Use平台部署与AI自动化远程访问实现过程

文章目录 前言1. 安装Ollama2. Gemma3模型安装与运行3. 虚拟环境准备3.1 安装Python3.2. 安装conda 4. 本地部署Brower Use WebUI4.1 创建一个新conda环境4.2 克隆存储库4.3 安装依赖环境4.4 安装浏览器自动化工具4.5 修改配置信息 5. 本地运行测试6. 安装内网穿透6.1 配置公网…

React + Umi(Umijs/Max) 搭建项目及配置

文章标题 01 环境准备02 快速构建2.1 参数选项2.2 umix 还是 umijs/max2.3 使用 pnpm &#xff08;推荐&#xff09;2.4 使用 npm 和 yarn2.5 启动项目2.6 启用 Prettier&#xff08;可选&#xff09;2.7 打包部署发布 03 Tailwind CSS 插件&#xff08;可选&#xff09;3.1 安…

JDK 17 中 java.lang.System 常用方法及应用场景

概述 java.lang.System 在 JDK 17 中依然是最核心的系统交互类之一。以下是针对 JDK 17 的常用方法详解&#xff0c;包含新特性和最佳实践。 一、标准 I/O 流&#xff08;更新至 JDK 17&#xff09; 1. 控制台输出 // 传统输出方式&#xff08;仍然可用&#xff09; System…

深入探究Manticoresearch Java API:新增与查询文档实战

引言Java 项目集成 Manticoresearch新增文档操作查询文档操作 SQL 查询API 查询 总结 引言 Manticore Search 是一个使用 C 开发的高性能搜索引擎&#xff0c;创建于 2017 年&#xff0c;其前身是 Sphinx Search。它显著改进了 Sphinx 的功能&#xff0c;修复了数百个错误&am…

Linux远程机器无法连接-------解决方案

笔者这几天碰到linux机器远程ssh 无法连接的情况 背景分析 笔者在linux机器进行测试的时候&#xff0c;偶发突然无法连接机器&#xff0c;如下图所示&#xff0c;vscode的远程连接也无法进行。 telnet也无法登录。 解决方案 笔者的登录场景是这样的&#xff0c;所以怀疑是…