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

图书管理系统(增删改查,附源码,包含数据库交互以及图形化界面)

前言本文旨在用面向对象的思想编程实现图书管理系统功能包括增删改查完整源码放在文末大家有需自取一共3个版本1.0版本基础的Java单机程序2.0版本提供了web图形化页面与数据库可以交互3.0版本在2.0的基础上采用了前后端分离的架构UI更美观功能也更多每个版本都免费给出了源码大家可以在文末按需自取。目录一.效果示例▐ LibrarySystem1.0▐ LibrarySystem2.0▐ LibrarySystem3.0二.LibrarySystem1.0分享▐ 设计与分析▐ 完整代码三.LibrarySystem2.0分享▐ 项目结构及使用注意事项▐ 完整代码三.LibrarySystem3.0分享一.效果示例▐LibrarySystem1.0因为是简单的单击程序所以是通过终端窗口进行增删改查的操作这里给出一些运行截图▐LibrarySystem2.0首先是登录界面在程序运行起来后我们访问浏览器的8080端口的login.html界面即localhost:8080/login.html默认用户名和密码都是adminhttp://localhost:8080/login.html登录完成后自动跳转到图书列表界面在这个界面我们可以进行书籍的增删改查当我们选择添加添加图书即可跳转到相对应的页面然后通过表单的提交我们就可以完成书籍的新增▐LibrarySystem3.0前端后端都启动后浏览器输入下面的网址即可进入系统http://localhost:5173/login登陆界面主要参考腾讯QQ的风格采用圆角阴影和渐变等元素先展示管理员端的页面吧这是管理员登录后首页显示包含图书管理借阅管理用户管理等功能借阅管理用户管理普通用户这方面包含最基础的借阅和查看图书等功能还有双端都有的个人信息的修改这是对应的前后端项目链接点击即可免费下载使用library-system3.0: library-system3.0前端后端项目 --整合介绍文档二.LibrarySystem1.0分享▐设计与分析这部分内容是面向于没有什么开发经验的小白如果你是有一定开发基础的完全跳过这部分即可我们采取面向对象的编程思想将整个图书管理系统抽象出多个对象然后通过各个对象之间的交互来完成我们的整体设计需求我们整体的设计框架如下图我们通过抽取他们的共性做出以下设计我们的书籍放在书架上因此他们处于同一个包内我们的增删查改的操作都是属于用户对图书的操作因此他们处于同一个包内这样也更方便不同用户来调用这些操作用户分为普通用户和管理员用户他们都是对于图书管理系统的直接操作者因此他们处于同一个包中对应我们上述结构图我们如下设计▐书籍和书架书籍(Book)我们应该提供书籍的相关信息书名作者价格书籍类型借阅状态为了体现面向对象的封装特性我们将这些字段信息设为private然后再设置一些public的方法以供给其他对象访问package BookRack; //书籍 public class Book { private String name;//书名 private String author;//作者名 private int price;//价格 private String type;//书的类型 private boolean isBorrowed;//是否已经被借出 public String getName() { return name; } public void setName(String name) { this.name name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author author; } public int getPrice() { return price; } public void setPrice(int price) { this.price price; } public String getType() { return type; } public void setType(String type) { this.type type; } public boolean isBorrowed() { return isBorrowed; } public void setBorrowed(boolean borrowed) { isBorrowed borrowed; } //构造方法初始化 public Book(String name, String author, int price, String type) { //图书默认没有借出所以isBorrowed默认false不需要初始化 this.name name; this.author author; this.price price; this.type type; } //方便我们打印整个书籍的全部信息 Override public String toString() { return Book.Book{ name name \ , author author \ , price price , type type \ }; } }书架(BookRack)书架主要是用来存放书籍的因此我们只需要提供以下俩个信息就可以已经存放的书籍也就是一个书籍数组数组中每一个元素都是一本书籍对象已经存放的书籍的数量为了体现面向对象的封装性我们还是将这些字段信息设为private然后再设置一些public的方法以供给其他对象访问在这里我们实现再书架上存放三本书因此在构造方法中做出相应的初始化package BookRack; //书架 public class BookRack { private Book[] books;//存放的所有的书 private int uesdSize;//书架上已经放的书的数量 public BookRack() { this.books new Book[10];//默认书架可以放10本书 this.books[0] new Book(三国演义,罗贯中,20,小说); this.books[1] new Book(西游记,吴承恩,9,小说); this.books[2] new Book(红楼梦,曹雪芹,19,小说); this.uesdSize 3;//默认书架上有3本书 } //拿到某个位置的书籍 public Book getBooks(int pos) { return books[pos]; } //设置某个位置的书籍 public void setBooks(Book book,int pos) { books[pos] book; } public int getUesdSize() { return uesdSize; } public void setUesdSize(int uesdSize) { this.uesdSize uesdSize; } }▐对书籍的相关操作操作接口(IOperation)所有的操作都是要对于书架进行操作的所以我们在这里提供一个接口供不同操作来实现并且给他们传入书架类的参数package Operation; import BookRack.BookRack; //操作接口 public interface IOperation { //我们的任何增删查改的操作都是对于书架进行操作的所以传入的参数是书架类 void work(BookRack bookRack); }新增图书(AddOperation)首先我们需要让用户输入想要添加的图书的相关信息然后我们为用户输入的图书新建一个对象接下来就是合法性判断我们拿刚才新建的图书对象和书架上的每一个图书对象进行遍历对比如果没有重复的图书就可以存入这本书要存入这本书就调用刚才书架类中提供的方法setBooks在新加一本书籍后对应的书籍数量也得增加也就是调用setUesdSize方法来增加书籍的数量package Operation; import BookRack.BookRack; import BookRack.Book; import java.util.Scanner; public class AddOperation implements IOperation{ Override public void work(BookRack bookRack) { System.out.println(新增图书操作进行中......); Scanner scanner new Scanner(System.in); System.out.println(请输入您要添加的图书的书名); String name scanner.nextLine(); System.out.println(请输入您要添加的图书的作者名); String author scanner.nextLine(); System.out.println(请输入您要添加的图书的价格); int price scanner.nextInt(); System.out.println(请输入您要添加的图书的类型); String type scanner.nextLine(); //因为我们的每一个书都是一个对象书架是一个对象数组我们新加图书的时候就应该新实例化一个对象 Book book new Book(name,author,price,type); //合法性判断 int usedSize bookRack.getUesdSize();//拿到当前书架内放了书的数量 for (int i 0; i usedSize; i) { //遍历书架中的图书挨个对比名字是否相同 Book tempbook bookRack.getBooks(i); if (tempbook.getName().equals(name)) { System.out.println(不能重复添加同一本书请重试); return; } } //可以添加新的图书 bookRack.setBooks(book,usedSize); bookRack.setUesdSize(usedSize1); } }借阅图书(BorrowOperation)首先我们需要让用户输入想要添加的图书的相关信息然后我们为用户输入的图书新建一个对象然后我们挨个遍历书架上的书如果有那就可以借将书籍的借阅状态改为true就可以如果没有就告诉用户没有此书无法借阅package Operation; import BookRack.BookRack; import BookRack.Book; import java.util.Scanner; public class BorrowOperation implements IOperation{ Override public void work(BookRack bookRack) { System.out.println(借阅图书操作进行中......); System.out.println(请输入您想借阅的书名); Scanner scanner new Scanner(System.in); String name scanner.nextLine(); //遍历整个书架 for (int i 0; i bookRack.getUesdSize(); i) { Book temp bookRack.getBooks(i); if (name.equals(temp.getName())) { temp.setBorrowed(true); System.out.println(借阅成功!); return; } } System.out.println(没有查询到您想要借阅的图书请重新尝试); } }删除图书(DeleteOperation)首先要删除图书的第一步应该是先找到这本书因此我们像刚才借阅图书一样先遍历整个书架找到这本书然后记录这本书的位置之后再利用书架提供的setBooks方法来存放这本书如果没有找到那就告诉用户并且退出这个操作package Operation; import BookRack.BookRack; import BookRack.Book; import java.util.Scanner; public class DeleteOperation implements IOperation{ Override public void work(BookRack bookRack) { System.out.println(删除图书操作进行中......); System.out.println(请输入您想删除的书名); Scanner scanner new Scanner(System.in); String name scanner.nextLine(); //要删除的前提是先找到这本书 int uesdSize bookRack.getUesdSize(); int flag -1; int i 0; for (; i uesdSize; i) { Book tempbook bookRack.getBooks(i); if (tempbook.getName().equals(name)) { //找到这本书 flag i; break; } } if (i uesdSize) { System.out.println(查无此书无法删除); return; } //存在这本书进行删除也就是将书架中的书从后向前依次覆盖 for (int j flag; j uesdSize; j) { Book tempbook bookRack.getBooks(j1);//拿到 j1 位置的书 bookRack.setBooks(tempbook,j);//和 j 位置的书交换 } bookRack.setBooks(null,uesdSize-1);//将最后一个位置的图书置为空 bookRack.setUesdSize(uesdSize-1);//图书数量减一 System.out.println(删除成功); } }查找图书(FindOperation)查找图书就非常简单了我们在刚才的删除图书操作中相当于已经完成了这部分操作了package Operation; import BookRack.BookRack; import BookRack.Book; import java.util.Scanner; public class FindOperation implements IOperation{ Override public void work(BookRack bookRack) { System.out.println(查找图书操作进行中......); System.out.println(请输入您想查找的书名); Scanner scanner new Scanner(System.in); String name scanner.nextLine(); int usedSize bookRack.getUesdSize(); for (int i 0; i bookRack.getUesdSize(); i) { Book temp bookRack.getBooks(i); if (name.equals(temp.getName())) { System.out.println(存在这本书信息如下); System.out.println(temp); return; } } System.out.println(没有你要找的这本书书名为 name); } }归还图书(ReturnOperation)和我们的借阅图书操作相同唯一不同的就是这里是将图书的借阅状态改为falsepackage Operation; import BookRack.BookRack; import BookRack.Book; import java.util.Scanner; public class ReturnOperation implements IOperation{ Override public void work(BookRack bookRack) { System.out.println(借阅图书操作进行中......); System.out.println(请输入您想借阅的书名); Scanner scanner new Scanner(System.in); String name scanner.nextLine(); //遍历整个书架 for (int i 0; i bookRack.getUesdSize(); i) { Book tempbook bookRack.getBooks(i); if (name.equals(tempbook.getName())) { tempbook.setBorrowed(false); System.out.println(归还成功!); return; } } System.out.println(没有你要归还的图书name); } }展示图书(ShowOperation)遍历整个书架然后挨个打印输出图书信息就可以了package Operation; import BookRack.Book; import BookRack.BookRack; public class ShowOperation implements IOperation{ Override public void work(BookRack bookRack) { System.out.println(图书列表如下); for (int i 0; i bookRack.getUesdSize(); i) { Book tempbook bookRack.getBooks(i); System.out.println(tempbook); } } }退出系统(ExitOperation)我们这里直接使用exit来结束整个程序就可以package Operation; import BookRack.BookRack; public class ExitOperation implements IOperation{ Override public void work(BookRack bookRack) { System.out.println(退出系统...); System.exit(0); } }▐用户部分用户抽象类(User)在普通用户和管理员用户中存在许多共性因此我们这里设置一个抽象类供普通用户和管理员用户来继承使用package Person; import BookRack.BookRack; import Operation.IOperation; public abstract class User { protected String name;//姓名 protected IOperation[] iOperations;//操作接口数组 public abstract int menu();//菜单 public User(String name) { this.name name; } //供用户来选择操作调用操作接口 public void doOperation(int choice, BookRack bookRack) { IOperation ioperation iOperations[choice]; ioperation.work(bookRack); } }管理员类(Administrator)我们设置管理用户的菜单再对应着菜单设置接口类型的数组的具体操作package Person; import Operation.*; import java.util.Scanner; public class Administrator extends User { public Administrator(String name) { super(name); iOperations new IOperation[]{ new ExitOperation(), new FindOperation(), new AddOperation(), new DeleteOperation(), new ShowOperation() }; } public int menu() { System.out.println(********管理员菜单********); System.out.println(1.查找图书); System.out.println(2.新增图书); System.out.println(3.删除图书); System.out.println(4.显示图书); System.out.println(0.退出系统); System.out.println(************************); System.out.println(请输入你的操作); //通过输入来调用对用的功能 Scanner scanner new Scanner(System.in); int choice scanner.nextInt(); return choice; } }普通用户(NormalUser)和管理员用户的设置一样我们对应的存放接口数组中的操作就可以package Person; import Operation.*; import Person.User; import java.util.Scanner; public class NormalUser extends User { public NormalUser(String name) { super(name); iOperations new IOperation[]{ new ExitOperation(), new FindOperation(), new BorrowOperation(), new ReturnOperation() }; } public int menu() { System.out.println(********普通用户菜单********); System.out.println(1.查找图书); System.out.println(2.借阅图书); System.out.println(3.归还图书); System.out.println(0.退出系统); System.out.println(***************************); System.out.println(请输入你的操作); //通过输入来调用对用的功能 Scanner scanner new Scanner(System.in); int choice scanner.nextInt(); return choice; } }▐main方法(Test)我们再这里设置一个登录程序登录管理员我们就新建一个管理员对象登录普通用户我们就新建一个普通用户对象然后我们根据用户的输入来调用我们菜单中的选项也就是我们刚才设置的接口操作数组中的操作import BookRack.BookRack; import Person.Administrator; import Person.NormalUser; import Person.User; import java.util.Scanner; public class Test { public static User login() { System.out.println(请输入您的名字); Scanner scanner new Scanner(System.in); String name scanner.nextLine(); System.out.println(请确认您的身份); System.out.println(1.管理员); System.out.println(2.普通用户); int choice scanner.nextInt(); if (choice 1) { return new Administrator(name); }else{ return new NormalUser(name); } } public static void main(String[] args) { BookRack bookRack new BookRack(); User user login();//向上转型 while (true) { int choice user.menu(); user.doOperation(choice, bookRack); } } }▐完整代码按照笔者这里对应的包和类的设置进行操作就可以每一个类和包在上文中都完整给出来了如果觉得麻烦的话笔者这里给出对应的源码大家有需要点击链接自取直接下载即可LibrarySystem1.0: 图书管理系统三.LibrarySystem2.0分享该部分内容是因许多粉丝后台私信想要可以和数据库交互并且有一个图形化界面为了满足这样的需求2.0版本应运而生。▐项目结构及使用注意事项该项目采用了SpringBoot MyBatis HTML CSS JavaScript的技术栈。HTML CSS JavaScript三者用来保证给用户提供一个图形化界面整个项目通过SpringBoot来进行搭建通过MyBatis来完成对数据库的增删改查。由于是一个Web项目因此在这里没法进行大篇幅的分析具体的业务逻辑实现故而只能简单的阐述一下基本业务逻辑controller层用来接收用户的信息并且调用service层进行具体的业务逻辑处理再通过调用mapper层进行对数据库的操作为了防止用户非法访问页面通过拦截器来对用户身份进行校验如果用户没有登录就直接操作图书馆则会直接跳转至用户登录界面进行登录操作。项目结构如下该项目是属于Maven的结构因此在使用前需要确保自己本地的Maven没有问题创建数据库表在运行项目之前需要将数据库表创建好笔者这里已经提供了对应的SQL语句只需要执行即可不管是在IDEA还是在Navicat里面运行这段SQL脚本都是可以的项目源码里面也有这个sql脚本直接执行就可以-- 1. 切换到 mysql 系统库 USE mysql; -- 2. 删除并重建数据库 DROP DATABASE IF EXISTS book_test; CREATE DATABASE book_test DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; -- 3. 切换到新建的数据库 USE book_test; -- 4. 创建用户表优化字段注释、数据类型长度 DROP TABLE IF EXISTS user_info; CREATE TABLE user_info ( id INT NOT NULL AUTO_INCREMENT COMMENT 用户主键ID, user_name VARCHAR(128) NOT NULL COMMENT 用户名唯一, password VARCHAR(128) NOT NULL COMMENT 用户密码, delete_flag TINYINT(4) NULL DEFAULT 0 COMMENT 删除标记0-未删除 1-已删除, create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (id), UNIQUE INDEX idx_user_name (user_name ASC) COMMENT 用户名唯一索引 ) ENGINE INNODB DEFAULT CHARACTER SET utf8mb4 COMMENT 用户信息表; -- 5. 创建图书表优化字段注释、索引 DROP TABLE IF EXISTS book_info; CREATE TABLE book_info ( id INT(11) NOT NULL AUTO_INCREMENT COMMENT 图书主键ID, book_name VARCHAR(127) NOT NULL COMMENT 图书名称, author VARCHAR(127) NOT NULL COMMENT 作者, count INT(11) NOT NULL COMMENT 库存数量, price DECIMAL(7,2) NOT NULL COMMENT 图书价格精确到分, publish VARCHAR(256) NOT NULL COMMENT 出版社, status TINYINT(4) DEFAULT 1 COMMENT 状态0-无效 1-正常 2-不允许借阅, create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (id), INDEX idx_book_name (book_name) COMMENT 图书名称索引优化查询 ) ENGINE INNODB DEFAULT CHARSET utf8mb4 COMMENT 图书信息表; -- 6. 插入用户初始化数据 INSERT INTO user_info (user_name, password) VALUES (admin, admin), (zhangsan, 123456); -- 7. 插入图书初始化数据批量插入更高效 INSERT INTO book_info (book_name, author, count, price, publish) VALUES (活着, 余华, 29, 22.00, 北京文艺出版社), (平凡的世界, 路遥, 5, 98.56, 北京十月文艺出版社), (三体, 刘慈欣, 9, 102.67, 重庆出版社), (金字塔原理, 麦肯锡, 16, 178.00, 民主与建设出版社); -- 8. 提示执行完成 SELECT 数据库、表创建及初始化数据插入完成 AS 执行结果;修改配置文件为了正确的连接到用户本地的数据库需要确认application.yml配置文件中的数据库连接信息正确即数据库名、数据库用户名以及数据库密码与你本地的一直其他的不需要进行修改补充一下之前很多同学反馈说报错“内部错误”原因就是项目没有连接上数据库基本都是自己这里的配置文件有问题项目环境javajdk17mysql8.3.0▐完整代码源代码在下发连接中给出需要的直接点击进行下载即可LibrarySystem2.0: 图书管理系统2025年12月19日补充很长一段时间没怎么关注过CSDN写过的文章和小项目了今天突然发现很多同学都提出了项目有bug诸如 “内部错误” 这样的今天抽空修改了一下之前会有报错内部错误是因为MySQL 8.0 版本的一个安全机制导致的连接问题核心原因是客户端在认证过程中无法获取服务器的公钥导致项目连接不上本地的数据库其实改一下配置文件 application.yml 中的连接信息就好了三.LibrarySystem3.0分享如果你不知道什么是前后端那就点击这个链接即可整合版本的下载链接library-system3.0: library-system3.0前端后端项目 --整合介绍文档当然如果想要分开下载前后端的应用的话也可以下面是对应的链接使用方法在俩个项目各自的readme.md文档里面都有说明这里就不再赘述了后端项目地址https://gitee.com/luming-02/library-system3.0前端项目地址https://gitee.com/luming-02/library-system-vue本次的分享就到此为止了希望我的分享能给您带来帮助创作不易也欢迎大家三连支持你们的点赞就是博主更新最大的动力如有不同意见欢迎评论区积极讨论交流让我们一起学习进步有相关问题也可以私信博主评论区和私信都会认真查看的我们下次再见

