springboot整合redis
1.redis的数据类型,一共有5种.后面结合Jedis和redistemplate,以及单元测试junit一起验证
1)字符串
2)hash
3)列表
4)set(无序集合)
5)zset(有序集合)
2.Jedis的使用
a)引入依赖
<!--加入springboot的starter的起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.1.4.RELEASE</version></dependency>
<!--springboot整合redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.1.4.RELEASE</version></dependency>
<!--jedis依赖--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.1</version></dependency>
<!--lombok依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency>
<!--配置springboot注解执行器用于yml文件提示--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>2.1.4.RELEASE</version></dependency>
<!--springboot整合junit--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.1.4.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-test</artifactId><version>2.1.4.RELEASE</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.6.2</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency></dependencies>
.b)配置yml和启动文件.这里需要注意一下,在使用redis数据库时,是不需要密码验证的.但是在后面配置RedisPoolFactory时,需要配置登录密码.因此,在yml这里需要设置密码,否则在test时会报错.
redis:host: 127.0.0.1password: 123456port: 6379timeout: 6poolMaxTotal: 30poolMaxIdle: 30poolMaxWait: 30
@SpringBootApplication
public class MySpringBootApplication {public static void main(String[] args){SpringApplication.run(MySpringBootApplication.class,args);}}
. 1)同时设置redis的登录密码
redis设置密码
验证登录: auth 123456
设置密码: config set requirepass 123456
.c)编写配置文件注入参数
@Data
@Component
@ConfigurationProperties(prefix = "redis")
public class RedisConfig1 {private String host;private int port;private int timeout; //秒private String password;private int poolMaxTotal; //资源池最大连接数private int poolMaxIdle; //资源池允许最大空闲连接数private int poolMaxWait; //超时时间 s
}
.d)配置RedisPoolFactory
@Service
public class RedisPoolFactory {@Autowiredprivate RedisConfig1 redisConfig1;@Beanpublic JedisPool JedisPoolFactory(){JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();jedisPoolConfig.setMaxTotal(redisConfig1.getPoolMaxTotal());jedisPoolConfig.setMaxIdle(redisConfig1.getPoolMaxIdle());jedisPoolConfig.setMaxWaitMillis(redisConfig1.getPoolMaxWait() * 1000);JedisPool jedisPool = new JedisPool(jedisPoolConfig, redisConfig1.getHost(), redisConfig1.getPort(),redisConfig1.getTimeout(), redisConfig1.getPassword());return jedisPool;}}
.e)编写测试用例
. 1)配置junit测试,注入RedisPoolFactory,RedisTemplate
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MySpringBootApplication.class)
public class TestJedis {@Autowiredprivate RedisPoolFactory redisPoolFactory;@Autowiredprivate RedisTemplate redisTemplate;
}
. 2)测试字符串
@Testpublic void test1(){Jedis jedis = redisPoolFactory.JedisPoolFactory().getResource();//设置字符类型数据System.out.println("设置字符串类型数据");jedis.set("age","11");jedis.set("work","doctor");System.out.println(jedis.get("age"));System.out.println(jedis.get("work"));jedis.del("age","doctor");jedis.close();}
. 3)测试hash
@Testpublic void test1(){Jedis jedis = redisPoolFactory.JedisPoolFactory().getResource();//设置hash类型数据System.out.println("设置hash类型数据");jedis.hset("people1","age","11");jedis.hset("people1","work","teacher");jedis.hset("people1","name","李四");System.out.println(jedis.hget("people1", "age"));System.out.println(jedis.hget("people1","work"));System.out.println(jedis.hget("people1","name"));jedis.del("people1");jedis.close();}
. 4)测试列表
@Testpublic void test1(){Jedis jedis = redisPoolFactory.JedisPoolFactory().getResource();//设置列表类型数据System.out.println("设置列表类型数据");jedis.lpush("person","name","age","work");//左面弹栈List<String> person2 = jedis.lrange("person", 1, 2);for (String s : person2) {System.out.println("获取列表给定范围元素: "+s);}System.out.println("左面弹栈");System.out.println(jedis.lpop("person"));System.out.println(jedis.lpop("person"));System.out.println(jedis.lpop("person"));//获取列表长度System.out.println(jedis.llen("person"));//右面弹栈System.out.println("右面弹栈");System.out.println(jedis.rpop("person"));System.out.println(jedis.rpop("person"));System.out.println(jedis.rpop("person"));jedis.close();}
. 5)测试set
@Testpublic void test1(){Jedis jedis = redisPoolFactory.JedisPoolFactory().getResource();//设置set类型数据 只可以添加元素jedis.sadd("people2", "22", "33", "44","person");System.out.println(jedis.smembers("people2"));jedis.srem("people2","person");System.out.println(jedis.smembers("people2"));jedis.close();}
. 6)测试zset
@Testpublic void test1(){Jedis jedis = redisPoolFactory.JedisPoolFactory().getResource();//设置zset有序集合,排序set 从小到大jedis.zadd("score",92.00,"小明");jedis.zadd("score",69.00,"小兰");jedis.zadd("score",72.00,"小红");System.out.println(jedis.zrange("score",0,2));jedis.close();}
. 7)简单demo,排序学生成绩
@Testpublic void test2(){Jedis jedis = null;try {JedisPool jedisPool = redisPoolFactory.JedisPoolFactory();jedis = jedisPool.getResource();//造数据 学生成绩jedis.zadd("score",78,"小明");jedis.zadd("score",90,"小红");jedis.zadd("score",80,"小蓝");jedis.zadd("score",33,"小东");jedis.zadd("score",69,"小兰");//打印学生排序后的成绩Long scoreLength = jedis.zcard("score");Set<String> zrange = jedis.zrange("score", 0, scoreLength);for (String s : zrange) {System.out.println(s);}}finally {if(jedis != null){jedis.close();}}}
2.RedisTemplate的使用
a)编写配置类,这里没有使用yml文件,采用的序列化机制 Jackson2JsonRedisSerializer
@Configuration
public class RedisConfig extends JCacheConfigurerSupport {@Beanpublic JedisPoolConfig jedisPoolConfig() {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();//控制一个pool可分配多少个jedis实例jedisPoolConfig.setMaxTotal(500);//最大空闲数jedisPoolConfig.setMaxIdle(200);//每次释放连接的最大数目,默认是3jedisPoolConfig.setNumTestsPerEvictionRun(1024);//逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1jedisPoolConfig.setTimeBetweenEvictionRunsMillis(30000);//连接的最小空闲时间 默认1800000毫秒(30分钟)jedisPoolConfig.setMinEvictableIdleTimeMillis(-1);jedisPoolConfig.setSoftMinEvictableIdleTimeMillis(10000);//最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。jedisPoolConfig.setMaxWaitMillis(1500);jedisPoolConfig.setTestOnBorrow(true);jedisPoolConfig.setTestWhileIdle(true);jedisPoolConfig.setTestOnReturn(false);jedisPoolConfig.setJmxEnabled(true);jedisPoolConfig.setBlockWhenExhausted(false);return jedisPoolConfig;}@Beanpublic JedisConnectionFactory connectionFactory(JedisPoolConfig jedisPoolConfig) {RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();redisStandaloneConfiguration.setHostName("127.0.0.1");redisStandaloneConfiguration.setDatabase(0);redisStandaloneConfiguration.setPassword("123456");redisStandaloneConfiguration.setPort(6379);//获得默认的连接池构造器JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jpcb =(JedisClientConfiguration.JedisPoolingClientConfigurationBuilder)JedisClientConfiguration.builder();//指定jedisPoolConifig来修改默认的连接池构造器(真麻烦,滥用设计模式!)jpcb.poolConfig(jedisPoolConfig);//通过构造器来构造jedis客户端配置JedisClientConfiguration jedisClientConfiguration = jpcb.build();//单机配置 + 客户端配置 = jedis连接工厂return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration);}@Beanpublic RedisTemplate<Object, Object> redisTemplate(JedisConnectionFactory connectionFactory) {RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(connectionFactory);//初始化参数和初始化工作redisTemplate.afterPropertiesSet();return redisTemplate;}/*** description: 这里的入参使用了转配方式,由spring注入** @params No such property: code for class: Script1* @return*/@Beanpublic RedisTemplate<String,Object> redisTemplate1(RedisConnectionFactory redisConnectionFactory){//采用jackson2JsonRedisSerializer序列化机制Jackson2JsonRedisSerializer<Object> objectJackson2JsonRedisSerializer =new Jackson2JsonRedisSerializer<>(Object.class);ObjectMapper objectMapper = new ObjectMapper();//配置采用直接处理字段的方式序列化和反序列化objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);//对象映射器启用默认类型objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,ObjectMapper.DefaultTyping.NON_FINAL,JsonTypeInfo.As.PROPERTY);objectJackson2JsonRedisSerializer.setObjectMapper(objectMapper);RedisTemplate<String, Object> template = new RedisTemplate<>();//配置template参数template.setConnectionFactory(redisConnectionFactory);template.setKeySerializer(objectJackson2JsonRedisSerializer);template.setValueSerializer(objectJackson2JsonRedisSerializer);template.setHashKeySerializer(objectJackson2JsonRedisSerializer);template.setHashValueSerializer(objectJackson2JsonRedisSerializer);template.afterPropertiesSet();return template;}
}
. 1)说明:缺少pom
<!--lombok依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version><scope>compile</scope></dependency><!--引入jackson的依赖--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.10.0</version></dependency><dependency>
.b)编写测试用例
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MySpringBootApplication.class)
@ContextConfiguration(classes = {RedisConfig.class})
public class TestRedisTemplate {@Autowiredprivate RedisTemplate redisTemplate;/*** description: 学习redistemplate** @params No such property: code for class: Script1* @return*/@Testpublic void test1(){//字符串数据类型redisTemplate.opsForValue().set("sport","football");System.out.println(redisTemplate.opsForValue().get("sport"));//hash数据类型redisTemplate.opsForHash().put("people","name","小明");redisTemplate.opsForHash().put("people","age",25);redisTemplate.opsForHash().put("people","salary",null);System.out.println(redisTemplate.opsForHash().get("people","name"));System.out.println(redisTemplate.opsForHash().get("people","age"));System.out.println(redisTemplate.opsForHash().get("people","salary"));//列表//左边堆栈redisTemplate.opsForList().leftPushAll("人生能有几时秋","大江东去浪淘尽",666,"醉酒当歌,人生几何");System.out.println(redisTemplate.opsForList().size("人生能有几时秋"));//左边弹栈System.out.println(redisTemplate.opsForList().leftPop("人生能有几时秋"));System.out.println(redisTemplate.opsForList().leftPop("人生能有几时秋"));System.out.println(redisTemplate.opsForList().leftPop("人生能有几时秋"));System.out.println(redisTemplate.opsForList().leftPop("人生能有几时秋"));System.out.println(redisTemplate.opsForList().leftPop("人生能有几时秋"));//set数据类型redisTemplate.opsForSet().add("person","小兰","小明","承瑞","兆雪");redisTemplate.opsForSet().difference("person","星辰大海");redisTemplate.opsForSet().difference("person","万古长灯");redisTemplate.opsForSet().difference("person",666);Set person = redisTemplate.opsForSet().members("person");for (Object o : person) {System.out.println(o);}//zset数据类型 这里的数据是doubleredisTemplate.opsForZSet().add("student","小张",89);redisTemplate.opsForZSet().add("student","小兰",99);redisTemplate.opsForZSet().add("student","小红",79);redisTemplate.opsForZSet().add("student","小明",69);Long num = redisTemplate.opsForZSet().count("student", 90, 100);System.out.println(num);Long numTotal = redisTemplate.opsForZSet().size("student");Set studentRank = redisTemplate.opsForZSet().range("student", 0, numTotal - 1);for (Object o : studentRank) {redisTemplate.opsForList().leftPushAll("studentList",o);}long students = redisTemplate.opsForList().size("studentList");for (long i = 0; i < students; i++) {System.out.println(String.format("第%s名: "+redisTemplate.opsForList().leftPop("studentList"),i+1));}}}
4.使用Jedis和RedisTemplate
a)RedisTemplate的配置比Jedis的配置类似,但是RedisTemplate使用更方便,它可以自动归还redis连接,同时封装的方法也要比Jedis多
相关文章:
springboot整合redis
1.redis的数据类型,一共有5种.后面结合Jedis和redistemplate,以及单元测试junit一起验证 1)字符串 2)hash 3)列表 4)set(无序集合) 5)zset(有序集合) 2.Jedis的使用 a)引入依赖 <!--加入springboot的starter的起步依赖--><dependency><groupId>…...

