自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis为什么快?(面试常问)

也是因为数据存储在内存中,内存在重启后就会消失,所以会有数据丢失的问题。Redis本身提供了两种备份策略,一种是RDB,每5min进行一次全量的快照备份,另一种是AOF,每1s进行一次增量备份,在实际使用时是结合使用,就是使用RDB每5分钟进行一次快照备份,然后在两次快照之间使用AOF进行备份。这样做的好处是可以避免AOF文件过大。虽然Redis提供了备份策略保障不丢失,但是在实际业务中我们也还会在Mysql中保存一份数据做持久化的存储,因为Mysql的好处就是数据存储在磁盘上服务重启也不会丢失。

2023-06-25 22:16:47 2010 2

原创 Java中 is empty 和 is blank 的区别?

方法除了检测字符串是否为空,还会检查字符串是否只包含空格字符。不仅能检测字符串是否为空,还可以检测一个字符串是否只包含空格字符。因此,如果程序需要考虑到字符串只包含空格字符的情况,那么应该使用。方法用于判断字符串是否为空或空格字符。这两个方法的区别在于,而如果一个字符串只包含空格字符,即使它的长度不为0,如果需要检查字符串是否为空,则可以使用。只能检测字符串是否为空,而。具体来说,如果一个字符串为。

2023-06-14 10:09:37 1365

原创 为什么 Spring和IDEA 都不推荐使用@Autowired注解?

使用构造器或者setter注入需要写更多业务无关的代码,十分麻烦,而字段注入大幅简化了它们。并且绝大多数情况下业务代码和框架就是强绑定的,完全松耦合只是一件理想上的事,牺牲了敏捷度去过度追求松耦合反而得不偿失。,比如我需要10个依赖,用构造器注入就会显得庞大,这时候应该考虑一下此组件是不是。(这是最重要的原因,离开了IoC容器去使用组件,在注入依赖时就会十分困难),我们使用的IoC容器应当去兼容它,这样即使更换容器,也可以正常工作。,一旦换用了其他的IoC框架,是。字段注入,一定要使用的话,

2023-06-05 15:54:54 709

原创 报错Consider defining a bean of type ‘org.springframework.http.codec.ServerCodecConfigurer‘ 如何解决?

当 Spring 应用程序中出现 "Consider defining a bean of type 'org.springframework.http.codec.ServerCodecConfigurer' in your configuration" 的错误时,通常是由于缺少必要的 codec 配置所导致的。需要注意的是,ServerCodecConfigurer 的配置方式可能因应用程序的不同而有所变化,具体实现方式请根据您的应用程序进行相应调整。

2023-06-04 22:20:49 7552

原创 总结Git在实际开发中的使用教程

总之,掌握 Git 的基本使用教程对于开发工作至关重要,这可以帮助开发者更好地管理代码版本,提高开发效率,并且保证工作质量和团队协作。协作开发:在团队协作开发中,可以使用 Git Flow 策略进行管理,以保证多人开发时的协调性和效率。创建代码仓库:在项目的根目录下使用命令行创建代码仓库(repository)。远程同步:将本地仓库同步到远程仓库需要使用。命令从远程仓库拉取代码更改到本地仓库。命令查看当前工作区和本地仓库的状态。命令将本地仓库的更改推送到远程仓库。命令提交修改后的文件到本地仓库。

2023-05-31 20:43:06 827

原创 程序员写代码时,有哪些编程技巧呢?

7. 规划和设计:在创作代码之前仔细计划设计是一个重要的步骤, 这可以帮助您快速编写高质量的代码。12. 调试和测试:测试和验证代码确实可以帮助您发现错误,并保证代码的正常运行。15. 及时进行文档记录:为您的代码编写文档可以帮助其他人更好地理解代码,并且使您的代码更易于使用。2. 面向对象编程:面向对象编程可以提供更高的代码复用性和可维护性,并使代码更易于扩展和调试。1. 函数式编程:利用函数式编程思想,可以简化代码,减少副作用,并使代码更易于测试和维护。编程技巧确实可以帮助提高代码的可读性和效率。

2023-05-25 09:30:26 1062

原创 一分钟了解SpringBoot启动原理

