Javase
松松啊
这个作者很懒,什么都没留下…
展开
-
二叉树的前序遍历,中序遍历,后序遍历(Java实现)
二叉树的前序遍历,中序遍历,后序遍历(Java实现) 原创 ...转载 2020-03-26 14:22:20 · 245 阅读 · 0 评论 -
并发编程——ConcurrentHashMap#transfer() 扩容逐行分析
并发编程——ConcurrentHashMap#transfer() 扩容逐行分析 </h1> <div class="clear"></div> <div class="postBody"> 前言ConcurrentHashMap 是并发中的...转载 2019-12-10 20:44:11 · 169 阅读 · 0 评论 -
MySQL的组成
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声...转载 2019-12-09 10:20:17 · 371 阅读 · 0 评论 -
设计模式的作用
什么是设计模式?设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。设计模式的好处模式是在某一背景下某个问题的一种解决方案。1. 复用解决方案——...转载 2019-11-29 20:19:12 · 910 阅读 · 0 评论 -
Arrays.asList contains() 泛型 基本型问题
来源:https://www.cnblogs.com/young-z/p/8465198.html最近在网上看到一个问题,情况类似如下(记为问题1):public class Demo { public static void main(String[] args) { ...转载 2019-11-20 11:33:52 · 347 阅读 · 0 评论 -
java内存模型
【教程】终于有人把Java内存模型说清楚了! 网上有很多关于 Java 内存模型的文章,但是很多人读完之后还是搞不清楚,甚至有的人说自己更懵了。本文就来整体的介绍一下 Java 内存模型,比如 Java 内存模型是什么,为什么要有 Java 内存模型,Java 内存模型解决了什么问题等。 ...转载 2019-11-16 17:19:10 · 95 阅读 · 0 评论 -
volitail关键字
对于volatile这个关键字,相信很多朋友都听说过,甚至使用过,这个关键字虽然字面上理解起来比较简单,但是要用好起来却不是一件容易的事。这篇文章将从多个方面来讲解volatile,让你对它更加理解。计算机中为什么会出现线程不安全的问题volatile既然是与线程安全有关的问题,那我们先来了解一下计算机在处理数据的过程中为什么会出现线程不安全的问题。大家都知道,计算机在执行程序时,...转载 2019-11-16 17:08:19 · 1909 阅读 · 1 评论 -
JVM对象逃逸
1, 是JVM优化技术,它不是直接优化手段,而是为其它优化手段提供依据。逃逸分析,是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围从而决定是否要将这个对象分配到堆上。Java在Java S...转载 2019-11-16 16:50:57 · 161 阅读 · 0 评论 -
可重入锁如何避免死锁
本文由https://bbs.csdn.net/topics/390939500和https://zhidao.baidu.com/question/1946051090515119908.html启发而来。 看到一个问题,Java的可重入锁为什么可以防止死锁呢?网上看了看资料,虽然有答案说出了正确答案,但是分析的不够详细,对初学者不够友好。这里我再做一个更清晰的分...转载 2019-11-12 23:15:59 · 1691 阅读 · 1 评论 -
00.Java基础知识兜底
JDK(Java Development Kit)[Java开发工具包]JRE(Java Runtime Evironment)[Java运行环境]JVM(Java Virtual Machine)[Java虚拟机]Java中8种基本数据类型整型:byte,short,int,long浮点数型:float,double字符型:char布尔型:boolean(作为局部变量单独使用和i...原创 2019-08-08 08:19:02 · 557 阅读 · 0 评论 -
01.面向对象设计原则
1. 总则:开闭原则:面向扩展开放,面向修改关闭2. 单一职责原则一个类应该实现单一职责,否则将类拆开3. 里氏替换原则任何父类可以出现的地方,子类一定可以出现。子类尽量不要重写和重载父类的方法(不是绝对,此原则与多态有一定的冲突,寻找一个平衡点)4. 依赖倒置面向接口编程,依赖于抽象而不依赖于具体,写代码时用到具体类时,不与具体类进行交互,而具体类的上层接口交互。5. 接口隔离原...原创 2019-08-08 08:21:10 · 82 阅读 · 0 评论 -
02.自动转化,进制转化及选择
自动转化因为浮点数的特殊性,long类型的变量可以自动转型为float类型的,这是由于float所能表示的值大于long类型的。例题1byte b1=10; byte b2=20; byte b3=b1+b2; //有问题吗?答案是有,因为两个byte类型相加,java虚拟机会默认他的结果是int类型,所以会编译出错。例题2int d = 5;d = d++;输出结果为...原创 2019-08-08 08:33:40 · 143 阅读 · 0 评论 -
03.数组及其经典算法
数组:数组是相同类型数据的有序集合。数组描述的是相同类型的若干数据,按照一定的先后次序排列组合而成。基本特点:不能同时静态初始化又动态初始化,即:int[] arr = new int[2]{1,2};会报错长度确定,一把被创建,大小就是不可改变的。数组内元素必须是相同类型数组类型可以是任何数据类型,包括基本类型和引用类型数组变量属于引用类型,数组可以看成是对象,数组中的每个...原创 2019-08-08 08:35:01 · 275 阅读 · 0 评论 -
04.类,对象和内部类
面向对象和面向过程a.都是看待问题的一种思维方式,都能解决问题b.面向过程着眼于所有的事情按照步骤来实现c.面向对象着眼于找到一个具有特殊功能的对象,委托这个对象去做某件事情。类是对象的模板,对象是类的实例内存浅析:程序运行时,操作系统会分配三块主要的内存空间栈:直接存放基本类型数据,和引用类型的地址栈空间比较小,存取速度相对较快先进后出堆:存放引用类型的实际数据...原创 2019-08-08 08:37:40 · 97 阅读 · 0 评论 -
05.封装,static,insteadOf关键字
什么是封装:在类中,对于不想被类外直接访问的成员变量,进行私有化,同时对外提供一个公有的方法访问私有的成员。封装成员变量两个步骤:第一步: 添加private 修饰符第二步: 添加get和set方法这么做有什么好处?最后还是将属性暴露了出去。答案是这么做可以给属性添加判断条件,只有满足条件才可以修改,如age>0 && age<120,构造方法也可以调用s...原创 2019-08-08 08:46:54 · 171 阅读 · 0 评论 -
06.Object部分方法
equals==操作符与equals方法的区别:1 == 比较 基本类型比较的是数据 ,引用类型比较对象的引用(地址)2 默认情况 Object中equals和==一样3 String类型重写了Object中的equals,所以String比较使用equals方法。以下是String中重写equals的方法 public boolean equals(Object anObje...原创 2019-08-08 08:48:19 · 93 阅读 · 0 评论 -
07.多态,转型,instaceOf,组合和final
多态即父类的引用实际指向子类的对象。(里氏替换原则)多态使用形式1 使用父类作为方法形参实现多态2 使用父类作为方法返回值实现多态向上转型即父类引用指向子类对象,自动转化。此时父类只能调用父类自己有的,或者是子类重写了父类的方法,不能调用子类独有的方法。向下转型将父类的变量赋值给子类变量,强制转换。只有在进行了向上转型之后,才能向下转型,否则会程序抛出异常。若一个父类A的...原创 2019-08-08 08:50:35 · 144 阅读 · 0 评论 -
08.接口和抽象类
抽象类:包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。特点如下:抽象类可以包含属性,方法,构造方法。但是构造方法不能用new实例化,只能被用来被子类调用。抽象类只能用来被继承抽象方法必须被子类实现,或者子类是一个抽象类(如果子类是抽象类,那么该抽象类可以不覆盖抽象方法)...原创 2019-08-08 08:53:14 · 168 阅读 · 0 评论 -
09.访问符,内部类和lambda表达式
内部类一般情况,我们把类定义成独立的单元。有些情况下,我们把一个类放在另一个类的内部定义,称为内部类(innerclasses)。注意:内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不同的两个类。对于一个名为Outer的外部类和其内部定义的名为Inner的内部类。编译完成后会出现Outer.class和Outer$Inner.class两个类的字节码文件。所以内部类是相对独立的一种...原创 2019-08-08 09:16:19 · 142 阅读 · 0 评论 -
10.包装类
八个基本的包装类在这八个类名中,除了Integer和Character类以外,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写而已。包装类用途:作为和基本数据类型对应的类型存在,方便设计对象的操作,如Objec[]、集合等操作。包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法(这些操作方法的作用是在基本数据类型、包装类对象、字符串之间提供相互之间的转化...原创 2019-08-08 09:17:24 · 111 阅读 · 0 评论 -
11.String
String的intern()方法intern方法用来返回常量池中的某字符串,如果常量池中已经存在该字符串,则直接返回常量池中该对象的引用。否则,在常量池中加入该对象,然后返回引用。intern()判断这个常量是否存在于常量池。 (1)如果存在 1.1判断存在内容是引用还是常量, 如果是引用, 返回引用地址指向堆空间对象, 如果是常量, 直接返回...原创 2019-08-08 11:43:24 · 116 阅读 · 0 评论 -
12.正则表达式
正则表达式本身就是一个字符串,用一个正则表达式来匹配另一个或另一组字符串预定义字符类. 任意字符(与行结束符可能匹配也可能不匹配)\d 数字:[0-9]\w 单词字符:[a-zA-Z_0-9]边界匹配器^ 行开头$ 行结尾数量:X? 一次或0次X* 0次或多次(包括1次)X+ 一次或多次X{n} 恰好n次X{n, } 至少n次X{n...原创 2019-08-08 11:59:09 · 146 阅读 · 0 评论 -
13.单例设计模式
单例设计模式有两种,一种是懒汉式,一种是饿汉式什么是单例设计模式: 该类仅需要一个对象,如公司的董事长,朝代的君王。单例设计模式不可以创建指定属性的对象,但是可以在创建之后使用set和get方法对对象的属性进行修改,因为单例设计模式中类的构造方法时私有的,外界不能调用。懒汉设计模式public class SingleTon { //1.私有化构造方法 privat...原创 2019-08-08 12:01:24 · 65 阅读 · 0 评论 -
14.常用类
Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。Date类中的构造方法:方法名描述Date()分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。Date(long date)分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 ...原创 2019-08-08 12:11:39 · 94 阅读 · 0 评论 -
15.枚举与异常
枚举是一个引用类型,枚举就是一个规定了取值范围的变量类型。枚举变量不能使用其他的数据,只能使用枚举中常量赋值。提高程序安全性注意事项枚举中的成员是此枚举的取值范围;所有的值之间使用逗号分隔,最后一个值后可以加分号也可以不加分号;在枚举中可以声明方法,但是必须在所有的取值之后声明,而且最后一个值后必须使用分号隔开.1 枚举的本质:其实就是终止类,并继承Enum抽象类。2 枚举中的...原创 2019-08-08 15:12:38 · 248 阅读 · 0 评论 -
16.泛型,迭代器和list集合
第一节 概念1.1 集合的概念集合:就是一个存储数据的容器。集合与数组一样,也是一个容器,与数组的区别:1 数组长度固定,集合的长度不固定。2 数组可以存储基本类型和引用类型,集合中存储的元素类型只能是引用类型。1.2 集合的框架结构介绍Collection集合的框架结构Map集合的框架结构[外链图片转存失败(img-ZXyUDmKL-1565227745919)(E:/...原创 2019-08-08 15:20:04 · 309 阅读 · 1 评论 -
17.Set,Map和Collections接口
Set接口和Map接口Set接口1.1 Set接口常用方法方法名描述add(E e)确保此 collection 包含指定的元素(可选操作)。addAll(Collection<? extends E> c)将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。clear()移除此 collection ...原创 2019-08-08 15:55:36 · 149 阅读 · 0 评论 -
18.文件流
IO流:文件和流第一节 File类1.1 File类作用java.io包中 (IO Input Output)在java程序中,对磁盘文件进行描述的类。文件和目录路径名的抽象表示形式。1.2 File类的常用构造方法方法名描述File(File parent, String child)根据 parent 抽象路径名和 child 路径名字符串创建一个新 ...原创 2019-08-08 16:34:04 · 362 阅读 · 1 评论 -
19.各类其他流
IO流:缓冲流等第一节 转换流 作用: a.实现字节流到字符流的转换 b.解决中文乱码的问题 中文编码 gb2312 (采用两个字节保存字符汉字,英文数字一个字节) GBK (采用两个字节保存字符汉字,英文数字一个字节) GB18030 (英文数字都是一个字节,中文是两个或四个字节) Unicode字符集(包含每个国家的所有字符)国际通用 unicode编...原创 2019-08-09 22:32:02 · 484 阅读 · 0 评论 -
20.线程基础
多线程基础1.进程和线程 1.1 进程 1.2 线程 1.3 进程和线程的关系以及区别2.多线程的实现 2.1 继承Thread类 2.2 实现Runnable接口 2.3 两种实现方式的比较 2.4 调用start()和run()方法的区别3.线程的常用方法 3.1 线程的名称 3.2 线程休眠 3.3 设置线程优先级 3.4 合并线程 3.5 后台线程 3.6 ...原创 2019-08-11 23:24:58 · 650 阅读 · 0 评论 -
21.多线程同步
多线程同步第一节 多线程访问临界资源1.1 多线程访问临界资源时的数据安全问题临界资源 :多个线程同时访问的资源。产生原因:有多个线程在同时访问一个资源,如果一个线程在取值的过程中,时间片又被其他线程抢走了,临界资源问题就产生了1.2 解决临界资源问题解决方案:一个线程在访问临界资源的时候,如果给这个资源“上一把锁”,这个时候如果其他线程也要访问这个资源,就得在“锁”外面等待。1.3...原创 2019-08-12 22:15:11 · 505 阅读 · 0 评论 -
22.网络编程
网络编程第一节:常识普及1.1 计算机网络所谓计算机网络,就是把分布在不同区域的计算机与专门的外部设备用通信线路相互连接成一个规模大,而且功能强的网络系统,从而使得计算机之间可以相互传递信息,共享数据、软件等资源。网络分类 :按照地理范围:广域网( Internet) ,城域网( 一个城市、多个城市,长城宽带),局域网(机房)1.2 网络编程所谓网络编程(不是网站编程),指的就是在同一...原创 2019-08-15 22:53:01 · 493 阅读 · 0 评论 -
23.NIO
NIO第一节:NIO简介 java.nio全称Java non-blocking IO或Java New IO,是从jdk1.4 开始引入的一套新的IO api(New IO) ,为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。 IO操作的三种模式: PIO(Programing IO): 所有的IO操作由CPU处...原创 2019-08-19 21:13:30 · 94 阅读 · 0 评论 -
24.JUC
JUC回顾1 NIO主要内容:Buffer、Channel2 非阻塞式网络编程今天任务1 volatile的使用2 原子变量和CAS算法3 Lock接口4 并发集合5 同步工具类第一节 JUC 概述 在 Java 5.0 提供了 java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类,用于定义类似于线程的自定义子系统,包括线程...原创 2019-08-19 21:16:11 · 116 阅读 · 0 评论 -
25.反射和XML
反射和XML回顾:1 NIO简介 Java Non-blocking IO New IO2 和传统IO (1) 面向流 ,面向缓冲区 (2) 阻塞, 非阻塞 (3) 无 选择器(selector)3 NIO Buffer:ByteBuffer CharBuffer Channel:FileChannel、ServerSocketCh...原创 2019-08-19 21:18:22 · 125 阅读 · 0 评论 -
26.java8新特性
Java8 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。方法引用 − 方法引用提供...原创 2019-08-20 21:14:12 · 108 阅读 · 0 评论