- 博客(95)
- 收藏
- 关注
原创 IDEA 编译项目时卡在Parsing java,最终报out of memory
通常是因为堆内存太小,无法有效管理正在创建和销毁的对象。在 IDEA 的安装目录下找到 bin 文件夹,编辑。
2024-08-27 20:19:27 295
原创 Nginx + Docker Compose前后端分离部署到服务器过程记录
1、修改配置文件,将本地环境改为开发环境在当前项目的文件夹下可以看到dist文件夹,该文件夹里面的内容就是打包生成的。3、将本地项目上传到服务器目录将dist文件夹的文件上传到服务器前端项目所在的目录:/var/www/vue_app/(最好是统一在var/www目录下)采用scp进行远程文件传输:scp 本地项目路径 服务器项目路径显示如下则表示安装成功!5. 添加配置文件重启nginx:访问8.130.xxx.xxx(服务器ip),如果显示成功则说明配置成功。
2024-08-25 21:53:06 918 3
原创 配置nacos显示nacos registry register finished但是nacos页面看不到服务
子工程的application.yml。在nacos页面查看不到服务。
2024-08-04 12:12:29 240
原创 CMS垃圾回收过程中重新标记阶段为什么不能清理浮动垃圾
至于 “浮动垃圾”,因为 CMS 在 并发标记 时是并发的,GC 线程和用户线程并发执行,这个过程当然可能会因为线程的交替执行而导致新产生的垃圾(即浮动垃圾)没有被标记到;而 重新标记 的作用只是修改之前 并发标记 所获得的。因为在并发标记时,因为是 GC 和用户线程是并发执行的,可能导致一部分已经标记为 从 GC Roots 不可达 的对象,若该对象在用户线程的修改下又可达了,Remark 的作用就是将这部分对象又标记为 可达对象(漏标)。,所以是没有办法处理 “浮动垃圾” 的。不可达对象为可达的对象。
2024-06-28 20:05:56 261
原创 Spring控制反转和依赖注入的理解
首先想说说IoC(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好、qq号、电话号、ip号、iq号………,想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节。
2024-06-23 20:27:21 640
原创 124. 二叉树中的最大路径和
二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次。该路径 至少包含一个 节点,且不一定经过根节点。当前节点的最大路径: max(自己,自己+左边,自己+右边,自己 + 左边 + 右边)当前节点作为子节点时的贡献:max(自己,自己+左边,自己+右边)给你一个二叉树的根节点 root ,返回其 最大路径和。路径和 是路径中各节点值的总和。当前节点作为子节点时的贡献。
2024-06-16 21:04:41 455
原创 happens-before 关系
程序顺序规则: 在同一个线程中,代码 x = 1;中的 x = 1 操作 happens-before y = 2 操作。监视器锁规则: 一个线程获取了锁,执行了一些操作,然后释放了锁,另一个线程获取了同一个锁,那么释放锁的操作 happens-before。volatile 变量规则: 一个线程将一个 volatile 变量的值修改为 1,另一个线程读取该变量的值,那么写操作。它定义了哪些操作必须在哪些操作之前执行,从而避免了数据竞争和不一致性问题。happens-before 读操作。
2024-06-14 09:42:03 597
原创 雪花算法和UUID
雪花算法是一个分布式id生成算法,它生成的id一般情况下具有唯一性。由64位01数字组成,第一位是符号位,始终为0。接下来的41位是时间戳字段,根据当前时间生成。然后中间的10位表示机房id+机器id,也可以是单独的机器id。最后12位是序列号。
2024-06-13 20:43:17 1137
原创 linux查看端口是否被占用 / 包含某个字符的文件/当前正在运行的进程/根据端口号查找进程
命令用于实时显示当前运行的进程及其资源使用情况。
2024-06-12 12:04:38 284 1
原创 内连接和外连接
内连接:只返回两个表中满足连接条件的行。左外连接:返回左表中的所有行以及右表中满足连接条件的行,右表无匹配行时字段显示为NULL。右外连接:返回右表中的所有行以及左表中满足连接条件的行,左表无匹配行时字段显示为NULL。全外连接:返回两个表中的所有行,无论是否满足连接条件,未匹配行字段显示为NULL。
2024-06-11 21:36:56 236
原创 GET和POST的区别
GET 和 POST 最本质的区别是“约定和规范”上的区别,在规范中,定义 GET 请求是用来获取资源的,也就是进行查询操作的,而 POST 请求是用来传输实体对象的,因此会使用 POST 来进行添加、修改和删除等操作。按照约定来说,GET 和 POST 的参数传递也是不同的,GET 请求是将参数拼加到 URL 上进行参数传递的,而 POST 是将请参数写入到请求正文中传递的。
2024-06-10 21:04:51 256
原创 QueryWrapper 和 LambdaQueryWrapper 的区别
QueryWrapper是一种通用的查询构造器,允许通过字符串形式直接指定数据库的字段名来构建查询条件。例如,queryWrapper.eq(“name”,“Alice”) 用于构建等于条件。优点是使用简单直接,适用于所有情况。缺点是它依赖于字符串字面量,这可能导致在数据库字段名更改时出现运行时错误,因为这些错误不会在编译时被捕捉到。
2024-06-06 16:00:11 411
原创 Mybatis-Plus的一些理解
MybatisPlus在Mybatis的基础上进行了增强,进一步简化了SQL的编写。对于普通的单表的CRUD,MyBatisPlus提过了相关接口进行快速操作。此外MybatisPlus还支持使用查询构造器。来进行一些复杂的查询。
2024-06-06 15:51:35 169
原创 对简单工厂模式、工厂方法模式、抽象工厂模式的简单理解
三部分组成把创建对象的任务交给一个工厂类来实现,对业务进行封装。优点:实现了任务分离,客户端不用关心业务的具体实现,交由工厂来“生产”。缺点:违背开闭原则,拓展时要修改工厂类。
2024-05-29 11:07:41 440
原创 mysql的inner join 和left join区别
INNER JOIN 只返回两个表中满足连接条件的匹配行。换句话说,它只返回那些在连接的两个表中都有匹配值的行。如果某一行在其中一个表中没有匹配项,那么这行不会出现在结果集中。
2024-05-28 20:36:25 617
原创 类图的六大关系
继承是一种类与类之间的关系,表示一种泛化和特化的关系。子类继承父类的特性和行为。关联关系是指两个类之间的链接,它使一个类知道另一个类的属性和方法。组合关系也是整体与部分的关系,但是部分不能脱离整体存在,依赖关系是一种使用关系,一个类的实现需要另一个类的帮助。实现关系是一个类实现接口的方法,体现了类与接口的关系。聚合关系是一种特殊的关联关映射,表示整体和部分的关系,但整体与部分不是强依赖的。
2024-05-25 11:45:03 513
原创 Java异常的捕获和抛出底层
当代码执行到一个会抛出异常的状态时,JVM会实例化一个相应的异常对象。这个对象包含了异常发生时的信息,如异常类型、错误消息、和堆栈跟踪。这些信息有助于开发者了解异常发生的环境和原因。
2024-05-24 14:24:52 238
原创 慢SQL分析
为什么会出现慢SQL?未用索引,就会造成全表扫描;又或者索引失效了单表数据量太大,导致加了索引也无济于事子查询过多(大量join会导致笛卡尔积后再筛选,所以大量join会导致大量运算使得sql变慢)怎么进行慢SQL分析启用慢查询日志,设置阈值,找到慢SQL执行explain sql, 分析sql执行计划,重点关注: type(ALL(全表扫描)、index(索引全扫描)),key(实际使用的索引)、key_len(索引长度)、rows(估计为了找到所需的行而必须检查的行数。)如何优化
2024-05-23 21:12:59 175
原创 Redis基本数据结构
embstr和raw类型的区别在于,RedisObject和embstr是连续存储的,只需要访存一次,而raw是分开存储的,需要访存两次。
2024-05-22 10:14:59 506
原创 Java反射
● 在运行时获取类的完整信息,从而操作类或对象的属性或方法。本质是JVM在得到class对象之后,通过class对象进行反编译,从而获取类的各种信息。● Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁。
2024-05-20 21:29:20 384
原创 ArrayList和Ventor的区别
它是专门为并发应用设计的,特别适合于在多线程环境中频繁读取但很少修改的情况。Collections.synchronizedList 是一个静态方法,它接受任何 List 实现(如 ArrayList、LinkedList 等),并返回一个新的 List 对象,该对象的所有方法都是通过一个单一的对象锁同步的。写时复制策略的核心思想是,每当列表发生修改操作(如添加、删除、设置等)时,不直接在当前的数组上修改,而是先复制出一个新的数组,然后在这个新的数组上进行修改,修改完成后再将原数组引用指向新数组。
2024-05-20 10:33:09 894
原创 接口和抽象类的区别
如果需要定义一个基类并希望它的子类继承它的特征,则应该使用抽象类。如果您希望多个类共享相同的特征和行为,则应该使用接口。● 接口不能定义普通方法,而抽象类可以定义普通方法以及方法的代码。● 接口一般只包含抽象方法,Java8之后允许可以定义默认方法。● 接口可以实现多个而抽象类只能单继承。
2024-05-19 21:25:35 304
原创 元空间和方法区有什么不同
元空间并不在虚拟机内存中,而是使用本地内存(即操作系统的内存)。元空间不再有字符串常量池和类静态变量池,这些内容被移到了堆中。● 类的结构信息、方法信息。
2024-05-19 21:23:34 155
原创 RabbitMQ消息的可靠性、顺序性和幂等性
如何保证消息队列消费的幂等性,这一块应该还是要结合业务来选择合适的方法,有以下几个方案:● 消费数据为了单纯的写入数据库,可以先根据主键查询数据是否已经存在,如果已经存在了就没必要插入了。或者直接插入也没问题,因为可以利用主键的唯一性来保证数据不会重复插入,重复插入只会报错,但不会出现脏数据。● 消费数据只是为了缓存到redis当中,这种情况就是直接往redis中set value了,天然的幂等性。
2024-05-19 21:17:42 929
原创 Java类加载过程
加载是一个读取class文件,通过【类加载器】将class文件装载到jvm中的方法区内,并在JVM堆中生成一个便于用户调用的java.lang.Class类型的对象的过程。对class的成员变量、静态变量、静态代码块的赋值,如果有【实例化对象】,则会调用方法对实例变量进行初始化,并执行对应的构造方法内的代码。类加载主要分为以下五个阶段。
2024-05-19 21:12:31 209
原创 Github 操作指南
1、远程仓库拉取到本地2、定位到要上传的文件夹下面启动Git Bash3、添加要上传的文件git add4、提交合并更改5、推送确保本地仓库和远程仓库结构一致。
2024-05-18 21:40:13 453
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人