自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

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

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

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

2024-04-23 19:33:15 1615

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

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

2024-04-22 21:30:17 448

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

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

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

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

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

2024-04-20 20:24:58 493

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

原创 算法:二分查找算法

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

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

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

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

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

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

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

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

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

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

2023-10-07 21:38:09 100 1

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

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

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

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

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

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

空空如也

空空如也

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

TA关注的人

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