1.Typora的使用
用的其实就跟博客园写记一样的markdown形式 但我是习惯于win自带的记事本或是直接博客园
但是学学这个软件也挺好 养成写笔记的形式总是强于记忆的
关于破解参考:https://blog.csdn.net/qjkewdmgkq/article/details/139335063 Typora破解
2.Xshell和Xftp的使用
因为 此项目真正使用到了虚拟机的环境测试项目
那自然离不开远程连接软件Xshell和传递文件Xftp
关于使用上手很简单(ps:其实就知道一个 Ctrl+shift+c/v 复制粘贴就好)
正好现在虚拟机或是这几个软件都已开源使用
3.很很重要的就是Linux的学习 这个从来没有重视过的学习
damn 我之前写过的笔记误删了 其实也就是简单一些Linux常用的命令和一些操作
我简单阐述几点:
1.快照(类似于可以后悔)
2.常用的命令:
-
pwd(print working directory)
-
作用
打印当前目录的绝对路径
-
基本语法
pwd
-
案例实操
显示当前工作目录的绝对路径
[root@localhost ~]# pwd /root
-
-
ls(list)
-
作用
列出目录内容
-
基本语法
ls [选项] [目录或是文件]
-
选项说明
选项 功能 -a 全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来 -l 使用较长(详细)的格式列出信息,包含文件的属性与权限等等数据
-
-
cd(change directory)
-
作用
切换路径
-
基本语法
cd [参数]
-
参数说明
参数 功能 cd 绝对路径 切换路径 cd 相对路径 切换路径 cd ~或者cd 回到自己的家目录 cd - 回到上一次所在目录 cd .. 回到当前目录的上一级目录
-
-
mkdir(Make Directory)
-
作用
创建目录
-
基本语法
mkdir [选项] 要创建的目录
-
选项说明
选项 功能 -p 创建多层目录
-
-
cp(copy)
-
作用
复制文件或目录
-
基本语法
cp [选项] source dest
-
选项说明
选项 功能 -r 递归复制整个文件夹 -
参数说明
参数 功能 source 源文件 dest 目标文件
-
-
rm(remove)
-
作用
移除文件或者目录
-
基本语法
rm [选项] deleteFile
-
选项说明
选项 功能 -r 递归删除目录所有内容 -f 强制删除,不提示用户进行确认
-
-
mv(move)
-
作用
移动或重命名文件
-
基本语法
-
移动文件
mv 源文件 目标目录
-
重命名
mv 源文件 目标文件
-
-
-
cat
-
作用
查看文件内容
-
基本语法
cat [选项] 文件
-
选项说明
选项 功能描述 - n 显示所有行的行号,包括空行
-
-
tail
-
作用
输出文件尾部内容
-
基本语法
tail 文件
(功能描述:查看文件后10行内容)tail -n 5 文件
(功能描述:查看文件后5行内容,5可以是任意行数)tail -f 文件
(功能描述:实时追踪该文档的所有更新)
-
选项说明
选项 功能 -n<行数> 输出文件尾部n行内容 -f 显示文件最新追加的内容,监视文件变化
-
3.网络的有关配置
参考之前写过的:https://www.cnblogs.com/gaodiyuanjin/p/18551680
4.MinIO的使用
类似于阿里云的oss存储服务
如果之前学过那个苍穹外卖项目 这个大致一样 开源 也是往“桶”里云存储东西
5.MyBatis Plus的复习
真是学得快忘得快 真正ssm项目 我觉得应该抛弃MyBatis 而去使用Plus可以省略很多
简单来阐述一下:
- 实体类entity
点击查看代码
package com.example.gao.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@TableName("user")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@TableField("name")
private String name;
@TableField("age")
private Integer age;
@TableField("email")
private String email;
}
- mapper接口
点击查看代码
package com.example.gao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.gao.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
@Mapper
@Component
public interface UserMapper extends BaseMapper<User> {
}
- service业务接口
点击查看代码
package com.example.gao.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.gao.entity.User;
public interface UserService extends IService<User> {
}
- serviceImpl业务实现
点击查看代码
package com.example.gao.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.gao.entity.User;
import com.example.gao.mapper.UserMapper;
import com.example.gao.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
关于测试有很多简单的增上改查 都已经有了 直接去使用 省去我们一些xml的sql写
例如:
package com.example.gao.mapper;
import com.example.gao.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class UserMapperTest {
@Autowired
UserMapper userMapper;
//增刪改查
@Test
void cha() {
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
@Test
void zeng() {
User user = User.builder()
.name("高远")
.age(22)
.email("asdasdasd")
.build();
userMapper.insert(user);
}
@Test
void gai() {
User user = userMapper.selectById(1);
user.setName("约翰");
userMapper.updateById(user);
}
@Test
void shan() {
userMapper.deleteById(1);
}
}
这里要说一个最常用 也是新知识
条件构造器Wrapper 用于构建复杂的数据库查询条件
QueryWrapper:专门用于构造查询条件,支持基本的等于、不等于、大于、小于等各种常见操作
它允许你以链式调用的方式添加多个查询条件,并且可以组合使用 and 和 or 逻辑
UpdateWrapper:用于构造更新条件,可以在更新数据时指定条件
与 QueryWrapper 类似,它也支持链式调用和逻辑组合
使用 UpdateWrapper 可以在不创建实体对象的情况下,直接设置更新字段和条件。
还有分页查询也需要学习
具体学习参考:官网 https://baomidou.com/getting-started/
6.缓存Redis
Redis基于内存的键值对结构数据库 Mysql存储在磁盘上 优点内存存储读写性能高
redis.windows.conf配置文件中设置密码 # requirepass (密码foobared)
Redis常用命令:
一:字符串操作命令
SET Key value 设置指定key值
GET Key 获取指定key值
SETEX key seconds value 设置指定key值 并设置过期时间秒
SETNX key value 只有在key不存在时设置key的值
二:哈希操作命令
HSET key field value 将哈希表key字段field的值设为value
HGET key field 获取存储在哈希表中指定字段的值
HDEL key field 删除存储在哈希表中的指定字段
HKEYS key 获取哈希表所有字段
HVALS key 获取哈希表中所有值
三:列表操作命令(有序不唯一)
LPUSH key value1 [value2] 将一个或多个值插入到列表头部
LRANGE key start stop 获取列表指定范围内的元素
RPOP key 移除并获取列表最后一个元素
LLEN key 获取列表长度
四:集合操作命令(无序唯一)
SADD key member1 [member2] 向集合添加一个或多个成员
SMEMBERS key 返回集合中的所有成员
SCARD key 获取集合的成员数
SINTER key1 [key2] 返回给定所有集合的交集
SUNION key1 [key2] 返回所有给定集合的并集
SREM key member1 [member2] 删除集合中一个或多个成员
五:有序集合操作命令(有序唯一 关联一个double分数)
ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员
ZRANGE key start stop [withscores] 通过索引区间返回有序集合中指定区间内的成员
ZINCRBY key increment member 有序集合中对指定成员的分数加上增量increment
ZREM key member [member....] 移除有序集合中的一个或多个成员
六:通用命令
KEYS pattern 查找所有符合给定模式的key
EXISTS key 检查给定key是否存在
TYPE key 返回key所存储的值的类型
DEL key key存在时删除key
RedisTemplate封装了Redis进行交互的各种方法
RedisTemplate和命令行操作序列化不同 会导致产生的key不一致
使用StringRedisTemplate来解决
7.接口业务实现
这个没啥好说的 增删改查业务
8.登陆板块
登录模块:
两种常用的认证方案:
一.session
在服务器端创建一个session对象将标识保存在这个对象中
若用户数量多 就会使服务端受压
借此使用负载均衡(类似中转站) 将各种不同请求发给相应的多台服务器(集群)
此处要使用登陆共享(即将登录的信息存储在Redis中)
二.Token(JWT令牌)
登陆状态保存到客户端 服务器无须保存
客户端发起的每个请求自身携带登陆状态
JWT是一种轻量级的安全传输方式 为一个字符串
由三部分组成 .分隔 header payload(负载) signature(签名)
例如:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJ1c2VybmFtZSI6Ind3dy5iZWpzb24uY29tIiwic3ViIjoiZGVtbyIsImlhdCI6MTczNDUwMDYzNywibmJmIjoxNzM0NTAwNjM3LCJleHAiOjE3MzQ1ODcwMzd9.
HdeGpO61iaiN7ODgpNrYIXuMIJIpHJ5e6cc4UsPDd7g
其实不是什么什么项目做的多厉害多广度就好 最重要的是打好基础那些东西
还有就是 永远保持高度的愿意不断学习能力 那样就可以干成任何事