- 博客(56)
- 收藏
- 关注
原创 SpringCloud微服务项目——在线OJ平台
这是一个在线的OJ答题平台,采用 B/S 架构,在用户层面分为 B端(管理员用户)和 C端(普通用户)。管理员用户可以管理题目信息(包括对题目的增删改查)和竞赛信息(包括竞赛的增删改查和竞赛题目信息的管理),同时可以对用户进行管理(包括查看用户信息,拉黑非法用户,来限制用户行为等);普通用户可以在该平台上管理个人信息,在线答题,判题,报名参加竞赛,竞赛结束后会收到排名消息,同时还可以进行竞赛练习,查看排名等操作。本项目采用前后端分离架构,通过微服务进行模块划分,为用户提供了一个实用的在线OJ答题平台。
2025-02-10 13:01:58
1071
原创 Ubuntu中禁止MySQL服务自启动
在ubuntu中通过 kill 命令杀掉mysqld进程或者通过systemctl 命令停止mysql服务时,mysqld会自动进行重启,如果有时我们不想让mysql进程自动重启,可以进行如下操作,(MySQL服务通常指mysqld进程)sudo systemctl is-enabled mysql,如果输出 disabled,则说明MySQL已成功禁止自启动,可通过如下命令重新恢复自启动功能 sudo systemctl enable mysql。这段配置将禁止 MySQL 服务在失败后自动重启,
2024-11-14 10:49:37
456
原创 mysqldump命令搭配source命令完成数据库迁移备份
需保证mysqld在运行中,这个命令的目的是将数据库导出到文件中,例如注意该命令不是在MySQL客户端(即MySQL命令行)执行的,而是在系统命令执行,该命令默认会在当前所在的文件夹下(即执行命令的文件夹下)生成对应的 .sql 文件,或者指定保存在某个文件夹下,例如,在MySQL客户端中,使用 source 命令可以执行一个 .sql 文件,(前提是该数据库存在,并且被选中)例如source 文件路径(/home/ubuntu/db.sql)这两个命令搭配使用,可以快速完成数据库的迁移操作。
2024-11-12 23:41:32
480
原创 xxl-job任务调度失败(已解决)msg:xxl-job remoting error(connect timed out), for url :
msg:xxl-job remoting error(connect timed out), for url :
2024-11-12 16:54:40
2417
原创 Nacos
Nacos (Dynamic Naming and Configuration Service) 是一个开源的动态服务发现、配置管理和服务管理平台,主要用于云原生应用的构建和管理
2024-10-31 18:05:17
701
原创 Description:Field userMapper in user.service.impl.UserServiceImpl required a bean of type ‘user.
说是无法找到CuserMapper类,于是我在检查了一下该类是否有Mapper注解,并在启动类上添加了@MapperScan(user.mapper) 指定扫描该包下的类。时,就会告诉 Spring Boot 不要自动配置数据源。这意味着如果你的应用程序需要数据库连接,它将无法找到任何数据源配置,从而导致启动失败。修饰,原来是我之前没有配置数据库连接时,测试项目加上了以上修饰,于是我去掉该exclude属性后,再次启动项目,就启动成功了。属性后,Spring Boot 会自动配置数据源,只要在。
2024-10-23 16:16:17
704
原创 Java 集合(数据结构)面试题总结
栈和队列的区别 具体的场景应用?HashMap put,为什么线程不安全,有哪些线程安全问题? ConcurrentHashMap 实现原理,如何保证线程安全的?
2024-09-16 16:02:04
1772
1
原创 Mysql 面试题总结
Mysql 索引失效的场景有哪些?死锁的判断原理和具体场景?explain 命令可以看什么,怎么看用了哪些索引?只考虑 Mysql 如何解决超卖问题? B+ 树和 B 树的区别
2024-09-15 13:17:39
1913
原创 SpringBoot 项目——抽奖系统
编程语言:后端:Java 17,前端 JavaScript;后端框架:SpringBoot 3;数据库:Mysql;持久层框架:Mybatis,Mybatis-Plus;缓存:Redis;消息队列:RabbitMQ;日志服务:Slf4j;安全校验:JWT;加密解密:hutool;开发工具:lombok;其他:邮箱服务,阿里云短信服务
2024-08-24 17:30:53
1916
1
原创 网络部分常见面试题
HTTP(HyperText Transfer Protocol)和 HTTPS(HyperText Transfer Protocol Secure)都是用于在网络上传输数据的协议。TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)是两种不同的传输层协议,它们在数据传输方式和应用场景上有很大的区别。这些端口号通常不被分配给特定的服务,而是用于临时或私有通信,也称为临时端口。这些端口号通常用于用户应用和特定的服务。
2024-08-07 19:03:47
761
原创 面试题:Java 集合类的遍历方式,如何一边遍历 一边删除?
Map 集合的遍历删除方式的思路是通过 entrySet() 方法把 Map 中的每个 entry 节点存放在 Set 集合中,再通过 Set 集合的遍历删除方式进行;Set 集合的遍历方式与 list 集合类似,但是 Set 集合不能使用 传统 for 循环遍历,因为 Set 不具备 get() 方法。,并且 Map 键值对映射关系中,
2024-08-07 12:52:39
823
原创 RabbitMQ 入门
MQ( Message queue ),从字面意思上看,本质是个队列,FIFO 先进先出,只不过队列中存放的内容是消息(message),消息可以非常简单,比如只包含文本字符串,JSON 等,也可以很复杂,比如内嵌对象,MQ 多用于分布式系统之间进行通信;:在业务流程中,一些操作可能非常耗时,但并不需要即时返回结果。借助MQ可以将这些操作异步化。:在访问量剧增的情况下,应用仍然需要继续发挥作用,但这样的突发流量并不常见。如果以能处理这类峰值为标准而投入资源,无疑是巨大的浪费。
2024-08-04 20:49:07
1379
原创 docker 安装并测试(Ubuntu下)
输入 docker run hello-world,若出现如下信息,则说明测试成功;使用 docker 命令检查是否已经安装了 docker。1. 创建阿里云账号,获取镜像加速器地址。如果按照过程中出现这样的错误。2. 配置国内镜像源。
2024-07-18 16:42:39
1018
1
原创 MySQL 程序简介
大多数 MySQL 程序都可以从选项文件(配置文件)中读取启动选项,可以在选项文件中指定常用选项,这样就不用在每次运行程序时都在命令行中输入它们,大部分选项文件都是纯文本格式,可以使用任何文本编辑器创建;使用选项 --defaults-file 可以指定要使用的选项文件,客户端程序会读取并应用选项文件中的相关 配置;使用 MySQL Installer 安装 MySQL成功后,my.ini 配置文件默认在。用于显示数据库,表,列和索引信息的客户端。mysql 客户端常用选项介绍。
2024-07-07 19:04:34
1015
原创 Redis 典型应用——分布式锁
以上内容只是如何实现一个简单的互斥锁,在一些实际的应用场景中,我们可能会使用一些其他特殊的锁,比如可重入锁,公平锁,读写锁等等;
2024-07-04 19:26:06
1256
原创 Redis 典型应用——缓存(缓存预热,穿透,雪崩,击穿)
缓存是计算机中一个很经典的概念,核心思路是把一些常用的数据放到访问速度更快的地方,方便随时读取;但对于计算机硬件来说,往往访问速度越快的设备,成本越高,存储空间越小,缓存是更快,但空间上是不足的,因此大部分时候,缓存只存放一些热点数据;
2024-07-01 09:55:58
1451
1
原创 Redis 集群模式
Redis 官方的解释是:节点之间通过心跳包通信,心跳包中包含了该节点持有哪些 slots,这个是使用位图这样的数据结构表示的,表示 16384 (16k) 个 slots,需要的位图大小是 2KB,如果给定的 slots 数更多了,比如 65536 个了,此时就需要消耗更多的空间,8 KB 位图表示了,8 KB,对于内存来说不算什么,但是在频繁的网络心跳包中,还是⼀个不小的开销的;
2024-06-30 10:16:20
872
原创 Redis 哨兵模式
哨兵模式(Redis Sentinel)是用来解决主从模式中的高可用问题的,用于监控 Redis 主从架构中的主节点和从节点,可自动处理主节点故障问题,可以确保 Redis 服务的可用性和健壮性;相关名词解释由上图可以看出,哨兵节点就是一个 redis-sentinel 进程;
2024-06-25 10:38:30
859
原创 Redis 主从模式
在若干个 Redis 服务器节点中,有的是主节点,有的是从节点;每个从节点只能有一个主节点,一个主节点可以有多个从节点;从节点就是主节点的副本,从节点要同步主节点上的所有数据,同时,当主节点对数据有任何的修改,也会同步到从节点上,从节点不允许修改数据;配置了主从模式后,比较有效的解决了可用性问题,一台服务器挂了,还有另外的服务器可以支撑服务,通过负载均衡也可以有效的处理高并发问题;
2024-06-24 10:51:55
1778
原创 Redis 事务
若存在两个客户端,一个客户端(ubuntu)开启了事务之后,先执行了 set key 111,然后另一个客户端(ubuntu2)没有开启事务,执行了 set key 222,然后客户端(ubuntu)执行了事务,此时get key 得到的结果是 111,因为客户端(ubuntu)虽然先输入 set key 命令,但是是后执行事务的,也就是后执行 set key 命令的;MySQL 中事务的原子性则为:将多个操作打包在一起执行,要么全部都执行成功,要么全部都不执行,当执行不成功时,则会回滚;
2024-06-22 14:39:15
663
原创 Redis 持久化策略
Redis 提供了多种持久化机制,用于将数据保存到磁盘中,以防止因服务器重启或故障而导致的数据丢失。主要的持久化策略有两种:RDB (Redis Database) 和 AOF (Append Only File),即当 Redis 服务器重新启动时,会读取相应的文件,来还原上次退出时的数据;
2024-06-21 21:36:40
1005
1
原创 计算机网络——传输层重要协议(TCP、UDP)
IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址,即IP地址用于定位主机的网络地址;IP地址是一个32位的二进制数,通常被分割为4个 8位⼆进制数(也就是4个字节),通常用 "点分十进制" 的方式来表,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数) 如:100.4.5.6;:在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程;:在网络上传输的数据包的格式;
2024-06-18 21:32:06
1679
原创 Java 垃圾回收机制 GC 及常用的垃圾回收算法
在 Java 中,所有的对象都是要存在内存中的(也可以说内存中存储的是一个个对象),因此我们将内存回收,也可以叫做死亡对象的回收;;而栈中的局部变量会跟随栈帧的声明周期结束,静态变量生命周期是整个程序,因此都不需要 GC 回收;GC 回收操作可分为两步——找到垃圾对象和回收垃圾对象。
2024-06-01 20:50:14
1028
1
原创 JVM 虚拟机
JVM 是 Java Virtual Machine 的简称,意为 Java 虚拟机,虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。常见的虚拟机有:JVM、VMwave、Virtual Box等。JVM 是一台被定制过的现实当中不存在的计算机;
2024-06-01 13:55:13
864
原创 Java 多线程相关面试题
这个是 Java1.7 中采取的技术,Java1.8 中已经不再使用了,简单的说就是把若干个哈希桶分成一个 "段"(Segment),针对每个段分别加锁,目的也是为了降低锁竞争的概率,当两个线程访问的数据恰好在同一个段上的时候,才触发锁竞争;偏向锁不是真的加锁,而只是在锁的对象头中记录一个标记(记录该锁所属的线程),如果没有其他线程参与竞争锁,那么就不会真正执行加锁操作,从而降低程序开销,一旦真的涉及到其他的线程竞争,再取消偏向锁状态,进入轻量级锁状态;
2024-05-30 23:54:44
539
原创 Java多线程(04)—— 保证线程安全的方法与线程安全的集合类
其含义为:CAS(M, A, B);M 表示内存,A 和 B 分别表示一个寄存器;如果 M 的值和 A 的值相同,则把 M 和 B 的值交换,如果不同,则无事发生;因为,因此可以基于 CAS 指令,不进行加锁,来编写线程安全代码;CAS 指令操作经过操作系统,JVM 的层层封装,最后 Java 标准库,提供了一些工具类,其中最主要工具类就是由于原子类内部用的是 CAS 实现,所以性能要比加锁实现高很多;在包下;
2024-05-30 20:15:33
1399
原创 Java 阻塞队列与生产者消费者模型
阻塞队列是⼀种特殊的队列,其也遵守队列 "先进先出" 的原则;阻塞队列是⼀种阻塞队列的⼀个典型应用场景就是 "⽣产者消费者模型",这是⼀种非常典型的开发模型;
2024-05-29 11:10:32
416
原创 Java多线程(02)—— 线程等待,线程安全
终止线程就是要让 run 方法尽快执行结束,线程等待就是让一个线程等待另一个线程执行结束,再继续执行;实现线程等待的方式有 join 和wait,sleep也算一种吧;产生线程安全问题的原因:
2024-05-28 19:34:00
1667
原创 Java实现线程安全的单例模式
点这里查看线程安全的详细讲解;以上是一个饿汉式实现的单例模式的典型代码;由代码可以看出, 在类加载的时候对象已经创建好了,也就是不管你需不需要使用,都已经存在了,由 getInstance 方法返回这个对象,getInstance 方法直接 return,只涉及到读操作,不涉及写操作,因此饿汉式是线程安全的;
2024-05-28 19:32:35
1508
原创 线程池拒绝策略(超详细讲解)
共用四种拒绝策略分别为: AbortPolicy,CallerRunsPolicy,DiscardPolicy,DiscardOldestPolicy 它们都是;下面的 MyRunnable 类用来描述一个任务。
2024-05-27 17:20:48
2204
原创 Java 多线程(01)—— 认识线程和创建线程
运行一个 Java 程序就是跑一个 Java 进程,该进程至少有一个线程即主线程,而 main 方法就是主线程的入口;
2024-05-27 15:49:42
1206
原创 Java常见集合类三(Map,HashMap put 方法详解)
Map 中存放键值对的 key 是唯一的,value 是可以重复的;Map 中的 key 可以全部分离出来,存储到 Set 中来进行访问 (因为 key 不能重复);Map 中的 value 也可以全部分离出来,存储在 Collection 的任何一个子集合中 ( value 可能有重复);Map中键值对的 key不能直接修改,value 可以修改,如果要修改 key,只能先将该 key 删除掉,然后再来进行重新插入。
2024-05-26 11:11:25
1555
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人