自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 AOP日志处理模板代码

【代码】AOP日志处理模板代码。

2024-06-16 22:49:01 174

原创 查看npm版本异常,更新nvm版本解决问题

首先说说遇见的问题,基本上把nvm,npm的坑都排了一遍。

2024-06-16 18:36:53 827 1

原创 逻辑题 :谁是凶手?

乙进不去作案现场,我们从(3) 乙是凶手,一定可以进去作案现场,但现在乙进不去,我们推出,乙不是凶手,所以 推出B取反 (这我猜想就是老师说的公式吧 比如说 B -> E 就有 B取反 -> E取反)(B - > E 如果E取反就能推出 B取反)非A(A我们假设是凶手)推出 B 并 C(并集是开口往上,交集是开口往下 )也就是乙或者是凶手,或者是知情人,并集就是他可以是知情人,可以是凶手,或者俩者都是,不过凶手肯定是知情人…这里列出的 (1)(2)(3)(4)(5)都是题中给出的,我们通过公式描述。

2024-06-11 11:44:49 871

原创 多线程打印

缺点:效率低,会出现浪费的竞争。比如说,一直是偶数线程拿到锁,进行判断后不满足条件,就不会去执行打印语句,然后跳出,这样的话很多次竞争拿到锁是没有意义的。线程 1 输出 a 5 次,线程 2 输出 b 5 次,线程 3 输出 c 5 次。● 第二,如果有些干扰线程错误地 notify 了 wait 线程,条件不满足时还要重新等待,使用了 while 循环来解决 此问题。优点:效率高,一个线程拿到锁就去打印,打印完,唤醒其他线程,自己就休眠,每次的竞争都是有意义的。比如,必须先 2 后 1 打印。

2024-06-09 18:24:57 324

原创 JDK1.6、1.7、1.8内存区域的变化和String str=“aaa“与 String str=new String(“aaa“)一样吗?new String(“aaa”);创建了几个字符串对象

创建了两个对象,一个在堆中的StringObject对象,一个是在堆中的“3”对象,并在常量池中保存“3”对象的引用地址。在常量池中寻找与s3变量内容相同的对象,没有发现“33”对象,在常量池中创建“33”对象,返回“33”对象的地址。创建了两个对象,一个在堆中的StringObject对象,一个是在堆中的“2”对象,并在常量池中保存“2”对象的引用地址。在常量池中寻找与s变量内容相同的对象,发现已经存在内容相同对象“2”,返回对象“2”的引用地址。s 被初始化为一个新的字符串对象,内容为 “2”。

2024-06-09 18:16:43 984 1

原创 Mybatis源码剖析---第三讲

是个类的对象,而不是接口的对象,所以这块我们才推导出这个对象,应该是这个接口实现类的对象。由于我们方法中还存在一些toString()方法,wait()方法,notify()方法,这些都是派生于Object,这些不需要sqlSession进行处理,所以这块匹配的就是Object的类的方法进行处理,另一个就是对默认方法进行的处理。是典型的动态代理就是。左边的login()方法调用右边的login()方法,典型的RPC,dubbo对此进行了封装,左边是右边的代理人,增加了什么功能呢,数据传输和网络连接。

2024-05-28 12:18:09 750

原创 从0开始带你成为Kafka消息中间件高手---第五讲

如果你现在创建一个Topic,肯定会分配几个Partition,每个partition还会指定几个副本,这个时候创建的过程中就会在zookeeper中注册对应的topic的元数据,包括他有几个partition,每个partition有几个副本,每个partition副本的状态,此时状态都是:NonExistentReplica。每个partition的副本在哪台机器上呢?包括你的kafka集群的各种元数据,比如说每台机器上有哪些partition,谁是leader,谁是follower,是谁来管理的?

2024-05-27 23:49:20 748

原创 从0开始带你成为Kafka消息中间件高手---第四讲

