自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 常见Linux权限提升笔记

内核漏洞提权是利用Linux内核本身存在的安全漏洞,通过编译或运行针对特定内核版本的exploit代码,直接提升至root权限。常见的内核漏洞包括本地权限提升、条件竞争、缓冲区溢出等。SUID(Set User ID)和SGID(Set Group ID)是Linux的特殊权限位。当一个可执行文件设置了SUID位,任何用户执行该文件时都会以文件所有者的权限运行。如果一个root拥有的程序设置了SUID位且存在安全问题,普通用户就可能利用它提权到root。

2026-04-05 13:41:01 321

原创 FastAPI + SQLAlchemy 2.0 + Alembic 从零搭建,踩坑实录

FastAPI 是那个手脚麻利的点餐员,能快速把客人的需求(HTTP请求)传给后厨;SQLAlchemy 就是后厨的食材管理员,负责管理所有食材(数据)的进出和记录;而Alembic 则是食材管理员的变更日志本,每次新增食材或调整存储方式,都得在本子上记一笔,保证后厨和仓库一致。SQLAlchemy 2.0 之后,语法更清爽了,但同时也带来了一些变化——比如必须用 Mapped 和 mapped_column,如果你还抱着 1.x 的写法,跑起来就会报错。

2026-04-05 13:40:07 342

原创 深入理解 Java Deque 的设计哲学

通过追踪 Doug Lea 与 Joshua Bloch 的设计轨迹,我们不难发现,即便是 JDK 核心 API 的设计,也是在“向下兼容”、“接口隔离”和“开发者习惯”之间不断博弈与取舍的过程。与其记住peek和pop异常处理的不同,不如彻底抛弃这种“模拟语义”,直接使用带有明确方向标识的First/Last组 API。这样可以在 Code Review 阶段消除由于null返回值或带来的隐患。需要抛异常的栈:统一使用addFirstgetFirst。不抛异常的栈:统一使用offerFirst。

2026-04-04 13:34:47 327

原创 用户智能体交互协议AG-UI(下)

AG-UI Tools 是 AG-UI 的 工具系统,分为 Backend Tools 和 Frontend Tools,它们是AI Agent和外部世界交互的桥梁,让AI Agent能够执行实际操作,而不仅仅是生成文本。

2026-04-04 13:34:04 376

原创 Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题

容器内的 node 用户(UID 1000)没有权限读写宿主机挂载进去的文件夹(通常是因为宿主机文件夹属于 root 或其他用户).如果不修改脚本, 会出现openclaw Permission Denied的情况.感觉Lite的额度都基本够一些使用了, 我平时额度用不完, 还可以继续压榨。不得不喷一下国内那些App对于Bot的适配还需要开源人自己适配, 垃圾。ClawBot吃Env配置代理, 但是在容器中, 我一直没有配起来。我中途不小心kill了Docker, 我使用。输入了预期的Bot名字之后,

2026-04-03 13:54:01 353

原创 GitHub Pages 技术文档站点搭建实践指南

通过 MkDocs 和 GitHub Pages 搭建技术文档站点是一个一次性投入、长期受益的过程。虽然初始配置需要理解一些概念和工具,但一旦建立起标准化的工作流程,后续的维护成本很低,而带来的专业性和可用性提升是显著的。核心要点在于理解源文件和构建产物的分离原则。main 分支管理可编辑的源内容,gh-pages 分支托管生成的网站文件,两者各司其职。日常工作中只需要关注 main 分支的内容更新,构建和部署由 MkDocs 自动处理。

2026-04-03 13:53:13 338

原创 DBShadow.net之化繁为简

DBShadow.net预编译比较智能只有1个参数时支持化繁为简,支持直接传值做为参数值这样可以节约定义只有一个属性的参数类。

2026-04-02 14:14:59 22

原创 如何使用 GitHub Actions + image-syncer 实现 Docker Hub 到 Azure ACR 的自动化镜像同步

通过本文介绍的方法,我们成功实现了从 Docker Hub 到 Azure ACR 的自动化镜像同步。这个方案利用 GitHub Actions 的定时触发和手动触发功能,结合 image-syncer 的增量同步和错误处理机制,确保了镜像的及时同步和一致性。我们还讨论了安全最佳实践、性能优化、故障排查等方面的内容,帮助用户更好地管理和维护这个同步机制。希望本文能够为需要在 Azure 环境中部署 Docker 镜像的开发者提供有价值的参考。

