当前位置: 首页 > news >正文

个人博客系统后端 - 用户信息管理功能实现指南(上)

本文记录了如何实现用获取户信息,用户信息更新,用户头像上传三大基础功能
先上接口实现截图:

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

一、项目结构概览
先介绍一下
个人博客系统采用了标准的 Spring Boot 项目结构,用户功能相关的文件主要分布在以下几个目录:

WeblogSystem/
├── src/main/java/com/zxy/weblogsystem/
│   ├── controller/        # 控制器层,处理HTTP请求
│   ├── service/           # 服务层,实现业务逻辑
│   │   └── impl/          # 服务实现类
│   ├── repository/        # 数据访问层,与数据库交互
│   ├── entity/            # 实体类,映射数据库表
│   ├── dto/               # 数据传输对象,用于API交互
│   ├── exception/         # 自定义异常类
│   └── config/            # 配置类
├── src/main/resources/
│   ├── static/            # 静态资源
│   ├── templates/         # 模板文件
│   ├── application.properties  # 应用配置
│   ├── schema.sql         # 数据库表结构
│   └── data.sql           # 初始数据
└── docs/                  # 项目文档

二、用户信息功能实现

  1. 实体类定义
    文件位置:src/main/java/com/zxy/weblogsystem/entity/User.java

功能说明:定义用户实体类,映射数据库中的 users 表。

主要内容:

@Data  // Lombok注解,自动生成getter/setter等方法
@NoArgsConstructor  // 无参构造函数
@AllArgsConstructor  // 全参构造函数
@Entity  // JPA实体类注解
@Table(name = "users")  // 指定表名
public class User {@Id  // 主键@GeneratedValue(strategy = GenerationType.IDENTITY)  // 自增策略private Long id;@Column(nullable = false, unique = true, length = 50)private String username;@Column(nullable = false, length = 100)private String password;@Column(nullable = false, unique = true, length = 100)private String email;@Column(length = 50)private String nickname;@Column(length = 255)private String avatarUrl;  // 头像URL@Column(nullable = false, length = 20)private String role = "USER";@Column(nullable = false)private Integer status = 1;@Column(name = "created_at", nullable = false, updatable = false)private LocalDateTime createdAt;@Column(name = "updated_at", nullable = false)private LocalDateTime updatedAt;@PrePersistprotected void onCreate() {createdAt = LocalDateTime.now();updatedAt = LocalDateTime.now();}@PreUpdateprotected void onUpdate() {updatedAt = LocalDateTime.now();}
}
  1. 数据传输对象(DTO)
    2.1 用户信息DTO
    文件位置:src/main/java/com/zxy/weblogsystem/dto/UserInfoDto.java

功能说明:用于返回用户信息的数据传输对象。

主要内容:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserInfoDto {private Long id;private String username;private String nickname;private String email;private String avatarUrl;private String role;private Integer status;private Integer followersCount;  // 粉丝数private Integer followingCount;  // 关注数private Integer articleCount;    // 文章数private LocalDateTime createdAt;
}

2.2 用户更新DTO
文件位置:src/main/java/com/zxy/weblogsystem/dto/UserUpdateDto.java

功能说明:用于接收用户信息更新请求的数据传输对象。

主要内容:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserUpdateDto {@Size(max = 50, message = "昵称长度不能超过50个字符")private String nickname;@URL(message = "头像URL格式不正确")private String avatarUrl;
}

2.3 API响应DTO
文件位置:src/main/java/com/zxy/weblogsystem/dto/ApiResponse.java

功能说明:统一的API响应格式。

主要内容:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApiResponse<T> {private Integer code;private String message;private T data;public static <T> ApiResponse<T> success(T data) {return new ApiResponse<>(200, "OK", data);}public static <T> ApiResponse<T> success(String message, T data) {return new ApiResponse<>(200, message, data);}public static <T> ApiResponse<T> error(Integer code, String message) {return new ApiResponse<>(code, message, null);}
}
  1. 数据访问层
    文件位置:src/main/java/com/zxy/weblogsystem/repository/UserRepository.java

功能说明:用户数据访问接口,提供数据库操作方法。