接着follower再次发送fetch请求过来,自己的LEO = 1,leader发现自己LEO = 1,follower LEO = 1,所以HW更新为1,同时会把HW = 1带回给follower,但是此时follower还没更新HW的时候,HW还是0。我们生产环境遇到的一些问题,kafka,机器层面,某台机器磁盘坏了,物理机的磁盘有故障,写入性能特别差,此时就会导致follower,CPU负载太高了,线程间的切换太频繁了,CPU忙不过来了,网卡被其他的程序给打满了,就导致网络传输的速度特别慢。

2024-05-27 23:47:50 980

原创 从0开始带你成为Kafka消息中间件高手---第三讲

每次leader发送数据给follower的时候,都会发送自己的HW值,然后follower获取到leader HW之后,就会跟自己的LEO比较一下,取里面小的那个值作为自己的HW值,换句话说,如果follower的LEO比leader HW大了,那么follower的HW就是leader HW。offset = 0 ~ offset = 4,LEO = 5,代表了最后一条数据后面的offset,下一次将要写入的数据的offset,LEO,你一定要明白他的名词。

2024-05-26 08:41:21 788

原创 从0开始带你成为Kafka消息中间件高手---第二讲

通过副本partition可以继续体统这个partition的数据写入和读取,这样就可以实现容错了,这个副本partition的专业术语叫做follower partition,所以每个partitino都有多个副本,其中一个是leader,是选举出来的,其他的都是follower partition。这个过程里,发生了好几次上下文切换,而且还涉及到了好几次数据拷贝,如果不考虑跟硬件之间的交互,起码是从os cache到用户缓存,从用户缓存到socket缓存,有两次拷贝是绝对没必要的。

2024-05-26 08:38:40 904

原创 从0开始带你成为Kafka消息中间件高手---第一讲

京东,我平时比较喜欢用的是京东,送货很快,自营商品,都是放在自己的仓库里,送货很快,用的比较多的是,直男,买东西都是开门见山的,女孩儿不一样,女同志,喜欢逛网站,她喜欢在网站里上下浏览,看网站推荐的一些东西。磁盘随机写,你要随机在文件的某个位置修改数据,这个叫做磁盘随机写,性能是很低的,磁盘顺序写,仅仅追加数据到文件末尾。假设每天有50万个订单,商品(价格、库存、信息),订单,评价,售后,积分,促销,很多其他的数据,每天新增的都是以订单为核心的一些数据,每天都有的增量数据,其他的数据都是围绕订单来的。

2024-05-26 08:38:17 686

原创 Mybatis源码剖析---第二讲

然后executor可以进行对数据库进行操作,对缓存进行处理,对事务进行操作,具体对数据库的操作由statementhandler来做,通过parameterhandler进行参数处理,resultsethandler进行数据库的返回,相关类型由typehandler来进行控制,statementhandler封装了statement,resultsethandler封装了resuletset,至此我们流程就通了。它是不是还有缓存的操作 所以实际上executor他做的是三件最主要的工作。

2024-05-25 15:37:20 1394

原创 微信支付篇---用户支付订单

因为cetus项目还没有发布,没有固定网址,所以我们写程序的时候,这个回调地址可以先随便写一个,等将来我们把cetus项目部署在腾讯云上面,再把这个回调通知地址改成真实的网址即可。body参数是商品的概要描述,这个内容你可以随便写,是给支付订单做备注的,一般写的都是商品的名称。spbill_create_ip参数是终端的IP地址,这里我们上传Cetus主机的IP地址即可,你写什么IP地址,都不会影响到微信支付的。mch_id参数是商户号,申请微信支付的时候,可以在微信商户平台的网站上面得到商户号。

2024-05-25 08:47:42 640

原创 Mybatis源码剖析---第一讲

和其他相关的对象,你用configuration就可以了,你要想获得某一个具体的标签,它相关的内容你是不是有map pedstatement对象就够了?任何一个mybatis应用都有configuration和n个mappedstatement,而每一个mappedstatement,它对应的就是一个一个的标签至此,核心对象数据存储这块的内容,我就给大家分析完了。在这儿你一定要注意,它封装的是这些标签,那这些标签\的内容是和mybatis的mappedstatement一一对应的,而且哎。