2026-04-02 14:14:17 336

原创 Claude Code 完全指南:使用方式、技巧与最佳实践

Claude Code(CC)是由 Anthropic 开发的系统级 AI Agent,它不仅是一个代码编写工具,更是一个可以通过自然语言指令完成各种电脑任务的智能助手。特性说明全功能访问拥有系统级权限,可执行文件操作、运行命令、管理进程等超大上下文支持 200K token 上下文窗口,可处理大型项目高度可扩展支持 MCP、Skills、Plugins、Hooks 等多种扩展方式多代理协作支持子代理(Subagents)并行处理复杂任务自然交互支持自然语言指令,无需学习复杂命令语法Skills。

2026-04-01 14:52:16 412

原创 PHP 异步与多线程 从 TrueAsync 展望未来

几年前要给 PHP 应用加高容量遥测,我说做不到。看到 Swoole 架构后想测试一下。能不能做一个 API,生成和处理大量数据的同时不拖慢客户端?我们给 PHP 做了个优化的 OpenTelemetry,分批写数据,收集成大块再发到中间遥测服务器。数据压缩,JSON 结构用 MessagePack 序列化。假设是:用单线程协程逐步构建遥测数据,定时或达到阈值时发送。没有跨线程交互,代码应该快。真的吗?实验结果:遥测让 API 吞吐量减半。假设错了。为什么?概念上看起来没问题。

2026-04-01 14:51:29 381

原创 一步一步学WF系列(一)——Hello world开始

顺序工作流:审批流其实就是典型的顺序工作流,一个审批对象一步步地层层审批,拿一次面试过程来说,首先人事部简历筛选,然后是技术经理面试,然后是总经理面试,这都是按照流程来的。另外,简单了说,其实我们所画的流程图就是一种最简单的工作流,工作流最大的特点就是图形化。顺序工作流是我们很常见的工作流,这个工作流是由我们事先规定好的顺序一步步地走下去,他们执行的步骤是不可以改变的。WF的运行是通过工作流的运行时引擎来实现的。事件驱动工作流,我们也称之为有限状态机,他状态的变更是犹由于特定的事件而触发的。

2026-03-31 15:14:25 361

原创 重温设计模式(四)——工厂模式

但是,我的这个问题,用这种方法是最容易解决的,那么他对我来说就是一个最好的模式,而这个模式的中心就是组合优于继承,那么我就说,他是一个桥接模式。<1> 很多对象的的创建并不仅仅是一个new那么简单,而是需要很多复杂的步骤,这样,我们如果写成一个工厂,我们就可以根据不同的需求调用不同的工厂,但是如果我们不使用模式,就需要频繁地去改动CreateProduct.dll这个创建产品的类,而这个时候,创建产品不仅仅是修改一个new这样简单,而是需要很多的过程。书中的例子很经典,这本书是必看的,我就不在多说。

2026-03-31 15:13:30 329

原创 通过 Docker 创建开发环境

net-name--driver: 指定网络驱动类型为 bridge(桥接模式,Docker 默认的网络类型,用于单机容器之间的通信)--subnet: 指定网络的子网--gateway: 指定网关--ip-range: 指定可用IP范围。

2026-03-30 15:05:54 350

原创 篇文章彻底搞懂 MySQL 和 Redis:原理、区别、项目用法全解析(建议收藏)

后端性能问题很多时候不是 SQL 能解决的。如果只用 MySQL,其实系统也能运行。这些东西,Redis 就变得非常重要。Redis 比 MySQL 快很多。但 Redis 在小项目里也很好用。这也是 Redis 快的核心原因。游戏积分榜 用户活跃榜 商品热度榜。Redis 几乎是后端必备技术。下面是最常见的 5 个使用场景。重要数据必须存在 MySQL。

2026-03-30 15:05:11 327

原创 打包ROCm环境的相关Wheel方便后续使用

