java
标准化、规范化
java代码风格
【目录】java
编程-java8
编程-java9
编程-java-见过的异常
gradle
编程-java21
编程-java23
编程-java17
编程-java11
【目录】java-web-其它框架
java-vertx
quarkus
javalin
solon
Helidon
【目录】spring家族
spring
springcloud + nacos
consul
springboot启动流程
springboot使用及原理
springcloud
优化springboot
【java高级】
java-多线程-问题记录
java高级-ArrayList
java高级-HashMap
jdk源码解析-TreeMap红黑树
java对象占用多少字节
juc(并发)
ThreadPoolExecutor中ctl变量的理解
ThreadPoolExecutor分析
JVM(java虚拟机)
jvm学习路线
jvm
Java启动参数
debug
java-debug-arthas
java-debug-jdb
高并发/高性能/高可用
设计代码或编写代码时应该考虑的
如何发现系统中的瓶颈?
场景分析
mysql
mysql explain
mysql主从
mysql常见异常
方法论
工作中遇到的问题记录
代码优化
学习的思路
产品
本文档使用 MrDoc 发布
-
+
首页
工作中遇到的问题记录
## 问题 - 一台服务mac访问gitlab(提交或拉取代码,或访问gitlab页面)后windows客户机无法访问(提交或拉取代码),且必复现。调试过程 ```text 1. windows本地安装wireshark,并启动在网卡上过滤[host gitlab.xx.cn && port 443] 2. windows正常情况下git pull,会发现正常情况下有30左右个包 3. 让mac先访问gitlab,然后windows执行git pull,会发现发出3个请求包但均未得到响应,同时在gitlab服务端执行tcpdump,发现接收到请求但未回复 4. 在谷歌上搜索“gitlab don't reponse syn”,找到了https://serverfault.com/questions/235965/why-would-a-server-not-send-a-syn-ack-packet-in-response-to-a-syn-packet,尝试了一下[sysctl -w net.ipv4.tcp_timestamps=0](系统中原net.ipv4.tcp_timestamps=1) 5. 竟然正常了 其它: - 期间以为是两次请求(mac和windows和访问一次)的间隔时间问题,故把windows机器的机器往后调整1分钟,未果。 ``` - static 定义的问题(初始化部分数据),不要直接使用被引用的对象,要创建新对象再赋值 - 定时任务sqldump锁库了 - 漏斗图表在平安服务器上显示不正常!调了好久,原因竟然是对方启动了两台dubbo!(其中一台是老版本的) - Junit 测试不支持多线程踩记及解决方案 - dubbo exceptionFilter - redis没有同步更新问题 - druid - System.out.println(100 + ',' + 101); and System.out.println(100 + "," + 101);的结果不一样 - com.alibaba.druid.support.logging.SLF4JImpl#debug(java.lang.String, java.lang.Throwable)中LocationAwareLogger.ERROR_INT - 一个定时任务,调用上游对账接口,程序处理上游响应,处理时间偏长,nginx处理时发现该请求在被分配到一台机器上处理时因为处理时间过长而认为该请求失败进而将该请求发送给另一台机,导致数据生成两份 - 拼凑sql语句时因为参数中有单引号而导致执行出错 - springboot v2.1.4 与 es5.6.0问题(只能把ES降到5.5.2) - 公司有多少资源用在开发、测试(性能)、运维(高可用)上? - 将hive-jdbc版本从`org.apache.hive:hive - jdbc:1.1.0-cdh5.12.1`提升到`org.spark-project.hive:hive - jdbc:1.2.1.spark2`后,jdbc能自动重连了 - springcloud发布时jar包太多太大 - springcloud config-server中去gitlab获取git中的配置(用户名密码配置错误且force-pull),导致整个办公网络访问gitlab网页时报403 - k8s服务如es/redis重启后ip变动,但java应用不会获取新ip,必需得重启。解决方案为:根据springboot应用的/actuator/health请求结果中是否有DOWN/OFFLINE来判断服务是否不正常,若不正常就重启该springboot应用。 - 数据库表中使用id来表示关联关系,若有别人添加记录导致id自增则对脚本升级很麻烦,需要使用code作为唯一索引。 ## 问题列表 问题:更新一个entity发现某字段没有被更新成新值。 原因:原因是配置了jpa的@Column中updatable=false 备注:copy-paste后没有检查导致的问题。 --- 问题:门诊后台和药房后台同时登陆会导致另一个session失效 原因:因为两个项目配置的请求路径是一样的 /manage。 --- 问题:TransactionRequiredException: No EntityManager with actual transaction available for current thread 原因:代码如下 ``` @Modifying void deleteByNames(List<String> names); ``` 在deleteByNames()方法上添加@Transactional即可。 --- 问题:hive (v2.4.5) insert into不能列出字段,特别需要注意字段顺序。版本问题,hive-v3.1.1后解决此问题 --- 问题:前后端交互时bool变量不以is开头,如isValid。isValid传到springboot的controller层时会默认成valid, 得使用@JsonProperty("isValid")来调整;为避免类似问题,把isValid修改成valid_flag --- 问题:菜单字段中添加code用于唯一识别。以便引用的地方可以直接使用(若只使用id来关联,就会出现被引用记录中还没有id值) --- 产品需求问题:下拉框的数据初始化问题。数据从哪里获取,条件是什么,能否搜索,数据太多怎么办。 --- 原因:分步骤保存数据时创建与编辑的问题。现有一个表单提交页面,提交过程分为三步,且每步都会保存到数据库。 在第二步时,有一个div区域在显示时需要显示,但用户可以删除该区域再保存。当编辑时该区域会根据上次保存的状态来回显: 若保存时显示该div区域,编辑时就显示 若保存时刪除该div区域,编辑时不显示 但因为表单提交过程分为三步,导致前端不知道在第二步时当前操作是编辑还是创建。 解决方案是在该div区域对应的json字段中添加一个type,有两个值HIDDEN/SHOW,用于控制该div的显示/隐藏。 --- 下载功能:下载的文件名有什么要求?下载的文件内容有什么格式?文件大小有什么要求? --- 时间与时间粒度:过滤中的相对时间,不能使用分/时,即不能查询过去7分钟/7小时的计算,因为今天的每个时刻所对应的过去7小时/7分钟都是在变动的,无法使用缓存。使用天/周/月就没问题了,因为今天的每个时刻对应的过去7天都一样。 --- 时间组件的粒度问题:时间是不是包含时分秒? --- 提供系统常量:不然后端会定义enum,前端也得定义一份常量,当变动时前后端都得改 --- 问题:使用定时任务的分布式锁时,方法执行时间过短导致任务重复执行。 原因:因为两次定时任务的执行有一定间隔,第二个任务在执行时发现redis中的锁信息已被删除,就又运行了。 解决方案是添加一个锁最小持有时间如30秒。 --- @Value("${biz.key:abc}")private static String key; 无法注入配置的值 static修改的变量由java控制,在创建对象之前就已存在。@Value由spring控制,处理范围是容器中的对象。 --- 循环中使用当前时间,导致list中的前一部分数据会正常运行,后一部分数据因为DateUtils.getToday()的推移而逐渐增大。解决方案,将DateUtils.getToday()提取成变量,放到for循环外。 ```java for (CampaignV2 campaignV2 : list) { if ((Math.abs(DateUtils.intervalMinutes(DateUtils.getToday(), nextStartTime)) <= 3)) { // 生成Mysql记录 } else { // 不生成mysql记录,仅打印日志 } } ``` 以后再写循环时,`需要关注循环体中有无使用当前时间,并思考在循环体中添加Thread.sleep()是否对程序执行有影响`。 ---
我是张三
2025年3月28日 14:57
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
eblog
Markdown文件
分享
链接
类型
密码
更新密码