2024-05-24 21:08:52 954

原创 从0开始回顾MongoDB

MongoDB 是在2007年由DoubleClick公司的几位核心成员开发出的一款分布式文档数据库,由C++语言编写。目的是为了解决数据大量增长的时候系统的可扩展性和敏捷性。MongoDB要比传统的关系型数据库简单很多。在MongoDB中数据主要的组织结构就是数据库、集合和文档,文档存储在集合当中,集合存储在数据库中。MongoDB中每一条数据记录就是一个文档,。文档类似于 JSON 对象,它的数据结构被叫做BSON。

2024-05-23 09:29:14 717

原创 从0开始回顾ElasticSearch

​ Lucene是Apache软件基金会Jakarta项目组的一个子项目,提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。但Lucene只是一个提供全文搜索功能类库的核心工具包,而真正使用它还需要一个完善的服务框架搭建起来进行应用。Elasticsearch和Solr,这两款都是基于Lucene搭建的,可以独立部署启动的搜索引擎服务软件。

2024-05-23 09:27:45 1186

原创 消费系统故障导致的RocketMQ百万消息积压问题,应该如何处理

此时,我们可以临时修改这4个消费者的代码,让它们在捕获到消息后,不写入NoSQL,而是直接将消息写入一个新的Topic。新的Topic和消费者:为新的Topic创建更多的MessageQueue,并部署相应数量的消费者实例来消费这些消息并写入NoSQL数据库,以提高处理能力,使用一个新的Topic来允许更多的消费者系统并行处理。数据库的压力管理:在扩容消费者的同时,我们必须确保NoSQL数据库能够承受临时增加的5倍读写压力,因为原来只有4个消费者在读写数据库,现在临时变成了20个。

2024-05-22 12:39:50 622

原创 访问域名报The requested url was not found on this server.

官网首页点击控制台 -> 搜索域名注册 -> 点击我的域名 -> 在记录管理下删除第一行记录类型为txt的解析记录。这个问题是由于购买了CDN加速,但没有配置导致的。再次输入域名,成功访问。

2024-05-22 12:24:04 2627

原创 微信支付篇---微信账号登陆小程序

如果商户系统接收到的请求里面没有OpenID值,或者OpenID值跟数据库里面的对不上,就说明这不是一个合法的用户。因为我们搭建的后端项目,整合了Shiro和JWT技术,所以成功登陆小程序的用户,后端系统都会返回一个Token字符串。我们先要实现支付流程,首先必须要做的是,给小程序实现微信登陆的功能。各位同学你仔细想一想,如果是POSTMAN软件,或者HTTPClient这样的客户端程序,模拟小程序发出请求,他们根本都不是真实的用户,而且也没有登陆小程序,所以商户系统必须要加以判断。

2024-05-20 14:30:11 1197 1

原创 微信支付篇---微信支付种类说明

微信支付一共分为其中支付场景,下面我逐一说明。

2024-05-19 23:25:26 2316

原创 微信支付篇---小程序支付接口原理说明

既然这些重要的材料应该保存在商户系统上面,那么申请创建支付订单的请求,就应该由商户系统发出了,各位同学,你说是这个道理吧。在微信平台眼中,商户比微信用户更值得信任,这是因为想要开通微信支付,必须要通过企业认证,而微信用户是不需要实名认证的。然后商户系统,会把支付订单的参数,返回给小程序。使用微信支付,那么就要在微信平台生成支付订单,注意这个支付订单微信平台上面的,跟电商平台的购物订单不是一回事儿。微信平台收到这些信息之后,核实之后没有问题,那么微信平台上面就会生成支付订单,并且把订单的信息返回给商户系统。

2024-05-19 22:58:04 945

原创 SpringMVC

SpringMVC是一个基于Java实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的及部分,简化开发,减少出错,方便组内开发人员之间的配合。MVC● Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao)和服务层(行为Service)。

2024-04-01 19:08:07 1129

原创 从0开始回顾MySQL---事务四大特性

