-------5.1. Java基础知识
文章平均质量分 54
在风中的意志
这个作者很懒,什么都没留下…
展开
-
[Java基础] Java8的Function函数及其使用
前言我们本期主要介绍下Java8的新特性, Function函数. 废话不多说, 我们直接进入正题部分.PS: 上海现在多数处于在家办公的状态. 自己的时间也稍微多了一点.Function函数列表Function函数, 是Java仿照Scala等语言, 函数可以传递的特性, 而提供的一种新的功能. 其提供的类基本都是处于java.util.function下.相关列表序号 接口 & 描述BiConsumer<T,U>代表了一个接受两个输入参数的操作,并且不返回任何原创 2022-03-13 23:39:19 · 15361 阅读 · 0 评论 -
[Java基础] 2个Pair工具类比较
前言之前再开发过程中, 发现有2个Pair类, 2个Pair类之间还是有一些差别和联系的, 将考究内容记录于此.PS: 后续, 我们可以探究下Tuplate 三元组和多元组.Pair类解析javafx.util.Pair Java原生Pair类基本使用Demo.package com.yanxml.util.pair.demo;import javafx.util.Pair;/** * Pair 相关使用. Demo1 * @author seanYanxml * @date 2原创 2022-02-27 23:54:00 · 3161 阅读 · 1 评论 -
[Java基础]计算字符串数组内数组总长 (StringUtils.join & StringBuilder.append)
前言最近在开发的时候, 需要计算一个String数组, 拼接后的长度. 本来是准备自己写了一个简单的工具类, 计算长度. 经过同事的提醒, 发现还有这样一个好用的工具类.方法一public static int calculateStrJoinLengthOfListMethod1(List<String> strList){ if(CollectionUtils.isEmpty(strList)){ return 0; } return StringUtils.join(st原创 2022-02-20 23:58:47 · 1134 阅读 · 0 评论 -
[Java基础] Arthas trace命令及使用
前言在我们使用过程中. 我们有一些请求比较慢, 我们怎么进行定位呢? 最近发现一个很好用的, arthas中trace命令.使用基本常用的Trace软件CatSkyWalking常用的小工具Arthas traceReference原创 2021-10-03 22:03:51 · 1591 阅读 · 0 评论 -
[Java8] lamda表达式及Stream API一览
前言不知道从什么时候开始. Java8开始刮起了一阵妖风. 那就是lamda表达式. 也叫函数式编程, 大概是和隔壁的Scala进行学习吧. 但是Java8也是甲骨文最后一个免费的版本. 大概率, 很多的中小型公司都会选择停留在这个版本. 虽然这个版本没有ZGC垃圾回收, 但是面对10G-100G左右内存规模的程序, 也应该够了.初识lamda表达式lamda表达式最大的特性就是简化了for循环的编写方式. 多说无益, 我们举个例子进行编写吧.for循环写法List<Integer&g原创 2021-09-26 23:56:31 · 358 阅读 · 0 评论 -
[Java基础] 空指针判断与鸡肋的Optional.of()
前言在开发过程中. 我们经常会遇到NullPointerException异常.相关校验办法为了避免触发NullPointerException异常. 我们在调用对象内的属性和方法时, 经常会进行空指针的判断.List tmpList = null;简单的判断if(null == tmpList){ return; }tmpList.get(0);使用工具的判断if(ObjectUtils.isNull(tmpList)){ return;}tmpList.get(原创 2021-09-19 23:29:17 · 1095 阅读 · 1 评论 -
[Java基础] 如何对List进行(交集/并集/补集)运算
前言前几天. 工作中用到了List的交集, 并集, 补集. 运算. 之前有封装过相关的List工具类. 在此, 再次总结一下.List 的交集/并集/补集 运算(原生方法)交集 /** * 交集. * 注意直接使用 retainAll方法会改变原数据集合. 需要拷贝使用. */ public static <T> List<T> intersection(java.util.List<T> listA, List&l原创 2021-09-12 23:51:08 · 668 阅读 · 0 评论 -
[Java 基础] 如何更新注解属性值?
前言在日常开发中. 有时候会需要自定义框架的一些注解, 达到自己希望的目的. 本文主要介绍2个方面:如何自定义注解和使用注解如何更新已经存在注解的属性值Spring AOP与注解的使用(见下一篇文章)什么是注解注解是JDK 1.5新增的一个特性.Reference[1]. https://blog.csdn.net/u014750606/article/details/79977114...原创 2021-09-05 23:49:42 · 257 阅读 · 0 评论 -
[lombock] 标签及相关使用
前言总结一下. lombock包提供的标签.常用标签(Lombok features)记录一下开发中使用的标签.@DataAll together now: A shortcut for @ToString, @EqualsAndHashCode, @Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor!看介绍可以知道. @Date是由上述几个标签组合而成. 使用时原创 2021-08-22 23:01:20 · 219 阅读 · 0 评论 -
[Java加密] Jasypt加密工具
前言前段时间研究加密工具. 怎么也想不起来, 最早的加密算法是怎么搞的. 今天把这部分简单总结一下.加密工具包&相关依赖开源项目地址: https://github.com/ulisesbocchio/jasypt-spring-boot最新版本的加密工具需要JDK1.8及其以上版本才可以兼容.# 官方教程中 单引包教程 <dependencies> <dependency> <groupId>com.github.uli原创 2021-04-26 08:38:54 · 1028 阅读 · 0 评论 -
[Java工具] Lombock基本安装&使用
前言在开发过程中, 我们经常会写很多的属性和get/set方法。 也就是我们常常说的,对于属性私有,对于接口开放。 但是这样会造成代码非常的冗余,并且在改变属性名称的时候,会导致更新的代码较多。 所以,我们在开发的过程中,经常使用lombok工具来方便我们进行使用。PS: 这个最早项目的时候就有用到。不过当时没有记录,这次重新搭建环境时候用到了,记录一下。安装https://projectlombok.org/downloadcd到你的lombok目录, 运行Jar包. java -jar原创 2021-01-03 18:24:35 · 322 阅读 · 2 评论 -
JDK1.8 源码 java.util.TreeMap
前言本章, 我们主要介绍java.util.TreeMap.根据上述图片, 其继承关系为TreeMap -> NavigableMap -> SortedMap -> Map.总览同样. 我们从成员变量和基本方法进行解读.成员变量private final Comparator<? super K> comparator;private transient Entry<K,V> root;private transient in原创 2020-07-31 00:58:47 · 450 阅读 · 1 评论 -
JDK1.8 源码 java.util.LinkedHashMap
前言在前面的章节内我们仔细阅读了java.util.HashMap的源码. 在后面的2章内, 我们将看下JDK1.8内其余的2种数据类型的源码, 即LinkedHashMap与TreeMap.在看LinkedhashMap之前, 我们先回顾下HashMap的几个基本知识.基本数据节点Node<K,V> static class Node<K,V> implements Map.Entry<K,V> { final int hash;原创 2020-07-30 17:19:08 · 320 阅读 · 0 评论 -
JDK1.8 源码 String当真不可变么? StringBuilder和StringBuffer的区别
前言在前面的章节内, 我们自己研究了java.lang.String类的源码. 本章主要解决与String相关的几个问题:String 当真不可变么?StringBuilder和StringBuffer的区别?常量池+运算符的重载及其含义String当真不可变么?我们回顾下String的源码.public final class String implements java.io.Serializable, Comparable<String>, CharSeque原创 2020-07-30 01:13:07 · 450 阅读 · 0 评论 -
Java 基础 Scanner读取控制台 & 控制台结束快捷键盘
前言之前在牛客网做题的时候. 对于输入和输出控制比较紧. 这边正好总结一下. 另一方面, Java的输入输出还是比当年的C++要容易的多. 虽然C++我也已经忘了大半代码.正文声明并且绑定控制台输入流Scanner scanner = new Scanner(System.in);读取字符串// 读取Lines. public static void readLines(Scanner scanner) { while(scanner.hasNext()) { Strin原创 2020-07-10 00:39:45 · 1353 阅读 · 0 评论 -
(Java基础) List转换为数组 & 数组转换为List
前言前段时间, 一直看到Spark内的一处进行序列化的语句. 想起来之前看过Arrays的源代码. 于是, 在此总结一下.String [] array = new String[]{"a","b","c"};JavaRDD<String> javaRDDTmp = new JavaSparkContext.parallellize(Array.asList(array));其实. 值得注意的是Spark内的RDD都是不可变的. 所以, 这里的转换没有问题. 但是在我们日常的开发中,原创 2020-07-07 12:37:35 · 3184 阅读 · 0 评论 -
Java基础(五)OOP面向对象之(二) 面向对象思想综述
Java基础(五)OOP面向对象之(二) 面向对象思想综述1. OOP中的基本概念Java语言是面向对象的,采用这种语言进行编程称为面向对象编程(Object-Oriented Programming, OOP)。它允许设计者将面向对象设计实现为一个可运行的系统。Java的编程单位为类,对象需要通过类进行实例化(即创建)。面向对象的编程有三大特性:封装、继承和多态。封装:以前我讲过java是以类为原创 2017-03-06 00:51:59 · 713 阅读 · 0 评论 -
Java基础(五)OOP面向对象之(三) 面向对象思想总结
Java基础(五)OOP面向对象之(三) 面向对象思想总结封装继承多态1. 继承总结继承现象大总结: 子类重写父类方法,调用子类方法;子类属性与父类同名(不管子类属性前修饰符如何均允许),如获取属性,看获取属性方法位置,如在父类中,获取的是父类属性,如在子类中,获取的是子类属性;(就近原则)子类私有方法与父类私有方法同名,如调用该方法,看私有方法被调用的位置,如在父类中,调用的是父类方原创 2017-03-26 19:21:53 · 819 阅读 · 0 评论 -
Java基础(八) Java修饰符及接口详解之(二) 内部类
Java基础(八) Java修饰符及接口详解之(二) 内部类 总体来熟,Java内部类为了从维护性的考虑,使用的并不是特别多。但是在某些情况下,类仅仅被使用一次,通常使用的就是匿名内部类。内部类8. 内部类在一个类的内部定义的类称为内部类。内部类分为:成员内部类 静态内部类 局部内部类 匿名内部类。顶层类(正常类)只能处于public和默认访问级别,而成员内部类可以处于public, prot原创 2017-03-26 19:24:10 · 713 阅读 · 0 评论 -
Java基础(八) Java修饰符及接口详解之(一)static/final/abstract关键字及接口的使用
Java基础(八) Java修饰符及接口详解之(一)static/final/abstract关键字及接口的使用static 修饰符final 修饰符abstract 修饰符接口访问控制== 和 equals() 的区别 基本数据类型对应的包装类型内部类1. static修饰符static修饰符可以用来修饰类的成员变量、成员方法和代码块。用static修饰的成员变量表示静态原创 2017-03-26 19:23:15 · 1649 阅读 · 0 评论 -
Java基础(十一) Stream I/O and Files
Java基础(十一) Stream I/O and Files1. 流的概念程序的主要任务是操纵数据。在Java中,把一组有序的数据序列称为流。根据操作的方向,可以把流分为输入流和输出流两种。程序从输入流读取数据,向输出流写出数据。 文件 输入流 输出流 文件 内存 -------------> Java程序 -原创 2017-03-26 23:08:30 · 2171 阅读 · 1 评论 -
Java基础(十二) Java的GUI及AWT包
Java基础(十二) Java的GUI及AWT包由于这个模块,使用的不是特变经常,所以只需要达到了解的要求即可。由于Java自带的框架,在使用的过程中不是特别美观,但是基础知识还是需要掌握的。这类的知识主要有2个作用的方面:1. 制作个人小工具; 2. 用于做B/S架构的东西。但是由于目前的Java主要都是C/S架构的东西,所以,这些工具类很少使用了,但是像收银机等特殊的业务场景还是使用的...原创 2017-03-26 23:09:30 · 9138 阅读 · 2 评论 -
心跳机制
具体内容,仍没有考虑清楚。基本原理使用心跳程序,简而言之,就是一个长连接程序。定时调用,当无响应时,则认为用户已经下线了。参考文献[1]. 怎样判断用户是否在线 [2]. Java之心跳机制 [3]. web socket 心跳包的实现方案05/30/2010 [4]. 心跳机制详解原创 2017-07-03 09:17:15 · 579 阅读 · 0 评论 -
Jar包内加载FreeMarker模版
QuestionsLoading freemarker templates folder inside .jarSolutionConfiguration cfg;private Template template; { cfg=new Configuration(); try { cfg.setClas...原创 2018-03-07 00:49:54 · 6520 阅读 · 5 评论 -
Java 字符串转码
正文Java中字符串转码,根据实际运用的环境有以下三种方式使用Java.lang.String这是最常用的方法,先用对应编码获取字节,然后重新构造新编码,示例代码如下:String s = "清山"; byte[] b = s.getBytes("utf-8");//编码 String sa = new String(b, "gb2312");//解码:用什么字符集编码就用...转载 2018-03-13 22:26:33 · 20635 阅读 · 0 评论 -
cron 表达式0 0/10 * * * 与 0 */10 * * *的区别 (Drools / Java)
Questions前段时间使用cron表达式,发现配置每x分钟执行的时候。第一次执行时间,总是不太对。第二次的执行时间是正确的。cron 0 */7 * * *# 启动时间 xx:40:00# 第一次执行时间 xx:42:00# 第二次执行时间 xx:42:00corn 0 */5 * * *# 启动时间 xx:41:00# 第一次执行时间 xx:45:00# 第二次执行时...原创 2018-06-08 17:17:36 · 201840 阅读 · 17 评论 -
[Java基础] 如何保留两位小数
前言前段时间在处理float类型的数据的时候,发现在float/double类型的数据输出时,总会遇到这样的问题.例如: 1.000000000005.问题: 1. 位数过多,看起来比较难受; 2. 最后的尾数有偏移.解决办法: 将尾数四舍五入;将位数进行截断.正文如何保留2位小数字?使用BigDecimal的setScale()方法;使用System.out.println...原创 2019-03-18 11:38:03 · 4201 阅读 · 0 评论 -
Java核心基础(总章)
前言最近又看了一遍Java基础.顺便将之前博客内的内容都汇总一下.正文Java基础相关的博文主要包括如下内容:[1]. JAVA核心解析:JDK和JRE[2]. Java基础(二) 注释和基本数据类型[3]. Java基础(三) Java变量、操作符及判断和循环语句[4]. Java基础(三) Java变量、操作符及判断和循环语句之(二)[5]. Java基础(三)Java循环语...原创 2019-03-23 15:56:23 · 509 阅读 · 0 评论 -
Java基础(五)OOP面向对象之(一) 面向对象思想初识
Java基础(五)OOP面向对象之(一) 面向对象思想初识面向对象类及其基本构成类创建实例名词解析:类、对象、实例主要解决的三大问题:封装、继承和多态1. 理解面向对象的思想面向对象的开发方法把软件系统看成各种对象的集合,对象就是最小的子系统,一组相关的对象能够组合成更复杂的子系统。面向对象的开发方法将软件系统看成各种对象的集合,接近人的自然思维方式。对象是对问题领域中事件的抽象。对象具原创 2017-03-05 14:13:52 · 735 阅读 · 0 评论 -
Java基础(五)OOP面向对象之(三) 面向对象思想概述(续)
13. 默认的构造方法构造方法可分为两种:隐含的默认构造方法(无参构造器);程序显示定义的构造方法;在Java语言中,每个类至少有一个构造方法。为了保证这一点,如果用户定义类中没有提供任何构造方法,那么在运行的时候JVM将自动提供一个隐含的默认构造方法。该构造方法没有参数,用public修饰,而且方法体为空,格式如下:public ClassName(){} //隐含的默认构造方法注原创 2017-03-18 18:54:46 · 431 阅读 · 0 评论 -
Java基础(九) 多线程
Java基础(九) 多线程线程综述线程的创建和启动线程状态线程调度线程同步线程通信线程死锁线程让步调度线程的优先级interrupt、isInterrupted、interrupted三个方法1. 线程综述1.1 什么是线程进程是指运行中的程序,每一个进程都有自己独立的内存空间。一个应用程序可以启动多个进程。比如,对于IE浏览器来说,每打开一个IE窗口,就启动了一个进程。同样来原创 2017-03-03 00:04:14 · 535 阅读 · 0 评论 -
JAVA语言读书笔记-内部类
关于内部类 也就是JAVA中大家熟知的类中定义类的情况当然类中类并不是那么简单,要知道其中之间的规则还是有点复杂的特别是关于静态内部类,静态方法的局部内部类,匿名内部类 ,和非静态内部类其中大家见得最多的就是非静态内部类了,就从它先进行讲起1-非静态内部类1.1 外部类中访问内部类看作一个成员,可以随便的创建对象 。值得一提的便是 一个外部类对象中可以创建多个一个内部类对象原创 2014-03-23 16:50:34 · 924 阅读 · 0 评论 -
Java中Properties类的使用
在项目的开发中,我们经常写一些.properties文件 用来配置一些相关的内容,比如端口号 IP地址 服务器数据库的地址等等PS 当然这些东西也是能够写在XML 文件内的。下面摘抄2处 对于这些.properties 文件的使用首先 1我们的目的 是取出 .properties 文件的内容2.properties文件的内容主要是以Key-Value 对的形式构建的转载 2016-04-10 10:25:36 · 604 阅读 · 0 评论 -
Java基础(二) 注释和基本数据类型
Java基础(二) 注释和基本数据类型标识符关键字基本数据类型1. 标识符1.1 注释Java中的注释主要包括三种类型,单行注释、多行注释、文件注释。单行注释 //符号可以注释Java文件中的一行代码,例如://int number=0;这行代码在编译的时候,编译器会自动忽略这行代码。多行注释/* */可以注释Java文件中的多行代码,但是需要注意的一点是,/**/不能够相互嵌套使用。原创 2017-02-06 23:42:15 · 750 阅读 · 0 评论 -
Java基础(四) 数组的创建和使用
Java基础(四) 数组的创建和使用数组的创建:基本数据类型数组/类类型数组访问数组的元素和长度创建一个数组的数组数组是一组数据的集合,数组内的每个数据叫做元素,数组也是Java对象。数组中的元素可以是任意的数据类型(基本数据类型和引用数据类型),但是同一个数组内只能存放一种数据类型的数据。创建数组的流程大致包括入下几个步骤:基本步骤:声明数组变量 -> 创建数组实例 -> 初始化数组声原创 2017-02-07 15:46:18 · 3827 阅读 · 0 评论 -
Java基础(三) Java变量、操作符及判断和循环语句
Java基础(三) Java变量、操作符及判断和循环语句变量操作符条件语句循环语句1.变量1.1变量介绍1.1.1变量综述在前一章的结尾,我们已经简单的介绍过了为什么需要使用变量,以及在什么时候需要使用变量。程序的基本功能是处理数据;数据是变化的,所以需要使用变量来处理数据;程序中必须先定义变量才能使用变量,并且需要需要初始化。不初始化的变量,值是未知的,这必然导致程序处理结果的未知原创 2017-02-09 00:07:56 · 1197 阅读 · 0 评论 -
Java 基础 (七) 反射机制
Java基础(七) 反射机制和动态代理反射机制反射的作用动态代理1. 反射(浅谈) 反射的思想,在Java框架内被广泛运用。反射的思想源于物理学中光学的反射概念。在Java内又是另一种概念。平时,我们照镜子的时候,镜子内部都会显示出我们的影子,Java内也不例外。一个类或者是对象的反射,应当获取自身的对象,该对象是一个java.lang.Class类的对象(一个镜像文件)。一个类或对象原创 2017-02-27 22:38:26 · 518 阅读 · 0 评论 -
Java基础(六) 集合
Java基础(五) 集合集合概述Set 类List 类Map 类1. 集合概述1.1 集合概述 数组的长度是固定的。在很多场合中,我们需要一组长度变化的数组。比如:一个单位当中,有老员工跳槽,也有新的员工进来。一个单位的客户是变化的,有老的客户流失,也有新的客户进来。对于这样的需求,数组可以满足我们的需求。但是,这并不太合适。因为数组的删除,前面必然会有空间空出,后面的数据需要向前移位原创 2017-02-19 02:10:50 · 574 阅读 · 0 评论 -
Java基础(三) Java变量、操作符及判断和循环语句之(二)
循环语句4.循环语句4.1 基本循环语句语法循环语句的作用是反复执行一段代码,直到不满足循环条件为止。循环语句一般包括4个部分组成:初始化部分:设置循环的初始化值,比如循环的初始化值等等;循环条件:这是一个布尔表达式,每一次循环都要对于表达式求值,以判断循环到底是否终止;循环体:循环操作的主体部分,可以是一条语句,也可以是一条代码块;迭代部分:简单的说就是,本次循环结束后需要做的事情。可以原创 2017-02-13 22:59:11 · 518 阅读 · 0 评论 -
Java 之集合排序
排序Comparable接口Comparator接口 排序器通用排序器1. 排序我们都知道,算法有各种各样的算法。排序算法通常使用的主要有九种。但是,我们排序的时候,如果自己实现算法的话就会非常麻烦,那么我们在工业界的代码应该如何书写的?Java内主要提供了Comparable接口和Comparator 接口。2. Comparable接口主要需要门重写Model对象中的compareTo(原创 2017-03-07 23:33:01 · 545 阅读 · 0 评论