<redis-5> 3.3 redis数据类型之列表类型(list)

[b]3.3 列表类型[/b]
[b]3.3.1 介绍[/b]
列表类型(list)可以存储一个[color=red]有序的字符串列表[/color],常用的操作是向列表[b]两端[/b]添加元素,或者获得列表的某一个片段。列表类型内部是使用[color=red]双向链表[/color](double linked list)实现的,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的(和从只有20个元素的列表中获取头部或尾部的10条记录的速度是一样的)。[color=red]不过使用链表的代价是通过索引访问元素比较慢[/color]。

这种特性使列表类型能非常快速地完成关系数据库难以应付的场景:如社交网站的新鲜事,我们关心的只是[b]最新的内容[/b],使用列表类型存储,即使新鲜事的总数达到几千万个,获取其中[b]最新的100条数据也是极快的[/b]。同样因为在两端插入记录的时间复杂度是0(1),列表类型也适合用来记录日志,可以保证加入新日志的速度不会受到已有日志数量的影响。
与散列类型键最多能容纳的字段数量相同,[color=red]一个列表类型键最多能容纳2^32-1个元素[/color]。

[b]3.3.2 命令[/b]
[b]1.向列表两端增加元素[/b]
LPUSH key value [value …]
RPUSH key value [value …]

LPUSH命令用来向列表左边增加元素,返回值表示增加元素后列表的长度。
redis>LPUSH numbers 1
(integer) 1


[b]2.从列表两端弹出元素[/b]
LPOP key
RPOP key

有进有出,LPOP命令可以从列表[b]左边弹出[/b]一个元素。
LPOP命令执行两步操作:
第一步是将列表左边的元素从列表中[color=red]移除[/color];
第二步是返回被移除的元素值。例如,从numbers列表左边弹出一个元素(也就是"3"):
redis>LPOP numbers
"3"

结合上面提到的4个命令可以使用列表类型来[color=red]模拟栈和队列[/color]的操作:如果想把列表当做栈,则搭配使用LPUSH和LPOP或RPUSH和RPOP,如果想当成队列,则搭配使用LPUSH和RPOP或RPUSH和LPOP。

[b]3.获取列表中元素的个数[/b]
LLEN key

当键不存在时LLEN会返回0:
redis>LLEN numbers
(integer) 3

LLEN命令的功能类似SQL语句SELECT COUNT(*) FROM table_name,但是LLEN的[color=red]时间复杂度为0(1)[/color],使用时Redis会直接读取现成的值,而不需要像部分关系数据库(如使用InnoDB 存储引擎的MySQL表)那样需要遍历一遍数据表来统计条目数量。

[b]4.获得列表片段[/b]
LRANGE key start stop

LRANGE命令是列表类型最常用的命令之一,它能够获得列表中的某一片段。LRANGE命令将返回索引从start到stop之间的所有元素([b]包含两端的元素[/b])。与大多数人的直觉相同,Redis的列表起始索引为0:
redis>LRANGE numbers 0 2
1) "2"
2) "1"
3) "0"

LRANGE命令在取得列表片段的同时[color=red][b]不会[/b]像LPOP一样删除该片段[/color],另外LRANGE命令与很多语言中用来截取数组片段的方法slice有一点区别是LRANGE返回的值包含最右边的元素。
LRANGE命令[color=red]支持负索引[/color],[b]表示从右边开始计算序数[/b],如"-1"表示最右边第一个元素,"-2"表示最右边第二个元素,依次类推:
redis>LRANGE numbers -2 -1
1) "1"
2) "0"

[color=red][b]显然,LRANGE numbers 0 -1可以获取列表中的所有元素。[/b][/color]另外一些特殊情况如下。
(1)如果start的索引位置比stop的索引位置靠后,则会返回空列表。
(2)如果stop大于实际的索引范围,则会返回到列表最右边的元素

