Java
今朝花落悲颜色
大鹏一日同风起,扶摇直上九万里
展开
-
poi读取超大excel内存溢出问题
读取超大数据量excel会导致内存溢出,可使用流式处理组件xlsx-streamer解决内存溢出问题。原创 2023-02-01 10:45:43 · 4813 阅读 · 0 评论 -
springboot整合MongDB实现增删查改
springboot整合MongDB实现增删查改原创 2023-01-30 11:27:25 · 193 阅读 · 0 评论 -
java获取kafka topic
java获取kafka topic原创 2022-07-04 17:22:02 · 2560 阅读 · 0 评论 -
shardingsphere动态数据源
项目中使用到了mybatis-plus,多数据源切换用的是dynamic-datasource-spring-boot-starter,只要加@DS注解就可以切换,非常方便,但随着业务越来越大,数据量越来越多,涉及到读写分离分库分表,我们选择shardingsphere无代码侵入解决方案,将shardingsphere交给dynamic-datasource管理,既可以方便切换数据源又可以使用shardingsphere读写分离分库分表等功能。.........原创 2022-06-21 17:02:26 · 3987 阅读 · 1 评论 -
Hutool动态添加定时任务
Hutool的定时任务模块与Linux的Crontab使用上非常类似,通过一个cron.setting配置文件,简单调用start()方法即可简单使用。同时还提供了秒匹配和年匹配等Quartz才有的功能,定时任务表达式上也同时兼容Crontab(Cron4j)和Quartz的表达式。......原创 2022-06-15 14:29:17 · 977 阅读 · 0 评论 -
java抽奖概率抽奖
java实现概率抽奖原创 2022-05-02 16:02:55 · 4092 阅读 · 1 评论 -
java AOP实现记录操作日志
最近做项目需要添加一个用户操作记录功能,需要记录用户操作调用了哪些接口。实现方式当然用AOP啦,通过反射获取swagger注解上的接口说明,然后存到数据库,也可以不落库打印日志记录。数据库:CREATE TABLE `job_operation_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `url` varchar(255) DEFAULT NULL COMMENT '请求接口地址', `http_method` varchar(25...原创 2022-04-21 12:04:13 · 6395 阅读 · 0 评论 -
java微信公众号菜单api动态创建
最近做了一个公众号菜单管理,需求就是后台添加菜单后公众号同步更新,菜单分为一级菜单,二级菜单,二级菜单挂在一级菜单上。效果图如下我觉得难点就在于菜单的层级关系、菜单顺序和菜单json的创建。菜单sqlCREATE TABLE `wechat_client_bottom_menu` ( `id` bigint NOT NULL AUTO_INCREMENT, `company_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_原创 2022-03-03 16:55:27 · 1244 阅读 · 2 评论 -
java公众号接收推送事件
首先在公众平台管理页面开启服务器配置签名对象@Datapublic class WXConnectionRequest { //微信加密签名 private String signature; //时间戳 private String timestamp; //随机数 private String nonce; //随机字符串 private String echostr;}验签 @ApiOperation("原创 2022-03-03 16:19:13 · 1446 阅读 · 0 评论 -
Hadoop单机安装
JDK 的安装将下载好的 jdk 文件放到/usr/local,配置环境变量vim /etc/profileexport JAVA_HOME=/usr/local/jdk1.8.0_211export PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=$JAVA_HOME/libHadoop 的安装 官网下载Hadoop,下载到/usr/local 目录下并解压并在 /etc/profile文件中配置环境变量export HADOOP_HOME=/.原创 2021-11-16 18:05:54 · 1867 阅读 · 0 评论 -
cron获取近5次触发时间
@GetMapping("/nextTriggerTime") @ApiOperation("获取近5次触发时间") public ReturnT<List<String>> nextTriggerTime(String cron) { List<String> result = new ArrayList<>(); try { CronExpression cronExpressio..原创 2021-11-05 14:44:54 · 506 阅读 · 0 评论 -
springboot使用minio进行文件上传下载
pom <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.2.2</version> </dependency>minio配置类import lombok.Data;import o.原创 2021-11-04 16:37:09 · 628 阅读 · 0 评论 -
SpringBoot 动态创建多定时任务
mysqlCREATE TABLE `job_interface_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `url` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求接口地址', `client_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8.原创 2021-11-03 17:40:59 · 2115 阅读 · 0 评论 -
springboot 图片上传预览显示
application.yml配置文件上传路径根目录/data/img#文件存储路径filepath: sourcePath: /data/img/图片上传预览controllerimport io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import io.swagger.annotations.ApiParam;import lombok.extern.slf4j.Slf4j;i原创 2021-10-29 12:00:06 · 834 阅读 · 0 评论 -
java实现树形菜单
最近要做一个菜单接口,父菜单下面有子菜单,子菜单下面还有子菜单,要实现树形结构返给前端。数据表设计CREATE TABLE `platform_menu` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜单id', `menu_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单名称', `menu原创 2021-09-05 12:42:19 · 12130 阅读 · 0 评论 -
java省市县级联查询
数据库建立省市表CREATE TABLE `platform_area_info` ( `id` int NOT NULL COMMENT '地区代码', `parent_id` int NULL DEFAULT NULL COMMENT '当前地区的上一级地区代码', `area_name` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地区名称', PRIMARY原创 2021-08-29 14:12:39 · 2204 阅读 · 0 评论 -
Mybatisplus自动填充字段
做业务的时候经常会在进行增加、修改等操作时,给数据模型的一些通用操作属性(如:创建人、创建时间、修改人、修改时间等)自动赋值。Mybatis拦截代码如下,该实现是在DAO层拦截,即存入DB前最后一层。import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;import lombok.extern.slf4j.Slf4j;import org.apache.ibatis.reflection.MetaObject;impo原创 2021-07-20 11:19:51 · 1203 阅读 · 0 评论 -
@EnableAsync@Async多线程异步执行
我们在使用多线程的时候,往往需要创建Thread类,或者实现Runnable接口,如果要使用到线程池,我们还需要来创建Executors,在使用spring中,已经给我们做了很好的支持。只要要@EnableAsync就可以使用多线程。使用@Async就可以定义一个线程任务。通过spring给我们提供的ThreadPoolTaskExecutor就可以使用线程池。定义配置类,如果不配置可直接将@EnableAsync注解加到启动类上面import org.springframework.aop.i原创 2021-04-29 15:53:09 · 446 阅读 · 0 评论 -
数据库保存数组数据
最近学Vue,前端有个下拉多选的组件,选完后传给后端的是个字符串数据,我用实体类字符串数组类型是存不到数据库的会报错,解决办法如下:实体类如下public class ProblemCheckRecording implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Integ原创 2021-04-01 15:39:45 · 11441 阅读 · 2 评论 -
频繁访问拒绝实现
import com.cm.kit.constant.ApiCodeConstant;import com.cm.kit.tool.ApiResult;import com.cm.kit.tool.IpUtil;import com.cm.shop.service.redis.RedisService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.servlet.Ha..原创 2020-12-03 23:12:46 · 179 阅读 · 0 评论 -
通过银行卡号获取对应银行名及LOGO
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;//根据银行卡号获得对应银行public class bankUtil { /** * TODO * @par.原创 2020-12-05 14:22:37 · 1919 阅读 · 0 评论 -
docker安装keycloak
拉取镜像docker pull mysql:5.7docker pulljboss/keycloak mysql (注意实际使用最好使用本地数据卷)docker run --name mysql -e MYSQL_DATABASE=keycloak -e MYSQL_USER=keycloak -e MYSQL_PASSWORD=password -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7keycloakdocker run -d ...原创 2020-09-27 21:31:28 · 1990 阅读 · 0 评论 -
使用Happy Capthca生成验证码
Happy Captcha是一款易于使用的Java验证码软件包,旨在花最短的时间,最少的代码量Maven<dependency> <groupId>com.ramostear</groupId> <artifactId>Happy-Captcha</artifactId> <version>1.0.1</version></dependency>Happy Captcha提供了图片和动原创 2020-05-18 09:25:10 · 754 阅读 · 2 评论 -
springboot多模块打包部署
父工程parent子模块 entity (实体类)子模块 dao (用于持久化数据跟数据库交互)子模块 service (处理业务逻辑)子模块 web (页面交互接收、传递数据,唯一有启动类的模块)关系: web依赖 service、dao、entityentity谁都不依赖,独立的service依赖 dao、entitydao依赖 entity创建springboot父工程parent创建后把src文件夹删除,然后创建模块entity,dao,service,we原创 2020-05-13 22:53:26 · 1475 阅读 · 0 评论 -
搭建springcloud feign使用案例
本文介绍搭建微服务的具体配置以及feign的使用,案例中有三个角色:服务注册中心、服务提供者、服务消费者。服务注册中心具体配置Pom依赖如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocatio原创 2020-05-09 19:33:58 · 166 阅读 · 0 评论 -
springcloud搭建Gateway网关
创建springboot项目,Pom依赖如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.a原创 2020-05-09 10:53:38 · 302 阅读 · 0 评论 -
springboot 全局日期格式化
方式一,配置properties文件配置,只针对于Date类型字段#jackson相关配置spring.jackson.date-format = yyyy-MM-dd HH:mm:ss#时区必须要设置spring.jackson.time-zone= GMT+8#ALWAYS的意思是即时属性为null,仍然也会输出这个key,对应yml里面的注释里面的类型spring.jacks...原创 2020-04-14 12:18:12 · 654 阅读 · 0 评论 -
springboot AOP防止表单重复提交
思路1.自定义注解@NoRepeatSubmit 标记所有Controller中提交的请求2.通过AOP对所有标记了@NoRepeatSubmit 的方法进行拦截3.在业务方法执行前,获取当前用户的token或者JSessionId+当前请求地址,作为一个唯一的key,去获取redis分布式锁,如果此时并发获取,只有一个线程能获取到。4.业务执行后,释放锁。5.使用Redis是为了在负载...原创 2020-03-31 17:30:39 · 592 阅读 · 0 评论 -
JVM内存溢出CPU飙升排查方法
一、内存不足查看linux内存使用情况free -m查看java 进程/线程对系统的占用情况top 看堆内存信息jmap -heap pid导出dump java堆数据jmap -dump:live,format=b,file=/dump_.dat pid打开jvisualVM-》文件-》装入-》堆dump二、cpu飙升top命令...原创 2020-04-19 18:56:38 · 1417 阅读 · 0 评论 -
java操作ElasticSearch
pom引入以下依赖 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>6.8.5</version...原创 2020-01-17 13:48:19 · 361 阅读 · 0 评论 -
java操作solr
pom引入依赖 <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version&g...原创 2020-01-14 14:06:14 · 328 阅读 · 0 评论 -
java汉字转拼音
需要下载pinyin4j.jar包,或者通过maven下载,依赖如下:<dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.0</version><...原创 2019-06-04 14:28:45 · 247 阅读 · 1 评论 -
java生成随机验证码
package com;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.Ima...原创 2019-05-15 15:02:49 · 1324 阅读 · 0 评论 -
布隆过滤器
import java.util.BitSet;/** * @Author: wangsheng * @Description: * @CreateDate: 2020/2/11 10:06 */public class BloomFilter { public final int DEFAULT_SIZE = (1 << 31) - 1; // m的值 ...原创 2020-02-11 10:37:54 · 235 阅读 · 0 评论 -
mybatis批量操作数据
pom <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1....原创 2020-04-19 19:00:52 · 220 阅读 · 0 评论 -
springboot整合jwt
简介Jwt全称是:json web token。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。优点简洁: 可以通过URL、POST参数或者在HTTP header发送,因为数据量小,传输速度也很快; 自包含:负载中可以包含用户所需要的信息,避免了多次查询数据库; 因为Token是以JSON加密的形式保存...原创 2020-01-18 23:11:22 · 576 阅读 · 0 评论 -
java线程池
使用线程池的优点1.避免线程的创建和销毁带来的性能开销。2.避免大量的线程间因互相抢占系统资源导致的阻塞现象。3.能够对线程进行简单的管理并提供定时执行、间隔执行等功能。创建线程池工具类import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class...原创 2020-01-13 12:28:13 · 300 阅读 · 0 评论 -
阿里云OSS上传文件
pom引入阿里云OSS依赖<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.8.0</versio...原创 2020-01-10 19:18:25 · 687 阅读 · 0 评论 -
java获取客户端IP地址
创建IPHelper工具类import javax.servlet.http.HttpServletRequest;public class IPHelper { public static String getIP(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-fo...原创 2019-12-06 11:14:56 · 509 阅读 · 0 评论