自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 RSA非对称加密

/ System.out.println("-----------------------字符串类型的密钥对象转为RSA密钥对象后的加密解密--------------------------");System.out.println("-----------------------RSA密钥对象加密解密--------------------------------");System.out.println("加密后的字符串encryptedMsg:\r\n" + encryptedMsg);

2024-03-12 13:12:00 763

原创 AES 加密解密工具类

PKCS5Padding 填充模式(NoPadding 无填充)// 以下两个变量不可修改,否则java加密的,node无法解密。* AES 对称加密(RSA非对称加密)* CBC 有向量 (ECB 无向量)

2024-03-12 10:48:46 734

原创 mybatis-plus用法

下面我们看看如何使用它来操作我们的数据库。通过 mybatis-plus 可以通过全局配置的方式,而不需要再去手动处理。mybatis-plus 为使用者封装了很多的注解,方便我们使用,我们首先看下实体类中有哪些注解。关于内部的具体方法,在使用时候自己体会吧,此处不列举了。有更高的性能,但是不能忽略下面的配置,否则服务会不断抛出异常,原因是数据库的连接时常和连接池的配置没有做好。关于其他的属性,我不太推荐使用,用得越多,越容易蒙圈。数据库返回的值,重新遍历赋值进去,这时候还需要判断这个值到底是男是女。

2024-03-12 09:32:10 759

原创 接口幂等性解决方法

6.服务器如果短时间内重复提交这个接口,因为两次请求token是一样的,所以第二次请求的时候,服务器校验token时,redis中已经没有了刚刚被第一次删掉的token,就表示是重复操作,所以第二次请求会校验失败,不作处理,这样就保证了业务代码,不被重复执行。新增的时候添加版本号,更新的时候带着版本号去更新,版本号一致才更新处理。5.如果存在就删除key,正常执行逻辑,如果不存在就抛异常,返回重复提交的错误提示。通过控制锁的粒度来提高程序执行的性能,只锁当前的用户,相当于只锁自己。

2023-02-24 16:52:02 663 1

原创 高德地图工具类

import com.alibaba.fastjson.JSONObject;import com.fasterxml.jackson.databind.JsonNode;import com.fasterxml.jackson.databind.ObjectMapper;import com.google.common.collect.Maps;import com.slf.common.utils.HttpClientUtil;import lombok.extern.slf4j.Slf4..

2021-11-29 20:03:48 947

原创 http请求工具类HttpClientUtil,get,post请求

import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.google.common.collect.Lists;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.H.

2021-11-25 15:09:31 1191

原创 正则手机号码验证工具类

