自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 资源 (1)
  • 收藏
  • 关注

原创 正则表达式

1.正则表达式 概念:其实就一个匹配原则,用来替换之前复杂的if判断结构 在Java中,我们经常需要验证一些字符串,是否符合既定规则 ps:我们要验证QQ号或者手机号,以及邮箱是否正确,我们就需要使用if来判断 这个时候为了优化代码,就需要使用正则表达式,来验证各种字符串的规则,它内部定义了一些规则,来验证我们输入的字符串是否符合规则public static void main(String[] args) { /* * 需求...

2021-09-07 20:59:27 216

原创 XML解析_Dom4j

1.解析方式和解析包 解析方式: 常见有三种解析方式 1.DOM:要求解析器把整个XML文件装在到内存,并解析成一个Document对象 优点:元素与元素之间保留结构关系,我们可以很方便的对其进行增删改查 缺点:XML文档过大的话,可能出现内存溢出 2.SAX:是一种速度更快,更有效的方式,它是逐行扫描,一边扫描一边解析,并且以事件驱动方式进行具体...

2021-09-07 20:48:31 233

原创 XML介绍与约束

1.XML介绍 MXL和HTML很相似,HTML是前端页面标签语言 XML指的是扩展标记语言【Extensible Markup Language】 XML用来传输数据的,不是用来显示数据的,之后学习的HTML是显示数据的 XML标签没有被预定义。<标签内部>需要我们自定义<Person></Person> XML是W3C的标准推荐,3C的工作是对web进行标准化,web就是指的前端 W3C在1988年2月发布的1.0版本,2004年2月...

2021-09-07 20:29:43 407

原创 Java之Base64

1.Base64概述: java.util.Base64 是JDK8提出的一个新特性,可以用来进行按照一定规则编码和解码2.使用: 编码: 1.获取编码器 2.对数据进行编码 解码: 1.获取解码器 2.对数据进行解码3.Base64工具类提供给了一套静态方法获取三种Base64编解码器 基本:输出被映射到一组字符A-Za-z0-9+/,编码不添加任何行标,输出的...

2021-09-05 18:24:32 10509

原创 Java之方法引用

1.方法引用: 概述:使用格式是一对 冒号 :: 方法的引用就是用来在一定的情况下,替换Lambda表达式 2.方法引用使用场景: 1.如果一个Lambda表达式大括号中的代码和【另一个方法中的代码体一摸一样】 那么就可以使用方法引用把该方法引用过来,从而替换Lambda表达式 2.如果Lambda表达式的大括号中的代码是调用另一个...

2021-09-05 18:20:39 263

原创 Java之代理模式

1.静态代理目标: 能够使用动态代理 生成一个代理对象为什么需要代理: 生活中有很多代理的例子,比如,你要出国旅游,你又很麻烦于办签证,预定机票和酒店,租车 那么,我们可以选择旅行社帮我们去一条龙操作,这个时候旅行社就是我们的代理,而我们是被代理代理模式: 被代理者没有能力或者不愿意完成某件事情,就需要委托他人帮自己完成这件事,这个人就是代理者 所以,代理模式中包含了三个角色:被代理者【自己】、代理者【委托人】、抽象角色【协议】@案例: 张...

2021-09-05 16:44:20 90

原创 Java之元注解

1.@Target:常用的元注解一 表示该注解作用在什么位置上面 默认注解可以在任何位置@Target只有一个属性vlaue() 可以省略属性名,直接写属性值 属性值是一个枚举类型ElementType METHOD:方法 TYPE:类或者接口 FIELD:成员变量 CONSTRUCTOR:构造方法2.@Retention:常用元注解二 定义该注解保留到哪个代码阶段 只有一个属性value() 也是一个RetentionPolicy的枚举类型 SO...

2021-09-05 16:38:05 104

原创 Java注解

1.注解的概述: 是一种代码级别的说明。和类与接口属于平级关系 注解(Annotation):相当于一种标记,在程序中加入注解就等于为程序打上某种标记 以后,Java编译器,开发工具和其他程序可以通过反射来了解类以及各种元素上有没有标记,看你程序标记什么,就去做什么 我们目前为止了解过的注解: 1.@Oberride:子类重写父类方法的时候 编译的时候 2.@FunctionalInterface:函数式接口...

2021-09-04 20:01:18 66

原创 反射之构造方法,成员方法与成员变量

1.反射之操作成员方法: Method类概述 每一个成员方法都是一个Method对象 反射之操作成员方法的目的 操作Method对象来调用成员方法 使用: 1.如何通过反射获得类中的成员方法:Class类的方法 - public Method getMethod(String name, Class<?>... parameterTypes)...

2021-09-04 19:51:10 208

原创 类加载与Class类

1.类加载器: 概述:是负责将磁盘上的某个class文件读取到内存并生成Class对象 如何获取类加载器: 类的字节码对象.getClassLoader()2.Java中有三种类加载器,它们分别用于加载不同种类的class - 启动类加载器:用于加载系统类库 <java_home>\bin目录下的class,比如 .jar - 扩展类加载器:用于加载扩展类库 <java_home>\lib\ext目录下的c...

2021-09-03 21:36:38 221

原创 Java之Junit的使用

1.JUnit单元测试 概述:JUnit是Java语言编写的第三方单元测试框架(工具类) 作用:用来“单元测试”,针对某个普通方法,可以像main方法一样独立运行,它专门用于测试某个方法 使用步骤: 1.下载JUnit的jar包 2.拷贝JUnit的jar包到模块下的lib文件夹中,并添加到classpath中 3.编写测试方法 4.在测试方法上写一个 注解:@Test 执行测试...

2021-09-03 21:28:54 4255

原创 java之网络编程

1.java.net.InetAddress类 概述:一个该类的对象就代表一个IP地址对象 成员方法: - public static InetAddress getLocalHost():获取本机IP地址对象 - public static InetAddress getByName(String host):根据ip地址字符出啊或主机名称获得对应的ip地址对象 - String getHostNam...

2021-09-03 21:24:47 63

原创 Java之序列化及反序列化

1.序列化 反序列化Java提供了一种对象【序列化】的机制用一个字节序列可以表示一个对象:该字节序列包含该对象的数据,对象的类型和对象中存储的属性等信息 该字节序列写出到文件之后,相当于文件中 持久保存了一个 对象的信息反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化 对象的数据,对象的类型和对象的存储的属性等信息,都可以用来在内存中创建对象ObjectOutputStream 与 ObjectInputStream2.ObjectOutputSt...

2021-09-01 21:29:42 326

原创 Java之缓冲流

1.缓冲流: 字节流于字符流:属于IO流的入门,那么即将学习的是更强大的流 缓冲流:高效流,是在基本流对象的基础上创建而来的,就像普通人穿上铠甲一样,相当于对基础流的一种增强 就是对四个基本的FileXXX流的增强,所以缓冲流也分为四个流 按照类型来区分: 字节缓冲流:BufferedInputStream、BufferedOutputStream 字符缓冲流:BufferedReader、Buffer...

2021-09-01 21:20:50 180

原创 Properties类的使用

1.Properties类 概述:java.util.Properties类 继承于 Hashtable 特点: 1.Properties当成Map集合使用,键和值的类型为Object类型 2.Properties当成属性集是使用,键和值的类型为String类型 构造方法: - public Properties():创建一个空的属性列表 成员方法: - public synch...

2021-08-31 23:28:48 275 1

原创 java之流的处理

1.JDK7之前流的处理之前对于流的使用中,会涉及到异常抛出,这个是不允许的,因为一旦报错,程序就直接终止所有我们需要在内部将流的异常信息进行处理那么在JDK之前我们的处理方法是这样的:try...catch...finallypublic class Tests { public static String path = "day13_Properies类&缓冲流&转换流&序列化流&装饰者模式&commons-io工具包\\resources

2021-08-31 23:22:13 312

原创 IO流之字符输出与输入流

1.字符输入流【Reader】 java.io。Reader类:抽象类,表示用于读取字符流的所有类的超类,可以读取字符信息到内中 - public abstract void close():关闭此流并释放与此流相关联的任何系统资源 - public int read():从输入流读取一个字符,读取到末尾返回 -1 - public int read(char cbuf[]):从输入流中读取一些字符,并将他们存储到字符数...

2021-08-30 21:00:03 170

原创 IO流之字节输入与输出流

1.IO 概述:I:Input输入 从其他储存设备【读】数据到内存中 输入过程O:Output输入 从内存中【写】数据到其他存储设备 输出过程2.IO 分类: 1)根据数据的类型分为:【字节流】和【字符流】 【字节流】:以字节为基本单位,读写数据的流 字节输入流:以字节为基本单位,读数据 字节输出流:以字节为基本单位,写出数据 【字符流】:...

2021-08-30 20:48:06 520

原创 Java之递归

1.递归的概述: 生活中来说:例如父类工作 -- 挣钱 -- 供养孩子 -- 孩子长大 -- 孩子工作 -- 挣钱 -- 供养孩子 -- 孩子长大 -- 孩子工作 程序中来说: 是指当前方法内调用自己的这种现象2.注意事项: 1.递归一定要有出口,否则会报 栈内存溢出 StackOverflowError 2.递归出口晚了,还是会报 栈内存溢出public class Tests { public static void ma...

2021-08-29 21:52:24 70

原创 java之File类

1.File类概述:java.io.File类是文件和目录路径名称的抽象表示,主要用于文件和目录的创建、查找和删除等操作2.File类的构造方法: - public File(String pathname):通过将给定的路径名 字符串转换为抽象路径名 来创建新的File实例, ps:"D:\aaa" - public File(String parent,String child):从父路径 字符串 和 子路径 字符串 创建新的File实例 - public ...

2021-08-29 21:46:18 91

原创 Stream流常用方法

1.Stream流的常用方法: 终结方法:返回值类型不再是Stream接口本身类型的方法,例如:forEach方法和count方法 非终结方法/延迟方法:返回值类型仍然是Stream接口自身类型的方法,除了终结方法都是延迟方法。例如:filter,limit,skip,map,concat 方法名 方法的作用 方法的种类 是否支持链式调用 count...

2021-08-29 21:38:30 1779 10

原创 Stream流的引入

1.Lambda表达式:基于Lambda所带来的函数式编程,有引入了一个全新的Stream概念,用于解决集合类库既有的弊端2.需求:有一个List集合 1.将list集合中姓张的元素过滤到一个新的集合中 2.然后将过滤出来的姓张的元素,在过滤处长度为3的元素,存储到一个新的集合中public static void main(String[] args...

2021-08-27 22:04:50 287 1

原创 Lambda表达式

1.面向对象编程思想:强调的是【对象】。必须通过对象的形式来做一些事情,一般情况下会比较复杂,多线程执行任务,需要创建对象,对象需要实现接口Runnable2.函数编程思想: 函数需要的有输入量,输出量,使用输入量计算得到输出量,“拿什么东西做什么事”就是为了尽量忽略对象的复杂用法---强调做什么,而不是以什么形式做,同样线程执行任务,使用函数编程思想,可以直接通过传递一段代码给线程对象执行,不需要创建任务对象。函数...

2021-08-27 21:58:55 101

原创 死锁与线程等待和唤醒

1.死锁:1.有多把锁2.有多个线程3.有同步代码块嵌套在我们多线程程序中,使用了多把锁,造成线程之间互相等待,程序不往下走了【注意:应该尽量避免死锁】 4.死锁案列public class Tests { public static void main(String[] args) { // 线程1: 锁A、锁B 执行线程 new Thread(new Runna...

2021-08-27 21:45:41 280

原创 Java之线程池

1.线程池的概念线程池的思想:当我们使用线程的时候,就去线程池里获取一个线程来使用,使用完成之后不会销毁,而是可以继续去执行其他的任务我们之前都是在需要线程的时候去创建一个线程,这样使用非常方便,但是如果并发的线程数量很多的话,每个线程都可能就执行很短的时间就结束了,那么,这样频繁的创建线程就会大大的降低系统的效率,因为频繁创建和销毁线程需要时间所以我们需要【线程池】其实就是一个容纳很多个线程的容器,其中的线程可以反复使用,省去了频繁...

2021-08-26 22:48:32 88 1

原创 Exchanger的使用

Exchanger java.util.concurrent.Exchanger<V> 概述:用于线程间的数据转换 API: 构造方法: public Exchanger() 成员方法: V exchange(V x):传递参数,参数就是你要传递的数据,返回值就是其他线程传递给你的数据演示: 线程1:把【数据1】传递给线程2 线程2:把【数...

2021-08-26 22:42:08 153

原创 Semaphore(获取许可)

Semaphore - java.util.concurrent.Semaphore的主要作用时控制线程的并发数量 API: 构造方法: public Semaphore(int permits): permits 表示许可线程的数量 成员方法: public void acquire():表示获取许可 public void release():表示释放许可演示:超市开业,每次只能允许五名...

2021-08-26 22:40:17 100

原创 CyclicBarrier(屏障)

java.util.concurrent.CyclicBarrier 概述:CyclicBarrier的字面意思是可循环使用(cyclic)的屏障(barrier) 它要做的事情,是让一组线程到达一个屏障(也叫做同步点)时被阻塞, 直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续执行API: 构造方法: public CyclicBarrier(int parties , Runnable barrierAction)...

2021-08-26 22:37:48 156

原创 CountDownLatch 并发工具类

java.util.concurrent.CountDownLatch 允许一个或多个线程等待其他线程完成操作它的API: 构造方法: public CountDownLatch(int count) 初始化一个指定计数器的CountDownLatch对象 成员方法: - public void await() 让当前线程等待(当计数器的数值为0,那么等待结束) - pulic void countDown() 计数器进行 减 1 操作例如:线程1要执...

2021-08-26 22:34:55 68

原创 CopyOnWriteArrayList、Set与ConcurrenHashMap

1.CopyOnWriteArrayList演示 ArrayList线程不安全: 两条线程都往ArrayList集合中添加10万个元素public class MyThread1 extends Thread{ //共享变量 static ArrayList<Integer> list = new ArrayList<>(); @Override public void run() { // 任务:往集合中添加100000个

2021-08-26 22:31:06 77

原创 AtomicInteger类

1.AtomicInteger类Atomic 关键字 这个关键字不存在java.util.concurrent.atomic 包路径下 定义了一些对【变量】操作的【原子类】- java.util.concurrent.atomic.AtomicInteger: 对int类型变量操作的【原子类】- java.util.concurrent.atomic.AtomicLong: 对long类型变量操作的【...

2021-08-26 22:21:17 209

原创 Java之volatile

1.volatile可以解决可见性 解决办法,使用volatile关键字修饰共享变量 当共享变量被修饰为volatile时,就会迫使线程每次使用此变量,都会区主内存获取,保证其可见性 volatile关键字只能修饰 【成员变量】 volatile关键字可以解决变量的可见性 、有序性public class MyThread extends Thread{ // 共享变量(主线程和子线程共享) volatile static boolean ...

2021-08-26 22:14:01 71

原创 Java多线程运行机制与多线程的安全性问题

1.多线程运行机制: 1.当一个线程启动后,JVM会为其分配一个独立的 【线程栈区】 这个线程在这个独立的栈区中运行 2.线程的调度就是抢占式public class MyThread extends Thread{ @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("小强的第...

2021-08-25 22:04:49 130 1

原创 Java之线程安全

1.线程安全问题:需求:模拟火车票100张 售票窗口分析: 1.售票窗口使用线程来模拟 2.开4个窗口同时卖100张票 3.4个窗口卖票的任务是一样public class MyRunnable implements Runnable { int tickets = 100; @Override public void run() { while (true){ if (tickets &l...

2021-08-25 21:54:00 97

原创 Java创建线程的方式及Thread线程的API

创建线程方式一:继承Thread类1.创建子类继承Thread类2.在子类中复写run方法,把线程需要执行的任务代码放在run方法中3.创建子类线程对象4.调用start方法启动线程,执行任务代码MyThread类/** 继承Thread类* */public class MyThread extends Thread{ /* * 覆写run方法 * */ @Override p...

2021-08-25 21:40:25 120

原创 Java线程与进程

1.进程:进程是程序的一次执行过程,是系统运行程序的基本单位系统运行一个程序即是一个进程从创建、运行、到消亡的过程每个进程都有一个独立的内存空间,一个应用进程可以同时运行多个进程【进程 其实就是应用程序的可执行单位.exe文件】【每个进程都有一个独立的空间,一个应用程序可以同时运行多个进程】2.线程:是进程的执行单元,负责当前进程中程序的进行,一个程序中至少有一...

2021-08-25 21:31:44 278

原创 Java之异常(下)

1.Throwable获取异常信息的方法:- public String getMessage():获取异常的描述信息,(提示用户的时候,提示具体错误原因)- public String toString():获取异常的类型和异常描述信息(一般不会使用)- public void printStackTrace():打印异常的跟踪栈信息并输出到控制台System.out.println("开始");try { System.out.println(1/0);} catch (Exc

2021-08-24 21:58:09 64

原创 Java之异常(上)

1.异常的概述:1.1、异常:指的是程序在执行过程中,出现的非正常的情况,最终导致JVM的非正常停止1.2、注意:1.在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象2.java处理异常的方式是 中断处理(直接终止程序运行,把异常信息打印到控制台)1.3、异常的继承体系:异常的根类是 java.lang.Throwable:所有错误或异常的父类...

2021-08-24 21:43:12 134

转载 Java之二分查找详解

1.普通查找:首先要遍历数组,获取每个元素,判断当前遍历的元素是否和要查找的元素相同,相同的话就返回该元素的索引,没找到,手动返回 -12.二分查找:每一次都去获取数组的中间索引对应的元素,然后和要查找的元素进行比对,如果相同返回索引,如果不同,就比较中间元素和要查找的元素的值如果中间元素的值 【大于】 要查找的元素,说明要查找的元素在左侧,那么就从左侧按照上述思想继续查询(右侧数据忽略)如果中间...

2021-08-24 21:22:47 93

原创 Java之冒泡排序与选择排序

1.冒泡排序:一种排序规则,对要进行排序的数据中【相邻的数据进行两两比较,将较大的数据放在后面】,依次对所有的数据进行操作,直至所有数据按要求完成排序代码演示 public static void main(String[] args) { int[] arr = {32,213,45,765,43}; // 外层循环控制轮数 for (int i = 0; i < arr.length-1; i++) { ...

2021-08-23 19:56:28 812

Dem4j集合XPath解析XML

XML节点访问的路径表达式【相对路径】和【绝对路径】的匹配原则,Dem4j集合XPath解析XML

2021-09-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除