自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

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

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

2024-07-31 22:47:09 484

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

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

2024-07-31 00:11:38 1203

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

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

2024-04-29 19:19:14 1915

原创 从零手写 tomcat

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

2024-04-22 21:43:34 2355

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

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

2024-03-13 11:09:14 2487

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

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

2024-03-04 09:16:35 2425

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

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

2023-12-18 15:37:03 3891

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

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

2022-04-21 21:55:37 917

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

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

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

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

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

2020-10-17 21:24:42 527

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

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

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

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

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

2020-08-05 22:09:23 5197

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

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

2019-12-01 19:38:54 15084

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

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

2019-11-01 13:36:53 14527

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

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

2018-11-26 21:52:07 30312

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

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

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

原创 敏感词 v0.25.0 新特性之 wordCheck 策略支持用户自定义

下面是一个简单使用自定义策略的例子final String text = "点击链接 https://www.baidu.com 查看答案,当然也可以是 baidu.com、www.baidu.com";.enableUrlCheck(true) // 启用URL检测.wordCheckUrl(WordChecks.urlNoPrefix()) //指定检测的方式.init();

2025-05-02 21:15:37 481

原创 敏感词 v0.25.1 新特性之返回匹配词,修正 tags 标签

最根本的原因在于我们命中了一个词,但是以前只返回命中的文本,比如【敏#!@词】,但是我们只给【敏感词】定义标签。同时如果使用了一些字符的转换+跳过等,得到了一个匹配词,和定义的匹配词之间不同可能会比较奇怪。敏感词以前在实现的时候,没有返回底层实际匹配的词,有时候问题排查非常耗费时间。知道了这个述求,我们在原来的黑名单词处理时,额外返回对应的底层命中词。如果想穷尽各种匹配后的枚举值,显然是不合理的。所以我们需要知道匹配的黑名单词到底是什么。如果没有,再用底层命中的黑名单去查询。我是老马,期待与你的下次相遇。

2025-05-02 21:14:58 515

原创 maxkb 强大易用的企业级 AI 助手

MaxKB = Max Knowledge Brain,是一款强大易用的企业级 AI 助手,支持 RAG 检索增强、工作流编排、MCP 工具调用能力。MaxKB 三分钟视频介绍:https://www.bilibili.com/video/BV18JypYeEkj/MaxKB 支持对接各种主流大语言模型,广泛应用于智能客服、企业内部知识库问答、员工助手、学术研究与教育等场景。如你有更多问题,可以查看使用手册,或者通过论坛与我们交流。

2025-04-17 17:42:20 647

原创 anything-llm AnythingLLM 您一直在寻找的全方位AI应用程序

AnythingLLM是一个全栈应用程序,您可以使用现成的商业大语言模型或流行的开源大语言模型,再结合向量数据库解决方案构建一个私有ChatGPT,不再受制于人:您可以本地运行,也可以远程托管,并能够与您提供的任何文档智能聊天。请参阅下面的表格,了解如何在您喜欢的环境上部署,或自动部署。工作区可以共享文档,但工作区之间的内容不会互相干扰或污染,因此您可以保持每个工作区的上下文清晰。与您的文档聊天,使用AI代理,高度可配置,多用户,无需繁琐的设置。仅限Docker版本。

2025-04-17 17:41:36 1014

原创 n8n 为技术团队打造的安全工作流自动化平台

node-’ 代表使用 Node 视图,也意味着基于 Node.js,‘-mation’ 则是 ‘automation(自动化)’ 的后缀,这正是这个项目的目标。借助 400+ 集成、原生 AI 功能以及公平代码许可,n8n 让你在完全掌控数据与部署的同时,构建强大的自动化流程。当我在寻找一个合适又有空余域名的项目名称时,很快发现我能想到的好名字都已经被占用了。n8n 是一个工作流自动化平台,为技术团队提供了代码的灵活性和无代码的高效率。它代表 “nodemation”,读作 “n-eight-n”。

2025-04-16 20:20:48 1316

原创 open webui 介绍 是一个可扩展、功能丰富且用户友好的本地部署 AI 平台,支持完全离线运行。

支持连接 OpenAI 兼容接口,同时可使用 Ollama 模型,兼容 LMStudio、GroqCloud、Mistral、OpenRouter 等。:支持 SearXNG、Google PSE、Brave、DuckDuckGo、TavilySearch、Bing 等。:Web UI 上可视化构建 Ollama 模型,支持角色/代理管理、模型导入、聊天界面自定义。:支持注入自定义逻辑、Python 库,示例包括函数调用、使用限制、多语言翻译、有害内容过滤等。:支持桌面、笔记本与移动设备自适应界面。

2025-04-16 20:19:35 1161

原创 Browser-use 是连接你的AI代理与浏览器的最简单方式

将我最新的LinkedIn关注者添加到Salesforce中的潜在客户列表。是将AI代理与浏览器连接的最简单方式。💡 查看别人正在构建的内容,并在我们的。将你想使用的提供商的API密钥添加到。告诉你的计算机做什么,它就会完成。🌤️ 跳过设置 —— 试试我们的。有关其他设置、模型等,请查阅。欲了解更多示例,请查看。,即时浏览器自动化!

2025-04-15 20:13:10 1173

