<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Gavin_Java_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Gavin_Java_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Gavin_Java_]]></copyright><item><title><![CDATA[OpenClaw Docker 部署避坑指南：服务启动成功但网页打不开？]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/160034773</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/160034773</guid><author>Gavin_Java_</author><pubDate>Sat, 11 Apr 2026 01:03:44 +0800</pubDate><description><![CDATA[摘要：OpenClaw开源大模型交互平台部署时，网页端可能因权限问题无法连接。常见错误包括&quot;unauthorized:gatewaytokenmissing&quot;和&quot;pairingrequired&quot;。]]></description><category></category></item><item><title><![CDATA[OpenClaw Docker部署避坑指南：服务启动成功但网页打不开？]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/160034707</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/160034707</guid><author>Gavin_Java_</author><pubDate>Sat, 11 Apr 2026 01:01:02 +0800</pubDate><description><![CDATA[摘要： 在Windows使用Docker部署OpenClaw时，容器日志显示服务正常但浏览器无法访问。排查发现OpenClaw默认监听127.0.0.1（仅限容器内部），导致宿主机请求被拒绝。]]></description><category></category></item><item><title><![CDATA[从0到1开发Dify插件：手把手教你打造第一个“文本增强器”]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/159962949</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/159962949</guid><author>Gavin_Java_</author><pubDate>Wed, 08 Apr 2026 19:08:30 +0800</pubDate><description><![CDATA[本文详细介绍了Dify插件开发的环境搭建与开发流程，帮助开发者快速完成第一个Dify插件的开发。]]></description><category></category></item><item><title><![CDATA[Dify 插件离线打包完整指南（Windows + Docker 版）]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/159765972</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/159765972</guid><author>Gavin_Java_</author><pubDate>Thu, 02 Apr 2026 17:17:04 +0800</pubDate><description><![CDATA[Dify插件内网迁移解决方案 摘要：Dify v1.x插件机制变化导致外网下载的插件无法在内网使用，原因是新版插件需要联网安装Python依赖。解决方案为通过Docker容器将插件及其依赖打包成离线安装包。具体步骤包括：1)使用Ubuntu 24.04容器环境；2)执行打包命令生成包含所有依赖的离线包；3)修改Dify配置允许安装本地插件；4)上传离线包完成安装。该方案成功解决了内网环境下插件依赖缺失问题，使插件可在完全离线的环境中正常运行。]]></description><category></category></item><item><title><![CDATA[Opencode 安装指南：在 Windows 上配置开源 AI 编程助手]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/159693016</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/159693016</guid><author>Gavin_Java_</author><pubDate>Tue, 31 Mar 2026 18:11:30 +0800</pubDate><description><![CDATA[Opencode 是一款专为终端设计的开源 AI 编程代理工具，它能在命令行中直接辅助你编写代码、调试和重构项目。本教程将指导你在 Windows 系统上，使用 NVM 管理 Node.js 环境，完成 Opencode 的安装与配置。]]></description><category></category></item><item><title><![CDATA[tiktoken 0.9.0 离线模式失效问题及解决方案]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/159433630</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/159433630</guid><author>Gavin_Java_</author><pubDate>Tue, 24 Mar 2026 19:34:25 +0800</pubDate><description><![CDATA[版本选择很重要：对于离线环境，尽量选择经过验证的稳定版本，不要盲目追求最新版优先使用 conda：conda 提供的预编译包通常比 pip 源码编译更可靠环境变量要提前设置：必须在导入 tiktoken 之前设置环境变量文件位置要正确：确保缓存文件在正确的用户目录下。]]></description><category></category></item><item><title><![CDATA[我的创作纪念日]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/131664213</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/131664213</guid><author>Gavin_Java_</author><pubDate>Tue, 11 Jul 2023 17:23:54 +0800</pubDate><description><![CDATA[那些转错的弯，走错的路都会让你成为独一无二的自己！]]></description><category></category></item><item><title><![CDATA[Java - I/O]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/126237780</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/126237780</guid><author>Gavin_Java_</author><pubDate>Mon, 08 Aug 2022 22:57:38 +0800</pubDate><description><![CDATA[java I/O读写原理，各类流使用demo，I/O 模型介绍]]></description><category></category></item><item><title><![CDATA[事务——扫盲篇]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/109238742</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/109238742</guid><author>Gavin_Java_</author><pubDate>Sat, 24 Oct 2020 00:08:17 +0800</pubDate><description><![CDATA[前言：不论是学习还是工作中，事务都是一个重要的知识点。可以不记得事务的四大特性，但是脑子里必须清晰一个概念，事务是什么。
一、什么是事务？
事务（Transaction），一般是指要做的或所做的事情。要么不做，要么做完。

关系型数据库中，一个事务可以是一条SQl语句。
现实生活中，一个事务可以是一件完整的事。
软件开发中，一个事务可以是一段逻辑代码。

例：小张给小王转帐1000元。这应该是一件完整的事，这件事中有俩个关键的操作，小张的账户减少1000元，小王的账户增加1000元。如果在这之间出现了问题导]]></description><category></category></item><item><title><![CDATA[多线程学习——入门篇]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/109205763</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/109205763</guid><author>Gavin_Java_</author><pubDate>Wed, 21 Oct 2020 17:25:42 +0800</pubDate><description><![CDATA[前言：想成为一名优秀的程序员，线程这个重要的知识点一定要掌握。

一、什么是线程

进程（Process）是计算机中的程序关于某数据集合上的一次运行活动，是系统进行资源分配和调度的基本单位，是操作系统结构的基础。——百度百科

撇开调度不说，进程就是应用程序在内存中分配的空间，java启动main方法就是启动了一个JVM的进程，JVM内存模型如图，而main方法又是此进程中的一个线程，又称主线程。例：把内存比作一块地，春天了，赵家村要搞一次种地运动，村长为南区分配一块地，配置水源，工具区。张三兴致勃勃的去种]]></description><category></category></item><item><title><![CDATA[分布式学习（三）——ACID原理与BASE理论]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/107072365</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/107072365</guid><author>Gavin_Java_</author><pubDate>Sat, 04 Jul 2020 11:41:15 +0800</pubDate><description><![CDATA[解决了CAP提出的分布式系统的一致性和可用性不可兼得的问题；它满足CAP原理，通过牺牲强一致性获得可用性。

BASE理论三元素


	BA：Basically Available，基本可用。可损失部分可用，保证核心可用。
	
	
	S：Soft State，软状态。允许系统中数据存在中间状态，状态可以在一段时间内不同步。
	
	
	E：Eventual Consistent。最终一致，在一定时间内，最终数据达成一致。
	
	
	http://gaosboy.com/2010/01/16/eventuall]]></description><category></category></item><item><title><![CDATA[分布式学习（二）——CAP定理理解篇]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/107027945</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/107027945</guid><author>Gavin_Java_</author><pubDate>Mon, 29 Jun 2020 20:33:19 +0800</pubDate><description><![CDATA[前言：CAP定理是学习分布式所必备的知识点之一，所以先深入的理解一下这个知识点。初看CAP定理时，有些不以为意，在后续的学习中发现这是个特别值得仔细揣摩的点。

一、CAP定理

我们了解到分布式是将一个业务拆分成多个子业务，就有了我们的分布式系统，而CAP定理就是针对分布式系统的。CAP定理（CAP theorem），又被称作布鲁尔定理（Brewer’s theorem），也称为帽子原理。



	C：Consistence，一致性。所有子业务在同一时刻读取的数据都具有相同的值。
	
	
	A：Avail]]></description><category></category></item><item><title><![CDATA[分布式学习（一）——小白入门篇]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106984475</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106984475</guid><author>Gavin_Java_</author><pubDate>Sat, 27 Jun 2020 16:59:27 +0800</pubDate><description><![CDATA[分布式学习

前言：分布式这块内容的重要性就不多提了。我相信很多小白和我一样都想要深入的了解一下。趁着端午小短假，给自己充了充电，浅显的了解了下什么是分布式，以及其涉及到的一些知识与技术。由于楼主更习惯将笔记记在纸上，本想着将其挪到这里，挪了一半后改变了想法。最终形成了一篇更像是目录一样的文章，理由如下：

更加简洁，看着更舒服
	可以做一个再回忆的引子
	没接触过这块的小白可以按着这个思路来学习，形成自己的思路
	后续会以这个为大纲（随着学习，会不断丰富），分模块的进行更新

	概念理解

	
		分布式]]></description><category></category></item><item><title><![CDATA[ArrayList源码解析(jdk1.8)——思路篇（如何看源码）]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106923477</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106923477</guid><author>Gavin_Java_</author><pubDate>Tue, 23 Jun 2020 17:54:45 +0800</pubDate><description><![CDATA[前言：关于ArrayList相信大家都不陌生。而且大多数人应该都点开过它的源码浏览过。不过看到了什么，记住了什么，这是个值得深思的问题。博主今天写这篇文章的重点也不是解析其源码。更多的是想和大家分享一下看源码的一种方法以及一种思路。

源码解析第一步：简单了解其特性

ArrayList特点：

ArrayList是有序的（放入顺序）
	ArrayList元素是不唯一的（可存放重复元素）
ArrayList简介：

ArrayList底层是由数组实现的
	他的容量是动态增长的
	操作元素时查询效率高，增删效]]></description><category></category></item><item><title><![CDATA[Java8新特性——接口的默认方法（或扩展方法）]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106826584</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106826584</guid><author>Gavin_Java_</author><pubDate>Thu, 18 Jun 2020 12:52:04 +0800</pubDate><description><![CDATA[今天偶然看到了接口中的default方法，想起之前面试也聊过几次，便了解了一下。

官方文档通道：http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

简单定义：Java 8 允许给接口添加一个非抽象的方法实现，只需要使用 default 关键字即可，这个特征又叫做默认方法（扩展方法）


默认：接口中已实现，实现类可直接使用
	扩展：实现类还可以重写


注：默认方法不可以重写Object中的方法，可以重载Objec.]]></description><category></category></item><item><title><![CDATA[设计模式——工厂方法模式]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106805489</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106805489</guid><author>Gavin_Java_</author><pubDate>Wed, 17 Jun 2020 14:58:02 +0800</pubDate><description><![CDATA[业务场景：工作中要开发电子发票模块，但是市场上的电子发票平台有很多，经过调研发现他们的功能都是开票，实现接口和配置信息有很大的区别。所以想到了工厂模式。

为什么想到工厂模式，可以从场景中获取自己的理解。 设计模式本身更多的是为了实现设计原则。

工厂模式简介：设计模式三大类之创建型模式。

模型确立：


工厂——（生产）——发票公司

发票公司——（功能）——开发票


工厂选择：目前是确定俩家公司，不排除之后会增加其他公司。最终选择抽象工厂实现。

首先确认下开开票公司的功能


public int]]></description><category></category></item><item><title><![CDATA[算法——冒泡排序]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106782706</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106782706</guid><author>Gavin_Java_</author><pubDate>Tue, 16 Jun 2020 11:35:03 +0800</pubDate><description><![CDATA[问题描述：今天项目中涉及到一段逻辑，灵机一动，好像冒泡排序，安排上。

先来一行小字：很多朋友为了应对面试强行去记忆各种算法的实现代码。几个月后。。。算法？ 那是啥？

算法更像是一段思路，你不理解，写的再熟也不一定能够应用到。

应用场景：几个混乱的元素——按照一定规则站好待命。

冒泡排序：第一个元素起，相邻元素相比，大的往上冒。依次一个个排好。

代码实现：


定义一组元素 {1,6,7,3,9,4}
	先来个双重循环（这种比法第一想到的应该就是双重循环把，没想到的去好好看下乘法表）
	逻辑判断，.]]></description><category></category></item><item><title><![CDATA[Spring中的几个注入类注解]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106762461</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106762461</guid><author>Gavin_Java_</author><pubDate>Mon, 15 Jun 2020 15:07:05 +0800</pubDate><description><![CDATA[问题描述：近期新接了个项目，发现了一个特别的注解@Repository。对视三秒中。。。

呃...好吧，我承认我不认识你了。尴尬ing...

点进去看一下：



@Component修饰过的。好吧，@Component扩展注解。



简单简述下忘记他的原因吧，此注解常作用于持久层，我们的持久层如下：





对@Compenent,@Controller,@Service,@Repository这几个注解做个(初识)总结。

@Compenent---注解类被spring扫描并注入到Spri...]]></description><category></category></item><item><title><![CDATA[intellij idea部分细节设置]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106761119</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/106761119</guid><author>Gavin_Java_</author><pubDate>Mon, 15 Jun 2020 14:40:25 +0800</pubDate><description><![CDATA[问题描述：近期换了份offer，重新装了Idea(2018.2.2)。很多设置初始化了，使用极其不便。所以做一个简单的记录，以便以后重装后能快速设置好。


	修改背景：File-&gt;Settings-&gt;Editor-&gt;Color Scheme，editor中其他一些基础设置就不多提了
	
	
	快速定位文件：显示快速定位的按钮 
	
	
	添加快捷键到菜单栏：File-&gt;Settings-&gt;Appearance-&gt;Menus and Toolbars (以前进后...]]></description><category></category></item><item><title><![CDATA[初识3DES加密--快速应用]]></title><link>https://blog.youkuaiyun.com/Gavin_Java_/article/details/95600897</link><guid>https://blog.youkuaiyun.com/Gavin_Java_/article/details/95600897</guid><author>Gavin_Java_</author><pubDate>Fri, 12 Jul 2019 11:59:57 +0800</pubDate><description><![CDATA[代码



import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.net.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
...]]></description><category></category></item></channel></rss>