
Java
Jim~LoveQ
Java软件工程师
展开
-
无法注入properties文件中的值
一、在项目中有两个值需要从properties文件中获取,但是运行过程中值是null的,就是说启动时候没有把properties中的值注入成功。@Value("${rsa.encrypt.public}") private static String rsaPublicKey; @Value("${rsa.encrypt.private}") private static String rsaPrivateKey;二、解决方法:1. 对比引入的值的名称与propertie原创 2020-09-03 17:19:14 · 802 阅读 · 0 评论 -
Whitelabel Error Page
一、写了两个后端的API,测试的时候出现错误:Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Thu Aug 13 10:36:01 CST 2020There was an unexpected error (type=Internal Server Error, status=500).No converter for原创 2020-09-03 17:06:29 · 1364 阅读 · 0 评论 -
IDEA打包Maven项目
一、第一次需要在IntelliJ IDEA中打包Maven项目,弄了半天,才搞好,记录一下。二、打包步骤1. 在IntelliJ IDEA主界面的右侧点击Maven Project:2. 在打开的页面中点击lifecycle:3. 然后双击package:4. 然后看控制台的输出,成功的话会有BUILD SUCCESS字样出现的,否则就是有问题打包失败。"C:\Program Files\Java\jdk1.8.0_231\bin\java.exe" -Dmaven.multiModule原创 2020-09-03 16:01:01 · 2239 阅读 · 0 评论 -
SpringBoot多数据源配置
在用springboot开发项目时,随着业务量的扩大,我们通常会进行数据库拆分或是引入其他数据库,从而我们需要配置多个数据源,下面基于Spring-data-jpa配置多数据源,希望对大家有所帮助原创 2020-09-03 12:16:03 · 879 阅读 · 0 评论 -
IDEA编译java提示找不到符号
一、使用IDEA运行一个springboot项目的时候报错了:提示java提示找不到符号二、网站找了一下,试了不少方法,最后发现是idea的缓存问题,如下图操作就可以了:三、我这边是按了这个重启了就可以,也可以参考这篇文章的其他做法:IDEA编译java提示找不到符号四、总结:如果有疑问可以直接留言评论,如果觉得对你有帮助,可以小小的赞赏一杯奶茶钱,谢谢!!...原创 2020-09-02 12:15:15 · 4564 阅读 · 0 评论 -
Java与JavaScript正则表达式的区别
一、接受了一个项目,密码验证方面需要前后端使用一样的验证规则。我把后端的验证规则直接给我前端同事用,反正在前端中出现编译出错。二、对比了一下两个正则,发现是Java的正则里面有很多转义的\,然后查询了一下Java与JavaScript正则表达式的转义的规则,发现两个是不一样的。区别如下:(参考了此文章:[正则表达式]JavaScript与Java中正则表达式的区别)三、在后端中的Java的正则为:String regex = "^(?:(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])|原创 2020-09-02 11:39:10 · 3087 阅读 · 0 评论 -
RSA解密失败:javax.crypto.BadPaddingException : Decryption error
一、由于项目需要,前端把密码用RSA加密后传输到后端,后端进行RSA解密后再与数据库中的密码进行对比,接受到前端传过来的加密后的密码,在进行解密的时候出现错误了:javax.crypto.BadPaddingException : Decryption error二、仔细对比了前后端的RSA加密解密的设置,发现是一样的,本来以为是公钥和私钥的问题,换了不少公钥私钥之后还是有问题。然后无意中发现前端传过来的加密后的字符串和后端使用RSA加密后的字符串不一样。详细对比后,发现是字符串中的加号+变成了空白字原创 2020-08-11 12:24:54 · 18717 阅读 · 1 评论 -
IDEA运行项目报错:Command line is too long.
一、IDEA运行项目报错:Command line is too long. Shorten command line for MainApplication or also for Spring Boot default configuration.二、接手新项目后,导入到IDEA后,在run的时候出现问题:Error running 'SpringBootMainApplication': Command line is too long. Shorten command line for Spri原创 2020-08-11 11:46:31 · 751 阅读 · 0 评论 -
JPA之EntityManager踩坑笔记:更改PersistenceContext
一、原因:项目中配置两个Spring JPA的数据源,使用EntityManager的时候默认是选择第一个,导致查询不到第二个数据源的数据。二、Spring JPA多数据源怎么使用EntityManager1. Spring JPA多数据源的配置请查看此文章:SpringData JPA基本/高级/多数据源使用2. 引入EntityManager:@PersistenceContext(unitName = "primaryPersistenceUnit")private EntityManage原创 2020-07-21 17:57:35 · 5701 阅读 · 1 评论 -
yyyy-MM-dd‘T‘HH:mm:ss - 里面的‘T‘是什么意思
一、原因:今天在编写junit测试的时候发现有个日期一直显示解析失败(如下图),查看具体代码之后发现是日期格式的问题,日期格式是:yyyy'-'MM'-'dd'T'HH':'mm':'ss失败提示:java.text.ParseException: Unparseable date: "2020-07-19 09:00:00" at java.text.DateFormat.parse(Unknown Source) at com.hkt.cch8.drgo.DrgoApplicationTes原创 2020-07-20 11:02:42 · 11542 阅读 · 0 评论 -
Junit测试异常:could not initialize proxy - no Session
could not initialize proxy - no Session的异常分析一、今天在使用Junit编写项目的测试的时候,发现出现一个错误:org.hibernate.LazyInitializationException: could not initialize proxy [com.hkt.cch8.drgo.openemr.entity.Facility#3] - no Session at org.hibernate.proxy.AbstractLazyInitializer.i原创 2020-05-27 15:50:52 · 462 阅读 · 0 评论 -
Linux系统安装之JDK各版本安装
Linux安装JDK完整步骤一、下载1. 先查询系统的版本和系统是多少位的,具体方法请查看此文章:查询Linux系统版本的命令2. 在官网下载对应版本的JDK,官网地址:https://www.oracle.com/java/technologies/,进去后在右下角选择需要的版本进行下载就行了。要是官网下载很慢,可以去这里下载二、卸载旧版本,如需卸载方法请参看此文章:Linux安装JDK...原创 2020-04-15 17:01:37 · 336 阅读 · 0 评论 -
Maven build 报错:No goals have been specified for this build
在Eclipse中使用maven build一个项目,步骤如下:然后在build的时候出现报错:No goals have been specified for this build详细信息如下图解决方法:添加下面的代码到goals中dependency:copy-dependencies原因我也是还没弄明白,有兴趣的可以参考这篇文章的第四点:4. dependency插件...原创 2020-04-03 23:23:07 · 676 阅读 · 0 评论 -
mybatis中LIKE模糊查询
mybatis中LIKE模糊查询mybatis 中模糊查询有几种方式的,我主要用了下面的方式利用关键字CONCAT拼接,如下<select id="getByTitleAndCorpAccId" parameterType="java.util.Map" resultMap="BaseResultMap"> select <include r...原创 2020-01-08 14:32:03 · 631 阅读 · 0 评论 -
IP判断正则表达式
最简洁的IP判断正则表达式最近的项目需要进行IP地址的匹配,在网上找了不少正则,找到一个相对简单点的:^((25[0-5]|2[0-4]\d|[01]?\d\d?)($|(?!\.$)\.)){4}$更多具体的信息请参考此文章:https://www.cnblogs.com/Zjmainstay/archive/2013/03/22/js_ip_RegExp.html...原创 2019-12-31 16:43:19 · 453 阅读 · 1 评论 -
BigDecimal常用的加减乘除算法
BigDecimal有个项目中前端传了一个小数过来,使用JSON格式传过来的,我在后端接受后使用了一些常见的类型去接收发现都是出现问题,最后直接把接收的结果的类型打印出来才发现原来是使用BigDecimal。BigDecimal初始化: BigDecimal num1 = new BigDecimal(0.05); BigDecimal num2 = new B...原创 2019-12-31 16:26:00 · 332 阅读 · 0 评论 -
HttpClient的各个方法详情
HttpClient有好几个不同方法:HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式:OPTIONS - 返回服务器针对特定资源所支持的HTTP请求方法。 也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。HEAD - 向服务器索要与GET请求相一致的响应,只不过响应体将...原创 2019-12-09 15:16:17 · 488 阅读 · 0 评论 -
Java中String转换成char
Java中String转换成char今天在项目中需要讲前端传过来的String字符串转成char保存到DB,突然不知道怎么写了,问了度娘才知道使用 String.charAt( index ) 方法,返回在index位置的char字符。(返回值:char )使用 String.toCharArray( ) 方法,将String 转化为 字符串数组。(返回值:char[] )如果需要看cha...原创 2019-12-05 17:34:58 · 25699 阅读 · 0 评论 -
Cannot determine value type from string 'xxxxxx'
今天使用mybatis时候出现一个报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string 'C00001'网上找的资料说是字段,或者属性没对上,又或者是缺少无参构造器最后检查一遍发现是有个字段的名字跟实体类的对不上,还有个字段的属性写错了,本来是string的,结...原创 2019-11-28 10:13:45 · 3213 阅读 · 1 评论 -
gradle编译、打包时跳过test测试
gradle编译、打包时跳过test测试单单使用gradle build的时候会把测试类的方法也一起编译执行,这样就会导致一些测试数据会保存在DB中,为了避免这个情况出现,需要在编译或者打包时候跳过test的方法,使用以下的命令:gradle build -x test更加详细的情况请参考这篇文章:https://www.jianshu.com/p/61c5d163a4c9...原创 2019-06-21 17:53:05 · 11116 阅读 · 0 评论 -
Linux 安装RabbitMQ
因为项目中使用到RabbitMQ,所以需要在server中安装RabbitMQ,否则项目就运行不起来。我的server的系统版本是Redhat 7, 安装方法请参考此文章:https://blog.youkuaiyun.com/qq_37495786/article/details/82878624我就是按照文章中的方法成功安装的。要是出现Connection failed,可以看看是否需要设置代理,我...原创 2019-07-10 10:30:32 · 231 阅读 · 0 评论 -
mybatis报Could not find result map java.lang.Integer之类的错误
前两天在新项目中写了几个mapper,dao,service,然后使用junit测试是没有问题的,可是今天再次测试的话就发现突然不行了,之前可以junit成功的test全部都在启动时候报错,报的错为:org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.lang.Integer...原创 2019-08-01 11:30:15 · 515 阅读 · 0 评论 -
Java String字符串转Json
DB中是数据是JSON类型的,使用mybatis查出来是String类型,本来是想直接查询出来json类型的,但是发现找到的方法都不行,最后只能把json类型的数据都是用String类型查出来。查询出来之后需要把String类型重新转换成json类型,方法如下:String allowTps = "{\"api_max_tps\": 1, \"mms_max_tps\": 1, \"sms_m...原创 2019-08-01 11:42:02 · 432 阅读 · 0 评论 -
向上取整、Math.ceil() 不生效
问题:向上取整、Math.ceil() 不生效使用向上取整方法,然后发现没有效果:int mmsCount = (int) Math.ceil(130/60);结果是2,但是我想要的结果是3,后来发现,因为130和60都是int类型,int类型相除的时候已经是向下取整了,结果已经变成2了,这时候再使用向上取整结果还是2.解决方法:先把int类型变成小数,然后相除就不会向下取整了:int...原创 2019-09-06 17:46:05 · 4393 阅读 · 3 评论 -
SQL优化 COUNT()优化 SUM(ID='ID')替代COUNT()
SQL优化 COUNT()优化 COUNT(*)优化 SUM(ID=‘ID’)替代COUNT()平时使用count来计算数据库中的数据的数量,但是在数据量大的时候考虑用sum。以下的例子是在一千万的表中查询数据,结果是采用连续查询五次的平均值,可以发现:1.在只是查询一个结果的时候,count的时间和sum的时间是相差很小,不过我的项目部署上线测试发现,实际上count的效率比c...原创 2019-03-27 09:31:22 · 524 阅读 · 0 评论 -
Spring Boot - Gradle 打包
Spring Boot项目需要打包部署到Linux上,使用的是Gradle 打包,并且需要把Spring Boot内置的Tomcat一起打包到项目中,在网上找了不少资料,终于是找到方法了,详情可以参考这篇文章:https://blog.youkuaiyun.com/stupid56862/article/details/86363292Spring boot 打可执行 jar 包 , 默认情况下, 直接打包...原创 2019-06-21 17:41:13 · 459 阅读 · 0 评论 -
Linux后台运行jar包
部署jar包,war包到Linux Server:项目打包成jar包或者war包,并且把项目放到Linux上进入jar包或者war包所在的目录,使用命令启动jar包或者war包:$ java -jar mmscm-web.jar或者$ java -jar mmscm-web.war关闭运行的jar包或者war包,使用命令:netstat -nlp |grep :8080查看进程ID,然后...原创 2019-06-21 17:24:41 · 361 阅读 · 0 评论 -
【Java】对文件或文件夹进行重命名
本文属转载文章,原出处已找不到,如有侵权请联系博主删除。在Java中,对文件或文件夹进行重命名是很简单的,因为Java的File类已经封装好renameTo的方法。修改文件或者文件夹的名字都使用这个方法。例如如下的程序:import java.io.*; public class renameTest { public static void main(String[]...转载 2019-03-27 17:54:47 · 1007 阅读 · 0 评论 -
struts2 解决拦截器的对于参数传递无效问题
struts2 解决拦截器的对于参数传递无效问题一、今天做项目时,使用拦截器对用户权限检查。拦截器本身没有问题,可是实现权限拦截,但是传递的参数全部都无效了。搞了很久,由于对拦截器的内部机制不是特别熟悉,所以重新研读了一下Struts2的拦截器。找到了原因:给一个Acton配置一个自定义拦截器后,此action就无法使用框架默认的拦截器栈了,这就导致前后台数据传输无效。使用的配置如下:<...原创 2019-03-27 09:32:35 · 441 阅读 · 0 评论 -
struts2 拦截器
struts2 拦截器本文属转载文章,原出处请查看下方原文:http://blog.youkuaiyun.com/csh624366188拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你在Action和result被执行之前或之后进行一些处理。同时,拦截器也可以让你将通用的代码模块化并作为可重用的类。Struts2中的很多特性都是由拦截器来...转载 2019-03-27 09:32:25 · 168 阅读 · 0 评论 -
Action中五个常量解释,(success,error,input,login,none)
Action中五个常量解释,(success,error,input,login,none)英文注释中文释义staticString ERRORThe actionexecution was a failure. Show an error view, possibly asking theuser to retry entering data.Action执行失败。显...原创 2019-03-27 09:32:16 · 791 阅读 · 0 评论 -
CSV 文件 上传 乱码
CSV 文件 上传 乱码项目有上传csv文件的功能的,一开始upload中文的文件是没有乱码出现的,但是某一版本开始就出现乱码了。调试了很多方法,发现上传的格式是没有错的,请求的编码和接受的编码是一致的,但还是出现乱码。后来检查代码发现是读取csv文件的时候出现乱码,原来的写法是没有规定使用哪种编码来读取csv文件,所以读取出来的代码乱码了,更换了读取csv文件的写法,并使用UTF-8编码格...原创 2019-03-27 09:32:08 · 1304 阅读 · 0 评论 -
判断字符串String是否为空问题
判断字符串String是否为空问题一、判断一个字符串str不为空的方法有:1、str == null;2、"".equals(str);3、str.length <= 0;4、str.isEmpty();注意:length是属性,一般集合类对象拥有的属性,取得集合的大小。例如:数组。length就是取得数组的长度。length()是方法,一般字符串类对象有该方法,也是取得字符...原创 2019-03-27 09:31:31 · 443 阅读 · 0 评论 -
MySql报错:Packet for query is too large。设置参数:max_allowed_packet
服务器的日志一直报Packet for query is too large (7632997 > 4194304). You can change this value on the server by setting the max_allowed_packet’ variable.的解决方法max_allowed_packet 值设置过小将导致单个记录超过限制后写入数据库失败,且后续...原创 2019-03-27 09:31:12 · 1307 阅读 · 0 评论 -
使用主键或者索引提高SQL语句效率的建议
SQL语句提高效率的建议执行delete事务时候如果发现效率很低,可以先查看是否根据主键来查询需要delete的语句,如果有四个主键,但是delete时候只是根据三个主键来决定需要delete的数据的条件,将会使得sql语句的效率非常低例子第一条sql语句:String sql = "";sql = "DELETE FROM `mmscm`.MSISDN_DETAIL WHERE AC...原创 2019-03-27 09:30:54 · 895 阅读 · 0 评论 -
Mysql批量插入executeBatch测试
Mysql批量插入executeBatch测试第一次:没有设置手动提交,jdbc自动提交,代码如下:public void test23(){ Connection conn = new ConnectionManager().newConnection(); PreparedStatement ps = null; try { St...原创 2019-03-27 09:30:46 · 473 阅读 · 0 评论 -
陷阱:使用==来比较原始的包装器对象,如Integer
陷阱:使用==来比较原始的包装器对象,如 Integer49(这一缺陷同样适用于所有的原始包装类,但我们会说明它Integer和int。)使用Integer对象时,使用它==来比较值是很诱人的,因为这是您将使用的int值。在某些情况下,这似乎有效:Integer int1_1 = Integer.valueOf("1");Integer int1_2 = Integer.valueOf(...原创 2019-03-27 09:30:32 · 137 阅读 · 0 评论 -
比较两个日期的大小
比较两个日期的大小public void test17() throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); // 2017-06-05 15:36:25 Date date1 = sdf.parse( "2...原创 2019-03-26 16:12:39 · 4626 阅读 · 0 评论 -
如何将long类型的时间变量转变为标准时间
如何将long类型的时间变量转变为标准时间long timeLong = 1264432988;Date date = new Date(timeLong);SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");System.out.println(df.format(date));...原创 2019-03-27 17:54:56 · 2419 阅读 · 0 评论 -
时间 日期 转换
时间戳去掉毫秒数:public void test56() throws ParseException { Timestamp timestamp = new Timestamp(System.currentTimeMillis()); System.out.println("old time stamp: "+timestamp); SimpleDateFormat sdf = ne...原创 2019-03-27 17:55:28 · 220 阅读 · 0 评论