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

springboot图书管理系统(一个简单的单体架构项目,适合小白)

期末作业

为了水一水期末作业,打算写一个简易的单体架构图书管理系统。以下为后端主要技术栈(后期可能更新,打算一个星期左右写完吧)。

  • springboot
  • redis
  • mysql
  • springcache
  • springsecurity

数据库设计

第一次从0开始搭建后续可能还会多更新一些表。

-- 角色表
CREATE TABLE Role (role_id INT PRIMARY KEY AUTO_INCREMENT,role_name VARCHAR(50) NOT NULL,description VARCHAR(255)
);INSERT INTO Role (role_name, description) VALUES
('管理员', '拥有全部权限'),
('普通用户', '常规用户权限');-- 用户表
CREATE TABLE User (user_id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) UNIQUE NOT NULL,password VARCHAR(255) NOT NULL,contact_info VARCHAR(100),role_id INT,created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,FOREIGN KEY (role_id) REFERENCES Role(role_id)
);INSERT INTO User (username, password, contact_info, role_id) VALUES
('张三', 'hashed_password_1', 'zhangsan@example.com', 1),
('李四', 'hashed_password_2', 'lisi@example.com', 2),
('王五', 'hashed_password_3', 'wangwu@example.com', 2),
('赵六', 'hashed_password_4', 'zhaoliu@example.com', 2),
('孙七', 'hashed_password_5', 'sunqi@example.com', 2);-- 图书分类表
CREATE TABLE Category (category_id INT PRIMARY KEY AUTO_INCREMENT,category_name VARCHAR(100) NOT NULL,description TEXT
);INSERT INTO Category (category_name, description) VALUES
('小说', '小说类书籍'),
('非小说', '基于真实事实的信息书籍'),
('科幻', '未来和科学内容的书籍'),
('经典', '经典文学书籍'),
('历史', '基于历史事件的书籍');-- 作者表
CREATE TABLE Author (author_id INT PRIMARY KEY AUTO_INCREMENT,author_name VARCHAR(100) NOT NULL,bio TEXT
);INSERT INTO Author (author_name, bio) VALUES
('菲茨杰拉德', '美国小说家,代表作《了不起的盖茨比》'),
('哈珀·李', '美国小说家,著有《杀死一只知更鸟》'),
('乔治·奥威尔', '英国小说家,著有《1984》'),
('赫尔曼·梅尔维尔', '美国小说家,著有《白鲸》'),
('列夫·托尔斯泰', '俄罗斯作家,著有《战争与和平》');-- 图书表
CREATE TABLE Book (book_id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(255) NOT NULL,publisher VARCHAR(100),isbn VARCHAR(20) UNIQUE,category_id INT,author_id INT,stock INT DEFAULT 0,status ENUM('可借', '借出', '丢失', '损坏') DEFAULT '可借',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,FOREIGN KEY (category_id) REFERENCES Category(category_id),FOREIGN KEY (author_id) REFERENCES Author(author_id)
);INSERT INTO Book (title, publisher, isbn, category_id, author_id, stock, status) VALUES
('了不起的盖茨比', '上海译文出版社', '9787544265477', 1, 1, 5, '可借'),
('杀死一只知更鸟', '南海出版公司', '9787544291179', 2, 2, 2, '借出'),
('1984', '人民文学出版社', '9787020115106', 3, 3, 10, '可借'),
('白鲸', '译林出版社', '9787544734804', 1, 4, 3, '损坏'),
('战争与和平', '北京燕山出版社', '9787544283792', 2, 5, 7, '可借');-- 图书标签表
CREATE TABLE Tag (tag_id INT PRIMARY KEY AUTO_INCREMENT,tag_name VARCHAR(50) NOT NULL
);INSERT INTO Tag (tag_name) VALUES
('经典'), ('戏剧'), ('反乌托邦'), ('冒险'), ('历史小说');-- 图书标签关联表
CREATE TABLE BookTags (book_id INT,tag_id INT,PRIMARY KEY (book_id, tag_id),FOREIGN KEY (book_id) REFERENCES Book(book_id),FOREIGN KEY (tag_id) REFERENCES Tag(tag_id)
);INSERT INTO BookTags (book_id, tag_id) VALUES
(1, 1), (2, 2), (3, 3), (4, 4), (5, 5);-- 用户收藏表
CREATE TABLE UserFavorites (user_id INT,book_id INT,favorited_at DATETIME DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (user_id, book_id),FOREIGN KEY (user_id) REFERENCES User(user_id),FOREIGN KEY (book_id) REFERENCES Book(book_id)
);INSERT INTO UserFavorites (user_id, book_id, favorited_at) VALUES
(1, 1, '2024-06-01'),
(2, 2, '2024-06-02'),
(3, 3, '2024-06-03'),
(4, 4, '2024-06-04'),
(5, 5, '2024-06-05');-- 图书评价表
CREATE TABLE BookReview (review_id INT PRIMARY KEY AUTO_INCREMENT,user_id INT,book_id INT,rating INT,review_text TEXT,review_date DATE,created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,FOREIGN KEY (user_id) REFERENCES User(user_id),FOREIGN KEY (book_id) REFERENCES Book(book_id)
);INSERT INTO BookReview (user_id, book_id, rating, review_text, review_date) VALUES
(1, 1, 5, '经典之作,令人难忘', '2024-06-01'),
(2, 2, 4, '情感丰富,发人深省', '2024-06-02'),
(3, 3, 5, '震撼而深刻', '2024-06-03'),
(4, 4, 3, '充满冒险的经典之作', '2024-06-04'),
(5, 5, 4, '引人深思', '2024-06-05');-- 借阅记录表
CREATE TABLE BorrowRecord (borrow_id INT PRIMARY KEY AUTO_INCREMENT,user_id INT,book_id INT,borrow_date DATE,due_date DATE,return_date DATE,is_overdue BOOLEAN DEFAULT FALSE,overdue_fine DECIMAL(5, 2),FOREIGN KEY (user_id) REFERENCES User(user_id),FOREIGN KEY (book_id) REFERENCES Book(book_id)
);INSERT INTO BorrowRecord (user_id, book_id, borrow_date, due_date, return_date, is_overdue, overdue_fine) VALUES
(1, 1, '2024-01-01', '2024-01-15', NULL, FALSE, NULL),
(2, 2, '2024-02-01', '2024-02-15', NULL, TRUE, 10.00),
(3, 3, '2024-03-01', '2024-03-15', '2024-03-20', TRUE, 5.00),
(4, 4, '2024-04-01', '2024-04-15', NULL, FALSE, NULL),
(5, 5, '2024-05-01', '2024-05-15', NULL, FALSE, NULL);

