自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

董嵩杰的博客

每天记录一点点

  • 博客(39)
  • 收藏
  • 关注

原创 RabbitMQ实战指南(三)—— 高级特性

TTL、死信、延迟队列、优先级队列、RPC、消息持久化、生产端和消费端的消息确认等

2024-01-31 09:12:41 1215 1

原创 Java中的Object类的方法

如果两个对象相等,它们的哈希码必须相等,但是哈希码相等的两个对象不一定相等。在自定义类中,如果重写了equals方法,通常也需要重写hashCode方法,以保证两个相等的对象具有相同的哈希码。默认情况下,equals方法比较的是两个对象的引用是否相等,即判断两个对象是否是同一个对象。如果希望比较对象的内容是否相等,需要在自定义类中重写equals方法。Java中的Object类是所有类的超类,它定义了一些通用的方法,可以在所有的对象中使用。返回对象的Class对象,用于获取对象的运行时类。

2024-01-31 09:12:19 339

原创 RabbitMQ实战指南(二)—— 基本概念

RabbitMQ支持多种交换器类型,例如直连交换器、扇形交换器、主题交换器等,它们根据不同的规则来进行消息的路由和分发。此外,RabbitMQ还提供了灵活的消息确认机制、消息持久化、消息优先级等功能,以确保消息的可靠性和稳定性。消息确认:消息确认是指消费者在处理完一条消息后向RabbitMQ发送确认,告知RabbitMQ可以删除该消息。消息持久化:消息持久化是指将消息存储在磁盘上,以确保消息不会因为RabbitMQ的重启或故障而丢失。消息:消息是数据的包装,由发布者发送到RabbitMQ的消息队列。

2024-01-30 09:10:20 615

原创 浅谈Java主流锁

关键字可以用来修饰非静态方法、静态方法和代码块,其中非静态方法和代码块使用的锁是当前对象(即this),静态方法使用的锁是当前类(即.class)。以上是Java中主要的锁机制,根据具体的场景和需求选择合适的锁实现。

2024-01-30 09:09:42 381

原创 RabbitMQ实战指南(一)—— 安装与使用方式

RabbitMQ是一个开源的消息中间件,用于在应用程序之间传递消息。RabbitMQ凭借其高可靠、易扩展、高可用及丰富的功能特性受到越多企业青睐。这是RabbitMQ的基本安装与使用方法的概述。具体的步骤可能会根据你的操作系统和编程语言有所不同。建议参考RabbitMQ官方文档和相关教程以获得更详细的指导。

2024-01-29 09:08:25 556

原创 浅谈MySQL3种日志

(二进制日志),是MySQL数据库中用来记录数据库变更操作的日志文件。(重做日志),是MySQL数据库中用来记录事务发生的变更操作的日志文件。当事务提交时,重做日志会记录下事务对数据库的影响,以便在数据库发生故障崩溃时进行数据恢复。(回滚日志),是MySQL数据库中用来记录事务的撤销操作的日志文件。当事务需要回滚时,回滚日志会记录下该事务对数据库的原始状态,以便在事务回滚时进行数据恢复。当数据库发生故障崩溃时,根据Redo Log中的记录,可以重新执行未提交的事务,从而恢复数据库到崩溃前的状态。

2024-01-29 08:36:21 572

原创 浅谈Java 线程

需要注意的是,在多线程编程中,需要考虑线程间的同步问题,避免出现数据竞争等并发问题。Java线程是Java程序的执行单元。线程的主要作用是并发执行多个任务,即在同一时间内可以执行多个任务,提高程序的执行效率。以上是两种创建线程的方式,它们的实现原理相似,都是通过创建线程对象,并在启动线程时调用相应的方法来执行线程任务。另外,Java还提供了Executor框架和线程池来管理和调度线程,以便更好地管理线程资源和提高执行效率。线程的执行顺序和结果是不确定的,取决于操作系统的调度机制和程序本身的逻辑。

2024-01-26 15:10:15 346

原创 java异步调用简单实例

以上是几种常见的Java异步调用的方式和示例代码,具体使用哪种方式可以根据实际情况进行选择。需要注意的是,异步调用在处理多线程、线程安全以及错误处理等方面都需要谨慎处理。Java中,异步调用是指在调用一个方法后,不等待方法执行完毕而继续执行其他操作,而是通过回调、Future等方式来获取方法的执行结果。在Java中,有多种实现异步调用的方式,包括多线程、线程池、下面是几种常见的异步调用方法的说明和示例代码。