[b]5.删除列表中指定的值[/b]
LREM key count value

[color=red]LREM命令会删除列表中前count个值为value的元素,返回值是实际删除的元素个数。[/color]根据count值的不同,LREM命令的执行方式会略有差异:
[list]
[*]●当count>0时LREM命令会从列表左边开始删除前count个值为value的元素;
[*]●当count<0时LREM 命令会从列表右边开始删除前|count|个值为value的元素;
[*]●当count=0是LREM命令会删除所有值为value的元素
[/list]

#从右边开始删除第一个值为"2"的元素
redis>LREM numbers -1 2
(integer) 1
redis>LRANGE numbers 0 -1
1) "2"
2) "1"
3) "0"


[b]6. 获得/设置指定索引的元素值[/b]
LINDEX key index
LSET key index value

如果要将列表类型当作数组来用,LINDEX命令是必不可少的。LINDEX命令用来返回指定索引的元素,索引从0开始。如:
redis>LINDEX numbers 0
"2"

如果index是[b]负数[/b]则表示从右边开始计算的索引,最右边元素的索引是-1。例如:
redis>LINDEX numbers -1
"0"


LSET是另一个通过索引操作列表的命令,它会将索引为index的元素赋值为value。例如:
redis>LSET numbers 1 7
OK
redis>LINDEX numbers 1
"7"

注意,这个命令只能修改指定索引元素的值,不能新增。如果index超过了list的下标范围,则会返回错误提示:(error) ERR index out of range

[b]7.只保留列表指定片段[/b]
LTRIM key start end

LTRIM命令可以[color=red]删除指定索引范围之外的所有元素[/color],其指定列表范围的方法和LRANGE命令相同。
[color=red]LTRIM命令常和LPUSH命令一起使用来限制列表中元素的数量,[/color]比如记录日志时我们希望只保留最近的100条日志,则每次加入新元素时调用一次LTRIM命令即可:
LPUSH logs newLog
LTRIM logs 0 99


[b]8.向列表中插入元素[/b]
LINSERT key BEFORE|AFTER pivot value

LINSERT命令首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。
LINSERT命令的返回值是插入后列表的元素个数。示例如下:
redis>LRANGE numbers 0 -1
1) "2"
2) "7"
3) "0"
redis>LINSERT numbers AFTER 7 3
(integer) 4
redis>LRANGE numbers 0 -1
1) "2"
2) "7"
3) "3"
4) "0"
redis>LINSERT numbers BEFORE 2 1
(integer) 5
redis>LRANGE numbers 0 -1
1) "1"
2) "2"
3) "7"
4) "3"
5) "0"


[b]9.将元素从一个列表转到另一个列表R[/b]
RPOPLPUSH source destination