相关文章:

图书管理系统(增删改查,附源码,包含数据库交互以及图形化界面)

前言:本文旨在用面向对象的思想编程实现图书管理系统,功能包括增删改查,完整源码放在文末,大家有需自取,一共3个版本: 1.0版本:基础的Java单机程序2.0版本:提供了web图形化页面&…...

Qt Windows自定义GUI界面自动化测试——uiautomatio通过树节点属性定位控件

Qt Windows自定义GUI界面自动化测试 提示:点击链接跳转其他相关文章 Windows自定义GUI界面自动化测试框架选择 autoit uiautomatio基本使用 uiautomatio通过树节点属性定位控件 uiautomatio通过树节点属性定位控件Qt Windows自定义GUI界面自动化测试前言一、实现方式…...

仲景大语言模型:传承中医智慧的AI创新实践

仲景大语言模型:传承中医智慧的AI创新实践 【免费下载链接】CMLM-ZhongJing 首个中医大语言模型——“仲景”。受古代中医学巨匠张仲景深邃智慧启迪,专为传统中医领域打造的预训练大语言模型。 The first-ever Traditional Chinese Medicine large langu…...

[资料整理]魔法师传奇 MagicMayhem

魔法师传奇 Magic&Mayhem魔法师传奇中文站网站魔法师传奇2023版介绍魔法师传奇中文站网站 网站地址:魔法师传奇中文站 http://zb.l4d.top:1983/magic 备用链接:http://zb.my.to:1983/magic 论坛地址:魔法师传奇中文论坛 http://zb.l4d.t…...

