
Web开发遇到的问题
文章平均质量分 54
java web开发遇到的一些常见问题,包括tomcat、spring等问题
冷雨夜中漫步
这个作者很懒,什么都没留下…
展开
-
【Mysql常见问题】MySQL Error #1071 - Specified key was too long; max key length is 767 bytes
如果列值长度 > 768字节,那么前768字节依然在数据页,而剩余的则放在溢出页(off-page)。对于InnoDB来说,内存是极为珍贵的,如果把768字节长度的blob都放在数据页,虽然可以节省部分IO,但相对来说能缓存行数就变少,也就是能缓存的索引值变少了,降低了索引效率。在long blob列类型比较多的情况下用,可以降低off-page的使用,减少存储空间(一般40%左右),但要求更高的CPU,buffer pool里面可能会同时存储数据的压缩版和非压缩版,所以也多占用部分内存。原创 2025-01-17 22:45:50 · 1040 阅读 · 0 评论 -
java中double强制转换int引发的OOM问题
这里step为0,Math.floor(total / step) = Infinity,强制转为int后得到值为2147483647。Not-a-Number,非数字值,数学上0/0是无意义的,java在浮点运算中实现了NaN,定义为0.0/0.0。怀疑num过大导致,查看入参total为合理值,但是step是取配置值,配置未配置时默认为0,则问题代码为。根据单步步长step将total值划分后,然后进行处理。无限,分为正无限与负限小,定义为一个非0数字除以0。最近出现了一次OOM问题,问题代码如下。原创 2024-10-23 09:02:53 · 811 阅读 · 0 评论 -
Linux主机熵值不足导致SecureRandom线程阻塞问题
Linux主机熵值不足导致SecureRandom线程阻塞问题linux操作系统熵值不够,导致使用安全随机数时,长时间线程阻塞。问题定位使用jdk远程debug,发现线程堆栈停在SecureRandom.nextBytes()上,出现阻塞状态。表现为程序长时间无法向下运行。问题根因jre的安全随机数会使用linux的随机数生成器(在linux上实际上使用的是/dev/random或者/dev/urandom)来生成安全随机数,即提供永不为空的随机字节数据流。默认会使用阻塞算法获取随机数,如果熵值不原创 2022-10-11 23:36:26 · 3837 阅读 · 0 评论 -
@JsonAnySetter/@JsonAnyGetter在web开发中的作用
@JsonAnySetter原创 2021-10-28 01:15:13 · 1488 阅读 · 0 评论 -
解决mybatis报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
解决mybatis报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):检查mapper.xml文件是否在工程中生效检查dao层接口定义是否正确检查xml中mapper标签的namespace配置是否正确检查xml中语句配置是否正确1. 检查mapper.xml文件是否在工程中生效Mybatis的mapper.xml文件生效是由mapperLocations加载的SqlSessio原创 2022-07-21 17:26:19 · 906 阅读 · 0 评论 -
如何删除kafka中marked for deletion的topic
如何删除kafka中marked for deletion的topic如何删除kafka中marked for deletion的topic方法1 开启配置项delete.topic.enable=true方法2 Zookeeper中删除如何删除kafka中marked for deletion的topic如果Broker中没有开启配置项delete.topic.enable=true,则使用/bin/kafka-topics.sh --delete是不会彻底的删除一个topic,而是把topic的状态原创 2022-05-05 23:33:29 · 1396 阅读 · 0 评论 -
Docker容器运行报错standard_init_linux.go:228: exec user process caused: no such file or directory
报错信息standard_init_linux.go:228: exec user process caused: no such file or directory排查点在Dockerfile中使用了启动脚本entrypoint.shENTRYPOINT ["entrypoint.sh"]但是由于启动脚本entrypoint.sh实在Windows环境下编写的,文件编码方式不是unix,所以无法执行。修复使用cmder或git bash工具用vim打开启动脚本entrypoint.sh原创 2022-05-04 10:09:30 · 6775 阅读 · 0 评论 -
Mysql8数据库如何给用户授权
查看用户已有权限SHOW GRANTS FOR [用户名];使用root用户授予所有权限-- 授权GRANT ALL PRIVILEGES ON [数据库名].[表明] TO '[用户名]'@'[连接地址]' WITH GRANT OPTION;-- 刷新权限FLUSH PRIVILEGES;例如给numb用户的所有连接地址授权numb数据库所有表权限如下:GRANT ALL PRIVILEGES ON numb.* TO 'numb'@'%' WITH GRANT OPTION;原创 2022-04-17 09:29:58 · 7570 阅读 · 0 评论 -
IDEA运行报错:command line is too long. shorten command line
原因分析出现此问题的直接原因是:IDEA集成开发环境运行你的“源码”的时候(注意是源码基础上运行,并非打好的jar包哦),是通过命令(首行那个非常非常长的)来启动Java进程的。这个命令主要包含两大部分:vm/程序参数。也就是你看到的那些-XX -D等参数,这部分理论上可以无限长但实际上一般不会太长-classpath参数,它用于指定运行时jar包路径(因为jar包理论上是可以在任何地方的),这部分可能性就多了关键就在于-classpath参数,它可以非常长,你依赖的jar包越多此路径就越长;你的b转载 2022-04-07 19:39:27 · 22683 阅读 · 0 评论 -
H2数据库如何重置自增主键?
最近遇到了一个问题,在测试用例是用H2数据库,有一个表存在一个自增主键。测试用例每次执行完后会清除数据库,但是没有重置自增主键,导致后续插入新的数据的主键继续递增,而不是从1开始。从而产生了测试用例互相影响H2数据库ALTER TABLE <table_name> ALTER COLUMN <column_name> RESTART WITH 1;......原创 2022-03-22 21:28:48 · 2326 阅读 · 0 评论 -
Spring Security注解@PreAuthorize与AOP切面执行顺序
引入Spring Security后,在Controller的方法中会出现Spring Security的方法注解与AOP同时存在的问题,这是就会设计顺序问题@Controllerpublic class HelloController{ @RequestMapping(value = "/hello") @BeforeAction @PreAuthorize("validate(#user)") public void hello(@RequestParam("user) String use原创 2022-01-26 23:52:55 · 1925 阅读 · 0 评论 -
如何从ApplicationContext获取被Spring托管的bean对象
ApplicationContext原创 2022-01-17 23:27:29 · 843 阅读 · 0 评论 -
@ExceptionHandler全局异常捕获响应体返回中文乱码
问题现象在全局异常处理后,发现响应体返回中文的错误信息竟然乱码了,如下:问题代码Controller@RequestMapping(value = "/user/{user_id}", method = RequestMethod.DELETE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)@R原创 2022-01-02 20:06:07 · 2939 阅读 · 0 评论 -
@Mock、Mockito.mock()、@MockBean的区别
Mockito.mock()和@Mock的区别相同点:Mockito.mock()和@Mock的作用都是生成一个接口或者类的mock对象。不同点:@Mock注解生效必须使用@RunWith(MockitoJUnitRunner.class)或者MockitoAnnotations.openMocks()去初始化对象,否则直接使用@Mock的对象会报空指针。MockitoAnnotations.initMocks()已经被MockitoAnnotations.openMocks()替代。// @M..原创 2021-12-29 20:17:39 · 9477 阅读 · 0 评论 -
@RestController导致重定向失效
@RestController的作用@RestController的作用于一个Controller类上,表明这个类是一个Controller,且会给每个请求映射方法都会追加@ResponseBody注解,表明方法返回值不是一个视图,直接将结果返回至前台处理。重定向失效原因被@RestController注解的Controller类,可以不用在每个方法上再加@ResponseBody,但是注意一点,如果是重定向方法,可能会导致重定向失效。因为表明了方法返回值是直接返回至前端的,所以就不再重定向方法,返原创 2021-12-19 16:53:12 · 1370 阅读 · 0 评论 -
SpringMVC项目启动后无法访问index.jsp等静态页面
SpringMVC项目启动后无法访问index.jsp等静态页面SpringMVC项目启动后无法访问index.jsp等静态页面,报404Not Found。其中一个可能的原因是被web.xml中配置的dispatcherServlet拦截处理.jsp或.html,但是又未实现相关功能导致。web.xml配置<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"原创 2021-12-19 15:42:24 · 4253 阅读 · 1 评论 -
@Resource注解无法自动import
@Resource注解无法自动导入解决方法添加依赖javax.annotation-api或者jakarta.annotation-api<dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.2</version></depend原创 2021-11-26 23:12:46 · 870 阅读 · 0 评论 -
lombok的@ToString注解不打印父类的属性
1、检查父类子类是否都包含@ToString注解2、@ToString注解属性callSuper决定是否调用父类的toString()方法,默认为false,如果需要打印父类的属性设置@ToString(callSuper = true),例如@Getter@Setter@ToString(callSuper = true)public class Son extends Parent { private String id;}@Getter@Setter@ToStringclass原创 2021-10-15 14:17:51 · 2578 阅读 · 0 评论 -
URL含有转义字符/%2F(/)等报400 Bad Request
由于Tomcat的新版本中增加了一个新特性,就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。...原创 2021-10-14 10:27:58 · 6372 阅读 · 0 评论