
Java基础知识
文章平均质量分 93
以java基础知识为主,复习学习
程序胖
这个作者很懒,什么都没留下…
展开
-
多线程学习(七)阻塞队列
目录阻塞队列应用场景模拟一个场景总结JUC中的阻塞队列ArrayBlockingQueue 原理分析原子操作阻塞队列基本概念:阻塞队列(BlockingQueue) 是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。应用场景模拟一个场景场景:当原创 2021-03-20 19:59:14 · 252 阅读 · 0 评论 -
多线程学习(六)ConcurrentHashMap
目录ConcurrentHashMap简介JDK1.7 与 JSDK1.8 的比较源码分析ConcurrentHashMap简介ConcurrentHashMap是J.U.C包中的提供高效和线程安全性高的 HashMap ,所以ConcurrentHashMap 在并发场景使用性高。ConcurrentHashMap是 Map 的派生类,所以 api 基本和 Hashmap 是类似,主要就是 put 、get 这些方法。JDK1.7 与 JSDK1.8 的比较JDK1.7 的 Concu原创 2021-03-15 15:47:04 · 570 阅读 · 2 评论 -
多线程学习(五)并发工具
目录Condition基本认识基本用法源码分析Condition基本认识Condition是在java1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、signal()这种方式实现线程间协作更加安全和高效。因此通常来说比较推荐使用Condition,阻塞队列实际上是使用了Condition来模拟线程间协作。基本用法ConditionAwaitpublic原创 2021-02-20 10:44:14 · 161 阅读 · 3 评论 -
多线程学习(三)Volatile
目录volatile简介从硬件层面上去了解可见性volatile简介举个例子:下面这段程序是没有加volatile关键字的 public static boolean stop = false; public static void main(String[] args) throws InterruptedException{ Thread t = new Thread(()-> { int i=0; while(!stop) { i++; } }原创 2021-01-15 11:11:01 · 141 阅读 · 0 评论 -
多线程学习(二)synchronized
目录线程安全性基本介绍如何解决线程安全性问题synchronized基本认识修饰实例方法修饰静态方法修饰同步代码块锁的升级线程安全性基本介绍线程的合理使用能够提升程序的处理性能,主要有两个方面,第一个是能够利用多核 cpu 以及超线程技术来实现线程的并行执行;第二个是线程的异步化执行相比于同步执行来说,异步执行能够很好的优化程序的处理性能提升并发吞吐量但是多线程并行的同时带来线程安全性的问题:如何保证共享资源的正确性举个例子:将下面代码运行,让1000个线程去访问并且将共享资源加1,正常情况原创 2021-01-11 16:38:03 · 124 阅读 · 0 评论 -
多线程学习(一)
目录并发的发展历史Java中线程的应用并发基础生命周期演示线程的生命周期线程的启动线程的终止并发的发展历史真空管和穿孔打卡作用:只是解决简单的数学问题运行方式:先把程序写到纸上,打孔穿成纸片,把卡片送到指定的输入室在输入室将程序输入到计算机上计算机运行当前的任务,将结果输出到打印机上缺点:只能运行一个程序,资源利用率低晶体管和批处理系统作用:解决了解决计算机的空闲问题运行方式:程序员把卡片拿到1401机(读取卡片的机器)1401机(读取卡片的机器)把批处理作业读到原创 2021-01-06 10:21:52 · 97 阅读 · 0 评论 -
Java简单基础的复习(十七)网络编程
目录网络编程概述软件结构通信协议协议分类网络协议TCP的通信程序概述网络编程概述软件结构C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。通信协议网络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式、传输速率、传输步骤等做了统原创 2020-06-07 21:26:24 · 475 阅读 · 0 评论 -
Java简单基础的复习(十七)反射
类的加载概述和加载时机类的加载概述当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。加载就是指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象。连接验证 是否有正确的内部结构,并和其他类协调一致准备 负责为类的静态成员分配内存,并设置默认初始化值解析 将类的二进制数据中的符号引用替换为直接引用初始化 就是我们以前讲过的初始化步骤加载时机创建类的实例访问原创 2020-06-03 16:26:11 · 173 阅读 · 0 评论 -
Java简单基础的复习(十六)线程
多线程的概述什么是线程线程是程序执行的一条路径, 一个进程中可以包含多条线程多线程并发执行可以提高程序的效率, 可以同时完成多项工作多线程并行和并发的区别并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU)并发是指两个任务都请求运行,而处理器只能按受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运行。Java程序运行原理和JVM的启动是多线程的吗Java命令会启动java虚拟机,启动JVM,等于启动了一个应用程序,也原创 2020-06-02 17:43:49 · 227 阅读 · 0 评论 -
Java简单基础的复习(十三)IO流(字节流)
IO流概述及其分类概念IO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用于操作流的类都在IO包中流按流向分为两种:输入流,输出流。流按操作类型分为两种:字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的字符流 : 字符流只能操作纯字符数据,比较方便。IO流常用父类字节流的抽象父类:InputStreamOutputStream字符流的抽象父类:ReaderWriterIO流的使用使用前原创 2020-06-01 09:52:11 · 126 阅读 · 0 评论 -
Java简单基础的复习(十二)File类
File类的概述File类的概述File更应该叫做一个路径文件路径或者文件夹路径路径分为绝对路径和相对路径绝对路径是一个固定的路径,从盘符开始相对路径相对于某个位置,在eclipse下是指当前项目下,在dos下查看API指的是当前路径文件和目录路径名的抽象表示形式构造方法File(String pathname):根据一个路径得到File对象File(String parent, String child):根据一个目录和一个子文件/目录得到File对象File(Fi原创 2020-05-24 10:13:26 · 140 阅读 · 0 评论 -
Java简单基础的复习(十一)异常
异常概述:就是JAVA程序运行中的错误分类:Throwable:是Java语言中所有错误和异常的Throwable类。Error :一个Error是的子类Throwable表示严重的问题,合理的应用程序不应该试图捕获。Exception:类异常及其子类是形式Throwable指示合理的应用程序想要捕获的条件。 Exception类和任何不是RuntimeException的子...原创 2020-04-17 21:21:08 · 94 阅读 · 0 评论 -
Java简单基础的复习(十)Map集合
Map集合简介:Map<K,V>双列集合,将键映射到值的对象。 map不能包含重复的键; 每个键可以映射到最多一个值。与Collection集合的不同:Map是双列的,Collection是单列的Map的键唯一,Collection的子体系Set是唯一的,HashSet的底层是map集合完成的。Map集合的数据结构值针对键有效,跟值无关;Collection集合的...原创 2020-04-16 21:21:33 · 253 阅读 · 0 评论 -
Java简单基础的复习(九)Collection集合 (二)
LinkedList简介:双链表实现了List和Deque接口。 实现所有可选列表操作,并允许所有元素(包括null )。所有的操作都能像双向列表一样预期。 索引到列表中的操作将从开始或结束遍历列表,以更接近指定的索引为准。方法:void addFirst(E e) :在该列表开头插入指定的元素。void addLast(E e) :将指定的元素追加到此列表的末尾。E ge...原创 2020-04-15 22:42:38 · 163 阅读 · 0 评论 -
Java简单基础的复习(八)Collection集合 (一)
Collection简介:由于数组长度是固定,当添加的元素超过了数组的长度时,则需要对数组重新定义,因为太麻烦,所以java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少 ,大大减少了工作量。数组和集合的区别区别1:数组既可以存储基本数据类型(存储的是值),又可以存储引用数据类型(存储的是引用数据的地址)集合只能存储引用数据类...原创 2020-04-14 21:18:53 · 225 阅读 · 0 评论 -
Java简单基础复习(七)正则表达式,Date
正则表达式正则表达式是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。正则表达式的表达类:字符类:[abc] a、b 或 c(简单类)[ ^abc ] 任何字符,除了 a、b 或 c(表否定)[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(表范围)[0-9] 0到9的字符都包括代码: Strin...原创 2020-04-01 21:06:31 · 243 阅读 · 0 评论 -
Java简单基础复习(六)StringBuffer,Arrays
StringBuffer线程安全的可变字符序列。一个类似于String的字符缓冲区,但不能修改。StringBuffer和String的区别String是一个不可变的字符序列StringBuffer是一个可变的字符序列StringBuffer类的构造方法public StringBuffer():无参构造方法public StringBuffer(int capacity)...原创 2020-03-20 22:14:53 · 214 阅读 · 0 评论 -
Java简单基础的复习(五)字符串String
Scanner一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器键盘录入:整数输入:Scanner sc = new Scanner(System.in); int n = sc.nextInt(); * 字符串输入:Scanner sc = new Scanner(System.in); String str = sc.nextLine(); 问...原创 2020-03-19 20:55:00 · 316 阅读 · 0 评论 -
Java简单基础的复习(四)Object的类
ObjectObject类概述类层次结构的根类所有类都直接或者间接的继承自该类系统会默认继承hashCode方法返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。看源码会发现是根据本地操作系统的方法来计算哈希码值。不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。getClass()方法pu...原创 2020-03-18 19:49:37 · 118 阅读 · 0 评论 -
Java简单基础的复习(三)
package关键字的概述及作用package包就是文件夹,作用是将字节码文件(.class)进行分类package的注意事项:2.1 package语句必须是程序的第一条可执行的代码2.2 package语句在一个java文件中只能有一个2.3 如果没有package,默认表示无包名import关键字作用是为了让有包的类对调用者可见,不用写全类名导包的格式:impor...原创 2020-03-12 21:30:14 · 149 阅读 · 0 评论 -
JAVA基础简单的复习(二)
2020年3月2日继承(接着昨天)N:继承的面试题看程序写结果1class Fu{ public int num = 10; public Fu(){ System.out.println("fu"); }}class Zi extends Fu{ public int num = 20; public Zi(){ System.out.println("zi")...原创 2020-03-02 20:33:12 · 302 阅读 · 1 评论 -
JAVA基础简单的复习(一)
面向对象1. 代码块叙述:在Java中,使用{}括起来的代码被称为代码块。(代码块中限制变量的声明周期)class Demo{ public static void main(String[] args){ { int x=10;//代码块中限制变量的声明周期 System.out.println(x); } }}根据其位置和声明的不同,可以分为局部代码块...原创 2020-03-01 21:14:32 · 188 阅读 · 0 评论