自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Feign使用中对于Get请求自动变成Push引发的 Sharding value null must implements Comparable 报错的解决方法

今天在做短链接系统的前后端联调,在前端查询短链接数据的时候发现了问题;对于短链接回收站的拉取异常,很快地就定位到了问题在哪显然这里是打错了,在用Feigin访问后管的时候,用错了方式。

2024-04-12 21:40:30 339

原创 实际业务中的异常处理(全局异常拦截器)

我们先编写一个AbstractException。

2024-03-15 10:33:20 378

原创 Docker单机下的容器网络管理

Docker为我们默认提供了三种网络驱动:bridge、overlay、macvlan。我们可以用bridge来试着实现一下自定义的桥接网络这里就创建好了一个名为test的桥接网络我们新建一个使用test网络的容器使用ifconfig来看一下网络情况我们现在退出这个容器,但不是关闭它,而是将其挂到后台这里按ctrl + q和ctrl + p就能挂起我们再次创建一个容器,这次不指定网络,看他的网络如下很明显他们不在一个网段,应该是相互隔离的,这是ping是ping不通的。

2024-03-13 14:47:26 1992

原创 Docker入门笔记(1)

镜像是容器的基石,有了镜像才能创建容器实例,接下来我们就要浅浅研究一下镜像的基本结构我们在打包项目的时候往往需要一个基本的环境,比如说数据库、缓存等等,这样我们才能基于这个系统来安装软件,这种基本的系统镜像我们称之为base镜像一般的base镜像就是各个Linux系统的发行版,比如说Ubuntu、Centos等我们还是以centos为例子这里解释下base镜像的机制。

2024-03-13 08:58:05 1016

原创 使用IDEA构建SpringBoot程序的镜像

我们尝试访问一下8080端口,会发现无法访问,这是因为docker容器内部和外部的网络是隔离的,如果我们想要访问容器的服务器,就需要将对应端口绑定在宿主机上,同时让宿主机也开放这个端口,这样才能实现容器内的网络连接。CMD命令可以设定容器启动后执行的命令,EXPOSE可以指定容器需要暴露的端口,但是现在我们还没有学习网络相关的知识,所以暂时不使用,这里指定为我们启动Java项目的命令。点击启动即可,这里有点小翻车,因为我的项目用的是jdk17,而我们得镜像里只安装了jdk8。

2024-03-12 11:18:42 680

原创 记一次痛苦的项目部署经历(VITE&VUE&NPM&NODE部署踩坑指北)

在创建项目的git仓库时要仔细仔细再仔细,多确认一下仓库的结构,不要跟这次一样搞了几个月最后得删掉重新部署与后端完备的SpringBoot项目不同,前端项目的部署对系统环境非常及其超级敏感,在部署的时候要注意版本在写前端的时候,尽量使用确定的版本,避免安装一时爽,部署火葬场!比如而不是导入项目时要导入正确的文件,比如SpingBoot要导入pom.xml文件使用git同步文件时要提前规划好gitignore文件的内容,避免上传过多无用的非必要代码部分。

2024-03-11 18:24:14 1160

原创 Java JUC 笔记(2)

AutomicInteger:原子更新intAtomicLon:原子更新longAtomicBoolean:原子更新boolean//如果想实现i += 2这种操作,可以使用 addAndGet() 自由设置delta 值我们可以将int数值封装到此类中(注意必须调用构造方法,它不像Integer那样有装箱机制),并且通过调用此类提供的方法来获取或是对封装的int值进行自增。如何让传统线程容器安全?显而易见的我们可以使用关键字,但是这样效率太低了。

2024-03-11 11:30:34 809 1

原创 线程同步器AQS源码简析/JUC(带笔记)

现在,突然线程3也开始尝试获取锁,恰巧在这时线程1释放锁了,线程3说:“消息队列没人在排队,CAS也没人在用,那我就不客气了”,于是线程3顺利地拿到了锁,实现了插队的目的。现在假设有线程1,线程2和线程3;释放锁其实也是类似的,在释放的过程中,需要唤醒队列中下一个结点中的线程,然后还要维护AQS中的状态(删除挂起的队列,减少等待队列中节点数量)所以,严格来讲,公平锁只有在等待队列非空的时候才是公平的,就算是公平,也不是按照发请求的先后的公平,而是按照进入等待队列的时间的公平。

