
Java基础学习
文章平均质量分 81
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
阿龙先生啊
懂点大数据运维, 会写两三行代码,自学了一些 docker, kubernetes。博客主要分享大数据、Linux、云原生相关知识。 目前职位大数据工程师,长远打算做个会敲代码的厨子。
展开
-
Java多线程基础(一)---深入理解Thread构造函数(Thread,ThreadGroup,JVM内存,守护线程场景)
2.1 Thread构造函数线程命名模拟银行业务办理,受理最大业务数为100个。测试类运行结果2.2 Thread和ThreadGroup在Thead的构造函数中,可以显式的指定线程的Group,也就是ThreadGroup, Thread init方法的源码: 一个线程的创建是由另外一个线程完成的 一个线程的父线程完成了该线程的创建示例验证输出的结果为:通过Thread源码和示例测试我们得出了如下结论:2.3Thread与虚拟机栈先简单介绍一个JVM内存。JVM在执行J原创 2019-05-31 21:18:56 · 915 阅读 · 1 评论 -
Java多线程基础(一)---Thread API(join深度详解、源码分析和案例分析之代码实现,优雅关闭线程三种方式)
1 学习内容线程join优雅关闭线程2 具体内容2.1 线程joinThread API提供的三个不同的join方法方法描述public final void join() throws InterruptedException等待这个线程死亡。public final void join(long millis)throws InterruptedEx...原创 2019-08-20 22:42:14 · 825 阅读 · 0 评论 -
Java多线程基础(一)---线程通信(wait,notifyAll,生产者消费者经典范式,wait set,自定义显式锁BooleanLock)
1 学习内容同步阻塞与异步非阻塞实例分析wait和notify关键字wait和sleep区别wait和notify图解分析总结2 具体内容2.1 多线程通信2.1.1 同步阻塞消息处理2.2线程休息室wait set在虚拟机规范中存在一个wait set的概念,线程调用了对象的wait方法之后线程会被加入与该对象monitor关联的wait set中,并且释放monitor的...原创 2019-06-08 17:03:13 · 551 阅读 · 0 评论 -
Java多线程基础(一)---线程的创建和生命周期
1.学习内容1、同步与异步和并发与并行概念2、程序、进程和线程的区别3、多线程的创建方式4、start源码分析5、线程的生命周期2.具体内容2.1 同步与异步同步思想:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉)。这种情况下,用户不能关闭界面,如果关闭了,即迁移程序就...原创 2019-05-30 15:59:45 · 645 阅读 · 0 评论 -
Java多线程基础(一)---Thread API(sleep,yield,优先级,线程类加载器,interrupt)
1 学习内容介绍Monitor锁线程sleep线程yield线程优先级线程上下文加载器interrupt总结2 具体内容2.1 Monitor简单介绍什么是Monitor?Monitor其实是一种同步工具,也可以说是一种同步机制,它通常被描述为一个对象,主要特点是:对象的所有方法都被“互斥”的执行。好比一个Monitor只有一个运行“许可”,任一个线程进入任何一个方法...原创 2019-06-02 20:31:20 · 275 阅读 · 0 评论 -
Java多线程基础(一)---线程安全(synchronized关键字this锁和class锁分析)
一、概念synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的。锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。 可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁...原创 2019-08-23 00:31:49 · 1443 阅读 · 0 评论 -
Java多线程基础(一)---线程安全(synchronized 反编译深入分析,JConsole监控进程运行,程序死锁信息打印)
1 学习内容synchronized关键字介绍synchronized和Intrinsic Locks 关系synchronized用法和注意的问题程序死锁总结2 具体内容在串行化的任务执行中,由于不存在资源的共享,线程安全问题当然不用考虑,但是串行化的任务执行效率低下,让人忍无可忍。多线程的执行任务应用而生,同时多线程的引入也带来了共享资源的安全问题。 什么是共享资源?...原创 2019-06-06 20:51:35 · 525 阅读 · 0 评论 -
Java多线程基础(一)---线程通信(wait、notify和notifyAll、单线程通信生产者消费者)
1 学习内容同步阻塞与异步非阻塞实例分析wait和notify关键字wait和sleep区别wait和notify图解分析总结2 具体内容2.1 同步阻塞与异步非阻塞2.1.1 同步阻塞消息处理有这样一个系统,客户端提交Event至服务器,服务器接收到客户请求之后创建线程处理客户请求,经过复杂的业务计算后将结果返回给客户端。缺陷: 同步Event提交,客户端等待时间...原创 2019-06-06 19:29:41 · 595 阅读 · 0 评论 -
Java多线程基础(一)---volatile关键字介绍
1 学习内容初识volatile关键字机器硬件CPUJava内存模型CPU缓存一致性问题原创 2019-06-23 21:20:16 · 351 阅读 · 0 评论 -
Java多线程基础(一)---volatile关键字详解(并发编程特征、volatile关键字详解、volatile和synchronized区别)
1 学习内容并发编程的三个重要特性JMM如何保证三大特性2 具体内容2.1 并发编程的三个重要特性并发编程的三个重要特性,分别是原子性、有序性和可见性。原创 2019-07-08 17:06:46 · 550 阅读 · 0 评论 -
if...else优化之策略模式学习
1 学习内容策略模式概念解析策略模式使用场景支付方式之策略实现总结2 具体内容前言引入策略模式是oop中最著名的设计模式之一,是对方法行为的抽象,可以归类为行为设计模式,也是oop中interface经典的应用。策略模式定义了一个拥有共同行为的算法族,每个算法都被封装起来,可以互相替换,独立于客户端而变化。策略模式本身的实现比较简单,但是结合单例模式+简单工厂模式+注解+反射,...原创 2019-07-17 20:15:54 · 322 阅读 · 0 评论 -
【Java】正则表达式 Pattern 类的用法
正则表达式的编译表示。必须首先将正则表达式(指定为字符串)编译为此类的实例。然后将所得的图案可以被用来创建一个Matcher对象可以匹配任意针对正则表达式。执行匹配的所有状态都驻留在匹配器中,所以许多匹配者可以共享相同的模式(API摘录)。原创 2021-06-27 20:57:01 · 10985 阅读 · 4 评论 -
【Java】LocalDateTime日期类
Java8之前,时间都是使用Date类,但Date类缺点太多,使用起来很麻烦,Java8的LocalDateTime很好的解决了这个问题LocalDateTime获取当前时刻非常直观public class Test { public static void main(String[] args) { final LocalDateTime localDateTime = LocalDateTime.now(); System.out.println("当原创 2021-05-09 17:27:55 · 521 阅读 · 2 评论 -
【Java】HashMap实现原理分析(源码分析,ReHash,扩容机制)
目录一、HashMap的数据结构解决hash冲突的办法二、源码分析1.位桶数组2.数组元素Node实现了Entry接口,v>3.HashMap如何put(key,value)4.HashMap如何getValue值5.HasMap的扩容机制resize();6. JDK1.8使用红黑树的改进三、再谈ReHash单线程下的ReHash...原创 2019-12-20 19:03:01 · 4191 阅读 · 1 评论 -
【Java】集合框架学习(ArrayList、Set、Collection、Vector、Enumeration、Map、Iterator)
集合框架就是java是实现的数据结构,或者简单点说,所谓的类集指的是对象数组的引用。之前保存多个对象,使用的是数组,但数组的长度是固定的。后来使用了链表实现了一个动态的对象数组。随后在JDk1.8之后,又针对类集的大数据操作环境下推出了数据流的分析操作功能。在整个类集之中有以下几个核心接口:Collection、List、Set;Map;Iterator、Enumeration。接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map等。之所以定义多个接口,是为了以不同的方原创 2019-08-12 21:20:26 · 560 阅读 · 1 评论 -
【Java】IO 体系及常用类
根据文件操作类的学习我们认识到,File可以操作文件,但是不能操作文件的内容,如果要操作文件的内容,可以通过字节流或者字符流。一、前言引入二、IO概念和概述讲解Java IO体系(部分)三、具体内容讲解,文件操作应用小案例四、总结2.1 基本概念阐述流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类。原创 2019-08-04 15:05:17 · 519 阅读 · 1 评论 -
【Java】文件操作 File 类(创建文件、删除、创建目录,查询文件信息)
File类本身只是操作文件的,不涉及到内容;File中的重要方法:*设置完整路径:public File(String pathname);*删除文件:public boolean delete();*判断文件是否存在:public boolean exists()*找到父路径:public File getParentFile();*创建目录:public boolean mkdir();在使用File类操作的时候路径的分隔符使用:File.separator;原创 2019-08-04 10:41:55 · 10041 阅读 · 0 评论 -
【Java】接口学习(接口的使用、简单工厂、代理模式、接口和抽象类的区别)
官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。我的理解:接口可以理解为一种特殊的抽象类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,可以实现多个接口的实现,但是接口在实际中更多的作用是制定标准的。或者我们可以直接把接口理解为100%的抽象类,接口中的方法必须全部是抽象方法。一、接口的基本概念与主要特点;二、接口的使用;原创 2019-08-04 09:53:13 · 563 阅读 · 1 评论 -
【Java】抽象类
普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。2.1 抽象类的使用。原创 2019-07-27 20:27:48 · 425 阅读 · 1 评论 -
【Java】动态绑定和静态绑定(多态)
绑定把一个方法与其所在的类/对象 关联起来叫做方法的绑定。绑定分为静态绑定(前期绑定)和动态绑定(后期绑定)。静态绑定静态绑定(前期绑定)是指:在程序运行前就已经知道方法是属于那个类的,在编译的时候就可以连接到类的中,定位到这个方法。在Java中,final、private、static修饰的方法以及构造函数都是静态绑定的,不需程序运行,不需具体的实例对象就可以知道这个方法的具体内容。动态绑定动态绑定(后期绑定)是指:在程序运行过程中,根据具体的实例对象才能具体确定是哪个方法。原创 2019-07-26 21:35:07 · 2537 阅读 · 1 评论 -
【Java】关键字static学习
static关键字主要有两种作用:第一,为特定数据类型或对象分配单一的存储空间,而与创建对象个数无关。第二,实现某个方法或属性与类而不是对象关联在一起,也就是,在不创建对象的情况下就可以通过类来直接调用方法或使用类的属性。具体而言,static主要有四种使用情况:成员变量、成员方法、代码块和内部类。static成员变量static成员方法static代码块static内部类。原创 2019-07-26 21:04:26 · 338 阅读 · 1 评论 -
【Java】关键字final学习(变量、方法、类,final域重排序语义介绍)
final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖和类不可被继承一、final关键字的基本用法二、深入理解final关键字三、final 域的内存语义(线程中)扩展。原创 2019-07-26 19:24:29 · 959 阅读 · 1 评论 -
【Java】内部类(Java源码中 内部类的分析使用)
内部类可以与外部类之间方便的进行私有属性的访问;内部类可以使用private声明,声明之后无法在外部实例化内部类对象;语法:外部类.内部类 内部类对象=new 外部类().new 内部类();使用static定义的内部类就相当于是一个外部类;实例化语法:外部类.内部类 内部类对象=new 外部类.内部类();内部类可以在方法中定义。原创 2019-06-02 12:34:00 · 606 阅读 · 1 评论 -
【java】反射机制深入学习(反射 实现配置文件 到自定义注解转换 案例实现)
Java 反射是可以让我们在运行时获取类的函数、属性、父类、接口等 Class内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set方法获取变量的值,即使方法或属性是私有的的也可以通过反射的形式调用,这种“看透 class”的能力被称为内省,这种能力在框架开发中尤为重要。有些情况下,我们要使用的类在运行时才会确定,这个时候我们不能在编译期就使用它,因此只...原创 2018-11-27 20:03:48 · 551 阅读 · 1 评论 -
java+内存分配及变量存储位置的区别
java+内存分配及变量存储位置的区别[转]原文来自:http://blog.youkuaiyun.com/rj042/article/details/6871030#commentsJava内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知转载 2017-03-26 00:14:30 · 326 阅读 · 0 评论 -
【Java】引用传递的实例分析
1.String类不可改变;2.同一块堆内存可以被不同的栈内存所指向,不同栈内存可以对同一堆内存进行内容修改;原创 2019-05-26 19:34:41 · 519 阅读 · 1 评论 -
【Java】递归操作(用十进制转二进制作为例子)
java的递归操作(用十进制转二进制作为例子) 算法4中看到了十进制转二进制的代码,感觉特别简洁,就实现了一下java 有内置的方法Integer.toBinaryString(N)专门来完成这个任务。 递归调用就是在当前的函数中调用当前的函数并传给相应的参数,这是一个动作,这一动作是层层进行的,直到满足一般情况的的时候,才停止递归调用,开始从最后一个递归调用返回。(360百科)原创 2017-06-04 02:01:36 · 6144 阅读 · 6 评论 -
【Java】String字符串及常用方法
从概念上讲,java字符串就是Unicode字符序列,java没有内置的字符串类型,而是在标准java类库中提供了一个预定义类,人们自然将它叫做String,用双引号括起来的字符串就是String的一个实例。1、String的两种实例化方式(1)String 变量=“字符”; String的直接赋值eg: String str=“我的未来不是梦”;//直接赋值System.out.p...原创 2018-10-31 15:07:59 · 588 阅读 · 0 评论 -
【Java】类与对象分析
封装性就是保证内部的定义被外部不可见;所有属性都必须使用private封装,封装后的属性如果要被外部所访问,要定义setter,getter方法;构造方法的定义要求:方法名称与类名称相同,无返回值声明;构造方法是在类对象使用关键字new实例化对象的时候被默认调用的,一个类中至少保留一个构造方法,无自己定义的构造方法,则程序会有默认的构造方法;构造方法重载时,考虑参数的个数和类型即可,且构造方法只使用一次;对象信息保存在堆内存之中,那么没有栈指向的对象就称为匿名对象。原创 2018-10-27 13:08:55 · 248 阅读 · 0 评论 -
【Java】this关键字的使用
1、类中的属性以后调用建议加上this;2、类中的构造方法间的互相调用,一定要保留出口;4、this调用构造方法的时候,要放在首行;5、this表示当前对象,指的是当前正在调用的类中方法的对象;,this.属性,当前对象的属性,堆内存保存的内容。原创 2019-05-25 21:21:25 · 1772 阅读 · 0 评论 -
【Java】类与对象简介
1、类描述的是公共特征,类必须通过对象才可以使用;2、声明对象指的是未开辟堆内存的对象,如果直接使用此对象会出现“NullPointException”空指向异常,有了堆内存引用的对象才称为实例化对象;3、堆内存保存的是对象中所有属性的内容,而栈内存保存的是堆内存地址数值(为了简单说明才称为栈保存的是对象名称);4、垃圾空间指的是没有任何栈指向的堆内存空间,会被垃圾回收器收集。原创 2018-10-26 11:17:02 · 226 阅读 · 0 评论