实体类的创建

1. Role 实体类

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(description = "角色实体")
public class Role {@ApiModelProperty(value = "角色ID", required = true)private Integer roleId;@ApiModelProperty(value = "角色名称", required = true)private String roleName;@ApiModelProperty(value = "角色描述")private String description;
}

2. User 实体类

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import java.time.LocalDateTime;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(description = "用户实体")
public class User {@ApiModelProperty(value = "用户ID", required = true)private Integer userId;@ApiModelProperty(value = "用户名", required = true)private String username;@ApiModelProperty(value = "用户密码", required = true)private String password;@ApiModelProperty(value = "联系信息")private String contactInfo;@ApiModelProperty(value = "角色ID")private Integer roleId;@ApiModelProperty(value = "创建时间")private LocalDateTime createdAt;@ApiModelProperty(value = "更新时间")private LocalDateTime updatedAt;
}

3. Category 实体类

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(description = "图书分类实体")
public class Category {@ApiModelProperty(value = "分类ID", required = true)private Integer categoryId;@ApiModelProperty(value = "分类名称", required = true)private String categoryName;@ApiModelProperty(value = "分类描述")private String description;
}

4. Author 实体类

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(description = "作者实体")
public class Author {@ApiModelProperty(value = "作者ID", required = true)private Integer authorId;@ApiModelProperty(value = "作者名称", required = true)private String authorName;@ApiModelProperty(value = "作者简介")private String bio;
}

