因在缓存对象中增加字段,导致从Redis中取出缓存转化成Java对象时出现反序列化失败的问题

2019-12-01
阅读 1 分钟
4k
因为业务需求的需要,我们需要在原来项目中的一个DTO类中新增两个字段(我们项目使用的是dubbo架构,这个DTO在A项目/服务的domain包中,会被其他的项目如B、C、D引用到)。但是这个DTO对象已经在Redis缓存中存在了,如果我们直接向类中增加字段而不做任何处理的话,那么查询操作查出来的缓存对象就会报反序列化失败的错...

使用Mysql中的concat函数或正则匹配来快速批量生成用于执行的sql语句

2019-11-23
阅读 2 分钟
2.1k
今天需要给一张表里面补数据,需要按照行的维度进行update,如果是个别数据那么直接写update语句就可以了,但是场景要求的是将整表的数据进行update,要实现这个需求就不能只靠蛮力了,需要有一点小技巧来完成这个工作。

【Java 8】巧用Optional之优雅规避NPE问题

2019-10-04
阅读 6 分钟
1.8k
空指针异常是最常见的Java异常之一,抛出NPE错误不是用户操作的错误,而是开发人员的错误,应该被避免,那么只能在每个方法中加入非空检查,阅读性和维护性都比较差。

除法运算时的一个常见错误之Non-terminating decimal expansion

2019-09-26
阅读 1 分钟
46.5k
今天在计算库存消耗百分比(消耗的库存/总库存)的时候遇到了一个错误,java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

对比String、StringBuilder字符串的连接效率及StringBuilder和StringBuffer线程安全的比较

2019-08-25
阅读 7 分钟
1.3k
创建一个字符串,为字符串对象分配内存空间,会耗费掉一定的时间(CPU)与空间(内存)代价,作为最基础的数据类型,大量频繁的创建字符串,极大程度地影响程序的性能。

关于Java正则和转义中\\和\\\\的理解

2019-08-11
阅读 2 分钟
12.6k
1.在java字符常量中,反斜杠()是一个特殊的字符,被称为转义字符,它的作用是用来转义后面一个字符。转义后的字符通常用于表示一个不可见的字符或具有特殊含义的字符,例如换行(n)、回车符(r)、制表符(t)。

Java获取当天、当前月、当前年(今年)的开始和结束时间戳

2019-08-04
阅读 6 分钟
6.1k
最近在做统计相关的功能的时候涉及到了获取当天的开始和结束的时间戳、当月和当年的开始结束时间戳,特此记录,以作备忘。 相关代码 {代码...} 效果

Maven中使用<version>LATEST</version>自动依赖最新版本引发的问题

2019-08-01
阅读 1 分钟
2.7k
问题的错误提示很明确,是找不到paypal的sdk方法,很自然的就把问题指向了版本依赖上面,经过一番搜索后在Maven仓库中发现checkout-sdk这个包在2019年7月份的时候发布了1.0.1版本,这个版本在一些功能上没有向上兼容旧版本,导致项目中依赖了1.0.0版本所使用的sdk,再依赖了新版本后便出现了编译问题。

java.lang.NumberFormatException: Infinite or NaN原因之浮点类型除数为0结果探究

2019-07-19
阅读 2 分钟
4.4k
在对Double类型的数据进行计算操作,将结果转化为BigDecimal时抛出了下面的异常,进行了Debug才发现了问题原因,同时也暴露出了自己在一些基础知识上还有些欠缺。

坑爹微信之读取PKCS12流时出现的java.io.IOException: DerInputStream.getLength

2019-06-24
阅读 5 分钟
3.9k
上面的代码,在本地调试的时候正常跑过,没有出现任何异常,但是放到测试环境之后便会出现下面的异常,这三种异常都是从ks.load(certStream, password)这里抛出来的。定位这个问题花费了一些时间,且让我小小总结一下,供大家遇到相同问题时有个参考。

Java中在时间戳计算的过程中遇到的数据溢出问题

2019-06-18
阅读 3 分钟
2.1k
先放出结论:因为java中整数默认是int类型,在计算的过程中30 * 24 * 60 * 60 * 1000计算结果大于Integer.MAX_VALUE,所以出现了数据溢出,从而导致了计算结果不准确的问题。

辨析Java方法参数中的值传递和引用传递

2019-06-16
阅读 7 分钟
1.4k
小瓜瓜作为一个Java初学者,今天跟我说她想通过一个Java方法,将外部变量通过参数传递到方法中去,进行逻辑处理,方法执行完毕之后,再对修改过的变量进行判断处理,代码如下所示。

最新版-Python和Java实现Aes相互加解密

2019-06-04
阅读 4 分钟
8.9k
前情 需要使用Python和Java实现同一个AES加解密算法,使Python版本加密的密文能够由Java代码解密,反之亦然。 Python实现 Python为3.6版本 {代码...} Java实现 {代码...} 再将Java代码加密出来的密钥放到Python中进行解密 大功告成,实现了AES在Java和Python的互转。

RocketMq重复消费问题排查

2019-05-05
阅读 6 分钟
2.6k
出现了重复消费的问题,同一个消息被重复消费了多次,导致了用户端收到了多条重复的消息,最终排查发现,是因为消费者在处理消息的方法onMessage中有异常没有捕获到,导致异常上抛,被consumeMessage捕获并判定为消费失败,从而放到了重试队列当中进行重试,下面我们就来看看RocketMq中会引起消息重试的两种情况,内部异...

