自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(171)
  • 收藏
  • 关注

转载 除法运算时的一个常见异常之java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representabl...

一、背景今天在计算库存消耗百分比(消耗的库存/总库存)的时候遇到了一个错误,java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.通过异常的描述,我们知道这是因为,某些场景下对于如1/3会得到一个无穷小数,这个时候需要定义计算结...

2019-09-26 07:45:00 1213

转载 手把手实例对比String、StringBuilder字符串的连接效率及StringBuilder和StringBuffer线程安全的比较...

一、字符串连接的效率问题使用String连接字符串时为什么慢?小知识点java中对数组进行初始化后,该数组所占的内存空间、数组长度都是不可变的。创建一个字符串,为字符串对象分配内存空间,会耗费掉一定的时间(CPU)与空间(内存)代价,作为最基础的数据类型,大量频繁的创建字符串,极大程度地影响程序的性能。过多无用的中间对象每次连接字符串时都会创建一个新的String...

2019-08-25 13:04:00 369

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

定义一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。转义就是指转换该字符的原本意义,从而变成另外的意义。\作为Java的转义字符1.在java字符常量中,反斜杠(\)是一个特殊的字符,被称为转义字符,它的作用是用来转义后面一个字符。转义后的字符通常用于表示一个不可见的字符或具有特殊含义的字符,例如换行(\n)、回车符...

2019-08-11 22:44:00 445

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

最近在做统计相关的功能的时候涉及到了获取当天的开始和结束的时间戳、当月和当年的开始结束时间戳,特此记录,以作备忘。相关代码package com.lingyejun.authenticator;import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;im...

2019-08-04 14:40:00 6325

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

今天在打包项目的过程中出现了编译问题,奇怪的是这个项目已经好久没有修改过了,报错如下。找不到符号[ERROR] 符号: 方法 intent(java.lang.String)[ERROR] 位置: 类型为com.paypal.orders.OrderRequest的变量 orderRequest找不到符号[ERROR] 符号: 方法 amo...

2019-08-01 23:44:00 4568

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

背景在对Double类型的数据进行计算操作,将结果转化为BigDecimal时抛出了下面的异常,进行了Debug才发现了问题原因,同时也暴露出了自己在一些基础知识上还有些欠缺。Exception in thread "main" java.lang.NumberFormatException: Infinite or NaN at java.math.BigDecimal...

2019-07-19 22:31:00 2358

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

背景微信退款接口需要使用到证书,我参考微信的官方Demo进行,部分代码如下:char[] password = config.getMchID().toCharArray();InputStream certStream = config.getCertStream();KeyStore ks = KeyStore.getInstance("PKCS12");ks...

2019-06-24 23:30:00 1822

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