5. Book 实体类

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import java.time.LocalDateTime;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(description = "图书实体")
public class Book {@ApiModelProperty(value = "书籍ID", required = true)private Integer bookId;@ApiModelProperty(value = "书名", required = true)private String title;@ApiModelProperty(value = "出版社")private String publisher;@ApiModelProperty(value = "ISBN", required = true)private String isbn;@ApiModelProperty(value = "分类ID")private Integer categoryId;@ApiModelProperty(value = "作者ID")private Integer authorId;@ApiModelProperty(value = "库存", required = true)private Integer stock;@ApiModelProperty(value = "状态", allowableValues = "可借, 借出, 丢失, 损坏", required = true)private String status;@ApiModelProperty(value = "创建时间")private LocalDateTime createdAt;@ApiModelProperty(value = "更新时间")private LocalDateTime updatedAt;
}

6. Tag 实体类

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(description = "图书标签实体")
public class Tag {@ApiModelProperty(value = "标签ID", required = true)private Integer tagId;@ApiModelProperty(value = "标签名称", required = true)private String tagName;
}

7. BookTags 实体类

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(description = "图书与标签关联实体")
public class BookTags {@ApiModelProperty(value = "书籍ID", required = true)private Integer bookId;@ApiModelProperty(value = "标签ID", required = true)private Integer tagId;
}

8. UserFavorites 实体类

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import java.time.LocalDateTime;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(description = "用户收藏实体")
public class UserFavorites {@ApiModelProperty(value = "用户ID", required = true)private Integer userId;@ApiModelProperty(value = "书籍ID", required = true)private Integer bookId;@ApiModelProperty(value = "收藏时间")private LocalDateTime favoritedAt;
}

9. BookReview 实体类

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import java.time.LocalDate;
import java.time.LocalDateTime;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(description = "图书评价实体")
public class BookReview {@ApiModelProperty(value = "评价ID", required = true)private Integer reviewId;@ApiModelProperty(value = "用户ID", required = true)private Integer userId;@ApiModelProperty(value = "书籍ID", required = true)private Integer bookId;@ApiModelProperty(value = "评分", required = true)private Integer rating;@ApiModelProperty(value = "评价内容")private String reviewText;@ApiModelProperty(value = "评价日期")private LocalDate reviewDate;@ApiModelProperty(value = "创建时间")private LocalDateTime createdAt;@ApiModelProperty(value = "更新时间")private LocalDateTime updatedAt;
}

10. BorrowRecord 实体类

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import java.math.BigDecimal;
import java.time.LocalDate;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(description = "借阅记录实体")
public class BorrowRecord {@ApiModelProperty(value = "借阅ID", required = true)private Integer borrowId;@ApiModelProperty(value = "用户ID", required = true)private Integer userId;@ApiModelProperty(value = "书籍ID", required = true)private Integer bookId;@ApiModelProperty(value = "借阅日期")private LocalDate borrowDate;@ApiModelProperty(value = "到期日期")private LocalDate dueDate;@ApiModelProperty(value = "归还日期")private LocalDate returnDate;@ApiModelProperty(value = "是否逾期", required = true)private Boolean isOverdue;@ApiModelProperty(value = "逾期罚金")private BigDecimal overdueFine;
}

说明

  • @ApiModel:用于描述类的作用,提供整体说明。
  • @ApiModelProperty:用于描述类属性的具体信息,包括必需性、描述等。

这些注解将帮助你在 Knife4j 中更好地可视化和理解你的实体类及其属性。确保在项目中引入相关的 Swagger 依赖,以便这些注解能够正常工作。

配置文件

spring:datasource:#    druid:解除注释时记得把下面几行按 TAB 往后推进一下driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mylibrary?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456
#  redis:
#    host: localhost
#    port: 6379
#    password: 123321
#    database: 2
mybatis:#mapper配置文件mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.advanced.mylibrary.pojoconfiguration:#开启驼峰命名map-underscore-to-camel-case: true# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
logging:level:com:homework:mapper: debugservice: infocontroller: info

依赖