Unity-URP-Outlines完全指南:7个实用技巧让你轻松实现专业级描边效果

Unity-URP-Outlines完全指南:7个实用技巧让你轻松实现专业级描边效果 【免费下载链接】Unity-URP-Outlines A custom renderer feature for screen space outlines 项目地址: https://gitcode.com/gh_mirrors/un/Unity-URP-Outlines 核心价值:为什…...

SwitchButton自定义样式完全教程:从基础到高级的完整指南

SwitchButton自定义样式完全教程:从基础到高级的完整指南 【免费下载链接】SwitchButton SwitchButton.An beautifullightweightcustom-style-easy switch widget for Android,minSdkVersion > 11 项目地址: https://gitcode.com/gh_mirrors/swi/SwitchButton …...

如何利用Clef Handbook进行有效会议管理:5个关键原则 [特殊字符]

如何利用Clef Handbook进行有效会议管理:5个关键原则 🚀 【免费下载链接】handbook An employee handbook built for inclusion 项目地址: https://gitcode.com/gh_mirrors/handbook6/handbook 在当今快节奏的工作环境中,高效会议管理…...

ABAP ALV负数导出到Excel后无法合计

对金额字段进行以下处理即可CALL FUNCTION BAPI_CURRENCY_CONV_TO_EXTERN_9EXPORTINGcurrency <fs_alv>-waersamount_internal <fs_alv>-dmbtrIMPORTINGamount_external lv_external.<fs_alv>-dmbtr lv_external....

