HashSet:不可重复的字典实现了Set接口HashSet依赖的数据结构是哈希表因为实现的是Set接口,所以不允许有重复的值插入到HashSet中的对象不保证与插入的顺序保持一致。对象的插入是根据它的hashcodeHashSet中允许有NULL值HashSet也实现了Searlizable和Cloneable两个接口拓展: LinkedHashSet:具有按照插入顺序排序的HashSet,是H
转载
2023-08-20 10:11:10
95阅读
引言之所以我想总结一下java中不太用的东西,是因为我再研究每个版本jdk中,发现有些内容“热火朝天”,但是有些东西却“门可罗雀”。比如说jdk1.5中新增了泛型,强化for循环和枚举等,但是前两者已经被各位熟知了,但是枚举在日常开发中都不太会用的。在本篇博文中,我会详细介绍enum的使用方式,同时比较常量与enum的优劣。笔者目前整理的一些blog针对面试都是超高频出现的。技术点在jdk1.5中
转载
2023-08-11 11:03:19
0阅读
# Java中CountDownLatch使用场景
在Java的并发编程中,CountDownLatch是一个非常有用的工具类,它用于控制多个线程的执行进程。CountDownLatch允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。本文将详细介绍CountDownLatch的功能、使用场景及代码示例。
## 1. 什么是CountDownLatch?
CountDownLatc
原创
2024-09-11 04:32:22
107阅读
前言 在许多情况下,我们需要创建对象的副本,比如在初始化操作比较复杂或者需要大量资源的情况下。在这些情况下,我们可以使用原型模式来避免重复创建对象,提高程序的性能。本文将介绍Java中的原型模式以及如何在实际应用中使用它。一、原型模式概述原型模式(Prototype Pattern)属于创建型设计模式,它的核心思想是通过克隆一个已经存在的对象(原型)来返回新的对象,而不是通过实例化类来创建新的对象
转载
2024-07-13 07:42:44
36阅读
# Java中的SPI(Service Provider Interface)使用场景
## 一、概述
SPI(服务提供者接口)是Java中的一种服务发现机制,它允许开发者以插件的形式扩展应用程序。使用SPI的主要目的是解耦和增强应用程序的可扩展性。本文将通过实例向您详细介绍如何在Java中实现SPI。
## 二、流程概述
下面是实现Java SPI的基本流程:
| 步骤 | 描述 |
# Java中AOP使用场景介绍
面向切面编程(Aspect Oriented Programming,简称 AOP)是Java中一种重要的编程范式,它使得我们能够将跨越多个模块的关注点(例如日志、安全、事务管理等)分离,从而提高代码的可维护性和可重用性。本文将为刚入行的开发者全面讲解如何在Java中实现AOP。
## 整体流程
在Java中实现AOP一般分为以下几个步骤:
```merm
ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些import java.util.*;
/**
* 演示Vector的使用。包括Vector的创建、向Vector中添加元素、从Vector中删除元素、
* 统计Vector中元素的个数和遍历Vector中的元素。
*/
public class VectorDemo{
public stat
DelayQueue 简介由优先级堆支持的、基于时间的调度队列,内部基于无界队列PriorityQueue实现,而无界队列基于数组的扩容实现。队列创建BlockingQueue<String> blockingQueue = new DelayQueue();要求入队的对象必须要实现Delayed接口,而Delayed集成自Comparable接口应用场景对缓存超时的数据进行移除当向缓
转载
2023-08-11 20:12:19
134阅读
B. 无界队列:队列的存储空间无限(不考虑内存空间),例如LinkedBlockingQueue。使用这种队列的线程池,worker线程的个数达到corePoolSize之后不再增加,新的任务全部都存入队列,所以maximumPoolSize参数不会产生实质性的作用。这种队列适合任务之间无依赖关系的场景,也可以用于对突然增长的高并发请求进行平滑处理或削峰。C. 有界队列:有空间大小限制的阻塞队列,
转载
2024-10-27 18:48:46
14阅读
## Java中各个Map使用场景
作为一名经验丰富的开发者,我将为刚入行的小白介绍Java中各个Map的使用场景。在介绍之前,我们先来梳理一下整个流程,如下表所示:
| 步骤 | 描述 |
| ------ | ------ |
| 1 | 了解Map接口及其实现类 |
| 2 | 根据需求选择合适的Map实现类 |
| 3 | 使用Map对象进行增删改查操作 |
现在,让我们逐步来学习每
原创
2023-12-19 08:04:26
319阅读
Java 浅析三大特性之一多态之前我们的文章讲了Java的封装和继承,封装讲的时候,并没有体现出来封装的强大之处,反而还要慎用封装。因为这时的封装还没有和多态联系到一起,还无法看出向上转型的厉害之处。 多态,是指同一个行为具有多种的表现形式。同一个方法根据调用对象的不同而产生多种结果。对于Java而言,多态就是程序中定义的引用变量,和调用方法的代码在编译的时候就决定好了,但引用变量所指向的对象,却
线程安全解决方案synchronized,ReentrantLock,Atomic 使用场景描述在实际开发过程中如果服务量,请求频繁,就会经常碰见并发,这时候不做处理就会出现很多非法数据。这时候就需要解决线程安全的问题,这时候就可以使用java当中的锁机制。常用有java关键synchronized、可重入锁ReentrantLock,还有并发包下的Atomic 或者Concurrent的安全类型
转载
2024-03-11 14:37:22
30阅读
为什么要有Spark SQL? 以往在使用Hadoop时,Hive作为一个数据仓库,但在使用中,我们更多感觉Hive是一个解析引擎,而Hive的底层走的也是MapReduce,而这个MapReduce是Hadoop的,在前面我们也解释了Hadoop的MapReduce的缺点,那么此时我们是使用了Spark实现的MapReduce计算模型,
转载
2023-09-10 19:41:55
237阅读
作者述:JUC是对Java体系内现有数据结构的特性扩展,通过精细化锁控制,和对基本数据类型的特性加工用以支持并发应用场景的业务需求,并提供了并发情况下的池化解决方案。有基础的同学可以直接跳到第四节内容.一、Collections工具类在学习JUC之前我们应当了解一下Collections工具类,该类应用工厂模式及装饰者模式为已有数据结构进行加工,赋予dynamically(checked) 、em
转载
2024-06-06 10:39:47
783阅读
《dubbo应用场景示例一》中我们介绍了3种dubbo应用场景,今天我们接着聊聊dubbo几种应用场景。1、线程模型如果事件处理的逻辑能迅速完成,并且不会发起新的 IO 请求,比如只是在内存中记个标识,则直接在 IO 线程上处理更快,因为减少了线程池调度。但如果事件处理逻辑较慢,或者需要发起新的 IO 请求,比如需要查询数据库,则必须派发到线程池,否则 IO 线程阻塞,将导致不能接收其它请求。如果
转载
2023-07-18 17:05:44
223阅读
在Java并发场景中,会涉及到各种各样的锁,比如:分段锁、公平锁,独享锁、共享锁、乐观锁,悲观锁等等,感觉特别的繁杂,一句话很难描述清楚,但又特别的重要。下面我就通过图文并茂的方式,一起来梳理和详解最全锁!——嘀嘀!上车了!准备上车了!!——乐观锁 VS 悲观锁乐观锁与悲观锁是一种广义上的概念,在Java并发编程和数据库中都有实际的应用场景。1.乐观锁顾名思义,就是很乐观,每次去拿数据的时候都认为
转载
2023-08-15 20:45:52
441阅读
Thread.yield() 让步线程,执行这一步的线程会主动告诉CPU调度器释放原本属于自己的资源,但是yield只是一个提示(hint),CPU调度器并不会担保每次都能满足yield提示。java中yiled()方法的作用是:让当前处于运行状态的线程变为可运行状态,让出抢占资源的机会
用一个简单的比喻来形容就是:
三个人塞米赛跑,三人都快跑到90m位置的时候,2号突然站在原地等待,其他人继
转载
2022-05-19 16:38:00
661阅读
关于java中的HashMap,我们在项目中经常使用到,但是我们的场景是否使用对了呢? 下面分为四个部分来阐述我的HashMap的理解 1、为什么要使用hashMap? 在项目中,需求的实现需要使用到一些数据结构来保存key-value形式的数据,也就是说hashMap其实就是一个装载数据的容器。例如,我需要查询水果的价格,那么很自然就会想到将这些数据存放在一个hashMap里面,苹果:
转载
2023-07-12 13:10:00
197阅读
反射的应用场景一、概述反射技术: Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
转载
2023-09-04 13:48:41
130阅读
异常 - Expectation一、基本概念Java中将程序中发生的不正常的情况称为“异常”(开发中的语法错误和逻辑错误不是异常);二、 分类Errorjava 虚拟机无法解决的严重问题;资源耗尽,栈溢出;Expectation其它因编程错误偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理;例如:空指针访问,试图读取不存在的文件,网络连接中断等等;运行时异常一般指编程时的逻辑错误,是程
转载
2024-01-02 11:59:42
57阅读