针对快照读(普通 select 语句),是通过 MVCC 方式解决了幻读。针对当前读(select … for update 等语句),是通过 next-key lock(记录锁+间隙锁)方式解决了幻读。我举例了两个发生幻读场景的例子。第一个例子:对于快照读, MVCC 并不能完全避免幻读现象。因为当事务 A 更新了一条事务 B 插入的记录,那么事务 A 前后两次查询的记录条目就不一样了,所以就发生幻读。

2024-03-15 21:26:50 1011

原创 从0开始回顾MySQL --- 三范式与表设计

数据库表设计的原则。教你怎么设计数据库表有效,并且节省空间。

2024-03-15 20:45:59 349

原创 贪心(基础算法)--- 货仓选址

若P < Q,则每把仓库的选址向右移动1单位距离,距离之和就会变少Q - P.同理,若P > Q,则仓库的选址向左移动会使距离之和变小。题目要求的是n个商店与货仓的距离之和s最小,那么我们可以先来看看当商店如何选择才能使得s最小?把A[0]~A[N-1]排序,设货仓在X坐标处,X左侧的商店有P家,右侧的商店有Q家。当N为偶数时,仓库建在A[(N -1)/2]~A[N / 2]之间处都可。因此仓库应该建在中位数处,先把A进行排序,我们数组从0开始,当N为奇数时,货仓建在A[N /2]处,

2024-03-04 13:26:49 545 1

原创 贪心(基础算法)--- 牛马耍杂技

一头牛只撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度的值,现在称该数值为风险值,风险值越大,这只牛撑不住的可能性越高。也就是比较W(i) - S(i + 1)(交换前 ) 和W(i + 1) - S(i)(交换后)W(i) - S(i + 1)(交换前 ) > W(i + 1) - S(i)(交换后)W(i) - S(i + 1)(交换前 ) < W(i + 1) - S(i)(交换后)也就是 W(i) + S(i) < W(i + 1) + S (i + 1)

2024-03-04 11:55:39 837

原创 从0开始回顾Mysql --- MySQL初体验

大白话从0开始回顾MySQL,去除了一些繁琐的操作的演示以及内容,如MySQL安装等,本篇文章适合复习MySQL语法,学习MySQL语句,对MySQL不太熟练的同学,希望对大家有一些帮助。

2024-03-03 17:54:01 1268 1

原创 贪心(基础算法)--- 区间选点

遍历区间,如果当前区间左端点不包含在前一个区间中,则选取新区间,所选点个数加1,更新当前区间右端点。为证明 Ans == Cnt ,我们只需证明 Ans >= Cnt , Ans = 4。:在遍历其他区间的时候,同时更新区间右端点取最小值。既然Ans为最小数量,易得Ans

2024-03-03 17:49:56 788 1

原创 从0开始学Docker ---Docker安装教程

本安装教程参考Docker官方文档,地址如下:1.卸载旧版2.配置Docker的yum库首先要安装一个yum工具3.安装Docker最后,执行命令,安装Docker4.启动和校验。

2024-02-08 19:22:32 944

原创 从0开始学Git指令(3)

现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。为什么Fatal呢,找找原因,原来我们用的是https的链接,但我们需要用的是ssh的链接,我们试着修改重新绑定。

2024-01-11 13:46:23 998

原创 从0开始学Git指令(2)

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git resetore --staged ,就回到了场景1,第二步按场景1操作。因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

2024-01-10 20:38:32 982

原创 SpringSecurity完整认证流程(包含自定义页面和自定义登录逻辑)

retrieveUser() 的具体实现在 DaoAuthenticationProvider 中,代码如下:当我们成功的读取 UserDetails 后,下面开始对其进行认证:在上图中,我们可以看到认证校验分为 前校验、附加校验和后校验,如果任何一个校验出错,就会抛出相应的异常。所有校验都通过后,调用 createSuccessAuthentication() 返回认证信息。

2024-01-09 19:13:18 1192

原创 HashMap的五种遍历方式

【代码】HashMap的五种遍历方式。

2023-12-25 21:09:58 388

原创 date工具类

【代码】date工具类。

