
java基础
文章平均质量分 75
落木萧潇
这个作者很懒,什么都没留下…
展开
-
正则表达式进阶
零宽度断言先行断言用于判断所匹配的格式是否在另一个确定的格式之前,该确定的格式仅作为匹配的约束,并不包含在匹配结果中;后发断言用于用于判断所匹配的格式是否在另一个确定的格式之后,筛选条件为其前跟随着断言中定义的格式。符号详细描述格式?=正先行断言-存在(?=…)?!负先行断言-排除(?!..)?<=正后发断言-存在(?<=…)?<!负后发断言-排除?<!..)贪婪匹配与惰性匹配正则表达式默认采用贪婪匹配模式,原创 2021-03-29 23:10:24 · 184 阅读 · 0 评论 -
正则表达式知识整理
正则表达式元字符描述限定符相关描述?标记?之前的字符为可选,有没有都行。*匹配>=0个重复的在*号之前的字符,(0 ~ +∞)。+匹配>=1个重复的+号前的字符,(1 ~ +∞)。点运算符相关描述.匹配任意单个字符除了换行符。字符类相关描述[ ]字符种类。匹配方括号内的任意字符。[^ ]否定的字符种类。匹配除了方括号里的任意字符。(xyz)字符集,匹配与 xyz 完全相等的字符串。量词相关描述原创 2021-03-07 23:43:47 · 213 阅读 · 1 评论 -
并行流stream的使用
Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。 使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简言之,Stream API 提供了一种高效且易于使用的处理数据的方式。Stream 和 Collection 集合的区别:Collection 是一种静态的内存数据结构,而 Stream 是有关计算的。前者是主要面向内存,存储..原创 2021-03-02 23:48:58 · 909 阅读 · 0 评论 -
匿名内部类与Lambda 表达式
匿名内部类匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。其语法形式如下:父类名|接口名 对象名 = new 父类构造器(参数列表)|实现接口(){ // 方法重写 @Override public void method() { // 执行语句 }};//分号结尾使用匿名内部类的条件是:必须继承一个父类或实现一个接口,因为类没有名字,要创建该对象的引用的话,则必须继承一个父类或者实现一个接口,然后通过父类引用匿名内部原创 2021-03-01 23:33:05 · 387 阅读 · 2 评论 -
创建对象时发生的那些事儿
对象的实例化过程如图是JVM的完整框图[1] :是类加载阶段,类加载的过程一共有三个阶段:(1)加载阶段、(2)链接阶段、(3)初始化阶段。加载 .class文件时,采用的是双亲委派机制。(1)加载阶段: 通过该类的全限定名拿到该类的二进制字节流,之后将该字节流所代表的静态存储结构转化为方法区的运行时数据结构,在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。(2)链接阶段分为三步:验证、准备、解析。验证(Verify):文件格式验证原创 2021-03-01 00:33:47 · 275 阅读 · 2 评论 -
深入理解i++与++i
为了讲解i++与++i,直接由以下几个例子分析:例子一方法test1()和test2()字节码解释:当直接使用i++与++i的时候,反编译字节码文件是一致的,均为0 iconst_1 //立即数 1 压入操作数栈1 istore_1 //栈顶元素 1 写入到局部变量表索引为1的位置 2 iinc 1 by 1 //局部变量表索引为1的数 +1 即 1+1 = 25 return由此可以得出,执行结果后,局部变量表中的变量 i 为2。例子二方法test3()字节码解释:i++原创 2021-02-16 22:57:20 · 913 阅读 · 0 评论 -
NIO知识总结
BIO、NIO、AIO区别BIO:Block IO 同步阻塞式 IO,在传统的java.io包下,它基于流模型实现(面向流的IO操作),提供了我们最熟知的一些IO功能,例如File 抽象、输入输出流等。BIO的交互方式是同步、阻塞的方式,即在读取输入流或者写入输出流时,在读、写动作完成之前,线程会一直阻塞在那里,它们之间的调用是可靠的线性顺序。NIO:non-blocking IO 同步非阻塞 IO,是在JDK1.4中引入的NIO框架(java.nio包),可以看作是传统IO的升级,NIO支持面原创 2021-01-21 23:35:54 · 113 阅读 · 0 评论 -
java高级之IO流
java高级之IO流IO流原理I/O是Input/Output的缩写,I/O技术用于处理设备之间的数据传输。如读/写文件,网络通讯等。在Java程序中,我们使用“流(stream)” 的方式对数据进行输入/输出的操作。在java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。在编写java程序时,站在程序的角度上来说:输入(input):读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。输出(output):将程序(内存)数据输出到磁盘原创 2021-01-17 23:36:47 · 142 阅读 · 0 评论 -
java中的值传递和引用传递
关于java中是值传递还是引用传递,网上各种说法层出不穷,正好最近在研究java内存模型,打算从内存模型角度上来分析一下java中的参数传递问题。先上代码: public class TransTest { public static void main(String[] args) { //定义一个基本数据类型的数据 int num = 100; //定义一个引用类型为String类的数据 String st原创 2021-01-17 00:46:44 · 177 阅读 · 1 评论 -
事务相关知识点
在对数据库进行一系列操作时,为了进行统一的提交或者回滚操作,需要进行事务管理,在使用事务时,需要有一个事务管理器,可以使用xml方式指定事务管理器,也可以使用Spring Boot中的@Configuration和@Bean注解指定:xml方式<!--配置事务管理器,指定管理着某个数据源,保证数据的完整性和一致性,--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSou.原创 2021-01-13 23:43:11 · 105 阅读 · 0 评论 -
java IO流之File类的使用
java高级之IO流文章目录java高级之IO流File类的使用File类概述路径分隔符File类常用方法构造方法获取方法重命名与判断方法创建和删除方法总结欢迎关注File类的使用File类概述对于经常使用计算机的人,对计算机系统里面的目录和文件一定不陌生,在计算机系统上我们可以手动新增、修改、删除、查看文件夹及文件夹里的文件,也可以通过Java标准库中的java.io.File对象来操作文件和目录。File类是文件和文件目录路径的抽象表示形式,它与平台无关,File类的一个对象,代表一个原创 2020-11-27 22:48:41 · 179 阅读 · 0 评论 -
java泛型初级理解
java高级之泛型文章目录java高级之泛型初识泛型走进泛型方法形参实参类比从方法到集合自定义泛型结构自定义泛型类自定义泛型接口自定义泛型方法泛型特性初识泛型走进泛型方法形参实参类比从一个方法的实参和形参说起://现在定义了一个add方法,两个参数,参数类型为Integer,i、j是形参。private Integer add(Integer i, Integer j) { return i + j;}@Testpublic void testAdd() { int原创 2020-09-25 22:34:56 · 145 阅读 · 0 评论 -
java容器集合源码分析
Map接口源码分析文章目录Map接口源码分析HashMap底层实现HashMap源码分析LinkedHashMap源码分析注意Set接口源码分析HashSet底层实现`LinkedHashSet`底层实现List接口源码分析ArrayList底层实现LinkedList底层实现Vector底层实现总结HashMap底层实现JDK7中,HashMap使用数组+链表的结构,JDK8中,HashMap使用数组+链表+红黑树的结构。HashMap添加数据的过程梳理,从JDK7为例梳理过程,并分析JD原创 2020-09-19 22:28:58 · 124 阅读 · 0 评论 -
java集合之Map及Collections工具类详解
java高级之集合Map接口概述Map接口与Collection接口并列,Collection集合中的元素是独立存在的,而Map集合中的元素是成对存在的,它用于保存具有映射关系的键-值对:key-value;因此可以将Collection集合称为单列集合,Map集合称为双列集合。Map 中的 key 和 value 可以是任何引用类型的数据;Map 中的 key 值不允许重复,使用Set来存放,因此,同一个 Map 对象所对应的类,必须重写hashCode()和equals()方法。如果Map中原创 2020-08-30 23:37:08 · 251 阅读 · 0 评论 -
java集合Collection、List、Set详解
java高级之集合文章目录java高级之集合概述集合 VS 数组数组集合整体概述Collection接口常用方法迭代器迭代器中的方法源码简单分析循环List接口概述常用方法实现类:ArrayList实现类:LinkedList实现类:VectorList接口总结Set接口概述实现类:HashSet实现类:LinkedHashSet实现类:TreeSetSet接口总结概述万事万物皆对象,我们可以使用数组来存储对象但存在一些弊端。集合就像是一种java容器,可以动态的存储多个对象,可以把它理解为是动态原创 2020-08-22 23:44:02 · 671 阅读 · 0 评论 -
java注解的前生今世
Java高级之注解初识注解概念入门在现实世界中,我们可以用沉鱼、落雁、闭月、羞花来形容女子容貌美丽;在动物世界中,我们可以用凶猛、强悍、睿智、威武来形容狮子老虎的地位;那么联系到在Java世界,我们应该用何来形容Java源码的类、方法、字段以及参数呢?答案是注解。注解:Annotation,翻译过来便是:注释、释文。它可以为Java源码的类、方法、字段以及参数提供一些描述性的信息。元数据:我们将类、方法、字段以及参数当作是Java世界的数据,注解用来描述这些数据,那么,我们可以将注解理原创 2020-08-12 23:32:39 · 190 阅读 · 0 评论 -
深入浅出java反射应用一一动态代理
Java高级之反射反射应用之动态代理问题的起源适逢学生暑期,现在驾校里有许多学生趁着假期开始学车,目前正在练习科目二,整体流程固定,如下:/** * 驾校学生接口 */interface DrivingStudent{ //准备科目二的考试 void prepare();}/** * 正常驾校学生的考试流程 */class CommonStudents implements DrivingStudent{ @Override public void原创 2020-08-06 22:35:26 · 184 阅读 · 0 评论 -
深入剖析java反射原理
枚举类文章目录枚举类背景及定义自定义枚举类与enmu对比枚举类简单介绍枚举类特点使用说明枚举类反编译主要方法总结背景及定义自定义枚举类与enmu对比在上一篇java高级之多线程中,生命周期的线程的状态中,有这样的一段代码,分别代表线程的新建状态、运行状态、阻塞状态、等待状态、超时等待状态、终止状态。public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_原创 2020-08-03 22:25:57 · 160 阅读 · 0 评论 -
一文打尽java枚举类
枚举类文章目录枚举类背景及定义自定义枚举类与enmu对比枚举类简单介绍枚举类特点使用说明枚举类反编译主要方法总结背景及定义自定义枚举类与enmu对比在上一篇java高级之多线程中,生命周期的线程的状态中,有这样的一段代码,分别代表线程的新建状态、运行状态、阻塞状态、等待状态、超时等待状态、终止状态。public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_原创 2020-07-18 22:07:27 · 257 阅读 · 0 评论 -
java多线程菜鸟入门,概念及创建方式
多线程文章目录多线程基本概念程序、进程、线程程序进程程序与进程区别线程并行与并发总结重要线程的创建继承于Thread类实现Runnable接口使用Callable和Future通过线程池创建线程统一测试生命周期状态状态的转换线程的同步问题提出使用同步机制同步监视器即锁锁的操作Lock锁线程的通信方法wait() 与 notify() 和 notifyAll()注意区别基本概念程序、进程、线程程序程序:简单理解为完成特定任务而编写的一段静态的代码,是静态对象。进程程序不能单独运行,只有将原创 2020-07-12 23:39:47 · 281 阅读 · 0 评论 -
java之动态代理
Java之动态代理文章目录Java之动态代理基本说明例子代码接口`LinuxService`实现类`LinuxServiceImpl`想要代理接口的代理对象执行类结果基本说明我们的目标是:在不改变目标对象方法的情况下对方法进行增强!动态代理类的字节码在程序运行时由Java反射机制动态生成,而无需手动编写它的源代码。简化了编程工作提高了软件系统的可扩展性Java 反射机...原创 2019-10-31 23:27:26 · 98 阅读 · 0 评论