服务器收不到支付宝notify_url异步回调请求的问题排查

2019-05-02
阅读 1 分钟
4.6k
最近在调整支付宝支付的功能时发现,不能够正常接收支付宝付款成功之后的回调通知了,从代码到配置最后到服务器配置都排查了一遍,最终发现问题原因竟然是因为我们的回调地址notify_url是https的但并非是权威机构颁发的证书,不被支付宝所信赖,所以并没有发起回调。

子网掩码概念补充

2019-04-12
阅读 2 分钟
7.3k
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

记录Redis序列化的坑-存Long取Integer的类型转换错误问题及String对象被转义的问题

2019-04-07
阅读 5 分钟
18.9k
背景 最近遇到了两个Redis相关的问题,趁着清明假期,梳理整理。 1.存入Long类型对象,在代码中使用Long类型接收,结果报类型转换错误。 2.String对象的反序列化问题,直接在Redis服务器上新增一个key-value,而后在代码中get(key)时,报反序列化失败。 Long类型接收返回值报错的问题 Redis的配置如下 Redis中序列化相关...

问题排查之RocketMQAutoConfiguration not loaded.

2019-04-04
阅读 3 分钟
7.2k
Bean method 'rocketMQTemplate' in 'RocketMQAutoConfiguration' not loaded because @ConditionalOnBean (types: org.apache.rocketmq.client.producer.DefaultMQProducer; SearchStrategy: all) did not find any beans of type org.apache.rocketmq.client.producer.DefaultMQProducer

翻译[RFC6238] TOTP: Time-Based One-Time Password Algorithm

2019-03-25
阅读 12 分钟
2.5k
在闲暇时间做了一个TOTP相关的开源项目,在项目初步完成之余,我尝试对[RFC6238]文档进行了翻译,供大家参考与查阅,若有不妥之处,还望各位前辈海涵斧正。

批量任务体现多线程的威力!

2019-02-06
阅读 14 分钟
2.5k
对于多线程的理解不是非常深刻,工作中用到多线程代码的机会也不多,前不久遇到了一个使用场景,通过编码实现后对于多线程的理解和应用有了更加深刻的理解。场景如下:现有给用户发送产品调研的需求,运营的同事拿来了一个Excel文件,要求给Excel里面大约六万个手机号发送调研短信。

认识GMT和UTC时间-附带地理知识

2019-02-01
阅读 3 分钟
2.2k
GMT 的全名是格林威治标准时间或格林威治平时 (Greenwich Mean Time),这个时间系统的概念在 1884 年确立,由英国伦敦的格林威治皇家天文台计算并维护,并在往后的几十年往欧陆其他国家扩散。在 1924 年开始,格林威治天文台每小时就会向全世界播报时间。

一篇故事带你理解渠道、经销、分销、代理等概念

2019-01-20
阅读 2 分钟
1.8k
最近在做需求调研的过程中,接触到了很多业务层面上的概念和术语。生硬的搬运概念很难做到举一反三,最近看到了一前辈通过小故事把几个相关联的几个概念解释的很清晰和直白,我特此借鉴过来,自己重新拟了一个小故事,特此记录。

only_full_group_by问题而引发的对group by的深入思考

2018-12-16
阅读 3 分钟
4.2k
最近在项目中使用mysql的group by进行分组查询的场景比较多,其中一次遇到了一个问题,即在开发环境执行一个如下sql时select a,b,max(c) from test_tbl group by a是正确且可执行的,但是放到了测试环境就会报如下的错误。

Redis缓存穿透问题及解决方案

2018-12-08
阅读 4 分钟
9.6k
上周在工作中遇到了一个问题场景,即查询商品的配件信息时(商品:配件为1:N的关系),如若商品并未配置配件信息,则查数据库为空,且不会加入缓存,这就会导致,下次在查询同样商品的配件时,由于缓存未命中,则仍旧会查底层数据库,所以缓存就一直未起到应有的作用,当并发流量大时,会很容易把DB打垮。

Java Nested Classes(内部类~第一篇英文技术文档翻译)

2018-12-05
阅读 10 分钟
2.5k
术语:嵌套类有两种类型:静态和非静态,当嵌套类被static修饰时,被称为静态嵌套类(static nested classes),没有被static修饰时的嵌套类被称作内部类(inner classes)

Java中如何优雅地删除List中的元素

2018-12-01
阅读 4 分钟
24.7k
在工作中的许多场景下,我们都会使用到List这个数据结构,那么同样的有很多场景下需要删除List中的某一个元素或某几个元素,那么我们该如何正确无误地删除List中的元素的,今天我来教大家三种方式。

Spring Security中异常上抛机制及对于转型处理的一些感悟

2018-11-24
阅读 7 分钟
3.6k
在使用Spring Security的过程中,我们会发现框架内部按照错误及问题出现的场景,划分出了许许多多的异常,但是在业务调用时一般都会向外抛一个统一的异常出来,为什么要这样做呢,以及对于抛出来的异常,我们又该如何分场景进行差异化的处理呢,今天来跟我一起看看吧。