2024-01-26 15:05:55 353

原创 Lambda常用表达式

Lambda表达式

2024-01-25 08:51:47 523

原创 Lambda的说明与使用

Lambda的说明与使用

2024-01-25 08:46:48 721

原创 浅谈RPC调用

RPC调用使得开发人员可以像本地方法调用一样方便地调用远程节点上的方法,从而简化了分布式系统的开发。需要注意的是,以上代码只是一个简单示例,实际的RPC调用涉及到更复杂的网络通信和序列化等技术,可以使用现有的RPC框架如Dubbo、gRPC等来简化开发。数据传输:服务提供方接收到请求后,根据方法名在本地执行相应的方法,并将方法的返回结果封装成网络传输格式进行返回。远程调用:服务调用方通过桩代码发起远程调用请求,将方法名和参数传输给服务提供方。方法将RPC服务对象发布到指定的端口,供远程调用使用。

2024-01-24 16:12:31 890

原创 Java枚举使用场景

枚举使用场景

2023-11-20 15:54:30 138

原创 Java Socket解析与示例

Socket 类是最基本的网络通信类,在使用 Socket 的时候可以通过创建客户端 Socket 和服务端 Socket 来建立。在创建 Socket 时需要指定目标服务器的 IP 地址和端口号,Socket。Java Socket 是 Java 编程语言中提供的一种用于网络通信的 API,它可以实现客户端与服务端之间的通讯。在使用 Socket 时,常见的操作包括:创建 Socket 对象、绑定 IP 地址和端口号、连接服务器、发送数据、接收数据、关闭。TCP/IP 连接,实现数据的传输和通讯。

2023-11-16 08:56:17 129

原创 @Autowired和@Resource区别

比较灵活,可以注入其他程序中的对象、资源等。默认按照名称进行注入,如果找不到与名称匹配的bean,则再按照类型匹配。默认按照类型注入,如果有多个类型匹配,那么还需按照名称进行匹配。都是Spring中常用的注入依赖的方式。不仅支持Spring框架中的自动装配类型,还支持JDK提供的。要求依赖的bean必须存在,否则会抛出异常;只支持Spring框架中的自动装配类型;是JSR-250规范中定义的注解。和javax inject提供的。则不强制要求依赖的bean存在。是Spring自带的注解,而。

2023-10-17 14:33:01 107

原创 浅谈Java-CAS理解

Java中提供了Atomic包,其中的AtomicInteger、AtomicBoolean、AtomicLong等类均实现了CAS操作,提供了原子性操作的功能。CAS操作包括三个操作数:需要读写的内存值V,进行比较的值A,以及要写入的新值B。当且仅当V的值等于A时,CAS才会通过原子操作将V的值设置为B,否则什么都不做。CAS操作是基于硬件实现的,保证了操作的原子性,同时避免了锁的开销。其中,valueOffset是内存值V的偏移量,expect是进行比较的值A,update是要写入的新值B。

2023-10-16 10:09:21 39

原创 浅谈 SpringCloud 和SpringBoot 的区别

Spring Boot是基于Spring框架的快速开发框架,为开发人员提供了一种简单快速地构建应用程序的方式,SpringBoot通过提供自动配置,减少了开发人员的工作量,并提供了许多开箱即用的特性,使开发人员能够快速开发高效的应用程序。Spring Cloud是一组用于构建分布式系统的框架和工具集合,主要包括服务注册与发现、配置管理、熔断器、智能路由、微代理、控制总线、分布式消息传递框架等功能,这些功能可以帮助开发人员快速构建高可用性、高性能的分布式系统。Spring。

2023-10-10 09:26:49 249

原创 java 创建线程和线程的常用方法

【代码】java 创建线程和线程的常用方法。

2023-10-09 09:56:21 23

原创 Spring中循环依赖

构造方法循环依赖:当Bean A和Bean B之间存在构造方法循环依赖时,Spring无法确定Bean A和Bean B的实例化顺序,从而抛出循环依赖的异常。单例Bean循环依赖:当两个单例Bean之间存在循环依赖时,Spring容器在加载Bean时会将一个Bean的实例化放到缓存中,等待另一个Bean实例化后再将其注入,但是因为循环依赖的原因,这个过程会出现死锁,导致加载失败。

