![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 96
学习笔记
Ge.Programmer
键之所致,心之所往
展开
-
多线程与高并发
目录序线程run和start创建线程的方法sleep、yield、joinThread State锁Synchronized关键字可重入的概念异常发生底层实现volatile**面试一般会问单例的双重锁里面的这个volatile为什么要加上(或者问为什么要双重锁)?**面试问题volatile能代替Synchronized吗?CASReentrantLockCoutDownLatchCycliBarrierPhaserReadWriteLockSemaphoreExchangerLockSurport面试相原创 2021-05-03 16:00:23 · 173 阅读 · 0 评论 -
二叉树&红黑树
二叉树目录索引二叉树二叉树的提出二叉树的构造与操作二叉树数据的删除红黑树基本原理红黑数的特点数据插入的修复数据删除的修复二叉树的提出对于Java开发中如果使用链表保存数据,在查询一个数据时,它的时间复杂度是O(n)如果数据量比较小,那没什么影响,如果数据量大于30,再用链表就会严重损耗程序的性能,所以只有尽可能的减少检索次数来进行优化,所以就可以使用二叉树来保存数据;二叉树的结构是根节点和叶子节点(左右子树),数据大于根节点,就放在右子树,小于根节点就放在左子树;二叉树的检索有三种,前序遍历、中原创 2020-10-24 21:42:28 · 124 阅读 · 0 评论 -
正则表达式
目录索引认识正则表达式正则标记String类对正则表达式的支持认识正则表达式正则表达式主要用于在字符串的验证等方面,简化验证操作,比如下面的程序要验证遗传字符串是否全部由数字组成:public class JavaAPIDemo { public static void main(String[] args) throws Exception { String str = "123" ; if (isNumber(str)) { int num = Integer.parseInt(s原创 2020-09-10 11:35:55 · 162 阅读 · 1 评论 -
Java--基础类库
目录索引StringBuffer类CharSequence接口AutoCloseable接口Runtime类System类Cleaner类对象克隆StringBuffer类面试题:请解释String、StringBuffer、 StringBuilder 的区别?引出StringBuffer就不得不提String和StringBuilder,首先String不能够修改内容所以有StingBuffer和StringBuilder去修改String数据类型的内容, 而StingBuffer和StringB原创 2020-08-22 18:34:44 · 141 阅读 · 0 评论 -
Java--多线程细节深化
目录索引优雅的停止线程后台守护线程volatile关键字优雅的停止线程线程的启动使用的是Thread类的start()方法,而它还提供了 stop() 方法去停止线程、destroy() 方法去销毁线程、suspend() 方法去挂起线程暂停执行 以及 resume() 方法使挂起线程的恢复但现在都被废除了(因为这些方法可能导致死锁)所以要想去停止线程可以通过flag去控制public class ThreadDemo { public static boolean flag = true ;原创 2020-08-20 18:17:18 · 127 阅读 · 0 评论 -
Java--线程的同步与死锁
目录索引线程的同步线程的死锁生产者--消费者模型线程的同步当多个线程访问同一资源时,可能会造成资源的不同步,比如:可能由于网络延迟,导致A窗口卖票的时候看到有一张剩余,但其实已经被B窗口给卖出去了,所以此时的资源不同步。由此引出线程的同步处理图中锁的功能可以用synchronized关键字来实现,利用此关键字可以定义同步方法或同步代码块,使此时操作只允许一个线程执行。同步会使程序的整体性能降低class MyThread implements Runnable { private int ti原创 2020-08-19 17:32:33 · 246 阅读 · 0 评论 -
Java--线程之基操详解
目录线程的命名和取得线程休眠线程中断线程强制运行线程礼让线程优先级线程的命名和取得由于线程的运行状态不可控,所以在程序中要取得线程,就需要给线程命名,来方便取用。关于取名,Thread类中提供有相关方法:构造方法: public Thread( Runnable target, String name);设置名字: public final void setName( String name);。取得名字: public final String getName();。class MyThr原创 2020-08-18 18:00:22 · 93 阅读 · 0 评论 -
Java--线程入门
目录索引进程与线程多线程的实现Thread类实现多线程Runnable接口实现多线程Callable接口实现多线程Thread和Runnable关系多线程运行状态进程与线程单进程:在同一个时间段内只允许一个程序执行。多进程:在一个时间段内可以同时运行多个程序(对资源进行轮流抢占,程序依次执行),但在同一个时间点,只允许一个程序执行,然后多核的出现就使得可以在同一个时间段上允许执行多个程序。线程:在进程的基础上划分的更小的程序单元,线程依赖于进程的支持,线程的启动速度比进程的快速多。多线程的实现如原创 2020-08-16 18:48:14 · 117 阅读 · 0 评论 -
Eclipse的简单细节实用
目录索引Eclipse的几个快捷键代码生成功能自动生成类的setter、getter使用Eclipse导入*.jar文件也可以将类导出为*.jar文件Eclipse的几个快捷键ctrl+‘a’、‘c’、‘v’、‘s’、‘n’ 不再赘述快捷键功能ALT + ’ / ’进行代码提示CTRL + ’ 1 ’进行代码纠正CTRL + SHIFT + ‘ ↓ ’复制当前行 (到下一行)CTRL + ‘ / ’进行多个单行注释CTRL + SHIFT + F格原创 2020-08-14 19:05:11 · 127 阅读 · 0 评论 -
Java--函数式编程
目录索引Lambda表达式方法引用内建函数式接口Lambda表达式Lamda表达式如果要想使用,那么必须有一个重要的实现要求: SAM ( Single Abstract Method), 下面以只有一个抽象方法的IMessage接口为例,在这个接口里面发现只是提供有一个 send()方法,除此之外没有任任何的其它方法定义,所以这样的接口称为函数式接口,而只有函数式接口才可以被Lambda表达式所使用。@FunctionalInterface //函数式接口interface IMessage {原创 2020-08-14 17:10:38 · 122 阅读 · 0 评论 -
深入了解--Java内部类
目录索引内部类定义内部类static定义内部类方法中定义内部类匿名内部类内部类内部类本身是一个独立且完善的类结构,在一个类的内部除了属性和方法之外可以继续使用class定义内部类class Outer { //外部类 private String msg = "www.baidu.com" ;//私有成员属性 public void fun() { // 普通方法 Inner in = new Inner() ; // 实例化内部类对象 in.print() ;//调用内 部类方法 }原创 2020-08-13 16:46:50 · 100 阅读 · 0 评论 -
深入了解--Java异常
目录索引认识异常处理异常处理多个异常异常处理流程throws和throw关键字throws关键字throw关键字异常处理标准格式自定义异常类assert关键字认识异常异常指的是导致程序中断执行的一种指令流。 程序中有致命性错误和非致命错误(比如除数为0的异常就是非致命错误),如果需要非致命错误出现后,程序依旧可以正常完成,这就需要一个完善的异常处理机制。处理异常处理异常有三种格式可以使用: try. .catch、try…catch… finally、try… finally。public c原创 2020-08-12 16:24:18 · 115 阅读 · 0 评论 -
Java的单例设计模式和枚举
目录索引单例设计模式多例设计模式枚举定义枚举类Enum类定义枚举结构单例设计模式单例和多例设计模式主要是控制实例化对象个数的设计操作。单例设计模式就是要求类只允许提供一个实例化对象,首先实例化对象的产生必然绕不过构造方法,构造方法有默认的,所以如果当实例化时用不了这个构造方法,那么这个实例化对象就产生不了class Singleton { private static final Singleton INSTANCE = new Singleton() ; /* 第二步: 1、由于第一步将构造原创 2020-08-11 16:24:44 · 122 阅读 · 0 评论 -
深入了解--Java包的定义与使用
目录索引包的定义包的导入静态导入生成jar文件系统常用包访问控制权限包的定义在开发中,类要放在包里面,为了防止有可能产生类的重用定义,就会将程序文件放在不同的目录下,这个目录就叫做包,如果程序中有包,那么产生的“*.class”文件就需要放在包中包的导入利用包的定义实际上就可以将不同的功能的类保存在不同的包之中,但是这些类彼此之间一定会存在有互相调用的关系,那么在这个时候就需要使用import语句来导入其它包中的程序类。“ import 包名 ” 或者“ import 包 . * ”注意:关原创 2020-08-10 17:02:09 · 272 阅读 · 0 评论 -
深入了解--Java的泛型
目录索引泛型泛型的基本定义泛型通配符泛型接口泛型方法泛型泛型从JDK 1.5 之后追加到Java语言里面的,其主要目的是为了解决ClassCastException的问题,在进行对象的向下转型时永远都可能存在有安全隐患,而Java希望通过泛型可以慢慢解决掉此类问题。所有数据类型都可以用Object接受,但正因于此,当拆箱时,从里面获得数据会有Object向下转型,Object涵盖的范围很广,执行代码时就会出现ClassCastException异常,但编译的时候又往往不会报错…所以不建议Object向原创 2020-08-09 16:43:40 · 111 阅读 · 0 评论 -
包装类和接口
目录索引包装类装箱与拆箱接口接口的定义工厂设计模式代理设计模式抽象类和接口的区别包装类包装类的主要功能主要是针对基本数据类型的对象转换而实现的。在JDK1.0时就提供了八种包装类对应八种基本数据类型可以发现在Java中包装类提供有两种类型:对象型包装类(Object直接子类):Boolean、Character数值型包装类(Number直接子类):Byte、Short、Integer、Long、Float、DoubleNumber是一个抽象类,以后只要是看见了Number都应该明确的表示它原创 2020-08-08 18:30:51 · 639 阅读 · 0 评论 -
Object类和抽象类
目录索引Object类Object的tostring和equals覆写抽象类抽象类相关说明抽象类应用:模板设计模式Object类主要特征: 使用object类可以接收所有的数据类型,在Java中只有object类不存在继承关系,所有类在默认情况下都是object的子类接收一个类:class Person { } //一个类public class JavaDemo { public static void main (String args []) { Object obj = new Pe原创 2020-08-07 16:39:40 · 829 阅读 · 0 评论 -
Java的多态性以及Annotion注解
只有经过地狱般的磨练,才能炼出创造天堂的力量。只有流过血的手指,才能弹奏出世间的绝唱。  .原创 2020-08-06 17:14:56 · 376 阅读 · 0 评论 -
Java继承与覆写
只有经过地狱般的磨练,才能炼出创造天堂的力量。只有流过血的手指,才能弹奏出世间的绝唱。一一泰戈尔目录索引继承的定义、使用继承的实现子类对象实例化继承定义限制覆写方法覆写与限制属性覆盖final关键字继承的定义、使用继承的实现继承的主要特点在于可以扩充已有类的功能。为了解决一些结构中的重复的代码问题,就引出了代码的重用,由此便出现了继承。在Java程序中要想实现继承关系,就必须依靠extends关键字来完成:class 子类 extends 父类 { }子类可以重用父类的结构,并在父.原创 2020-08-04 16:27:34 · 269 阅读 · 0 评论 -
String类特点以及常用方法
String类特点分析目录索引String类特点分析String类简介字符串比较String类对象两种实例化方式比较String对象(常量)池字符串内容不可修改主方法的组成String常用方法字符串与字符数组、字节数组字符串比较、查找、替换、拆分以及截取字符串格式化以及其他操作方法String类简介字符串严格意义上来讲,并不能算是一个基本数据类型,只是在Java里面,为了方便开发者进项项目的编写,所以利用其JVM的支持制造了一种可以简单使用的String类,其可以保存字符串的原因主要在于,其每一个字符原创 2020-08-03 18:07:34 · 470 阅读 · 0 评论 -
数据表与简单Java类映射转换
数组、引用传递实例以及映射转换目录索引数组的定义与使用数组的定义:foreach输出:二维数组数组操作方法可变参数对象数组类关联结构映射映射转换一对多映射多对多映射复杂多对多映射数组的定义与使用数组的定义:数组的动态初始化,初始化之后数组每一个元素的保存内容为其对应数据类型的默认值。声明并初始化数组: 数据类型数组名称 [] = new 数据类型[长度];数组的静态初始化,在数组定义的时候就为其设置好了里面的内容。简化格式:数据类型数组名称 [] = {数据1, 数据2,数据…};.原创 2020-08-02 16:53:38 · 379 阅读 · 0 评论 -
面向对象案例分析
STATIC以及简单Java类案例目录索引STATIC以及简单Java类案例static关键字、代码块static关键字代码块案例分析static关键字、代码块static关键字static主要用于定义成员变量和方法:声明static成员变量:一个公共信息存储的属性;static属性可以在没有实例化对象的产生之前调用;最好是通过所有对象的最高代表(类)来进行访问(static属性可以由类名称直接调用);声明static方法:static方法只 允许调用static属性或st原创 2020-08-01 17:11:25 · 588 阅读 · 0 评论 -
深入分析类与对象
目录索引对象内存分析对象引用分析成员变量封装构造方法与匿名对象this调用当前成员变量this调用本类方法对象内存分析堆内存:保存的是内存的具体信息,在程序之中堆内存的开辟是通过new完成的;栈内存:保存的是一块堆内存地址,即:通过地址找到堆内存,而后找到对象内容;对象引用分析内存的引用传递:同一块堆内存空间可以被不同的栈内存所指向,也可以更换指向class Person { // 定又一一个类 String name ; // 人员的姓名 int age ; //人的年龄 publ原创 2020-07-31 17:50:44 · 128 阅读 · 0 评论 -
JAVA基础学习(二)
Java中方法的使用、类与对象方法的使用方法的基本定义public static 返回值类型 方法名称([参数类型 变量,…]){ //执行代码 [return [返回值] ;]}方法的本质就是方便使用者进行重复的调用方法的重载相同的方法名相同,参数类型,参数个数不同;方法的返回值类型不同,不能原创 2020-07-29 18:07:48 · 91 阅读 · 0 评论 -
JAVA基础学习(一)
Java的数据类型、运算符以及程序逻辑控制数据类型基本数据类型:描述的是一些具体的数字单元1.整型2.浮点型3.布尔型4.字符型引用数据类型:牵扯到内存关系的使用1.数组2.类3.接口注意:布尔型默认值是false,char类型默认值为 '\u0000’基本数据类型基本数据类型的一些使用参考原则:如果要是描述数字首选的一定是int (整数)、double ( 小数);如果要进行数据传输或者是进行文字编码转换使用byte类型(二进制处理操作);处理中文 的时候最方便的操作使原创 2020-07-28 19:00:25 · 86 阅读 · 0 评论 -
JAVA的简单了解
初识JavaJava的简介以及可移植性JAVA的技术发展:1.Java标准开发(J2SE、JAVA SE):提供的是底层的支持,实现了桌面程序的开发2.Java嵌入式开发(J2ME、JAVA ME):后来基本被Android所替代3.Java企业开发(J2EE、JAVE EE):主要进行企业平台的搭建,现在主要开发是互联网平台Java的运行机制:1.两种语言的结合:编译命令:javac.exe;解释命令:java.exe;由Java源文件、字节码文件、机器码指令组成Java虚拟机(Java原创 2020-07-27 17:56:14 · 135 阅读 · 0 评论