2023-12-25 21:03:26 390

原创 Swagger快速入门

官网:https://swagger.io/Swagger 是一个规范和完整的Web API框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。功能主要包含以下几点:A. 使得前后端分离开发更加方便,有利于团队协作;B. 接口文档在线自动生成,降低后端开发人员编写接口文档的负担;C. 接口功能测试;使用Swagger只需要按照它的规范去定义接口及接口相关的信息,再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,以及在线接口调试页面等等;

2023-12-25 20:58:56 1416

原创 从0开始刷剑指Offer(30~35]

【代码】从0开始刷剑指Offer(30~35]

2023-12-25 20:43:21 389

原创 从0开始学会nvm管理工具(node卸载,nvm安装以及使用)

在工作中,我们可能同时在进行2个或者多个不同的项目开发,每个项目的需求不同,进而不同项目必须依赖不同版本的NodeJS运行环境,这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,nvm就是为解决这个问题而产生的,他可以方便的在同一台设备上进行多个node版本之间切换。

2023-12-24 18:05:06 1094

原创 npm常见错误

npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! phantomjs-prebuilt@2.1.15 install: `node install.js`npm ERR! Exit status 1npm ERR! npm ERR! Failed at the phantomjs-prebuilt@2.1.15 install script.npm ERR! This is probably not a problem with npm. Ther

2023-12-24 17:45:43 1022

原创 从0开始刷剑指Offer(20~30]

【代码】从0开始刷剑指Offer(20~30]

2023-12-23 23:41:40 599

原创 2023IDEA报错:Error:java: Compilation failed: internal java compiler error 解决办法

取消勾选使用Java 9 and later之后编译,并确认jdk版本。

2023-12-23 23:37:54 737

7z2107-x64.zip

7zip是一种开源的压缩和解压缩软件,它能够处理多种不同的压缩格式,包括7z、ZIP、RAR、GZIP、TAR等。7zip使用LZMA和LZMA2算法,能够实现高压缩比和快速的解压缩速度,使用户能够更高效地管理和传输文件。 使用7zip,用户可以轻松地进行文件和文件夹的压缩和解压缩。通过简洁易用的用户界面,用户可以选择要压缩或解压缩的文件和文件夹,指定压缩格式和压缩级别,然后7zip会自动完成相应的操作。用户还可以选择是否对文件进行加密、分卷压缩和自解压等高级选项。 7zip不仅支持压缩和解压缩功能,还支持文件的加密和解密。用户可以设置密码来保护压缩文件中的内容,确保文件的安全性。此外,7zip还支持将多个文件压缩到一个分卷压缩文件中,便于传输和存储。 作为一款开源软件,7zip还拥有强大的社区支持和更新。用户可以从官方网站下载最新版本的7zip,并根据自己的需求选择合适的压缩格式和选项。同时,7zip还提供了命令行界面,方便用户进行批量处理和脚本操作。 总之,7zip是一款功能强大、易于使用的压缩和解压缩软件,使用户能够更高效地管理和传输文件。无论是个人用户还是企业用户,7z

2023-07-28

Everything-1.4.1.10fd17.x64-Setup.zip

Everything是一款快速、高效的文件搜索工具,能够帮助用户快速查找电脑上的文件和文件夹。Everything支持Windows平台,并提供了简洁易用的用户界面和快速的搜索功能,使用户能够在短时间内找到需要的文件。 使用Everything,用户只需在搜索框中输入文件名或关键词,就可以迅速获得搜索结果。Everything在搜索时使用了特殊的索引技术,可以实时更新文件库,并实现秒级的搜索响应速度。无论是搜索一个文件夹还是整个硬盘,Everything都能够在瞬间返回搜索结果,大大提高了用户的搜索效率。 不仅如此,Everything还提供了一些高级的搜索功能和选项,例如支持通配符搜索、正则表达式搜索、排除特定文件类型等。用户可以根据自己的需求,对搜索结果进行进一步过滤和筛选,精准定位目标文件。 除了搜索功能,Everything还提供了一些实用的附加功能。例如,用户可以通过右键菜单直接打开搜索结果中的文件或文件夹,方便快捷。Everything还支持自动更新和后台运行,不会占用过多的系统资源。 总之,Everything是一款出色的文件搜索工具,它能够帮助用户快速、准确地找

