随笔分类 - java
摘要:在软件工程中,单例模式是一种软件设计模式,它将类的实例化限制为一个“单个”实例。当恰好需要一个对象来协调整个系统中的动作时,这很有用。 通常,这是通过以下方式完成的: 声明该类的所有构造函数为私有 和提供一个静态方法,该方法返回对该实例的引用 饿汉式:该实例通常存储为私有静态变量。在初始化变量时,即
阅读全文
摘要:什么是轮询,它有什么问题? 反复测试条件直到其变为真的过程称为轮询。 轮询通常是借助循环来实现的,以检查特定条件是否为真。如果为真,则将采取某些措施。这浪费了许多CPU周期,并使实现效率低下。例如,在一个经典的排队问题中,一个线程正在产生数据而另一个线程正在消耗数据。 Java多线程如何解决这个问题
阅读全文
摘要:众所周知,在Java中,类提供对象的蓝图,您可以从类创建对象。在Java中有许多不同的方法来创建对象。 以下是一些在Java中创建对象的方法: 1、 使用new关键字 使用new关键字是创建对象的最基本方法。这是在java中创建对象的最常见方法。几乎99%的对象都是这样创建的。通过使用这个方法,我们
阅读全文
摘要:序列化是一种将对象状态转换为字节流的机制。反序列化是使用字节流在内存中重新创建实际Java对象的反向过程。此机制用于持久化对象。 创建的字节流与平台无关。因此,在一个平台上序列化的对象可以在另一个平台上反序列化。 为了使Java对象可序列化,我们实现java.io.Serializable可序列化接
阅读全文
摘要:此类提供线程局部变量。这些变量不同于普通的对应变量,因为每访问一个(通过其get或set方法)线程都有自己独立初始化的变量副本。 基本上,除了编写不可变的类之外,它是实现线程安全的另一种方法。 由于对象不再是共享的,所以不需要同步来提高应用程序的可伸缩性和性能。 它扩展了类对象。 ThreadLoc
阅读全文
摘要:1、线程在Java中,任何时间点都存在以下任何一种状态 New Runnable Blocked Waiting Timed Waiting Terminated 下图显示了线程在任何时刻的各种状态。 2、线程的生命周期 New(新线程):创建新线程时,它处于新状态。当线程处于此状态时,线程尚未开始
阅读全文
摘要:众所周知,集合是定义明确的不同对象的集合。集合的每个成员称为集合的元素。因此,换句话说,我们可以说一个集合永远不会包含重复的元素。但是如何在Java Set接口中实现的类(例如HashSet,LinkedHashSet,TreeSet等)实现这种唯一性。在本文中,我们将讨论这种独特性背后的隐藏真理。
阅读全文
摘要:HashMap包含一个Node数组,Node可以表示具有以下对象的类: int hash K key V value Node next 现在我们来看看它是如何工作的。首先我们将看到hash的执行过程。 Hashing 哈希是使用hashCode()方法将对象转换为整数形式的过程。为了获得更好的Ha
阅读全文
摘要:HashMap是一个实现Map接口Java集合框架。HashMap的最重要特征是它具有恒定的时间性能以进行检索和插入, 决定HashMap性能的两个因素是: Initial Capacity(初始化容量) Load Factory(负载系数) 在我们解释HashMap的Initial Capacit
阅读全文
摘要:假设我们有一个场景:需要查询指定条件的人员信息,Person类定义了人员属性,Utils生成我们需要的人员名单,下面的例子我们来探讨下, Person: package crelle.test.java.other.beans; import java.time.LocalDate; /** * @
阅读全文
摘要:如何在Java中迭代任何Map Java中通常有五种遍历Map的方法。在本文中,我们将讨论所有这些内容,并探讨它们的优缺点。首先,我们不能直接使用迭代器来迭代Map,因为Map不是Collection。同样,在继续之前,您必须对Map.Entry <K,V>接口有所了解。由于Java中的所有Map都
阅读全文
摘要:volatile修饰符修饰变量,不可以修饰类和方法,volatile不是线程安全的,但是一写多读的多线程情况下是线程安全的。 多线程的特性: 可见性 各线程之间的变量会同步到主线程 原子性 volatile是可见的,但不是原子的。 synchronized是可见的也是原子的。 一个线程写,多个线程读
阅读全文
摘要:昨天研究类加载的双亲委派,按照demo敲敲加深记忆的时候,报了标题上的错。困扰了一夜,今天起来吃过饭就琢磨这个事情,刚刚终于搞明白了。 demo的目的是利用URLLoader加载磁盘上的Person类 我的demo的目录结构: 代码结构: package com.classloader.test;
阅读全文
摘要:一:在搞明白==和equals之前我们要搞明白一件事情,就是java中内存分类? java中内存可以简单的分类为栈内存和堆内存(ps:笔主只是简单的分类,便于笔主这种入门级程序员理解,如果想细分jvm内存可以查阅相关资料) 栈内存:存放基本数据类型和引用变量,类似这种 int a = 1; Stri
阅读全文