Java基础
文章平均质量分 74
记录一些JavaAPI的骚操作,原理等
喜马拉雅以南
从事Java服务端应用的研发,使用过多种应用组件,也有过分布式、高并发的项目开发经验
展开
-
HashMap的长度为什么必须是2的n次方
HashMap的长度为什么必须是2的n次方首先我们看下HashMap中的源码当中那里奠定了长度是2的n次方,并且是靠近cap这个值最近的2的n次方static final int tableSizeFor(int cap) { // 首先cap-1使得n的最后一位和cap最后一位绝对不一样 int n = cap - 1; // 向右无符号的移动了1位,并使用或运算使n的所有有1的位上全部是1 n |= n >>> 1; // 向右无符号移动2位原创 2021-06-29 01:11:15 · 828 阅读 · 1 评论 -
看了源码才知道,原来HashMap是这么一个结构
文章目录Map简介HashMap内部重要属性不同类型结点结构HashMap中的重要操作HashMap实例化puttreeifyBingetremoveMap简介Map是一种键值对集合,每一个元素都包含一个键对象和一个值对象。其中键对象是不允许重复的。Map接口与Collection接口是不同的,Map接口有两个主要实现类HashMap类、TreeMap类,HashMap类按哈希算法来存取键值对象,而TreeMap类可以对键值对象进行排序。#mermaid-svg-Q66HOXDdzZwNOqv9 .原创 2021-03-25 23:57:57 · 2261 阅读 · 4 评论 -
零拷贝实现原理
[TOC]内容拷贝过程场景:从一个文件中读出并将数据传到另一台服务器实现伪代码如下:File.read(file, buf, len);Socket.send(socket, buf, len);// 此过程涉及4次拷贝注意: 在应用拷贝时会涉及到用户态切换到内核态1. 应用程序调用read()方法,此处会设计到上下文切换(用户态->内核态),底层采用DMA(direct me...原创 2019-10-31 17:18:40 · 733 阅读 · 0 评论 -
Java反射机制
在了解Java反射机制之前,咱们先来了解下JVM的运作流程: 通过javac命令编译后JVM启动,你的代码会编译成一个.class文件,然后被类加载器加载进JVM的内存中,你的类Object加载到方法区中,创建了Object类的class对象到堆中,注意这个不是new出来的对象,而是类的类型对象,每个类只有一个class对象,作为方法区类的数据结构的接口。JVM创建对象前,会先检查类是否...原创 2018-04-08 19:33:38 · 200 阅读 · 1 评论 -
Java this关键字使用规则
this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性。例如:public class Demo{ public int x = 10; public int y = 15; public void sum(){ // 通过 this 点取成员变量 int z = this.x + this.y; Sys转载 2017-10-23 21:47:11 · 642 阅读 · 0 评论 -
面向对象特征——继承及重写
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。继承可以理解为一个对象从另一个对象获取属性和方法的过程。 继承中最常使用的两个关键字是extends(继承)和implements(接口的实现)这两个关键字的使用决定了一个对象和另一个对象是否是IS-A(是一个)关系,通过使用这两个关键字,我们能实现一个对象获取另一个对原创 2017-11-18 09:48:49 · 282 阅读 · 0 评论 -
JavaSE 学Java语言的前情概要
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。 Java发展到今天,已经成为了一个真正意义上的语言标准Java的标准指的是一种作为应用层封装的标准,使用Java可以调原创 2017-09-11 21:56:15 · 639 阅读 · 1 评论 -
JDK/JRE/JVM渗入了解及Windows系统JDK配置
为了今后在不同的机器上配置JDK思路更为清晰,整理了部分关于JDK和JRE的知识点 : JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 JRE,即Java程序运行环境Java Runtime Environment缩写,指Java运行环境,是Sun的产品。 JVM即Java虚拟机存在于JRE中,不同的操作系统所原创 2017-09-16 08:34:14 · 545 阅读 · 0 评论 -
Java的方法重载规则
Java中的方法,即函数(文中我们统称之为“方法”),是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能。而且,同时还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值传入子程序,供计算机处理;所谓出口,就是指函数的返回值,在程序段执行之后,由此返回值将值传回给调用它的程序。原创 2017-10-23 21:19:44 · 11604 阅读 · 3 评论 -
面向对象特征之一:封装和隐藏
使用者对类内部定义的属性(对象的成员变量)的直接操作会导致数据的错误、混乱或安全性问题。 Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:隐藏一个类中不需要对外提供的实现细节;使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;便于原创 2017-10-30 21:59:31 · 307 阅读 · 0 评论 -
四种访问权限修饰符
Java权限修饰符public、protected、private置于类的成员定义前,用来限定对象对该类成员的访问权限。对于class的权限修饰只可以用public和default(缺省)。 Øpublic类可以在任意地方被访问。 Ødefault类只可以被同一个包内部的类访问。转载 2017-10-30 22:04:47 · 6472 阅读 · 0 评论 -
类的成员之三:构造器(构造方法)
构造器的特征: 它具有与类相同的名称 它不声明返回值类型。(与声明为void不同) 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值 构造器的作用:创建对象;给对象进行初始化,如:Order o = new Order(); Person p = new转载 2017-10-30 22:34:08 · 393 阅读 · 0 评论 -
IO流简单学习知识点
流是一组有顺序的,有起点和终点的字节/字符集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。输入input 文件——》程序======输入流输出output 文件《——程序======输出流(站在程序角度来看是输出还是输入)一、IO的分类 按照数据单位分类: 字节原创 2017-11-02 17:37:24 · 232 阅读 · 0 评论