首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏产品优化

    Java 基础概念·Java HashMap

    Java HashMap 本文为个人学习摘要笔记。 原文地址:Java8 系列之重新认识 HashMap 摘要 HashMap 是 Java 使用频率最高的用于映射(键值对)处理的数据类型。 Java 为数据结构中的映射定义了一个接口 java.util.Map,此接口主要有四个常用的实现类,分别是 HashMap、Hashtable、LinkedHashMap 和 TreeMap,类继承关系如下图所示 哈希表为解决冲突,可以采用开放地址法和链地址法等来解决问题,Java 中 HashMap 采用了链地址法。链地址法,简单来说,就是数组加链表的结合。 如果哈希桶数组很大,即使较差的 Hash 算法也会比较分散,如果哈希桶数组数组很小,即使好的 Hash 算法也会出现较多碰撞,所以就需要在空间成本和时间成本之间权衡,其实就是在根据实际情况确定哈希桶数组的大小,并在此基础上设计好的 tab[i] = newNode(hash, key, value, null); else { Node<K,V> e; K k; // 步骤3

    79140编辑于 2022-12-01
  • 来自专栏产品优化

    Java 基础概念·Java String

    Java String 概览 String 被声明为 final,因此它不可被继承(Integer 等包装类也不能被继承)。 在 Java 8 中,String 内部使用 char 数组存储数据。 3. 安全性 String 经常作为参数,String 不可变性可以保证参数不可变。 因此 s3 和 s4 引用的是同一个字符串。 #2 = Class #18 // java/lang/String #3 = String #19 // class java/lang/String 3: dup 4: ldc #3 // String abc

    47840编辑于 2022-12-01
  • 来自专栏产品优化

    Java 基础概念·Java Stream

    Java Stream Stream 总览 Stream 是 Java 8 新增加的类,用来补充集合类。 Stream 代表数据流,流中的数据元素的数量可能是有限的,也可能是无限的。 除非显示地创建并行流,否则 Java 库中创建的都是串行流。Collection.stream() 为集合创建串行流而 Collection.parallelStream() 为集合创建并行流。 这是因为 Java 不保证这些副作用对其它线程可见,也不保证相同流管道上的同样的元素的不同的操作运行在同一个线程中。很多有副作用的行为参数可以被转换成无副作用的实现。 "A", "B", "C", "D").reduce("", String::concat)); // ABCD 基本类型 Java 8 提供了一些专门针对基本类型优化的 API,如 IntStream Stream 详解 Java 8 之基本类型优化

    1.3K40编辑于 2022-12-01
  • 来自专栏产品优化

    Java 基础概念·Java 异常

    Java 异常 Throwable 可以用来表示任何可以作为异常抛出的类,分为两种:Error 和 Exception。 Error Error 类对象由 Java 虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。 例如,Java 虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。 这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止;还有发生在虚拟机试图执行应用时,如类定义错误(NoClassDefFoundError)、链接错误(LinkageError)。 在 Java 中,错误通常是使用 Error 的子类描述。 Exception Exception 分为两种: 受检异常:需要用 try...catch...

    40920编辑于 2022-12-01
  • 来自专栏产品优化

    Java 基础概念·Java 枚举

    Java 枚举 本文为个人学习摘要笔记。 原文地址:恕我直言,我怀疑你没怎么用过枚举 为什么需要枚举 相比于使用接口或者常量类,枚举具有一个明确性的约束。 Draft = 1; //草稿 public static final int Review = 2; //审核 public static final int Published = 3; UserRole role1 = UserRole.ROLE_ROOT_ADMIN; UserRole role2 = UserRole.ROLE_ORDER_ADMIN; UserRole role3 Calculator.DIVISION.execute(4.0, 2.0)); // 2.0 } } 枚举集合类 JDK5.0 中在增加 Enum 类的同时,也增加了两个工具类 EnumSet 和 EnumMap,这两个类都放在 java.util (User user : userList) { userStatisticMap.merge(user.getUserRole(), 1, Integer::sum); } 扩展阅读: Java

    72120编辑于 2022-12-01
  • 来自专栏产品优化

    Java 基础概念·Java List

    Java List 本文为个人学习摘要笔记。 具体详情可以参考:18 Java fail fast 这里再次分析下源码: public Iterator<E> iterator() { return new Itr(); } private

    81330编辑于 2022-12-01
  • 来自专栏产品优化

    Java 基础概念·Java 继承

    Java 8 开始,接口也可以拥有默认的方法实现,这是因为不支持默认方法的接口的维护成本太高了。在 Java 8 之前,如果一个接口想要添加新的方法,那么要修改所有实现了该接口的类。 并且从 Java 8 开始,接口也可以有默认的方法实现,使得修改接口的成本也变的很低。 中两个比较重要的概念。 ,重载是一个编译期概念。 关于重载是不是多态有多种论调,有些人认为重载不属于多态的体现,可以参考:Java 中多态的实现方式 多态 上面总结了重写与重载的概念与他们之间的区别,这里再说一下多态,以及为什么说重载不属于多态。

    72840编辑于 2022-12-01
  • 来自专栏知一杂谈

    Java基础概念

    基本原理 volatile 在Java中允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保使用排它锁来单独获得这个变量,Java中提供了 volatile,使之在多处理器开发中保证变量的可见性 synchronized 通过锁机制实现同步,在Java中每一个对象都可以作为锁,有以下三种形式: 对于普通同步方法,锁的是当前实例对象。 对于静态同步方法,所得是当前类 class 对象。 为了减少获得锁和释放锁带来的性能消耗,Java SE 1.6 引入了偏向锁和轻量级锁。 atomicStampedReference.getStamp(); System.out.println("t2拿到的初始版本号:" + stamp); //睡眠3秒 ,是为了让t1线程完成ABA操作 try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException

    43520编辑于 2021-12-07
  • 来自专栏迁移内容

    Java基础Java基本概念

    ---- 上一篇内容:Java基础Java程序设计环境 下一篇内容:Java基础Java数据类型 更多知识学习:全网最全的 Java 技术栈内容梳理(持续更新中) ---- 文章目录 一、Java 注释 二、变量与常量 1、声明变量 2、变量的初始化 3、常量 4、枚举类型变量 三、方法 1、方法的构成 2、方法参数传递 3、方法的重载 ---- 一、Java 注释 与大多数程序设计语言一样,JavaJava中,有 3 种标记注释的方式。 最常使用的方式是 //,其注释内容从 // 开始到本行结尾。一般注释少量的代码或者说明内容。 /** *This is the fisrt sample in Core Java Chapter 3 *@version 1.01 1997–03–22 *@author Gary Cornell 3、常量 在 Java 中,利用关键字 final 指示常量,关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上,常量名使用全大写。

    49460编辑于 2022-12-02
  • 来自专栏Ryan Miao

    java线程(1)--概念基础

    2.java中的线程 一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。 其他线程通过使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程。 线程又分用户线程和守护线程。 3.线程的生命周期 新建状态:使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。 4.创建一个线程 Java提供了两种创建线程方法: 通过实现Runable接口; 通过继承Thread类本身。 1、如果是扩展java.lang.Thread类的线程,则直接new即可。 6.线程的几个概念 在多线程编程时,你需要了解以下几个概念: 线程同步 线程间通信 线程死锁 线程控制:挂起、停止和恢复  7.线程同步和锁下次学习

    82880发布于 2018-03-13
  • 来自专栏Danny的专栏

    Java网络编程——基础概念

    在学习Java网络编程之前,先来了解一下涉及到的基础概念。 对于32位操作系统,它的寻址空间(虚拟存储空间)为4G(2的32次方),linux操作系统中将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF)供内核使用,称为内核空间,而将较低的3G (3)把数据从内核空间拷贝到用户空间。 (4)内核返回结果,用户进程解除阻塞。 非阻塞IO (1、3)用户进程发起read,进行recvfrom系统调用,如果数据还没准备好就直接返回。 (3)当任何一个socket中的数据准备好了,select就会返回。 (4)这个时候用户进程调用read操作。 (5)将数据从内核拷贝到用户空间缓存,在此期间用户进程会被阻塞。 ---- 转载请注明出处——胡玉洋 《Java网络编程——基础概念

    70220编辑于 2022-08-03
  • 来自专栏JAVA 框架/源码学习

    JAVA并发之基础概念

    例2: 一个人吃3个馒头 并行(parallelism):并行的关键在于同时处理多个任务 例子1: 吃饭时,电话响起,同时进行吃饭和电话2个动作 例子2: 三个人吃3个馒头 “并发”指的是程序的结构,“ 并行(parallelism) 这个概念很好理解。所谓并行,就是同时执行的意思,无需过度解读。判断程序是否处于并行的状态,就看同一时刻是否有超过一个“工作单位”在运行就好了。 并发(concurrency) 要理解“并发”这个概念,必须得清楚,并发指的是程序的“结构”。当我们说这个程序是并发的,实际上,这句话应当表述成“这个程序采用了支持并发的设计”。 区分的关键 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication) 3.阻塞与非阻塞 阻塞调用是指调用结果返回之前

    35710发布于 2021-01-14
  • 来自专栏产品优化

    Java 基础概念·Java final 与 static

    Java final 与 static final 数据 声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。

    42430编辑于 2022-12-01
  • 来自专栏产品优化

    Java 基础概念·Java 日期与时间

    // 星期四 十二月 26, 2019 Date 对象有几个严重的问题:它不能转换时区,除了 toGMTString() 可以按 GMT+0:00 输出外,Date 总是以当前计算机系统的默认时区为基础进行输出 个类型的时候,由于执行一行代码总会消耗一点时间,因此,3 个类型的日期和时间很可能对不上(毫秒数不同)。 减1月 LocalDateTime dt3 = dt2.minusMonths(1); System.out.println(dt3); // 2019-09-30T17:30:59 月份加减会自动调整日期 在使用 Java 程序操作数据库时,我们需要把数据库类型与 Java 类型映射起来。 下表是数据库类型与 Java 新旧 API 的映射关系: 数据库 对应 Java 类(旧) 对应 Java 类(新) DATETIME java.util.Date LocalDateTime DATE

    6K30编辑于 2022-12-01
  • 来自专栏漫漫架构路

    ElasticSearch学习笔记(3)——基础概念

    v' 3.文档(Document) Index 里面单条的记录称为 Document(文档),是ElasticSearch中最小的存储单元。类似SQL中的一行记录。

    47810发布于 2020-09-03
  • 来自专栏产品优化

    Java 基础概念·Java 只有值传递

    Java 只有值传递 本文为个人学习摘要笔记。 Java 中的值传递 上面的三个栗子,表现的结果不一样,导致大家对 Java 中传递类型产生困惑。 其实,上面的概念没有错,只是代码的例子有问题。 这里再复习下值传递和引用传递的概念,然后再举几个真正恰当的例子。 通过概念我们也能知道,这里是把实际参数的引用的地址复制了一份,传递给了形式参数。所以,上面的参数其实是值传递,把实参对象引用的地址当做值传递给了形式参数。 简单点说,Java 中的传递,是值传递,而这个值,实际上是对象的引用。而按共享传递其实只是按值传递的一个特例罢了。所以我们可以说 Java 的传递是按共享传递,或者说 Java 中的传递是值传递。

    63530编辑于 2022-12-01
  • 来自专栏产品优化

    Java 基础概念·Java Object 通用方法

    Java Object 通用方法 概览 public boolean equals(Object obj) public native int hashCode() protected native CloneExample e1 = new CloneExample(); // CloneExample e2 = e1.clone(); // 'clone()' has protected access in 'java.lang.Object CloneExample e2 = e1.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } java.lang.CloneNotSupportedException Effective Java 书上讲到,最好不要去使用 clone(),可以使用拷贝构造函数或者拷贝工厂来拷贝一个对象。

    46140编辑于 2022-12-01
  • 来自专栏产品优化

    Java 基础概念·Java 虚拟机

    3. 通过引入 Region 的概念,从而将原来的一整块内存空间划分成多个的小空间,使得每个小空间可以单独进行垃圾回收。这种划分方法带来了很大的灵活性,使得可预测的停顿时间模型成为可能。 其中二进制字节流可以从以下方式中获取: 从 ZIP 包读取,成为 JAR、EAR、WAR 格式的基础。 从网络中获取,最典型的应用是 Applet。 好处 使得 Java 类随着它的类加载器一起具有一种带有优先级的层次关系,从而使得基础类得到统一。 3. 实现 以下是抽象类 java.lang.ClassLoader 的代码片段,其中的 loadClass() 方法运行过程如下:先检查类是否已经加载过,如果没有则让父类加载器去加载。

    59020编辑于 2022-12-01
  • 来自专栏技术杂记

    嵌入式基础概念扫盲(3

    我们用“1”这个符号来表示一个这一“量”的概念。自然界的“量”是无穷的,我们不可能为每一个“量”都造一个符号,这样的系统没人记得住。所以必须用有限的符号按一定的规律进行排列组合来表示这无限的“量”。 *(3)恢复被中断进程的现场,CPU继续执行原来被中断的进程 主要特性 中断类型码或者由指令给出.或者是预先规定的 不执行INTA*(中断应答)总线周期 除单步中断外,任何内部中断都无法禁止 除单步中断外

    75020发布于 2021-09-15
  • 来自专栏小工匠技术圈

    Java小工匠】JavaNIO-基础概念

    Java小工匠聊网络编程--JavaNIO-基础概念 1、同步与异步 同步与异步主要是从消息通知机制角度来说的。同步没有通知,异步有知。 3、同异步与阻非塞 (1)同步阻塞 下载一个文件,下载人不做任何事情,看着进度条下载完成。 (2)同步非阻塞 下载一个文件,下载人不做任何事情,等待下载完成的通知。 (3)异步阻塞 下载一个文件,下载人做其他事情,隔断时间看着进度是否下载完成。 (4)异步非阻塞 下载一个文件,下载人做其他事情,等待下载完成的通知。

    66730发布于 2018-08-10
领券