【Java】Spring Boot下的MVC
文章目录Spring MVC程序开发1. 什么是Spring MVC?1.1 MVC定义1.2 MVC 和 Spring MVC 的关系2. 为什么学习Spring MVC?3. 怎么学习Spring MVC?3.1 Spring MVC的创建和连接3.1.1 创建Spring MVC项目3.1.2 RequestMapping 注解介绍3.1.3 Request…...

【项目精选】 塞北村镇旅游网站设计(视频+论文+源码)
点击下载源码 摘要 城市旅游产业的日新月异影响着村镇旅游产业的发展变化。网络、电子科技的迅猛前进同样牵动着旅游产业的快速成长。随着人们消费理念的不断发展变化,越来越多的人开始注意精神文明的追求,而不仅仅只是在意物质消费的提高。塞北村镇旅游…...

十、Spring IoC注解式开发
1 声明Bean的注解 负责声明Bean的注解,常见的包括四个: ComponentControllerServiceRepository Controller、Service、Repository这三个注解都是Component注解的别名。 也就是说:这四个注解的功能都一样。用哪个都可以。 只是为了增强程序…...

Linux系统GPIO应用编程
目录应用层如何操控GPIOGPIO 应用编程之输出GPIO 应用编程之输入GPIO 应用编程之中断在开发板上测试GPIO 输出测试GPIO 输入测试GPIO 中断测试本章介绍应用层如何控制GPIO,譬如控制GPIO 输出高电平、或输出低电平。应用层如何操控GPIO 与LED 设备一样,G…...