简单来说,Wheel(.whl文件)就是 Python 的“全家桶安装包”。如果把 Python 库比作一套“乐高玩具”,那么 Wheel 就像是。你买回来直接就能玩,而不需要自己对照零件图纸(源码)去从头组装。在 Wheel 出现之前,Python 常用.tar.gz格式的源码包。torchpipWheel 包里到底有什么?如果把.whl后缀改成.ziptorch.py.dll.dist-info。

2026-03-29 15:26:43 227

原创 Opus现实打脸GLM5“教课书“式架构

(上次 5.4,↑1.4)在重新做昨天的4项评估后,GLM5给的评分变化不大毕竟已经8.5/10了,所以我就让GLM5与Seed2给出了在新评估的基础上的重构意见。然后将它们的重构意见给Opus看,问它有什么看法就得到了上述的图。这能看出了什么?其实并不是想证明谁强谁弱,首先GLM5是开发了MindX大量代码的主力模型之一,Opus只是碰巧有朋友支持暂时给我感受一下。我是想延续昨天的话题,从代码与架构本身上来研判两大模型的特性,这样也能给其它朋友带来一些实际使用的参考。

2026-03-29 15:26:07 297

原创 别再只做 “点点点”!AI测试的六种不同玩法,附带Midscene详细教程!

传统的UI自动化测试工具,比如Selenium、Appium、Playwright等,通常需要通过ID、Class、Xpath等固定的元素属性来定位元素,但前端开发常因需求调整修改DOM结构(比如组件库升级、样式优化、布局调整),导致元素ID、Class这类属性可能会出现动态变化,脚本极易因为这些变化,导致“找不到元素”,据统计,企业级项目中约。等固定属性,而是像人一样通过 “视觉特征” 识别元素,比如 “页面顶部的蓝色登录按钮”“中间的白色输入框,占位符是请输入手机号”“右下角的红色提交按钮”。

2026-03-28 15:10:08 250

原创 FastAPI实战:用懒加载与Lifespan优雅管理重型依赖

对于加载期间的请求,你可以根据业务决定是返回一个"服务预热中"的友好提示,还是用队列让其等待。想象一下,用户第一次请求,要白屏等待模型加载的几十秒,体验极差,而且这个请求很可能超时。很多兄弟(包括当初的我)会把加载模型这种"备菜"工作,直接扔在全局变量里,在应用启动时执行。官方文档可能讲得有点抽象,我打个比方:它就像是你服务的"私人管家"。你可能会问:"那我不用的时候不加载,用的时候再加载,不就行了?阶段,最好设置一个标志位,让正在处理的请求完成,并拒绝新请求。:你的服务几乎可以秒级就绪,通过健康检查。

2026-03-28 15:08:32 167

原创 论 AI Skills 分布式发展的必然性:从单体智能到“云端大脑”的跃迁

AI Skills(AI 技能)的概念最早在等前沿 Agent 实践中被强化。最初,Skills 被视为“工具级”的增强,如简单的文件读写或终端操作,方便用户快速实现各种操作。然而,在以Solon AI为代表的现代应用开发框架中,AI Skills 已演化为一种更高维度的封装,用于智能体应用开发。工具级(Tool-level):解决的是“手”的问题,是具体的执行函数。框架级(Framework-level):解决的是“脑”的问题。它是工具(Tools)、指令()与元数据(Metadata)的聚合体。

2026-03-27 14:03:15 309

原创 wso2~通过三方IDP的token置换wso2的token

keycloak中为客户端开启roles之后,如果有用户有客户端的角色,会在jwt中多出来aud数组字段,也可以为wso2客户端添加自定义的client scope,然后为它添加aud的cliams。表初始化一条用户数据,um_user_name与wso2am_db.idn_auth_user表的user_name保持一致即可,即三方IDP的user_id即可。没有这个用户数据时,你再为应用生成consumer_key时调用generate-keys接口,会出现错误,所以,我们需要想办法,在。

2026-03-27 14:02:28 367

原创 NetBox 自动化导入资产 - IP地址

例如,在项目中,开发者自己实现了一个事件总线的框架组件,以及一个自动对象映射的框架组件,将这两个组件封装成两个模块,由于它们关注的类型对象不一样,所以每个模块对当前扫描到的类型处理方法不一样,比如说识别特性注解、识别接口,然后做对应的处理逻辑。基于 ASP.NET Core 开发的 Web 框架中,最著名的是 ABP,ABP 主要特点之一开发不同项目(程序集)时,在每个项目中创建一个模块类,程序加载每个程序集中,扫描出所有的模块类,然后通过模块类作为入口,初始化程序集。