5分钟快速解锁QQ音乐加密文件:qmc-decoder终极使用指南

5分钟快速解锁QQ音乐加密文件&#xff1a;qmc-decoder终极使用指南 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经在QQ音乐下载了喜欢的歌曲&#xff0c;却发现…...

python绘制智能网格天气预报产品

python绘制智能网格天气预报产品 1.产品说明 智能网格天气预报业务化下发产品包括&#xff1a; PRE/GUST/FOG/HZ/SNOW/TMAX/TMIN/VIS/R24/RH/CLOUD/TA/TMP/WIN/PRS/TCC/SAND/SOIL/SUNLIGHT/HOURS: 固定代码&#xff0c;表示产品内容是降水/阵风/雾/霾/积雪/最高气温/最低气温…...

学习记录:从零开始学AI(二)——Scikit-learn加州房价机器学习例子学习笔记:继续补全代码运行成功

后记&#xff1a;之前一直以为用的是TensorFlow&#xff0c;原来我用的是 Scikit-learn。两者都可以实现机器学习。前者更适合实现深度神经网络。更正题目。已经搭建好环境&#xff0c;开始学习加州房价机器学习例子&#xff0c;目标理解相关概念&#xff0c;掌握机器学习例子开…...

EcomGPT-中英文-7B电商模型在Vue.js前端项目中的集成:打造实时智能客服聊天组件

