- 博客(398)
- 收藏
- 关注
原创 java项目运行时遇到Connection refused: no further information问题解决办法,(在电脑系统更新情况下)重启可能会删掉rabbitmq-server,mlgb
java项目启动遇到的问题如下主要是以下问题Connection refused: no further information 连接被拒绝rabbitmq的一般的解决办法localhost127.0.0.1端口一致,配置文件未更改,所以端口,ip地址没错查看防火墙看是否关闭了或者防火墙是否放端口号:5672过发现没有问题,但是连接还是被拒绝然后查看进程是否被占用。
2025-03-12 17:44:33
607
原创 IDE开发工具web storm 代码规范配置,配置git hook
其中的cd命令是查找相关.git目录,因为工程目录结构不同,.git目录存放位置不同,需要根据实际情况来进行适配。6.修改生成的.husky/pre-commit,开启HUSKY_DEBUG参数,执行lint前切换工作目录。出现husky - Git hooks installed提示代码husky安装成功。4.运行npm install 或者yarn。7.使用提交代码进行husky 钩子生效测试。5.添加git hook。vscode:请自行搜索。
2025-02-14 15:46:08
316
原创 git拉取远程项目一直找不到仓库的问题解决方法
4.idea中如果拉取显示仓库还是找不到的话,说明idea中别人的git账号没有退掉,点击左上角file--settings--apperarance&Behavior--System Settings--Passwords--选择不保存密码,忘记密码,这样拉取或提交远程仓库的话会让你重新输入账号密码,这样就可以更改idea中的git账号了。3.退出git缓存git credential-cache exit,拉取时输入自己的账号密码。git config --list查看git信息。
2025-02-14 11:27:53
547
原创 什么是内存溢出和内存泄漏?如何解决?
内存溢出(OutOfMemoryError)是指程序在运行时尝试分配内存,但由于没有足够的内存可用,Java 虚拟机(JVM)抛出了错误。常见的内存溢出区域包括堆内存和永久代(在 Java 8 之后被元空间取代)。
2024-11-24 17:41:12
1930
原创 通用八股文技巧:MVCC原理拆解
今天我来看一道非常经典的面试题:MVCC 原理。对于这个八股文面试题,我们如何回答更全面、更好呢。我会从这些维度串联起来:什么是数据库事务,为什么要有事务事务包括哪几个特性事务并发存在的问题事务的四大隔离级别数据库是如何保证事务的隔离性的呢到底什么是MVCCMVCC实现的五个关键知识点MVCC实现原理拆解分析事务,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。
2024-11-24 17:40:06
716
原创 K8S和Docker区别详解(5大核心区别)
在实际应用中,Docker 和 Kubernetes 经常一起使用,Docker 负责创建、和管理容器镜像,K8S 负责集群中的容器调度、扩展和管理。通过在宿主机上创建隔离的命名空间、和受限的控制组,Docker 可以为每个容器提供独立的运行环境,并确保容器间互不干扰。K8S 负责:在多个节点上管理、和协调容器,可以实现容器的自动部署、扩展、监控...等。,帮助用户管理集群中的容器应用,提供高可用性、负载均衡、扩展、滚动更新等功能。Docker 关注的是容器的创建、打包和运行,不负责容器的调度、和管理。
2024-11-06 19:49:05
780
原创 聊聊保证线程安全的9个小技巧
weakCompareAndSetInt()方法中,通过偏移量offset从对象o中获取字段的当前值,然后比较当前值和传入的期望值是否相等,如果相等,则将字段的值更新为x,返回true,如果不相等,则不会执行更新操作,返回false。1、单独操作:上述我们的demo中,出现了两个线程A、B,它们分别调用get()、put()方法,虽然看起来像是在组合操作,但实际上对于单个线程而言,这是单独操作,是线程安全的。如果synchronized(其他对象),则锁的对象是你指定的对象。
2024-11-06 19:47:33
1317
原创 行列转换-横表竖表互相转换
原始数据中是一个竖表,每个学生的每个学科一行数据,对其转换成一张横表,即表中学生id为主键,包含语文、数学、英语三列,列值为对应学科分数。原始数据为一张横表,分别有三列成绩列,想要转成竖表,需要转换成三列分别为 学生id、学科、成绩,转换完成之后学生id将不再是主键。因为subject中的别名要作为subject的内容,我们需要使用汉字,同时在语法上是别名,所以需要时`` ,不是用''。今天给大家带来spark的一个新的知识点,pivot,这个不是函数,是一个子句。用于存放反透视列名的列的名称。
2024-11-06 19:39:20
986
原创 微服务组件Nacos注册中心
一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。集注册中心+配置中心+服务管理平台服务发现和服务健康监测动态配置服务动态 DNS 服务服务及其元数据管理2. Nacos注册中心管理所有微服务、解决微服务之间调用关系错综复杂、难以维护的问题。2.1 注册中心演变及其设计思想在这里插入图片描述2.2 核心功能。
2024-11-01 21:31:11
785
原创 Spring Boot 的核心特性有哪些?
Spring Boot 通过自动配置、内嵌服务器、起步依赖等核心特性,大大简化了 Spring 应用的开发过程。它为开发者提供了一个统一的开发平台,涵盖了从开发到测试、部署、监控等各个方面的需求,成为现代 Java 应用开发的主流选择之一。
2024-10-31 20:08:39
1100
原创 日常工作中,你是如何优化SQL的?
in 查询会先执行内部查询部分 SELECT customer_id FROM orders,获得 orders 表(大表)中的所有 customer_id,然后在 customers 表(小表)中查找匹配的 id。如果没有的话,可以在自己搞个深分页,或者因为数据量、或者因为没加索引等原因,导致的慢SQL,然后按照这个思路去排查一遍。因此,应考虑在where的条件列,建立索引,尽量避免全表扫描。const:通过一次索引就能找到数据,一般用于主键或唯一索引作为条件,这类扫描效率极高,,速度非常快。
2024-10-30 21:25:32
873
原创 常见的排序算法
算法的学习也是有着阶段性的,从入门到简单,再到复杂,再到简单。最后的简单是当你达到一定高度之后对于问题能够准确的找到最简单的解答。就如同修仙一样,真正的高手一招足以击退万马千军!算法里边最常用也是最基本的就是排序算法和查找算法了,本文主要讲解算法里边最经典的十大排序算法。在这里我们根据他们各自的实现原理以及效率将十大排序算法分为两大类:非线性比较类排序:非线性是指算法的时间复杂度不能突破(nlogn),元素之间通过比较大小来决定先后顺序。
2024-10-30 21:22:43
578
原创 提升单体springboot的并发数的8个小技巧
通过上述8个技巧,我们可以有效提升SpringBoot单体应用的并发处理能力。记得,并发优化是一个持续的过程,需要根据实际情况调整和优化。希望这篇文章能给你带来帮助,让你的SpringBoot应用在面对高并发挑战时更加从容不迫。
2024-10-29 21:58:20
356
原创 Netty介绍,Jetty与Netty区别
Netty是一个高性能的nio网络通信框架用于开发高性能的网络服务器和客户端 提供了简单强大的Api使得网络编程更加简单。
2024-10-29 21:26:26
507
原创 Spring 框架的 AOP
什么时候会出现面向切面编程的需求?按照软件重构的思想,如果多个类中出现重复的代码,就应该考虑定义一个共同的抽象类,将这些共同的代码提取到抽象类中,比如Teacher,Student都有username,那么就可以把username及相关的get、set方法抽取到SysUser中,这种情况,我们称为。但是如果,我们的情况是以下情况,又该怎么办?给所有的类方法添加性能检测,事务控制,该怎么抽取?
2024-10-29 16:29:57
674
原创 读懂类的加载过程及双亲委派设计
我们知道 Java 是先通过编译器将.java类文件转成.class字节码文件,然后再通过虚拟机将.class字节码文件加载到内存中来实现应用程序的运行。那么虚拟机是什么时候加载class文件?如何加载class文件?class文件进入到虚拟机后发生了哪些变化?今天我们就一起来了解一下,虚拟机是如何加载类文件的。如果要查找类加载器,通过方法可以获取。从运行结果可以看到,当前的类加载器是,它的上一级是,再上一级是null。其实的上一级是有类加载器的,它叫。
2024-10-29 14:15:41
988
原创 SpringBoot中通过8项配置优化提升Tomcat性能
SpringBoot应用程序警用优化。例如,禁用不必要的自动配置可以节省资源。调整Tomcat可用的线程数可以帮助有效地处理更多并发请求。调整连接设置可以改善 Tomcat 处理传入连接的方式。启用压缩可以减少通过网络发送的数据量,从而缩短响应时间。确保您的应用程序是安全的,以防止资源滥用和攻击。调整保持活动设置可以帮助更有效地管理连接。配置访问日志可以帮助监控和分析请求模式。JVM配置垃圾收集和内存管理的最佳设置。4. Keep-Alive 配置。7. Spring Boot配置。
2024-10-29 14:09:28
800
原创 慢SQL优化不要只会加索引了
分页优化就相对特殊,因为都是后面慢慢才会发现的。比如说现在要查询第10010后面的10条数据,分页查询会先扫描10010前面的数据都扫描一遍,最后再返回,其实前面的数据,我们根本就不需要,但是分页查询会先扫描前面的数据的。前面我们说到避免使用select*,提到了覆盖索引,假设我们需要查询的字段刚好在二级索引里,这样我们就在二级索引里找到了我们想要的数据,不需要再回表操作。和第三条有那么些管理,因为更新频繁的列,就代表着它的树的维护是非常频繁的,可能我们没插入一条数据就会进行分裂,然后再重构这个树。
2024-10-29 14:06:26
938
原创 Spring用到了哪些设计模式?
Spring框架在很多地方使用策略模式,例如在事务管理中使用不同的事务管理策略(如JDBC、JTA),在视图解析器(ViewResolver)中使用不同的视图解析策略(如JSP、Thymeleaf)。:当Spring容器启动时,会为每个作用域为singleton的Bean创建并维护一个单实例对象,这些对象会被存储在一个缓存中,从而确保每次注入时都是同一个实例。:在Spring AOP中,代理对象(代理类)就是对目标对象的增强(装饰),可以动态地为目标对象添加新的行为(如方法拦截、日志记录、事务管理等)。
2024-10-29 13:59:56
1610
原创 介绍一下 PageHelper 实现分页原理
• PageHelper 提供了丰富的配置选项和自定义功能,如是否支持带有“for update”的查询语句、是否支持嵌套查询等。• 开发者可以通过配置文件或注解等方式来灵活配置和使用 PageHelper。
2024-10-29 13:56:07
1409
原创 调用链追踪MDC如何使用?
MDC(Mapped Diagnostic Context,映射调试上下文)是日志框架(如log4j、logback等)提供的一种功能,允许开发者在日志消息中嵌入额外的上下文信息。这些信息可以在日志处理过程中跨多个日志语句和跨多个线程传递,非常适合用于链路追踪。在微服务架构中,MDC成为了调用链追踪的利器,帮助开发者追踪请求在整个系统中的处理流程。
2024-10-28 20:11:13
785
原创 类加载机制与类加载器
类加载机制与类加载器是Java虚拟机(JVM)中非常重要的概念,它们共同管理着Java类的加载过程,确保类的正确性和安全性。
2024-10-28 20:06:58
1110
原创 Java如何实现动态代理?
1.JDK动态代理• 只能代理接口。• 无需第三方库,JDK原生支持。• 实现简单,性能较高。2.CGLIB动态代理• 可以代理类和接口。• 需要引入第三方库(CGLIB)。• 实现稍复杂,性能稍低(因为生成子类并重写方法)。通过这两种方式,可以在运行时动态生成代理对象,从而实现方法调用的拦截、增强等功能,广泛用于AOP(面向切面编程)等场景。
2024-10-28 11:07:14
890
原创 Nginx 部署负载均衡服务全解析
负载均衡是一种将用户请求均匀分发到多台服务器上的技术,目的是通过多台服务器共同承载流量,以提高整体系统的性能、稳定性和可用性。其主要优势包括:提高可用性:当一台服务器宕机时,负载均衡器可以将请求分发到其他正常的服务器上,从而避免单点故障。提高扩展性:可以通过增加更多的服务器节点来处理更高的并发量。提升性能:均衡分发请求,避免单一服务器资源耗尽,提供更流畅的用户体验。
2024-10-25 21:12:02
893
原创 【多线程与高并发】ReentrantLock示例讲解
是 Java 提供的显式锁(明确地进行锁定和解锁操作),相对于隐式锁而言,提供了更多的功能和灵活性。例如,它可以支持公平锁、非公平锁、尝试获取锁、可中断锁等。
2024-10-25 21:09:31
583
原创 幂等设计的8种实现方式
接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。比如:公交车刷卡,用户上车后刷码支付扣款成功,如果用户再次点击按钮刷卡并扣款成功,用户查询余额返发现多扣钱了,流水记录也变成了两条,这就没有保证接口的幂等性。因此,当你重复刷卡时,会提示:刷码重复。注意:数据库可能产生幂等性问题,但是幂等性问题不只发生在数据库。
2024-10-25 21:07:04
823
原创 雪花算法结合Hutool工具:唯一ID工具-IdUtil
这10位可以进一步细分为数据中心ID和工作机器ID,各占5位,以支持最多32个数据中心和每个数据中心最多32个工作节点。leaf是专门生成id的应用,上面的服务才是业务服务,leaf是中间生成id的服务,是靠基于数据库去生成的id,每次取一次id,去更新服务,更新加1000,可以水平扩容。第四部分 用12个bit位来表示递增的序列号 (用于标识同一毫秒内生成的不同ID,支持每个节点每毫秒产生4096个唯一的ID)的一个算法 ,他会得到一个64位长度的long类型的数据,其中这64位的数据,有四个部分组成。
2024-10-24 19:38:52
3857
原创 分布式唯一Id(雪花算法)原理+对比+方案
雪花算法(Snowflake)是由Twitter开源的一种分布式ID生成算法,其核心思想是将64位的long型ID分为四个部分,分别为:符号位、时间戳、工作机器ID、序列号。
2024-10-24 14:02:41
1958
原创 什么是单点登录,SpringBoot实现单点登录的实现详解
在介绍实现单点登录之前,让我们先了解一下JWT。JWT是一种基于JSON格式的开放标准(RFC 7519),用于在不同的应用程序之间安全地传输信息。标头(Header):包含JWT的类型和使用的签名算法。负载(Payload):包含实际的信息。签名(Signature):使用私钥生成的签名,用于验证JWT的真实性。JWT通常在身份验证过程中使用,以便在不需要存储用户信息的情况下验证用户身份。由于JWT是基于标准化的JSON格式构建的,因此在多种编程语言中都可以轻松地实现和解析。
2024-10-24 10:55:26
1368
原创 Docker 的几种网络模式
自定义 docker0 桥的网络属性信息需要修改/etc/docker/daemon.json 配置文件EOF在客户端上向 dockerd 直接传递“-H|--host”选项指定要控制哪台主机上的 docker 容器/ # ls。
2024-10-24 10:46:51
892
原创 Java序列化和反序列化详解
Java序列化和反序列化是Java编程中重要的一个部分,在需要进行对象的跨进程、跨网络传输等场景中,会带来很大的便利。然而,在使用过程中,需要注意版本兼容性、性能影响以及安全问题,并对可能的安全漏洞进行防范。通过理解和正确使用Java的序列化机制,我们可以更有效地存储和传输对象状态。
2024-10-23 20:56:46
1108
原创 线程池原理最全详解(图文全面总结)
当任务队列已满,且线程池中的线程数已经达到 maximumPoolSize 时,线程池无法接纳更多任务,这时线程池会使用预设的 饱和策略 来处理这个任务。如果核心线程数小于 corePoolSize,或者有核心线程处于空闲状态,线程池会直接创建一个新的核心线程来执行这个任务。如果核心线程都在执行任务,且线程数量已经达到 corePoolSize,则任务不会立即创建新的线程,而是进入任务队列。比如:创建一个固定大小的线程池,当所有线程都在执行任务时,新的任务会进入任务队列等待执行。
2024-10-23 19:25:17
412
原创 远程调用的几种常见方式
它通过发送和接收消息来实现系统之间的通信。RPC是一种远程调用协议,最经典的框架就是dubbo,在老一些的分布式系统中dubbo还是很常用的,RPC最明显的优点就是使用简单,它屏蔽了底层通信细节,允许客户端直接调用服务器上的函数或服务,在形式上可以像调用本地函数或服务一样去调用远程的函数或服务,使用过dubbo的应该对此深有感触,这也是其区别于HTTP的重要之处。这里说的远程调用指的是进程间的交互,我们常用的前后端通过HTTP接口发起的网络请求也是属于远程调用,那么,除了HTTP外,还有哪些常见方式呢?
2024-10-23 19:21:24
270
原创 synchronized和volatile的区别
在这里总结一下,在使用synchronized关键字的时候,本质上是否获得锁,是通过修改锁对象头中的markword的内容来标记是否获得锁,并由虚拟机来根据具体的应用场景来锁进行升级。
2024-10-23 16:39:09
872
原创 使用MyBatis推荐几种SQL写法
此示例展示了如何根据传入的条件动态构建查询语句。此示例展示了如何根据不同的搜索类型选择不同的查询条件。MyBatis-Plus是MyBatis的增强工具,提供了便捷的CRUD操作和强大的条件构造器。此示例展示了如何在插入用户后自动获取生成的主键,并将其赋值给传入的User对象的id属性。此示例展示了如何将用户和订单信息映射到一个复杂的对象结构中,实现一对多映射。MyBatis提供了。MyBatis提供了强大的对象关系映射功能,可以处理复杂的表关系。遍历传入的用户列表,将每个用户的信息插入到数据库中。
2024-10-23 15:59:54
717
原创 MySQL数据一致性保障:深入理解两阶段提交与redo log、binlog同步机制
MySQL作为最广泛应用的关系型数据库之一,它通过一系列复杂的机制来确保在高并发环境下的数据不丢失和事务的一致性。其中,两阶段提交(2PC, Two-Phase Commit)协议在MySQL中扮演了核心角色,尤其是在确保redo log和binlog数据一致性的场景下。本文将深入浅出地解析这一过程,并附上相关面试题帮助你更好地准备技术挑战。
2024-10-23 15:57:16
549
原创 sychronized和ReentrantLock的区别?
1.实现方式是Java关键字,由JVM实现;是一个具体的类。2.锁的获取和释放自动获取和释放锁;需要显式地调用lock()和unlock()方法。3.灵活性提供了更多的功能,如尝试获取锁、中断等待锁的线程、超时获取锁等。4.锁的公平性可以指定为公平锁或非公平锁;只能是非公平锁。5.使用范围可以修饰方法和代码块;只能用于代码块。
2024-10-23 15:55:49
762
原创 阿里二面:在高并发场景下如何保证消息只被消费一次?
首先,我们需要明确的是,无论是否处于高并发场景,确保消息仅被消费一次都是一个核心需求。这一需求的核心在于,我们必须防止消息在传输和消费过程中丢失,同时避免消息被重复消费。接下来,我们将深入剖析消息从生产到消费的整个链路,并识别出可能导致消息丢失或重复消费的环节。生产者发送消息至消息队列环节是确保消息传递完整性的关键一步。为了保证消息不丢失,需要采取一系列措施,并了解可能导致消息丢失的原因。
2024-10-23 15:53:41
1107
原创 频繁Minor GC怎么办?
频繁Minor GC是Java应用程序性能优化的一个重要方面。通过调整堆内存大小、优化对象生命周期管理、严谨管理对象引用、选择合适的垃圾收集器、利用逃逸分析与标量替换技术以及持续监控与分析GC日志等策略,可以有效降低Minor GC的频率,提高系统的性能和响应时间。在实际应用中,应根据具体的应用场景和性能需求,综合考虑多种策略,以达到最佳的优化效果。
2024-10-23 15:51:46
1063
redis配置文件,建一个redis.conf文件,把文件中的内容拷贝到redis.conf中
2024-09-25
MySQL数据库在idea中的增删改查,JDBC简化,JDBC工具类封装,orm模式,数据库三层架构,JDBC事务
2024-01-31
java基础知识,包含了javase基本的知识,通俗易懂,好看入味
2024-01-17
如何保证消息的幂等性
2024-10-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人