2026-03-26 15:23:32 296

原创 上班摸鱼玩塔防,竟然是为了学架构?

显然这个过程很没有用,兔子永远都找不到出路,所以在这个过程中兔子冷静下来并在每次跳的时候更加谨慎,少跳一点,以到达合适的最优点。首先,我们可以先以 $\left { \frac{\sum_{i=1}^{m} p_i}{m} ,\frac{\sum_{i=1}^{m} q_i}{m} \right } $ 为初始点位进行一次模拟退火,然后分别将每一个敌人设为初始点位进行一次模拟退火,这样会让答案越来越接近最优解。有的时候,我们需要使用模拟退火,但有的时候使用爬山算法,更有的时候简单的随机化就可以搞定。

2026-03-26 15:13:47 179

原创 [拆解LangChain执行引擎]静态上下文在Pregel中的应用

它的出现是为了解决在复杂的图计算中,如何优雅地处理“不属于图状态,但Node运行又必须依赖的外部环境信息”这一痛点。它允许我们将复杂的、重量级的、带有外部依赖的对象的直接注入,而不会破坏 Pregel 模型对。Pregel节点的处理函数读取静态上下文比较繁琐,以为除了承载输入的参数(一般是一个字典),我们只能额外定义一个。类型的参数,我们从中提供作为运行时的Runtime对象,进而得到作为静态上下文的UserInfo对象。在创建Pregel对象的时候,作为静态上下文的UserInfo类型直接以构造函数的。

2026-03-25 14:57:16 166

原创 TCaptcha 滑块验证码:纯 HTTP 协议逆向实战

腾讯 TCaptcha 是国内主流的滑块验证码方案,被广泛应用于各大互联网平台的风控系统中。本项目以粉笔教育的登录流程为研究对象,核心目标是在不依赖 Selenium 或 Playwright 等浏览器自动化工具的前提下,通过纯 HTTP 协议模拟实现验证码的自动化破解。这要求我们不仅要实现亚像素级别的拼图块位置计算,还需要绕过设备指纹、行为轨迹等多维度的检测机制,最终构建出一套稳定、可复用的工程化解决方案。

2026-03-25 14:55:50 497

原创 setuptools - 轻松构建和分发Python包

setuptools是一个用于创建、分发和安装 Python 包的核心库。定义 Python 包的元数据(如名称、版本、作者等)。声明包的依赖项,确保你的包能够正确运行。构建源代码分发包(Source Distribution)和轮子分发包(Wheel Distribution)。自动发现项目中的包和模块。

2026-03-24 13:24:57 226

原创 DBShadow.net之化繁为简

DBShadow.net预编译比较智能只有1个参数时支持化繁为简,支持直接传值做为参数值这样可以节约定义只有一个属性的参数类参数和返回值类型还可以定义为泛型,可以做到更加灵活。

2026-03-24 13:23:31 148

原创 为什么说 IO 操作异步才有意义

通过以上的分析,我们可以清晰地看到 IO 密集型和 CPU 密集型任务在本质上的区别,以及异步模型适用性的根源。特性IO 密集型 (IO-Bound)CPU 密集型 (CPU-Bound)主要瓶颈网络、硬盘、数据库CPU 计算能力CPU 状态大部分时间在等待大部分时间在全速运转异步的价值极高。利用等待时间处理其他并发请求(高并发的核心)。低。切换其他线程来代替当前线程计算不会有性能提升,只要开销典型例子Web 服务器接口、文件上传下载视频压缩、区块链挖矿、图像渲染最佳策略。

2026-03-23 20:45:00 333

原创 FastAPI + TinyDB并发陷阱与实战:告别数据错乱的解决方案

本文针对在FastAPI框架下使用TinyDB(JSON文件数据库)时遇到的并发写入数据冲突、错乱问题,深入浅出地解释了问题根源,并提供了从“文件锁”到“内存队列”再到“乐观锁”的三种由浅入深的实战解决方案,帮助你根据实际场景选择,确保数据一致性。

2026-03-23 20:44:15 435 1

空空如也

空空如也

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

TA关注的人

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