后端 [131]

【开源分享】Star 32.6k,深入学习实战 Spring Boot

项目介绍 spring boot demo 是一个用来深度学习并实战 spring boot 的项目,目前总共包含 66 个集成demo。 该项目已成功集成 actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(

【开源分享】Star 88.5k,Java版设计模式

项目介绍 设计模式 Java 的最佳实践,出自开源社区大佬们之手。作为有梦想和追求的 Java 程序员,当然需要会一些设计模式啦。这个项目虽然是英文的但是先看代码和图,尝试理解含义那么英文描述也就能猜得八九不离十了。不要让英语作为你不努力的借口,努力变强吧! 项目截图

【技术教程】SpringBoot - 整合Canal客户端监听MySQL数据库的变更

Canal 是阿里巴巴开源的一款基于 MySQL 数据库的数据变更捕获与同步工具。通过整合 Canal 客户端,我们可以实现对 MySQL 数据库变更的实时监听,以便及时获取插入、更新和删除等操作的变更信息,从而进行相应的业务处理。 1、准备工作 (1)首先我们需要安装好 Canal 的服务端,并对

短链接服务系统开发

功能简单描述 功能很简单,实现将长网址缩短的功能。 为什么要转短链?因为要控制每条短信的字数,对于公司来说,短信里面的字可都是钱呀。 为什么不用 t.cn,url.cn 等短链服务呢,它们生成的链接不是更短吗?是的,它们确实能实现更短的链接,可是要收钱的,而且这里面充满了商业数据呀。 短链服务总的来

ZGC 介绍

前言 ZGC 于 2017 由 Oracle 贡献给社区,在 JDK 11 及以上版本的各种 release 中几乎都包含该 GC。 Shenandoah 是 Red Hat 主导的另一个低延迟的 GC,也承诺 pause time 低于 10ms,这两个项目目前处于竞争状态。该 GC 在 Orac

11个Java代码优化技巧

Java编码优化确实是一个持续的过程,它需要在保持代码可读性和可维护性的同时,关注性能提升和资源使用的优化。以下是一些常见的Java编码优化技巧,以及相应的业务场景化案例和代码示例。 1. 避免不必要的对象创建 业务场景:在处理大量数据的业务场景中,频繁创建对象会增加垃圾收集的负担。 优化前: pu

Git 常用操作

初始化配置 Git 的设置文件为 .gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。 显示当前的 Git 配置 git config --list 编辑 Git 配置文件 # --global 表示设置全局配置,不加该参数只对当前仓库生效 git config

Apache DolphinScheduler-3.2.0集群部署教程

原文地址:https://mp.weixin.qq.com/s/KB0BQTRKayUiSfDTS7YJkg 集群部署方案(2 Master + 3 Worker) Apache DolphinScheduler官网:https

万字详解MyBatis架构以及核心内容(2)

前言 本文讲解接口层与基础支撑层,MyBatis数据处理层,参见:《万字详解MyBatis架构以及核心内容(1)》。 接口层 接口层是 MyBatis 框架中与上层应用进行交互的关键部分,它主要由 session 模块构成,其中最为核心的是 SqlSessionFactory 和 SqlSessio

万字详解MyBatis架构以及核心内容(1)

前言 MyBatis 是一个在 Java 开发中广泛使用的持久层框架,无论是日常编程实践还是面试中,它都是一个重要的知识点。MyBatis 支持自定义 SQL、存储过程以及高级映射,为开发者提供了极大的灵活性和便利性。作为一个开源的持久化框架,它简化了与数据库交互的过程,使得开发者能够更专注于业务逻

服务容错

原文地址:https://icyfenix.cn/distribution/traffic-management/failure.html Martin Fowler 与 James Lewis 提出的“微服务的九个核心特征”是构建微服务系统的指导性原则,但不是技术规范,并没有严格的约束力。在实际构

微服务部署策略

前言 部署单体式应用涉及在多个服务器上运行其副本,通常包括数个(N)物理或虚拟服务器,每个服务器上运行着若干(M)应用实例。尽管部署过程不像微服务应用那样直观,但与微服务相比,单体式应用的部署相对简单。 微服务应用则是由众多服务组成,每个服务可独立开发,使用不同的编程语言和框架。每个服务都是独立的应

网络IO模型

在套接字接口(Socket API)的抽象之下,网络I/O操作的核心在于Socket的读写功能。在操作系统层面,Socket被视作数据流,因此网络I/O操作本质上是对这些数据流的操作。每当进行网络访问时,从远程主机接收到的数据首先会被存放到操作系统内核的缓冲区中。随后,这些数据会从内核缓冲区复制到应

微服务的事件驱动数据管理

1 微服务和分布式数据管理问题 微服务架构和分布式数据管理确实带来了一系列新的挑战,尤其是在维持数据一致性和处理跨服务交易方面。在单体应用中,关系型数据库提供的ACID事务特性确保了数据的一致性和完整性,但在微服务架构中,数据通常被分散到各个服务的私有数据库中,这就需要我们重新思考数据管理和一致性的

漫谈单体应用迁移到微服务架构

迁移单体式应用到微服务架构意味着经历一系列复杂的现代化过程,这与历代开发者持续追求技术革新的努力颇为相似。在进行迁移时,我们确实可以汲取过去的智慧并重用一些成熟的想法。 其中一个关键的策略是避免采取大规模重写代码的方式,即所谓的“大爆炸式”重写。这种方法仅在决定彻底颠覆现有系统,构建一套全新的基于微

垃圾收集策略与算法

程序计数器、虚拟机栈以及本地方法栈,是Java虚拟机中线程私有的内存区域,它们的生命周期与线程紧密绑定。当线程启动时,这些内存区域随之创建;当线程结束时,它们也随之销毁。这种与线程同步的生命周期确保了内存管理的简洁性和高效性。 程序计数器用于记录当前线程执行的字节码指令位置,确保线程能够按照正确的顺

JVM 内存结构

Java 虚拟机的内存空间主要分为五个部分: 程序计数器:记录线程执行的字节码指令位置,线程私有。 Java 虚拟机栈:存储方法执行的局部变量、操作数栈等信息,线程私有。 本地方法栈:为虚拟机使用到的本地方法服务,线程私有。 堆:存储所有对象实例和数组,线程共享,由垃圾回收器自动管理内存。 方法区:

记一次完整的JVM堆外内存泄漏故障排查记录

故障描述 像是Java进程出现了内存泄漏的情况,但我们的堆内存限制为4G。由于内存占用超过了4G,可以初步判断是JVM堆外内存泄漏。 确认了下当时服务进程的启动配置: -Xms4g -Xmx4g -Xmn2g -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=5