原创 AgentGPT 在浏览器中组装、配置和部署自主 AI 代理 入门介绍

AgentGPT 允许您配置并部署自主 AI 代理。您可以自定义 AI 代理的名称,并让其执行任何您设想的目标。它将通过思考任务、执行任务并从结果中学习来尝试实现目标 🚀。AgentGPT 提供了自动化的 CLI 安装程序,便于快速设置。- 配置 API 密钥,确保所有服务启动后,访问。- 在 VS Code 中,您可以使用。要获得最佳演示体验,请直接访问。(Windows)或。(Mac)打开终端。

2025-04-15 20:11:14 1058

原创 开源中文的繁简体转换 opencc4j-05-日文转换支持

支持中文繁简体转换,考虑到词组级别。

2025-04-13 10:52:11 690

原创 开源中文的繁简体转换 opencc4j-04-香港地区转换支持

支持中文繁简体转换,考虑到词组级别。

2025-04-13 10:51:28 860

原创 Neo4j GDS-14-neo4j GDS 库中链接预测算法介绍

基本定义链接预测的核心是通过分析网络拓扑、节点属性及时序演化规律,推断节点间的潜在连接关系。静态网络:预测缺失的链接(如知识图谱补全)。动态网络:预测未来可能出现的链接(如社交网络中的好友推荐)。分类维度按目标类型:分为缺失链接预测(Exist yet unknown links)与未来链接预测(Future links)。按网络性质:确定性网络:节点和链接一旦存在即不消失(如学术合作网络)。不确定性网络:链接存在概率随时间变化(如社交网络中的互动关系)。

2025-04-12 18:57:29 877

原创 Neo4j GDS-13-neo4j GDS 库中节点插入算法实现

【代码】Neo4j GDS-13-neo4j GDS 库中节点插入算法实现。

2025-04-12 18:56:39 638

原创 Neo4j GDS-12-neo4j GDS 库中节点插入(Node Embedding)算法介绍

图节点嵌入(Node Embedding)是将图结构中的节点映射到低维向量空间的技术,旨在保留原图的结构信息(如连接性、相似性)和属性信息。其核心目标是:在低维空间中,连接紧密或结构相似的节点向量距离更近。

2025-04-12 18:55:51 743

原创 Neo4j GDS-11-neo4j GDS 库中相似度算法实现

Neo4j Graph Data Science (GDS) 库提供了丰富的相似度算法,覆盖从生产级到实验级的多种场景。以下是详细的算法分类、实现原理、参数配置、示例代码及适用场景分析。引用中的示例,计算用户间基于共同喜好的相似度。引用,用于电影推荐系统中的用户相似度计算。引用,适用于用户评分向量分析。

2025-04-12 18:55:11 886

原创 Neo4j GDS-10-neo4j GDS 库中相似度算法介绍

图的相似度算法是图论和网络科学中的核心研究领域,用于衡量两个图之间的结构或属性相似性,广泛应用于社交网络分析、生物信息学、推荐系统等场景。注:SimGNN等GNN方法通过预计算图嵌入(O(E))显著降低在线计算时间,适合实时场景。

2025-04-12 18:54:07 754

原创 Neo4j GDS-09-neo4j GDS 库中路径搜索算法实现

Neo4j Graph Data Science(GDS)库是Neo4j的扩展插件,提供超过70种图算法,包括路径搜索、社区检测、中心性分析等。其核心功能是通过内存图投影技术高效处理大规模数据。Neo4j Desktop:直接在插件市场添加GDS库。手动安装:下载对应版本的JAR文件至plugins目录,并修改neo4j.conf启用插件。云服务:Neo4j AuraDS(企业版)或Data Science Sandbox(社区版)预装GDS。验证安装:执行查看版本,企业版需通过验证许可。

2025-04-12 18:53:24 1024

原创 Neo4j GDS-08-neo4j GDS 库中路径搜索算法介绍

图的路径搜索算法是图论和计算机科学中的核心内容,广泛应用于网络分析、物流规划、人工智能等领域。

2025-04-12 18:52:33 828

原创 Neo4j GDS-07-neo4j GDS 库中社区检测算法实现

原理:通过最大化模块度(衡量社区内连接密度与随机网络的差异)进行层次聚类。步骤包括初始化、节点分配、社区压缩和多级迭代。原理:节点根据邻居标签动态更新自身标签,直至收敛。应用场景:早期分析图结构,避免在不连通子图上运行其他算法。结果解读:权重较高的关系会优先形成社区。结果:相同标签的节点被归为同一社区。原理:识别无向图中所有连通子图。

2025-04-12 18:51:49 644

原创 开源中文的繁简体转换 opencc4j-03-简体还是繁体,你说了算!

支持中文繁简体转换,考虑到词组级别。

2025-04-12 18:37:20 577

原创 java 开源中文的繁简体转换 opencc4j-02-一个汉字竟然对应两个 char?

支持中文繁简体转换,考虑到词组级别。

2025-04-12 18:36:40 1378

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

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

2025-03-27 21:10:16 994

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

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

2025-03-27 21:09:30 1066

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

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

2025-03-26 19:30:39 1267

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

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

2025-03-26 19:28:46 1125

空空如也

空空如也

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

TA关注的人

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