Java

平时多流汗,战时少流血!

MySQL执行计划 Extra 中的vusing index 和 using where using index 的区别

原文地址:http://www.cnblogs.com/wy123/p/7366486.html 背景 MySQL 执行计划中的 Extra 列中表明了执行计划的每一步中的实现细节,其中跟索引有关的 Using index 在不同的情况下会出现 Using index, Using where Using index,Using index condition 等,那么 Usin...

使用Java 8 Stream像操作SQL一样处理数据(下)

原文出自:https://my.oschina.net/liuyatao19921025/blog/1609539 背景 在上一篇文章中,我们介绍了 Stream 可以像操作数据库一样来操作集合,但是我们没有介绍 flatMap 和 collect 操作。这两种操作对实现复杂的查询是非常有用的。比如你可以结果 flatMap 和 collect 计算 Stream 中的单词的字符...

使用Java 8 Stream像操作SQL一样处理数据(上)

原文出自:https://my.oschina.net/liuyatao19921025/blog/1608232 背景 几乎每个 Java 应用都要创建和处理集合。集合对于很多编程任务来说是一个很基本的需求。举个例子,在银行交易系统中你需要创建一个集合来存储用户的交易请求,然后你需要遍历整个集合才能找到这个客户这段时间总共花费了多少金额。尽管集合非常重要,但是在 Java 中对...

如何“干掉”if…else

原文出自:https://www.jianshu.com/p/1db0bba283f0 前言 if…else 是所有高级编程语言都有的必备功能。但现实中的代码往往存在着过多的 if…else。虽然 if…else 是必须的,但滥用 if…else 会对代码的可读性、可维护性造成很大伤害,进而危害到整个软件系统。现在软件开发领域出现了很多新技术、新概念,但 if…else 这种基本的...

转:基于 GitLab 的 Code Review 教程

本文由 ken.io 创作 本文原文链接:https://ken.io/note/gitlab-code-review-tutorial 一、前言 1、本文主要内容 GitLab Code Review 机制说明 Git Workflow 与 Git Code Review Workflow GitLab Code Review 配置说明 GitLab ...

Git Flow 插件使用

创建一个 demo 在本地目录新创建项目 使用集成开发环境 IDEA 的向导(Spring Initializr)创建一个 Spring Boot 的项目,然后将其初始化为一个 Git Repository (VCS -> Import into Version Control -> Create Git Repository),这时在新项目上右键就可以看到 Git 菜单了,...

Git Flow 工作流程

关于分支分类 主分支 master 分支,存储官方发布历史,始终都是稳定状态。 develop 分支,作为功能集成历史的分支。 辅助分支 feature 分支,一个功能特性的开发分支。 release 分支,进行测试发布。 hotfix 分支,快速修复 master 分支的 bug。 分支的生命周期 master 分支与 develop 分支与项目...

是时候将日志框架升级到Log4j2了

为什么要升级 现在维护的公司项目,在不同的时期使用了不同的日志框架,最早的 Log4j,前两年开始使用 Spring Boot ,日志使用了 Logback,最近看到一些介绍 Log4j2 的文章和官方的性能测试对比。所以计划在未来的新项目中使用 Log4j2,及旧项目的日志升级为 Log4j2 。在实践的过程中也遇到了一些问题,下面做一个简单的记录。 旧项目的日志使用的Log4...

Java应用程序读取外部配置文件

背景 当我们在服务器上安装一些软件服务时,如 MySQL、Kafka、ES 等,在启动服务的时候,脚本会读取默认路径下的配置文件,如果配置文件没有放到默认的路径下,我们也可以通过参数的方式指定,通过这个配置文件,可以灵活方便的开始某些功能或调整某些参数,不用重新对源码进行修改、编译和发布了。 所以,我们工作当中有时希望可以把配置文件放在程序外,这样的话就可以做到配置与业务分离,在...

ContiPerf轻量级的测试工具

ContiPerf 介绍 In order to assure software performance, software needs to be tested accordingly as early as possible - only weaknesses diagnosed early can be assessed quickly and cheaply. ContiPe...

Redis实现分布式锁

常用的分布式锁实现方式 分布式锁一般有三种实现方式: 数据库乐观锁; 基于 Redis 的分布式锁; 基于 ZooKeeper 的分布式锁。 分布式锁的可靠性 为了确保分布式锁可用,至少要确保锁的实现同时满足以下四个条件: 互斥性:在任意时刻,只有一个客户端能持有锁。 不会发生死锁:即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能...

MySQL的四种事务隔离级别

事务的基本要素(ACID) 原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。 一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结...

JPA和MyBatis如何进行技术选型

背景 在我们平时的项目中,大家都知道可以使用JPA或者Mybatis作为ORM 层。对JPA和Mybatis如何进行技术选型?(http://www.spring4all.com/question/112) 我将从以下几个方面进行总结。 MySQL数据库使用规范 核心规范 不在数据库中做运算,复杂运算移到程序端进行。 控制单表数据量,建议单库不超300-400个表,单表不...

微信支付退款异常处理过程

PKIX path building failed

异常信息 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid cer...

Java编码规范

OOP 类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO。 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。 抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类 命名以它要测试的类...