背景今天在跑定时任务的过程中,发现有一个任务在设置数据的查询时间范围异常,出现了开始时间戳比结束时间戳大的奇怪现象,计算时间戳的代码大致如下。package com.lingyejun.authenticator;public class IntegerTest { public static void main(String[] args) { ...

2019-06-18 23:13:00 800

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

小方法大门道小瓜瓜作为一个Java初学者,今天跟我说她想通过一个Java方法,将外部变量通过参数传递到方法中去,进行逻辑处理,方法执行完毕之后,再对修改过的变量进行判断处理,代码如下所示。public class MethodParamsPassValue { public static void doErrorHandle() { boole...

2019-06-16 08:14:00 140

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

前情需要使用Python和Java实现同一个AES加解密算法,使Python版本加密的密文能够由Java代码解密,反之亦然。Python实现Python为3.6版本# -*- coding: utf-8 -*-import base64from Crypto.Cipher import AESfrom urllib import parseAES_...

2019-06-04 07:44:00 2298

转载 RocketMq重复消费问题排查

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

2019-05-05 07:43:00 581

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

小背景最近在调整支付宝支付的功能时发现,不能够正常接收支付宝付款成功之后的回调通知了,从代码到配置最后到服务器配置都排查了一遍,最终发现问题原因竟然是因为我们的回调地址notify_url是https的但并非是权威机构颁发的证书,不被支付宝所信赖,所以并没有发起回调。问题追踪确认自己的回调地址notify_url配置无误之后,在开发环境自己用Postman请求自己设置的回调地...

2019-04-28 00:10:00 2644

转载 子网掩码概念补充

小记大学里学的子网掩码的概念都已经生疏了,昨天在工作中又一次接触到了这个概念,便做个整理备忘。子网掩码概念子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和...

2019-04-10 07:45:00 138

转载 关于Redis-存Long取Integer类型转换错误的问题;String对象被转义的问题

背景最近遇到了两个Redis相关的问题,趁着清明假期,梳理整理。1.存入Long类型对象,在代码中使用Long类型接收,结果报类型转换错误。2.String对象的反序列化问题,直接在Redis服务器上新增一个key-value,而后在代码中get(key)时,报反序列化失败。关于Long类型转换错误Redis的配置如下Redis中序列化相关的配置,我这里采用的是G...

2019-04-07 14:23:00 2602

转载 客户端浏览器的缓存问题排查

问题描述最近对文件上传功能进行了优化改版,上线之后有同事反馈出来,自从上线之后所上传的图片,均没有设置浏览器端缓存,导致客户端每次都要去请求服务器上的图片资源,会导致页面加载速度变慢,用户体验不好诸类问题。之前从未接触过此类问题赶忙查阅了浏览器缓存的相关知识,并对问题进行了修复,现将一些所学进行整理归纳。HTTP的缓存机制在Chrom浏览器中打开一张图片,比如华为新款P30手...

2019-04-06 14:43:00 317

转载 问题排查之'org.apache.rocketmq.spring.starter.core.RocketMQTemplate' that could not be found.- Bean metho...

背景今天将一个SpringBoot项目的配置参数从原有的.yml文件迁移到Apollo后,启动报错“Bean method 'rocketMQTemplate' in 'RocketMQAutoConfiguration' not loaded because @ConditionalOnBean (types: org.apache.rocketmq.client.producer...

2019-04-04 22:23:00 4570

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

在闲暇时间做了一个TOTP相关的开源项目,在项目初步完成之余,我尝试对[RFC6238]文档进行了翻译,供大家参考与查阅,若有不妥之处,还望各位前辈海涵斧正。[RFC6238] : Time-Based One-Time Password Algorithm开源项目地址:tick-authenticator文章概要Thisdocumentdescribes an ex...

2019-03-26 23:25:00 784

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

背景对于多线程的理解不是非常深刻,工作中用到多线程代码的机会也不多,前不久遇到了一个使用场景,通过编码实现后对于多线程的理解和应用有了更加深刻的理解。场景如下:现有给用户发送产品调研的需求,运营的同事拿来了一个Excel文件,要求给Excel里面大约六万个手机号发送调研短信。最简单的方法就是一个循环然后单线程顺序发送,但是核心问题在于,给短信运营商发短信的接口响应时间较长,假设平...

2019-02-05 18:55:00 87

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

GMT-格林尼治标准时GMT 的全名是格林威治标准时间或格林威治平时 (Greenwich Mean Time),这个时间系统的概念在 1884 年确立,由英国伦敦的格林威治皇家天文台计算并维护,并在往后的几十年往欧陆其他国家扩散。在 1924 年开始,格林威治天文台每小时就会向全世界播报时间。在刚开始的几十年,GMT 的测量方法非常简单:观测者随时监控太阳在天空的位置,并且...

2019-02-01 21:08:00 1147

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

问题背景最近在项目中使用mysql的group by进行分组查询的场景比较多,其中一次遇到了一个问题,即在开发环境执行一个如下sql时是正确且可执行的,select a,b,max(c) from test_tbl group by a但是放到了测试环境就会报如下的错误。[Err] 1055 - Expression #1 of ORDER BY clause...

2019-01-20 21:57:00 137

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

背景最近在做需求调研的过程中,接触到了很多业务层面上的概念和术语。生硬的搬运概念很难做到举一反三,最近看到了一前辈通过小故事把几个相关联的几个概念解释的很清晰和直白,我特此借鉴过来,自己重新拟了一个小故事,特此记录。故事小路是一个在陕北山沟沟里面长大的农村娃。二十岁的那年,他们那里没有下过一滴雨,庄家严重歉收,村子里很多人都跑到外面奔生计去了。听说李大婶说,他家毛二跑到了隔壁...

2019-01-07 00:25:00 205

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

上周在工作中遇到了一个问题场景,即查询商品的配件信息时(商品:配件为1:N的关系),如若商品并未配置配件信息,则查数据库为空,且不会加入缓存,这就会导致,下次在查询同样商品的配件时,由于缓存未命中,则仍旧会查底层数据库,所以缓存就一直未起到应有的作用,当并发流量大时,会很容易把DB打垮。缓存穿透问题缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常出于容错的考虑...

2018-12-08 11:43:00 175

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

鄙人最近尝试着翻译了自己的第一篇英文技术文档。Java Nested Classes Reference FromOracle Documentation目录嵌套类-Nested Classes为什么使用嵌套类-Why Use Nested Classes?静态嵌套类-Static Nested Classes内部类-Inner Classes...

2018-12-07 22:34:00 143

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

在工作中的许多场景下,我们都会使用到List这个数据结构,那么同样的有很多场景下需要删除List中的某一个元素或某几个元素,那么我们该如何正确无误地删除List中的元素的,今天我来教大家三种方式。前提知识准备for循环的执行顺序这里借用百度百科的一张图,简明扼要的介绍一下。Iterator迭代器介绍迭代器:迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器...

2018-12-01 10:46:00 322

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

在使用Spring Security的过程中,我们会发现框架内部按照错误及问题出现的场景,划分出了许许多多的异常,但是在业务调用时一般都会向外抛一个统一的异常出来,为什么要这样做呢,以及对于抛出来的异常,我们又该如何分场景进行差异化的处理呢,今天来跟我一起看看吧。一个登陆场景下的外层代码 @PostMapping("/login") public void ...

2018-11-24 14:03:00 145

转载 Mysql闭包表之关于国家区域的一个实践

在电商系统中,我们总是会遇到一些树形结构数据的存储需求。如地理区域、位置信息存储,地理信息按照层级划分,会分为很多层级,就拿中国的行政区域划分为例,简单的省-市-县-镇-村就要五个级别。如果系统涉及到跨境的国际贸易,那么存储的地理信息层级会更加深。那么如何正确合理地存储这些数据,并且又能很好的适应各种查询场景就成了我们需要考虑的问题,这次我们来考虑通过闭包表方案,来达到我们的存储及查询需...

2018-11-12 07:14:00 401

转载 SpringBoot 通过自定义注解实现AOP切面编程实例

一直心心念的想写一篇关于AOP切面实例的博文,拖更了许久之后,今天终于着手下笔将其完成。基础概念1、切面(Aspect)首先要理解‘切’字,需要把对象想象成一个立方体,传统的面向对象变成思维,类定义完成之后(封装)。每次实例化一个对象,对类定义中的成员变量赋值,就相当于对这个立方体进行了一个定义,定义完成之后,那个对象就在那里,不卑不亢,不悲不喜,等着被使用,等着被回收。...

2018-11-11 11:15:00 590

转载 kindle 应用程序出错,无法启动选定的应用程序,请重试。问题排查过程及处理方案。...

最近一段时间在使用Kindle商城时总是会出现“应用程序出错,无法启动选定的应用程序,请重试。”对此我花了大约一小时的时间进行测试验证并与客服人员沟通,将过程记录如下,供出现同样问题的朋友们参考。冒烟测试的流程:Kindle 型号:paperwhite3 固件版本 5.9.7操作流程:唤醒首页面->点击商城->浏览分类->小说->选择《围城》...

2018-10-20 23:30:00 5809

转载 try with resources简洁的异常捕获机制

通过前篇的《Java文件IO流的操作总结》,我们知道了基本输入输出流的使用方式,但是每次都需要在finally处关闭流资源,这样操作起来既啰嗦又麻烦,有没有更简洁的方式呢?本篇就来讲解jdk1.7引入的try with resources语法糖式写法。什么是语法糖1.之所以称之为语法糖,给人的感觉就是很甜,很甜。2.在相同功能下,语法糖的写法会让代码更加简洁流畅,代码更加...

2018-10-05 13:07:00 74

转载 Java文件IO流的操作总结

Java中的IO操作涉及到的概念及相关类很多,很容易弄混,今天特来整理总结一下,并附上一份完整的文件操作的代码。概念解析读和写流就是管道,向管道里面写数据用输出流:write从管道里面读数据,用输入流:read流的分类流,按照不同的维度有不同的分类,按照从流中每次读取数据单位不同,划分为字节流字符流。按照流-对应操作的角色的不同(是IO设备,还是其他流)是否能...

2018-10-05 12:39:00 111

转载 在Java中关于二进制、八进制、十六进制的辨析

八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数?单从数字的角度来讲都有可能!八进制所以在Java中规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数的表达方法。123如果是十进制的话是123,八进制的话,则是83,如在变量赋值时可以...

2018-10-05 11:42:00 233

转载 java基础类型中的char和byte的辨析及Unicode编码和UTF-8的区别

在平常工作中使用到char和byte的场景不多,但是如果项目中使用到IO流操作时,则必定会涉及到这两个类型,下面让我们一起来回顾一下这两个类型吧。char和byte的对比bytebyte 字节,数据存储容量1byte,byte作为基本数据类型表示的也是一个存储范围上的概念,有别于int、long等专门存数字的类型,这种类型的大小就是1byte,而int是4byte。存数字...

2018-10-04 23:45:00 333

转载 org.apache.ibatis.exceptions.TooManyResultsException的异常排查过程

在查阅测试环境业务日志中的ERROR级别的日志时,发现了有一个Mybatis相关的异常错误org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 13。一、分析:详细堆栈信息打印如下...

2018-10-04 22:38:00 298

转载 在Mybatis中使用连表查询的一次实际应用

以前在工作中很少使用多表关联查询,对连表查询的具体作用和使用场景也没有很直观的认识,通过这次在项目中的实际应用,对此有了一定的认识,特记录如下。关联表介绍:分别是属性表attr_info、属性值表attr_val_info、商品sku信息表sku_info、商品sku所属的属性信息表sku_attr_info。attr_info表:存储属性大类信息,如颜色、配置、网络at...

2018-09-09 11:19:00 85

转载 Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查...

今天在使用数据库的时候,遇到一个场景,即在插入数据完成后需要返回此数据对应的自增主键id,但是在使用Mybatis中的generatedKey且确认各项配置均正确无误的情况下,每次插入成功后,返回的都是1,而不是最新的自增Id。终于凭借着一次Debugg发现的问题,原来在使用Mabatis中的insert或者insertSelective方式插入时,如使用int insert(Tes...

2018-09-08 00:24:00 1018

转载 一次org.springframework.jdbc.BadSqlGrammarException ### Error querying database Cause: com.mysql.jdbc....

先说结论:因为在表设计中有一个商品描述字段被设置为desc,但desc是mysql中的关键字,如select id,name,desc,price from product;这条sql语句在查询时的sql语句解析会和期望的不一样,导致出现问题。因为平时在写java代码的时候很自然的会将描述变量设置为desc,在设计表字段时也没有多想,忘记和忽略了desc为mysql中的关键字,酿成此...

2018-09-01 12:11:00 2017

转载 商品的spu、sku及其之间的关系

今日来总结一下,电商系统中涉及到商品时必然会遇到的几个概念,SPU、SKU、单品等。彻底搞懂和明白了这几个概念对我们设计商品表是十分必要的前提条件。SPU:标准化产品单元SPU = Standard Product Unit (标准化产品单元),SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。SKU:库存量单位SKU...

2018-09-01 11:11:00 2090

转载 Java transient关键字的理解

transient [ˈtrænziənt]adj. 短暂的; 转瞬即逝的; 临时的n 临时旅客; 瞬变现象; 候鸟;1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口...

2018-08-26 12:33:00 83

转载 关于Serializable的一个形象的例子

一、知识预备  根据使用Serializable的使用场景,可以发现所涉及的场景都是跨进程的,就是要做的事情不是在一个java进程中完成的,我们都知道java进程是基于jvm跑起来的,而每一个被创建出来的对象都是放在堆里面的,如对象实例中的属性值,但是跨进程时每个Java进程都有一个jvm,也就是各自jvm中都有一个堆用来存放对象信息(很多博客上讲的是对象存放于内存之中,简直云里雾里...

2018-08-18 10:54:00 139

转载 一个很大的文件,存放了10G个整数的乱序数列,如何用程序找出中位数。

一、梳理审题一、看清题目:注意这个题目的量词,这个文件中有10G个整数,而不是这个文件占了10G的内存空间。二、一些疑问:在计算机中我们讲的G、M等都是存储容量的概念,但是一般都会在会面加上B,即Byte字节的意思,如1GB=1024MB,而在计算机中G默认为是GB的缩写。所以这个题目我认为出的不严谨,因为10G个,”个“字作为一个量词,前面应该是个单纯的数字,但是这里却...

2018-08-16 20:42:00 205

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除