RPOPLPUSH是个很有意思的命令,从名字就可以看出它的功能:[color=red]先执行RPOP命令再执行LPUSH 命令。RPOPLPUSH命令会先从source列表类型键的右边弹出一个元素,然后将其加入到destination列表类型键的左边,并返回这个元素的值,整个过程是原子的。[/color]
采用PyQt5框架与Python编程语言构建图书信息管理平台 本项目基于Python编程环境,结合PyQt5图形界面开发库,设计实现了一套完整的图书信息管理解决方案。该系统主要面向图书馆、书店等机构的日常运营需求,通过模块化设计实现了图书信息的标准化管理流程。 系统架构采用典型的三层设计模式,包含数据存储层、业务逻辑层和用户界面层。数据持久化方案支持SQLite轻量级数据库与MySQL企业级数据库的双重配置选项,通过统一的数据库操作接口实现数据存取隔离。在数据建模方面,设计了包含图书基本信息、读者档案、借阅记录等核心数据实体,各实体间通过主外键约束建立关联关系。 核心功能模块包含六大子系统: 1. 图书编目管理:支持国际标准书号、中国图书馆分类法等专业元数据的规范化著录,提供批量导入与单条录入两种数据采集方式 2. 库存动态监控:实时追踪在架数量、借出状态、预约队列等流通指标,设置库存预警阈值自动提醒补货 3. 读者服务管理:建立完整的读者信用评价体系,记录借阅历史与违规行为,实施差异化借阅权限管理 4. 流通业务处理:涵盖借书登记、归还处理、续借申请、逾期计算等标准业务流程,支持射频识别技术设备集成 5. 统计报表生成:按日/月/年周期自动生成流通统计、热门图书排行、读者活跃度等多维度分析图表 6. 系统维护配置:提供用户权限分级管理、数据备份恢复、操作日志审计等管理功能 在技术实现层面,界面设计遵循Material Design设计规范,采用QSS样式表实现视觉定制化。通过信号槽机制实现前后端数据双向绑定,运用多线程处理技术保障界面响应流畅度。数据验证机制包含前端格式校验与后端业务规则双重保障,关键操作均设有二次确认流程。 该系统适用于中小型图书管理场景,通过可扩展的插件架构支持功能模块的灵活组合。开发过程中特别注重代码的可维护性,采用面向对象编程范式实现高内聚低耦合的组件设计,为后续功能迭代奠定技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 父依赖:Spring Boot 3.3.1 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.3.1</version> <relativePath/> </parent> <!-- 项目基本信息 --> <groupId>com.example</groupId> <artifactId>main</artifactId> <version>0.0.1</version> <name>main</name> <description>为Spring Cloud Alibaba升级铺垫的主服务</description> <!-- 版本管理(统一控制依赖版本,避免冲突) --> <properties> <java.version>17</java.version> <encoding>UTF-8</encoding> <project.build.sourceEncoding>${encoding}</project.build.sourceEncoding> <project.reporting.outputEncoding>${encoding}</project.reporting.outputEncoding> <maven.compiler.encoding>${encoding}</maven.compiler.encoding> <!-- Spring Cloud Alibaba 版本(适配Spring Boot 3.3.x) --> <spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version> <!-- Spring Cloud 版本(与Alibaba配套) --> <spring-cloud.version>2023.0.2</spring-cloud.version> <!-- 第三方工具版本 --> <mybatis-plus.version>3.5.7</mybatis-plus.version> <fastjson2.version>2.0.52</fastjson2.version> <modelmapper.version>3.2.1</modelmapper.version> <jjwt.version>0.11.5</jjwt.version> <redisson.version>3.50.0</redisson.version> <hutool.version>5.8.32</hutool.version> <!-- 统一hutool版本 --> <poi.version>5.4.0</poi.version> <druid.version>1.2.13</druid.version> <minio.version>8.5.12</minio.version> <taos-jdbcdriver.version>3.5.3</taos-jdbcdriver.version> <xxl-job.version>2.4.1</xxl-job.version> <springdoc.version>2.1.0</springdoc.version> <!-- <powerjob.version>5.1.1</powerjob.version>--> <californium.version>3.5.0</californium.version> <wechatpay-sdk.version>0.2.17</wechatpay-sdk.version> <alipay-sdk.version>4.34.0.ALL</alipay-sdk.version> <volc-sdk.version>LATEST</volc-sdk.version> </properties> <!-- 依赖管理(控制Spring Cloud Alibaba及相关组件版本) --> <dependencyManagement> <dependencies> <!-- Spring Cloud Alibaba 核心依赖管理 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Spring Cloud 核心依赖管理 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- gRPC 核心依赖 --> <!-- <dependency>--> <!-- <groupId>net.devh</groupId>--> <!-- <artifactId>grpc-spring-boot-starter</artifactId>--> <!-- <version>3.1.0.RELEASE</version>--> <!-- </dependency>--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <!-- 在 dependencies 部分添加 --> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.70</version> </dependency> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>9.0</version> </dependency> <!-- 一、Spring Boot 核心 Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-annotations-api</artifactId> </exclusion> </exclusions> </dependency> <!-- 新增:强制指定 javax.annotation-api 版本,解决 Resource.lookup() 方法缺失问题 --> <dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.2</version> <scope>provided</scope> <!-- provided 表示由容器提供,但强制声明版本避免冲突 --> </dependency> <!-- WebClient 依赖(响应式HTTP客户端) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <!-- 服务监控,Alibaba生态必备 --> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 二、Spring Cloud Alibaba 核心组件(为升级铺垫) --> <!-- 服务注册与发现(Nacos) --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- 声明式服务调用(OpenFeign) --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!-- 熔断限流(Sentinel,已存在,保留) --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> <!-- 消息队列(RocketMQ,与Alibaba生态兼容) --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-stream-rocketmq</artifactId> <!-- 替换原生rocketmq-starter,适配Alibaba --> </dependency> <!-- 三、安全与认证 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-authorization-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-resource-server</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <!-- JWT工具 --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>${jjwt.version}</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>${jjwt.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>${jjwt.version}</version> <scope>runtime</scope> </dependency> <!-- 四、数据访问 --> <!-- MySQL驱动 --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <!-- MongoDB --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <!-- RedisRedisson作为客户端,已排除原生Redis starter避免冲突) --> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>${redisson.version}</version> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </exclusion> </exclusions> </dependency> <!-- MyBatis-Plus(适配Spring Boot 3--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId> <version>${mybatis-plus.version}</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>${mybatis-plus.version}</version> </dependency> <!-- 数据库连接池(Druid) --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> </dependency> <!-- 五、消息与通信 --> <!-- WebSocket --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <!-- Kafka(如需保留,与RocketMQ并存需注意配置隔离) --> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka-test</artifactId> <scope>test</scope> </dependency> <!-- CoAP协议 --> <dependency> <groupId>org.eclipse.californium</groupId> <artifactId>californium-core</artifactId> <version>${californium.version}</version> </dependency> <!-- 六、工具类 --> <!-- JSON处理(FastJSON2) --> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>${fastjson2.version}</version> </dependency> <!-- 对象转换(ModelMapper) --> <dependency> <groupId>org.modelmapper</groupId> <artifactId>modelmapper</artifactId> <version>${modelmapper.version}</version> </dependency> <!-- Hutool工具集(已包含captcha,移除单独的hutool-captcha) --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> <!-- Excel处理(POI) --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>${poi.version}</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>${poi.version}</version> </dependency> <!-- Lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- 七、业务组件 --> <!-- 文件存储(MinIO) --> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>${minio.version}</version> </dependency> <!-- 时序数据库(TAOS) --> <dependency> <groupId>com.taosdata.jdbc</groupId> <artifactId>taos-jdbcdriver</artifactId> <version>${taos-jdbcdriver.version}</version> </dependency> <!-- 任务调度(XXL-Job) --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>${xxl-job.version}</version> </dependency> <!-- 分布式任务调度(PowerJob) --> <!-- <dependency>--> <!-- <groupId>com.github.kfcfans</groupId>--> <!-- <artifactId>powerjob-client</artifactId>--> <!-- <version>${powerjob.version}</version>--> <!-- </dependency>--> <!-- 八、支付相关 --> <dependency> <groupId>com.github.wechatpay-apiv3</groupId> <artifactId>wechatpay-java</artifactId> <version>${wechatpay-sdk.version}</version> </dependency> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>${alipay-sdk.version}</version> </dependency> <!-- 九、API文档(Swagger) --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>${springdoc.version}</version> </dependency> <!--activiti--> <!-- <dependency>--> <!-- <groupId>org.activiti</groupId>--> <!-- <artifactId>activiti-spring-boot-starter</artifactId>--> <!-- <version>7.1.0.M4</version>--> <!-- </dependency>--> <!-- 十、火山引擎SDK --> <dependency> <groupId>com.volcengine</groupId> <artifactId>volcengine-java-sdk-ark-runtime</artifactId> <version>${volc-sdk.version}</version> </dependency> <dependency> <groupId>com.volcengine</groupId> <artifactId>volc-sdk-java</artifactId> <version>${volc-sdk.version}</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.5.12</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>ffmpeg-platform</artifactId> <version>7.1.1-1.5.12</version> </dependency> </dependencies> <!-- 仓库配置(优先使用阿里云仓库加速) --> <repositories> <repository> <id>aliyun</id> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> <snapshots> <enabled>false</enabled> <!-- 关闭快照版本下载 --> </snapshots> </repository> <!-- Spring Cloud Alibaba 专属仓库(确保依赖下载) --> <repository> <id>spring-cloud-alibaba</id> <name>Spring Cloud Alibaba Repository</name> <url>https://maven.aliyun.com/repository/spring</url> </repository> </repositories> <!-- 构建配置 --> <build> <extensions> <extension> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.7.0</version> </extension> </extensions> <plugins> <!-- <plugin>--> <!-- <groupId>org.xolstice.maven.plugins</groupId>--> <!-- <artifactId>protobuf-maven-plugin</artifactId>--> <!-- <version>0.6.1</version>--> <!-- <configuration>--> <!-- <protocArtifact>com.google.protobuf:protoc:3.21.7:exe:${os.detected.classifier}</protocArtifact>--> <!-- <pluginId>grpc-java</pluginId>--> <!-- <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.51.1:exe:${os.detected.classifier}</pluginArtifact>--> <!-- <!– 生成代码的输出目录 –>--> <!-- <outputDirectory>${project.build.directory}/generated-sources/protobuf</outputDirectory>--> <!-- <clearOutputDirectory>false</clearOutputDirectory>--> <!-- </configuration>--> <!-- <executions>--> <!-- <execution>--> <!-- <goals>--> <!-- <goal>compile</goal> <!– 编译protobuf文件生成消息类 –>--> <!-- <goal>compile-custom</goal> <!– 编译生成gRPC服务类 –>--> <!-- </goals>--> <!-- </execution>--> <!-- </executions>--> <!-- </plugin>--> <!-- Spring Boot 打包插件 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> <!-- 多环境配置 --> <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <spring-boot.run.profiles>dev</spring-boot.run.profiles> </properties> </profile> <profile> <id>prod</id> <properties> <spring-boot.run.profiles>prod</spring-boot.run.profiles> </properties> </profile> </profiles> </configuration> </plugin> <!-- 编译插件(指定Java版本) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> <encoding>${encoding}</encoding> </configuration> </plugin> </plugins> <!-- 资源文件配置 --> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> <include>**/*.yml</include> <!-- 补充yml文件支持 --> </includes> <filtering>false</filtering> <!-- 不启用过滤 --> </resource> <!-- 多环境配置文件过滤 --> <resource> <directory>src/main/resources</directory> <includes> <include>application.properties</include> <include>application-${profiles.active}.properties</include> <include>application-${profiles.active}.yml</include> </includes> <filtering>true</filtering> <!-- 启用变量替换 --> </resource> </resources> </build> <!-- 多环境配置 --> <profiles> <profile> <id>dev</id> <properties> <profiles.active>dev</profiles.active> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>prod</id> <properties> <profiles.active>prod</profiles.active> </properties> </profile> </profiles> </project> 用我的pom帮我实现满足国标(GB/T 35273-2020)要求 核心满足 3 点即可: 加密算法合规:优先使用 AES-256、RSA-2048 及以上、SM4 等国标认可的算法。 密钥管理合规:密钥需与明文数据分离存储,定期轮换,避免密钥泄露。 全流程防护:除了存储加密,传输(SSL/TLS)、使用(脱敏展示)环节也需符合国标要求,形成闭环。
11-07
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值