1. 加载Spring Boot的starter模块 Spring Boot的starter模块是一个约定的模块,它包含了开发某种功能所需要的所有必要依赖库,当我们引入某个starter模块时,就会自动加载所有相关的依赖库。3. 扫描主应用程序 Spring Boot会扫描主应用程序的代码,找到所有被Spring注解标注的类,如@Component、@Service、@Controller等,并将它们注册到Spring的Bean容器中。这些自动配置包括数据库连接、事务管理、视图解析器等。

2023-05-19 21:31:25 466 2

原创 Java中的流

需要根据具体的需求来选择使用哪种类型的流。Stream流是Java 8中提供的新特性,它主要用于对集合和数组进行过滤、映射、排序、聚合等操作,具有函数式编程的特点。Stream流的核心思想是将数据处理过程分为多个阶段,每个阶段都是一个独立的操作,不同的操作可以组合成一个完整的数据处理流程。Stream流引入了中间操作和终止操作的概念,中间操作对流中的元素进行处理和转换,生成一个新的流;Stream流可以大大提高代码的简洁性和可读性,同时它还支持并行处理,可以充分利用多核处理器的性能优势,提高程序的效率。

2023-05-19 21:21:18 85

原创 Cannot resolve method ‘isblank‘ in ‘String‘如何解决?

这个错误通常是因为使用的Java版本太低导致的。isBlank() 方法在Java 11中引入,如果Java版本低于11,则不会识别该方法。您可以尝试升级Java版本到11或更高版本,或者使用其他方法来检查字符串是否为空或只包含空格。例如,可以使用 isEmpty()方法来检查字符串是否为空或使用 trim().isEmpty() 方法来检查字符串是否只包含空格。

2023-05-16 21:39:16 1010

原创 Docker相关命令

容器相关命令:Docker镜像是由文件系统叠加而成(是一种文件的存储形式);是docker中的核心概念,可以认为镜像就是对某些运行环境或者软件打的包,用户可以从docker仓库中下载基础镜像到本地,比如开发人员可以从docker仓库拉取(下载)一个只包含centos7系统的基础镜像,然后在这个镜像中安装jdk、mysql、Tomcat和自己开发的应用,最后将这些环境打成一个新的镜像。

2023-05-16 21:16:23 455 2

原创 Java8特性。

假如我们有一个已经投入使用接口,需要拓展一个新的方法,在JDK8以前,如果为一个使用的接口增加一个新方法,则我们必须在所有实现类中添加该方法的实现,否则编译会出现异常。这样新添加的方法将不会破坏现有代码。​ 在JDK8之前,接口不能定义任何实现,这意味着之前所有的JAVA版本中,接口制定的方法是抽象的,不包含方法体。​ 我们在思考上边的代码的时候,不要胡思乱想,它们就是一组接口,和我们的普通接口一样,每个接口代表一种能力,需要子类去实现,因为它们是函数式接口,所以匿名内部类都可以写成箭头函数的形式。

2023-05-11 23:31:10 339

原创 Git使用教程