2023-07-28

史上最好用鹅截图,贴图工具,没有之一

Snipaste是一款功能强大的截图工具,它可以帮助用户快速截取屏幕上的任意区域,并提供了丰富的编辑和标注功能。Snipaste支持Windows和Mac平台,并提供了简洁易用的用户界面和快捷键操作,使用户能够轻松地完成各种截图任务。 使用Snipaste,用户只需按下快捷键(默认是F1键),就可以进入截图模式。用户可以自由选择需要截取的区域,并可以使用鼠标或键盘进行微调。Snipaste还提供了多种截图选项,例如全屏截图、窗口截图、滚动截图等,满足用户不同的截图需求。 在编辑和标注方面,Snipaste提供了丰富的工具和功能。用户可以使用画笔、箭头、矩形、圆形等工具,在截图上进行绘制和标注,突出重点和说明问题。用户还可以添加文字、贴图、马赛克等效果,进一步美化和修饰截图。 除了截图和编辑功能,Snipaste还提供了一些实用的附加功能。例如,用户可以通过拖拽截图到其他应用程序中,快速分享和发送截图。Snipaste还支持快捷键绑定和自定义,在一定程度上提高了用户的工作效率。 总之,Snipaste是一款非常实用的截图工具,它提供了丰富的功能和便捷的操作方式,能够满足用户各种截

2023-07-28

用户管理系统(javase完成的无界面)

这是一个由Java SE完成的用户管理系统。该系统旨在提供一个方便的方式,让管理员能够管理用户信息。管理员可以通过系统添加新用户、删除用户、修改用户信息等。 在系统中,用户信息包括用户名、密码、邮箱等。管理员可以对用户进行授权,设置用户的权限。例如,管理员可以给用户分配特定的角色,角色对应着不同的权限,例如普通用户、管理员等。 用户管理系统还提供了一些额外的功能。例如,管理员可以查看用户的登录日志,了解用户的登录情况和操作记录。管理员还可以对用户进行批量操作,例如一键删除多个用户。 整个系统的架构主要包括前端和后端。前端使用Java Swing编写,提供了用户友好的界面,使管理员更容易操作。后端使用Java编写,处理管理员的请求,并对用户信息进行增删改查的操作。系统将用户信息存储在数据库中,以方便管理和查询。 该用户管理系统能够方便管理员管理用户信息,保护系统的安全性。管理员可以根据用户的权限设置,确保不同用户的操作符合系统的规定。这样可以有效管理和控制系统的用户,提高系统的安全性和管理效率。

2023-07-28

自习室座位预约系统(预约座位)

这是一个由Java完成的图书馆座位预约系统。该系统旨在提供一个方便的方式,让读者能够预约图书馆的座位。读者可以通过系统查看图书馆的座位布局,并选择自己想要的座位。系统会显示每个座位的使用状态,例如已预约、已使用、空闲等。读者可以选择一个空闲的座位进行预约,系统会提示读者预约成功。 在系统中,管理员可以管理座位信息,包括添加新座位、删除座位、修改座位状态等。管理员还可以查看预约情况,例如每个座位的预约数量、使用频率等。 为了提供更好的用户体验,系统还可以提供一些额外的功能。例如,读者可以设置提醒功能,系统会在离预约时间一段时间内发送提醒消息。此外,读者还可以取消预约,如果座位未使用,系统会将座位状态改为空闲。 整个系统的架构主要包括前端和后端。前端使用Vue编写,提供了用户友好的界面,使用户更容易操作。后端使用Java编写,处理用户的请求,并对座位信息进行增删改查的操作。系统将座位信息存储在数据库中,以方便管理和查询。 该图书馆座位预约系统能够方便读者预约座位,提高图书馆资源的利用率,也方便管理员管理和监控座位使用情况。

2023-07-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除