手敲Mybatis-反射工具天花板
历时漫长的岁月,终于鼓起勇气继续研究Mybatis的反射工具类们,简直就是把反射玩出花,但是理解起来还是很有难度的,涉及的内容代码也颇多,所以花费时间也比较浩大,不过当了解套路每个类的功能也好,…...

Java -数据结构,【优先级队列 / 堆】
一、二叉树的顺序存储 在前面我们已经讲了二叉树的链式存储,就是一棵树的左孩子和右孩子 而现在讲的是:顺序存储一棵二叉树。 1.1、存储方式 使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。 一般只适合表示完全二叉树&a…...

Python+Qt指纹录入识别考勤系统
PythonQt指纹录入识别考勤系统如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!前言这篇博客针对<<PythonQt指纹录入识别考勤系统>>编写代码,代码整洁,规则,易读。 学…...

K_A14_004 基于STM32等单片机驱动旋转角度传感器模块 串口与OLED0.96双显示
K_A14_004 基于STM32等单片机驱动旋转角度传感器模块 串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RC旋转角度传感器模块1.2、STM32F103C8T6旋转角度传感器模块五、…...
2023年全国最新机动车签字授权人精选真题及答案12
百分百题库提供机动车签字授权人考试试题、机动车签字授权人考试预测题、机动车签字授权人考试真题、机动车签字授权人证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 11.注册登记前所有机动车都应进行安全技术检验。 答案…...
Linux小黑板(10):信号
我们写在linux系统环境下写一个程序,唔,"它的功能是每隔1s向屏幕打印hello world。"这时,我们在键盘上按出"Ctrl C"后,进程会发生什么??我们清晰地看到,进程已经在我们按出"Ctrl…...