既然已经在系统上安装了 Git,你会想要做几件事来定制你的 Git 环境。每台计算机上只需要配置一次,程序升级时会保留配置信息。你可以在任何时候再次通过运行命令来修改它们。安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。的工具来帮助设置控制 Git 外观和行为的配置变量。centos配置:yum install git。命令来列出所有 Git 当时能找到的配置。如果想要检查你的配置,可以使用。: 来检查 Git 的某一项配置。windows安装:进入网站。目录下(一般情况下是。

2023-05-10 21:18:21 1007 2

原创 谈谈你对JAVA中JVM的理解?简要介绍一下。

4. 垃圾回收器:JVM的垃圾回收器用于自动回收不再使用的对象内存,以避免内存泄漏和内存溢出。综上所述,Java虚拟机是Java平台的核心组件之一,它的主要作用是将Java程序编译成字节码后在任何支持Java虚拟机的设备上运行。JVM的原理包括类加载器、内存区域、执行引擎和垃圾回收器等多个方面。Java虚拟机是Java平台的核心组件之一,它是一个虚拟的计算机,具有自己的指令集和内存管理系统。其中,方法区主要用于存储类的信息和静态变量,堆用于存储对象实例,栈用于存储局部变量和方法调用的状态。

2023-05-07 22:37:35 126

原创 Mysql进阶

研究过SQL Server和Oracle的读者可能很清楚,这两种数据库的存储引擎只有一个,而MySQL的存储引擎种类比较多,如MyIsam存储引擎,InnoDB存储引擎和Memory存储引擎。mysql提供两个变量,进行全局设置。MySQL属于关系型数据库,而关系型数据库的存储是以表的形式进行的,对于表的创建,数据的存储,检索,更新等都是由MySQL存储引擎完成的。mysql:这个库很重要,他是mysql的核心数据库,负责存储数据库的用户、权限设置、关键字等mysql自己需要使用,控制和管理的信息。

2023-05-07 22:26:35 1026

原创 springcloud报错:com.netflix.discovery.shared.transport.TransportException,如何解决?

com.netflix.discovery.shared.transport.TransportException是 Spring Cloud Netflix 堆栈中的一个异常,当与服务注册表通信时出现问题。这可能是由于各种原因造成的,例如网络连接问题、服务器停机或客户端配置错误。如果上述步骤没有解决问题,请尝试禁用 Eureka 客户端和服务器,看看应用程序是否可以在没有它们的情况下工作。3、检查 Eureka 客户端配置。确保客户端配置正确,并且客户端配置为连接到正确的 Eureka 服务器。

2023-05-05 16:59:14 1050

原创 Spring Cloud对比下Dubbo,什么场景下该使用SpringCloud?

两者所解决的问题域不一样:Dubbo的定位始终是一款RPC框架,而Spring Cloud的目的是微 服务架构 下的一站式解决方案。Spring Cloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。虽然在一定程度上来说,后者牺牲了服务调用的性能,但也避 免了上 面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖 只依靠一纸契 约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适。

2023-05-04 15:17:29 550

原创 简单介绍一下谷粒商城这个项目。

谷粒商城(Gulimall)是一个基于 Spring Boot 和 Vue.js 的电子商务项目。通过学习和实践谷粒商城项目,您可以掌握许多有关 Web 开发、电子商务和技术栈的知识。通过学习谷粒商城项目,您将掌握许多有关 Web 开发、电子商务和技术栈的知识,为您未来的项目打下坚实的基础。

2023-05-01 21:18:34 3694

原创 一个合格的java开发工程师应该怎么做?

通过每天进行这些练习,您将逐步提高自己的技能,成为一名更优秀的 Java 开发工程师。

2023-05-01 21:17:39 147

原创 maven无法依赖spring-cloud-stater-zipkin如何解决?

如果问题仍然存在,请检查 Maven 的设置、网络连接或尝试使用不同的 Spring Cloud 版本。请确保使用与项目兼容的 Spring Cloud 版本。

2023-05-01 21:16:27 844

原创 了解 ConcurrentHashMap 吗?为什么性能比 HashTable 高,说下原理?

ConcurrentHashMap 是线程安全的 Map 容器,JDK8 之前,ConcurrentHashMap 使用锁分段技术,将数据分成一段段存储,每个数据段配置一把锁,即 segment 类,这个类继承 ReentrantLock 来保证线程安全,JKD8 的版本取消 Segment 这个分段锁数据结构,底层也是使用 Node 数组+链表+红黑树,从而实现对每一段数据就行加锁,也减少了并发冲突的概率。

2023-04-27 20:15:29 236

原创 如何查看死锁?

1.可以通过 jstack 命令来进行查看,jstack 命令中会显示发生了死锁的线程。2.或者两个线程去操作数据库时,数据库发生了死锁,这是可以查询数据库的死锁情况.3、查看正在锁的事务。4、查看等待锁的事务。

2023-04-27 20:10:35 2554

原创 说说深拷贝的应用场景有哪些?

在多线程编程中,多个线程可能会同时访问同一对象,为了避免多线程操作中的风险,通常会使用深拷贝来创建一个全新的对象副本。在编写程序时,如果需要对某个对象进行副本操作,而不希望原始对象受到影响,那么可以使用深拷贝来创建一个完全独立的对象。在对象的嵌套关系比较复杂的时候,深拷贝可以将整个对象图完整地拷贝下来,从而避免了不必要的引用问题。总之,深拷贝可以确保数据的完整性、一致性和独立性,是程序设计中非常有用的技术。在数据备份或数据传输过程中,深拷贝可以用来确保数据在不同位置之间的一致性。

2023-04-26 22:38:47 858

原创 内部类的分类有哪些?

定义在实例方法中的局部类可以访问外部类的所有变量和方法,定义在静态方法 中的局部类只能访问外部类的静态变量和方法。成员内部类可以访问外部类所有的变量和方法,包括静态和非静态,私有和公 有。匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。内部类可以分为四种:成员内部类、局部内部类、匿名内部类和静态内部类。匿名内部类就是没有名字的内部类,日常开发中使用的比较多。定义在类内部,成员位置上的非静态类,就是成员内部类。定义在类内部的静态类,就是静态内部类。

2023-04-26 10:30:35 175

原创 JVM 加载 class 文件的原理机制?

类的加载是指把类的.class 文件中的数据读入到内存中,通常是创建一个字节数组读入.class 文件,然后产生与所加载类对应的 Class 对象。PDM 更好的保证了 Java 平台的安全性,在该机制中,JVM 自带Bootstrap 是根加载器,其他的加载器都有且仅有一个父类加载器。JVM 中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java 中的类加载器是一个重要的 Java 运行时系统组件,它负责在运行时查找和装入类文件中的类。

2023-04-25 21:17:58 59

原创 什么情况下会产生线程安全问题?

线程安全问题是指在多线程程序中,当多个线程同时访问同一个共享资源时,可能会出现数据不一致、数据丢失等问题。缓存问题:不同的线程可能使用不同的缓存,导致一个线程修改了数据,而另一个线程还在使用旧的数据。访问顺序不确定:多个线程对同一块资源进行访问的顺序不确定,如对链表进行遍历操作。为避免线程安全问题的发生,可以采用互斥锁、读写锁、信号量等机制来实现线程同步。资源的状态可变:多个线程对同一块资源进行修改操作,如对计数器进行++操作。共享资源:多个线程共同访问同一块资源,如同步队列、全局变量等。

2023-04-24 22:28:50 506

原创 SpringBoot中的关于请求、连接的几个参数

3.server.tomcat.max-connections:正在处理中的最大socket连接数,超过限制会排队(操作系统级别中的一个队列)。1.server.tomcat.threads.min-spare:线程池中的初始化线程数(核心线程数),超过限制则继续新开线程。2. server.tomcat.threads.max:线程池中的最大线程数,超过限制则入队(线程池中的队列)。

2023-04-24 16:11:41 255

原创 什么是字节码?采用字节码的大好处是什么?

Java源程序经过编译 器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行,这就是上面提到的Java的特点的编译与解释并存的解释。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。字节码:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。

2023-04-20 09:15:39 449

原创 maven无法下载依赖的jar包问题

2.在maven下的conf文件,找见下面的setting.xml文件,5.关键要检查idea使用的是默认maven还是本地maven。4.如果不是的话,可以修改成上面的阿里云镜像源,然后保存。1.首先检查maven坐标是否有问题,版本是否有问题。6.最后重新刷新maven,依赖下载成功。3.查看下面的maven镜像源,

2023-04-17 11:07:40 2695

原创 项目报错:Web server failed to start. Port 8080 was already in use.

3.打开任务管理器(ctrl + alt + delete),在详细信息里找到对应PID的端口,把它关闭。2.输入netstat -ano 并回车,记住对应的进程PID为14472。4.最后重启程序,端口占用问题解决!1.打开命令行窗口(win+r)。

2023-04-17 10:39:08 269

原创 项目报错:java.sql.SQLNonTransientConnectionException:Could not create connection to database server解决办法

2.问题原因:mysql版本问题,需要下载对应的mysql版本,而且要下载对应mysql-connector的jar包版本。4.下载对应的mysql版本,下载地址:https://downloads.mysql.com/archives/c-j/5 .安装好mysql后,最后需要在pom.xml修改mysql依赖版本,然后刷新maven工程,最后问题解决!3.win+r 输入cmd,查看mysql版本号.

2023-04-17 10:29:06 4579 1

原创 一句话学完24种设计模式

13.桥接模式:将抽象部分和它的实现部分分离,使它们都可以独立的变化。23.责任链模式:将请求的发送者和接收者解耦,使得多个对象都有处理这个请求的机会。24.迭代器模式:一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构。15.解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器。12.外观模式:对外提供一个统一的方法,来访问子系统中的一群接口。7.适配器模式:将一个类的方法接口转换成客户希望的另外一个接口。19.备忘录模式:在不破坏封装的前提下,保持对象的内部状态。

2023-04-14 14:57:44 73

原创 什么是耦合?解耦合有什么好处?

一般是因为变化,需求变化致使最终的程序实现变化,若是耦合度高,出现变化时所须要修改的程序就多,若是进行解耦,那修改的程序就少一些。耦合指的就是两个类之间的联系的紧密程度,解耦合就是将原来的直接关系变成间接关系,使得两个函数中间层是强耦合,而他们之间变成弱耦合关系。解耦合的好处在于将两段互相依赖的函数分开,从而降低代码的复杂性,使代码可以重复利用。

2023-04-14 09:09:32 1378

原创 SpringBoot打成的jar和普通jar有什么区别?

Spring Boot 项目最终打包成的 jar 是可执行 jar ,这种 jar 可以直接通过 java - jar xxx . jar 命令来运行,这种 jar 不可以作为普通的 jar 被其他项目依赖,即使依赖了也无法使用其中的类。普通的 jar 包,解压后直接就是包名,包里就是我们的代码,而 Spring Boot 打包成的可执行 jar 解压后,在\ BOOT - INF \ classes 目录下才是我们的代码,因此无法被直接引用。

2023-04-14 08:42:56 665

原创 细琢磨,try-catch-finally执行顺序与返回值是多少?

只有方法末尾处返回时,返回值由try-catch-finally决定,如果try、catch中有return语句,finally中没有return,那么在finally中修改引用类型、静态变量将会对try 、catch中return值有影响,基本类型和包装类型无影响。尽量不要在finally中使用return语句,如果使用的话,会忽略try、catch中的返回语句,也会忽略try、catch中的异常,屏蔽了错误的发生。

2023-04-13 15:04:36 55

原创 线程的生命周期?线程有几种状态?

线程通常有五种状态,创建,就绪,运行、阻塞和死亡状态:阻塞的情况又分为三种:

2023-04-13 10:14:46 83

原创 Java中的异常体系是怎样的?

● Exception不会导致程序停止,又分为两个部分RunTimeException运行时异常和。● RunTimeException常常发生在程序运行过程中,会导致程序当前线程执行失败。CheckedException常常发生在程序编译过程中,会导致程序编译不通过。● Error是程序无法处理的错误,一旦出现这个错误,则程序将被迫停止运行。● Throwable下有两个子类Exception和Error。Java中的所有异常都来自顶级父类Throwable。CheckedException检查异常。

2023-04-13 09:53:53 37

原创 HashMap的扩容机制原理是什么?

1.7版本1.8版本。

2023-04-12 08:54:26 38

原创 SpringBoot进行测试出现提示TestContextAnnotationUtils错误

解决方法:测试类型的包版本不一致!比如可以适当降低一些版本就ok了。如果升级版本到 Spring Boot 2.4 的版本的话,你可以首先取消掉 5.2.8.RELEASE 这个版本的限制。出现上面的问题是因为我们将 Spring Boot 从版本 2.3.3 升级到了 2.4。在依赖 spring-test 中,我们还是定义 5.2.8.RELEASE 了这个版本。如果取消掉版本的话,你可以看到 Spring 的测试使用的是 5.3.1 的版本。最后,通过控制台测试就可以看到版本兼容性问题就已经解决了。

2023-04-10 17:54:49 458 2

原创 描述一下JVM加载class文件的原理机制?

类的加载是指把类的.class 文件中的数据读入到内存中,通常是创建一个字节数组读入.class 文件,然后产生与所加载类对应的 Class 对象。PDM 更好的保证了 Java 平台的安全性,在该机制中,JVM 自带的 Bootstrap 是根加载器,其他的加载器都有且仅有一个父类加载器。JVM 中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java 中的类加载器是一个重要的 Java 运行时系统组件,它负责在运行时查找和装入类文件中的类。

2023-04-09 11:57:02 52

原创 RandomAccess是什么?

因为在List集合中,我们经常会用到ArrayList以及LinkedList集合,但是通过查看源码,就会发现ArrayList实现RandomAccess接口,但是RandomAccess接口里面是空的!原来RandomAccess接口是一个标志接口(Marker)Linked并没有实现RandomAccess接口。而LinkedList没有。RandomAccess用来当标记,是一种标记接口,它的用处是当要实现某些算法时,会判断当前类是否实现了RandomAccess接口,会选择不同的算法。

2023-04-07 22:07:58 255

空空如也

空空如也

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

TA关注的人

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