EcomGPT-中英文-7B电商模型在Vue.js前端项目中的集成&#xff1a;打造实时智能客服聊天组件 最近在做一个电商后台的升级项目&#xff0c;客户提了个需求&#xff0c;希望能在用户端和管理后台都加上一个智能客服&#xff0c;能实时回答商品咨询、订单状态这些常见问题。一开始…...

mysql 常用sql

# 导出除指定表外的所有数据 要在mysql bin目录下 cmd mysqldump -h 数据库地址 -u 用户名 -p 数据库 --ignore-table表名 --ignore-table表名 > output.sql# 追加5个表的结构 mysqldump -h 数据库地址 -u 用户名 -p --no-data 数据库 表名 表名 表名 表名 表名 >> o…...

多少家庭不是穷,是被面子慢慢拖垮的

——《清醒日常&#xff1a;隐形账本系列》 开篇你可能也经历过这样的时刻。婚礼现场灯光闪得人眼睛发花。你端着酒杯&#xff0c;一边笑着跟老同学说“恭喜恭喜”&#xff0c;一边脑子里飞快算着——这次随多少才不丢人&#xff1f;回家路上&#xff0c;你老婆小声问一句&…...

解决VirtualBox/VMware虚拟机在win10下运行ensp时AR启动卡死问题

