下面将介绍CountDownLatch的使用及原理解析。 1....使用演示 public class CountDownLatchTest { private static CountDownLatch countDownLatch = new CountDownLatch
下面分享几个案例: 电子书网站爬虫实践 groovy爬虫实例——历史上的今天 爬取720万条城市历史天气数据 记一次失败的爬虫 Java正则 里面用到了一个Java的正则工具类,算是写了Java的正则Demo...return Pattern.compile(regex).matcher(text).find(); } /** * 正则校验文本是否完全匹配,不包含其他杂项,相当于加上了^和$..., e); } finally { return result; } } } Groovy正则 首先来讲,Groovy完全可以使用Java...的正则语法,上面的正则工具类完全适用于Groovy脚本,我的爬虫Demo里面基本上也都是在Groovy脚本里面直接使用的这个工具类。...*test\w+/,专指正则表达式,使用收尾都加上/而不是"。
CyclicBarrier使用场景 现实生活中我们经常会遇到这样的情景,在进行某个活动前需要等待人全部都齐了才开始。...这种场景就可以用CyclicBarrier来实现,下面将介绍其使用方法和实现原理。 1....使用方法 public class CyclicBarrierTest { static CyclicBarrier cyclicBarrier = new CyclicBarrier(3);
Semaphore是一个计数信号量,底层依赖AQS和CAS来实现,可用来做限流。...使用 public class SemaphoreTest { static Semaphore semaphore = new Semaphore(2); // 限制只有2个信号量
介绍 javac 、 java、javadoc 命令的用法 一、创建类:HelloWorld.java 这里要注意 package,因为运行的时候要根据这个 package 去运行主函数 我的 HelloWorld.java...在文件系统中的位置 D:\workspaceVideo\learnJava\src\com\qicong\HelloWorld.java !.../rongkkboke.com/view.php/718fe3b33f753b2e310c34f78dd35c3d.png) 二、javac 命令进行编译 在 cmd 中,进入 HelloWorld.java....class 文件就编译好了,然后运行即可 三、java 命令运行 HelloWorld.class 文件 因为 HelloWorld.java 是在 com.qicong 这个包里面的,要通过包名来执行...java源码文件 的对应文档 javadoc -encoding utf-8 HelloWorld.java
主要介绍LockSupport的park和unpark方法 1....3)park/unpark不用持有锁,将锁和通知模型分离,逻辑更清晰。 另外注意: 可以先执行unpark,再执行park操作,类似于生产/消费模型。...源码分析 LockSupport底层使用UNSAFE类进行操作,UNSAFE类均是使用native方法。 public class LockSupport { ......使用样例 public class LockSupportTest { private static Thread thread = new Thread(new MThread());
day04_java基础 课程目标 1. 【掌握】 IDEA的基本使用 2. 【理解】 什么是数组 3. 【掌握】 数组的定义及初始化 4. 【理解】 数组的内存图 6....Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。 java中的内存分配 目前我们只需要记住两个内存,分别是:栈内存和堆内存 区域名称 作用 寄存器 给CPU使用,和我们开发无关。...本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。 方法区 存储可以运行的class文件。 堆内存 存储对象或者数组,new来创建的,都存储在堆内存。...方法栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行,局部变量都在栈内存中。...-1 交换 把1索引和arr.length-2 交换 把2索引和arr.length-3 交换 只要做到arr.length/2 即可 ,只做一半,不然又调回来了 代码实现 public static
Add the rest of the accessors and mutators and you’re now a certified Java newbie. Good luck.
1.什么是方法 方法就是一个代码片段,类似于C语言中的”函数“,它的作用为: 能够模块化地组织代码 能做到代码的重复使用,一份代码可以在多个位置使用 让代码更好理解 直接调用现有方法开发,效率更高...方法体:方法内要执行的语句 在Java中,方法必须写在类当中 在Java中,方法不能嵌套定义 在Java中,没有方法声明的说法 2.形参和实参的关系 方法的形参相当于函数中的自变量,比如: Java中方法形参就相当于...原因:实参a和b是main方法中的两个变量,其空间方法的栈(一些特殊的内存空间)中,而形参x和y是swap方法中的两个变量,x和y的空间在swap方法运行时的栈中,因此:实参a和b与形参x和y是两个没有任何关联性的变量...,在swap方法调用时,只是将实参a和b中的值拷贝了一份传递给了形参x和y,因此对形参x和y操作不会对实参a和b产生任何影响。...3.方法重载 概念:在Java中,如果多个方法名字相同,参数列表不同,则称该几种方法重载了。
参考链接: Java注解 Java 注解(Annotation)又称为 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。...和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。...Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 (通过 解析注解 来使用这些数据)。 它也支持自定义 Java 标注。 ...如果使用该方法,会报编译警告。@SuppressWarnings - 指示编译器去忽略注解中声明的警告。 元注解是java API提供的,是用于修饰注解的注解,通常用在注解的定义上。...使用Annotation 要获取类、方法和字段的注解信息,必须通过类的Class对象来获取 Annotation对象,除此之外没有别的获取注解对象的方法。
-- spring升级后此配置已失效 会报错 java.net.SocketAddress"> --> java.net.SocketAddress" value="org.apache.mina.integration.beans.InetSocketAddressEditor...org.apache.mina.filter.logging.MdcInjectionFilter"> 页面的代码片段,前端使用的是
以下是一个使用OkHttp和Java来下载内容的下载器程序,同时使用了jshk.com.cn/get\_proxy来获取代理服务器。请注意,为了简化代码,我们将忽略一些异常处理和安全性检查。...```javaimport java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.net.Proxy...;import java.net.URL;import java.nio.charset.StandardCharsets;import java.nio.file.Files;import java.util.concurrent.TimeUnit... System.out.println("下载失败:" + e.getMessage()); } }}```这个程序首先创建一个OkHttpClient实例,并设置了连接超时和读取超时时间...然后使用OkHttpClient实例的newCall方法发送请求,并使用execute方法执行请求。如果请求成功,则将返回的内容保存到一个名为output.html的文件中。
1、枚举类使用情况一: 1 package com.bie.util; 2 3 import java.util.HashMap; 4 import java.util.Map;...53 //加强for循环进行遍历操作 54 for(LoginResult lr : values){ 55 //如果遍历获取的type和参数...100 System.out.println(LoginResult.getResultEnumByType(0)); 101 102 //将type和desc...5 * @author biehl 6 * 7 * @date 2018年8月2日下午3:38:28 8 * 9 * @Notes REGISTER("注册"),这种类型的枚举可以使用在调用此枚举类然后使用...: 1 package com.bie.util; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public
在 java 中,我更加愿意认为 lambda 实际上是是包着一个函数的对象,我们在使用 lambda 表达式的时候,实际上定义了一个闭包的函数对象,这是 lambda 最大的意义所在。...lambda 传参数和返回值 和 Runnable 接口一样,JDK 还给我们带来了几个比较常见的接口:如 Consumer 接口 和 Supplier 接口 // 这个接口的特点是,有一个参数,无返回值.../io/PrintStream.println:(Ljava/lang/String;)V 8: return } 所以,在使用层面,lambda 中的 this 就是主类的 this,和主类的函数没有太大区别...JDK 数据结构中使用 lambda JDK 中的数据结构 加入的 支持 lambda 的方法列表: 接口名 Java8 新加入的方法 Collection removeIf() spliterator...的实现方式 map.computeIfAbsent(1, v -> new HashSet()).add("yi"); 使用computeIfAbsent()将条件判断和添加操作合二为一,使代码更加简洁
1.前言 在Java编程中,数组是一种非常重要的数据结构,它允许我们存储多个值在一个单一的变量中。本文将深入探讨Java数组的基本概念、创建和使用方法,以及如何处理常见的数组问题。...在有些版本的JVM实现中(例如HotSpot),本地方法和虚拟机是在一起的 堆:JVM所管理的最大内存区域,使用new创建的对象都是在堆上保存,堆是随着程序开始运行时而创建,随着程序的退出而销毁,堆中的数据只要还有在使用...统一性:Java中的所有数据类型都可以看作是对象,包括基本类型和包装类。...这使得Java的类型系统更加统一,因为所有的类型都遵循相同的规则和操作 性能优化:引用类型允许JVM进行优化,例如延迟初始化和垃圾回收。这些优化有助于提高性能和资源利用率。...小结:Java的数组作为引用数据类型,不仅提供了更大的灵活性和内存管理的便利,而且与Java的整体面向对象的设计理念相契合。
stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java 容器或 I/O channel 等。 为函数式编程而生。...通常在三种情况下collect()的结果会是Map: 使用Collectors.toMap()生成的收集器,用户需要指定如何生成Map的key和value。...情况 1:使用toMap()生成的收集器,这种情况是最直接的,前面例子中已提到,这是和Collectors.toCollection()并列的方法。...Java 类库设计者也考虑到了这种情况,增强版的groupingBy()能够满足这种需求。增强版的groupingBy()允许我们对元素分组之后再执行某种运算,比如求和、计数、平均值、类型转换等。...Optional.ofNullable(text).ifPresent(System.out::println); 从 reduce 等 stream 终结函数返回 2) 检查 Optional 是否为空,一般和三元符配合使用
JAVA SPI 简介 SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface。...根据 Java 的 SPI 规范,我们可以定义一个服务接口,具体的实现由对应的实现者去提供,即服务提供者。然后在使用的时候再根据 SPI 的规范去获取对应的服务提供者的服务实现。...通过 SPI 服务加载机制进行服务的注册和发现,可以有效的避免在代码中将服务提供者写死。从而可以基于接口编程,实现模块间的解耦。...SPI 机制的约定 1 在 META-INF/services/ 目录中创建以接口全限定名命名的文件,该文件内容为API具体实现类的全限定名 2 使用 ServiceLoader 类动态加载 META-INF...package org.louis.test; import java.util.Iterator; import java.util.ServiceLoader; import org.louis.spi.test.People
XML(可扩展标记语言)是一种常用的数据交换格式,它被广泛用于在不同系统之间传递和存储数据。Java作为一种强大的编程语言,提供了多种方式来处理XML数据。...其中,Jsoup 是一个流行的Java库,用于解析和操作XML文档。本篇博客将详细介绍如何使用Java和Jsoup来处理XML数据,无论您是初学者还是有一定经验的开发者,都能受益匪浅。...Jsoup 是一个用于解析HTML和XML文档的Java库。尤其在网页抓取、数据提取和文档处理方面非常强大。它提供了一种简单的方式来遍历、搜索和修改文档树,使得XML处理变得非常容易。...总结 本篇博客介绍了如何使用 Java 和 Jsoup 来解析和处理XML数据。我们了解了如何加载、解析和操作XML文档,以及如何使用查询和选择功能来提取特定元素。...希望这篇博客对您有所帮助,让您更好地掌握如何在Java中处理XML和HTML数据。如果您有任何问题或需要进一步的指导,请随时提问。祝您在XML和HTML数据处理中取得成功!
B.class和B.java 如果同时找到了B.class和B.java,则: •如果B.class和B.java内容一致,则遵循B.class。...-source和-target •-source:使用指定版本的JDK编译,比如:-source 1.4表示用JDK1.4的标准编译,如果在源文件中使用了泛型,则用JDK1.4是不能编译通过的。...使用javac构建项目 这部分参考: https://blog.csdn.net/mingover/article/details/57083176 一个简单的javac编译 新建两个文件夹,src和...情况下,很少有人使用javap对class文件进行反编译,因为有很多成熟的反编译工具可以使用,比如jad。但是,javap还可以查看java编译器为我们生成的字节码。...如果没有使用options,那么javap将会输出包,类里的protected和public域以及类里的所有方法。javap将会把它们输出在标准输出上。来看这个例子,先编译(javac)下面这个类。
本文eclipse的使用是在JDK安装配置完成的基础上进行的,否则Eclipse安装后可能无法运行程序。...JDK的安装配置可以参考文章:Java基础--JDK的安装和配置 一、安装 1.1 下载、安装 eclipse软件是免安装的,就是只需要下载对应的安装包解压即可使用。...开发可以选择下图2中红框中标识的Java EE和Java SE版本对应的eclipse。...项目表示了一系列相关的文件和设置(例如类路径,编译器级别,发布路径等等的设置)。一般来说目录下的.project和.classpath这两个文件描述了当前项目的信息。...在Eclipse启动的时候会让你选择要使用的工作区。如果输入的工作区目录不存在,Eclipse会自动创建它。