
工作笔记
文章平均质量分 61
工作笔记
我永远吹着泡泡
这个作者很懒,什么都没留下…
展开
-
【持续更新】工作中的小知识点
工作中的小知识点原创 2020-07-25 23:19:19 · 261 阅读 · 0 评论 -
【工作笔记】Lombok版本变化导致的反序列化异常
而我们的这些是通过 Lombok 注解实现的,巧的是,Lombok 的版本也升级了…**【好的点】**这次处理问题的思路挺好,没有使用自己丰富的想象力天马行空一同胡思乱想,而是一直专注在:(1)问题是什么,(2)是什么变化导致这个问题,这两个点上。**【坏的点】**处理旧系统之前,虽然没那么多时间完全了解旧系统,但既然要删除三方不安全的依赖,就该提前排查和记录现有的依赖都是什么版本,方便后续的问题追踪。那就是这里了,错不了,依赖的版本变化导致反序列化出现问题了。抓耳挠腮,苦思冥想…测了下,嗯,问题解决…原创 2024-12-10 10:30:42 · 1187 阅读 · 0 评论 -
【工作笔记】Http响应头过长
突然有测试小伙伴反馈进公司官网主页会白屏,但只是个例不是普遍现象查监控发现没监控到异常问题查了很久(这个很久单指对于线上问题来说)才定位是请求的异常,因为这套系统的异常用的是 @ExceptionHandler,这也导致问题排查多绕了不少圈子第一次修复不就是响应头嘛,先紧急修复下,直接无限大,再说。。。第二次修复改完紧急发布发现没生效。。。不用说肯定掉坑里了。。。看看代码才发现,-1 这个无限大是 tomcat 的玩法,我 Spring 可不惯着你Spring 底层是根据是不是为 0 做更新的原创 2023-02-27 16:06:19 · 794 阅读 · 0 评论 -
【工作笔记】数据库死锁的排查和数据库锁知识记录
数据库 死锁原创 2022-06-27 09:48:22 · 1284 阅读 · 1 评论 -
【工作笔记】缓存里的几种模式
缓存原创 2022-06-23 16:56:09 · 255 阅读 · 0 评论 -
【工作笔记】supervisord.d 中 ‘%t‘ 问题
起因最近新项目上线,通过监控服务发现线上频繁出现 Full GC 情况。于是找运维同学下载 GC 日志。拿来日志才发现 GC 日志只保留了最新启动后的日志从一个 bug 展开无数个 bug 的套路。。。一番探究,新项目通过 supervisor 启动。项目启动命令配置在 supervisord.d 目录下。而 supervisord.d 启动是使用 python 执行的。python 不支持 -Xloggc:/alidata1/admin/logs/hqins-iboss-extracter/hqi原创 2022-04-18 14:49:17 · 1046 阅读 · 1 评论 -
【工作笔记】Java:捕获异常时getMessage()、toString()、printStackTrace()等方法的分析
getMessage() /** * Returns the detail message string of this throwable. * * @return the detail message string of this {@code Throwable} instance * (which may be {@code null}). */ public String getMessage() {原创 2021-09-29 19:23:59 · 1773 阅读 · 0 评论 -
【工作笔记】Spring Data JPA 的 findById()、getOne()和findOne()区别
区别findById 立即访问数据库,并返回和指定 ID 关联的实体对象;如果没有找到,则返回 Optional.empty()findOne 立即访问数据库,返回类型为 Optional ,如果没有检索到,返回 Optional.empty()getOne 是一个延迟加载方法,它并不立即访问数据库,而是返回一个代理(proxy)对象,这个代理对象是对实体对象的引用,仅在使用代理对象访问对象属性时才会去真正访问数据库,如果找不到,则抛出异常源码findById() /** * Ret原创 2021-09-29 19:20:56 · 698 阅读 · 0 评论 -
【工作笔记】SpringBoot 配置文件生效顺序
官方地址官网地址常用顺序常用参数配置方式顺序(优先级越高越靠前):命令行application-{profile}.propertiesapplication-{profile}.yamlapplication.propertiesapplication.yamlSpringApplication.setDefaultPropertie原创 2021-09-29 19:17:59 · 288 阅读 · 0 评论 -
【工作笔记】GC cause
起因在每周例行检查生产异常时,发现在生产的机器上出现了一种新的 GC 即 Ergonomics,咸鱼的我表示第一次看到这种 Full GC,于是乎就想研究下什么情况下会出现 GC。如果文章写得好全靠度娘,毕竟我还菜额外:从 jdk8 开始,gc 日志会默认打印 gc cause,如果是 jdk8 之前的版本,可以通过 JVM 参数 -XX:+PrintGCCause 来打印 gc cause源码基于 OPENJDK 8/* * Copyright (c) 2002, 2013, Oracle a原创 2021-09-13 16:05:42 · 1191 阅读 · 0 评论 -
【工作笔记】文件上传下载时文件过大或请求过大
异常信息异常:org.springframework.web.util.NestedServletException : Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateExceptio原创 2021-08-28 15:34:00 · 616 阅读 · 0 评论 -
【工作笔记】@Controller和@RestController的区别
@Controller 注解在对应的方法上,视图解析器可以解析 return 的 jsp,html 页面,并且跳转到相应页面若返回 json 等内容到页面,则需要加 @ResponseBody 注解@RestController注解相当于 @Controller + @ResponseBody 两个注解的结合返回 json 数据不需要在方法前面加 @ResponseBody 注解了使用 @RestController 这个注解,就不能返回 jsp,html 页面,视图解析器(Interna原创 2021-02-20 10:29:24 · 141 阅读 · 0 评论 -
【工作笔记】Hibernate缓存分类和持久化对象的三种状态
起因项目里边用了 JPA。在做测试时候发现,如果我对通过 findby 查询出来的对象的属性进行 setXXX,数据库的对应字段也会随着变化。嗯…之前用了那么久的 JPA 我居然一直没发现?之前好像也没这么用过???于是就有了今天这篇文章…其实我是知道二级缓存的存在的,但是对于持久化对象的三种状态…没办法,我菜呗凡技术必官网官网Hibernate缓存分类Session缓存介绍:Hibernate 内置的一级缓存,默认开启缓存范围:缓存只能被当前 Session 对象访问。缓存的生命周原创 2021-02-19 11:28:29 · 129 阅读 · 0 评论 -
【工作笔记】Pluggable Annotation Processing API
起因简单的说就是我不想手写 model 里边的 builder 了,就问度娘类似 lombok 里边 @Builder 功能实现的原理,打算自己实现一个。于是便有了此文,此文质量好全靠度娘,质量差全赖我,反正我懒。。。介绍APIJSR 269 提供一套标准 API(Pluggable Annotation Processing)来处理 Annotations JSR 175,JSR 269 用 Annotation Processor 在编译期间而不是运行期间处理 Annotation,Annotat原创 2021-02-01 15:30:11 · 943 阅读 · 4 评论 -
【工作笔记】idea中配置maven
起因上次打开 idea 时发现自己的 pom 文件提示如下信息:按照自己最先想到的思路,对着 pom 文件右键 Add as Maven Build File想法挺好,可惜没用都没用,百度搜了好久也没找到解决办法,最后在 setting 里找可能的解决办法时,在 Plugins 发现了问题所在所以。。。问题就是自己的两个 maven 插件被禁用了maven 插件介绍我直接拿官方介绍来解释了,哈哈Maven 插件简单的说就是平时需要的大部份功能这个插件都可以提供 //提供Ma原创 2020-11-27 10:39:12 · 199 阅读 · 0 评论 -
【工作笔记】Arrays.asList
起因我看到工作群里有人说扫描代码时候,提示了代码的用法错误。我看了一眼截图,代码块里有类似 List list = Arrays.asList() 和 list.add() 的使用。第一反应就是阿里开发规范里,禁止在这里使用 add() 方法【强制】使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的 add/remove/clear 方法会抛出 unsupportedOperationException 异常说明:asList 的返回对象是一个 Array原创 2020-11-03 16:47:27 · 520 阅读 · 0 评论 -
【工作笔记】java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
起因项目启动时提示如下错误,从提示信息是没看出来什么原因java.lang.IllegalStateException: Cannot load configuration class: xxxxxx at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:413) at org.原创 2020-10-14 22:45:36 · 5022 阅读 · 3 评论 -
【工作笔记】手动创建feignClient
起因因为公司提供的一个基础服务需要被其他多个项目调用,但其他项目注册中心不一致(eureka,nacos),feign调用需要指定url,且修改地方比较多目的手动创建feignClient,统一管理服务调用服务调用发起方服务A package com.just.hungry.test.feign; import org.springframework.web.bind.annotation.RequestMapping; import org.原创 2020-10-10 17:24:36 · 2465 阅读 · 0 评论 -
【工作笔记】Hibernate的Dialect
概述Dialect 就是“方言”,Hibernate 使用 Dialect 把 Java 对象转换成关系数据库来描述。针对不同的数据 Hibernate 都有一套对应的 Dialect案例例如针对 MySQL 就有:MySQLDialect:继承 Dialect。默认使用 MyISAMStorageEngineMySQL5Dialect:继承 MySQLDialect。默认使用 MyISAMStorageEngineMySQL55Dialect:继承 MySQL5Dialect。默认使用原创 2020-09-30 14:38:24 · 1681 阅读 · 0 评论 -
【工作笔记】@PostConstruct 与 事务(@Transactional)一起使用,事务无效的问题
起因做项目结构优化时,项目启动报错,错误信息如下:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionTest': Invocation of init method failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: No Entity原创 2020-09-11 18:21:28 · 1579 阅读 · 0 评论 -
【工作笔记】@AutoConfigureAfter失效问题
起因今天项目启动时,一直提示错误缺少一个 bean。查询缘由自动注入一个 bean 时,它依赖的 bean 没有注入进来,于是便增加了 @AutoConfigureAfter 注解,但依旧提示相同的错误。最后还是靠度娘解决了问题,大佬的文章如下(略作修改)前言本文就讨论下使用 @AutoConfigureBefore、@AutoConfigureAfter、@AutoConfigureOrder 三大注解控制自动配置执行顺序的正确姿势提示:Spring Boot 的自动配置是通过 @EnableAu原创 2020-09-11 09:27:51 · 5264 阅读 · 1 评论 -
【工作笔记】String 字符串的 hashcode 和内存地址比较
测试代码public class HashCodeAndAddressTest { public static void main(String[] args) { String str1 = "test"; String str2 = "test"; String str3 = new String("test"); String str4 = new String("test"); String str5 =原创 2020-08-24 13:47:14 · 333 阅读 · 0 评论 -
【工作笔记】枚举常量类的使用
问题类型状态等字段,如果不能确定其始终为固定值,则推荐在数据库中保存为码值。前后端传递时,将码值转化为具体的内容描述,常见的转化有两种方式:码值比较少的情况:接口文档中通知前端,例如码值1,2对应什么内容,让前端自行转化。例如产品状态等码值比较多并且会不定时增加或者修改的情况下:增加枚举常量类,进行转换。例如对银行卡卡号的解析等解决-枚举类枚举类:public enum EnumProductType { /** * 1-人寿 */ PRODUCT_TYP原创 2020-08-24 10:25:08 · 522 阅读 · 0 评论 -
【工作笔记】MyBatis Generator生成代码的几种方式
MyBatis Generator 介绍对 MyBatis Generator 官方的介绍如下:This is a code generator for MyBatis.This library will generate code for use with MyBatis. It will introspect a database table (or many tables) and will generate artifacts that can be used to access the t原创 2020-08-17 14:32:20 · 648 阅读 · 0 评论 -
【工作笔记】Integer 类的 parseInt(String s) 和 valueOf(String s) 的区别
Integer 类的 parseInt(String s) 和 valueOf(String s) 的区别问题在看代码时,如下代码提出了警告,并建议进行修改修改前代码如下: int policyYear = Integer.valueOf(calculateParamMap.get(CommonConstant.POLICY_YEAR_STRING));警告信息如下: Redundant boxing inside 'Integer.valueOf(calculateParamMap原创 2020-07-24 16:40:10 · 1741 阅读 · 0 评论 -
【工作笔记】项目启动时加载数据库数据放入PropertyMap
作用可以将一些在测试和生产不一样的数据或敏感数据保存在数据库,项目启动时放入map中,需要时从map中取出配置文件设置<bean id="propertyMap " class="com.just.common.propert.PropertyMap" init-method="initData"/>具体代码使用package com.just.common.property;import com.just.common.conf.SpringContextUtils;impo原创 2020-05-24 17:22:07 · 417 阅读 · 0 评论 -
【工作笔记】CommandLineRunner接口和ApplicationRunner接口
作用CommandLineRunner 接口和 ApplicationRunner 接口是在容器启动成功后的最后一步回调,可以在项目成功启动后做一些检查工作或执行一些任务。如果多个检查工作需要按照一定的顺序去执行,那么就需要在实体类上使用一个 @Order 注解(或者实现 Order 接口)来表明顺序(order 值越小越先执行,默认 2147483647,最后执行)CommandLineRunner 用法package com.just;import com.alibaba.fastjson原创 2020-05-22 19:11:53 · 247 阅读 · 0 评论 -
【工作笔记】直接获取JSONObject内容
作用JSONobject如果知道入参是什么,是可以直接获取到数据的,不用强转成对应的对象再获取数据public class TestJson { public static void main(String[] args){ String json0 = "{\"username\": \"周杰伦\", \"music\": \"七里香\"}"; JSONObject jsonObject0 = JSON.parseObject(json0);原创 2020-05-22 18:20:01 · 762 阅读 · 0 评论 -
【工作笔记】String参数填充
作用在做一些对接时,可能有些请求头或者请求体对内容长度有指定的要求,这时候可以用string填充{ public class JustTest { public static void main(String[] args){ // 标识将传入的参数进行填充。如果传入参数不够八个,则在前边填充空格直至参数为八个,如果传入参数够八个,则不做修改 System.out.println( String.format("%1$8s", "234")); // hello //h原创 2020-05-22 17:40:37 · 775 阅读 · 0 评论