java
文章平均质量分 62
java
sun134911
这个作者很懒,什么都没留下…
展开
-
java加密算法pbkdf2
PBKDF2算法通过多次hash来对密码进行加密。原理是通过password和salt进行hash,然后将结果作为salt在与password进行hash,多次重复此过程,生成最终的密文。此过程可能达到上千次,逆向破解的难度太大,所以PBKDF2算法是安全的。package com.bolt.zkkw.util;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.PBEKeySpec;import java.math..原创 2022-03-08 13:15:01 · 2355 阅读 · 0 评论 -
对数据加密
密码哈希是什么?哈希算法是一种单向函数。它把任意数量的数据转换为固定长度的“指纹”,而且这个过程无法逆转。它们有这样的特性:如果输入发生了一点改变,由此产生的哈希值会完全不同(参见上面的例子)。这个特性很适合用来存储密码。因为我们需要一种不可逆的算法来加密存储的密码,同时保证我们也能够验证用户登陆的密码是否正确。如何破解哈希?字典攻击和暴力攻击( Dictionary and Brute Force Attacks)破解哈希加密最简单的方法是尝试猜测密码,哈希每个猜测的密码,并对比猜测密原创 2022-03-08 11:44:42 · 590 阅读 · 0 评论 -
java ThreadPoolExecutor线程池
1.简单介绍是什么:线程池是用来管理多个线程来处理任务的,是一种多线程的处理形式。优点:1.减少资源消耗,因为频创建和销毁线程是有资源消耗的,而线程池可以将完成任务后的线程管理起来,在设定的时间内,可以等待任务。提高线程的管理性,使用线程池可以进行统一的创建和分配,和监控。2....原创 2021-08-17 16:37:00 · 145 阅读 · 0 评论 -
Spring之@Async异步注解
1.注解介绍@Async注解,该注解可以被标注在方法上,以便异步地调用该方法。调用者将在调用时立即返回,方法的实际执行将提交给Spring TaskExecutor的任务中,由指定的线程池中的线程执行。在项目应用中,@Async调用线程池,推荐使用自定义线程池的模式。自定义线程池常用方案:重新实现接口AsyncConfigurer。2.Spring的线程池1. SimpleAsyncTaskExecutor:,这个类不重用线程,默认每次调用都会创建一个新的线程。2. SyncTaskExecu原创 2021-08-13 17:19:32 · 11342 阅读 · 1 评论 -
java Stream
1.什么是 Stream?Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。Stream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的原创 2021-07-21 15:05:32 · 337 阅读 · 0 评论 -
Java Serializable序列化
1.什么是序列化?序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。把对象转换为字节序列的过程称为对象的序列化把字节序列恢复为对象的过程称为对象的反序列化2.什么是Serializable接口一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才能被序列化。3.为什么要序列化对象当我们需要把对象的状态信息通过网络进行传输,或者需要将对象的状态信息持久化,以便将来使用时都需要把原创 2021-07-20 09:48:33 · 172 阅读 · 0 评论 -
java反射介绍,例子:通过反射判断属性是否为空
1.什么是反射 反射就是把Java类中的各个成分映射成一个个的Java对象。即在运行状态中,对于任意一个类,都能够知道这个类的所以属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性。这种动态获取信息及动态调用对象方法的功能叫Java的反射机制。每个.class文件被加载到内存后都是一个Class类的对象!例如Demo.class加载到内存后它是Class<Demo>类型的一个对象。反射就是通过Class对象获取类型相关的信息。一个Class对象就表示一个.c...原创 2021-07-16 18:55:13 · 2162 阅读 · 0 评论 -
java 泛型
java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现?答案是可以使用 Java 泛型。使用 Java 泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行原创 2021-07-16 16:00:07 · 76 阅读 · 0 评论 -
Java8 Optional
1.介绍Optional 类是一个可以为null的容器对象。Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。Optional 类的引入很好的解决空指针异常。2.常用方法介绍Optional<T> filter(Predicate<? super <T> predicate)如果值存在,并且这个值匹配给定的 predicate,返回一个Optional用以描述这个值,否则返原创 2021-07-14 18:56:45 · 99 阅读 · 0 评论 -
Java8方法引用
1.方法引用的特性方法引用通过方法的名字来指向一个方法。方法引用可以使语言的构造更紧凑简洁,减少冗余代码。方法引用使用一对冒号 :: 。package com.runoob.main; @FunctionalInterfacepublic interface Supplier<T> { T get();} class Car { //Supplier是jdk1.8的接口,这里和lamda一起使用了 public static Car cre原创 2021-07-08 19:27:17 · 131 阅读 · 0 评论 -
Java8Lambda表达式
1.Lambda的语法lambda 表达式的语法格式如下:(parameters) -> expression 或 (parameters) ->{ statements; }以下是lambda表达式的重要特征:可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号原创 2021-07-07 18:43:29 · 75 阅读 · 0 评论 -
java8新特性:接口的默认方法
Java 8 新增了接口的默认方法。简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。我们只需在方法名前面加个 default 关键字即可实现默认方法。为什么要有这个特性?首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,目前的 java 8 之前的集合框架没有 foreach 方法,通常能想到的解决办法是在JDK里给相关的接口添加新的方法及实现。然而,对于已经发布的版本,是没法在给接口添加新方法的同时原创 2021-07-06 18:57:21 · 149 阅读 · 0 评论 -
Java枚举
1.java 枚举是一个特殊的类使用 enum 关键字来定义,各个常量使用逗号 , 来分割,最后分号结尾。 可以理解为一个类有多个固定的实例例如定义一个颜色的枚举类。enum Color { RED, GREEN, BLUE; } 每个枚举都是通过 Class 在内部实现的,且所有的枚举值都是 public static final 的。以上的枚举类 Color 转化在内部类实现:class Color{ public static final Colo原创 2021-07-06 18:26:39 · 360 阅读 · 0 评论 -
java1.8switch支持的类型
基本类型有:byte,short,int,char包装类型有:Byte,Short,Integer,Character,String,enumswitch实际上只支持int类型,其他的类型时是通过转化支持的:1、基本类型byte char short 原因:这些基本数字类型可自动向上转为int, 实际还是用的int。2、包装类型Byte,Short,Character,Integer 原因:java的自动拆箱机制 可看这些对象自动转为基本类型3、String 类型 原因:实际switch比较的原创 2021-06-25 15:55:34 · 2867 阅读 · 0 评论 -
lombok简单介绍
lombok是一个通过注解来简化代码的工具常用注解介绍1.@Getter / @Setter :生成Get和Set方法2.@NoArgsConstruuctor :生成无参数的构造方法3.@AllArgsConstructor :生成全部参数的构造方法4.@Data :为所有字段生成@Tostring,@EqualsAndHashCode,@Getter方法,并为非final字段生成@Setter和@RequireArgsConstructor...原创 2021-06-25 15:07:16 · 64 阅读 · 0 评论