合并冲突如何发生

看到合并冲突这4个字,很多人觉得肯定只有合并的时候才会发生。事实上只要你尝试把来自几个不同源的修改同时应用到同一个文件上,都可能发生冲突,这里的应用包括以下几种操作

分支约定

  • Git提供了创建分支的功能,但是没有详细说明如何使用
  • 需要有一个基于团队协作的最佳实践去避免错误和混淆
  • 帮助新成员快速理解协作流程

下面来具体说明。

阅读全文 »

如何创建一个完美的提交

  1. 添加正确,合适的更改内容到暂存区
  2. 编写易读的提交信息

下面来具体说明。

阅读全文 »

背景

最近经常需要在云服务器上安装Docker,在安装过程中出现不少问题,遂记录下来供自己以及有需要的朋友查阅。
本教程适用于Ubuntu 18.04 Ubuntu 20.04 Ubuntu 22.04

阅读全文 »

背景

最近自己的项目全部使用Gradle构建,但是在使用的过程中踩了不少坑,因此打算把遇到的坑全部记录下来,方便自己回顾的同时,也能帮助其他人。

实现

这篇文章主要记录如何使用Gradle配置多模块项目。因为自己的项目采用微服务架构,因此每个服务除了本身业务逻辑模块,还会有对外提供的api模块,于是我把它们拆成了2个模块
api和service。

阅读全文 »

背景

最近打算实践一下Spring Cloud微服务,完整做一个系统。此次打算全部服务采用Gradle构建,微服务之间通信协议采用Protobuf,因此在系统架构上有2种方案

阅读全文 »

背景

前段时间看到rust的错误处理方式,觉得十分优雅,于是就想能不能用Kotlin模仿一个版本。

阅读全文 »

背景

缓存数据库双写一致性一直是面试的一个高频问题,网上关于这个问题的文章也非常多,大家的观点都不一致。这几天在看了十几篇文章后,再加上一些自己的思考,决定写下来供大家一起讨论。

双写缓存一致性通常指的是1份数据要往缓存(Redis)和数据库(MySQL)里写,本质就是2个写的操作不是原子性的。因此我们可以从下面2个角度去思考

  1. 在无法达到原子性的前提下,哪一步操作失败危害最低?在高并发下的情况哪一种又会更好?
  2. 让2个写的操作原子性

下面我们分别展开

阅读全文 »

背景

今天我们来聊聊建造者模式,对于建造者模式的理论和一些描述代码网上已经有非常多的文章了,在这里也就不重复赘述了,所以今天来聊聊不一样的。
Lombok想必大家都听说过,就是通过注解,在编译期间修改语法树,最后javac再将修改后的语法树编译成class文件。
Lombok有一个@Builder注解,其作用是为添加了该注解的类生成建造者模式的api,例如有以下类

阅读全文 »

背景

最近项目中用到了Elasticsearch,需要在SpringBoot项目上配置,网上找了一圈发现都是使用ElasticsearchTemplate操作,官方最新的推荐是使用
ElasticsearchRestTemplate,基于HTTP协议与es交互。于是各种查资料,踩坑,在这里把一步步配置的过程记录一下。

阅读全文 »
0%