未经授权&#xff0c;禁止转载&#xff01;1.环境准备与确认首先 &#xff0c;确认你的虚拟机是否是windows10&#xff0c;例如我的虚拟机操作系统如下&#xff1a;2.然后&#xff0c;确认你的环境是否正确&#xff0c;重点查看VirtualBox是否是"VirtualBox-5.2.44-139111…...

UBANTU安装Duckietown细节操作与错误记录

一&#xff0c;安装 1.虚拟机安装VM&#xff0c;安装UBUNTU系统&#xff0c;按照VMware虚拟机安装Ubuntu教程(超详细)_vmware安装ubuntu-CSDN博客 去操作就可以&#xff0c;绝对详细&#xff0c;而且不坑。 2.个人建议使用搜狗输入法。 3.打开系统文件夹 例如我的叫tuoni&a…...

终极揭秘:Bloaty的RangeMap数据结构如何实现精准二进制尺寸分析

终极揭秘&#xff1a;Bloaty的RangeMap数据结构如何实现精准二进制尺寸分析 【免费下载链接】bloaty Bloaty: a size profiler for binaries 项目地址: https://gitcode.com/gh_mirrors/bl/bloaty Bloaty是一款强大的二进制尺寸分析工具&#xff0c;能够帮助开发者深入了…...

