
Java基础
武汉小喽啰
我就是我,颜色一样的焰火。。。。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java NIO的认识
1.原创 2020-05-24 16:30:13 · 233 阅读 · 0 评论 -
JDK8新特性12——接口中的默认方法与静态方法
1. 默认方法 Java8中允许接口中包含具有具体实现的方法,该方法称为“默认方法”,默认方法使用default关键字修饰。例如:public interface MyIn { default String getName() { return "inter"; }}接口中的默认方法遵循“类优先原则”,什么的类优先原则了:若一个接口中定义了一个默认方法,而另外一个父类或接口中又定义了一个同名的方法的时候1)选择父类中的方法,如果一个父类提...原创 2020-05-13 21:53:26 · 191 阅读 · 0 评论 -
JDK8新特性11——重复注解与类型注解
1. 重复注解——@Repeatable 自从JDK5中引入注解以来,注解变得非常流行,并在各个框架和项目中被广泛使用,不过注解有一个很大的限制,在同一个地方不能多次使用同一个注解。JDK8引入了重复注解的概念,允许在同一个地方多次使用同一个注解。在JDK8中使用@Repeatable注解定义重复注解。1.1 使用步骤1.1.1 定义重复的注解容器注解——@Retenti...原创 2020-02-24 21:48:38 · 468 阅读 · 0 评论 -
JDK8新特性10——日期和时间API
1. 旧版本日期和时间API存在的问题1)设计差:在java.util和java.sql的包中都包含了日期类,java.util.Date同时包含日期和时间,而java.sql.Date仅包含日期。此外,用于格式化和解析的类在java.text包中定义2)非线程安全:java.utl.Date是非线程安全的,所有的日期类都是可变的,这是java日期类最大的问题之一3)时区处理麻烦:日期...原创 2020-02-24 14:02:24 · 601 阅读 · 0 评论 -
JDK8新特性9——Optional类
Optional是一个没有子类的工具类,Optional是一个可以为null的容器对象。它的作用主要是为了解决避免NUll检查,防止空指针异常。1. Optional类的创建方式1)Optional.of(T t):创建一个Optional实例注意:of只能传入具体值,不能传入null,否则会抛空指针异常2)Optional.empty():创建一个空的Option...原创 2020-02-23 23:24:22 · 496 阅读 · 1 评论 -
JDK8新特性8——并行流与Fork/join框架
前面介绍的stream流都是串行的流,就是在一个线程上执行。接下来介绍获取并行流的两种方式1. 直接获取并行流——parallelStreamparallelStream其实就是一个并行执行的流,它通过默认的ForkJoinPool,可以提高多线程任务的执行速度。例如:List<String> list = new ArrayList<>();Strea...原创 2020-02-22 17:57:37 · 956 阅读 · 0 评论 -
JDK8新特性7——收集Stream流中的结果到数组和集合
目录1. 收集Stream流中的结果到集合1.1 收集到List集合——toList1.2 收集到Set集合——toSet1.3 收集到指定集合2. 收集集合中的数据到数组中2.1 转成Object数组——toArray2.2 转成指定类型的数组——toArray3. 对流中的数据的操作3.1 对流中的数据进行聚合计算3.1.1 获取最大值——Coll...原创 2020-02-22 15:10:14 · 6313 阅读 · 0 评论 -
JDK8新特性6——集合的Stream流式操作
1. Stream流式思想概述 Stream流式思想类似于工厂车间的“生产流水线”,Stream流不是一种数据结构,不保存数据,而是对数据进行加工处理。Stream可以看做是流水线上的一道工序,在流水线上,通过多个工序让一个原材料加工成一个商品。Stream流能够让我们能够快速的完成许多复杂的操作,如筛选、切片、映射、查找、去重、统计、匹配和规约等。注意:Stream...原创 2020-02-22 12:45:56 · 882 阅读 · 0 评论 -
JDK8新特性5——Lambda表达式方法引用
双冒号(::)运算符在Java 8中被用作方法引用(method reference),方法引用是与lambda表达式相关的一个重要特性。它提供了一种不执行方法的方法。为此,方法引用需要由兼容的函数接口组成的目标类型上下文。 方法引用可以理解为是让指定的方法去重写接口的抽象方法,到时候调用接口的抽象方法就是调用传递的这个方法例如:我们可以将方法getSum传递...原创 2020-02-21 13:49:07 · 630 阅读 · 0 评论 -
JDK8新特性3——函数式接口
1. JDK8接口新增的两个方法jdk8之前的接口interface 接口名 { 静态常量; 抽象方法}JDK8对接口的增强,接口还可以有默认方法和静态方法JDK8接口:interface { 静态常量; 抽象方法; 默认方法; 静态方法;}1.1 接口默认方法1.1.1 定义格式interface 接口名{...原创 2020-02-21 13:48:38 · 237 阅读 · 0 评论 -
JDK8新特性4——常用内置函数接口
1. 实现原理1.1 探究过程用反编译工具无法反编译带有Lambda表达式的class文件,这时候我们需要使用java自带的反编译工具javap指令在dos命令行输入:javap -c -p 文件名.class-c 表示对代码进行反汇编-p 显示所有类和成员通过反编译class文件,可以知道,Lambda表达式会在这个类中新生成一个私有的静态方法,该方法命名规则为:...原创 2020-02-21 13:38:53 · 475 阅读 · 0 评论 -
JDK8新特性1——Lambda表达式引入
首先看一个例子,有一个Apple类,有两个属性,color与weight,我们需要在一个List集合中找到找到color=green的所有的Apple。package com.bjc.demo1;public class Apple { private String color; private Long weight; public Strin...原创 2020-02-03 23:37:24 · 165 阅读 · 0 评论 -
Tomcat12——tomcat性能
1. tomcat性能测试 对于系统性能,用户最直观的感受就是系统的加载时间和操作时间,即用户执行某项操作的耗时。从更专业的角度上讲,性能可以从两个指标量化:1)响应时间:为执行某个操作的耗时,大多数情况下,我们需要针对同一个操作测试多次,以获取操作的平均响应时间。2)吞吐量:即在给定的时间内,系统支持的事务数量,计算单位为TPS。通常情况下,我们需要借助一些自动化工...原创 2020-01-29 22:40:07 · 1049 阅读 · 0 评论 -
JDK8新特性2——Lambda表达式
1. 简介 Lambda表达式体现的是一种函数式的编程思想,区别于之前的匿名内部类,Lambda表达式只需要将要执行的代码放到一个函数中,函数就是类中的方法,Lambda表达式就是一个匿名函数,所以我们只需要将要执行的代码放到Lambda表达式中。 使用Lambda可以简化匿名内部类,让代码跟精简,同时,运行效率更高。 我们可以这么认为,Lam...原创 2020-02-01 13:59:55 · 323 阅读 · 0 评论 -
Spring任务调度——SpringTask
在spring中使用定时很简单,首先需要在配置文件中加上task的命名空间xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/sc...原创 2020-01-22 21:34:24 · 388 阅读 · 0 评论 -
定时器3——定时框架Quartz2
1. 资源SchedulerFactory1.1 介绍 Quartz以模块方式架构,因此,要使它运行,几个组件必须很好的咬合在一起,幸运的是,已经有了一些现存的助手可以完成这些工作,所有的Scheduler实例由SchedulerFactory创建。 Quartz的三个核心概念:调度器、任务、触发器,三者之间的关系SchedulerFactory ——&...原创 2020-01-13 21:54:58 · 1902 阅读 · 0 评论 -
java5中的线程并发库——同步集合
1. 可阻塞队列——BlockingQueue 队列包含固定长度的队列与不固定长度的队列。 BlockingQueue是一个接口,它支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。1.1 API1.1.1 插入1. add(e):当队列已满的时候,用add就会抛异常2. offer(e):...原创 2020-01-09 20:48:17 · 169 阅读 · 0 评论 -
定时器2——定时框架Quartz1
1. Quartz的几个常用API1.1 Scheduler——与调度程序交互的主程序接口 Scheduler调度程序任务执行计划表,只有安排进行执行计划的任务job(通过scheduler.schedulerjob方法安排进行执行计划),当它预先定义的执行时间到了的时候(任务触发trigger),该任务才会执行。Scheduler scheduler = StdSch...原创 2020-01-03 23:13:19 · 975 阅读 · 0 评论 -
java5中的线程并发库
在java.util.concurrent包及其子包中1.原子性操作类java提供了很多原子性的操作类供我们使用,支持在单个变量上解除锁的线程安全编程。1.1AtomicInteger类可以用原子方式更新的 int 值,当多个线程共享一个int类型的数据的时候,我们就可以将该变量声明为AtomicInteger类型的。1.1.1addAndGet(int delta)...原创 2020-01-02 21:41:53 · 304 阅读 · 0 评论 -
定时器1
1. 传统定时器1.1 Timer1. 让程序10秒之后执行Timer timer = new Timer();timer.schedule(new TimerTask() { @Override public void run() { System.out.println("开始打印。。。"); }}, 10000);2. 让程序10秒之后执行,然后没3秒执行一次...原创 2020-01-01 14:26:30 · 923 阅读 · 0 评论 -
java设计模式
1. 代理模式1.1 代理的概念 要为已存在多个具有相同接口的目标类的各个方法增加一些系统的功能,例如:异常处理、日志、计算方法的运行时间、事务管理等等。这时候我们可以编写一个与目标类具有相同接口的代理类,代理类的每个方法调用目标类的相同方法,并在调用方法时加上系统功能代码。1.2 JDK动态代理——ProxyJVM可以在运行期动态的生成类的字节码,这种动态生成的类往...原创 2019-12-12 21:28:26 · 91 阅读 · 0 评论 -
类加载器
1. 介绍简单来讲,类加载器就是加载类的工具。2. JVM默认的类加载器 JVM中可以安装多个类加载器,系统默认的主要有三个类加载器,每个类负责加载特定位置的类。 在java虚拟机中的所有的类加载器采用具有父子关系的树形结构进行组织,在实例化每个类加载对象时,需要为其指定一个父级类加载器对象或者默认采用系统类装载器为其父级类加载器。如何通过代码证明类...原创 2019-11-28 23:29:48 · 129 阅读 · 0 评论 -
JDK7特性
1. 二进制字面量二进制字面量也就是可以在java代码中通过二进制的形式来表示,用0b开头例如:在控制台打印出6public static void test1(){ System.out.println(0b110);}2. 数字字面量可以出现下划线我们通常表示比较大的数值的时候,会三位为一组,用逗号隔开,但是在java中不能这样做,在jdk1.7之后,可以用下划线来代...原创 2020-01-26 21:25:22 · 259 阅读 · 0 评论 -
BeanUtils与propertyUtils操作javaBean
1. BeanUtils是一套操作JavaBean的工具,其思想是以字符串的形式进行对JavaBean进行操作。使用BeanUtils工具包,需要的jarcommons-beanutils.jarcommons-logging.jar1.1 获取属性值System.out.println(BeanUtils.getProperty(person,"address"));...原创 2019-11-23 21:58:58 · 297 阅读 · 0 评论 -
反射
1. 概述反射就是把java类中的各种成分映射成相应的java类。1.1 类的加载概述当程序要使用某个类的时候,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化三步来实现对这个类进行初始化1.1.1 加载就是指将class文件读入内存,并为之创建一个Class对象,任何类被使用的时候,系统都会建立一个Class对象1.1.2 连接连接分为三步:1. 验证:...原创 2019-11-24 23:15:13 · 257 阅读 · 0 评论 -
JDK5特性介绍
1. 静态导入import 语句可以导入一个类或者某个包中的所有类。import static语句导入一个类中的某个静态方法或所有的静态方法。语法import static 包名.类名.静态方法名或者import static 包名.类名.*例如:我们用到Math类中的abs等静态方法,都需要使用Math.来调用,我们就可以使用静态导入Math中的方法,就可以省略Mat...原创 2019-11-24 22:38:21 · 195 阅读 · 0 评论 -
java基础2——数组
1. 数组的定义1.1 格式一元素类型[] 数组名 = new 元素类型[元素个数或数组长度];例如:int[] arr = new int[5];1.2 格式二:元素类型[] 数组名 = new 元素类型[]{元素,元素,……};例如:int[] arr = new int[]{3,5,1,7}; int[] arr = {3,5,1,7};...原创 2019-07-01 22:29:30 · 545 阅读 · 0 评论 -
java基础1——java初识
1. 常见的doc命令盘符: 进入指定的盘符下。 dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录 注意:rd不能删除非空的文件夹,而且只能用于删除文件夹。 cd : 进入指定目录 cd.. : 退回到上一级目录 cd \ : 退回到根目录 echo "hello java">a.txt...原创 2019-06-26 22:43:42 · 154 阅读 · 0 评论 -
java基础3——类和对象
1.面向对象三大特征封装(encapsulation)继承(inheritance)多态(polymorphism)开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。设计的过程:其实就是在管理和维护对象之间的关系2匿名对象1. 匿名对象设置的属性永远无法获取? 没有引用变量指向那个对象。2.任何两个匿名对象使用==比较,永远返回false3....原创 2019-07-09 23:58:01 · 107 阅读 · 0 评论 -
java基础4——几个重要的API之String类
1. String类1.1 字符串的比较注意:栈内存、堆内存、常量池的不同1.2 获取方法1. int length() 获取字符串的长度2. char charAt(int index) 获取特定位置的字符 (角标越界)3. int indexOf(String str) 获取特定字符的位置(overload)4. int lastIndexOf(int ch) 获...原创 2019-07-14 23:18:04 · 103 阅读 · 0 评论 -
java基础9——几个重要的API之迭代器Iterator
1. 体系结构---| Itreable 接口 实现该接口可以使用增强for循环 ---| Collection 描述所有集合共性的接口 ---| List接口 可以有重复元素的集合 ---| Set接口 不可以有重复元素的集合2. 常用API...原创 2020-03-13 09:29:35 · 491 阅读 · 1 评论 -
java基础5——正则表达式
1. 概述其实一种规则,有自己特殊的应用,其作用就是针对于字符串进行操作,就是用于操作字符串的规则,其中这些规则使用了一些字符表示2. 正则表达式的符号2.1预定义字符类 . 任何字符(与行结束符可能匹配也可能不匹配) \d 数字:[0-9] ...原创 2019-07-16 23:29:02 · 588 阅读 · 0 评论 -
java基础6——Runtime类
Runtime 类主要描述的是应用程序运行的环境原创 2019-07-16 23:30:07 · 121 阅读 · 0 评论 -
java基础7——几个重要的API之Date类
1.SimpleDateFormat的用法2. 日历的用法3. 日期转换器原创 2019-07-16 23:31:48 · 146 阅读 · 0 评论 -
java基础8——几个重要的API之集合类
1. 集合框架体系 ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, 查找快, 增删慢 由于是数组实现, 在增和删的时候会牵扯到数组增容, 以及拷贝元素. ...原创 2019-07-17 23:38:37 · 218 阅读 · 0 评论 -
HTTPClient学习
1. HttpClient简介 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。2.HttpClient 提供的主要的功能(1)实现了所有 HTTP 的方法(GET,POST,PUT,DELETE等)(2)支持...原创 2019-06-20 22:44:00 · 170 阅读 · 0 评论