主要内容:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {Optional<User> findByUsername(String username);Optional<User> findByEmail(String email);boolean existsByUsername(String username);boolean existsByEmail(String email);
}
  1. 服务层
    4.1 用户服务接口
    文件位置:src/main/java/com/zxy/weblogsystem/service/UserService.java

功能说明:定义用户相关的业务逻辑接口。

主要内容:

public interface UserService {/*** 根据用户ID获取用户信息* @param userId 用户ID* @return 用户详细信息DTO*/UserInfoDto getUserInfo(Long userId);/*** 根据用户ID更新用户信息* @param userId 用户ID* @param userUpdateDto 用户更新信息DTO* @return 更新后的用户信息DTO*/UserInfoDto updateUserInfo(Long userId, UserUpdateDto userUpdateDto);/*** 更新用户头像* @param userId 用户ID* @param avatarUrl 头像URL* @return 更新后的用户信息DTO*/UserInfoDto updateUserAvatar(Long userId, String avatarUrl);
}

4.2 用户服务实现类
文件位置:src/main/java/com/zxy/weblogsystem/service/impl/UserServiceImpl.java

功能说明:实现用户服务接口中定义的业务逻辑。

主要内容:

@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {private final UserRepository userRepository;private final UserFollowRepository userFollowRepository;private final ArticleRepository articleRepository;@Override@Transactional(readOnly = true)public UserInfoDto getUserInfo(Long userId) {// 1. 查询用户基本信息User user = userRepository.findById(userId).orElseThrow(() -> new ResourceNotFoundException("用户不存在,ID: " + userId));// 2. 查询统计数据Integer followersCount = userFollowRepository.countByFollowedId(userId);Integer followingCount = userFollowRepository.countByFollowerId(userId);Integer articleCount = articleRepository.countByAuthorId(userId);// 3. 构建并返回DTOreturn UserInfoDto.builder().id(user.getId()).username(user.getUsername()).nickname(user.getNickname()).email(user.getEmail()).avatarUrl(user.getAvatarUrl()).role(user.getRole()).status(user.getStatus()).followersCount(followersCount).followingCount(followingCount).articleCount(articleCount).createdAt(user.getCreatedAt()).build();}@Override@Transactionalpublic UserInfoDto updateUserInfo(Long userId, UserUpdateDto userUpdateDto) {// 1. 查询用户是否存在User user = userRepository.findById(userId).orElseThrow(() -> new ResourceNotFoundException("用户不存在,ID: " + userId));// 2. 更新用户信息boolean isUpdated = false;// 更新昵称if (userUpdateDto.getNickname() != null && !userUpdateDto.getNickname().isEmpty()) {user.setNickname(userUpdateDto.getNickname());isUpdated = true;}// 3. 保存更新后的用户信息if (isUpdated) {user = userRepository.save(user);}// 4. 查询统计数据并构建返回DTOreturn getUserInfo(userId);}@Override@Transactionalpublic UserInfoDto updateUserAvatar(Long userId, String avatarUrl) {// 1. 查询用户是否存在User user = userRepository.findById(userId).orElseThrow(() -> new ResourceNotFoundException("用户不存在,ID: " + userId));// 2. 更新用户头像URLuser.setAvatarUrl(avatarUrl);// 3. 保存更新后的用户信息userRepository.save(user);// 4. 查询统计数据并构建返回DTOreturn getUserInfo(userId);}
}
  1. 控制器层
    文件位置:src/main/java/com/zxy/weblogsystem/controller/UserController.java

功能说明:处理用户相关的HTTP请求。

主要内容:

@RestController
@RequestMapping("/users")
@RequiredArgsConstructor
public class UserController {private final UserService userService;private final FileService fileService;/*** 获取用户信息*/@GetMapping("/{id}")public ApiResponse<UserInfoDto> getUserInfo(@PathVariable Long id) {UserInfoDto userInfo = userService.getUserInfo(id);return ApiResponse.success(userInfo);}/*** 更新用户信息*/@PutMapping("/{id}")public ApiResponse<UserInfoDto> updateUserInfo(@PathVariable Long id, @Valid @RequestBody UserUpdateDto userUpdateDto) {UserInfoDto updatedUserInfo = userService.updateUserInfo(id, userUpdateDto);return ApiResponse.success("更新成功", updatedUserInfo);}/*** 上传用户头像*/@PostMapping("/{id}/avatar")public ApiResponse<Map<String, String>> uploadAvatar(@PathVariable Long id, @RequestParam("file") MultipartFile file) {// 1. 调用文件服务上传头像String avatarUrl = fileService.uploadAvatar(id, file);// 2. 更新用户头像信息userService.updateUserAvatar(id, avatarUrl);// 3. 返回头像URLMap<String, String> result = new HashMap<>();result.put("avatarUrl", avatarUrl);return ApiResponse.success("上传成功", result);}
}

三、文件上传功能实现

  1. 文件上传配置
    文件位置:src/main/java/com/zxy/weblogsystem/config/FileUploadConfig.java

功能说明:配置文件上传相关参数和静态资源访问。

主要内容:

@Configuration
public class FileUploadConfig implements WebMvcConfigurer {@Value("${file.upload.path:uploads}")private String uploadPath;@Value("${file.access.path:/uploads/}")private String accessPath;@Beanpublic MultipartResolver multipartResolver() {return new StandardServletMultipartResolver();}@Overridepublic void addResourceHandlers(@NonNull ResourceHandlerRegistry registry) {// 确保上传目录存在File uploadDir = new File(uploadPath);if (!uploadDir.exists()) {uploadDir.mkdirs();}// 获取上传目录的绝对路径String absolutePath = uploadDir.getAbsolutePath();// 添加资源处理器,将上传路径映射到访问路径registry.addResourceHandler(accessPath + "**").addResourceLocations("file:" + absolutePath + "/");}
}
  1. 文件上传异常
    文件位置:src/main/java/com/zxy/weblogsystem/exception/FileUploadException.java

功能说明:自定义文件上传异常类。

主要内容:

public class FileUploadException extends RuntimeException {public FileUploadException(String message) {super(message);}public FileUploadException(String message, Throwable cause) {super(message, cause);}
}
  1. 文件服务接口
    文件位置:src/main/java/com/zxy/weblogsystem/service/FileService.java

功能说明:定义文件上传相关的业务逻辑接口。

主要内容:

public interface FileService {/*** 上传头像文件* * @param userId 用户ID* @param file 头像文件* @return 头像访问URL*/String uploadAvatar(Long userId, MultipartFile file);
}
  1. 文件服务实现类
    文件位置:src/main/java/com/zxy/weblogsystem/service/impl/FileServiceImpl.java

功能说明:实现文件上传相关的业务逻辑。

主要内容:

@Service
@RequiredArgsConstructor
public class FileServiceImpl implements FileService {@Value("${file.upload.path:uploads}")private String uploadPath;@Value("${file.access.path:/uploads/}")private String accessPath;private static final List<String> ALLOWED_IMAGE_TYPES = Arrays.asList("image/jpeg", "image/png");@Overridepublic String uploadAvatar(Long userId, MultipartFile file) {// 1. 校验文件是否为空if (file == null || file.isEmpty()) {throw new FileUploadException("上传文件不能为空");}// 2. 校验文件类型String contentType = file.getContentType();if (contentType == null || !ALLOWED_IMAGE_TYPES.contains(contentType)) {throw new FileUploadException("只支持JPG和PNG格式的图片");}// 3. 校验文件大小if (file.getSize() > 2 * 1024 * 1024) { // 2MBthrow new FileUploadException("文件大小不能超过2MB");}try {// 4. 确保上传目录存在File uploadDir = new File(uploadPath);if (!uploadDir.exists()) {uploadDir.mkdirs();}// 5. 创建用户头像目录String userAvatarDir = uploadPath + "/avatars/" + userId;File userDir = new File(userAvatarDir);if (!userDir.exists()) {userDir.mkdirs();}// 6. 生成唯一文件名String originalFilename = file.getOriginalFilename();String fileExtension = originalFilename != null ? originalFilename.substring(originalFilename.lastIndexOf(".")) : ".jpg";String newFilename = UUID.randomUUID().toString() + fileExtension;// 7. 保存文件Path targetPath = Paths.get(userAvatarDir, newFilename);Files.copy(file.getInputStream(), targetPath);// 8. 返回文件访问URLreturn accessPath + "avatars/" + userId + "/" + newFilename;} catch (IOException e) {throw new FileUploadException("文件上传失败: " + e.getMessage());}}
}

四、配置文件

  1. 应用配置
    文件位置:src/main/resources/application.properties

功能说明:配置应用参数,包括数据库连接、文件上传等。

主要内容:

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/weblog?useSSL=false&serverTimezone=UTC&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# JPA配置
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect# 文件上传配置
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=2MB
spring.servlet.multipart.max-request-size=10MB
spring.servlet.multipart.file-size-threshold=0# 文件存储路径配置
file.upload.path=e:/个人博客系统/WeblogSystem/uploads
file.access.path=/uploads/
  1. 数据库表结构
    文件位置:src/main/resources/schema.sql

功能说明:定义数据库表结构。

主要内容:

-- 用户表
CREATE TABLE IF NOT EXISTS users (id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',password VARCHAR(100) NOT NULL COMMENT '密码(加密)',email VARCHAR(100) NOT NULL UNIQUE COMMENT '邮箱',nickname VARCHAR(50) COMMENT '昵称',avatar_url VARCHAR(255) COMMENT '头像URL',role VARCHAR(20) NOT NULL DEFAULT 'USER' COMMENT '角色',status INT NOT NULL DEFAULT 1 COMMENT '状态(0=禁用,1=启用)',created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',INDEX idx_email(email),INDEX idx_username(username)
) COMMENT '用户表';

五、功能测试

  1. 获取用户信息
    请求方法:GET

URL:/users/{id}

示例:GET http://localhost:8080/users/1

响应示例:

{"code": 200,"message": "OK","data": {"id": 1,"username": "admin","nickname": "管理员","email": "admin@example.com","avatarUrl": "/uploads/avatars/1/63675700-ad83-4e05-a64f-2e59f8a16eeb.jpg","role": "ADMIN","status": 1,"followersCount": 0,"followingCount": 0,"articleCount": 0,"createdAt": "2025-04-13T12:00:00"}
}
  1. 更新用户信息
    请求方法:PUT

URL:/users/{id}

请求体:

{"nickname": "新昵称"
}

示例:PUT http://localhost:8080/users/1

响应示例:

{"code": 200,"message": "更新成功","data": {"id": 1,"username": "admin","nickname": "新昵称","email": "admin@example.com","avatarUrl": "/uploads/avatars/1/63675700-ad83-4e05-a64f-2e59f8a16eeb.jpg","role": "ADMIN","status": 1,"followersCount": 0,"followingCount": 0,"articleCount": 0,"createdAt": "2025-04-13T12:00:00"}
}
  1. 上传用户头像
    请求方法:POST

URL:/users/{id}/avatar

Content-Type:multipart/form-data

请求参数:

file: 图片文件(支持jpg、png,最大2MB)
示例:POST http://localhost:8080/users/1/avatar

响应示例:

{"code": 200,"message": "上传成功","data": {"avatarUrl": "/uploads/avatars/1/63675700-ad83-4e05-a64f-2e59f8a16eeb.jpg"}
}

六、总结
通过以上实现,完成了用户信息管理的三个主要功能:
获取用户信息:通过用户ID获取用户详细信息,包括基本资料和统计数据
更新用户信息:支持更新用户昵称等基本信息
上传用户头像:支持上传JPG、PNG格式的头像图片,并自动更新用户头像URL

相关文章:

个人博客系统后端 - 用户信息管理功能实现指南(上)

本文记录了如何实现用获取户信息&#xff0c;用户信息更新&#xff0c;用户头像上传三大基础功能 先上接口实现截图&#xff1a; 一、项目结构概览 先介绍一下 个人博客系统采用了标准的 Spring Boot 项目结构&#xff0c;用户功能相关的文件主要分布在以下几个目录&#xff1a…...

CyberAgentAILab 开源数字人项目TANGO,heygen的开源版来了~

简介 TANGO 是 CyberAgentAILab 开源的一项前沿研究成果&#xff0c;其初衷在于探索高效生成模型在实际应用场景中的表现。项目诞生于 CyberAgent 在整合创意与人工智能的实践中&#xff0c;旨在为数字内容生成、交互和实时渲染等领域提供一个高性能、模块化、可扩展的解决方案…...

高等数学同步测试卷 同济7版 试卷部分 上 做题记录 上册期中同步测试卷 A 卷

上册期中同步测试卷A卷 一、单项选择题(本大题共5小题,每小题3分,总计15 分) 1. 2. 3. 4. 5. 二、填空题(本大题共5小题,每小题3分,总计15分) 6. 7. 8. 9. 10. 三、求解下列各题(本大题共5小题,每小题6分&#xff0c;总计30分) 11. …...

4.16 AT好题选做

文章目录 前言[ARC103D] Distance Sums(确定树的形态,trick)[AGC062B] Split and Insert(区间 d p dp dp)[AGC012E] Camel and Oases(状压&#xff0c;可行性dp转最优性dp)[ARC094D] Normalization(trick&#xff0c;转化)[ARC125F] Tree Degree Subset Sum(结论&#xff0c;a…...

数据库-day06

一、实验名称和性质 分类查询 验证 综合 设计 二、实验目的 1&#xff0e;掌握数据查询的Group by &#xff1b; 2&#xff0e; 掌握聚集函数的使用方法。 三、实验的软硬件环境要求 硬件环境要求&#xff1a; PC机(单机) 使用的软件名称、版本号以及模块&#xff1a; …...

基于Flask的漏洞挖掘知识库系统设计与实现

基于Flask的漏洞挖掘知识库系统设计与实现 一、系统架构设计 1.1 整体架构 本系统采用经典的三层Web架构&#xff0c;通过Mermaid图展示的组件交互流程清晰呈现了以下核心模块&#xff1a; 前端展示层&#xff1a;基于Bootstrap5构建响应式界面业务逻辑层&#xff1a;Flask…...

小白从0学习网站搭建的关键事项和避坑指南

以下是针对小白从零学习网站搭建时需要注意的关键事项和避坑指南&#xff0c;帮助你高效学习、少走弯路&#xff1a; 一、学习路径注意事项 不要跳过基础 误区&#xff1a;直接学习框架&#xff08;如 React、Laravel&#xff09;而忽视 HTML/CSS/JS 基础。 正确做法&#xff…...

OpenAI 推出一对 AI 推理模型 o3 和 o4-mini

OpenAI 于 2025 年 4 月 16 日&#xff08;美国东部时间&#xff09;宣布推出两款全新的 AI 推理模型——o3 与 o4-mini&#xff0c;它们能够在给出最终回答前进行思考与推理。 本文中所有的 ChatGPT 服务&#xff0c;由 ChatShare 镜像站 提供&#xff0c;无需担心网络和地区限…...

知识了解03——怎么解决使用npm包下载慢的问题?

1、为什么使用npm下载包会下载的慢 因为使用npm下载包时&#xff0c;默认使用国外服务器进行下载&#xff0c;此时的网络传输需要经过漫长的海底电缆&#xff0c;因此下载速度会变慢 2、怎么解决&#xff1f;&#xff08;切换镜像源&#xff09; &#xff08;1&#xff09;方…...

【网络】IP层的重要知识

目录 1.IP层的作用 2.主机和节点 3.网络层和数据链路层的关系 4.路由控制 4.1.路由控制的过程 4.2. IP地址与路由控制 4.3.路由控制表的聚合 4.4.静态路由和动态路由 4.5.动态路由的基础 5.数据链路的抽象化 5.1.数据链路不同&#xff0c;MTU则相异 5.2.路径MTU发…...

【随身WIFI】随身WiFi Debian系统优化教程

0.操作前必看 本教程基于Debian系统进行优化&#xff0c;有些操作对随身WiFi来说可能会带来负优化&#xff0c;根据需要选择。 所有操作需要在root用户环境下运行&#xff0c;否则都要加sudo 随身wifi Debian系统&#xff0c;可以去某安的随声WiFi模块自行搜索刷机 点赞&am…...

IPCC指南主要变化(各版本)

1996年IPCC国家温室气体清单指南 背景&#xff1a;是IPCC较早发布的指南之一&#xff0c;为国家温室气体清单编制提供了基础方法。 内容&#xff1a;包括了对温室气体排放源和汇的估算方法&#xff0c;涵盖了能源、工业、农业等多个部门。 2006年IPCC国家温室气体清单指南 背…...

关于Diamond机械手的运动学与动力学的推导

1.关于Diamond机械手 &#xff08;1&#xff09;位置模型推导 逆解&#xff1a;机械末端平台的位置与驱动关节之间的关系。 设p点在xy平面的坐标是&#xff08;x&#xff0c;y&#xff09;T&#xff0c;此时根据向量求解 OP等于向量r等于e向xy轴的向量主动臂长度向xy轴的向量…...

@JsonSerialize注解自定义序列化方式

JsonSerialize注解自定义序列化方式 文章目录 JsonSerialize注解自定义序列化方式**前言****创建自定义序列化器****应用自定义序列化器****测试序列化结果****高级用法&#xff1a;全局注册序列化器****关键点解析****常见问题解决****问题1&#xff1a;序列化结果不符合预期*…...

第二篇:linux之Xshell使用及相关linux操作

第二篇&#xff1a;linux之Xshell使用及相关linux操作 文章目录 第二篇&#xff1a;linux之Xshell使用及相关linux操作一、Xshell使用1、Xshell安装2、Xshell使用 二、Bash Shell介绍与使用1、什么是Bash Shell(壳)&#xff1f;2、Bash Shell能干什么&#xff1f;3、平时如何使…...

qt中关于思源雅黑字体的使用

首先&#xff0c;需要下载一份思源雅黑字体&#xff0c;我放在了下面位置&#xff0c;https://download.csdn.net/download/Littlehero_121/90631851 2、关于qt中的使用操作&#xff0c;如下&#xff1a; //QString path "绝对路径";QString path QCoreApplicatio…...

用 MongoIndexStore 实现对话存档和恢复 实现“多用户、多对话线程”场景(像一个 ChatGPT 对话列表那样)

用LlamaIndex写两个完整实用的案例&#xff01; 实现如何用 MongoIndexStore 实现对话存档和恢复实现“多用户、多对话线程”场景&#xff08;像一个 ChatGPT 对话列表那样&#xff09; ✅ 案例一&#xff1a;使用 MongoIndexStore 实现对话存档 恢复 单用户 单对话线程&am…...

接口测试:实用指南4.0

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…...

2000-2017年各省国有经济煤气生产和供应业固定资产投资数据

2000-2017年各省国有经济煤气生产和供应业固定资产投资数据 1、时间&#xff1a;2000-2017年 2、来源&#xff1a;国家统计局、能源年鉴 3、指标&#xff1a;行政区划代码、城市、年份、国有经济煤气生产和供应业固定资产投资 4、范围&#xff1a;31省 5、指标说明&#x…...

AOP的基本应用案例---统计每个函数的执行时间

1.导入依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 2.准备好要计算的SpringBoot的项目(本案例以service的实现类为例) 3.编写AOP的代码: package c…...

前端复习遗忘的知识点

这个是我个人平常学习一些博主的东西&#xff0c;如果侵权请联系我或者让我标上博主平台等信息&#xff0c;谢谢&#xff01; 1&#xff1a;如图涉及知识点jq&#xff1a; 1.获取元素 document.getElementById(""); document.getElementsByClassName(); document.g…...

Unity3d 6(6000.*.*)版本国区下载安装参考

前言 Unity3d 6.是最新的版本&#xff0c;是与来自世界各地的开发者合作构建、测试和优化的成果&#xff0c;现在可以完全投入生产&#xff0c;是我们迄今为止性能最出色、最稳定的 Unity 版本。Unity 6 有许多令人兴奋的新工具和功能&#xff1a;端到端多人游戏工作流程将加速…...

【JavaEE】Maven配置

一、Maven简介 什么是Maven&#xff1f; Maven是一个基于项目对象模型&#xff08;POM&#xff09;构建的自动化工具&#xff0c;主要用于Java项目构建、依赖管理和项目信息管理 我理解的Maven&#xff1a;自动下载和管理“代码零件”&#xff08;比如别人写好的工具包&#x…...

Java排序算法百科全书:原理、实现与实战指南

一、排序算法全景视图 1. 算法分类体系 graph TDA[排序算法] --> B[比较排序]A --> C[非比较排序]B --> B1[基本排序]B1 --> B11[冒泡排序]B1 --> B12[选择排序]B1 --> B13[插入排序]B --> B2[高效排序]B2 --> B21[快速排序]B2 --> B22[归并排序]…...

大模型在教育领域的五大应用

大模型在教育领域的五大应用 随着人工智能技术的迅猛发展&#xff0c;特别是大模型&#xff08;如GPT-3、BERT等&#xff09;的出现&#xff0c;教育领域正迎来一场前所未有的变革。大模型不仅能够处理复杂的自然语言任务&#xff0c;还能够通过深度学习算法理解和生成高质量的…...

Lesson 12 Goodbye and good luck

Lesson 12 Goodbye and good luck 词汇 luck n. 运气&#xff0c;幸运 相关&#xff1a;lucky a. 幸运的    luckily ad. 幸运地    unlucky a. 不幸的 搭配&#xff1a;lucky number 幸运数字    lucky color 幸运色    lucky day 幸运日    lucky dog 幸运儿…...

数据结构-前缀树

一、引言 前缀树又叫字典树&#xff0c;可以快速查找字符串或字符串前缀出现的次数&#xff0c;方便进行前缀匹配、词频统计 二、字典树模型 现有一个字典树&#xff0c;里面有money、mother、salary、salary、say五个单词 其中根节点位置还没有字符&#xff0c;相当于空串&am…...

搭建 vue 项目环境详细步骤

在平常的开发工作中&#xff0c;我们经常需要对项目进行打包&#xff0c;后端项目打包及部署在前面总结过。那么&#xff0c;现在前端基本都是 vue 项目&#xff0c;那么应该如何搭建一个 vue 环境呢&#xff1f;下载一个前端项目应该如何启动呢&#xff1f;今天&#xff0c;我…...

【2025最新版】火鸟门户v8.5系统源码+PC、H5、小程序 +数据化大屏插件

一.介绍 火鸟地方门户系统V8.5源码 系统包含4端&#xff1a; PCH5小程序APP 二.搭建环境 系统环境&#xff1a;CentOS、 运行环境&#xff1a;宝塔 Linux 网站环境&#xff1a;Nginx 1.2.22 MySQL 5.6 PHP-7.4 常见插件&#xff1a;fileinfo &#xff1b; redis 三.测…...

【eNSP实验】OSPF单区域配置

简介 OSPF&#xff08;开放最短路径优先&#xff09;是一种基于链路状态算法的内部网关协议&#xff08;IGP&#xff09;&#xff0c;用于自治系统内部动态路由。其核心机制为&#xff1a;各路由器通过泛洪链路状态通告&#xff08;LSA&#xff09;同步网络拓扑&#xff0c;构…...

e实例性能测评:Intel Xeon Platinum处理器,经济型入门级服务器

阿里云服务器ECS经济型e系列是阿里云面向个人开发者、学生、小微企业&#xff0c;在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器&#xff0c;阿里云百科分享CPU处理器采用Intel Xeon Platinum架构处理器&#xff0c;支持1:1、1:2、1:4多种处理器内存配…...

uniapp APP端 DOM生成图片保存到相册

<template> <view class"container" style"padding-bottom: 30rpx;"> <view class"hdbg pr w100 " style"height: 150rpx;"> <top-bar content分享 Back"Back"></top-b…...

Leetcode刷题 由浅入深之哈希表——242. 有效的字母异位词

目录 &#xff08;一&#xff09;字母异位词的C实现 写法一&#xff08;辅助数组&#xff09; &#xff08;二&#xff09;复杂度分析 时间复杂度 空间复杂度 &#xff08;三&#xff09;总结 【题目链接】242.有效的字母异位词 - 力扣&#xff08;LeetCode&#xff09; …...

Opencv函数及练习题

一、函数整理&#xff1a; 1、cv2.adaptiveThreshold&#xff08;&#xff09; 2、 cv2.split&#xff08;&#xff09; 3、cv2.merge&#xff08;&#xff09; 4、cv2.add&#xff08;&#xff09; 5、cv2.bitwise_and&#xff08;&#xff09; 6、 cv2.inRange&#xff08;&…...

16-算法打卡-哈希表-两个数组的交集-leetcode(349)-第十六天

1 题目地址 349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09;349. 两个数组的交集 - 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a;输入&#xff1a;nu…...

计算机视觉——JPEG AI 标准发布了图像压缩新突破与数字图像取证的挑战及应对策略

概述 今年2月&#xff0c;经过多年旨在利用机器学习技术开发一种更小、更易于传输和存储且不损失感知质量的图像编解码器的研究后&#xff0c;JPEG AI国际标准正式发布。 来自JPEG AI官方发布流&#xff0c;峰值信噪比&#xff08;PSNR&#xff09;与JPEG AI的机器学习增强方法…...

【JavaWeb后端开发01】Maven入门

课程内容&#xff1a; 初始Maven Maven概述 Maven模型 Maven仓库介绍 Maven安装与配置 IDEA集成Maven 依赖管理 单元测试 文章目录 1. 初始Maven1.1 介绍1.2 Maven的作用1.2.1 依赖管理1.2.2 项目构建1.2.3 统一项目结构 2. Maven概述2.1 Maven介绍2.2 Maven模型2.3 Ma…...

【Leetcode】16. 最接近的三数之和

一、题目描述 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums = [-1,2,1,-4], target = 1 输出:2解释: 与 target 最接近…...

目标检测概述

为什么基于卷积网络的目标检测模型在预测后要使用非极大值抑制 基于卷积网络的目标检测模型可能会在目标的相邻区域生成多个相互重叠框&#xff0c;每个框的预测结果都是同一个目标&#xff0c;引起同一目标的重复检测。造成这一现象的原因主要有两个&#xff0c; 基于卷积网络…...

摄影跟拍预定|基于java+vue的摄影跟拍预定管理系统(源码+数据库+文档)

摄影跟拍预定管理系统 目录 基于SprinBootvue的摄影跟拍预定管理系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3摄影师功能模块 4用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…...

--图--

并查集 并查集原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述…...

Python中的count()方法

文章目录 Python中的count()方法基本语法在不同数据类型中的使用1. 列表(List)中的count()2. 元组(Tuple)中的count()3. 字符串(String)中的count() 高级用法1. 指定搜索范围2. 统计复杂元素 注意事项 Python中的count()方法 前言&#xff1a;count()是Python中用于序列类型&a…...

通过gird布局实现div的响应式分布排列

目标&#xff1a;实现对于固定宽度的div盒子在页面中自适应排布&#xff0c;并且最后一行的div盒子可以与前面的盒子对齐。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" con…...

Edge 浏览器推出 Copilot Vision:免费实时解析屏幕内容;Aqua Voice:极速 AI 语音输入工具丨日报

开发者朋友们大家好 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看…...

Linux 防火墙( iptables )

目录 一、 Linux 防火墙基础 1. 防火墙基础概念 &#xff08;1&#xff09;防火墙的概述与作用 &#xff08;2&#xff09;防火墙的结构与匹配流程 &#xff08;3&#xff09;防火墙的类别与各个防火墙的区别 2. iptables 的表、链结构 &#xff08;1&#xff09;规则表 …...

Hook插件

hook插件 1.概念 在JavaScript中&#xff0c;hook是一种能够拦截和修改函数或方法行为的技术。通过使用hook&#xff0c;开发者可以在现有的函数执行前、执行后或者替换函数的实现逻辑。hook目的是找到函数入口以及一些参数变化&#xff0c;便于分析js逻辑。 2.hook的作用&a…...

ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],

因客户机房断电&#xff0c;2台主机和共享存储全部断电&#xff0c;来电后&#xff0c;集群启动正常&#xff0c;实例无法正常启动&#xff0c;手动启动报错如下 SQL > startup; ORACLE instance started. Total System Global Area 3.9551E10 bytes Fixed Size …...

R4打卡——tensorflow实现火灾预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 1.检查GPU import tensorflow as tf import pandas as pd import numpy as npgpus tf.config.list_physical_devices("GPU") if gpus:…...

基于AI大语言模型的历史文献分析在气候与灾害重建领域中的技术应用

随着人工智能技术的快速发展&#xff0c;大语言模型&#xff08;如GPT、BERT等&#xff09;在自然语言处理领域取得了显著进展&#xff0c;特别是在非结构化文本数据的分析方面&#xff0c;极大地拓展了我们的研究视角。这些技术不仅提高了处理和理解文本数据的效率&#xff0c…...

CSS 字体背景波浪

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>字体背景波浪</title><style>/* HTML: <div class"loader"></div> *//* HTML: <div class"loader"…...