cpolar实现内网穿透
对于某些经常喜欢在宿舍干实验室活又没钱开公网的家伙比较有用,下面以ubuntu为例 快速上手(Ubuntu)1. 安装与认证12345sudo apt-get updatesudo apt-get install -y curlcurl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bashcpolar versioncpolar authtoken <YOUR_TOKEN> <YOUR_TOKEN> 可在 cpolar 控制台中获取。 2. 启动服务并检查状态123sudo systemctl enable cpolarsudo systemctl start cpolarsudo systemctl status cpolar 状态为 active (running) 说明服务正常。 3. HTTP 穿透测试1cpolar http 8080 出现公网地址后,可在外部网络直接访问该地址。测试完成使用 Ctrl+C 退出。 4. SSH 穿透测试在 Web ...
Agent时代基础设施--MCP协议介绍
What is MCPMCP (Model Context Protocol)是一种开放协议,用于标准化应用程序如何向大型语言模型(LLMs)提供上下文。可以将 MCP 想象为 AI 应用的 typec 接口。正如 typec 提供了一种标准化的方式将您的设备连接到各种外设和配件,MCP 也提供了一种标准化的方式,将 AI 模型连接到不同的数据源和工具。 MCP 协议由 Anthropic 在 2024 年 11 月底推出: 官方文档:Introduction GitHub 仓库:https://github.com/modelcontextprotocol MCP 集成教学: Git - Git 读取、操作、搜索。 Github - Repo 管理、文件操作和 GitHub API 集成。 Google Maps - 集成 Google Map 获取位置信息。 PostgreSQL - 只读数据库查询。 Slack - Slack 消息发送和查询。 MCP导航站 Why is MCP举个栗子,在过去,为了让大模型等 AI 应用使用我们的数据,要么复制粘贴,要么上传下载,非常麻 ...
一文教你学会看多目标检测中的指标
一、先说结论:检测指标到底在衡量什么目标检测模型要同时回答两个问题: 框得准不准(定位)。 类别判得对不对(分类)。 所以一套可用的评估体系至少要覆盖两件事: 单个预测框是否正确(TP/FP/FN)。 模型在不同阈值下的整体表现(PR 曲线、AP、mAP)。 二、核心概念2.1 IoU(Intersection over Union)IoU 用来衡量预测框和标注框的重叠程度: IoU = \frac{Area(B_{pred} \cap B_{gt})}{Area(B_{pred} \cup B_{gt})}一般会设一个阈值(例如 0.5),IoU 达到阈值才有资格被视为“定位正确”。 2.2 TP、FP、FN在单类别下可以这样理解: TP:类别预测正确,且与某个真实框匹配成功(IoU 达阈值)。 FP:预测了目标,但类别错误或没有匹配到真实框。 FN:真实目标存在,但模型没有成功预测到。 2.3 Precision 与 Recall Precision = \frac{TP}{TP+FP}, \quad Recall = \frac{TP}{TP+FN} Precis ...
树莓派配合公网服务器frp转发实现内网穿透
相信不少的同学都遇到过一个很麻烦的事情——实验室用的服务器只有连上实验室的内网后才能使用,一旦外出开impart或者回家后,就不能进入实验室的服务器继续玩耍(卷)了。这个时候怎么办呢?如果你没有一个公网服务器又不想花钱,cpolar是你的最佳选择,但是如果你有事情就变得完全不一样了——frp的优雅永不过时。 FRP 项目官网 GitHub 仓库 项目文档 frp是什么?frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 为什么使用 frp ?通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括: 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。 代理组间的负载均衡。 端口复用,多个服务通过同一个服务端端口暴露。 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便 ...
vim从入门到入土
首先声明我的vscode坚定拥护者身份,奈何十年老古董实在带不动,不得不重新捡起vim开始朴素(装逼)生活。 1. 什么是 Vim?Vim 是一个强大的文本编辑器,基于经典的 vi 编辑器。它的核心设计理念是高效编辑文本,特别适合程序员和技术用户 (高逼格用户)。 与大多数文本编辑器不同,Vim 的操作基于模式切换,它拥有多个操作模式,使你能够在插入、编辑、命令等操作之间快速切换。 Vim vs Vi:Vim 是 vi 的增强版,提供了更多的功能,如多级撤销、语法高亮、扩展的脚本支持等。 2. Vim 的主要模式Vim 的操作基于不同的模式,主要有以下几种模式:1.普通模式 (Normal Mode):12345678910默认进入的模式,用于导航和操作文本。进入方式:启动 Vim 后默认进入,或按 Esc 回到普通模式。常用命令:h:向左移动光标。j:向下移动光标。k:向上移动光标。l:向右移动光标。dd:删除当前行。yy:复制当前行。p:在光标之后粘贴。2.插入模式 (Insert Mode):123用于编辑文本,类似于普通文本编辑器的输入状态。进入方式:按 i 或 a 进入。退出 ...
数据结构的深度思考和总结
1.数据结构的本质数据结构的本质其实就是链表和数组,其他复杂的数据结构不过是这些基本结构的高级抽象。无论是树、栈、队列,还是更高级的图结构,归根结底都是基于数组或链表构建的。它们通过底层的实现细节和不同的逻辑组织方式,提供了更易用的API接口。 比如,树这种数据结构,既可以用数组来实现,也可以用链表构建。数组的优势在于可以通过索引快速访问,节省空间,而链表的优势则在于高效的插入和删除操作。但链表由于使用指针,会占用更多的空间。 我们可以从Redis的实现上看到这一点,它内部有字符串、集合等数据结构,每一种数据类型都有不同的实现方式。其实,我们自己也可以根据具体的业务场景,设计并实现出个性化的数据结构,并定义一些适合当前业务需求的API接口。 语言层面也为我们提供了丰富的数据结构工具。比如在Python中,除了常用的字典和列表外,还可以通过collections模块找到一些更灵活和高效的数据类型,如defaultdict、双端队列deque、计数器Counter等。Java的java.util包中也包含了大量用于扩展基础数据结构的工具类。 综上所述,数据结构的底层其实就是数组和链表。 ...
Transformer架构初步
从 RNN 爬到 Transformer 山顶第一次听到 Transformer 的时候,我脑子里闪过三个画面: 物理书里的“变压器” 变形金刚 导师嘴里那句:“现在大部分大模型都是这个架构……” 然后我去翻论文《Attention is All You Need》,翻开第一眼:公式一堆、结构图一堆,我当场关掉 PDF,默默记住一个结论: 这个东西以后肯定逃不过,但今天先不学。 直到后面真的要用到它,我才开始系统地啃。下面的内容可以看作是我这个初学者把 Transformer 从“听过名字”到“勉强理解”的过程整理。 一、先说结论:Transformer 到底干了件什么事?如果只能用一句话来概括 Transformer,我现在会这样说: 以前我们处理一句话,是按时间步从左到右递推;Transformer 改成了:整句一起看,通过自注意力让每个位置和所有位置建立联系。 更具体一点: RNN:依次处理 (x_1, x_2, \dots, x_T) 每一步依赖前一步的隐状态$(h_{t-1})$; Transformer:把整段序列表示成矩阵,一次性送进若干层自注意力和前馈网 ...
KMP
1. 算法简介KMP 算法用于 字符串匹配,通过预处理模式串,避免重复的字符比较,从而实现高效匹配。它的时间复杂度是 O(n + m),其中 n 是主串长度,m 是模式串长度。 2. 主要思想当模式串中的某个字符匹配失败时,利用已知的部分匹配结果,跳过不必要的比较。这是通过 部分匹配表(也称为 前缀表)实现的。 3. 术语解释 前缀:从字符串的第一个字符开始,不包含最后一个字符的子串。 后缀:从字符串的最后一个字符开始,不包含第一个字符的子串。 部分匹配表:记录每个字符位置前的部分字符串的最长相同前缀和后缀的长度。 4. 部分匹配表的构建部分匹配表记录模式串在匹配失败时,可以跳过的字符数量。假设模式串为 pattern,前缀表 prefix[i] 的值表示在 pattern[0...i] 中,最长相同前缀和后缀的长度。 构建步骤: 初始时,prefix[0] = 0,表示第一个字符没有前缀和后缀。 使用双指针法遍历模式串,一个指针指向当前字符,一个指向最长前缀的下一个字符。 若当前字符匹配,前缀长度加 1;否则,回退到前一个匹配的前缀位置。 5. KMP 主算法步骤 预处理模式串 ...
screen命令应用
screen 是一个非常强大的终端会话管理工具,它可以让你在多个终端窗口中运行任务,并在会话断开后继续保持任务的执行状态。特别适合长时间运行的任务或远程连接的任务管理。对于远程服务器player简直是屠龙宝刀。 常见用法:以下是一些常见的 screen 命令和用法: 1. 启动新的 screen 会话1screen 启动一个新的 screen 会话。在新窗口中,你可以运行任何命令。 默认情况下,screen 会自动分配一个会话 ID。 2. 启动带名称的 screen 会话1screen -S session_name 通过 -S 选项为会话指定名称 session_name,便于管理多个会话。 3. 分离(Detach)会话1Ctrl + A + D 使用快捷键 Ctrl + A + D,可以将当前会话暂时分离(detach),但命令仍会继续在后台执行。 4. 恢复(Reattach)已分离的会话1screen -r 恢复上一个分离的 screen 会话。 5. 查看现有 screen 会话1screen -ls 列出当前所有的 screen 会话,包括那些分离的会 ...
yolo初步
参考文献:A simple way of creating a custom object detection model(这个就是卓晴教程的原版)YOLOv5的详细使用教程,以及使用yolov5训练自己的数据集_yolo5训练集-CSDN博客 使用预训练模型 安装环境依赖 克隆项目1git clone https://github.com/ultralytics/yolov5 # clone repo 镜像 1git clone https://github.com.cnpmjs.org/ultralytics/yolov5 # clone repo 必要环境官方给出的要求是:python>=3.7、PyTorch>=1.5 12cd yolov5pip install -U -r requirements.txt 123456789101112131415161718192021222324# pip install -U -r requirements.txtCythonnumpy==1.17opencv-pythontorch>=1.5matplotli ...