2023-10-08 09:30:00 19

原创 Java Base64签名详细说明

在Java中,可以使用Java加密技术库中的javax.crypto包来进行Base64编码和解码,同时也可以使用Java提供的MessageDigest类来进行数字签名操作。数字签名是一种用于验证数据完整性和真实性的技术,它通过使用私钥对数据进行加密,从而生成一个签名,再使用公钥对签名进行验证,从而确保数据的完整性和真实性。需要注意的是,在进行数字签名操作时,必须确保使用的密钥是安全的,同时也要注意选择合适的加密算法和合适的签名长度,以确保数据的安全性和完整性。

2023-10-07 09:01:30 220

原创 MyBatis一级 二级缓存

1.3 一级缓存是透明的,即无需进行任何配置,当SqlSession中执行了查询操作时,MyBatis会将查询结果缓存到SqlSession中,以提高查询速度。1.1 一级缓存是指MyBatis框架中的SqlSession缓存,它仅在一个SqlSession的范围内有效。1.4 一级缓存的生命周期与SqlSession一致,当SqlSession关闭或提交事务时,缓存也会被清空。一级缓存适用于单个SqlSession操作,对于频繁进行读写的操作,可以通过开启一级缓存来提高查询速度。

2023-09-30 09:30:00 38

原创 JVM 简单说明

Java虚拟机(Java Virtual Machine,JVM)是Java程序的基础,它是Java程序的运行平台。JVM是一个跨平台的运行环境,可以在不同的操作系统上运行Java程序,而不需要改变Java程序的代码。其中,类加载器负责将Java程序编译后的.class文件加载到内存中,运行时数据区则负责存储Java程序运行期间需要使用的数据,执行引擎则负责解释Java程序的字节码并执行相应的指令。即当一个类需要被加载时,先交给父类加载器进行加载,如果父类加载器无法加载,则由子类加载器进行加载。

2023-09-30 09:19:57 94

原创 Java反射详细说明

方法获取了String类的Class对象,然后获取了String类的构造方法,并通过该构造方法创建了String类的一个实例。然后,我们获取了String类的"substring"方法,并通过该方法调用了实例的方法,最后输出了结果。Class类:表示一个类或者一个接口的元数据,包含了类的结构信息,如字段、方法、构造方法、访问修饰符等属性。通过Java反射,我们可以在运行时动态地获取类的信息和操作类的属性和方法,从而实现灵活的代码扩展和模块化。Method类:表示类的方法的元数据,可以用于调用类的方法。

2023-09-29 10:30:00 75

原创 Java字符串压缩

Java字符串压缩是指将不可见字符或重复字符从字符串中删除,从而减少字符串的长度。这个过程可以减少字符串所占用的存储空间,加快字符串处理的速度。字符串压缩在很多场合都会用到,例如在网络传输、文本处理、数据存储、图像处理等方面。这些算法实现高效的压缩和解压缩功能,为Java程序员提供了强大的字符串压缩功能。因此,可以使用Base64编码将压缩后的byte数组转换为字符串,或者在压缩时指定字符集。Java字符串压缩可以在很多场合中发挥作用,但要注意处理好字符集和乱码问题。

2023-09-28 09:30:00 1162

原创 Spring Boot 启动流程

如果应用是 Web 应用,Spring Boot 会启动内嵌的 Tomcat、Jetty 等 Web 服务器,将应用部署到 Web 服务器上。如果应用是 Web 应用,Spring Boot 会根据配置文件中的配置项,自动配置内嵌的 Tomcat、Jetty 等 Web 服务器。Spring Boot 会根据 classpath 中的 jar 包、类、注解等信息,分析出需要的 Bean,并在容器中自动配置。Spring Boot 会加载应用的启动类,即包含 main 方法的类。

2023-09-27 10:01:21 82

原创 Java Spring Security 详细配置与使用

Java Spring Security 详细配置与使用

2023-09-26 08:45:44 377

原创 Spring IOC说明【精简版】

