自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小大虽差,各任其性,苟当其分,逍遥一也。

  • 博客(1125)
  • 收藏
  • 关注

原创 从零手写实现 mybatis 系列(零)mybatis 核心特性

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。(这是官网解释)

2024-07-31 22:47:09 478

原创 从零手写实现 nginx,为什么不能有 java 版本的 nginx?(已完结,共 35 讲)

大家好,我是老马。很高兴遇到你。作为一个 java 开发者,工作中一直在使用 nginx。却发现一直停留在使用层面,无法深入理解。有一天我在想,为什么不能有一个 java 版本的 nginx 呢?一者是理解 nginx 的设计灵魂,再者 java 开发者用 java 语言的服务器不是更加自然吗。于是动手开始写一个简单版本的 nginx。

2024-07-31 00:11:38 1195

原创 从零手写实现 apache Tomcat-01-入门介绍

\_/\( o.o )> ^ <mini-cat 是简易版本的 tomcat 实现。别称【嗅虎】(心有猛虎,轻嗅蔷薇。

2024-04-29 19:19:14 1897

原创 从零手写 tomcat

mini-cat 是简易版本的 tomcat 实现。别称【嗅虎】(心有猛虎,轻嗅蔷薇。

2024-04-22 21:43:34 2351

原创 如何从零手写实现数据库连接池 dbcp?

*** 池化的连接池/*** 是否繁忙* @return 状态/*** 设置状态* @param busy 状态/*** 获取真正的连接* @return 连接/*** 设置连接信息* @param connection 连接信息/*** 设置对应的数据源* @param dataSource 数据源/*** 获取对应的数据源信息* @return 数据源这里我们直接继承了 Connection 接口,实现时全部对 Connection 做一个代理。

2024-03-13 11:09:14 2481

原创 java 从零开始手写 RPC (00) 概览 overview

工作至今,接触 rpc 框架已经有很长时间。但是对于其原理一直只是知道个大概,从来没有深入学习过。以前一直想写,但由于各种原因被耽搁。

2024-03-04 09:16:35 2421

原创 sensitive-word 敏感词开源工具使用入门

有时候我们希望将敏感词的加载设计成动态的,比如控台修改,然后可以实时生效。v0.0.13 支持了这种特性。简化伪代码如下,数据的源头为数据库。MyDdWordAllow 和 MyDdWordDeny 是基于数据库为源头的自定义实现类。@Autowired@Autowired/*** 初始化引导类* @return 初始化引导类*/@Bean// 各种其他配置.init();敏感词库的初始化较为耗时,建议程序启动时做一次 init 初始化。

2023-12-18 15:37:03 3833

原创 【mq】从零开始实现 mq-01-生产者、消费者启动

MQ 是什么?MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息。MQ 的作用?消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。解耦:一个业务需要多个模块共同实现,或者一条消息有多个系统需要对

2022-04-21 21:55:37 893

原创 如何从零实现属于自己的 API 网关?

序言上一篇文章:你连对外接口签名都不会知道?有时间还是要学习学习。有很多小伙伴反应,对外的 API 中相关的加签,验签这些工作可以统一使用网关去处理。说到网关,大家肯定比较熟悉。市面上使用比较广泛的有:spring cloud/kong/soul。API 网关的作用(1)对外接口中的权限校验(2)口调用的次数限制,频率限制(3)微服务网关中的负载均衡,缓存,路由,访问控制,服务代理,监控,日志等。实现原理一般的请求时直接通过 client 访问 server 端,我们需要在中间实现一层

2021-07-19 23:01:36 403 3

原创 java 从零实现属于你的 redis 分布式锁

点赞再看,已成习惯。为什么需要分布式锁在 jdk 中为我们提供了加锁的方式:(1)synchronized 关键字(2)volatile + CAS 实现的乐观锁(3)ReadWriteLock 读写锁(4)ReenTrantLock 可重入锁等等,这些锁为我们变成提供极大的便利性,保证在多线程的情况下,保证线程安全。但是在分布式系统中,上面的锁就统统没用了。我们想要解决分布式系统中的并发问题,就需要引入分布式锁的概念。上一节我们已经对分布式锁原理进行了详细讲解,参见:red.

2020-10-17 21:24:42 519

原创 从零开始手写缓存之如何实现固定缓存大小

程序员的三高前段时间有一位同事体检,体检医生说他三高。我打趣道,程序员三高不是高性能、高并发、高可用吗?你是哪三高?每一个追求性能的开发者,都对高性能孜孜不倦地追求着,而缓存是我们踏上这条高性能大道的必经之路。小到 cpu 设计,大到服务分布式缓存,我们每时每刻都在接触缓存,今天我们就一起学习下缓存的发展之路,以及如何如何手写一个可以指定大小的 cache。cache 发展之路古代社会 - HashMap当我们应用有一定流量之后或者查询数据库特别频繁,这个时候就可以祭出我们的java中自带的H

2020-09-27 23:17:25 599 5

原创 面试官:你们项目中是怎么做防重复提交的?

面试经历记得刚毕业的时候,有一次去参加面试。上来面试官问我:“你们项目中是怎么做防重复提交的?”一开始听到这个问题是蒙圈的,支支吾吾半天没回答出来。然后面试官直接来一道算法题,喜闻乐见地面试失败。多年过去,虽然很少接触到控台应用,但是近期对于防止重复提交却有了一点自己的心得。在这里分享给大家,希望你工作或者面试中遇到类似的问题时,对你有所帮助。本文将从以下几个方面展开:(1)重复提交产生的原因(2)什么是幂等性(3)针对重复提交,前后端的解决方案(4)如果实现一个防重复提交工具产生原

2020-08-05 22:09:23 5191

原创 从零开始手写 spring ioc 框架

IoCIoc 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理。创作目的使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过。但是 spring 源码存在一个问题,那就是过于抽象,导致学习起来成本上升。所以本项目由渐入深,只实现 spring 的核心功能,便于自己和他人学习 spring 的核心原理。spring 的...

2019-12-01 19:38:54 15073

原创 从零开始手写 dubbo rpc 框架-00-序章

rpcrpc 是基于 netty 实现的 java rpc 框架,类似于 dubbo。主要用于个人学习,由渐入深,理解 rpc 的底层实现原理。前言工作至今,接触 rpc 框架已经有很长时间。但是对于其原理一直只是知道个大概,从来没有深入学习过。以前一直想写,但由于各种原因被耽搁。技术准备Java 并发实战学习TCP/IP 协议学习笔记Netty 权威指南学习这些技术的准备阶...

2019-11-01 13:36:53 14519

原创 java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) excel 工具框架

产品需求产品经理需要导出一个页面的所有的信息到 EXCEL 文件。需求分析对于 excel 导出,是一个很常见的需求。最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件。客户体验 &amp; 服务性能客户体验如果导出的文件比较大,比如几十万条数据,同步导出页面就会卡主,用户无法进行其他操作。服务性能导出的时候,任务比较耗时就会阻塞主线程。如果导出的服务...

2018-11-26 21:52:07 30300

原创 java retry(重试) spring retry, guava retrying 详解

系列说明java retry 的一步步实现机制。 java-retry 源码地址情景导入简单的需求产品经理:实现一个按条件,查询用户信息的服务。小明:好的。没问题。代码UserService.javapublic interface UserService { /** * 根据条件查询用户信息 * @par...

2018-08-08 18:01:54 17324 2

原创 Neo4j GDS-06-neo4j GDS 库中社区检测算法介绍

社区检测的目标是将网络划分为若干子图(社区),使得社区内部边的密度显著高于社区之间。强社区:社区内每个节点的内部连接数均大于外部连接数。弱社区:社区整体的内部连接数之和大于外部连接数之和。社交网络:识别用户的朋友圈、兴趣群体,助力精准推荐。生物网络:发现蛋白质功能模块或代谢路径。网络安全:检测异常行为集群,如金融欺诈或网络攻击组织。信息传播:分析疫情或谣言在社区间的传播路径。

2025-03-27 21:10:16 966

原创 Neo4j GDS-05-neo4j GDS 库中对应的中心性分析算法介绍

Neo4j Graph Data Science (GDS) 库是业界领先的图分析工具,提供 10+ 种中心性算法,覆盖从基础度量到复杂影响力模型的各类场景。

2025-03-27 21:09:30 1041

原创 MOSN(Modular Open Smart Network)-08-MOSN 扩展机制解析

MOSN 扩展能力和扩展机制的详细介绍;结合示例对 MOSN 的 Filter 扩展机制与插件扩展机制进行详细介绍;MOSN 后续扩展能力规划与展望;欢迎大家有兴趣一起共建 MOSN。在本次演讲中涉及到的示例就在我们的 Github 的目录下,大家有兴趣的也可以下载下来运行一下,关于这些示例我们还做了一些小活动,也希望大家可以踊跃参与。MOSN 作为云原生的网络代理,旨在为服务提供多协议、模块化、智能化、安全的代理能力。

2025-03-26 19:30:39 1200

原创 MOSN(Modular Open Smart Network)-07-Sidecar 模式

将应用程序的功能划分为单独的进程可以被视为Sidecar 模式。如图所示,Sidecar 模式允许您在应用程序旁边添加更多功能,而无需额外第三方组件配置或修改应用程序代码。就像连接了 Sidecar 的三轮摩托车一样,在软件架构中, Sidecar 连接到父应用并且为其添加扩展或者增强功能。Sidecar 应用与主应用程序松散耦合。它可以屏蔽不同编程语言的差异,统一实现微服务的可观察性、监控、日志记录、配置、断路器等功能。

2025-03-26 19:28:46 1112

原创 MOSN(Modular Open Smart Network)-06-MOSN 多协议机制解析

云原生网络代理 MOSN 定位是一个全栈的网络代理,支持包括网络接入层(Ingress)、API Gateway、Service Mesh 等场景,目前在蚂蚁集团内部的核心业务集群已经实现全面落地,并经受了 2019 年双十一大促的考验。今天要向大家介绍的是云原生网络代理 MOSN 核心特性之一的多协议扩展机制,目前已经支持了包括 SOFABolt、Dubbo、TARS 等多个协议的快速接入。

2025-03-26 19:28:15 925

原创 MOSN(Modular Open Smart Network)-05-MOSN 平滑升级原理解析

长连接的 FD 迁移是比较常规的操作,sendMsg 和 connection repair 都可以。在整个过程中最麻烦的是应用层数据的迁移,一般想法就是把应用层的数据结构等都迁移到新的进程,比如已经读取的协议 HEAD 等结构体,但这就导致你的迁移过程会很复杂,每个协议都需要单独处理。MOSN 的方案是把迁移放到了 IO 层,不关心应用层具体是什么协议,我们迁移最原始的 TCP 数据包,然后让 New MOSN 来 codec 这个数据包来拼装 HEAD 等结构体,这个过程。

2025-03-26 19:26:46 832

原创 MOSN(Modular Open Smart Network)-04-TLS 安全链路

大家好,我是老马。sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。最近想学习一下 SOFA 对于生态的设计和思考。

2025-03-26 19:25:46 1291

原创 MOSN(Modular Open Smart Network)-03-流量劫持

应用程序通过注册中心发布/订阅服务时,可结合注册中心劫持流量透明劫持场景中:性能压力不大时使用 iptables redirect大并发压力下使用 tproxy 与 hook connect 结合的方案。

2025-03-26 19:23:24 1215

原创 MOSN(Modular Open Smart Network)-02-核心概念

大家好,我是老马。sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。最近想学习一下 SOFA 对于生态的设计和思考。

2025-03-26 19:22:53 666

原创 MOSN(Modular Open Smart Network-01-是一款主要使用 Go 语言开发的云原生网络代理平台

MOSN(Modular Open Smart Network)是一款主要使用 Go 语言开发的云原生网络代理平台,由蚂蚁集团开源并经过双 11 大促几十万容器的生产级验证。MOSN 为服务提供多协议、模块化、智能化、安全的代理能力,融合了大量云原生通用组件,同时也可以集成 Envoy 作为网络库,具备高性能、易扩展的特点。MOSN 可以和 Istio 集成构建 Service Mesh,也可以作为独立的四、七层负载均衡,API Gateway、云原生 Ingress 等使用。

2025-03-26 19:22:02 770

原创 MOSN(Modular Open Smart Network)-00-聊一聊 MOSN

MOSN(Modular Open Smart Network)是由蚂蚁集团(原蚂蚁金服)于2018年7月开源的一款云原生网络代理平台,使用Go语言开发。其核心定位是为服务提供分布式、模块化、可观察且智能化的代理能力,主要应用于Service Mesh的数据平面(https://github.com/sofastack/sofa-mosn)(https://mosn.io/)。名称中的“Open”和“Smart”体现了其开放生态与智能化流量管理的特点。

2025-03-26 19:21:26 1196

原创 SOFAActs 介绍-01-白盒测试框架 overview

ACTS(AntCoreTest)源于蚂蚁金服多年金融级分布式架构工程的测试实践的积累与沉淀,是一款白盒测试框架,旨在为企业提供高效、精细化的接口自动化测试。与现有的诸如 TestNG 等开源框架相比,ACTS 除了具备通用的数据自动化驱动等测试能力外,还具有契合快速的互联网发展和复杂的分布式金融系统特点的模型驱动、可视化编辑和标准流程引擎等新特性,可辅助工程师高效、高质量地完成接口测试用例编写以及标准化精准化测试验证。

2025-03-25 20:11:43 1841

原创 Occlum 是一个内存安全的、支持多进程的 library OS,特别适用于 Intel SGX。

大家好,我是老马。sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。最近想学习一下 SOFA 对于生态的设计和思考。

2025-03-25 20:11:09 1098

原创 MOSN(Modular Open Smart Network)是一款主要使用 Go 语言开发的云原生网络代理平台

MOSN(Modular Open Smart Network)是一款主要使用 Go 语言开发的云原生网络代理平台,由蚂蚁集团开源并经过双 11 大促几十万容器的生产级验证。MOSN 为服务提供多协议、模块化、智能化、安全的代理能力,融合了大量云原生通用组件,同时也可以集成 Envoy 作为网络库,具备高性能、易扩展的特点。MOSN 可以和 Istio 集成构建 Service Mesh,也可以作为独立的四、七层负载均衡,API Gateway、云原生 Ingress 等使用。

2025-03-24 21:13:07 832

原创 Layotto 是一款使用 Golang 开发的应用运行时,旨在帮助开发人员快速构建云原生应用

Layotto 是蚂蚁集团开源的服务网格应用运行时,基于 MOSN 构建,旨在通过标准化 API 实现应用与基础设施的解耦,提升跨平台部署能力和异构语言支持。核心目标:提供统一的分布式能力抽象(如状态管理、消息订阅、配置管理等),降低应用对底层中间件的依赖。架构定位:整合 Service Mesh 与 Multi-Runtime 理念,通过单一 Sidecar 同时支持服务治理和分布式能力。

2025-03-24 21:12:25 849

原创 Koupleless 是一种模块化的 Serverless 技术解决方案

Koupleless 是一种模块化的 Serverless 技术解决方案,它能让普通应用以比较低的代价演进为 Serverless 研发模式,让代码与资源解耦,轻松独立维护,与此同时支持秒级构建部署、合并部署、动态伸缩等能力为用户提供极致的研发运维体验,最终帮助企业实现降本增效。随着各行各业的信息化数字化转型,企业面临越来越多的研发效率、协作效率、资源成本和服务治理痛点,接下来带领大家逐一体验这些痛点,以及它们在 Koupleless 中是如何被解决的。

2025-03-23 21:36:11 689

原创 Jarslink 是一个 SOFA 方舟插件,用于管理多应用部署

大家好,我是老马。sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。最近想学习一下 SOFA 对于生态的设计和思考。

2025-03-23 21:35:36 704

原创 SOFABoot-10-聊一聊 sofatboot 的十个问题

大家好,我是老马。sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。最近想学习一下 SOFA 对于生态的设计和思考。

2025-03-22 23:20:26 794

原创 SOFABoot-09-模块隔离

SOFABoot 从 2.4.0 版本开始支持基于 Spring 上下文隔离的模块化开发能力。为了更好的理解 SOFABoot 模块化开发的概念,我们来区分几个常见的模块化形式:基于代码组织上的模块化:这是最常见的形式,在开发期,将不同功能的代码放在不同 Java 工程下,在编译期被打进不同 jar 包,在运行期,所有 Java 类都在一个 classpath 下,没做任何隔离;

2025-03-22 23:19:51 701

原创 SOFABoot-08-启动加速

大家好,我是老马。sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。最近想学习一下 SOFA 对于生态的设计和思考。

2025-03-22 23:17:50 582

原创 SOFABoot-07-版本查看

大家好,我是老马。sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。最近想学习一下 SOFA 对于生态的设计和思考。

2025-03-22 23:17:19 337

原创 SOFABoot-06-健康检查

大家好,我是老马。sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。最近想学习一下 SOFA 对于生态的设计和思考。

2025-03-22 23:16:31 727

原创 SOFABoot-05-依赖管理

大家好,我是老马。sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。最近想学习一下 SOFA 对于生态的设计和思考。

2025-03-22 23:15:54 743

原创 SOFABoot-04-快速开始

大家好,我是老马。sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。最近想学习一下 SOFA 对于生态的设计和思考。SOFABoot-00-sofaboot 概览SOFABoot-01-蚂蚁金服开源的 sofaboot 是什么黑科技?SOFABoot-02-模块化隔离方案SOFABoot-03-sofaboot 介绍SOFABoot-04-快速开始SOFABoot-05-依赖管理SOFABoot-06-健康检查SOFABoot-07-版本查看SOFABoot

2025-03-22 23:11:24 766

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除