- 博客(54)
- 资源 (3)
- 收藏
- 关注
原创 Java并发深度总结:目录
Java并发 |----进程与线程 |----进程 |----单进程与多进程 |----线程 |----单线程与多线程
2020-09-23 15:33:53 274
原创 Java基础深度总结:目录
Java语言概述|----Java语言特性|---- JDK、JRE与JVMJava语言基础|----数据类型|----String|----关键字
2020-07-20 09:33:21 330
原创 Java并发深度总结:乐观锁CAS
执着于理想,纯粹于当下。内容1.悲观锁与乐观锁2.CAS的实现1.悲观锁与乐观锁悲观锁:悲观锁认为被它保护的数据是极其不安全的,每时每刻都有可能变动。获取共享资源的线程对共享资源加锁,其它线程被阻塞,其他只能等待锁被释放才可以执行。 Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。乐观锁:乐观锁和悲观锁对应,它认为数据的变动不会太频繁。因此,所以不会对共享资源上锁。线程在更新共享资源时,会去校验在此期间有没有其他线程去更新这个数据。 Java.
2020-12-01 22:19:13 562 2
原创 Java并发深度总结:synchronized 关键字
志之所趋,无远勿届,穷山距海,不能限也。内容1. 线程安全2. 互斥同步3. synchronized 特性3. synchronized 基础3.1 synchronized 代码块3.2 synchronized 方法3.3 同步代码块与同步方法的使用注意事项4. synchronized 原理 (重量级锁)4.1 对象头4.2 Mark Word4.3 重量级锁的实现原理:monitor4.3.1 monitor 结构4.3.2 monitor的获取和释放(重量级锁的获取和释放)4.4 同步方法.
2020-11-28 16:33:11 5783 3
原创 ACAT 2020届纳新流程
ACAT 报名流程1.访问ACAT官网浏览器内 输入网址:acat.xupt.edu.cn 或 直接扫描二维码:2. 进入报名系统点击加入我们,进入报名系统。3.注册账号点击新用户注册,填写自己详细信息完成注册。填写完信息,点击发送邮箱验证码,开始邮箱验证。登入邮箱,查看邮件。收件箱中没有,请在垃圾邮箱中查看。输入验证码,点击注册。4. 登录报名系统返回报名首页,用刚才注册的账号登录。5.选择组别登录后选择组别。6.填写信息,完成报名填写信息,完成报名。最后
2020-11-16 22:23:48 681 2
原创 Java并发深度总结:JMM(Java内存模型)概述
怕什么真理无穷,进一寸有进一寸的欢喜。内容1. 并发编程的两个问题2. Java内存模型的抽象2.1 线程安全的三要素2.2 计算机内存模型2.2.1 缓存一致性(可见性)2.2.2 处理器优化和指令重排(原子性和有序性)2.2.3 缓存一致性和指令重排的解决方案2.3 Java内存模型与计算机内存模型的关系3. Java内存模型3.1 工作内存和主内存3.1.1 工作内存和主内存的交互3.1.2 工作内存和主内存交互的规则3.2 Java内存模型的实现3.2.1 可见性3.2.2 原子性3.2..
2020-10-18 16:11:08 310
原创 Java并发深度总结:基础线程机制
时间很贪婪——有时候,它会独自吞噬所有的细节。——《追风筝的人》内容1.线程状态2.线程状态转化2.1 NEW ---- > RUNNABLE2.2 RUNNABLE <----> WAITING1.线程状态一个线程在某一时刻只能处于一种状态,这里讨论的线程状态特指Java虚拟机的线程状态,并不反映线程在特定操作系统下的状态,也就是说Java虚拟机的线程状态和操作系统的状态并不是一一对应的。Java在Thread类中定义了State枚举类,列举了6种线程状态: public .
2020-09-28 22:14:35 651
原创 Java并发深度总结:创建线程
生命里面很多事情,沉重婉转至不可说。内容1.概述2.创建&启动线程2.1 实现Runnable接口2.2 继承Thread类2.3 实现Callable接口2.4 使用Executors(线程池工具)3.start()与run()1.概述创建线程最常用的方式有以下四种:继承Thread类实现Runnable接口实现Callable接口使用线程池想要创建并启动一个线程,需要先定义任务,然后将一个任务附着到线程上,最后再启动这个线程。2.创建&启动线程2.1 实现Ru.
2020-09-24 19:55:45 403
原创 Java并发深度总结:进程与线程
鲜衣怒马少年时,且歌且行且从容。内容1.进程2.单进程和多进程3.线程4.进程与线程的关系5.单线程与多线程6.并发7.并行1.进程进程就是正在运行的程序,他是系统资源调度的独立单位,各个进程间不会相互影响,因为为一个进程都会有操作系统给它分配自己的内存空间和系统资源。进程创建慢,上下文切换开销大。2.单进程和多进程单进程计算机只能做一件事情,而多进程计算机可以同时做很多间事情,例如:在写代码时听音乐。因此多进程的提高了CPU的利用率,减少了CPU的空闲时间。3.线程线程是轻量级的进程,.
2020-09-23 15:28:39 432
原创 Java容器深度总结:LinkedHashMap
旧游无处不堪寻。无寻处,惟有少年心。内容1.LinkedHashMap概述2.LinkedHashMap的定义1.LinkedHashMap概述LinkedHashMap来自于JDK1.4,直接继承自 HashMap,并且在 HashMap 基础上,通过维护由所有Entry节点构成的双向链表,来保证元素有序。LinkedHashMap 继承了 HashMap,因此具有和 HashMap一样的快速查找特性,LinkedHashMap 对 HashMap高度复用,因此建议先学习HashMap的相关知.
2020-09-14 16:19:26 711
原创 Java容器深度总结:Hashtable
面朝大海,心向阳光。内容1.Hashtable概述2.Hashtable定义3.主要类属性3.1 private transient Entry<?,?>[] table3.2 private transient int count3.3 private float loadFactor3.3 private int threshold4.Entry节点5.构造函数与初始容量5.1 Hashtable(int initialCapacity, float loadFactor)5.2 Ha.
2020-09-12 21:29:05 283
原创 Java容器深度总结:HashMap
向外探寻,向内思考, 向下扎根,向阳生长。内容1.HashMap概述2.HashMap基础3.HashMap的定义4.主要类属性4.1 transient Node1.HashMap概述HashMap是根据关键码值(Key-Value)而直接进行访问的数据结构。并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap线程不安全。HashMap是JDK1.2时哈希表的实现,JDK1.8底层是使用数组+链表+红黑树实现,JDK1.7使用数组+链表实现,Has.
2020-09-11 21:11:40 1174
原创 Java容器深度总结:List总结
失去一日甚易,欲得回已无途。内容1.List概述1.List概述List以线性方式存储元素,集合中可以存放重复对象,元素有序。常用实现类:ArrayList:基于动态数组实现,支持随机访问,随机访问元素快,增删元素慢。Vector:Vector与ArrayList相似。但Vector的方法是线程安全的,而ArrayList的方法不是,由于线程的同步必然要影响性能,因此ArrayList的性能比Vector好。LinkedList:基于双向链表实现,只能顺序访问,插入、删除元素快。详细内.
2020-08-27 21:49:22 443
原创 Java容器深度总结:LinkedList
唯有心静,身外的繁华才不至于扭曲和浮躁,才能倾听到内心真实的声音。内容1.LinkedList概述2.LinkedList数据结构3.Node结点4.成员变量和构造函数5.操作链表的底层方法5.1 linkFirst(E e)5.2 linkLast(E e)5.3 linkBefore(E e, Node< E > succ)5.4 unlinkFirst( Node< E > f)5.5 unlinkLast(Node< E > l)5.6 unlink(Nod.
2020-08-25 22:17:23 644
原创 Java容器深度总结:Vector
原地徘徊一千步,也抵不上迈出一步。心中想无数次,也不如真正行动一次。内容1.Vector概述2.Vector主要成员变量3.构造函数和初始容量3.1 Vector()3.2 Vector(int initialCapacity)3.3 Vector(int initialCapacity, int capacityIncrement)3.4 Vector(Collection<? extends E> c)4.Vector扩容机制4.1 判断是否需要扩容4.2 计算新容量4.3 考虑数组长.
2020-08-22 19:52:47 484
原创 Java容器深度总结:ArrayList
没有一个冬天不可逾越,没有一个春天不会来临。内容1.ArrayList概述2.ArrayList成员变量3.ArrayList构造方法和初始容量3.1 ArrayList()3.2 ArrayList(int initialCapacity)3.3 ArrayList( Collection<? extends E> c)4.ArrayList扩容机制(重点)4.1 计算最小容量4.2 判断是否需要扩容4.3 计算新的容量4.4 考虑数组长度溢出4.5 扩容4.6 扩容机制总结5. 常用方.
2020-08-20 22:22:29 483
原创 Java容器深度总结:数组
星光不问赶路人,时光不负有心人。内容1.数组概念2.数组初始化3.数组的特点3.1 数组本身也是引用数据类型3.2 数组是协变的3.3 数组与泛型3.4 多维数组4.数组与容器类区别5.列表(List)优于数组1.数组概念Java的数组和容器类都是持有对象的方式,数组也是一种容器,相比于其他种类的容器有较大差异。数组就是空间连续的、长度固定的、保存相同数据类型的容器。2.数组初始化数组的初始化按方式可分为动态初始化和静态初始化。动态初始化(指定数组长度)int[] arr = new.
2020-08-14 21:18:44 648
原创 Java容器深度总结:Java容器整体结构
趁阳光正好,趁微风不燥,趁现在的双手还能拥抱彼此,趁我们还能呼吸,去见你想见的人,做你想做的事。内容1.继承关系2.Collection2.1 List2.2 Set2.3 Queue3.Map4.迭代器5.工具类1.继承关系容器主要包含Collection和Map两种类型,Collection存储着对象的集合,而Map存储着键值对(两个对象)的映射关系。容器类框架图:虚线方框为接口,实线方框为类。虚线箭头为实现,实线箭头为继承。Tip:依赖关系:是一种使用关系,它是对象之间耦合度.
2020-08-14 15:47:51 453
原创 Java基础深度总结:泛型
不怕路长,只怕志短。内容1.泛型概述2.泛型类型命名规范3.泛型的定义和使用3.1 泛型类3.2 泛型接口3.3 泛型方法4.有界泛型类型5.泛型实现原理:类型擦除(重点)6.类型擦除的问题7.通配符7.1 上边界通配符:< ? extends T >7.2 无边界通配符:< ? >7.3 下边界通配符:< ? super T >7.4 上下边界通配符的副作用1.泛型概述泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定.
2020-08-10 02:41:27 492
原创 Java基础深度总结:反射
我自是年少,韶华倾负。内容1.Java反射机制2.Class对象1.Java反射机制动态语言:是在程序运行时可以改变其结构的语言。例如:C#,JavaScript,Python等。静态语言:是在运行时结构不可变的语言。例如:Java,C,C++。Java是静态语言,但是因为有了反射机制的存在,使得Java有了类似动态语言的特性。反射指应用程序访问、检测、修改自身状态与行为的能力。Java的反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,.
2020-08-06 21:31:31 459
原创 Java基础深度总结:异常
君志所向,一往无前,愈挫愈勇,再接再厉。内容1.异常概述2.Java的异常处理机制3.Java异常体系和分类4.throw和throws:异常抛出和异常声明5.try-catch-finally异常处理5.1 语法形式1.异常概述异常指不期而至的各种状况,如:文件找不到、网络连接失败、除0操作、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。为了应对运行期间可能出现的错误,提高程序的的稳健性,Java中定义了强大的异常处理机制,使用异常处理机制可以降低错误处理代码的复杂度:.
2020-08-04 01:49:40 464
原创 Java基础深度总结:多态
你我皆风华正茂,梦死方坠人生暮年内容1.什么是多态2.多态的好处3.多态分类4.向上转型与向下转型5.方法重载(Overload)5.1 方法重载的三种方式:5.2 方法重载的特点5.3 重载的实现原理:静态分派5.4 静态分派中的匹配优先级6.方法重写(Override)6.1 方法重写的特点6.2 重写实现原理:动态分派6.4 动态分派中的匹配优先级7.方法重载与方法重写对比8.静态方法和字段不参与多态1.什么是多态所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调.
2020-08-01 21:09:25 342
原创 Java基础深度总结:抽象类和接口
没有比人更高的山没有比脚更长的路。内容1.抽象2.抽象类2.1 什么是抽象类2.2 抽象类的特点2.3 抽象类与普通类3.接口3.1 什么是接口3.2 接口成员3.3 接口特点4.接口与抽象类的异同5.使用选择1.抽象抽象性和具体性都是相对的,不是绝对的。概念的内涵越小,则其抽象程度就越高,其外延也越大,反之亦然。比如“人”比“男人”抽象一点,而“生物”又比“人”更抽象一点,“物质”则比“生物”更抽象。抽象的概念是由具体概念依其“共性”而产生的,把具体概念的诸多个性排除,集中描述其共性,就会产生.
2020-07-30 18:19:39 514
原创 Java基础深度总结:继承
过去的事,就让它过去吧,我们错过了昨日的日落,再也不能错过今日的日出。内容1.继承概述2.继承的优缺点3.super4.Java继承的特点5.构造器初始化顺序6.使用继承的注意事项1.继承概述继承是面向对象思想的三大特性之一,使类与类之间产生特殊 - 一般的关系,即is-a关系。子类继承父类,表名子类是一种特殊的父类,子类拥有父类的属性和方法,并且子类可以拓展具有父类所没有的一些属性和方法,即使子类不拓展父类,也能维持拥有父类的操作。2.继承的优缺点优点:提高代码的复用性、维护性。让类与类
2020-07-29 16:50:28 287 1
原创 Java基础深度总结:封装
人人都会错过,人人都曾经错过,真正属于你的,永远不会错过。内容1.封装概述2.封装的好处1.封装概述封装就是利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外的接口使其与外部发生联系。用户无需关心对象内部的细节,但可以通过对象对外提供的接口来访问该对象。2.封装的好处减少耦合,可以独立地开发、测试、优化、使用、理解和修改易于维护和修改提高了复用性隐藏实现细节,更加安全public c
2020-07-29 15:48:41 331
原创 Java基础深度总结:访问权限
流过泪的眼睛会更明亮,滴过血的心灵会更坚强。内容1.访问权限概述2.Java中的四种访问权限3.使用场景1.访问权限概述访问权限控制: 指的是本类及本类内部的成员(成员变量、成员方法、内部类)对其他类的可见性,即这些内容是否允许其他类访问。类可见表示其它类可以用这个类创建实例对象。成员可见表示其它类可以用这个类的实例对象访问到该成员。使用访问权限控制的原因:为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分。为
2020-07-27 18:50:32 525
原创 Java基础深度总结:Object类-clone方法
凡心所向,素履所往,生如逆旅,一苇以航。内容1.clone概述2.Cloneable接口3.clone与new的区别4.浅拷贝与深拷贝5.Object.clone6.浅拷贝存在的问题1.clone概述clone() 是 Object 的 protected 方法,它不是 public,一个类不显式去重写 clone(),其它类就不能直接去调用该类实例的 clone() 方法。protected native Object clone() throws CloneNotSupportedExcept
2020-07-25 18:57:14 1053
原创 Java基础深度总结:Object类-toString方法
怕输的人永远赢不了。内容1.Object.toString2.toString被自动调用3.始终覆盖toString4.需要注意的地方1.Object.toStringObject.toString返回一个用于表达一个对象的字符串,它包含类名称,一个“@”符号,以及散列码的无符号十六进制表示法。这通常不是用户期望看到。public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCod
2020-07-24 12:12:23 507
原创 Java基础深度总结:Object类-equals方法
现在的我不配喊累,因为我一无所有。内容1.equals概述2.何时才要覆盖equals方法3.覆盖equals的通约4.重写equals()中的getClass与instanceof1.equals概述Object类的equals方法用“==”来比较两个对象,因此它的含义是两个对象是否一样,这里的一样指它们是否为同一个对象。public boolean equals(Object obj) { return (this == obj);}== 与 equals‘==’ 与
2020-07-23 22:58:47 618
原创 Java基础深度总结:Object类-hashCode方法
行动是治愈恐惧的良药,而犹豫、拖延将不断滋养恐惧。内容1.Hash概述2.hashCode的作用3.为什么重写equals的同时还得重写hashCode(重点)4.hashCode的实现1.Hash概述Hash称为“散列”或者音译“哈希”,本质上是一种压缩映射,也就是说把任意长度的消息,通过散列算法压缩成某一固定长度的消息,由于散列的空间通常远小于输入的空间,因此不同的输入可能会散列出相同的输出。2.hashCode的作用hashCode方法返回一个hash code值,这个方法是为了更好的支持
2020-07-23 19:48:23 2610
原创 Java基础深度总结:关键字-final
不论你在什么时候开始,重要的是开始之后就不要停止;不论你在什么时候结束,重要的是结束之后就不要悔恨。内容1.final数据1.final数据final修饰基本类型数据和引用类型数据final修饰基本数据类型的变量,则其数值一旦在初始化之后,便不能更改。final修饰引用数据类型的变量,则在对其初始化之后,便不能再指向另一个对象,但对象本身是可以修改的。final int x = 1;// x = 2; //错误 cannot assign value to final variable
2020-07-22 10:44:54 299
原创 Java基础深度总结:关键字-static
冒个险吧!人生本来就是一场探险, 最有成就的是那些敢于尝试的人,内容1.静态变量与实例变量2.静态方法3.静态代码块4.静态内部类5.静态导包1.静态变量与实例变量静态变量:又称为类变量,指的是被static修饰的成员变量。静态变量是属于类的,他被该类的所有对象共享,在内存中只存在一份,存在于JVM的方法区中,是线程共享的,并且在JVM加载类时,会为该类的静态变量分配内存,并随着类的卸载而销毁,一般通过类名直接访问。实例变量: 指没有被static修饰的成员变量。实例变量是属于这个类的实例对象的
2020-07-22 00:02:35 330
原创 Java基础深度总结:String
今天是如此珍贵,不值得为了苦涩的烦恼及悔恨而糟蹋它,抬高你的下巴,保持思想开朗,如同春阳下闪耀的水涧。紧紧把握住今天,因为它一去不复返。1.String概述String被声明为final,因此它不可被继承。Java8中,String内部使用char数组存储数据public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The val
2020-07-20 16:11:11 294
原创 Java基础深度总结:数据类型
你有信仰就年轻,疑惑就年老;有自信就年轻,畏惧就年老;有希望就年轻,绝望就年老;岁月使你皮肤起皱,但是失去了热忱,就损伤了灵魂。1.基本数据类型类型位取值范围默认值byte8-2^7 ~ 2^7-10char16\u0000 ~ \uffff\u0000(Unicode编码)short16-2^15 ~ 2^15-10int32-2^31 ~ 2^31-10byte8-2^7 ~ 2^7-10float323.4e
2020-07-20 10:16:37 286
原创 Java基础深度总结:Java语言概述
我很平凡,但骨子里的我却很勇敢。一.Java语言特性1.简单Java语言的语法简单明了,容易掌握且提供了丰富的类库和API文档,以及第三方开发包工具包。2.面向对象Java是一种纯面向对象的程序设计语言。3.分布性分布性主要包括两大方面,分别是操作分布和数据分布,其中操作分布指的是在多个不同的主机上布置相关操作,数据分布是将数据分别存放在多个网络中不同的主机上,借助的是URL(统一资源定位符)访问网络对象,访问方式和访问本地系统相似。4.可移植性java程序具有与体系结构无关的特性,可以
2020-07-20 09:26:26 337 1
原创 数据结构:哈希表
你受的苦,吃的亏,担的责,扛的罪,忍的痛,到最后都会变成光,照亮你的路。什么是哈希表?哈希表(Hash table,散列),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。举个栗子:一个班有30名学生,他们的学号是1-30的,我们用数组来存储这些学...
2020-02-19 18:39:43 548
原创 数据结构:树状结构之2-3树和红黑树
走得最慢的人,只要他不丧失目标,也比漫无目的地徘徊的人走得快。什么是2-3树?如下图所示:这就是一个2-3树。一颗2-3树应该是这样的:满足二叉树的基本性质节点可以存放一个或两个元素从上面图片可以看出,2-3已经不是一颗二叉树了,在树中有两种不同的节点,放一个元素的节点叫二节点,也就是说这个节点有两个孩子,而放两个元素的节点叫做三节点,他有三个孩子。正是因为每个节点有2个或...
2020-02-18 16:31:20 460
JavaGUI聊天室.zip
2019-07-18
JavaWeb--用户管理系统.zip
2019-07-16
C语言实验报告--图书信息管理系统(含源代码)
2019-02-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人