HardSourceWebpackPlugin插件生态:ExcludeModulePlugin和ParallelModulePlugin深度解析

HardSourceWebpackPlugin插件生态&#xff1a;ExcludeModulePlugin和ParallelModulePlugin深度解析 【免费下载链接】hard-source-webpack-plugin 项目地址: https://gitcode.com/gh_mirrors/ha/hard-source-webpack-plugin HardSourceWebpackPlugin是Webpack生态中一款…...

我的编程启程之路

一、自我简绍我是一名大三数学专业学生&#xff0c;在学习一点Python后对于代码有了兴趣&#xff0c;从而开始依据网上的视频学习编程。二、编程目标短期内目标是学习c语言等去准备408备战2027考研争取上岸。长期目标是能够进入一个大厂工作。三、学习规划脚踏实地&#xff0c;…...

React-share源码架构揭秘:从TypeScript到Vite构建的完整技术栈

React-share源码架构揭秘&#xff1a;从TypeScript到Vite构建的完整技术栈 【免费下载链接】react-share Social media share buttons and share counts for React 项目地址: https://gitcode.com/gh_mirrors/re/react-share React-share是一个功能强大的React社交媒体分…...

Lepton AI农业监测:作物生长分析服务构建实践

Lepton AI农业监测&#xff1a;作物生长分析服务构建实践 【免费下载链接】leptonai A Pythonic framework to simplify AI service building 项目地址: https://gitcode.com/gh_mirrors/le/leptonai Lepton AI是一个Pythonic框架&#xff0c;专为简化AI服务构建而设计&…...

