- 博客(24)
- 收藏
- 关注
原创 复习:多线程1.2
volatile关键字修饰变量应用场景:共享标志位,单例下双重锁校验特征1、保存了修饰数据的可见性2、能够禁止指令的重排序原因:volatile关键字修饰的变量在汇编层面在修饰的变量前添加lock前缀1、它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成;2、它会强制将对缓存的修改操作立即写入主存;3、如果是写操作,它会导致其他CPU中对应的缓存行无效。(缓存一致性协议)Synchronized
2021-08-24 15:22:54
117
原创 复习:多线程1.1
多线程介绍进程和线程的概念进程是计算机中正在进行的一个独立的应用程序,必须是进行性状态线程是组成进程的基本单位,可以完成特定的功能,一个进行有多个线程组成关系:进程具有独立的内存空间,每个进程是相互独立,互不影响,一个进程的崩溃不会影响其他的进程线程是具有共享的内存空间,一个线程的崩溃可能会影响其他的线程线程的创建方式1、继承Thread,重写run方法2、实现Runable接口,实现其中run方法3、实现Callable接口,实现其中的call方法线程状态Thread类中有State内部类
2021-08-24 15:14:59
127
原创 复习:IO
流概念流的本质是数据传输,是数据集合,具有方向性的数据传输作用:在数据源和程序之间建立的数据通道流的划分流方向:输入流,输出流流单位:字节流,字符流功能划分:节点流,过滤流流基类字符流(输入流:Reader输出流:Writer)字节流(输入流:InputStream输出流:OutputStream)字节流和字符流区别:字节流数据是以字节为数据单元,byte[]字符流数据是以字符为数据单元,char[]读方法:int read(),read(byte[] bytes),read(byte
2021-08-22 15:27:44
140
原创 复习:集合
1.集合概况接口:顶级接口:Collection和map接口,Collection接口存储的单个对象,map存储的是key-value键值对对象Collection顶级接口下的子接口:list接口(存储的数据是有序的且重复)、set接口(存储的数据是无序的且不能重复)、Queue(多使用优先级处理)list接口1.ArrayList:1.数据插入有序2.数据是可以重复的3.存储的数据可以为null4.数据结构为数组5.集合可以自动扩大应用场景:(数据是有序/数据可以重复/数据是可以存储null)在
2021-08-20 17:28:29
149
原创 复习3.1
ArrayList 和 LinkedList区别ArrayList 是数组,要判满扩容是1.5倍扩容LinkedList是双向链表时间复杂度:头部增加:ArrayList O(n) LinkedList O(1)尾部增加:ArrayList O(1) LinkedList O(1)头删:ArrayList O(n) LinkedList O(1)尾删:ArrayList O(1) LinkedList O(1)...
2021-07-31 17:51:57
101
原创 复习2.4
String类1.成员:char[]2.字符串比较 equals()是否相等比大小:class String implements Comparable{}3.字符串拼接3.1字符串常量+字符串常量 》编译期优化"hello"+“world” >“helloworld”3.2变量+常量 String str=“hello” ;str=str+“world”;解析:StringBuilder s =new StringBuilder();s.append(str);s.append(“wo
2021-07-31 17:42:13
117
原创 复习2.3
类的初始化顺序:先初始化父类,再初始化子类父类 静态变量,父类静态块子类 静态变量,子类静态块父类的实例变量,实例块,构造子类的实例变量,实例块,构造
2021-07-28 23:36:05
93
原创 复习2.2
异常有数组,空指针,反射,MySQL,多线程网络异常继承结构:Object >Throwable > Exception Error 分为运行期异常和编译期异常异常处理:try catch finallytry{ 可能发生的异常代码}catch(关心异常具体类,不关心基类处理){}finally{无论代码是否会异常都会执行如果前面用System.exit(1);关掉进程就不会执行。}throwint peek(){ if(size ==0){ t
2021-07-28 20:31:30
107
原创 复习2.1
抽象类和接口的区别抽象类:abstract 修饰类 方法不能实例化对象实例类 extends 抽象类{}抽象类可以包含抽象方法,有抽象方法一定是抽象类,抽象类不一定有抽象方法。接口:1.interface修饰2.接口不能实例化对象3.接口:抽象方法 public abstract 常量 public static final4.使用: class Test implenments 接口1,接口2,接口3class MyArrayList exends 类 implenments 接口1,接
2021-07-28 18:08:33
119
原创 复习1.1
面向对象的三大特征1.封装2.继承3.多态(加上抽象就是4大特征封装:访问限定符继承:代码的复用多态:实现条件1.继承关系2.方法重写3.向上造型 重写方法调用。重载:相同作用域,方法名相同,参数列表不同。重写:在父子类中,子类重写父类的方法(方法名相同,参数列表相同,修饰符:子类权限>=父类权限)new一个对象是在类加载的时候类加载3大阶段装载阶段:生成当前类的class对象(保存当前类的类信息)是访问方法区的入口**final:**不能被修改(常量,重写(方法,继承(类。st
2021-07-24 18:19:25
125
原创 TCP/UDP的区别
TCPTCP协议全称传输控制协议,TCP提供面向连接的服务,在传输数据之前必须要建立建立,数据传输之后还需要释放连接,TCP产生的额外开销会比较大,如:确认机制、流量控制、拥塞控制机制需要占用处理器资源3次握手和四次挥手TCP建立连接的过程第一次握手client发送连接请求数据报文到server端 SYN_SENT状态第二次握手server收到连接请求数据报文,如果同意建立连接,向client回应确认报文端(为TCP连接分配TCP缓存和变量)第三次握手client收到server收到
2021-06-01 16:06:57
194
2
原创 ArrayList和LinkedList区别及使用场景
ArrayList和LinkedList区别及使用场景LinkedList和ArrayList的差别主要来自于Array和LinkedList数据结构的不同。ArrayList是基于数组实现的,LinkedList是基于双链表实现的。另外ArrayList类不仅是List接口的实现类,可以根据索引来随机访问集合中的元素,除此之外,LinkedList还实现了Deque接口,Deque接口是Queue接口的子接口,它代表一个双向队列,因此LinkedList可以作为双向队列 ,栈(可以参见Deque提供的
2021-05-16 20:27:52
2540
原创 HashMap
哈希表哈希表又被称为散列表,是根据关键码key直接访问内存存储位置的数据结构,即通过关于key的函数,映射到一个地址来访问数据,这样加快查找速度数组 查找容易,删除和插入不易链表 查找不易,删除和插入容易哈希表则是对二者的综合,使得作为一个查找容易、插入和删除也容易的数据结构HashMap源码分析1)类的继承关系public class HashMap<K,V> extends AbstractMap<K,V>implements Map&
2021-02-22 22:56:04
155
原创 线程基础
1、进程和线程的认识1)进程指的一段正在运行的程序一个程序运行中可以执行过个任务,任务称之为线程2)进程是程序执行过程中资源分配和管理的基本单位线程是cpu执行的额最小单位进程拥有自己的独立的地址空间,每启动一个进程,系统就会分配地址空间进程可以拥有多个线程,各个线程之间共享程序的内存空间为什么出现线程?每个进程有自己独立的地址空间,多并发请求,为每一个请求创建一个进程导致系统开销、用户请求效率低多线程和多进程有哪些区别?1)每个进程拥有自己独有的数据,线程共享数据线程之间的通信相比
2021-02-22 18:24:43
113
原创 synchronized关键字
synchronized1)作为方法使用注意:调用不同的对象的同步方法,非线程安全的2)作为代码块使用synchronized(){}底层原理1)同步方法常量池中多了ACC_SYNCHRONIZED标识符,标识当前的方法是一个同步方法,当方法被调用,调用指令会检查方法ACC_SYNCHRONIZED标识符是否被设置,如果设置,执行线程会先去获取monitor,获取成功之后才会去执行方法题,方法体执行完成之后或释放 monitor。2)同步代码块monitorenter每一个对象都与一
2021-02-22 03:04:26
107
原创 volatile关键字
volatilez1.作用:保证可见性、有序性2.使用:volatile修饰变量3.特征:1)保存内存可见性volatile修饰的变量不会缓存到工作内存中,每一次读取获取最新volatile变量2)禁止指令重排序Java内存不会对volatile指令进行重排序,从而保证对volatile的执行顺序永远 是按照书写顺序执行的happens-before规则:volatile字段的写入操作happen before后续同一个字段 的读操作实现原理:volatile修饰的变量产生的汇编代
2021-02-22 02:58:21
105
原创 Linux基础
1.认识LinuxLinux 就是一组软件,而软件分为操作系统软件和应用软件, Linux 属于操作系统软件。操作系统软件就是具有以下功能的软件:windows mac Linux(1)控制硬件资源(2)提供计算机运作所需要的功能(3)提供给程序员系统调用的接口,提供了更容易的开发环境。Linux 和 Windows 的区别1、Linux 主要使用命令行操作系统,Windows 图形化界面2、Linux 主要应用于服务器,Windows 是个人操作系统3、Linux 属于开源
2021-02-21 21:48:20
116
原创 单链表
单链表链表和数组一样都是用来存储数据的但是也有很多的不同,本博客讲一下链表中的单链表单链表链表中每一个元素都是一个节点类型 Node = data+next节点node与节点之间通过next域相连非连续的地址空间 next域把非连续空间的节点链起来变为一个链表首先实现一个单链表实现增删改查等功能class MySingleList {private Node head; //永远指向链表当中的第一个节点class Node<T> { private T data; //
2020-12-10 18:59:56
142
原创 类加载
类加载类加载Class文件是一个以8位字节为单位的二进制流区分一个文件的类型并不是靠扩展名去进行区分,靠魔数来区分当前的文件是否是.class,头4个字节称之为魔数 OxCAFEBABYJVM把描述类的数据从class文件中加载内存中的过程(类中的数据校验,解析,*初始化),最终被转为一个被JVM所直接使用的Java,这就是类的加载机制*加载 -> 校验-> 准备 -> 解析 -> 初始化1)加载什么情况下会开始类加载过程的第一个阶段?主动引用a.遇到new/g
2020-11-20 01:07:05
135
1
原创 抽象类和接口
抽象类和接口抽象类关键字abstract修饰的类称为抽象类,抽象类是一种没有完全实现的类,不能用它去实例化对象,它的主要用途是用来描述一些概念性的内容,然后在子类中具体去实现这些概念。比如求面积和周长,而不一样的图形它面积和周长的求法是不一样的所有就要用抽象类去定义面积和州长,具体哪种图形就交给子类去实现。一个抽象类可以定义普通方法,但是含有普通方法+抽象方法的类必须定义为抽象类接口接口是抽象类的一种变体,但它与抽象类又有一些差异。首先,接口使用关键字interface来定义的,形式为:【修饰符
2020-11-16 01:01:07
132
原创 *类和对象(封装、继承、多态)
类和对象(封装、继承、多态)类类时Java中最重要的复合数据类型,是组成Java程序的基本元素,它封装了一类对象的属性和改变这些属性的方法,试着一类对象的原型。与简单数据类型的使用不同,用户必须先定义类,并生成该类的实例,然后才能通过该实例访问其成员变量和方法。例如圆可以有很多种,但所有的圆都是由圆心位置和半径决定,其基本行为至少包括计算面积和周长等,通过抽象可以定义Circle。1类通过关键字class进行标识基本形式如下:【类修饰符】 class 类名【extends 父类名】【impleme
2020-11-07 01:53:49
309
原创 数据库基础
1)什么是数据库 数据库的作用 数据库的使用场景什么是数据库 : 存储数据的仓库。数据:数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。在计算机系统中,数据以二进制信息单元0,1的形式表示。数据库的作用:方便数据的存储和管理。数据库的使...
2020-03-03 17:31:35
281
原创 java 关于String
面试:1.谈谈你对String类的理解 String类:->字符串常量池(>= JDK1.7) 1. String类 底层数据结构:<= JDK1.8 char[] 2. 字符串比较方法:equals比较 == 比较字符串常量取值的地址 equals-> 字符串(char[]) 3. 字符串拼接方式: 1) 常量+常量...
2019-12-01 00:30:42
142
原创 Java处理异常
Java处理异常异常:异常处理(一般只针对编译期异常)-> 五个关键字一个try块对应一个或者多个catch块try:注意:1 ) 如果当前try块中存在多条可能会发生异常的代码A,B C 三条语句如果A发生异常,此时B,C语句不会被执行到。2)try块尽量避免嵌套catch -> 尽量避免过细划分异常注意:1)catch(NullPointerExcep...
2019-12-01 00:26:22
204
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