import java.util.Objects;import java.util.regex.Pattern;public class MobileUtils { /** * 正则:手机号(精确) * <p>移动:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188、198</p> * <p>联通:130、131、1.

2021-11-25 14:52:21 480

原创 sentinel适配 spring cloud gateway 限流、nacos 动态规则配置

Sentinel 是面向分布式服务架构的流量控制组件;可适配spring cloud gateway ,实现分布式服务架构 路由流量控制和熔断降级等功能,保障微服务的稳定性。而sentinel 限流规则可配置在nacos 服务配置中心,通过 推模式 实现sentinel 限流规则的动态修改和实时加载。网关限流是针对API Gateway 的场景定制的限流规则,可以针对不同 route 或自定义的 API 分组进行限流,支持针对请求中的参数、Header、来源 IP 等进行定制化的限流。其中网关.

2021-07-28 17:59:11 1124

原创 MapReduce之Map Join

如果在Reduce 端处理过多的表,容易出现数据倾斜,通常我们会在Map端缓存起来,提前把处理业务逻辑,减少Reduce端数据的压力,减少数据倾斜。Map Join 适用于一张表十分小、一张表很大的场景。Mapper的setup(初始化)的时候缓存到集合中,job.addCacheFile(new URI("file:///D:/input/tablecache/pd.txt"));代码如下:public class MapJoinMapper extends Mapper.

2021-04-03 17:24:32 208

原创 MapReduce之FileInputFormat切片机制

1.切片机制(1)简单地按照文件的内容长度进行切片(2)切片大小,默认等于Block(128M)大小(3)切片时不考虑数据集整体,而是逐个针对每一个文件单独切片默认切片大小等于块大小源码中有计算公式computeSplitSize(Math.max(minSize,Math.min(maxSize,blocksize)))=blocksize=128Mmapreduce.input.fileinputformat.split.minsize=1 默认值为1mapre..

2021-04-03 15:43:12 500 1

原创 Mapreduce之WritableComparable实例

MapTask和ReductTask都会按照key进行排序,该操作属于Hadoop默认的行为。任何应用程序中的数据都会被排序,强制的,而不管逻辑上是否需要。默认排序是按照字典顺序排序,方法的是快速排序1.创建FlowBean 实现WritableComparable,重写compareTo接口import org.apache.hadoop.io.WritableComparable;import java.io.DataInput;import java.io.DataOu.

2021-03-30 11:25:54 217

原创 MapReduce的常见输入格式之CombineTextInputFormat

CombineTextInputFormat作用: 改变了传统的切片方式,将多个小文件,划分到一个切片中,适合小文件过多的场景。假设有4个文件a.text,b.text,c.text,d.text .需求:将上面4个文件合并成一个切片统一处理创建WordCountMapper/** * KEYIN, map阶段输入的key的类型:LongWritable * VALUEIN,map阶段输入value类型:Text * KEYOUT,map阶段输出的Key类型:Tex..

2021-03-30 10:44:00 545

原创 Hadoop之Partitioner分区

1、HashPartitioner(Hadoop自带的默认分区)HashPartitioner源码如下:public class HashPartitioner<K2, V2> implements Partitioner<K2, V2> { public void configure(JobConf job) {} /** Use {@link Object#hashCode()} to partition. */ public int getPartit...

2021-03-30 08:52:24 501 2

原创 MapReduce的常见输入格式之NlineInputFormat

有两个文件log ,log副本切片策略: 读取配置文件中的参数mapreduce.input.lineinputformat.linespermap,默认为1,以文件为单位,切片每此参数行作为1片! 既然有参数,那就可以修改,设置为每N行切为一片: Configuration conf = new Configuration();conf.set("mapreduce.input.lineinputformat.linespermap", "2") RecordReader:L.

2021-03-29 19:15:30 251

原创 使用MapReduce运行自定义bean案例

文件内容如下手机号、IP、访问网站、上行流量、下行流量、状态码需求:需要统计每个手机号访问网站的上行流量、下行流量以及它们的总和依赖包<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.1.3</version></depe

2021-03-29 18:58:11 212

原创 使用MapReduce运行单词统计案例

1.Map阶段的核心处理逻辑需要编写在Mapper中2.Reduce阶段的核心处理逻辑需要编写在Reducer中3.将编写的Mapper和Reducer进行组合,组合成一个Job4.对Job进行设置,设置后运行准备数据文件需求:统计文件中单词出现的次数1.创建WordCountMapper类,继承Mapper,重写map 方法Mapper<LongWritable, Text, Text, IntWritable> 两两一组,输入,输出 LongWritab...

2021-03-29 16:24:45 556

原创 HDFS块(block)、副本数(replication)的概念

HDFS的文件在物理上是分块储存(Block)默认大小是128M,老版本64M。不论对磁盘的文件进行读还是写,都需要先进行寻址!最佳传输损耗理论: 寻址时间占总传输时间的1%时,本次传输的损耗最小,为最佳性价比传输!目前硬件的发展条件,普通磁盘写的速率大概为100M/S, 寻址时间一般为10ms!10ms / 1% = 1s1s * 100M/S=100M块在传输时,每64K还需要校验一次,因此块大小,必须为2的n次方,最接近100M的就是128M!如果公司使用的是固态硬盘.

2021-03-29 15:35:14 1338

原创 MapReduce – Mapper

//// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//package org.apache.hadoop.mapreduce;import java.io.IOException;import org.apache.hadoop.classification.InterfaceAudience.Public;import org.apach..

2021-03-29 15:07:56 346

原创 SpringBoot自定义注解+AOP的方式实现限流

1.添加依赖<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId></dependency><dependency> <groupId>com.google.guava</groupId> <artifactId>guava&lt...

2021-03-09 16:25:39 359

原创 SpringBoot自定义注解+Redis+拦截器实现限流

1.添加redis 依赖包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>2.自定义注解AccessLimit@Inherited@Documented@Target({ElementType.

2021-03-09 15:22:26 358 3

原创 Springboot 使用校验框架validation校验

1.validation与 springboot 结合添加依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>2.实体上加上相关校验...

2021-03-08 15:20:37 615

原创 SpringBoot 项目中集成RabbitMQ消息队列,发送消息,监听消息,延迟队列

1.添加依赖包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>2.spring配置文件spring: rabbitmq: addresses: port: 5672 usernam...

2021-03-07 14:18:39 652 2

原创 springBoot +AOP+注解记录系统操作日志

1. 创建日志表CREATE TABLE `dyyy_operation_log` ( `id` bigint NOT NULL COMMENT '主键', `operation_id` bigint DEFAULT NULL COMMENT '操作id', `user_id` bigint DEFAULT NULL COMMENT '用户id', `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai...

2021-01-29 16:32:21 190

原创 任务调度,XXL-JOB实战

1.引入依赖包<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.2.0</version></dependency>2.引入配置文件@Slf4j@Configuration@EnableConfigurationProperti

2021-01-15 09:50:47 323 1

原创 fegin服务之前传递用户信息

1.FeginConfig 配置@Configuration@Slf4jpublic class FeignConfig implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { HttpServletRequest request = getServletRequest(); if (null == request)

2021-01-14 15:14:50 1487

原创 springBoot+nacos+dubbo 集成 nacos注册中心

1.dubbo依赖包<properties> <dubbo.version>2.7.8</dubbo.version></properties><dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> &l..

2021-01-10 09:26:45 4305 3

原创 springBoot+jwt+redis 拦截器实现登录 返回token

1.jwt 生产token 也可以用MD5 生成token@Component@Slf4jpublic class JwtUtil { /** * 过期时间 */ private static String accessTokenExpireTime; /** * JWT认证加密私钥(Base64加密) */ private static String encryptJWTKey; /** * 解决@Val

2021-01-03 15:08:26 893

原创 在拦截器中保存用户登录信息

1.新增登录用户对象UserInfo@Datapublic class UserInfo implements Serializable { private Long id; private Long userId; private String nickname; private String mobile;}2.新增当前线程对象UserContextpublic class UserContext { private static T..

2021-01-03 14:51:27 1127 2

原创 Shiro权限控制,获取当前登录用户信息

1.在自定义 UserRealm,doGetAuthenticationInfo 方法中 ,设置 登录用户userInforeturn new SimpleAuthenticationInfo(userInfo, token, "userRealm");protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken auth) throws AuthenticationException { // ..

2021-01-03 14:37:05 2794

原创 Md5Util 工具类

1.Md5Util 工具类public class Md5Util { /** * 全局数组 */ private final static String[] strDigits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; /** * 返回形式为数字跟字符串 * * @para.

2020-12-29 09:45:21 788 1

原创 文件MultipartFile 转 file 工具类

@Componentpublic class MultipartFileToFile { /** * MultipartFile 转 File * * @param file * @throws Exception * @return */ public static File multipartFileToFile(MultipartFile file) throws Exception { File to..

2020-12-28 16:29:21 106

原创 项目中集成RabbitMQ配置,消息队列

1.依赖包 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.4.3</version> </dependency>2.配置@Configurationpubl

2020-12-28 14:39:43 483

原创 Mybatis plus QueryWrapper的简单用法

查询方式 说明 setSqlSelect 设置 SELECT 查询字段 where WHERE 语句,拼接 +?WHERE 条件 and AND 语句,拼接 +?AND 字段=值 andNew AND 语句,拼接 +?AND (字段=值) or OR 语句,拼接 +...

2020-12-26 11:40:52 22355 4

原创 springBoot+shiro+jwt+redis 用户权限管理

1.相关依赖包 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>${shiro.spring.version}</version> </dependency>

2020-12-06 14:39:56 2625

原创 springboot+mybatisplus使用注解多数据源整合

1.主要依赖包<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.3.2</version></dependency><dependency> <groupId>com.baomidou<

2020-12-06 09:46:10 603

原创 es java 聚合查询

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();for (String key : filter.keySet()) { if ("rootOrderNo".equals(key)) { boolQueryBuilder.must(QueryBuilders.termQuery("rootOrderNo.keyword", filter.get(key).toString())); co..

2020-05-18 15:31:14 1345

原创 es elasticsearch 游标查询 分页查询

// 分页参数Integer currentPage = 1;Integer pageSize = 10;BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();sear...

2020-03-30 12:02:39 1349

原创 hyper-v虚拟机centos7网络配置,解决虚拟机不能上网问题

第一步第二步第三步第四步,确定后 设置第五步选择刚刚创建的网络配置第六步 进入系统 输入命令 进入文件编辑命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0然后退出保存 退出命令:esc 加冒号,然后wq,查看是否编辑成功 cat/etc/sysconfig/network-scripts...

2020-03-05 12:26:06 2752 6

原创 linux docker 安装 elasticsearch

1. pull 镜像命令如下:docker pull elasticsearch:7.2.02.启动es,命令如下:docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.2.03.检查es是否安装完成,游览器打...

2020-03-05 11:57:36 749 1

原创 java 递归树结构,采用反射动态id,父类id,children

@Servicepublic class BaseTreeService { /** * 集合转树结构 * * @param allList 目标集合 * @param id 节点编号字段名称 * @param parent 父节点编号字段名称 * @param children 子节点集合属性名称 ...

2020-02-26 15:23:02 869

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除