GO 语言基础语法一 (快速入门 Go 语言)
Go语言基础语法一. golang 标识符,关键字,命名规则二. golang 变量三. golang 常量四. golang 数据类型五. golang 布尔类型六. golang 数字类型七. golang 字符串1. go语言字符串字面量2. go语言字符串连接(1). 使用加号(2). 使用 fmt.Sprintf() 函数(3…...

Java高效率复习-SpringMVC[SpringMVC-2]
SpringMVC获取请求参数 SpringMVC获取请求参数的两种方式↓ 通过ServletAPI获取请求参数 将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象 通过request的API——getParameter(String s)方法来获取…...

【前端】一个更底层库-React基础知识点
目录Reat是什么?为什么要使用React类库比较容易学习,API非常少。组件内聚,容易组合原生组件和自定义组件融合渲染状态/属性驱动全局更新commonjs生态圈/工具栏完善React基础知识JSX概述JSX嵌入变量Event事件组合组合CHILDREN总结大家好&#…...
C++ 之枚举类型
文章目录参考描述枚举类型枚举类型枚举变量的声明及定义细节枚举常量的默认初始值枚举常量不可被修改赋值运算枚举常量与数据类型为枚举常量指定数据类型可选择的数据类型特殊的 Bool强枚举类型命名冲突强枚举类型参考 项目描述菜鸟教程C 枚举类型详解精通C (第九版…...

软件测试用例(3)
按照测试对象划分: 一)界面测试: 1)软件只是一种工具,软件和人的信息交流是通过界面来进行的,界面是软件和用户交流的最直接的一层,界面的设计决定了用户对于我们设计软件的第一映像,界面如同人的面孔,具有最吸引用户的…...

