- 博客(29)
- 资源 (4)
- 收藏
- 关注
原创 Java通过Redis保存用户自定义数据
使用场景:系统中某些操作习惯的数据需要根据每个用户的习惯保存成不同的效果,我们可以通过redis来保存这些数据。代码实现:import com.ruoyi.common.core.utils.SecurityUtils;import com.ruoyi.common.core.web.controller.BaseController;import com.ruoyi.common.core.web.domain.AjaxResult;import com.ruoyi.common.r
2021-07-28 14:05:36
516
原创 解决项目中报表统计SQL执行缓慢的方案-数据预处理
使用场景:由于表数据量巨大,导致一些统计相关的sql执行非常慢,使用户有非常不好的体验,并且sql和数据库已经没有优化空间了。(并且该统计信息数据实时性要求不高的前提下)解决方案:整体思路:创建预处理表——通过定时任务将数据插入到结果表——统计信息时直接通过结果表进行查询——大大提高响应速度注:1.结果表中需要包含查询条件里的所有字段2.定时任务可以根据实际需要设定频率3.最好创建一个与结果表表结构一样的临时表用于数据暂存,防止在插入数据这个时间段上导...
2021-07-07 13:53:27
1312
原创 一个非常好用的java导出excel工具类
第一步:pom中引入依赖<dependency> <groupId>net.sf.jxls</groupId> <artifactId>jxls-core</artifactId> <version>1.0.6</version></dependency>第二步:编写接口服务和实现类接口:package com.unicom.buintelligence.se.
2021-07-07 10:02:46
1380
原创 Java数组去重
package com.zxj.test;import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;public class Test { public static void main(String [] args) { String [] arrStr = {"Java", "C++",..
2021-06-08 13:38:22
225
原创 Java下载某个路径下的文件(https)
工具类如下:/** * 下载某个路径下的文件(https) * @param path * @param response */public static void download(String path, HttpServletResponse response) { if (path==null||path.equals("")) { throw new ParamsException("文件不存在或已被删除"); } InputStream
2021-05-07 15:41:43
605
原创 Java访问外部接口工具类
使用场景:本地Java工程需要访问外部接口获取数据。第一步:添加mven依赖<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.10</version></dependency>第二步:编写工具类pac
2021-03-24 15:24:01
443
原创 linxu强制杀掉某进程命令,过滤grep进程
使用场景:编写启动脚本杀掉相关进程。命令实现:#!/bin/bashkill -9 `ps -ef|grep kkFileView|grep -v grep|awk 'NR==1{print $2}'`kill -9 `ps -ef|grep port=8100|grep -v grep|awk 'NR==1{print $2}'`说明:kkFileView为要查找的进程中包含的字符串grep -v grep表示排除掉grep进程。...
2021-03-05 13:37:00
282
原创 springBoot项目解决跨域问题
使用场景:当前后台地址不在一个域上的时候会出现跨域的问题,此时需要服务端解决跨域问题。解决方法:1.添加如下类即可解决跨域问题package com.gocom.buintelligence.config;import org.springframework.stereotype.Component;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.springframew
2021-03-03 14:10:46
228
原创 实现一个抽奖的逻辑:根据任务碎片权重获取一个碎片
场景:通过做任务随机生成一个任务碎片,并且通过其设置的权重计算产出的概率;代码实现:/*** 根据任务碎片权重获取一个碎片* @return MfxyTaskFragment* 说明:* 首先计算出待选奖品的总权重,这样做的目的是可以随意设置奖品权重,不必再考虑权重之和是否等于100。* 随机规则是首先生成一个随机数randomNumber(生成的随机数位于0到1的左开右闭区间),* 然后分别计算出当前奖品前前面所有有奖品(不包括当前奖品)的概率和d1和当前奖品后面(包括当前奖品)所有...
2021-03-01 16:07:34
302
原创 springboot项目中添加定时任务
第一步:在application.properties配置文件里配置cron表达式gocom.dataPanel.cron="0 0 15 * * ?"yml文件配置gocom: task:dataPanel:cron: "0 0 15* * ?"第二步:在执行任务的方法上添加注解@Scheduled@Scheduled(cron = "${gocom.task.dataPanel.cron}")public void evaluateUs...
2020-12-03 17:20:39
460
原创 mysql数据库使用sql实现分组排序
mysql实现分组排序第一步:创建表DROP TABLE IF EXISTS `bpo_employee_data`;CREATE TABLE `bpo_employee_data` (`id` varchar(50) NOT NULL COMMENT '主键',`batch` varchar(10) NULL COMMENT '月份',`occur_time` date NULL COMMENT '日期',`project_id` varchar(50) N...
2020-12-03 16:33:01
691
原创 mybatis中的自定义TypeHandler处理PostgreSQL中的Jsonb类型
1.自定义typeHandler类型mybatis默认是没有实现jsonb类型字段对应的TypeHandler,所以一般我们需要自定义mybatis的TypeHandler的一个简单实现:package com.jiarui.operlog.util.typehandler;import org.apache.ibatis.type.BaseTypeHandler;import org.apache.ibatis.type.JdbcType;import org.apache.ibatis.typ
2020-11-11 17:01:43
2618
原创 Java后台接口在reponse header里添加前端可见的属性
使用场景:当后台数据更新需要通知前端同步更新缓存时,可以通过在接口拦截器里在response header里添加一个属性来通知前端。处理逻辑:1.管理用户缓存状态。import java.util.HashMap;import java.util.Map;/*** 管理前端用户是否需要清除缓存的状态*/public class CacheUtil {private static Map<String,Boolean> cacheMap = new HashMap&...
2020-11-06 13:33:47
1823
原创 Spring boot区分环境打包
第一步:在pom.xml文件中添加profile配置<profiles><profile><id>dev</id><activation><!-- Default Active Without Assign Parameter --><activeByDefault>true</activeByDefault>...
2020-11-06 13:32:23
863
原创 Java Web项目登录session管理的简单实现
使用场景:管理员修改用户权限信息后,需要将用户强制下线,重新登陆以获取最新权限。由于并不需要记录用户的其他信息,所以我使用了一个静态对象来管理用户相关的session.处理逻辑1.用户登录时记录用户session信息到一个静态对象中。@RequestMapping(value = "/success")@ResponseBodypublic Result<List<String>> success(HttpServletRequest request, Http
2020-10-22 11:26:13
1161
原创 Java web项目设置session过期时间
设置方式:再web.xml中定义以下内容:<session-config><session-timeout>20</session-timeout></session-config>说明:时间单位为分钟,也就是创建的session长连接会在20分钟后过期。session相关说明:定义session是基于cookie的一种会话技术,数据存放存放在服务器端。客户端在cookie携带JSESSIONID(tomcat服务器生成..
2020-10-13 13:26:37
1010
原创 java返回前端实体类json数据时如何忽略某个属性
使用场景:开发中有个Json字符串需要处理成JSON对象进行返回,所以原始的字段不需要返回只返回处理后的就行了。处理逻辑:使用@JsonIgnore注解就可以实现@Datapublic class UserVO { /** * 用户id */ private Integer id; /** * 用户名 */ private String username; /** * 密码 */
2020-10-10 16:54:51
7804
2
原创 PostgreSQL 中如何实现group_concat
之前在MySQL中使用group_concat,觉得超级好用。今天在PostgreSQL需要用到这样的场景,就去学习了一下。在PostgreSQL中提供了array_agg的函数来实现聚合,不过返回的类型是Array。如果我们需要得到一个字符串类型的数据时,可以通过array_to_string(array_agg(字段),',')方式来实现。当然也有更加方便的函数来实现,string_agg(字段,',')。例如:(查新员工信息,需要把角色合并)SELECT T.ID,T.us.
2020-10-10 16:08:11
11363
原创 List集合根据相同属性合并同类项
使用场景:开发中遇到一个需要对导入的Excel数据进行数据校验的需求,但是同一列的数据校验提示语可能就只是行数不同,其他都相同,由于我们的数据校验提示都是放到消息盒子里的,所以为了阅读方便,需要对同类型的校验信息合并同类项。处理逻辑:1.定义验证信息类需要重写equals入hashcode方法,定义merge方法(合并的逻辑:我这里是将行数拼接)import lombok.Data;@Datapublic class VerifyMessage { private St
2020-09-29 14:04:42
2394
原创 java枚举类管理成员之间有链表关系的使用场景
使用场景:开发中有一个用户导入数据验证的需求需要验证一个人的在职阶段填写是否有误验证要求人员表验证:在职阶段所填写的内容必须必须是提前定义好的在职阶段。其他表验证:1.根据工号关联必须与人员表的在职阶段保持一致。 2.如果员工表存在晋升日期,并且导入表里有每日的明细数据,则要求超过晋升日期的数据与员工表定义的在职阶段的下一个阶段一致。在职阶段:培训期、实操期、实习1、实习2、正式处理逻辑:1.定义在职阶段枚举类public e...
2020-09-28 14:10:57
248
原创 scp复制文件到带空格路径的server目录
问题:使用scp命令将文件上传的服务器的带空格的文件路径下尝试一:使用转义符"\"wangpeipei@bogon organization % scp -P 22 ./dashboard.efw* root@172.20.95.131:/report/hi-repository/Sample\ Reports/organization/root@172.20.95.131's password:scp: ambiguous target尝试二:使用两个转义符wangpeipei..
2020-09-09 18:06:24
2208
原创 Mac Docker安装mysql
一、查看docker状态$ docker image ls二、从Docker中拉取MySql镜像$ docker pull mysql(如果要拉去指定版本可以去https://hub.docker.com/_/mysql?tab=tags选择指定的版本下载)$ docker image ls创建并启动MySQL容器$docker run --name itxing-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306...
2020-09-04 18:18:53
299
转载 Spring中的@Transactional(rollbackFor = Exception.class)属性详解
序言今天我在写代码的时候,看到了。一个注解@Transactional(rollbackFor = Exception.class),今天就和大家分享一下,这个注解的用法;异常如下图所示,我们都知道Exception分为运行时异常RuntimeException和非运行时异常error是一定会回滚的如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。如果不想终止,则必须捕获所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了..
2020-08-31 16:07:57
926
原创 阿里巴巴Java编程规约之命名风格
1.【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例:_name / __name / $name / name_ / name$ / name__2.【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。正例:alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。反例:DaZhePromoti
2020-08-31 15:48:46
221
原创 [并发编程]通过AtomicBoolean类监控一个线程是否完成
特点:线程安全,多线程执行的时候是线程安全的线程安全主要体现在以下三个方面:原子性:提供了互斥访问,同一时刻只能有一个线程对它进行操作可见性:一个线程对主内存的修改可以及时的被其他线程观察到有序性:一个线程观察其他线程中的指令执行顺序,由于指令重排序的存在,该观察结果一般杂乱无序言归正传:背景:公司有个计算的需求,需要执行很长时间必须使用异步执行,然后监控其执行状态。代码实现:定义:private AtomicBoolean inCalAll = new Atomic
2020-08-28 18:33:42
262
原创 git命令
git常用命令介绍:1.检出仓库(以github上的项目为例)git clone git@github.com:Xiaomei-Zhang/operation_analytics.git(需要配置公钥才能以这种方式检出,具体方法可以网上搜索)2.git工作流你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。3.文件添加和提交git a
2020-08-12 17:55:26
83
转载 快速了解消息中间件
一、消息中间件相关知识1.概述个人理解就是一个消息传输的工具,一般用于数据量比较大的系统中,降低系统之间的耦合度,关注于数据的发送和接受。2、消息中间件的组成 2.1 Broker消息服务器,作为server提供消息核心服务 2.2 Producer消息生产者,业务的发起方,负责生产消息传输给broker, 2.3 Consumer消息消费者,业务的处理方,负责从br...
2020-02-23 11:24:39
390
转载 acegi 安全系统的配置
第一步:在web.xml中的配置 1、filterAcegi Filter Chain Proxyorg.acegisecurity.util.FilterToBeanProxytargetClassorg.acegisecurity.util.FilterChainProxy(FilterChainProxy包含了处理认证过程的filter列表,每个fi
2015-10-14 10:04:24
552
原创 tomcate未正常关闭错误
错误:严重: The web application [/MyJSPTest] created a ThreadLocal with key of type [com.sun.faces.util.Util出错,原因:tomcate后台未正常关闭。解决方法:在tomcate的bin目录下找到shundown.bat文件运行两次(确保已经关闭),然后再进行发布就可以了。
2015-10-12 16:44:58
438
MAC版 TablePlus_3.10.0_[TNT]_xclient.info.dmg
2021-03-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人