![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
快乐柠檬
每天进步一点点
展开
-
SpringBoot升级至2.7.x版本后,双斜杠路径报错404问题的解决
SpringBoot升级至2.7.x版本后,双斜杠路径报错404问题的解决原创 2022-07-20 18:02:55 · 3023 阅读 · 1 评论 -
从java字节码层理解i++和++i
程序目的从java字节码层理解,为何i = i++后,结果是+1之前的数值。而i=++i后,结果是+1之后的值。关键指令iload_<n>:从局部变量表获取值,并压入操作数栈。istore_<n>:出栈,然后存储到局部变量表。i++示例源码public class TestIPulsPlus { public static void main(String[] args) { int i = 8; i = i++;// i = ++i; Sy原创 2021-09-22 15:30:58 · 700 阅读 · 1 评论 -
Java自定义类加载器
如何自定义类加载器,加载自定义路径的.class文件,然后执行定义的方法?源码package com.hua.jvm.classloader;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.lang.reflect.Method;/** * <pre> * 程序目的:测原创 2021-09-18 17:46:14 · 342 阅读 · 0 评论 -
由mysql超时调整引发的线上故障
问题描述在线上访问医疗机构列表,随机出现访问失败。分析查看了sql执行计划,并不是慢查询导致。查看报错日志,摘录如下:org.springframework.dao.DataAccessResourceFailureException: could not extract ResultSet; nested exception is org.hibernate.exception.JDBCConnectionException: could not extract ResultSetCause原创 2021-03-18 17:13:49 · 323 阅读 · 0 评论 -
JdbcTemplate使用?占位符,查询带in条件的sql
概述使用JdbcTemplate,采用占位符写法,防sql注入攻击,带有in条件的处理拼接方法 /** * <pre> * 获取 PreparedStatement 需要的in sql 子句 * 如: * 空集合:('') * [1, 2, 3] (?,?,?) * </pre> * @param params * @return ...原创 2019-09-06 15:39:04 · 8430 阅读 · 3 评论 -
IntelliJ IDEA使用Maven构建成功却报错代码错误的解决办法
概述现象描述: Java项目使用Maven构建正常,但是启动项目时总报错:包不存在。解决原先以为是依赖的问题。但是又仔细想了想,把这个原因否决了,因为如果依赖有问题,那么Maven构建也应该报错才对。 后来想到可能是IDE的问题。 退出IntelliJ重新导入项目,问题解决。 记得import时,选择项目根目录的pom.xml文件。 按照提示一步一步配置,最后选择覆盖原有项目: 环境原创 2018-03-27 22:29:07 · 12282 阅读 · 0 评论 -
使用@SpringBootTest注解进行单元测试
概述@SpringBootTest注解是SpringBoot自1.4.0版本开始引入的一个用于测试的注解。基本用法如下:1. 添加Maven依赖<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </pro...原创 2018-03-26 10:42:48 · 198540 阅读 · 16 评论 -
Spring Boot 在日志中显示sql语句
在使用Spring Boot进行开发时,有时我们为了调试方便,需要输出sql语句,尝试了以下两种办法:show-sqlspring: jpa: show-sql: true不管用logginglogging: level: org: hibernate: SQL: DEBUG管用 打印效果如下:也可以...原创 2018-03-21 13:53:04 · 42270 阅读 · 5 评论 -
spring-boot环境切换失效的解决办法
概述最近在使用-Dspring.profiles.active=te 来切换spring-boot的环境时,发现日志打印的是:...ApplicationStartUp - The following profiles are active: de也就是说,参数失效了。 debug调试时,发现spring-boot读取的也是de,不是te。解决下载了一个新的tomcat,然后重新发布程序,设置参原创 2018-03-19 10:31:46 · 2601 阅读 · 0 评论 -
Java接口中的类
不能在接口内部放置任何代码,但是可以放置嵌套类(内部类),并且是自动public和static的。如:public interface ClassInInterface { void howdy(); /** * 接口中的内部类,可以实现其外围接口 */ class Test implements ClassInInterface { pu原创 2018-03-12 19:49:38 · 1494 阅读 · 0 评论 -
Maven install 报错"程序包不存在"问题的解决
概述在mvn clean install时,控制台各种报错,大概有: * .java:[8,52] 程序包com.xxx不存在 * .java:[98,27] 找不到符号 符号: 类 XXX 位置: 类XXX * [ERROR] COMPILATION ERROR : Caused by: org.apache.maven.plugin.compiler.Compilati...原创 2018-03-08 10:27:44 · 73532 阅读 · 6 评论 -
Maven引用自定义jar包
概述在项目中用了一个在Maven中央仓库没有的第三方jar包,Maven中该如何依赖呢? 如果引入不好,启动项目时会报: java.lang.ClassNotFoundException异常导入jar在项目src目录同级的目录下,新建lib目录,然后把jar包拖到这个目录里面在pom中引入依赖<dependency> <groupId>org.bouncycastle原创 2018-03-08 10:03:51 · 4325 阅读 · 0 评论 -
微信H5支付遇到的坑
网页唤醒微信APP时报错报错提示:商家参数格式有误,请联系商家解决 解决方案: 1. 当前调起H5支付的referer为空导致,一般是因为直接访问页面调起H5支付,请按正常流程进行页面跳转后发起支付,或自行抓包确认referer值是否为空 2. 如果是APP里调起H5支付,需要在webview中手动设置referer,如 (Map extraHeaders = new HashMap(...原创 2018-02-09 15:47:59 · 15124 阅读 · 0 评论 -
Java接口-多重继承-Java编程思想
概述最近把Java基础知识梳理了一下,发现了一些以前理解有偏差的地方,记录在此。疑问一个类同时继承基类和多个接口时,该类中是否可以不实现接口中的方法?一个类同时实现多个接口,能否向上转型到各接口?一个类同时实现多个接口,接口中的方法签名是否可以保持一样?代码解惑package think.in.java.interfaces;//: interfaces/Adven原创 2018-01-20 15:43:03 · 2331 阅读 · 0 评论 -
Java源码解析-迭代器
自己写一个迭代器/** * 迭代器接口 */interface Selector { boolean end(); Object current(); void next();}public class Sequence { private Object[] items; // 内部持有一个Object数组 private int ...原创 2018-02-09 07:13:47 · 989 阅读 · 0 评论 -
保留关键字(Reserved Words)导致的Jpa保存错误
使用Jpa操作数据库时,如果字段名称使用了数据库保留关键字,会报错:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server vers原创 2017-09-18 17:27:37 · 2192 阅读 · 0 评论 -
spring-boot项目的单元测试
Spring Boot Junit单元测试原创 2016-06-29 16:19:11 · 10429 阅读 · 2 评论 -
SpringBoot中aop的使用
步骤编写使用注解的被拦截类,加了这个注解的类或者方法就会被拦截使用@Aspect声明一个切面,并通过@Component让此切面成为Spring容器管理的Bean使用@After、@Befor、@Aroud定义建言(advice),可直接将拦截规则(切点)作为参数。这儿也是业务代码所在的地方在配置类上使用@EnableAspectJAutoProxy开启Spring对AspectJ的支持启原创 2016-12-18 13:41:10 · 4208 阅读 · 2 评论 -
IntelliJ安装JRebel热部署插件
参考: intellij idea 热部署 jrebel 详细配置 所需资源下载: jrebel_6.4.2a 概述JRebel是一个J2EE热部署的工具。使用它可以减少浪费8-18%的开发时间在项目的构建和部署上。之前只是听说过,一直没有实践,今天实际使用了一把,果然很好用。接下来把安装步骤写在下面,有需要的朋友可以看下。安装IntelliJ插件Settings–>Plugins–>原创 2016-07-18 16:18:38 · 4899 阅读 · 0 评论 -
使用jackson解析二维数组
maven依赖 <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-all</artifactId> <version>1.8.5</version> </dependency>java代码package原创 2016-06-12 20:48:05 · 3165 阅读 · 3 评论 -
参数名引发的血案
概况今天在解决一个Bug时,修改了原先的SQL语句,在数据库执行通过之后,复制到了项目中,使用MyBatis进行查询,却屡屡报错,现在把解决问题的过程记下来报错信息报错12016/04/29 13:51:20 ERROR ExamResultServiceImpl:50 - 查询视力检查结果异常org.springframework.jdbc.UncategorizedSQLException:原创 2016-04-29 15:12:09 · 3639 阅读 · 0 评论 -
redis报错Could not get a resource from the pool问题的解决
概述上线了一个新项目,结果报错:redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool at redis.clients.util.Pool.getResource(Pool.java:51) at redis.clients.jedis.JedisPo原创 2018-05-08 10:32:58 · 10270 阅读 · 0 评论 -
Charles把测试包APP链接重定向到本地环境
需求描述让测试环境的APP包、访问本地的项目,方便调试bug步骤1、启动本地项目,明确访问路径 2、配置手机端代理到PC 3、打开Charles 4、打开APP 5、打开Charles–&amp;gt;Tools–&amp;gt;Map remote… 6、新建一个映射 7、注意:map from 中的Path处,需要在项目名末尾加上“/*”,来转发此路径下的所有的reques...原创 2018-06-08 16:12:41 · 4929 阅读 · 0 评论 -
JdbcTemplate防止sql注入攻击的源码解析
概述使用spring中org.springframework.jdbc.core.JdbcTemplate进行sql上查询时,如果采用拼接sql的方式,是会发生sql注入攻击的。会发生sql注入的查询query(String sql, RowMapper<T> rowMapper)源码解析 @Override public <T> List<T> q...原创 2019-09-04 20:12:59 · 9858 阅读 · 0 评论 -
SpringBoot基于自定义注解简洁方便地实现Redis分布式锁
需求描述控制某个service的方法,当有线程调用了该方法后,其他线程不可再调用该方法基于自定义注解实现,使用时只需要在被调用的方法上添加注解标记即可redis的锁键(lockKey)通过自定义注解的属性传递进去客户端如果在当前时间不可执行该方法,可以得到及时的反馈转载请备注出处:SpringBoot基于自定义注解简洁方便地实现Redis分布式锁技能点使用spring-inte...原创 2019-07-31 17:35:41 · 2063 阅读 · 0 评论 -
Spring中RedisTemplate的使用
需求描述一个查询List的需求,如果redis有,就直接从redis中获取List返回。如果没有,则先查询,再保存入redis中。使用RedisTemplate实现。实现步骤添加maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>...原创 2019-07-16 17:36:25 · 653 阅读 · 0 评论 -
SpringBoot中java8的java.time.LocalDateTime类JsonFormat说明
问题概述在SpringBoot中,需要对java8的java.time.LocalDateTime类进行个性化的JsonFormat。处理前,默认处理的日期-时间效果 "create_time": { "year": 2019, "month": "JUNE", "month_value": 6, ...原创 2019-06-27 18:08:18 · 10850 阅读 · 2 评论 -
Spring Boot 在日志中显示sql语句
在使用Spring Boot进行开发时,有时我们为了调试方便,需要输出sql语句,尝试了以下两种办法:show-sqlspring: jpa: show-sql: true不管用logginglogging: level: org: hibernate: SQL: DEBUG管用打印效果如下:也可以实现指定包的日志级别,如:...原创 2019-03-04 15:32:02 · 1975 阅读 · 0 评论 -
Spring Boot 2.0+使用Redis做缓存,@Cacheable注解的unless参数详解
需求概述在Spring boot 中,用Redis作为缓存,在指定方法上使用@Cacheable注解,并且只缓存特定返回值结论@Cacheable中,unless参数的作用是:符合EL表达式条件的,不缓存。高效一些,我先把结论写在前面。感兴趣的朋友可以继续阅读具体的论证过程。部分代码实现具体方法import org.springframework.cache.annotation.C...原创 2019-02-01 18:52:21 · 23813 阅读 · 2 评论 -
Spring Boot 统一设置Json数据返回风格(Java驼峰命名转下划线)
编写重写了WebMvcConfigurerAdapter的配置类@Configuration@EnableWebMvcpublic class WebMvcConfig extends WebMvcConfigurerAdapter { /** * 统一输出风格 * See {@link com.fasterxml.jackson.databind.PropertyNamingS...原创 2018-12-12 17:34:43 · 13720 阅读 · 2 评论 -
Java Set接口contains(Object o)方法与对象hashCode()方法的关系梳理
概述接下来我们要讨论如下问题:1、Set接口的contains方法,判断是否包含的依据是什么?2、对象hashCode和equals方法之间的关系1、Set接口的contains方法,判断是否包含的依据是什么?我查看了一下接口文档,里面是这样描述的:该方法重写了Collection接口的contains方法Returns true if this set contains the ...原创 2018-10-09 10:20:13 · 1405 阅读 · 0 评论 -
微信公众号开发 获取openid时报错40163:code been used问题的解决
概述通过微信官方提供的接口https://api.weixin.qq.com/sns/oauth2/access_token接口,获取openid,结果获取不到。报错代码WechatUserInfo(accessToken=null, expiresIn=null, refreshToken=null, openid=null, scope=null, errcode=401...原创 2018-08-21 17:35:47 · 44241 阅读 · 1 评论 -
微信公众号开发 获取openid时报错40029 invalid code 问题的解决
概述通过微信官方提供的接口https://api.weixin.qq.com/sns/oauth2/access_token接口,获取openid,结果获取不到。报错代码WechatUserInfo(accessToken=null, expiresIn=null, refreshToken=null, openid=null, scope=null, errcode=40...原创 2018-08-21 17:30:11 · 47534 阅读 · 3 评论 -
SpringBoot+Druid报错Failed to determine a suitable driver class的解决
问题描述项目中使用了自定义的Spring Listener配置,从网络获取配置KV,在SpringBoot启动过程中加载,然后再加载Druid环境。程序启动时报错:***************************APPLICATION FAILED TO START***************************Description:Failed to auto-...原创 2018-08-13 18:23:58 · 11663 阅读 · 3 评论 -
Druid监控页面配置reset-enable的说明
最近使用到Druid数据库连接池,就研究了一番。 发现reset-enable 设置后: 监控页面的“重置按钮”并没有消失。 点击后也有反馈: 后来,做了以下尝试:设置为false修改yml文件中spring.datasource.druid.stat-view-servlet.reset-enable=false打开监控页面,发现:“重置”按钮有点击“重置”...原创 2018-07-19 15:56:40 · 6116 阅读 · 0 评论 -
关于jdbc链接SQLServer数据库的一些疑问
源代码是:import java.sql.*;public class ConnectionDemo {static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";private static final String url = "jdbc:sqlserver://localhost:1433;D...原创 2011-08-24 08:44:24 · 1737 阅读 · 3 评论 -
修改Maven的模块名
如果有一个现有的多模块Maven项目,想要修改其中的一个模块名,可这样进行:step 1修改子模块的project&gt;artifactId为新名称step 2修改父pom的project&gt;modules&gt;module名称step3注意:是在文件夹中直接修改该模块对应的文件夹名称。 在IDE里面修改,可能会有不吻合。IntelliJ中重新...原创 2018-07-23 17:20:44 · 6972 阅读 · 0 评论 -
Spring Boot 选择外部Tomcat运行,打war包的修改流程
有时候,使用Spring Boot发布程序时,我们不想使用内嵌的tomcat运行,还想用传统的war包到tomcat发布的方式,可以按照如下步骤进行:step1 修改pom的packaging为war&lt;packaging&gt;war&lt;/packaging&gt;step2 增加下面依赖覆盖内嵌的Tomcat依赖&lt;dependency&gt; &l原创 2018-07-23 16:40:21 · 836 阅读 · 0 评论 -
ArrayList中remove方法的注意事项
少罗嗦,先看代码public class ListRemove { public static void main(String[] args) { System.out.println(&quot;测试remove包装类型和非包装类型&quot;); ArrayList&amp;lt;Integer&amp;gt; myList = new ArrayList&amp;lt;Inte原创 2018-06-10 18:09:33 · 8811 阅读 · 2 评论 -
一个实体类基类实现
为了观察变量方便,我们一般会重写实体类模型的toString方法,但是每个类都写,有些冗余。其实,可以这样子:原创 2015-07-15 13:40:41 · 4310 阅读 · 0 评论