0%

watch引发的调试问题

今天在调试代码时,发现了一个问题,接口查询出的数据与 mysql 中的数据不一致。不断的尝试,不断的 Google,捣鼓了一个多小时,没找到问题出现的原因。然后在又一次的重复测试中,我发现了下面这个东西。

我尝试把这个删除之后,代码居然就恢复了正常。

不断尝试下,发现这个 watchEvaluate Expression 很相似,可以在 Debug 时改变变量的值,区别是 watch 设置之后,会一直生效,在 Variables 窗口下有一个 标志进行标识,这也是为什么我重启了n次服务问题仍然存在的原因。

设置断点条件

设置断点条件,当符合条件时,调试时会在该断点出停止。
设置方式如下图,对着断点右击会出现如下界面,输入表达式即可:

项目里有很多定时任务,之前的处理都是直接用 Spring Task解决,与对外接口同处一个项目。但随着开发的深入,代码变得越来越复杂,项目职责需要划分的更明确,因此将定时任务抽离出来。并且现在的项目是分布式部署,继续使用 Spring Task 处理会出现重复处理的问题。调查了一些定时任务解决方案,比如Quartz,决定使用 redis 过期事件的方式处理。

阅读全文 »

前言

提到抢红包,我就直摇头,这种类似秒杀的功能以前没有接触过,何况是这种直接针对金钱的操作。对于陌生的环境我一向有些抵触,因为要花好一阵儿去适应,但是一旦能嗅到其中的规则,我就会了乐此不疲。

阅读全文 »

前言

最近经常接到要变更很久之前的功能的需求,盯着自己码的代码,竟是那么的陌生,就像在看一堆Shit Mountain。之前看到一张图很形象

优雅的代码应该做到低耦合高内聚,所以学习一下代码的优化技巧还是很有必要的。

阅读全文 »

现在在做的项目是聊天 APP 的后端,通信这一块儿使用了 Netty 来实现。翻看代码时发现了还用到了 Zookeeper 这个技术,以前只粗略的看过它的用处,并没有自己搭建和使用过,正好借着项目中现成的代码来学习一下它的使用。

阅读全文 »

前言

关于 Java 并发,之前曾经也学习过一段时间,但是只理解了其中一些简单的概念,学习的很片面,现在就来系统的学习一下这方面的知识。

计算机技术经历了从 单进程多进程 再到现在的 多线程 的发展历程,Java 并发的出现就是为了支持现代计算机在 多线程 环境下运行程序的特点。

阅读全文 »