自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java开发常用注解

用于抑制泛型可变参数(varargs)的类型安全警告。指定注入的Bean名称,解决多个同类型Bean的冲突。将方法返回值序列化为HTTP响应体(如返回JSON)。标记数据访问层(DAO层)组件,自动处理数据库异常。标记类、方法或字段已过时,使用时编译器会生成警告。自动注入依赖(推荐改用构造器注入,但注解仍常见)。标记接口为函数式接口(仅允许一个抽象方法)。标记业务逻辑层(Service层)组件。配置主键生成策略(如自增、UUID)。标记为Spring管理的通用组件。在配置类中声明方法返回的Bean。

2025-03-07 21:41:52 935

原创 JVM面试题100

JVM(Java Virtual Machine,Java虚拟机)是Java平台的核心组件之一,它是一个虚拟的计算机,能够在各种硬件平台上运行。JVM的作用包括加载、校验、执行字节码指令以及提供一个运行时环境。通过JVM,Java实现了“编写一次,到处运行”的理念。

2025-03-07 18:51:16 769

原创 java基础100道面试题

特性接口(Interface)抽象类(Abstract Class)成员变量默认为可以有各种修饰符的变量方法默认为可以有具体实现的方法继承关系类可以实现多个接口类只能继承一个抽象类构造方法没有构造方法可以有构造方法使用场景定义规范提供部分实现和模板不可变对象:一旦创建后,其状态(属性值)不能被修改的对象。特点所有字段必须是final且不可变。不提供任何修改对象状态的方法。如果需要“修改”,则返回一个新的对象。示例Java中的StringInteger等包装类都是不可变对象。

2025-03-04 11:25:46 920

原创 微服务100道面试题

是一种将应用程序设计为一组小型、独立部署的服务的架构风格。每个服务运行在自己的进程中,通过轻量级机制(通常是HTTP/REST或消息队列)进行通信。

2025-03-03 10:50:17 902

原创 Redis100道高频面试题

单线程的原因Redis的核心操作(如读写、命令执行)非常简单且高效,单线程可以避免多线程间的上下文切换开销。使用I/O多路复用技术(epoll/kqueue/select)来处理并发连接,保证高吞吐量。单线程高效的原理减少了锁竞争和线程切换的开销。命令执行时间短,适合内存操作。数据结构简单,减少了复杂度。哨兵模式是一种高可用解决方案,Redis Sentinel负责监控主从节点的状态,并在主节点故障时自动切换到新的主节点。监控:实时检测主从节点是否正常运行。故障转移。

2025-03-02 10:56:11 1154 2

原创 Mysql100道高频面试题

数据库:是按照数据结构来组织、存储和管理数据的仓库。它允许用户高效地访问和管理数据。DBMS(数据库管理系统):是一种软件系统,用于创建和管理数据库。它的作用包括:数据定义(DDL)数据操作(DML)数据查询(DQL)数据控制(安全性、完整性、并发性等)主键(Primary Key):唯一标识表中每一行数据的字段或字段组合,不允许为空且值必须唯一。外键(Foreign Key):用于建立和加强两个表之间的关系,确保引用完整性。外键通常指向另一个表的主键。子查询。

2025-03-01 11:56:33 1761 1

原创 Java悲观锁与乐观锁介绍,优缺点

当多个线程同时尝试获取同一个锁时,悲观锁策略会假设最坏的情况,即假定多个线程同时获取锁会导致数据不一致。因此,它会采取一种较为保守的策略,避免多个线程同时获取锁。对数据采取“悲观”态度,认为数据随时都有可能被别人改。读取的时候就开始霸占,别人想改得排队,等我改完再说。乐观锁的核心思想是在获取锁之前先进行尝试性读取共享资源,如果读取成功,则认为没有其他线程同时访问该资源,可以获取锁并进行写入操作。如果读取失败,则说明有其他线程同时访问该资源,需要重新进行读取并尝试获取锁。

2024-04-25 20:59:47 479 2

原创 JVM(Java虚拟机)功能特点、垃圾回收机制

垃圾是指在运行程序中没有任何引用指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。

2024-04-23 19:33:15 1697

原创 Java中String为什么不可变,这样有什么好处

在Java中,字符串(String)是不可变的,这意味着一旦创建了一个字符串对象,它的内容就不能再被修改。这个设计决策是由Java的创始人詹姆斯·高斯林(James Gosling)做出的,主要是出于内存管理和性能考虑。

2024-04-22 21:30:17 673

原创 Java–String, StringBuffer, StringBuilder的区别

在 Java 中,String类型的对象是不可变的,这意味着一旦创建了一个String对象,它的值就不能再被修改。这是因为String对象的value数组是final类型的,这意味着它的值不能被改变。因此,每次对String对象进行操作时,都会创建一个新的对象,而不是修改原始对象。当一个线程需要访问或修改一个String对象时,它会首先获取该对象的锁。其他线程在等待锁的过程中会处于阻塞状态。当锁被释放后,其他线程可以继续执行。由于String对象的值是不可变的,因此在多个线程中共享一个String。

2024-04-21 12:06:09 398 1

原创 Java中的==与equals的区别

首先,==是运算符,equals()是方法。==是一个二元运算符,用于比较两个对象的引用是否相同。当使用==进行比较时,Java会检查两个对象的内存地址是否相同。如果两个对象的内存地址相同,则认为它们是相同的。equals()是一个方法,用于比较两个对象的值是否相同。当使用equals 进行比较时,Java会比较两个对象的属性或内容是否相同。如果两个对象的属性或内容相同,则认为它们是相同的。