<?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><groupId>com</groupId><artifactId>MyLibrary</artifactId><version>0.0.1-SNAPSHOT</version><name>MyLibrary</name><description>MyLibrary</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.6.13</spring-boot.version><swagger.version>3.0.3</swagger.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></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-spring-boot-starter</artifactId><version>${swagger.version}</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version> 5.8.16</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.mylibrary.MyLibraryApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

相关文章:

springboot图书管理系统(一个简单的单体架构项目,适合小白)

期末作业 为了水一水期末作业&#xff0c;打算写一个简易的单体架构图书管理系统。以下为后端主要技术栈(后期可能更新&#xff0c;打算一个星期左右写完吧)。 springbootredismysqlspringcachespringsecurity … 数据库设计 第一次从0开始搭建后续可能还会多更新一些表。 -- 角…...

《CLR via C#》读书笔记--CLR的执行模型

将源代码编译成托管模块将托管模块合并成程序集加载公共语言运行时执行程序集的代码本机代码生成器&#xff1a;NGen.exeFramework 类库入门通用类型系统公共语言规范&#xff08;CLS&#xff09;与非托管代码的互操作性 将源代码编译程托管模块 公共语言运行时&#xff08;Co…...

Javascript常见数据结构及其应用场景

Basic 以下是对JavaScript中常见数据结构及其应用场景的详细扩展&#xff1a; 数组&#xff08;Array&#xff09; 定义与特性&#xff1a;数组是由一组按顺序排列的值组成&#xff0c;每个值都有一个对应的索引&#xff08;下标&#xff09;&#xff0c;可以通过索引访问和修…...

简单的签到程序 python笔记

简单的人脸识别签到程序 在看完以下代码后&#xff0c;略微修改一番&#xff0c;你就能够组装出自己的“简单的人脸识别签到程序”了。 请注意库的安装&#xff0c;否则会不可用。 你可以通过在cmd中使用&#xff1a;pip install来安装。 以下代码运行python 3.8 UI界面 使…...

30天如何成功转行成为AI产品经理?如果你也想转行到AI,赶紧进来抄作业!!!

前言 随着AI技术的快速发展&#xff0c;AI产品经理成为了备受瞩目的职业。如果您也想抓住这个机遇&#xff0c;不妨跟随这份30天快速入门指南&#xff0c;开始您的AI产品经理转型之旅。 一、学习路线 第一阶段&#xff08;5天&#xff09;&#xff1a;初阶应用 该阶段让大家…...

基于Python+Vue开发的蛋糕商城管理系统

项目简介 该项目是基于PythonVue开发的蛋糕商城管理系统&#xff08;前后端分离&#xff09;&#xff0c;这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能&#xff0c;同时锻炼他们的项目设计与开发能力。通过学习基于Python的蛋糕商…...

WSL开发--利用Git连接远程仓库(详细步骤)

这篇文章主要介绍了如何将本地项目推送到 GitLab 上&#xff0c;并且避免每次提交都需要输入用户名和密码。文中分步讲解了配置 GitLab SSH 密钥以及配置 Git 远程仓库地址的方法。以下是文章的优化和简洁版&#xff1a; 将本地项目推送到 GitLab 并配置 SSH 免密登录 为了方便…...

VLAN高级+以太网安全

VLAN聚合 MUX VLAN QinQ 以下是这三种VLAN技术的作用及其在项目中的应用实例&#xff1a; VLAN聚合 (VLAN Aggregation) VLAN聚合通常用于将多个VLAN数据聚合到一个物理链路上&#xff0c;以减少链路数量、提高链路利用率。这样可以在一个物理链路上同时传输不同VLAN的数据包&…...

R7:糖尿病预测模型优化探索

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、实验目的&#xff1a; 探索本案例是否还有进一步优化的空间 二、实验环境&#xff1a; 语言环境&#xff1a;python 3.8编译器&#xff1a;Jupyter notebo…...

Spring核心:探索IoC容器与依赖注入的奥秘

目录 一、什么是Spring&#xff1f; 二、什么是 Ioc &#xff1f; 2.1 控制反转的实现方式 2.1.1 依赖注入 2.1.2 依赖查找 2.1.3 优点分析 2.2 理解 Ioc 一、什么是Spring&#xff1f; 我们通常所说的 Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff…...

