任何二进制和子网掩码进行一个与运算 得到是子网ip的话就是属于子网ip的范围
任何数字和一做与运算都是他本身 和0做运算都是0
所以要得到子网ip的话他的前面必须是 192.168.200 最后是0-255之间的范围 0不能取 0是子网本身 255也不能用 因为他是广播地址 真正可以使用 的范围是1-254
使用本机可以接受到虚拟机了
视频中会发生这种情况
是由于防火墙没有关掉 由windows访问虚拟机的话可以直接ping 而虚拟机要直接pingwindows需要关闭防火墙
这样就可以 了 这样就能保证两者网络是互通的了
使用/etc/sysconfig/network-scripts/ifcfg-ens33这个命令行
接着输入这些命令 就变成我们调试的端口了
接着把finalshell也接着改了
开发是server01 部署是server02
部署mysql
wget https://dev.mysql.com/get/mysql80-community-release-el7-9.noarch.rpm
rpm -ivh mysql80-community-release-el7-9.noarch.rpm
接着开始下载mysql 但是直接用yam下载的话他的仓库在国外下载的比较慢
我们可以配置一个国内的镜像
https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-$basearch/
本人虚拟机到这已经卡透了 不想继续下去了 等过两天在继续 52跳过
部署redis
miniio
mybatis plus
只需要在创建好的mapper接口中让他继承basemapper方法 就可以直接调用增删改查
他的mysql语句是由mybatisplus来进行提供的 我们让他把相应的sql语句打印出来
配置一下
然后就会往出打印了
测试类
看文档 其中的saveorupdate方法是 存在即更新 不存在即添加
这样写有提示 可以提升开发效率 减少低级错误 比如敲错
分页插件
这里配置的是要使用的数据库的类型
64
自定义mapper中
mybatisx插件 可以快速生成entity mapper mapper。xml service serviceimpl
minio快速入门
用这个代码去看虚拟机的minio启动起来了没
versioning是万一不小心删除了数据可以恢复
object locking是在删除的时候加锁
quota是限制桶的数据大小
通过这个可以访问到图片
访问的时候被拒绝 了 是因为没有访问的权限
public class App {
public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
try {
//构造MinIO Client
MinioClient minioClient = MinioClient.builder()
.endpoint("http://192.168.10.101:9000")
.credentials("minioadmin", "minioadmin")
.build();
//创建hello-minio桶
boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("hello-minio").build());
if (!found) {
//创建hello-minio桶
minioClient.makeBucket(MakeBucketArgs.builder().bucket("hello-minio").build());
//设置hello-minio桶的访问权限
String policy = """
{
"Statement" : [ {
"Action" : "s3:GetObject",
"Effect" : "Allow",
"Principal" : "*",
"Resource" : "arn:aws:s3:::hello-minio/*"
} ],
"Version" : "2012-10-17"
}""";
minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket("hello-minio").config(policy).build());
} else {
System.out.println("Bucket 'hello-minio' already exists.");
}
//上传图片
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket("hello-minio")
.object("公寓-外观.jpg")
.filename("D:\\workspace\\hello-minio\\src\\main\\resources\\公寓-外观.jpg")
.build());
System.out.println("上传成功");
} catch (MinioException e) {
System.out.println("Error occurred: " + e);
}
}
}
redis
redis把数据保存到内存上的话 会由于断电导致数据的丢失 但是他还将数据备份到了硬盘上 这样就可以在故障发生的时候进行一个恢复
redis存储在内存 mysql存储在磁盘中
ping后面有一个可选参数message 写上test就返回test
计数器的这个场景就是 比如要统计一个视频的播放量 可以将视频id作为key 将视频的播放量作为v
最后的效果是cba
计算共同关注的好友 就是用sinter
spop 就是随机抽奖
由于hash和java对象结构差不多 可以用来做缓存
database就是0-16 咱们默认是0
出现的问题
主要就是redistemplate和客户端使用的序列化方式不同
项目完整的pom.xml文件如下
```xml
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.atguigu</groupId>
<artifactId>hello-knife4j</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hello-knife4j</name>
<description>hello-knife4j</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
```
.
这个代码主要是为了对接口进行分组
在user下的分组到用户信息管理 。。。
@Configuration
public class Knife4jConfiguration {
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.info(new Info()
.title("hello-knife4j项目API")
.version("1.0")
.description("hello-knife4j项目的接口文档"));
}
@Bean
public GroupedOpenApi userAPI() {
return GroupedOpenApi.builder().group("用户信息管理").
pathsToMatch("/user/**").
build();
}
@Bean
public GroupedOpenApi systemAPI() {
return GroupedOpenApi.builder().group("产品信息管理").
pathsToMatch("/product/**").
build();
}
}
4. **启动项目**
启动SpringBoot项目,访问http://localhost:8080/doc.html,观察接口文档。
Tag是注解
@operation(summary==)