2024-04-20 20:24:58 529 1

原创 集合框架:Set集合的特点、HashSet集合的底层原理、哈希表、实现去重复

Set(集合)是一种,它的特点如下:1.:Set 中的元素没有顺序,无法通过索引来访问。2.:Set 中不允许有重复的元素,每个元素在集合中只能出现一次。3.:Set 内部通常是基于哈希表或平衡树等数据结构实现的。4.:因为 Set 中的元素是唯一的,所以可以很方便地用来做去重操作。同时,由于内部实现采用哈希表或树形结构,所以查找某个元素的时间复杂度为 O(1) 或 O(log n)。5.:由于 Set 中的元素是基于哈希表实现的,所以集合中的元素必须是可哈希的,即元素必须有一个明确的哈希值。

2023-11-08 22:10:41 3072 10

原创 集合框架:List系列集合:特点、方法、遍历方式、ArrayList,LinkList的底层原理

当我们往 LinkedList 中添加元素时,它会创建一个新的包含元素值的节点,并在链表的末尾添加这个新节点。同样地,如果我们从 LinkedList 中删除元素,它会找到包含要删除元素的节点,并在链表中将这个节点移除。总结起来,ArrayList 可以看作是一个可调整大小的容器,它能够自动扩展和收缩内部的数组,以适应添加和删除元素的需求,并通过索引提供快速访问元素的能力。总结起来,LinkedList 可以看作是一个双向链表,它可以高效地添加或删除元素,但访问元素时效率较低。

2023-11-07 18:42:56 944 12

原创 UDP通信实现多发多收 及 实现多客户端发送(java代码)

把“7777”删掉,每次运行,java会自动生成一个端口,就没有问题了。

2023-11-05 21:31:01 1274 13

原创 UDP通信实现一发一收(java代码)

特点:无连接、不可靠通信。不事先建立连接;发送端每次把要发送的数据(限制在64KB内)、接收端IP、等信息封装成一个数据包,发出去就不管了。java提供了一个java.net.DatagramSocket类来实现UDP通信。

2023-11-05 12:56:30 441 8

原创 网络通信之端口、协议

端口号是用于。它允许网络上的不同设备和应用程序之间进行数据交换和通信。标记正在计算机设备上运行的应用程序的,被规定为一个 16 位的二进制,范围是0~65535。

2023-11-04 11:37:43 215 9

原创 集合框架:Collection的遍历方式(迭代器,增强for,lambda表达式)

(数组没有迭代器),在Java中迭代器的代表是Iterator。迭代器(Iterator)是一种用于遍历集合(如数组、列表、字典等)中元素的对象,它就像一个光标,指向集合中的一个元素,我们可以通过调用迭代器的方法来遍历下一个元素,以此类推。

2023-11-02 17:25:05 118 8

原创 认识泛型,泛型类和泛型接口

在代码中使用特殊的语法来定义一个泛型类型或方法。例如,可以使用尖括号 “” 来定义一个泛型类或方法。

2023-11-02 16:29:17 102 8

原创 算法:二分查找算法

在二分查找过程中,首先确定数据集的中间元素,然后将目标元素与中间元素进行比较。如果目标元素等于中间元素,则查找成功;如果目标元素小于中间元素,则在数据集的前半部分继续查找;如果目标元素大于中间元素,则在数据集的后半部分继续查找。通过不断地将查找范围缩小一半,最终可以在较短的时间内找到目标元素或确定目标元素不存在于数据集中。二分查找的时间复杂度为O(log n),其中n为数据集中元素的数量。

2023-10-15 12:31:50 188 12

原创 Java常用API之BigDecimal(Java中实现高精度运算)

是Java中一个的类。它提供了完整的精确数字运算功能,可以处理需要高精度或大范围数字运算的场景。与基本数据类型(如int、double)相比,BigDecimal能够提供的小数点运算,避免了浮点数运算中的精度损失问题。BigDecimal可以进行加、减、乘、除等基本数学运算,同时也支持取余、取整、比较大小等操作。它还提供了一系列方法来处理特殊需求,比如设置精度、四舍五入等。

2023-10-12 20:31:22 2901 14

原创 认识多态,使用多态的好处,多态下的类型转换问题

Java中的多态是指通过继承和重写实现的一种特性,允许一个父类型的引用变量指向其子类型的对象,并在运行时根据实际类型调用适当的方法。它有助于实现代码的灵活性、可扩展性和可维护性。

2023-10-08 10:46:40 265 5

原创 this(...)调用兄弟构造器代码解析及注意事项

this(...)调用兄弟构造器

2023-10-07 21:38:09 241 2

原创 数据结构—时间复杂度计算(简单类型)

时间复杂度是衡量算法执行时间随问题规模增长而增长的度量。它表示算法执行所需时间的增长率。通常使用大O符号(O)来表示时间复杂度。时间复杂度描述的是算法运行时间的增长趋势,并不是具体的运行时间。它忽略了常量因素和低阶项,关注的是问题规模趋于无穷时,算法执行时间的增长情况。

2023-09-23 10:50:07 182 4

原创 初识java,JDK下载与安装,第一个java程序--HelloWorld

java背景及发展历程,JDK下载与安装,第一个java程序--HelloWorld

2023-07-21 17:37:10 155 2

空空如也

空空如也

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

TA关注的人

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