提升效率:用快马生成自动化工具批量处理战网更新睡眠问题

最近在游戏开发测试过程中&#xff0c;经常遇到战网更新服务进入睡眠模式的问题。每次手动唤醒不仅耗时&#xff0c;还容易遗漏步骤。经过多次实践&#xff0c;我总结出一套自动化处理方案&#xff0c;显著提升了工作效率。下面分享具体实现思路和工具设计要点。 后台监控模块设…...

终极Mach-O文件分析指南:使用Bloaty深度剖析苹果应用大小

终极Mach-O文件分析指南&#xff1a;使用Bloaty深度剖析苹果应用大小 【免费下载链接】bloaty Bloaty: a size profiler for binaries 项目地址: https://gitcode.com/gh_mirrors/bl/bloaty Bloaty是一个强大的二进制文件大小分析工具&#xff0c;专门用于深度剖析可执行…...

Dankoe新作《使命与收益》读书笔记11|一人公司,不是找风口,是成为解决问题的人

你有没有过这种感觉—— 市场在变&#xff0c;AI在变&#xff0c;流量规则在变&#xff0c;你每天盯着行业动态&#xff0c;生怕错过什么风口。但越盯越焦虑&#xff0c;越焦虑越没有行动。 Dan Koe在《使命与收益》这最后的一个章节告诉我们一个事实&#xff1a; "有两…...

终极指南:3步永久解密科学文库PDF文档,告别7天访问限制

终极指南&#xff1a;3步永久解密科学文库PDF文档&#xff0c;告别7天访问限制 【免费下载链接】ScienceDecrypting 破解CAJViewer带有效期的文档&#xff0c;支持破解科学文库、标准全文数据库下载的文档。无损破解&#xff0c;保留文字和目录&#xff0c;解除有效期限制。 …...

终极Zotero中文文献管理指南:茉莉花插件让效率提升80%

终极Zotero中文文献管理指南&#xff1a;茉莉花插件让效率提升80% 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 在学术研究中&a…...

Android系统栏透明模式终极指南:如何实现沉浸式UI设计

Android系统栏透明模式终极指南&#xff1a;如何实现沉浸式UI设计 【免费下载链接】SystemBarTint [DEPRECATED] Apply background tinting to the Android system UI when using KitKat translucent modes 项目地址: https://gitcode.com/gh_mirrors/sy/SystemBarTint …...

从隔离菜谱到通用烹饪指南:Cook用户体验设计的完整演进之路

从隔离菜谱到通用烹饪指南&#xff1a;Cook用户体验设计的完整演进之路 【免费下载链接】cook &#x1f372; 好的&#xff0c;今天我们来做菜&#xff01;OK, Lets Cook! 项目地址: https://gitcode.com/gh_mirrors/co/cook 在数字化时代&#xff0c;烹饪应用已成为厨房…...

如何快速掌握Bloaty输出分析:VM SIZE与FILE SIZE完整指南

如何快速掌握Bloaty输出分析&#xff1a;VM SIZE与FILE SIZE完整指南 【免费下载链接】bloaty Bloaty: a size profiler for binaries 项目地址: https://gitcode.com/gh_mirrors/bl/bloaty Bloaty是一款强大的二进制文件大小分析工具&#xff0c;能够帮助开发者深入了解…...

分离调试文件完整指南:为什么构建ID验证对Bloaty二进制分析至关重要

分离调试文件完整指南&#xff1a;为什么构建ID验证对Bloaty二进制分析至关重要 【免费下载链接】bloaty Bloaty: a size profiler for binaries 项目地址: https://gitcode.com/gh_mirrors/bl/bloaty 作为专业的二进制大小分析工具&#xff0c;Bloaty能够深入剖析ELF、…...