- 博客(29)
- 收藏
- 关注
原创 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
2363
原创 对数据加密
密码哈希是什么?哈希算法是一种单向函数。它把任意数量的数据转换为固定长度的“指纹”,而且这个过程无法逆转。它们有这样的特性:如果输入发生了一点改变,由此产生的哈希值会完全不同(参见上面的例子)。这个特性很适合用来存储密码。因为我们需要一种不可逆的算法来加密存储的密码,同时保证我们也能够验证用户登陆的密码是否正确。如何破解哈希?字典攻击和暴力攻击( Dictionary and Brute Force Attacks)破解哈希加密最简单的方法是尝试猜测密码,哈希每个猜测的密码,并对比猜测密
2022-03-08 11:44:42
593
原创 使用Rclone对Minio数据进行迁移
下载安装rclonecurl https://rclone.org/install.sh | sudo bash如果提示None of the supported tools for extracting zip archives (unzip 7z busybox) were found. Please install one of them and try again.是因为Linux没有解压工具安装一下即可,安装命令yum install zip unzip创建配置文件rcl
2022-03-01 18:10:53
1809
原创 Java File转化为MultipartFile
一、使用MockMultipartFile类进行转换这个方法比较简单,代码如下: File pdfFile = new File("D://test.pdf"); FileInputStream fileInputStream = new FileInputStream(pdfFile); MultipartFile multipartFile = new MockMultipartFile(pdfFile.getName(), pdfFile.getName(), ...
2022-03-01 17:51:16
1982
原创 JPA注解
1.MappedSuperclass 注解1.@MappedSuperclass注解使用在父类上面,是用来标识父类的,用来抽取数据库的共同属性2.@MappedSuperclass标识的类表示其不能映射到数据库表,因为其不是一个完整的实体类,但是它所拥有的属性能够隐射在其子类对用的数据库表中3.@MappedSuperclass注解不能再有@Entity或@Table注解2.@DynamicInsert@DynamicUpdate注解1.添加和更新数据时,数据为null的字段不进行更新
2022-02-22 18:15:57
611
原创 QueryDSL 大于、小于、大于等于、小于等于、等于、不等于方法
等于 : equal :eq 不等于 : not equal : ne 小于 : less than : lt 大于 : greater than :gt 小于等于 : less than or equal : loe 大于等于 : greater than or equal : goe例子:builder.optionalAnd(leftBound,()->qOrgBoltDept.leftBound.goe(leftBound));...
2022-02-22 17:24:23
2602
原创 java ThreadPoolExecutor线程池
1.简单介绍是什么:线程池是用来管理多个线程来处理任务的,是一种多线程的处理形式。优点:1.减少资源消耗,因为频创建和销毁线程是有资源消耗的,而线程池可以将完成任务后的线程管理起来,在设定的时间内,可以等待任务。提高线程的管理性,使用线程池可以进行统一的创建和分配,和监控。2....
2021-08-17 16:37:00
149
原创 Spring之@Async异步注解
1.注解介绍@Async注解,该注解可以被标注在方法上,以便异步地调用该方法。调用者将在调用时立即返回,方法的实际执行将提交给Spring TaskExecutor的任务中,由指定的线程池中的线程执行。在项目应用中,@Async调用线程池,推荐使用自定义线程池的模式。自定义线程池常用方案:重新实现接口AsyncConfigurer。2.Spring的线程池1. SimpleAsyncTaskExecutor:,这个类不重用线程,默认每次调用都会创建一个新的线程。2. SyncTaskExecu
2021-08-13 17:19:32
11471
1
原创 Redis 锁
一。Redis锁的命令redis的加锁命令有 :INCR、SETNX、SET二。INCR命令这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。然后其它用户在执行 INCR 操作进行加一时,如果返回的数大于 1 ,说明这个锁正在被使用当中。 $redis->incr($key); $redis->expire($key, $ttl); 三。SETNX 命令这种加锁的思路是,如果 key 不存在...
2021-08-10 15:29:10
1128
原创 spring的@Transactional注解
概述事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。Spring Framework对事务管理提供了一致的抽象,其特点如下:为不同的事务API提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects) 支持声明式事务管理,特别是基于注解的声明式事务管理,简单易用 提供比其他事务API如JTA更简单的编程式事务管理A
2021-08-03 15:24:55
105
原创 Idea设置内存大小
在idea安装目录下搜索 vmoptions有两个,文本打开对应位数的文件,或者都修改也可以Xms 最小值Xmx最大值ReservedCodeCacheSize 缓存代码内存修改好之后重启,便可以看到修改后的内存如果左下角沒有 可以通 show memory indicator...
2021-08-02 17:03:21
611
原创 java Stream
1.什么是 Stream?Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。Stream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的
2021-07-21 15:05:32
346
原创 Java Serializable序列化
1.什么是序列化?序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。把对象转换为字节序列的过程称为对象的序列化把字节序列恢复为对象的过程称为对象的反序列化2.什么是Serializable接口一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才能被序列化。3.为什么要序列化对象当我们需要把对象的状态信息通过网络进行传输,或者需要将对象的状态信息持久化,以便将来使用时都需要把
2021-07-20 09:48:33
177
原创 java反射介绍,例子:通过反射判断属性是否为空
1.什么是反射 反射就是把Java类中的各个成分映射成一个个的Java对象。即在运行状态中,对于任意一个类,都能够知道这个类的所以属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性。这种动态获取信息及动态调用对象方法的功能叫Java的反射机制。每个.class文件被加载到内存后都是一个Class类的对象!例如Demo.class加载到内存后它是Class<Demo>类型的一个对象。反射就是通过Class对象获取类型相关的信息。一个Class对象就表示一个.c...
2021-07-16 18:55:13
2198
原创 java 泛型
java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现?答案是可以使用 Java 泛型。使用 Java 泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行
2021-07-16 16:00:07
94
原创 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
104
原创 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
136
原创 Java8Lambda表达式
1.Lambda的语法lambda 表达式的语法格式如下:(parameters) -> expression 或 (parameters) ->{ statements; }以下是lambda表达式的重要特征:可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号
2021-07-07 18:43:29
79
原创 java8新特性:接口的默认方法
Java 8 新增了接口的默认方法。简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。我们只需在方法名前面加个 default 关键字即可实现默认方法。为什么要有这个特性?首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,目前的 java 8 之前的集合框架没有 foreach 方法,通常能想到的解决办法是在JDK里给相关的接口添加新的方法及实现。然而,对于已经发布的版本,是没法在给接口添加新方法的同时
2021-07-06 18:57:21
170
原创 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
367
原创 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
2891
原创 select语句的语法顺序和执行顺序
1.语法顺序select语句的语法格式如下。select 字段列表from 数据源[ where条件表达式 ][ group by 分组字段[ having条件表达式 ][ order by 排序字段 [ asc | desc ] ]2.执行顺序from wher group by having select order by...
2021-06-25 15:49:47
10678
原创 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
68
原创 Querydsl返回自定义字段
方法一:使用BeanqueryFactory.select( Projections.bean(PersonIDCardDto.class, QIDCard.iDCard.idNo, QPerson.person.address, QPerson.person.name)) .from(QIDCard.iDCard, QPerson.person) .where(predicate)
2021-06-17 17:46:28
1635
原创 SpringDataJpa方法名称命名规则
1.使用规则findBy(关键字)+属性名称(属性名称的首字母大写)+查询条件(首字母大写)。除了findBy外还有其他的前缀关键字列表如下注意: 使用Like关键字时需要手动在参数上加上 “%”
2020-06-19 18:05:38
2132
原创 css选择器
css引入方法1.行内引入<p style="background-color:aquamarine;color: black"></p>2..css文件引入div{ background-color:yellow; color:red; }通过link标签引入&...
2019-05-05 14:22:21
74
原创 Linux安装Solr
linux环境下Solr的安装Solr的运行环境需要jdk和tomcattomcat安装1.上传安装压缩包通过SecureCRT,Alt+p上传2.解压tar -zxvf apache-tomcat-7.0.473.在/usr/local目录下创建solr文件,并把解压过的tomcat复制到该目录下 (cp只拷贝文件,不拷贝文件夹,加上-r会拷贝文件夹,包括下一级的子文件夹,已经子文件夹中的子文件...
2018-06-14 11:30:36
1095
原创 Linux安装配置jdk
jdk安装文件有两种格式,一种是rpm,一种是tar.gz一.tar.gz格式的安装1.通过SecureCRT,Alt+p上传到linux。2.在usr目录创建java目录mkdir /usr/java3.将文件复制到java目录,并解压cp jdk-8u60-linux-x64.tar.gz /usr/java/tar -zxvf jdk -8u60-linux-x64.tar.gz解压完毕后使...
2018-06-13 18:19:32
122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人