java
奔跑-lhs
这个作者很懒,什么都没留下…
展开
-
mybatis使用相关问题汇总——持续更新中
旨在整理工作中mybatis使用所需配置原创 2022-05-30 15:24:26 · 221 阅读 · 0 评论 -
工作中遇到的异常以及解决方法整理,持续更新
1.异常:java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64解决方案:加入驱动包 <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.6</version>原创 2022-05-20 10:39:31 · 658 阅读 · 0 评论 -
简单好用将bean转为xml结构
偶尔因为对接或者需求,需要把bean转为xml数据结构,各位网友用时,直接复制到自己idea中,测一下再根据自身需要调整就行首先组装的对象类例:对象类:lhstmqimport javax.xml.bind.annotation.XmlAttribute;import javax.xml.bind.annotation.XmlRootElement;import javax.xml.bind.annotation.XmlType;/** * 这个类是xml的头信息配置 */原创 2022-04-14 11:27:25 · 2107 阅读 · 0 评论 -
如何给idea配置JProfiler,分析本地运行项目
第一步:首先给自己电脑下载JProfiler软件,记录你的安装目录;如果没购买,可以在安装使用时,选择 试用10天,而不是放lincense第二步:给idea安装JProfiler的插件,如下图:安装好以后重启idea;第三步:给idea配置JProfiler的执行程序,如下图,这里选择你自己本地安装的JProfiler软件安装目录bin里的.exe;点击apply;第四步:点击下图中圈出的按钮,运行你的项目,就会启动你的JProfiler,对项目运行状况进...原创 2021-11-01 19:39:07 · 4198 阅读 · 0 评论 -
注解@JsonFormat和@DateTimeFormat对时间格式进行转换控制
注解@JsonFormat(对外提供查询结果时使用)使用场景案例:在对外提供接口时,数据库的时间字段begin_time的值,在数据库显示正常,结果一查询反馈给接口调用方的时间字段值的格式毕竟乱,这个时候需要在我们接口内的实体类加上此注解:@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")pattern:是想转换的时间日期的格式timezone:时间设置为东八区,避免时间在转换中有误差注解@DateTime原创 2021-10-08 11:47:22 · 1414 阅读 · 0 评论 -
用fastjson进行字符串/对象转map/实体类对象/List等系列操作
首先,在使用 com.alibaba.fastjson 时,纠结使用JSON还是JSONObject时,看看下图相信你就悟了,满足需要即可;后端常用的转换操作如下:// 使用com.alibaba.fastjson 将 普通对象/字符串 转为实体类对象 VehicleMinutesDO vehicleMinutesDO = JSON.parseObject(countCircleStr, VehicleMinutesDO.class); VehicleMinu.原创 2021-10-08 11:04:32 · 1824 阅读 · 0 评论 -
springboot里@Scheduled定时任务没有按时执行
如图的定时任务,本地跑正常,生产就出问题,不按时执行:原因:@Scheduled 默认是单线程的,一旦某个定时任务比较耗时,就会导致线程阻塞,影响其他定时任务的执行;解决方案:第一种,自己去配置多线程去执行定时任务第二种:使用springboot自带的异步线程注解 定时任务上增加@Async注解,并在启动类上增加@EnableAsync注解...原创 2021-09-17 09:50:55 · 2187 阅读 · 0 评论 -
避坑版:springboot+JPA如何配多种数据源(postgresql+mysql)
注意: JPA和mybatis是不同的持久层,各自特点独特,与mybatis相比,JPA需要考虑对数据源的映射和操作,通常我们设置在项目启动时,JPA就会根据设置去创建或者更新表,因此不能像mybayis那样等到调用时再去告诉方法用哪个数据源,JPA需要一开始就设定好repository和entity所对应的数据源,在下列文件repository里你可以看到相关设置;坑,请注意,网上有很多的JPA配多种数据源,但是他们都缺失一点,连方言都没有设置,有的压根不知道这回事,要知道,JPA原创 2021-09-08 10:24:51 · 2499 阅读 · 0 评论 -
springboot+mybatis如何配多数据源
从目前工作中常用的框架来讲;一种是 springboot+mybatis;另一种是springboot+JPA;两种持久层,配多数据源自然也有区别;且 多数据源 和 多种数据源 也是有区别的;千万不要稀里糊涂混为一谈!1、springboot+mybatis配置多数据源...原创 2021-09-08 10:00:56 · 126 阅读 · 0 评论 -
由于使用JPA会操作表,加索引的操作也需设置在实体类上,
设置唯一索引@Table(name = "表名",uniqueConstraints=@UniqueConstraint(columnNames="字段1,字段2"))设置普通索引@Table(name = "ihswfld_vehicle_pass", indexes = {@Index(columnList = "road_id"), @Index(columnList = "pass_time"), @Index(columnList = "config_type..原创 2021-09-01 09:51:18 · 148 阅读 · 0 评论 -
IDEA设置代码注释模板后创建文件自带注释
打开idea,按照如图操作:按照上图设置后,再创建java文件时,就会带上自定义注释了原创 2021-08-27 09:44:45 · 174 阅读 · 0 评论 -
简单快速生成序列化ID
如下图照着操作:setting-->insppections-->java-->Serializable class without "serialVersionId"勾选后,点击 apply,点击ok;在实体类中选择 类名,按快捷键 ALT+ENTER就会出现提示生成序列化ID的按钮,点击就可以了;...原创 2021-08-25 14:45:44 · 2370 阅读 · 0 评论 -
java线程池的逻辑原理
注意:经常使用线程池,那你就必须懂的其运作原理,不说刨析源码,最起码要知道思想逻辑;线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。1. 线程复用每一个 Thread 的类都有一个 start 方法。 当调用 start 启动线程时 Java 虚拟机会调用该类的 run方法。 那么该类的 run()原创 2021-08-09 15:26:17 · 233 阅读 · 0 评论 -
JVM工具怎样远程连接
jconsole与Jvisualvm远程连接通常我们的web服务都输部署在服务器上的,在window使用jconsole是很方便的,相对于Linux就有一些麻烦了,需要进行一些设置。1.查看hostname,首先使用hostname -i查看,服务器的hostname为127.0.0.1,这个是不对的,需要进行修改2.修改hostname修改/etc/hosts文件,将其第一行的“127.0.0.1 localhost.localdomain localhost”,修改为:“1..原创 2021-07-19 11:02:57 · 793 阅读 · 0 评论 -
红色避坑警告:mysql数据库 sum() 函数用法避坑
场景描述:工作中拿到一个小需求,要求给智能推荐能力做一个简单的推荐量统计与推荐明细记录;SELECT IFNULL(sum(user_id),0) SUM(tks.TOTAL_CLCK_QUT) allCount,SUM(tks.MON_CLCK_QUT) monthCount,SUM(tks.WEEK_CLCK_QUT) weekCount,SUM(tks.DAILY_CLCK_QUT) dayCount FROM t_kc_doc_edit_pus pus JO.原创 2021-05-28 10:34:08 · 982 阅读 · 0 评论 -
ExecutorService等所有线程执行完毕,并设置超时时间
1、工作中遇到的业务处理需要:例:生产问题:生产上一个常用的会话接口,此接口内集成了5个外部接口能力(python的,Java的,其中每个接口基本耗时2~3秒),原有会话接口里是依次去调用的, 这就导致用户体验很差,因为2乘5也就是10秒,也就是说会话接口耗时10秒起步;解决方案:将原来的依次调用,改为多线程异步调用,等所有线程的调用都处理结束后,再去统一处理封装数据,因为多线程异步的原因,一个接口调用耗时2~3秒, 则...原创 2021-04-13 22:01:38 · 1781 阅读 · 0 评论 -
java项目代码中数据源密码加密
1.添加依赖 <!--加密依赖--> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>1.14</version> ...原创 2021-03-12 10:31:55 · 513 阅读 · 0 评论 -
html5进行批量文件上传,以及接口接收
1. 前端页面以及JS代码:<form id='upload--docx-form' method='post' enctype='multipart/form-data'> <input type="file" name='file' id="uploadDocxs" multiple size="80" accept=".docx" /> <input type="button" id="knowle原创 2021-01-04 11:36:30 · 1199 阅读 · 0 评论 -
使用Spring Security的项目中进行异步操作导致安全上下文丢失
问题出现场景:因业务需要高效批量处理,于是起了线程池,异步批量处理,但是处理操作的代码中获取用户信息失败 !!!debug时发现异步子线程中的SecurityContextHolder为null,鉴权信息不存在,原因是:研究SecurityContextHolder, SecurityContext和Authentication对象的内容,发现安全上下文默认是存储在ThreadLocal也就是线程本地的,启动其他线程执行的时候,当然就会丢失掉上下文信息;于是,想到解决办法:在起异步子线程时,手动原创 2021-01-04 11:20:50 · 1100 阅读 · 0 评论 -
常用的两种简便等待所有线程执行结束方式
使用线程池异步批量处理请求,有两种常用的等待所有线程执行结束的方式:1.CountDownLatch概念逻辑CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDo.原创 2021-01-04 09:44:23 · 3625 阅读 · 0 评论 -
关于java进行百万数据导出excel
使用SXSSFWorkbook 进行百万数据导出添加依赖:<!--自行补充添加的poi--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency>导出操作的代码:public stat原创 2020-07-20 11:02:51 · 265 阅读 · 0 评论 -
JAVA 集合整理汇总
1.集合的--接口继承关系和实现集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。 1. Collection:Collection 是集合 List、Set、Queue 的最基本的接口。 2. Iterator:迭代器,可以通过迭代器遍历集合中的数据 3. Map:是映射表的基础接口2.ListJava ...原创 2020-04-03 11:52:22 · 156 阅读 · 0 评论 -
常说的几种java算法
1. 二分查找又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置 的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小, 则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。public static int biSearch(int []array,int a){ int lo=0; ...原创 2020-04-03 11:25:03 · 415 阅读 · 0 评论 -
几种加密算法
1. AES 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传 输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下2. RSA RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广 泛的非对称加密算法。 非对称加密是通过两个...原创 2020-04-03 10:06:45 · 5071 阅读 · 0 评论