2024-03-07 13:42:31 863

原创 Java JUC 笔记(1)

使用synchronized加锁时,一定是和某个对象关联的;当带锁的方法反编译成字节码后,我们会看到有一个monitor enter指令和monitor exit指令,他们就分别对应加锁和释放锁;每个对象都有一个monitor监视器与之对应的是,而monitor enter正是要获取该对象监视器的所有权,一旦某个对象的监视器被获取,其他对象就无法得到(唯一)仔细看字节码中,其实有两个monitor exit;

2024-03-02 14:58:50 850

原创 Redis + RabbitMQ 秒杀代码(逐步测试修改)

因为主要体现秒杀的业务,所以这里没融合jwt或者Session的登录校验,故id是直接显示传入的。

2024-02-26 14:44:53 774 1

原创 Redis秒杀

按照我们平常做的自增的id来做的数据库,存在许多问题id规律性过于明显,可以对其进行破解;比如可以通过id的变化来判断商城的订单,通过id来爬取数据等会受到单表数据量的限制。

2024-02-21 22:46:28 972

原创 JVM调优-GC调优

JVM有动态年龄判断机制:将年龄从小到大的对象占据的空间加起来,如果大于survivor区域的50%,然后把等于或大于该年龄的对象,放入到老年代,所以也不建议修改。-Xmx 设置的是最大堆内存,需要注意的是,计算可用内存时,需要将元数据、操作系统和其他软件占用的内存排除掉。-XX:MaxMetaspaceSize=值 参数指的是最大元空间大小,默认值比较大,如果出现元空间内存泄漏会让操作系统可用内存不可控,建议根据测试情况设置最大值,一般设置为256m。在设置这个值之前需要进行大量的计算,不建议手动修改。

2024-01-19 20:38:30 388 1

原创 JVM调优-内存调优

Java中如果一个对象不再被使用,但他仍在GC ROOT的引用链上,根据之前提到的回收办法,他就不会被垃圾回收器回收,这就造成了内存泄露。内存泄漏往往发生在堆区。

2024-01-18 23:09:57 888 1

原创 JVM的垃圾回收机制详解

这项改造也是有必要的,永久代的调优是很困难的,虽然可以设置永久代的大小,但是很难确定一个合适的大小,因为其中的影响因素很多,比如类数量的多少、常量数量的多少等。我们首先将所有待回收的对象整齐地排列在一段内存空间中,并对需要回收的对象进行标记,然后将所有需要回收的对象丢到尾部,这样这段空间的前半部分是无需回收的对象,后半部分是需要回收的对象,直接将后半部分清理就行了。当已经存在的根节点不满足其存在条件时,根节点与对象之间的连接将被断开,如果断开后的对象没有被任何根节点所引用,说明该对象不再被使用。

2024-01-17 16:58:57 945

原创 JVM的内存管理

所以说,直接内存实际上就是JVM申请的一块额外的内存空间,但是它并不在受管控的几种内存空间中,当然这些内存依然属于是JVM的,由于JVM提供的堆内存会进行垃圾回收等工作,效率不如直接申请和操作内存来得快,一些比较追求极致性能的框架会用到堆外内存来提升运行速度,如nio框架。在Java中,不允许使用指针等工具来直接操作物理内存,对于内存的操作时由JVM来代我们进行处理的,虽然这样让Java的内存管理变得简单,但是这样降低了Java操作内存的效率,同时如果JVM在内存操作时出现了问题,难以找到出问题的点。

2024-01-16 17:04:44 368 1

原创 JVM启动流程

