摘要:
我们在使用数据库时,为了使业务系统性能达到最优,往往都需要避免慢SQL查询,不能等到线上告警了再排查是否为慢SQL导致。在开发阶段,每个开发人员就应该针对自己写的SQL看是否可能为慢SQL,从而进行相应的SQL优化和索引优化等。项目中可能用的是mybatis,也可能用的jpa,针对写的SQL如何能自动执行explain sql语句来查看每条SQL的执行计划呢?于是有了本篇文章,带你实现这样一个简单好用通用的插件。 阅读全文
摘要:
logback优点 比较吸引的几个优点如下: 内核重写,初始化内存加载更小 文档比较齐全 支持自动重新加载配置文件,扫描过程快且安全,它并不需要另外创建一个扫描线程 支持自动去除旧的日志文件,可以控制已经产生日志文件的最大数量 logback加载 在项目中引入logback依赖: 启动项目时,log 阅读全文
摘要:
背景 国际化是指在设计软件,将软件与特定语言及地区脱钩的过程。当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正。 本文提到的异常响应信息国际化是指:前端向后台发起请求,后台在处理逻辑中发生异常,把异常信息返回给前端,返回的异常信息应该支持国际化,能够对应特定的语言、地区等环境。 阅读全文
摘要:
前言 项目中一般会请求第三方的接口,也会对外提供接口,可能是RPC,也可能是HTTP等方式。在对外提供接口时,有必要提供相应的批量接口,好的批量实现能够提升性能。 高并发场景中,调用批量接口相比调用非批量接口有更大的性能优势。但有时候,请求更多的是单个接口,不能够直接调用批量接口,如果这个接口是高频 阅读全文
摘要:
[TOC] 一、基本信息查看 1. 表描述 DESCRIBE ; SHOW CREATE TABLE ; SHOW TABLES; CREATE TABLE ( int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '唯一ID', tinyint(1) N 阅读全文
摘要:
背景 首先,我们达成以下共识: 一个服务方法,如果入参太多,且基本为非pojo,会给调用方造成不必要的干扰。尽管可以把文档写的很完善,但还是建议使用pojo对多个参数合理封装。 如下示例: 执行方法都应该对入参进行校验。对于一些 通用的简单的不涉及业务逻辑 的校验,比如字符串不为空,数字的范围限制, 阅读全文
摘要:
线程池的实现核心之一是FutureTask。在提交任务时,用户实现的Callable实例task会被包装为FutureTask实例ftask;提交后任务异步执行,无需用户关心;当用户需要时,再调用FutureTask#get()获取结果——或异常。 阅读全文