15分钟学 Go 实践项目二:打造博客系统

打造博客系统 项目概述 在本项目中&#xff0c;我们将创建一个简单的博客系统&#xff0c;重点实现CRUD&#xff08;创建、读取、更新、删除&#xff09;操作和用户管理。这个博客系统将使用户能够发布文章&#xff0c;评论&#xff0c;并管理其个人账户信息。 目标 实现用…...

Follow软件的使用入门教程

开篇 看到很多兄弟还不知道怎么用这个当下爆火的浏览器&#xff01;在这里简单给需要入门的小伙伴一些建议&#xff1a; 介绍 简单解释一下&#xff0c;RSS 意思是简易信息聚合&#xff0c;用户可以通过 RSS 阅读器或聚合工具自主订阅并浏览各个平台的内容源&#xff0c;不用…...

【IC验证】systemverilog的设计特性

systemverilog的设计特性 一.概述二.面向硬件的过程语句块1.说明2.always_comb2.always_latch3.always_ff 三.关系运算符1.说明2.例子 四.inside判定符1.说明2.例子 五.条件分支语句&#xff08;1&#xff09;说明&#xff08;2&#xff09;例子&#xff08;case和unique case的…...

【点击劫持漏洞(附测试代码)】

漏洞描述 点击劫持&#xff08;Clickjacking&#xff09;是一种网络攻击技术&#xff0c;攻击者通过将一个恶意的页面或按钮隐藏在合法网站的页面下&#xff0c;诱使用户在不知情的情况下点击隐藏的内容&#xff0c;从而触发攻击者设计的操作。这种攻击通常会导致用户无意中执…...

【AD】3-4 在原理图中放置元件

1.打开原理图库&#xff0c;选中元件点击放置 2.点击工程右键&#xff0c;选择&#xff0c;&#xff0c;进行编译&#xff0c;点击Components&#xff0c;选中鼠标点击拖动即可...

协程2 --- 相关概念

文章目录 协程切换方案协程库的完善程度协程栈方案协程调度实现有栈协程与无栈协程对称协程与非对称协程 协程切换方案 具体使用和解析看栈切换那个博客 使用setjump、longjump c语言提供的方案 可参考&#xff1a;libmill 使用操作系统提供的api&#xff1a;ucontext、fiber …...

Hadoop-005-HDFS分布式文件存储原理

一、HDFS数据如何存储 分布式存储&#xff1a;每个服务器&#xff08;节点&#xff09;存储文件的一部分, 本文提到的part只是为方便理解, 指的文件部分数据, 并不是真实存在的概念 #mermaid-svg-qjJMG6r2bzRNcWkF {font-family:"trebuchet ms",verdana,arial,sans-s…...

【多线程入门篇】 创建线程以及线程的属性

大家好呀 我是浪前 今天给大家讲解的是创建线程以及线程的属性 祝愿所有点赞关注的人&#xff0c;身体健康&#xff0c;一夜暴富&#xff0c;升职加薪迎娶白富美!!! 点我领取迎娶白富美大礼包 &#x1f353;多线程编程: 前言&#xff1a; 我们为什么不用多进程&#xff1f;…...

三十四、Python基础语法(文件操作-上)

一、介绍 文件&#xff1a;可以储存在长期储存设备上的一段数据&#xff0c;在计算机储存的数据都是二进制的形式储存的&#xff0c;我们用软件打开文件不是看见0和1是因为软件会自动将二进制数据进行转换。 二、文件操作 1.打开文件 打开文件&#xff1a;文件是在硬盘中储…...

【大咖云集,院士出席 | ACM独立出版】第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024,11月15-17日)--冬季主会场

第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024)--冬季主会场 2024 4th International Conference on Big Data, Artificial Intelligence and Risk Management 官方信息 会议官网&#xff1a;www.icbar.net 2024 4th International Conference on Big Data, Art…...

Claude Code智能测试生成:5步构建企业级自动化测试体系

Claude Code智能测试生成&#xff1a;5步构建企业级自动化测试体系 【免费下载链接】claude-code Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining comple…...