BeanFactory是Spring IOC容器的基本接口,它提供了最基本的IOC功能。Spring IOC容器是Spring框架的核心部分之一,用于管理和维护应用程序中的所有对象。它们是高级工厂模式的实现,其目的是将对象的创建和依赖关系的管理从应用程序代码中分离出来,从而实现应用程序的松散耦合和更好的可测试性。总之,Spring IOC容器是一个很强大的工具,可以使开发人员更好的管理和维护应用程序中的对象。它可以提高开发效率,降低应用程序的复杂性,并且还可以提供更好的可重用性和可测试性。

2023-09-25 08:50:21 78

原创 Spring AOP 详细说明

要使用 Spring AOP,可以先定义切面,然后将其应用于目标对象或目标对象的方法。切面可以在 XML 配置文件中声明,并将其应用于 bean,也可以使用注释将其应用于 bean。Spring AOP(面向切面编程)是一种在 Spring 框架中实现切面编程的方法。要将切面应用于应用程序,请将切面声明为 Spring bean。然后,您可以将切面应用于目标对象或目标对象的方法。切面是在应用程序中横切关注点的通用类。是通知,表示在对应的切点执行前和执行后执行相应的方法。的切面 bean,并将其应用于。

2023-09-22 10:27:20 84

原创 Nginx 安装【精简版】

简单安装nginx

2023-09-21 13:52:24 108

原创 【Java】Java中跨域问题

快速解决跨域问题

2023-09-20 14:16:16 262

原创 java的反射机制深入解析

Java的反射机制是指在运行状态中,对于任意一个类,都可以知道这个类的所有属性和方法,并且可以调用它们。通过反射机制,可以实现动态加载类、动态创建对象、动态调用方法、动态获取属性等功能。

2023-09-19 09:08:00 107

原创 RabbitMQ 五种队列大纲

rabbitmq 五种队列大纲详细说明

2023-09-18 09:25:04 120

原创 Spring Boot 常用注解

springboot常用注解场景说明

2023-09-15 09:12:38 81

原创 Java全局异常处理

简单的了全局解异常处理器

2023-09-14 11:06:30 261

原创 Java正则表达式

Java正则表达式是一种特殊的字符串模式,用于匹配和搜索字符串。Matcher类表示一个匹配器,其中包含find()、group()等方法,用于在给定的输入字符串中查找和获取匹配的字符串。Pattern类表示一个正则表达式,其中包含compile()方法,用于编译正则表达式,并返回一个Pattern对象。Java正则表达式非常灵活,对匹配字符串有很高的精度要求,可以用于多种应用程序中,例如文本处理、搜索、替换等。在Java中,可以使用Pattern类和Matcher类来实现正则表达式的匹配。

2023-09-13 09:24:45 85

原创 Java红包随机算法深入简出

场景主要用于发红包的业务里面

2023-09-12 09:29:28 472

原创 java代码实现贪心算法深入简出

简单理解贪心算法

2023-09-11 10:22:45 291

原创 java代码实现分治算法深入简出

分治算法是一种递归算法,它将问题划分为几个独立的子问题,然后递归地解决这些子问题,最后将子问题的解合并起来得到原问题的解。分治算法常用于解决计算几何、统计学以及数值分析等领域的问题。归并排序的基本思想是将一个数组划分为两个子数组,然后递归地对这两个子数组进行排序,并且将这两个有序的子数组合并成一个有序的数组。输出结果为:[1, 2, 3, 4, 5, 6, 7, 8, 9]以归并排序为例说明分治算法的思想和实现过程。将两个有序的子数组合并为一个有序的数组。将数组划分为两个子数组。

2023-09-08 16:16:22 98

原创 java代码实现二分算法深入简出

算法的思路是首先将整个数组的区间划分为左右两个子区间,然后通过比较目标值和中间元素的大小关系,确定目标值可能存在的子区间,从而缩小查找范围,直到找到目标值为止。比较 nums[mid] 和 target 的大小,如果 mid 对应的元素等于目标值,则返回 mid;否则,如果 mid 对应的元素小于目标值,则将 left 更新为 mid + 1,否则将 right 更新为 mid - 1。在 while 循环中,判断 left 和 right 是否相交,如果相交了就退出循环,表示目标值不存在。

2023-09-08 11:39:13 181

原创 Java引用传递深入简出

值传递与引用传递深入简出

2023-09-07 17:38:05 237

空空如也

空空如也

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

TA关注的人

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