0101【java】基础知识点涵盖
文章平均质量分 67
包含关键字、java8一些语法特性等
努力的阳光蓝孩
学习一时爽,一直学习一直爽
展开
-
对象内存分布
(标记字段):用于存储对象自身的运行时数据,例如存储对象的HashCode,分代年龄、锁标志位等信息,是synchronized实现轻量级锁和偏向锁的关键。字节对齐:为了内存的IO性能,JVM要求对象起始地址必须是8字节的整数倍。对于不对齐的对象,需要填充数据进行对齐。(类型指针):对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。实例数据:这部分主要是存放类的数据信息,父类的信息。原创 2023-09-06 18:41:39 · 72 阅读 · 0 评论 -
Synchronized 锁升级(无锁、偏向锁、轻量级锁、重量级锁)
synchronized锁升级过程总结:一句话,就是先自旋,不行再阻塞。实际上是把之前的悲观锁(重量级锁)变成在一定条件下使用偏向锁以及使用轻量级(自旋锁CAS)的形式。synchronized在修饰方法和代码块在字节码上实现方式有很大差异,但是内部实现还是基于对象头的MarkWord来实现的。JDK1.6之前synchronized使用的是重量级锁,JDK1.6之后进行了优化,拥有了无锁->偏向锁->轻量级锁->重量级锁的升级过程,而不是无论什么情况都使用重量级锁。偏向锁。原创 2023-09-06 18:37:42 · 112 阅读 · 0 评论 -
【Java】0602 泛型、集合Map
一、总体框架图1、HashMap 根据键的 hashCode 值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。2、 HashMap 最多只允许一条记录的键为 null,允许多条记录的值为 null。3、HashMap 非线程安全,即任一时刻可以有多个线程同时写 HashMap,可能会导致数据的不一致。4、如果需要满足线程安全,可以用 Collections 的 synchronizedMap 方法使HashMap 具有线程安全的能力,或者使用 Con原创 2020-10-04 22:53:50 · 175 阅读 · 0 评论 -
【java】04 判断ip是否合法,是否在同一网段
1、IpV4 工具类package com.hao.demo.test2;import java.util.regex.Pattern;/** * <pre> * IP地址范围: * 0.0.0.0~255.255.255.255,包括了mask地址。 * * IP地址划分: * A类地址:1.0.0.1~126.255.255.254 * B类地址:128.0.0.1~191.255.255.254 * C类地址:192.168.0.0~192.168.255.25原创 2020-07-24 08:41:43 · 975 阅读 · 0 评论 -
【Java】03 Java 解决类型擦除
1、测试解决代码package com.hao.demo.exception;import com.google.gson.*;import com.hao.demo.common.domain.base.ResultInfo;import java.util.ArrayList;import java.util.List;/** * @author haojunhu * @date 2020-07-23 */public class GenericDemo { publ原创 2020-07-24 08:23:59 · 206 阅读 · 0 评论 -
【Java】0601 泛型、集合
一、什么是泛型?泛型可以做什么?1、Java 泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。2、通俗的来讲,就是不同的数据类型要做一个相同的操作,比如排序,求最大值等。用泛型可以用一个相同方法对代替。3、案例package com.hao.base;/** * @author haoxiansheng * Generics 泛型类 *原创 2020-07-17 08:41:08 · 138 阅读 · 0 评论 -
【Java】02 Java 基础知识 初识
一、代码注释package com.hao.base;/** * @author haoxiansheng */public class Demo1 { /** * 1、文档注释 用于类的声明、类成员变量声明、类成员方法声明等 * @param args */ public static void main(String[] args) { // 2、单行注释 String state = null;原创 2020-07-15 22:44:26 · 94 阅读 · 0 评论 -
【java基础】01 Fori与ForEach比较
一、遍历时间快慢package com.hao.demo.qcloud;import java.util.ArrayList;import java.util.LinkedList;/** * @author haoxiansheng * @date 2020-07-08 */public class TestForIAndForEach { public static void main(String[] args) { ArrayList<String&原创 2020-07-09 09:21:45 · 654 阅读 · 0 评论 -
【java基础】学习笔记 、时间的单位转换
package com.hao.demo.zookeeper;/** * @author haojunhu * @date 2020-06-06 */public class SystemCurrentTimeMillisTest { public static void main(String[] args) { /** * 一、时间的单位转换 * * 1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s) .原创 2020-06-06 19:14:37 · 325 阅读 · 0 评论 -
java学习笔记之Optional
一、概述一、概念null 带来的问题?错误之源、代码膨胀(嵌套检查、代码可读性低)1、Optional 重新定义数据模型例:public class Person { private Optional<Car> car; // 车可能为null 如果获取name 引发空指针}public class Car { private String name;}2、创建Optional对象1)Optional<T> o...原创 2020-05-23 21:45:24 · 173 阅读 · 0 评论 -
Java 8日期之间的转化 String 、LocalDateTime 、Instant 、ZonedDateTime
一、时间之间转化1、第一行转换2、第二行输出 /** *日期转化 * String 、LocalDateTime 、Instant 、ZonedDateTime */ String localDateTimeToString = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss")); Syst原创 2020-05-23 21:34:09 · 1022 阅读 · 0 评论 -
Java8日期的处理以及介绍
一、介绍1)Clock:时钟2)Duration:以秒和纳秒为单位模拟一个数量或时间量3)Instant:在时间线上模拟单个瞬时点4)LocalDate:表示ISO-8601日历系统中没有时区的日期5)LocalDateTime:表示ISO-8601日历系统中没有时区的日期时间6)LocaTime:表示ISO-8601日历系统中没有时区的时间7)MonthDay:表示ISO-8601日历系统中的月和日8)OffsetDateTime:表示ISO-8601日历系统中与UTC/G原创 2020-05-23 21:26:36 · 220 阅读 · 0 评论 -
对jdk1.8最大新特性的总结
Lambda表达式是Java 8新增的Lambda表达式中,变量和临时代码块的分隔符,即:(变量) -&gt; {代码块}如果代码块只有一个表达式,大括号可以省略。如果变量类型可以自动推断出来,可以不写变量类型。::是作用域的意思 ;:: 左边表示类或者对象, :: 右边表示这个类或者对象作用域下的函数或者方法。例子计算平方数List&lt;Integer&gt; nums ...原创 2018-11-25 10:37:53 · 659 阅读 · 1 评论 -
synchronized、volatile关键字
1、volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值,当成员变量发生变化时, 会强制将变化值写回到共享内存。 这样在任何时候,两个不同的线程总是看到成员变量的同一值。一个 volatile 对象引用可能是 null。 2、synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应...原创 2020-05-01 23:00:04 · 154 阅读 · 0 评论 -
abstract关键字
1、修饰抽象类:抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。抽象类可以包含抽象方法和非抽象方法。2、修饰抽象方法抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供,抽象方法的声明以分号结尾。抽象方法不能被声明成 fi...原创 2020-05-01 22:58:00 · 105 阅读 · 0 评论 -
java访问控制修饰符
条件:同一个工程下即同一个model,不同model需要引入model依赖1、default:(默认):在同一包内可见,不使用任何修饰符。2、private:在同一类内可见。注意⚠️ 不能️修饰外部类3、public:对所有类可见4、protected:对同一包内的类和所有子类可见。...原创 2020-05-01 22:53:31 · 118 阅读 · 0 评论 -
final关键字
1、修饰变量final 表示"最后的、最终的"含义,变量一旦赋值后,不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值。2、修饰方法 子类继承父类 方法可以继承但是不能重写 声明 final 方法的主要目的是防止该方法的内容被修改。3、修饰类 类不能被继承4例子: package com.zenlayer.javabasis.test; public cl...原创 2020-05-01 22:50:11 · 96 阅读 · 0 评论 -
JDK JRE JVM 的关系
1、JDK(Java Development Kit):java开发工具包。 JDK是整个java开发的核心,包含了JRE,java开发工具,java基础类库等。2、JRE(Java Runtime Environment):java运行环境。3、JVM(Java Virtual Machines):java虚拟机。它是实现java跨平台的核心部分。 JRE = JVM + Jav...原创 2020-05-01 22:44:35 · 111 阅读 · 0 评论 -
static 关键字
static 关键字详解一用法二例子一用法主要用法1: 用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享。2: 用来修饰成员方法,将其变为类方法,可以直接使用"类名.方法名" 通常用于编写工具类。3: 静态块用法, 将多个类成员放在一起初始化, => 理解对象初始化的过程。4: 静态导包用法, 将类的方法直接导入到当前类中, 从而直接使用"方法名"即可调用类方...原创 2020-05-01 22:43:27 · 107 阅读 · 1 评论 -
Java序列化提供两种方式
第一种是实现Serializable接口。第二种是实现Exteranlizable接口。需要重写writeExternal和readExternal方法,它的效率比Serializable高一些,并且可以决定哪些属性需要序列化(即使是transient修饰的), 但是对大量对象,或者重复对象,效率比较低。...原创 2020-05-01 22:35:58 · 259 阅读 · 0 评论 -
transient 关键字
transient 关键字详解一transient 作用二级目录三有关问题一transient 作用1、作用:将不需要序列化的属性 添加关键字 transient, 序列化对象的时候,这个属性就不会被序列化到指定目录中, 像银行卡、密码等等这些数据。2、 序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。该修饰符包含在定义变量的语句中,...原创 2020-05-01 22:28:16 · 211 阅读 · 0 评论