六道漫步

唯有编程能使我忘记ACG,唯有ACG能使我忘记编程.

批量插入的两种含义和效率说明

批量插入的两种含义和效率说明

这篇文章是对”批量插入效率如何“这个常见问题的回答.实际上这个常见问题是非常具有歧义性的. 首先我们都知道插入的意思是将数据写入到数据库中,而数据库的唯一可使用的语言是sql,写入数据属于sql中的dml语句. 当然,大多数时候编程中是不会直接使用sql语句来进行编程的,以java为例,通常不会使用jdbc的方式来操作数据库,而是使用如mybatis、hibernate、spring d...

一次线上内存泄漏问题的排查

与FastjsonHttpMessageConverter有关的内存泄漏问题

与FastjsonHttpMessageConverter有关的内存泄漏问题 (一). 排查经过 1.首先确定有内存泄漏问题的是因为报了这个异常:java.lang.OutOfMemoryError:GC overhead limit exceeded 默认情况下,当应用程序花费超过98%的时间用来做GC并且回收了不到2%的堆内存时,会抛出java.lang.OutOfMemoryError...

SSM中的类型转换、格式化、序列化与反序列化

SSM中的类型转换、格式化、序列化与反序列化

定义与区别 类型转换、格式化、序列化与反序列化三个概念是相似而且经常相关,联系在一起的. 类型转换(convert):将A类型的源对象转换为目标B类型的对象. 格式化(formatter):将一个对象输出为显示的格式或者说容易让人理解的格式.以及把从显示的格式解析为对象. 序列化(serializer)与反序列化(deserializer):序列化是指把对象二进制化数据写入IO...

debug记录:SpringBoot中jackson自动配置失效

项目中有多个MappingJackson2HttpMessageConverter对象导致jackson自动配置失效的一次debug

Spring序列化与反序列化设计探究 在我如上这篇博客中,遇到了对SpringBootMvc环境的项目中,试图使用将Module对象托管给Spring容器托管来达成MappingJackson2HttpMessageConverter对象的自动全局配置. 结果失败,发现在返回的HttpMessageConverter列表中和容器中各自存在一个不同的MappingJackson2HttpM...

Spring序列化与反序列化设计探究

从自定义数据序列化与反序列化格式探究Spring相关设计

一.探究原因和需求概述 最近在项目中遇到了需要在SpringMvc中对枚举类型和java8新时间类型的自定义序列化与反序列化格式的问题. 简单说就是希望作为返回对象的DTO中,对于枚举类型和java8新时间类型的属性,定义为对应的枚举类型和java8新时间类型. 但是由于对接和展示需要或者规范规定,很多时候需要序列化和反序列化时自定义格式.比如说很多人习惯把时间格式定为yyyy-MM-d...

分布式环境中是否允许枚举作为返回值

《阿里巴巴JAVA开发手册》禁止枚举作为返回值的规定的看法

使用枚举作为返回值可能造成的问题其实大家都知道就是客户端和服务端版本不一致的话,会造成反序列化异常. 于是《阿里巴巴JAVA开发手册》对于这个问题的处理办法就采取了尽量避免异常出现,所以禁止定义枚举为返回值. 首先,枚举不作为返回值,那么作为替代品只能是返回code. 那么本地系统收到了一个未定义的code,该怎么处理呢? 想来想去,无非有两种情况: 1.本地系统根本没用到这个...

关于Java Checked Exception机制的思考

读王垠《Kotlin和Checked Exception》引发的思考

一、程序设计语言中的异常机制 一般来说程序设计语言的异常机制主要分为两种,一种是以C语言为代表机制的错误码,一种是异常对象机制(多返回值语言可用多返回值模拟异常对象机制,可视作相同机制). 1.错误码机制 (一)含义 错误码机制主要以C语言为代表. 错误码机制就是指对于一个函数执行时发生的错误情况,使用函数本身的返回值返回事先约定好的特殊值,以此通知函数的调用者发生了异常的情况. 事实上...

debug记录:eclipse违反java8方法引用规范的bug

由一个eclipse bug学习java8方法引用规范

今天,在公司项目中修复一个Bug时遇到了百思不得其解的事情. 事情的起源是测试上报了一个Bug,这个Bug的操作很简单,在测试环境下确实存在,但是在本地的开发环境中无法复现. 于是我首先怀疑开发环境和测试环境的代码版本不同导致了这种事情.但是一系列操作之后,我确认了并不是测试环境与本地开发环境的代码版本区别. 由于服务器上的日志无法准确定位出错位置,显然Bug出在我没有预料的地方.我只...

关于Java单继承机制与多接口机制设计的思考

由Java8对interface增加default方法引发的Java继承体系设计的思考

Java的单继承(extends)机制与多接口(interface)机制 一、含义 众所周知,Java中的继承体系是单继承的,即只能继承一个类(Class). 也就是说一个类只会有一个父类(Parent Class),如果不断追溯一个类的父类,将该类和其所有超类(Super Class)用类关系图展示,那么将会是一个线型的类关系图. 然而无论是在现实世界中还是在代码世界中,都确实存在一个...

debug记录:图标加载与tomcat的session机制引发的bug

由请求资源路径错误和火狐浏览器的网络请求显示自动过滤引发的debug血案

前几天,被分到修一个线上项目存在已久的闪退bug. 该闪退bug特点: 1.只在线上环境出现,本地的环境不出现该bug. 2.只在某个浏览器被打开后,第一次进入登录页,登录该项目时出现. 即闪退后再登录,第二次开始进入登录页(无论是否同一标签页)均不会出现闪退. 3.补充:使用的运行环境服务器是tomcat. 该bug的这些特点给debug造成了极大的麻烦. 关于这种闪退的bug...