Spring——Bean管理-注解方式进行属性注入
Spring针对Bean管理中创建对象提供的注解有哪些?Component:普通Service:业务逻辑层Controller:controller层Repository:dao层用注解的方式是为什么?简化xml方式开发,只需要注解就可以完成在配置…...
【设计模式之美 设计原则与思想:设计原则】20 | 理论六:我为何说KISS、YAGNI原则看似简单,却经常被用错?
上几节课中,我们学习了经典的 SOLID 原则。今天,我们讲两个设计原则:KISS 原则和 YAGNI 原则。其中,KISS 原则比较经典,耳熟能详,但 YAGNI 你可能没怎么听过,不过它理解起来也不难。 理解这两个…...
Java代码弱点与修复之——Copy-paste error(复制粘贴错误)
弱点描述 Copy-paste error,复制粘贴错误。 是指在复制和粘贴代码时产生的错误。这种错误通常是由于程序员在复制代码时未正确编辑所复制的代码或编辑复制后的代码时忘记更改一些值或参数而导致的。复制粘贴错误可能会导致程序逻辑错误、编译错误或运行时错误。 示例代码 …...

Editor.md 的使用方法及图片处理
目录1. 资源下载2. 生成页面2.1 编辑和预览页面2.2 文本渲染页面3. 图片上传3.1 前端配置3.2 后端接口4. 图片粘贴[^2]1. 资源下载 官网下载 gitee 下载 2. 生成页面 2.1 编辑和预览页面 将资源(精简后 Editor.md 资源1)导入项目: 按照官…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...