相关分享
git submodule 与 subtree 的异同
很多团队在拆分大型 Git 仓库时,都会遇到 submodule 和 subtree 的选择问题。本文围绕两种方案的实际维护体验展开分析,而不是只停留在命令层面对比。
作者认为,submodule 更符合“仓库独立治理”的设计目标,适合需要清晰边界、独立版本管理和长期维护的大型项目;而 subtree 虽然使用门槛更低、clone 更方便,但容易造成代码冗余和仓库持续膨胀。
文章比较有价值的地方在于,它没有单纯强调“哪种更简单”,而是从架构治理、团队协作和长期维护成本角度讨论问题,适合已经进入中大型工程阶段的团队参考。
如果你正在做 monorepo 拆分、多仓库治理,或者维护复杂依赖关系,这篇文章值得一读。
StarRocks 物化视图刷新流程和原理
物化视图通过预计算显著提升查询性能,其刷新方式分为全量刷新和增量刷新。全量刷新适合一致性要求高的场景,增量刷新则高效应对数据变更。StarRocks独特的分布式引擎和自动优化策略,让数据处理更高效。你更倾向用哪种刷新方式?
如何为 Git 配置多个 SSH Key
相信大家都会遇到这种场景,即一台电脑上同时存在多个 Git 账号的情况。譬如,公司的项目使用 Gitlab 托管,而个人的项目使用 Github 托管,更不必说,云效、Gitee、码云、Coding 等形形色色的平台。在这种情况下,你需要为每个代码托管平台生成 SSH Key,然后将其对应的公钥复制到指定的位置。所以,如何让这些不同托管平台的 SSH Key 和平共处、互不影响呢?这就是今天这篇文章想要分享的冷知识。当然,对博主个人而言,最主要的目的,还是希望能将公司和个人两个身份区分开来,所以,下面以 Github 和 Gitlab 为例来展示具体的配置过程。
JVM内存问题排查流程
首先确认问题现象,可以通过服务状态,监控面板、日志信息、监控工具(VisualVM)等,确认问题类型:
1、内存使用率居高不下、内存缓慢增加、OOM等;
2、频繁GC:Full GC等;
发现问题不建议重启,留存状态。
SOCKS5 协议工作流程
SOCKS5 是一个代理协议,它在使用TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet网中的服务器,或者使通讯更加安全。SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器, 模拟了一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务器将请求转发给真正的服务器。
使用 GPG 对 Git commit/tag 进行签名
为什么要签名
GPG 可以对 Git commit 或 tag 进行签名,其它用户可以知道这个 commit 来源可信,也就是作者本人提交的代码。
优雅的处理Git多帐号与代理问题
在工作中,常常会容易遇到一台电脑用多个 Git 账号的场景,比如账号 company 账号是工作用的,而账号 personal 是自己个人用的。 由于 Git 本身并没有多账号的机制,导致我们在默认设置下无法很好的区分哪个仓库使用哪个账号。 同时,在某些众所周知的场景下,我们无法直接访问到 Github 仓库,需要走一层 proxy 来加速我们的代码拉取与推送速度, 本文将使用 SSH config 相对优雅的解决这些问题。
专为技术写作人员提供的 7 条 Git 技巧
Git 帮助我跟踪内容的版本,并与开源社区进行协作。它是我存储工作成果、共享和讨论改进的重要工具。我主要使用的工具包括浏览器、用 OpenSSH 连接 Foreman 实例、用 Vim 编辑源文件,以及使用 Git 进行版本控制。
本文重点介绍在开始使用 Git 和为 Foreman 文档做贡献时经常遇到的挑战。适用于中级 Git 用户。
Spring AOP 处理流程概述
AOP 是 Spring 框架的最核心的两个功能之一,这里来细致分析一下 Spring AOP 的实现原理和处理流程。
Spring 启动流程概述
对于 Spring 启动流程和 Bean 的生命周期,总有一些小地方搞的不是很清楚,干脆直接通过修改代码增加日志输出,使用断点单步调试,把整个流程捋顺了一点点的。
除了加载配置文件或者基础配置类外,Spring 的启动过程几乎都被封装在 AbstractApplicationContext#refresh 方法中,可以说弄清楚了这个方法的执行过程,就摸清楚了 Spring 启动全流程,下面的流程分析也是以这个方法为骨架来展开的。
流程概要 下面完整流程有些太复杂,所以,提炼一个简要的过程,方便糊弄面试官,哈哈哈