在解析虚拟机参数的过程中,如果设置了Xss,就会按照Xss配置IDE大小来设置线程栈大小,若没有传入Xss,则根据操作系统的不同,读取对应系统的配置文件,来对线程栈大小进行设置。载入主类后获取主类中的主方法并执行,一旦主方法开始执行,Java程序就会开始快速运转了,直到走到主方法的最后一行才会return返回。这个函数将会在新的线程中执行JavaMain函数。将JVM环境装入内存后,接下来要做的就是解析JVM的参数。函数,创建一个新的线程来执行新建JVM实例的操作。寻找main函数并且执行。

2024-01-15 11:37:25 425 1

原创 一个基于SpringBoot3和Vue3的问卷调查系统

一个基于SpringBoot3和Vue3的开源的问卷调查系统。。。

2024-01-12 20:56:45 1101

原创 油壶里有10升油,现在只有两个分别能装3升和7升油的瓶子,需要将10 升油等分成2 个5 升油。程序输出分油次数最少的详细操作过程。倒油(水)问题+模拟解决

1、油壶里有10升油,现在只有两个分别能装3升和7升油的瓶子,需要将10 升油等分成2 个5 升油。程序输出分油次数最少的详细操作过程。选作:将油壶的容量改为L 升,两个瓶子的容量分别为M 和N 升,其中:L、M和N 均为正整数,且L 为正偶数、L = M + N,输出利用这两个瓶子将油壶中油等分的最少操作过程,如果不能等分,输出“None”。

2023-10-16 20:18:03 337 1

原创 MIT6.046算法设计 L3 快速傅里叶变换(分治思想) 学习笔记

这是一篇不求甚解的笔记(因为作者太菜),只是大概的粗略的了解了一下快速傅里叶变换的的分治思想你看。

2023-10-16 12:14:26 68 1

原创 MIT6.046算法设计 R1 矩阵乘法与主定理 学习笔记

在L1中我们学习了区间调度。

2023-10-14 13:09:45 69 1

原创 MIT6.046算法设计 L2 学习笔记

总时间复杂度= 找中值的中值的时间+递归处理的时长(不会算…)+对每个数列的排序时间课上是这样推递归时间的。

2023-10-10 11:27:32 58 1

原创 MIT6.046算法设计 L1 学习笔记

区间调度算法属于贪心算法;贪心算法是动态规划DP算法的一个特例,其需要满足更多的条件(整体的最优解可以通过一系列的局部最优解得到),相对的,贪心的效率比DP高。

2023-10-10 11:26:43 82 1

原创 rocketmq连接控制台报错rocketmq RemotingConnectException: connect to [rocketmqOS:9876] failed

尝试一天修改各种配置无果,翌日重新尝试,仔细阅读日志,发现。

2023-09-22 00:07:03 888 1

原创 武汉市地铁引导系统

本系统前端基于脚手架搭建,实现了基础的GUI功能后端用了SpringBoot,mybatis等技术武汉市地铁线路截取日期为2023.5.23日。

2023-06-20 20:49:15 149 1

原创 verilog代码实现模拟交通灯

模拟交通灯输入信号:时钟信号clk输出信号:东西向红黄绿灯信号r1、y1、g1以及南北向红黄绿灯信号r2、y2、g2设计要求:1、输出高电平表示相应灯点亮,低电平表示相应灯熄灭。2、初始时东西向绿灯,g1输出高电平,南北向红灯,r2输出高电平。3、12个时钟脉冲(可统一使用时钟脉冲的上升沿或者下降沿,下同)后,原绿灯方向变为黄灯,再3个时钟脉冲后,黄灯方向变红灯,同时原红灯方向变绿灯;

2023-06-20 17:53:26 3536 1

原创 C语言实现学生信息管理系统(详细注释)

学习B站up主C3程序猿的视频后总结分享【学生管理系统】_哔哩哔哩_bilibili【学生管理系统】https://www.bilibili.com/video/BV1uW411Q7Cf?spm_id_from=333.999.0.0#include<stdio.h>#include<stdlib.h>#include<string.h>//学生结点typedef struct _STU{ char arrStuName[20]; .

2021-12-12 22:40:30 2468

空空如也

空空如也

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

TA关注的人

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