- 博客(104)
- 收藏
- 关注
原创 claudeCode使用记录
如果强行混用 OpenAI 协议的配置指向 Anthropic 兼容接口,客户端会自动拼接错误的请求路径,导致服务端无法识别请求,哪怕模型名称完全正确也会报错。很多人遇到模型不存在报错时,会误以为是模型名称不对,反复切换ID却始终无效,核心原因是混淆了 Anthropic 协议和 OpenAI 协议的环境变量。作为请求路径,所以你的 Base URL 直接填写根地址即可,比如。使用 Anthropic 协议时,客户端会自动在地址后拼接。如果使用 OpenAI 兼容协议,客户端会自动拼接。
2026-09-29 17:32:51
216
原创 从零理解 MCP:它是什么,以及怎么用它
MCP 是一套让 AI 工具发现和调用外部能力的标准协议。它不聪明,不主动,但它是目前让 AI 连接外部世界最通用的方式。作为使用者,你只需要找到现成的 MCP Server,配好连接和权限,就能让 AI 操作各种系统。作为开发者,你可以用官方 SDK 写一个 MCP Server,把自己的工具开放给所有支持 MCP 的 AI 工具。让 AI 从“只会聊天”变成“能动手做事”,而且这件事不需要每家重复造轮子。
2026-09-22 11:24:38
229
原创 Keycloak 授权体系详解:资源、策略、权限
假设没有策略层,权限直接绑角色:权限 A 保护资源 1,绑定角色admin权限 B 保护资源 2,绑定角色admin权限 C 保护资源 3,绑定角色admin当规则变化,比如「admin 还必须属于财务部才能访问」时,你必须在每一个权限里逐个修改判断条件。权限一多,维护成本爆炸。有了策略层:创建一个策略「admin 且属于财务部」权限 A/B/C 都引用这一个策略规则变化时,只改策略一处,所有引用它的权限自动生效。资源是保护对象,策略是判断条件,权限是把两者绑在一起并做出裁决的桥梁。
2026-09-18 16:40:29
298
原创 Client authentication(客户端授权)开关与OAuth2 PKCE的深刻理解
Client authentication(客户端授权)这是 Keycloak(和整个 OIDC/OAuth2 体系)里一个的开关。。翻译成人话就是——
2026-09-16 17:05:42
137
原创 前端组件打包方式tsup+esbuild与vite+Rollup的区别
tsup和Vite的打包方案,最核心的区别可以概括为与。tsup基于esbuild,为 npm 包发布而生;而Vite采用esbuildRollup的双引擎架构,主要为 web 应用开发服务。下面是它们在原理、配置和适用场景上的详细对比。
2026-08-27 17:00:48
299
原创 .gitignore 文件的真正含义
一旦某个文件已经被 Git 跟踪(commit 过),再把它加入。让 Git 自动忽略它的。Git 会继续跟踪该文件的后续修改。已被追踪过),仅仅修改。
2026-08-20 15:02:06
199
原创 Changeset Monorepo 发布工作流程
Changesets 的核心哲学"先计划,后执行"。changeset只是记录意图,才真正消费意图修改版本号,才真正发布。这种分离设计让你可以在一个 PR 中积累多个变更,最后统一发布。是关键钩子:它保证了每次publish前自动执行tsup构建,所以你不需要手动先build再publish。tsup双格式输出:每个包同时输出 ESM(import)和 CJS(require),确保兼容性。external配置确保不会被重复打包。Monorepo 的内部依赖管理中的。
2026-08-19 17:43:24
506
原创 从零搭建私有 npm 仓库:一次完整的实战学习笔记
本文记录了作者部署私有npm仓库Verdaccio的全过程思考。通过问答形式,详细解析了Docker部署原理、目录挂载机制、权限问题处理等关键技术点。在组件开发环节,探讨了Monorepo管理、样式导入、发布配置等实际问题,并总结了从部署到使用的完整心智模型。文章特别强调了理解底层原理的重要性,如Docker数据持久化、pnpm workspace管理、发布源分离等核心概念,为前端工程化实践提供了可复用的经验总结。
2026-04-01 16:15:45
573
原创 从零搭建私有 npm 仓库Verdaccio
本文详细记录了从零搭建私有npm仓库Verdaccio的全过程,包括阿里云安全组设置、Docker安装、Verdaccio镜像拉取、配置文件编写及容器部署。重点解决了数据持久化存储和目录权限问题,提供了完整的config.yaml配置示例,并针对部署过程中可能出现的500错误给出了解决方案。通过私有仓库的搭建,可实现组件和工具函数在多项目间的共享,避免代码重复维护的痛点。文章还验证了部署成功的访问方法,为开发者提供了一套完整的私有npm仓库搭建指南。
2026-04-01 16:02:15
555
原创 Jenkins + Gitee 自动化部署 Vue 项目完整指南
本文详细介绍了从零搭建前端项目自动化部署系统的完整流程。主要内容包括:1)环境准备,包括Linux服务器、Gitee仓库和Vue项目;2)Jenkins的Docker安装与配置,解决权限和端口问题;3)关键插件安装与全局工具配置;4)SSH密钥对生成与部署配置;5)Gitee凭证添加与Webhook设置;6)流水线任务创建与脚本编写;7)自动化部署验证。文章还总结了常见问题解决方案,如SSH连接失败、Webhook不触发等,提供了完整的配置速查表。通过这套系统,开发者推送代码到dev分支即可自动完成构建部署
2026-03-31 09:33:24
737
原创 Jenkins 部署与问题解决
在宝塔面板的“软件商店”中搜索并安装 Docker。选择/www/jenkins_home右键,修改权限。:在docker中搜索jenkins然后安装。:导航中的本地镜选择。
2026-03-30 09:47:12
172
原创 Keycloak 主题定制踩坑记:一个前端小白的血泪总结
如果你和我一样,是个前端开发者,突然被要求去定制 Keycloak 的登录页和管理界面,那么这篇文章就是为你准备的。我将用自己亲身的经历,记录下从零开始到成功定制主题的过程中,踩过的每一个坑、犯过的每一个错误。希望能帮你少走一些弯路。
2026-03-05 15:00:40
449
原创 iOS Universal Links配置
该json文件命名为apple-app-site-association,放在域名跟路径的.well-known下面。这里要注意,两个app下的配置都是一样的applinks:dyhy-web.yndysc.com,Xcode 工程 → 选择 Target → Signing & Capabilities。在 Domains 中添加:applinks:dyhy-web.yndysc.com。点击 "+" → 添加 Associated Domains 能力。:两个app分别AppA和AppB,
2026-01-08 10:22:20
507
原创 003不同语言数组详解
用val和var来修饰的也能控制可变不可变,但是与swift完全不一样,val修饰的不可变不是真正意义的不可变,而是说不可以重新赋值,到可以修改内容,真正的不可变与可变通过不同的申明方式来实现,Array可变,如果是引用类型那么array1和array2指向的是同一份内存地址,但是swift的值类型特性就不是这样。用let 和var来控制不可变与可变,用var申明就完全可变,用let申明就完全不可变,体现为,(2)值类型修改时地址变化。(1)值类型写时赋值。不可修改不可重新赋值。
2025-11-20 14:13:52
344
原创 uniapp中的uni_modules分包
这里以qiun-data-charts组件使用为例子,子包目录subpackages/popupSjyy。
2025-11-04 13:59:28
429
原创 vue2与vue3的区别之—响应式系统
被调用时,通知所有收集到的 Watcher 进行更新操作(如重新渲染组件)。中收集依赖这个数据的 Watcher(例如一个组件、一个计算属性)。1、vue2中Object.defineProperty的良达硬伤,响应式的主要原理是Object.defineProperty。的响应式,它不直接操作对象,而是创建一个。:在组件初始化时,Vue 会遍历。来拦截并重新定义对该对象的基本操作。2、对数组中的监听需要特殊处理。函数返回对象的所有属性。
2025-11-04 13:48:15
256
原创 uniapp兼容问题处理总结
但是要注意这个是vue2,vue3中没有首先两个编译后的代码都一样然后在子组件中为设计的语法糖默认行为可以修改这个配置,比如父组件中子组件中为的双向绑定设计,更通用,不限于表单场景默认行为(这个不可重新配置)上面演示的是vue2的代码,下面看看vue3,vue3中没有这里如果不写:value直接写<filter-query v-model="showFilterStatus" />的话默认编译的参数值为modeValue衍生知识:计算属性可以写重写计算属性的get set方法,比如下面。
2025-10-22 17:31:05
282
原创 进一步了解git
SVN(集中式)单一中央仓库所有代码和历史版本集中存储在中央服务器,用户本地仅保存当前工作副本。强依赖网络:提交、查看历史等操作需实时连接服务器,离线环境下功能受限。Git(分布式)全量本地仓库:每个用户的本地都是一个完整的仓库,包含全部代码和历史记录。去中心化:无需实时连接中央服务器,大部分操作(如提交、分支)可在本地完成,适合离线工作。
2025-06-18 11:56:26
542
原创 不同开发语言对字符串的操作
内部存储的是 UTF-16 编码的字符序列,而不是简单的字符数组。由于 Unicode 字符的长度可能不同(例如,某些字符由多个 UTF-16 码点组成),直接通过索引访问字符可能会导致错误。来实现,因为 Swift 的字符串是由 Unicode 标量组成的,字符的长度可能不一致(例如,某些字符由多个 Unicode 标量组成)。Python 中的字符串是不可变的序列,可以通过索引直接访问字符。JavaScript 中的字符串可以通过索引直接访问字符。类型,可以通过索引直接访问字符。运算符或字符串模板。
2025-03-10 17:21:47
933
原创 Intent的七大属性
FLAG_ACTIVITY_REORDER_TO_FRONT:如果activity在task存在,拿到最顶端,不会启动新的Activity。*FLAG_ACTIVITY_SINGLE_TOP:相当于Activity加载模式中的singletop(第二种)*FLAG_ACTIVITY_NEW_TASK:默认的跳转类型,会重新创建一个新的Activity(第一种)*FLAG_ACTIVITY_NO_HISTORY:被启动的Activity一旦退出,他就不会存在于栈中。
2025-02-06 17:29:00
475
原创 oc中* 与**的区别以及如何修改传递的实参数
(3)**代表指向指针的指针,例如 int **pp = &p,这里&p代表的是p的地址,pp指向它,说明pp是指向p的指针,所以用**来申明指针的指针,也就是说只要看到**就要知道,他后面带的变量是指向指针的指针。(3)在changeString方法中,传进来的string是指针的指针,*string代表的是这个指针的指针最终指向的地址里面的值。(3)把指针变量p指向的地址里面的值变成了5,实际上就是把上面3所在的地址中的3变成了5,所以最终a变成了5。(1)str代表的是一个指针变量,里面存储着。
2025-01-17 13:54:37
449
原创 ios文件管理,沙盒机制以及如何操作“文件”APP,把文件共享到文件app
iOS如何实现文件的存储模式是怎样的?如何实现文件的共享,以及如何实现两个app共同共享数据
2025-01-16 16:24:09
4972
1
原创 微信小程序开发设置支持scss文件
首先找到project.config.json文件,打开文件在setting下设置useCompilerPlugins,在useCompilerPlugins数组中增加"sass"在微信小程序开发中,默认是不支持scss文件的,创建文件的时候,css文件默认创建的是wxss后缀结尾的,但是用习惯了scss的怎么办呢?
2025-01-09 14:57:05
1146
python爬虫bs4的基本使用、代理IP和bs4解析【实战讲解-爬取斗鱼颜值主播数据】.zip
2024-11-15
机器学习之线性代数课件(千峰教育优秀作品、深度剖析各个关键知识点).pdf
2024-11-14
uniapp安卓(android)原生录屏、截屏插件(支持应用外录屏、截屏)
2024-07-25
uniapp本地集成安卓原生录屏、截屏插件示例代码(支持应用外录屏截屏)
2024-07-25
cocos2d-x一步两步跳一跳小游戏源代码
2024-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