Windows右键菜单终极管理指南:ContextMenuManager完全掌控你的系统交互体验

Windows右键菜单终极管理指南&#xff1a;ContextMenuManager完全掌控你的系统交互体验 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager Windows右键菜单管理一直…...

Windows 11下保姆级安装Isaac Sim 4.5.0与Isaac Lab避坑全记录(含CUDA 12.8配置)

Windows 11下Isaac Sim 4.5.0与Isaac Lab全流程部署指南&#xff08;RTX 4090实测版&#xff09; 对于机器人仿真和AI开发领域的从业者来说&#xff0c;NVIDIA Isaac Sim和Isaac Lab无疑是当前最强大的工具组合之一。然而&#xff0c;当我在自己的RTX 4090显卡上首次尝试部署这…...

实战指南:基于OpenSpec规范,使用快马平台生成可直接集成的微服务客户端代码

今天在微服务开发中遇到一个典型需求&#xff1a;我们的支付网关服务已经用OpenAPI 3.0规范定义好了接口&#xff0c;现在需要在另一个Java服务中调用这些接口。传统做法要手动写HTTP客户端代码&#xff0c;既耗时又容易出错。最近发现InsCode(快马)平台能基于OpenSpec文档自动…...

Pixel Fashion Atelier保姆级教程:修复WebUI中文乱码与像素字体缺失问题

Pixel Fashion Atelier保姆级教程&#xff1a;修复WebUI中文乱码与像素字体缺失问题 1. 问题背景与现象 Pixel Fashion Atelier作为一款融合复古像素风格的AI图像生成工具&#xff0c;其独特的界面设计是其核心亮点之一。然而&#xff0c;部分用户在部署和使用过程中可能会遇…...

压力型旋流喷嘴内喉部一点横向流体运动

&#xff08;一&#xff09;单图逐段解读图 1&#xff1a;0~0.0045s 全时段曲线&#xff08;含完整瞬态 准稳态&#xff09;分段特征与机理瞬态冲击段&#xff08;0~0.0002s&#xff09;曲线特征&#xff1a;极端剧烈的高频正负震荡&#xff0c;峰值接近 2m/s&#xff0c;是全…...

加油卡小程序玩法全解析:刚需场景破局,从充值裂变到合规运营全攻略

国内私家车与新能源车主群体持续扩容&#xff0c;加油、充电作为高频刚性消费场景&#xff0c;自带稳定流量与强付费意愿&#xff0c;加油卡小程序凭借轻量化、易传播、直达用户的优势&#xff0c;成为加油站、第三方车主服务平台、车企布局私域流量的核心载体。不同于潮玩等娱…...

Qwen2.5-7B-Instruct效果展示:农业病虫害图像描述→防治方案生成

Qwen2.5-7B-Instruct效果展示&#xff1a;农业病虫害图像描述→防治方案生成 想象一下&#xff0c;一位农民在田间地头&#xff0c;用手机拍下一片叶子上的异常斑点。几分钟后&#xff0c;他不仅得到了这是什么病害的准确诊断&#xff0c;还收到了一份详细的、可操作的防治方案…...

ArcMap地图数字化实战:从加载地形图到保存成果的完整流程(附常见问题解决)

ArcMap地图数字化实战&#xff1a;从加载地形图到保存成果的完整流程&#xff08;附常见问题解决&#xff09; 在GIS领域&#xff0c;地图数字化是将纸质地图或图像转换为计算机可识别和处理的数字格式的基础工作。这项技能不仅是GIS专业学生的必修课&#xff0c;也是城市规划、…...

从4G到RedCap:手把手教你升级老旧工业设备的无线通信模块(附功耗测试数据)

从4G到RedCap&#xff1a;工业设备无线通信模块升级实战指南 在工业物联网快速发展的今天&#xff0c;老旧设备的通信模块升级成为许多工厂面临的现实挑战。传统4G模块虽然稳定可靠&#xff0c;但面对5G时代RedCap技术带来的低功耗、低成本优势&#xff0c;升级改造已成为提升设…...