Openspec
A "change" in 是一个“承载着围绕一项工作所进行的所有思考和规划的“集合。文件夹位于,包含proposal, specs, design, tasks。 工作流程 目录结构 - - 这是最重要的目录,存储了系统当前是如何运行的完整描述。 - 按domain组织:为了防止单个文档过大,它按...
Claudemd
| 类型 | 位置 | 范围 | 版本控制 | 典型用途 | | ------ | ----------------------- | ---- | ----- | ------ | | 全局 | | 所有项目 | 不共享 | 个人编码偏好 | | 项目 | | 当前项目 | 共享给团队 | 团队规...
SDD(Spec Driven Develop)
Kiro的spec流程被设计为三个步骤:需求 (requirements.md) → 设计 (design.md) → 任务 (tasks.md)。每个工作流步骤都由一个Markdown文档表示,Kiro会引导你达成这三个步骤。 1. 需求文档 它被构建为一个需求列表 1. 每个需求代表一个“用户故...
Run Code
runcode是一个来自veadk库的内置工具,它提供了一个安全的代码执行沙箱功能。这个工具允许AI Agent运行用户请求的代码片段(主要是 Python3),并返回执行结果。该工具通过字节跳动云服务的API在远程安全环境中执行代码,并具有会话管理和身份验证功能。 1. 工作原理 1.1. 工具注...
Demo
1. summary 2. 3. 对话前,无任何相关记忆 通过对话告知喜欢滑雪 再次查询记忆库 4. 5. 部署MCP服务的时候可以选择API KEY自动生成MCP的入站身份鉴权 agentkit一直无法拉起mcp工具集,这里使用claude code本地测试 6. 环境变量参考 7. 相关链接 -...
Awscli
install 配置账号 1. ref https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
Invoke
调用需要具备以下权限
Introduce
Amazon Bedrock AgentCore 同时具备框架无关性和模型无关性,让你能够灵活、安全且大规模地部署和运行高级 AI 智能体。无论你是使用 Strands Agents、CrewAI、LangGraph、LlamaIndex 或任何其他框架构建智能体,也无论你在哪个大语言模型(LLM)...
Gateway
1. v2n agent runtime需要的short-term memory需要通过v2n连接到用户vpc中的postgresql(内存中易失)
AgentCore
Amazon Bedrock AgentCore是用于构建、部署、高效运行Agent的最先进的智能化平台,其服务包括Runtime, Gateway, Memory, Identity, Observability, Browser, Code Interpreter, Evaluation, po...
Oauth2.0
OAuth 2.0是一个关于授权(Authorization)的开放标准。它允许用户让第三方应用访问该用户在特定服务上存储的私有资源(如照片、联系人等),而无需将用户名和密码提供给第三方应用。最常见的例子就是:你使用“微信登录”或“GitHub登录”来注册一个新的网站,而不需要在该网站重新设置密码。...
记忆
1. 短期记忆 LLM的核心架构在推理时,每一轮都是独立的计算过程。因此如果不把所有对话历史都带上的话,LLM就只能针对当前问题就会回答,无法感知历史对话。 在AI中,短期记忆通常指“对话上下文”,包括: - prompt - 对话历史 - 前序大模型推理结果 - 前序工具执行结果 短期记忆有两种存...
开源模型汇总
1. | Model | Total Params | Activated Params | Context Length | | :--------------: | :---------------: | :-------------------: | :----------------: | ...
Uv
1. 设置pip源 配置环境变量 2. 设置cache位置 3. 初始化项目并指定最低python版本
MCP Gateway
1. ref https://www.volcengine.com/docs/86681/1844858?lang=zh
Agentkit
1. 支持协议: AgentKit智能体运行时支持A2A、MCP、标准HTTP三种通信协议 2. agent访问方式 - 公网访问:默认访问方式。 - 私网访问:选择同地域中的任意一个VPC和子网,每个可用区支持最多选择一个子网。 3. 大模型 通过api endpoint对接的是火山方案 3.1....
基本概念
1. 参数大小 | 缩写 | 英文全称 | 中文含义 | 数值(科学计数法) | 对应中文单位 | | ------ | ------------ | -------- | ------------- | ----------- | | M | Million | 百万 | $10^6$ | 100...
Bedrock
1. Model catalog - Amazon Bedrock Foundation Models - Amazon Bedrock Marketplace - Bedrock Custom Model Import 1.1. 区别对比 | 特性 | Foundation Models | Ma...
Awesome Tools
:pdf论文翻译,提供中英文对照。
MCP与AI Agent
AI Agent向LLM “提供” 了它能使用的工具列表,这个过程通常通过以下两种方式实现: 1. 静态工具注册(Static Tool Registration): - 在设计 AI Agent 系统时,开发者会预先定义并注册一系列可供 Agent 调用的工具。 - 每个工具都有一个清晰的 描述 ...
MCP开发原理
1. MCP Server开发 1.1. 注意事项 - 使用stdio作为transport layer的时候,不要进行任何控制台输出 1.2. 交互过程 INITIALIZE = "initialize" - 协商协议版本 - primitives支持情况,如tools、resources、pro...
MCP概念理解
1. 基本概念 MCP(Model Context Protocol 模型上下文协议) 是一个开放的标准化协议,用于在AI模型和外部数据源、工具之间建立安全、可控的连接。它定义了AI系统如何访问和利用外部上下文信息的规范。MCP就像是AI应用程序的USB-C接口,为AI模型提供了一种标准化的方式来连...
MCP配置
1. 基本定义 - 每个MCP服务器都是一个独立json对象,以服务器名称作为key - key在MCP配置文件中以及全局配置文件和项目配置文件中必须是唯一的 - 每个MCP服务器条目对象都必须具有属性 2. local mcp server - (可选):在执行之前,先将进程的工作目录切换到指定路...
开发与测试
1. tools 1.1. stdio 启动命令 inspector调试 mcp config 1.2. SSE 启动命令 inspector调试 mcp config 1.3. streamable http mcp-server仅需修改transport即可 mcp confi需要将修改为,例如...
概念
1. Message类型 System message 在大模型内部是每次加在了用户输入的前面。在 的大模型设计的时候,有三种不同的message 类型,这三者是有明显区别的。 - System Message:对大模型的角色进行定义,并输入一些基础的指令,包括大模型的身份、一些用于提高安全性的指令...
RAG
RAG(Retrieval-Augmented-Generation, 检索增强生成)is a process that helps AI models "look things up" before they answer, like accessing my calender or the we...
Vector Database
Embeddings用数值形式的向量,在高维空间表示数据(通常是文本等非结构化的数据)。传统的关系型数据库并不适合存储和搜索这些向量表示。 向量存储库能够使用相似度算法对相似向量进行索引和快速搜索,使得应用程序能够在给定目标向量的情况下找到相关向量。 例如,在个性化聊天机器人的案例中,用户会向生成式...
Agntcy
1. OASF Open Agentic Schema Framework一个基于OCI(Open Container Initiative)的可扩展数据模型,用于描述agent的属性并确保agent的唯一标识。OASF支持描述A2A代理和MCP服务器,并且可以扩展以支持其他常用格式,例如Copil...
Claude Skills
1. 原理 claude skill是一类模块化能力组件,用于拓展 Claude的功能边界。每项技能都封装了: 1. 元数据 2. 指令说明 3. 可选配套资源(脚本、模板) Claude Agent Skills的设计哲学在于模块化与按需加载,旨在解决传统代理系统中常见的上下文冗余、性能衰减以及操...
CrewAI
1. install https://docs.crewai.com/en/installation
Claude Code
1. 安装claude code 环境变量方式启动或直接修改文件 使用claude code 在vscode中安装claude code插件,然后在claude code命令行界面使用即可连接到vscode。claude code就可以和vscode进行交付,感知你在vscode中选中的代码、文件,...
执行计划
1. explain和explain anayze 和生成的执行计划通常是一致的,但并不能保证完全一致。 1.1. 核心功能对比 | 对比维度 | EXPLAIN | EXPLAIN ANALYZE | | -------- | ------------- | --------------- | |...
Excalidraw使用示例
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== Text Elements %%>>>text element-link:Excalidraw<<<%%shinerio's blog ^0js7...
锥型NAT和对称型NAT
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== %% Drawing %%
Mysql可重复读
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== Text Elements 事务A ^EJKvgE8s 事务B ^if98ykqE select from orders; ^Gp5obo7a u...
Mysql当前读下幻读问题
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== Excalidraw Data Text Elements 事务A ^skXrctjq 事务B ^eJoYKov2 insert into ord...
Mysql当前读下解决幻读
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== Text Elements 事务A ^yULSUGNg 事务B ^RjMMNDeM select from orders where 10 sel...
Mysql快照读下解决幻读
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== Text Elements 事务A ^b7TiLH2p 事务B ^bMLs1cuE select from orders; ^nEabCTcv i...
Postgresql不可重复读
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== Text Elements 事务A ^EJKvgE8s 事务B ^if98ykqE select from orders; ^Gp5obo7a u...
基础知识
首套房贷利率30% 1. 准备 购房资质:双方都是北京户口 资金:首付250-350 2. 普通住宅认定 - 住宅小区建筑容积率在1.0(含)以上; - 单套建筑面积在144平方米(含)以下; - 实际成交价格低于确定的价格标准,其中五环内单价低于85000元/平方米,五至六环之间单价低于65000...
专业术语
1. 盘口 股市交易过程中,看盘观察交易的俗称。 2. 扫盘 在涨势中常有大单从天而降,将卖盘挂单连续悉数吞噬,即称扫盘。在股价刚刚形成多头排列且涨势初起之际,若发现有大单一下子连续地横扫了多笔卖盘时,则预示主力正大举进场建仓,是投资人跟进的绝好时机。 3. 量比 量比是指股市开市后平均每分钟的成交...
炒股原则
- 买在分歧,卖在一致: 这个是站在散户的视角来看的,散户一致性非常强的时候,说明涨已经到位了,没有散户去抬高价格了。这句话要辩证的去看,做股票要始终站在主力一致性的一边,站在散户一致性的对立面。
A2A
协议是一项开放标准,旨在解决人工智能快速发展领域中的一个基本挑战:由不同团队构建、使用不同技术且归不同组织所有的AI Agents,如何有效通信与协作? 随着人工智能代理变得更加专业化和强大,它们在复杂任务上协同工作的需求也日益增长。想象一下,用户让其主要的人工智能助手规划一次国际旅行。这一个请求可...
AI Agent综述(Chatbot + Workflow + AI Agent + Function Call + MCP)
1. LLM E.G. Chat GPT, Google Gemini and claude. 1.1. Work Mechanism Human provide an input and the LLM responds with an output. > input(prompt) -> LLM...
设计模型(Work Flow & Agent)
1. 工作流模式(Predefined Workflow) 1.1. 流水线 流水线是最简单直接的工作流编排,通过编排一个顺序处理的流程,让模型逐步执行和推理。 场景示例: 文档处理系统:文档上传 → 格式转换 → 内容提取 → 语义分析 → 结果存储 1.2. 路由分发 路由分发是将输入分类(LL...
Dify
1. chatbot - 核心就是对话 - 支持自定义System prompt - System prompt和Conversation opener支持jianjia变量渲染 - 支持rag 输入变量后,进行对话 2. Agent Agent相比chatbot增加了工具调用的能力 2.1. Co...
字典树(Trie)
1. 单级字典树 字典树最基础的应用——查找一个字符串是否在「字典」中出现过,也可以用来做最长前缀匹配。 如下图,每个路径代表一个字母,每个节点存储以该节点结尾的字符串是否存在,构建如下的一个字典树。 1-4-8-12,且12节点记录值为true,则代表存在这样的路径的字符串,即存在caa字符串。 ...
时间轮
时间轮(Timing Wheel)是George Varghese和Tony Lauck在1996年的论文实现的,是一种实现延迟功能(定时器)的精妙的高级算法,其算法应用范围非常广泛它在Linux内核中使用广泛,是Linux内核定时器的实现方法和基础之一,在Java开发过程中常用的Dubbo、Net...
Dapr(Distributed Application Runtime)
dapr重点落在了runtime上,runtime是一个抽象概念,提供了运行时的实现,不需要开发人员操心,比如Java的runtime环境就是jvm。核心思想是模块化,通过sidecar的方式实现,然后通过本地rpc或者http调用。 1. Multi Runtime 分布式应用的需求: - 生命周...
EIP分类
1. 全动态BGP(多线EIP) 云服务提供商的公网IP地址通过BGP与多个运营线直连的链路播报给多个运营商。BGP类型的带宽具备动态路由收敛能力,可靠性和抗DDos能力好,但价格相对静态BGP来说较贵。云服务提供商可以根据设定的寻路协议实时自动优化网络结构,以保持客户使用的网络持续稳定、高效。 2...
ER的作用
使用peering等方式构建的网络结构是Full Mesh,而企业路由器的网络结构是中心辐射型(星型拓扑)。
Aliyun LB介绍
1. ALB - 每个可用区占用三个ip,一个vip,两个local ip - 每个vip可以独立绑定eip - 。ALB实例的杭州可用区H发生故障时,ALB能够在短时间内停用该可用区,并继续使用其他启用的可用区提供服务。 - ALB默认开启跨AZ负载均衡,即ALB在同地域跨可用区的后端服务之间分配...
AWS LB介绍
应用程序负载均衡器(ALB)、网络负载均衡器(NLB)和网关负载均衡器(GLB)是云中使用的三类负载均衡器。 为了重定向应用程序流量 - ALB 会检查请求的内容,例如 HTTP 标头或 SSL 会话 ID - NLB 会检查 IP 地址和其他网络信息,以最佳方式重定向流量 - GLB 充当透明的网...
HW LB介绍
1. LB实例 - 可用区:选择部署的可用区列表,可用区越多,价格越贵 - 应用型和网络型:可组合选择购买应用型和网络型,组合不同,收费不同 - 网络配置: - 所属VPC - 网络类型:ipv4、ipv6,可组合选择,或都不选(只提供公网接入);选择ipv4后,可提供私网IP接入的私网负载均衡;选...
Nginx使用
1. nginx常用命令 Nginx的命令在控制台中输入就可以看到完整的命令,这里列举几个常用的命令: - nginx -s reload 向主进程发送信号,重新加载配置文件,热重启 - nginx -s reopen 重启 Nginx - nginx -s stop 快速关闭 - nginx -s...
Nginx架构与原理
1nginx默认的启动方式是多进程的方式,nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。worker的数量可以通过配置文件中的配置项控制,一般建议设置与机器cpu核数相当。 Nginx采用了事件驱动的模型,期望worke...
Aws
aws的nat网关作为vpc的一个特性,创NAT网关的时候可以选择公网还是私网。流量经过NAT网关,源地址都会转成网关的私网地址,公网NAT后面会经过internate gateway,然后将私网地址转换成公网地址。 1. 公网NAT 1.1. 性能 - 默认5 Gbps,最高100 Gbps - ...
AZURE
1. 公网NAT 只支持SNAT,不支持DNAT 1.1. 性能 - 50 Gbps - 100W - 5M PPS 1.2. other 1.2.1. 支持自定义TCP超时时间 1.2.2. 支持一组地址连续的公网地址池 支持16个EIP或/28大小的公共EIP前缀 1.2.3. 分布式VM提供服...
GCP
google的NAT网关比较特别,不是一个独立的网关设备,而是做在源计算节点上的源端NAT。Cloud NAT 是一种没有代管式中间代理的软件定义解决方案,采用,具有高可靠性、高性能和高可伸缩性。 1. 公网NAT Public NAT 网关会为使用网关创建与互联网的出站连接的每个虚拟机分配一组外部...
华为云
1. 竞争优势 不需要使用peering/er等实现跨vpc访问的能力,私网nat天然支持跨vpc网络访问。
腾讯云
1. 公网NAT 1.1. 性能 - 默认限速5 Gbps,最大可支持50 Gbps - 并发连接200万 - 10万新建 - 不占用vpc用户的私网ip 1.2. 配额 1.2.1. 网关 - 一个VPC支持3个NAT网关 - 每个NAT网关绑定最多10个EIP 1.2.2. SNAT - 单网关...
阿里云
1. 公网NAT 2. 特性 - 支持一键全通 - snat只允许修改eip - - 支持按量计费和带宽包 2.1.1. NIS(Network Intelligence Service) 支持实例级别的一键诊断,可以检测实例的配置与运行状态,并能根据诊断的异常项提供智能修复建议。诊断内容主要包括:...
Aws HyperPlane
- top完成所有包转发和包处理,一旦网络连接建立了,转发只在Top层完成 - Flow Master记录网络连接,充当Decider的缓存 - Decider实现网络逻辑,对于NAT来说就是进行会话分配 Flow Master可以主主扩展,利用率可以做得比较高,而Decider利用率相对来说较低。
Ovs
现在OpenVSwitch主要由三个部分组成: - ovsdb-server:OpenFlow本身被设计成网络数据包的一种处理流程,它没有考虑软件交换机的配置,例如配置QoS,关联SDN控制器等。ovsdb-server是OpenVSwitch对于OpenFlow实现的补充,它作为OpenVSwit...
发展历史
1. 转发平台发展 - 以openvswitch为代表的第一代内核态软件转发平台 - 以dpdk为代表的第二代内核态软件转发平台 - 以P4或NP为代表的第三代硬件转发平台。 第一代发展到第二代解决了内核态和用户态上下文切换代价较高的问题; 第二代发展到第三代解决了软件转发平台性能不足的问题。 第一...
云网络诞生
1. 产业竞争核心 - 芯片 - 操作系统 - 应用 2. 转发能力发展路线 虚拟交换机发展从10Gbit/s(以原始openvswitch为代表的内核态转发,使用 kernel 作为 datapath) -> 25Gbit/s(以dpdk技术为依托的内核态转发,使用用户空间作为 datapath)...
1. Vscode配置C++开发环境
1. 插件安装 C/C++ 2. 安装gcc 3. 配置C++环境 C++环境需要.vscode 文件夹下的以下三个文件共同定义 - ccppproperties.json :对C/C++扩展的设置。 - tasks.json :定义如何生成可执行文件。 - launch.json :定义如何调试可...
2. 基本语法
1. 程序入口 在 C++ 标准中, 函数是程序启动后调用的第一个用户定义函数,它有两种标准的定义形式: 1. :这种形式表示 函数不接受任何命令行参数。它向调用者返回一个整数值,用于表示程序的退出状态。通常,返回值 表示程序正常结束,非零值表示程序出现异常或错误。 2. :这种形式允许程序接收命令...
3. 命名空间
命名空间(namespace)是 C++ 中一项重要的特性,它可以将全局作用域划分为不同的部分,从而避免不同库或者不同模块之间的命名冲突。标准 C++ 库中的所有标识符(像类、函数、对象等)都被定义在了 命名空间里。 1. using namespace std 在没有使用 时,若要使用标准库中的标...
4. 变量定义与内存空间分配
C++ 中定义变量时,即使不进行初始化,内存空间通常也会被分配,不过不同类型的变量在分配内存空间的时机和默认初始值方面存在差异。 1. 局部变量(自动存储期) 局部变量一般定义在函数内部或者代码块内部,具有自动存储期。当程序执行到定义局部变量的语句时,会立即为其分配内存空间,但不会自动初始化,该内存...
5. String字符串
c++包含两种风格的字符串 - C 风格字符串 - C++ 引入的 string 类类型 1. char类型 C风格的字符串起源于C语言,并在C++中继续得到支持。字符串实际上是使用null字符\0终止的一维字符数组。因此,一个以null结尾的字符串,包含了组成字符串的字符。 2. 字符串函数 | ...
Go Env
1. GOROOT与GOPATH - 环境变量表示 Go 语言的安装目录。在中,的默认值是,而在或中的默认值是,如果将Go安装在其他目录中,而需要将GOROOT的值修改为对应的目录。另外,则包含Go为我们提供的工具链,因此,应该将配置到环境变量 PATH 中,方便我们在全局中使用 Go 工具链。 -...
Go Mod
从 Go 1.11开始,Go引入了Go Modules作为官方的依赖管理解决方案。在Go Modules模式下,依赖项会被下载到目录下,命令默认会将可执行文件安装到目录下。文件位于项目根目录下,用于记录项目的模块信息和依赖项及其版本,一个典型的例子如下: 1. go mod命令 2. module ...
Go命令行参数
- os.Args变量是一个字符串(string)的切片(slice) - os.Args的第一个元素,os.Args[0], 是命令本身的名字;其它的元素则是程序启动时传给它的参数
Channel
1. 声明和初始化 1.1. 仅声明(未初始化) 声明一个 int 类型的 channel,但未初始chnilpanicmake()make()ch := make(chan int)chch := make(chan int, 3)3varvar ch chan int = make(chan i...
Context
go1.7加入了一个新的标准库context,用来简化对于处理单个请求的多个goroutine之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个API调用。 fff88f">当一个上下文被取消时,它派生的所有上下文也被取消。当context生命周期结束时,可以从管道接收消息,子协...
Defer
1. 关键字 defer 用于注册延迟调用。 2. 这些调用直到return前才被执。因此,可以用来做资源清理。 3. 多个defer语句,按先进后出的方式执行。 4. defer语句中的变量,在defer声明时就决定了,语句中的fff88f">函数调用参数会在语句执行时立即求值,并保存下来。这意味...
Goto与Label
Go语言也支持label(标签)语法:分别是和 、。 - break label可以跳出label层级循环 - continue label可以从label继续下一次循环 - goto可以无条件的跳转执行的位置,但是不能跨函数,需要配合标签使用 执行结果 输出结果
函数
1. 结构体返回值 在Go语言中,函数返回结构体时,接收它的变量类型可以是值类型或指针类型 1.1. 使用值类型接收值类型返回值 - 结构体较小(如 2-3 个字段的结构体),直接复制不会有明显性能影响。 - 结构体的数据不需要在外部修改,返回值是独立的副本。 输出如下 1.2. 使用指针类型接收指...
变量赋值&结构访问
1. 取地址与解引用 是取地址符号,放到一个变量前使用就会返回相应变量的内存地址。如 是指针运算符,一个指针变量指向了一个值的内存地址。放到一个变量前可以对指针解引用,获取指针指向的实际变量。 输出如下 2. 变量赋值 go中直接对结构体进行复制,会进行值拷贝。 结构体的指针属性也会拷贝,但指针指向...
基础
1. 变量初始化 go中使用var声明的变量会自动初始化,如下是等价的 2. array 1. 数组:是同一种数据类型的固定长度的序列。 2. 数组定义:,比如:,数组长度必须是常量,且是类型的组成部分。一旦定义,长度不能变。 3. 长度是数组类型的一部分,因此,和是不同的类型。 4. 数组可以通过...
异常处理
在Go语言中,和都是用来处理错误情况的,但是它们的使用场景和应用场合是不同的。 1. panic 更适用于程序出现不可恢复的错误情况,例如违反了一些重要的前提条件、发生了一些严重错误等。一般来说,如果程序出现了,就意味着程序已经处于一个不可控的状态,无法继续执行下去。会导致程序立即终止并打印出错误堆...
循环与Select
1. select 语句会从上到下依次检查每个 的通信操作语句,每个case必须是一个通信操作,要么接收,要么发送。 - 如果发现某个 的通信操作可以立即执行,就会执行该 语句块并跳出 代码块。 - 如果多个 均可执行,则会随机选择一个执行。 - 如果没有任何一个 可以执行,则会执行 语句块(如果存...
类型断言
类型断言提供了访问接口值底层具体值的方式。 该语句断言接口值 保存了具体类型 ,并将其底层类型为 的值赋予变量 。若 并未保存 类型的值,该语句就会触发一个 panic。 为了判断一个接口值是否保存了一个特定的类型,类型断言可返回两个值:其底层值以及一个报告断言是否成功的布尔值。 t, ok := ...
常用Tool
1. golps golps 是LSP(Language Server Protocol)的一个语言端(Server)实现,是针对 Go 语言的LSP实现。定义了在编辑器或IDE中与语言服务器之间使用的协议,该语言服务器提供诸如自动完成,转到定义,查找所有引用等语言功能。语言服务器索引格式(LSIF...
Redis
1. simple example 2. redis pool
测试
Golang单元测试对文件名和方法名,参数都有很严格的要求。 1. 文件名必须以xxtest.go命名 2. 方法参数必须 3. 使用go test执行单元测试 在文件中有三种类型的函数,单元测试函数、基准测试函数和示例函数。 | 类型 | 格式 | 作用 | | ---- | ----------...
Benchmark
Go语言标准库内置的testing测试框架提供了基准测试(benchmark)的能力,能让我们很容易地对某一段代码进行性能测试。 本文中会对斐波那契数列进行基准测试 创建一个基准测试用例 - Benchmark测试文件必须以filename加结尾 - 方法名必须以开头 - 测试参数必须为 1. 执行...
Go性能分析
golang中性能调试优化的方法包括: - benchmark:基准测试,对特定代码的运行时间和内存信息等进行测试 - profiling: 程序分析,程序的运行画像,在程序执行期间,通过采样收集的数据对程序进行分析 - Trace:跟踪,在程序执行期间,通过采集发生的事件数据对程序进行分析 > [...
Pprof
1. 使用方式 必须在代码里引入才能使用,不像Java里jdk工具包中的 、、、、 工具可以单独使用。可以从以下两个包中引入 Golang pprof的使用方式主要有两种 1. 在程序中通过http接口的方式暴露相应的pprof的采集控制界面,需要依赖, 使用 包来进行封装。 2. 可以用来产生du...
进程、线程与协程
1. go中线程的数量 Go 使用Goroutine 调度器 (Scheduler) 来管理Goroutine的执行。调度器的核心概念如下 1.1. GMP模型 goalng采用特有的GMP模型。 1. G(Goroutine):指的是 Go 代码中的 Goroutine。 2. M(machine...
Go面向对象
1. 自定义数据类型 增强代码可读性 2. 方法接收器 只有自定义类型(或内置类型)才能够绑定方法,从而获得面向对象的特性。例如,为 绑定 方法。,使得User对象实现了Name方法。 在Go语言中,接口的实现是隐式的,也就是说只要一个自定义类型实现了接口中声明的所有方法,那么它就被认为实现了该接口...
反射
1. 任意类型 在 Go 语言中, 常被称为“空接口”,它的确能承载fff88f">任意类型的值,但这种“万能”特性背后存在明显的权衡和局限性。也可以用关键词替代, go 的接口是由两部分组成的,一部分是类型信息,另一部分是数据信息 对于这个例子, 的类型信息是 ,数据信息是 ,这两部分信息都是存储...
泛型
1. 泛型 我们知道,函数的 形参(parameter) 只是类似占位符的东西并没有具体的值,只有我们调用函数传入实参(argument) 之后才有具体的值。那么,如果我们将形参 实参这个概念推广一下,给变量的类型也引入和类似形参实参的概念的话,问题就迎刃而解:在这里我们将其称之为 类型形参(typ...
Http连接池
1. 长连接 长连接利用keep-alive技术实现,能在多次 HTTP 之间重用同一个 TCP 连接,从而减少创建/关闭多个 TCP 连接的开销(包括响应时间、CPU 资源、减少拥堵等)。 然而长连接并非没有弊端,天下没有免费的午餐,如果客户端在接收完所有的信息之后还没有关闭连接,则服务端相应的资...
Java9 Java17新特性
1. 集合 增加 了 List.of()、Set.of()、Map.of() 和 Map.ofEntries()等工厂方法来创建不可变集合。 2. 私有方法 java8中允许接口有默认方法,java9中允许接口有默认私有方法 3. Optioal的ifPresentOrElse 4. 类型推断 类型...
Jni
会在指定的所有目录下查找名为 libnativememoryutils.so(Linux)或 nativememoryutils.dll(Windows)的文件。 > [!note] > 在 Linux 下,文件名必须是 libnativememoryutils.so,不能省略 lib 前缀。 1....
Mtls实现
1. 生成证书和密钥库 1.1. openssl配置 openssl中可以通过--config指定完整的配置文件,包含所有配置段(sections),用于生成包含扩展字段的证书签名请求(CSR)或自签名证书。 1.2. 生成客户端证书和服务端证书 2. 本地安装ca证书和客户端证书 windows可...
Velocity
1. 新建module-a 引入maven依赖 自定义Annotation 继承AbstractProcessor,实现自定义Processor 2. 新建module-b 添加依赖module-A 类填写注解,以生成编译后的class。可以添加些属性,用于编译class时使用。也可以给多个类添加注...
内存管理
1. 总结 java应用的内存主要分为三块 1. jvm管理的堆内存 2. jvm管理的非堆内存 3. 非jvm管理的内存 1.1. JVM管理的堆内存(Heap Memory) 存储对象实例,是 Java 内存管理的核心区域,由所有线程共享。 - 新生代(Young Generation):存放新...
虚拟线程
1. 概念 1.1. 平台线程 我们常用的Java线程与系统内核线程是一一对应的,系统内核的线程调度程序负责调度 Java线程。为了增加应用程序的性能,我们会增加越来越多的Java线程,而由于多种因素,平台线程的数量受到了很大的约束。 - 资源有限导致系统线程总量有限,进而导致与系统线程一一对应的平...
Grpc
1. 工具推荐 - apifox:rpc客户端,可以导入proto文件,自动生成rpc客户端并重试 2. 通信过程 3. 抓包 4. protocol buffers Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,用于描述一种轻便高效的结构化数...
4+1视图
| 视图类型 | 描述 | | :-------------- | :------------------------------------------------------------------------------------------ | | 逻辑视图 | 逻辑视图面向系统逻辑分析和...
DDD理论与实践
1. 什么是DDD DDD是一种处理高度复杂领域的ff0000">设计思想,它试图分离技术实现的复杂性,并围绕业务概念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演进的问题。DDD不是架构,而是一种架构ff0000">设计方法论,它通过边界划分将复杂业务领域简单化,帮我们设计出清晰的领域...
核心概念
通用模型 NAT网关模型 1. 领域 汉语词典的解释:领域是从事一种专门活动或事业的范围 、部类或部门。 百度百科的解释:领域具体指一种特定的范围或区域。 两个解释有一个共同点——范围,领域的核心重点落在ff0000">”域”字上,用来确定范围的,fff88f">范围即边界 ,这也是DDD在设计中不...
代码坏味道
1. 重复代码 2. 长函数 3. large class 4. Divergent Change(发散式变化) 对程序进行维护时, 如果添加修改组件, 要同时修改一个类中的多个方法,那么这就是 Divergent Change。举个汽车的例子,某个汽车厂商生产三种品牌的汽车:BMW、Benz和La...
设计原则与典型架构设计模型
架构的设计本质都是为了高内聚、低耦合 1. SOLID原则 1.1. S单一职责原则(single responsibility) 一个class应该只做一件事,一个class应该只有一个变化的原因,核心是ff0000">功能特性解耦和ff0000">高内聚性。避免一个类承担两个特性,修改A特性的时...
1. 为什么要Dpdk(Data Plane Development Kit)
1. 基于OS内核转发的劣势 1.1. 数据路径长,协议栈处理开销大 - 内核路径: 数据包需经过内核协议栈(如TCP/IP栈)的多层处理(链路层→网络层→传输层→应用层),涉及大量内存拷贝、校验和计算、上下文切换等操作。 - DPDK优化: 直接绕过内核,在用户空间处理数据包,省去协议栈的逐层解析...
ConfigMap
1. 创建 1.1. 通过kubectl命令行创建 1.1.1. --from-file参数从文件中进行创建 其中key=是可选的,默认key就是文件名,通过key=可以指定key。 1.1.2. --from-file参数从目录中进行创建 目录下每个配置文件名都被设置为key,文件的内容设成为va...
Ingress Gateway
在Kubernetes的服务网格架构中,Ingress Gateway是通过Envoy实现的。在Istio中,Ingress Gateway 是用于管理进入服务网格的流量的组件,它基于 Envoy 代理构建。Envoy 是一个高性能的代理,专门设计用于处理服务到服务的通信,支持动态服务发现、负载均衡...
Kube Proxy和Istio Envoy
- 每个节点安装了一个kube-proxy - 每个pod以sidecar的形式部署一个envoy - kube-proxy拦截的是进出kubernetes节点的流量,envoy拦截的是进出pod的流量。 - istio作为服务网格的一种实现,本质上提供了应用间的流量、安全管理和可观察性。 1. k...
Kubernetes 核心概念
kubernetes中的基本概念和术语大多是围绕资源对象来说的,而资源对象在总体上可以分为以下两类: (1)某种资源的对象,例如节点(Node),Pod,服务(Service),存储卷(Volume) (2)与资源对象相关的事物与动作,例如标签(Label)、注解(Annotation)、命名空间(...
Pod调度
k8s Master上的Scheduler服务负责实现Pod调度,整个调度过程通过执行一系列复杂的算法,最终为每个Pod都计算出一个最佳的目标节点,这一过程是自动完成的,通过我们无法知道Pod最终会被调度到哪个节点上。 1. NodeSelector 可以实现将Pod调度到一些指定的Node上,可以...
Service
一个service对外暴露一个,client可以访问这个来实现负载均衡访问后端Pod。一个service对应的“后端”由pod的ip和端口号组成,这在kubernetes中称为endpoint。一组endpoints形如,其中和都是podIp。
Postgresql DML
1. 常用运维sql
性能优化
1. 查看数据库CPU有没有冲高,一般是有慢SQL 2. 查看数据库I/O有没有冲高,如果有一般是用了外部排序 3. 优化外部排序有两个思路,一个是添加索引,避免临时排序;第二个是限制数据规模,尽量保证在内存中完成排序 4. 先联表后排序,索引会无法利用;要做利用索引做子查询排序,然后再联表 5. ...
数据库关键配置
1. socketTimeout 未配置socketTimeout时,应用不会超时,会永远等待。当出现网络隔离故障时,服务端访问数据库的连接会hang住,导致需要等到tcp重传失败或者keepalive失败才会断开连接,故障时间会非常长。 数据库连接池中的连接可能处于如下两种状态 - 连接处于繁忙状...
数据库理论
1. 三大范式 - 第一范式(1NF) 保证列的原子性,一张表的某个列不能有多个值,不能出现重复列。实际操作中我们可能会违反这个约束,如将列值存成一个json字典,但是我们一定要保证这些值至少是一起读或写的,不存在经常部分更新的场景。 - 第二范式(2NF): 取消部分依赖,表中的每个字段都与主键相...
Etcd常见用法
1. 数据put和get 1.1. 设置key和value 1.2. 获取指定key 1.3. 获取前缀下所有key 2. 数据过期与续约 2.1. 创建租约并设置 TTL(Time To Live) 创建一个 TTL 为 60 秒的租约: 该命令会返回一个租约ID,例如 2.2. 查看所有leas...
Etcd架构
etcd 集群通过Raft算法实现了 “动态主从 + 分布式共识” 的架构,确保数据强一致性和高可用性。etcd 集群在同一时刻只能有一个主节点(Leader),且写操作必须由该主节点处理,但读操作可以从任意节点执行。etcd集群中的节点在正常运行时通过Raft算法动态选举 “领导者(Leader)...
Watch使用与原理
Watch机制是etcd的核心功能之一,它允许客户端监听指定键或前缀的变化,实现配置变更的实时通知。默认情况下,watch是从ff0000">最新版本开始监听的。 1. 使用方式 1.1. 基本使用 添加或修改key etcd提供了多种方式使用Watch功能 1.1.1. 命令行方式 1.1.2. ...
数据存储
1. 数据存储格式 etcd的数据存储格式主要是基于键值对的形式。 - 键:是一个唯一的字符串,用于标识存储的数据,类似于字典中的键。例如,在一个配置管理系统中,键可能是某个服务的名称加上配置项的名称,如。 - 值:可以是任意类型的数据,如字符串、整数、JSON 对象等,这取决于具体的应用场景。例如...
Kafka Stream
1. 流式计算和批计算 1.1. 流式计算 流式计算是持续地从数据源获取数据,并实时地对数据进行处理和分析。 1.1.1. 特点 - 实时性强,能够在数据到达时立即进行处理。 - 数据无边界,是持续产生的 - 计算模型有状态,需要维护中间状态,一般用增量计算代替全量计算 - 时延敏感,需要低延迟处理...
Kafka架构
1. topic kafka将消息以topic为单位进行分类,一个topic就是一个逻辑队列。类比于数据库中的分库。 2. partition 为了实现扩展性,提高并发能力,kafka将一个逻辑队列(topic)划分为多个partition,每个partition保存一个topic中的部分数据,每一...
Kafka核心配置项
这里我们以网络服务用的最多的kafka组件为例,来介绍下其实现原理,已经如何在知晓原理的情况下用好kafka。 1. producer - : 控制producer端开启幂等和事务能力。开启幂等后能够保证消息不重复。 - 为生产者提供了一个唯一的事务标识符。通过这个标识符,Kafka 能够跟踪和管理...
Kafka生产消息
1. kafka获取partition对应节点 通过元数据获取 - Kafka producer 在启动时会向 Kafka 集群中的任意一个 broker(通常是配置中的 bootstrap.servers 列表中的一个)发送元数据请求(Metadata Request)。这个请求用于获取集群的元数...
Kafka高可靠
1. 生产可靠 为保证Producer发送的数据,能可靠地发送到指定的Topic,Topic的每个Partition收到Producer发送的数据后,都需要向Producer发送ACK(ACKnowledge 确认收到)。如果Producer收到ACK,就会进行下一轮的发送,否则重新发送数据。 1....
Kafka高性能读写
核心: - 顺序读写 - page cache,避免每次读取磁盘。也正是因为顺序读写,避免了大量page cache miss,可以充分利用page cache。 - 零拷贝。 1. 存储结构 一个topic下多个partition,每个partition使用一个文件夹存储。partition命名规...
不同消息队列对比
- RocketMQ 的存储结构相对较为灵活,可以针对不同的场景进行优化。它采用了单一的 commitlog 文件来顺序存储所有消息,然后通过索引文件快速定位特定topic的消息。这种设计使得在处理大量 topic 时,存储资源的分配更加高效。每个topic都对应独立索引文件,加上page cach...
消息队列核心
- 为什么需要消息队列 - 消息队列的核心设计和使用 - 深入消息队列高性能原理 cap原则 1. 为什么需用消息队列 1.1. 业务解耦 业务解耦,代码解耦。现在的云网络服务大都遵循SDN设计思想,将服务拆分成管控转三部分,不同组件负责承载不同的业务,其解耦方式之一就是通过消息队列。很多消息队列都...
Redis关键参数
1. go-redis 在go- redis中,连接设置是通过 Options 结构体来管理的。 1.1. 单机模式 - Network - 网络类型,可以是 tcp 或 unix,默认值为 tcp。 - Addr - Redis 服务器的 host:port 地址。 - Dialer - 创建新网...
Redis命令
1. redis支持数据类型 - 字符串 - hash(key-value) - list(有序列表) - set(无序唯一集合) - zset(有序唯一优先级队列,每个元素关联一个分数,按从小到大排列) - Bitmap - HyperLogLog,占用内存很小(12kb)的情况,可以用于估算接近...
Redis批处理
1. pipeline Redis执行一条命令需要经历以下过程:、、、。由于Redis本身是基于协议(停等机制)的,虽然Redis已经提供了像 、 这种批量的命令,但是如果某些操作根本就不支持或没有批量的操作或者需要连续执行好几个不同命令,那我们就只能一条一条地执行命令,每执行一条命令都要消耗请求与...
Redis高可用
1. master和slave数据复制机制 在Redis集群模式下,Master和Slave之间默认采用异步复制 - 客户端向Master写入数据后,Master立即返回成功响应,无需等待Slave确认。 - 数据随后异步复制到 Slave 节点。 这种设计的目的是保证高性能和可用性,但存在数据丢失...
发布订阅模式
Redis发布订阅简介 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis的SUBSCRIBE 命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端。 作为例子, 下...
分布式锁
1. 分布式公平锁 ZooKeeper的临时顺序节点,天生就有一副实现分布式锁的胚子。 1. ZooKeeper的每一个节点,都是一个天然的顺序发号器。 在每一个节点下面创建临时顺序节点(EPHEMERAL\SEQUENTIAL)类型,新的子节点后面,会加上一个次序编号,而这个生成的次序编号,是上一...
基本概念
1. zookeeper数据存储 ZooKeeper将所有数据存储在内存中,数据模型是一棵树(ZNode Tree),由斜杠(/)进行分割的路径,就是一个ZNode,如 /hbase/master,其中 hbase 和 master 都是 ZNode。每个 ZNode 上都会保存自己的数据内容,同时...
DCN架构演进
1. 服务与网络三大耦合问题 - 交换机堆叠,存在单点风险和运维困难问题 - 物理网络大二层隧道,引入更大故障域 - 硬件墙的引入限制整体云业务规模,硬件强性能不行,无法横向扩展 2. 名词解释 NSA(Network Service Area) - NWS(Network Service): 网络...
交换机堆叠
1. 背景 主机连接单个交换机,存在单点故障问题(单个交换机故障),解决tor交换机单点故障的思路有两个。 - 上层服务(计算、网络)保证高可用,当一个tor下主机故障时,可以快速在另一台tor下拉起新主机 - 两台tor交换机堆叠,保证tor交换机的高可靠 2. 概念 交换机堆叠一般是指被背板堆叠...
大二层架构的问题
1. 历史背景 网关在汇聚上的原因是因为openstack平面约束,要求资源池里面的节点必须在一个二层上。 管理服务区解大二层原因是管理区容灾1.0方案依赖vip在az间漂移,管理区汇聚下就是一个二层。同时,az之间还需要在两个az的汇聚交换机上通过硬件vxlan打一个二层隧道。 2. 大二层的问题...
(七)Linux下实现NAT
在NAT Overview一文中,我们介绍了在linux下通过iptables实现NAT功能的命令及原理。本文以容器为例,进行几个简单的实验来进一步了解linux下NAT的实现过程和应用。 1. nat在容器中的应用 1.1. SNAT linux下一个最典型的NAT应用就是docker容器借助宿主...
(五)NAT ALG
--- title: NAT ALG date: 2023-02-01 categories: - network tags: - network - nat --- 能够对特定的应用层协议进行转换,在对这些特定的应用层协议进行转换过程中,通过的会话信息来改变封装在报文载荷中的和端口信息,最终实现下...
(八)高可靠NAT
1. 双机冷备 2. 双机热备 双机热备可以极大地提升NAT服务的可靠性和承载能力,但是两台NAT设备上的NAT配置也需要完全相同。这样就会出现一个问题:如果两个NAT设备分别将两条不同的流映射到相同的公网地址,并且端口也相同的话,势必会造成表项的混乱,所以我们引入了优先级的概念。 在双机热备的环境...
(六)路由器配置NAT
本章节主要以cisco路由器配置为例,使用GNS3仿真平台搭建一个最简单的实验环境进行验证。 1. 常用命令(cisco) 首先介绍本实验可能用到的一些命令,先有个概念,后面再在实验中熟悉并掌握。 1.1. VPC 1.2. 路由器 2. 环境 2.1. 配置PC 2.1.1. PC1 2.1.2....
NAT高可靠
1. 双机热备 双机热备对于防火墙来说是一个必不可少的功能,两台防火墙上的NAT配置也需要完全相同,这样就会出现一个问题:如果两个防火墙分别将两条不同的流映射到相同的公网地址,并且端口也相同的话,势必会造成表项的混乱,所以我们引入了地址池优先级的概念。 在双机热备的环境中,如果地址池被配置为高优先级...
流日志
1. 格式 1.1. 网络信息7元组 internalip,internalport,externalip,externalport,transitip,transitport,protocol 1.2. 流量数据 packetnum,bytesize 1.3. 时间信息 starttime,end...
IP分片报文和TCP分段报文
分组可以发生在传输层和网络层,传输层中的TCP会分段,网络层中的IP会分片。IP层的分片更多的是为传输层的UDP服务的,由于TCP自己会避免IP的分片,所以使用TCP传输在IP层都不会发生分片的现象。我们在学习TCP/IP协议时都知道,TCP报文段如果很长的话,会在发送时发生分段,在接受时进行重组,...
SCTP
SCTP ( Stream Control Transmission Protocol ),即流媒体控制传输协议,是一种可靠的基于无连接数据包网络如IP网络之上传输协议。他被设计用来在IP网络上传输PSTN在窄带信令消息,同时也能支持宽带信令消息的传输。 SCTP可以看作OSI层次结构中的传输层,它...
Tcp KeepAlive
1. 起源 连接有长连接和短连接之分。短连接环境下,数据交互完毕后,主动释放连接。长连接环境下,双方建立交互的连接并不是一直存在数据交互,有些连接会在数据交互完毕后,主动释放连接,而有些不会,那么在长时间无数据交互的时间段内,交互双方都有可能出现: 1. 主机突然掉电、死机、异常重启 2. 中间路由...
Tcp重传
1. tcp超时重传 重传机制的其中一个方式,就是在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的确认应答报文,就会重发该数据,也就是我们常说的超时重传。 TCP 会在以下两种情况发生超时重传: - 数据包丢失 - 确认应答丢失 1.1. RTT与RTO - RTT(Roud Tri...
Nat封装Pp协议
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== Text Elements client ^pdsoIL0z NAT ^lEtOOR5s Server ^7HyKnicB SYN seq0 ^3...
源地址透传
1. TOA(TCP Option Address) TOA将源地址放在字段中。option字段最长40字节,每个选项由三部分组成:op-kind、op-length、op-data,我们最常见的MSS字段就是在option里。目前option使用的op-kind并不多,我们只需要构建一个不冲突的o...
DHCP协议
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端),DHCP客户端使用的源端口号为68,目的端口号为67发送请求消息到...
Dns Zone
DNS Zone是指域名系统(DNS)中管理的一部分域空间,包含了该区域内所有域名的记录信息。它是确保网络中计算机能够通过域名解析到正确 IP 地址的关键组成部分,对于维持互联网的正常运行至关重要。一个DNS Zone通常由一个组织或个人负责维护,这个区域包括了域名及其子域的权威信息,如IP地址、邮...
DNS配置与匹配规则
1. multi dns ip 对于一个主机配置多个DNS IP 1.1. 作用 1.1.1. 冗余和容错 - 当第一个DNS服务器无法响应时,主机会自动尝试使用第二个、第三个DNS IP - 提高DNS解析的可靠性,即使一个DNS服务器宕机,仍可通过其他DNS服务器进行域名解析 1.1.2. 负载...
Https抓包
由于主流浏览器都只支持HTTP/2 Over TLS,也就是说当前HTTP/2网站都使用了HTTPS,数据传输都经过了SSL加密,常规抓包方法并不能看到明文数据。 1. wireshark Wireshark 的抓包原理是直接读取并分析网卡数据,要想让它解密 HTTPS 流量,有两个办法: 1)如果...
HTTP协议解析
1. HTTP 1.0 !http1.0抓包.pcapng HTTP/1.0 默认为每一对 HTTP 请求/响应都打开一个单独的 TCP 连接。 - 17945-17947:tcp三次握手 - 17948:Server告诉Client更新自己的接收窗口大小 - 17949:Client发起HTTP ...
TLS
1. TLS是什么 Transport Layer Security (TLS) 是一种被广泛采用的安全协议,旨在增强互联网通信的私密性和数据安全性。TLS的主要使用场景是对Web应用和服务器之间的通信(例如,Web 浏览器加载网站)进行加密。TLS 还可以用于加密其他通信,如电子邮件、消息传递和 ...
常用Http Header
1. remoteaddr 表示发出请求的远程主机的IP地址,remoteaddr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时 1. 假设中间没有任何代理,那么网站的web(,Apache等)就会把remoteaddr设为你的机器IP 2...
ARP
1. arp响应的条件 1.1. 普通主机响应 ARP 请求的条件 当本机是普通主机时,只有当 ARP 请求中的目标IP地址与本机IP地址匹配时,普通主机才会发送ARP响应。例如,主机A的IP地址为192.168.1.10,当它接收到ARP请求,且请求的目标 IP地址为192.168.1.10时,主...
VLAN
1. 介绍 当网络上所有设备在同一个广播域产生大量的广播和多播帧(arp/dhcp/stp/rip),就会与业务数据流争带宽,造成网络性能恶化。将大型广播域分段是提高网络性能的方法之一。路由器能够将广播包阻隔在一个三层接口上,但是路由器的LAN接口数量有限,它的主要功能是在三层网络间传输数据,而不是...
交换机原理
1. SAT(MAC地址表、FDB、CAM) 交换机的Source Address Table(源地址表),也称为MAC地址表、FDB(forwarding database)或CAM(Content Addressable Memory),是一种用于存储和管理设备MAC地址和端口之间映射关系的表格...
概念解释
ISP: Internet Service Provider 互联网服务提供商 IXP: Internet eXchange Point 互联网交换点 通信方式: - 客户-服务器方式(C/S) - 对等方式(P2P) 1. 电路交换 电路交换必须经过“建立连接(占用 通信资源)一通话(一直占用通信...
IPSec
IPSec (Internet Protocol Security) 协议主要工作在OSI模型的第3层网络层,为上层传输层协议(如TCP、UDP等)提供安全支持。IPSec不是一个单独网络协议,而是一系列为IP网络提供安全性的协议和服务的集合,提供了认证、加密、数据完整性等安全服务。 1. 主要协议...
Ipv4地址
1. 特殊ip地址汇总 - 0.0.0.0/8:用于广播信息到当前主机 - 10.0.0.0/8:用于专用网络中的本地通信 - 172.16.0.0/12:用于专用网络中的本地通信 - 192.168.0.0/16:用于专用网络中的本地通信 - 100.64.0.0/10:用于在电信级NAT环境中服...
IPv6地址
1. 地址格式 IPv6地址有128bit,在这128bit中,前64bit是网络前缀,后64bit是接口标识。在前64bit中,前48bit又是全球可汇总地址,在给一个公司分配IPv6地址时,总是分配给它一个前48bit固定的地址,而后面的16bit又可以被该公司用来做子网地址。这样分配,可以方便...
链路本地地址
链路本地地址(Link-local Address)是一类特殊的IP地址,仅用于在网段内、同一广播域内的主机相互通信使用,这类主机可认为是不需要外部互联网服务的。其中IPv4的链路本地地址定义在169.254.0.0/16范围内,IPv6定义在fe80::/10范围。链路本地地址在ipv4和ipv6...
BGP基础概念
1. AS - OSPF、IS-IS等IGP路由协议在组织机构网络内部广泛应用,随着网络规模扩大,网络中路由数量不断增长,IGP已无法管理大规模网络,AS的概念由此诞生。 - AS指的是在同一个组织管理下,使用统一选路策略的设备集合。 > [!question] 不同的AS之间需要进行通信,在AS之...
BGP邻居建立
- 先启动BGP的一端先发起TCP连接,R1先启动BGP,R1使用随机端口号向R2的179端口发起TCP连接,完成TCP连接的建立。 - 三次握手建立完成之后,R1、R2之间相互发送Open报文,携带参数用于对等体建立 - 参数协商正常之后双方相互发送Keepalive报文,收到对端发送的Keepa...
CPU
1. 基本概念 - Socket: 指的是主板上用于安装物理CPU芯片的接口。每一个这样的接口能够插入一个物理的CPU处理器,一台计算机可以配备多个这样的插槽,进而安装多个物理CPU,以增强系统的计算能力和性能。一个物理CPU可以有多个物理CPU核。 - 物理核(): 可以看的到的,真实的cpu核,...
常见文件目录
各大发行版基本一致,遵循的是通用的FHS(Filesystem Hierarchy Standard)约定,(个别子目录如 lib64、multiarch 名称可能略有不同) 1. 开发者部署模板 用一个假想应用myapp为例,展示其在Linux系统中应该如何分布文件和目录。 🏗️ myapp 部...
Bridge
1. 常见命令 2. 泛洪 - 泛洪机制:桥接设备会将该数据包从除接收端口之外的所有其他端口发送出去。这样做的目的是确保目的设备无论连接到哪个端口,都有机会接收到这个数据包。例如,在一个包含多个主机的局域网中,如果主机 A 向一个桥接设备发送了一个数据包,而该桥接设备的 FDB 表中没有目的主机的 ...
Geneve隧道配置
1. geneve协议格式 GENEVE与VXLAN类似,仍然是Ethernet over UDP,也就是用UDP封装Ethernet。VXLAN header是固定长度的(8个字节,其中包含24bit VNI),与VXLAN不同的是,GENEVE header中增加了TLV(Type-Length...
Network Namespace基础
可以创建一个完全隔离的新网络环境,这个环境包括一个独立的网卡空间,路由表,ARP表,ip地址表,iptables,ebtables等等。总之,与网络有关的组件都是独立的。 可以看到我们刚才创建的网络环境 进入虚拟网络环境,使用命令 只能看到lo口 这样我们可以在新的网络环境中打开一个shell。 连...
Route Table与VRF
在 Linux 系统中,支持使用多个 route table(路由表) 是为了增强网络配置的灵活性和功能性。多路由表的主要作用如下: 1. 实现策略路由(Policy Routing) 默认情况下,Linux 使用主路由表()中的路由规则来决定流量的转发路径。然而,某些场景下可能需要基于流量的源地址...
Tcp关键内核参数
1. tcpsynretries 这个参数值设置的是client发送SYN如果server端不回复的话,ff0000">重传SYN的次数。对我们的直接影响就是connet建立连接时的超时时间。当然Java通过一些C原生系统调用的组合使得我们可以进行超时时间的设置。在Linux里面默认设置是5,下面给...
Tun Tap介绍
在计算机网络中,TUN(Tunnel)与TAP(Test Access Point)是操作系统内核中的虚拟网络设备。不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能。 - TAP等同于一个以太网设备,它操作第二层数据包...
Vxlan隧道配置
1. 主机应用通过绑定独立路由表或vrf的方式通过隧道访问对端 > 图为网图,本文配置vtep地址换成了10.0.0.250和10.0.0.251 250主机配置 查看当前系统信息 > 虽然从概念上讲,VRF 主要用于实现逻辑上的路由隔离,但在系统的网络配置和管理中,它被呈现为一个类似普通网络接口的...
管道
1. client 2. server 3. ouput 数据直接在内存中的管道缓冲区传输
网卡混杂
网卡在混杂模式下不会校验收到的报文的mac和ip
CPU使用率
1. 查看进程CPU使用率 1.1. 平均使用率 ps命令显示的值是进程的平均CPU使用率,计算公式为: $\%CPU=(进程使用的CPU时间/进程运行的总时间)×100$ 如下命令显示CPU占用最高的前几名进程 输出如下 1.2. 瞬时使用率 如果想监控某个进程(比如 )的 CPU 使用率 ...
Ls
1. 基于文件名排序 2. 基于文件大小排序 3. 基于文件时间排序
Lsof
(List Open Files)是一个用于列出系统中打开文件的工具。这里的 “文件” 是一个广义的概念,包括常规文件、目录、块设备、字符设备、共享库、网络套接字等。会列出系统中当前用户打开的所有文件。 : 列出指定进程 ID 的进程打开的文件 :列出指定用户打开的文件 : 列出正在执行指定命令的进...
PS
命令是process status的简称,用于显示当前运行的进程的信息。在不使用任何标识的情况下,会显示所有当前用户启动的进程,比如: - PID: 进程的ID号 - TTY: 终端名称缩写 - TIME: CPU时间,即进程使用CPU的总时间 - CMD: 所执行的命令名称。 1. 参数 命令支持...
Sort
-f :忽略大小写的差异,例如 A 与 a 视为编码相同; -b :忽略最前面的空格符部分; -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法; -n :使用『纯数字』进行排序(默认是以文字型态来排序的); -r :反向排序; -u :就是 uniq ,去重,相同的数据中,仅出现一...
核隔离和Cgroup
!CPU1. 基本概念 1. 核隔离 修改内核启动参数 1.1. CPU加压测试 htop可以看到隔离的核没有受到影响 2. 绑定进程到隔离核心 3. cgroup 输出如下 > [!info] > Worker 0 started on CPU 2 Worker 2 started on CPU ...
Numa架构
是一种多处理器架构,它将系统中的内存分成多个节点,并将每个节点分配给不同的处理器。在 NUMA 架构中,每个处理器可以访问本地节点的内存,但访问远程节点的内存速度较慢。因此,NUMA 架构可以提高多处理器系统的性能和可扩展性。 下图为英特尔S2600系列服务器主板 - 两个CPU插槽,CPU插槽之间...
Page Cache
文件一般存放在硬盘(机械硬盘或固态硬盘)中,CPU并不能直接访问硬盘中的数据,而是需要先将硬盘中的数据读入到内存中,然后才能被CPU访问。由于读写硬盘的速度比读写内存要慢很多,所以为了避免每次读写文件时,都需要对硬盘进行读写操作,Linux内核使用页缓存(Page Cache)机制来对文件中的数据进...
中断
1. 中断(Interrupt)的定义 中断是计算机系统中一种关键机制,允许处理器暂停当前执行的任务,转去处理更高优先级的紧急事件,处理完成后恢复原任务。中断机制提高了系统的响应速度和资源利用率,是操作系统实现多任务、实时响应的基础。 2. 硬件中断(Hardware Interrupt) vs 软...
操作系统地址空间
操作系统的地址空间是一个抽象概念,表示操作系统在运行时能够管理和访问的内存范围。它提供了一种将物理内存映射到逻辑地址的机制,使得程序能够在一个独立于物理硬件的虚拟地址空间中执行。 1. 用户空间与内核空间 操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所...
操作系统概述
1. 操作系统基本特征 1.1. 并发 并发是指两个或多个事件在同一时间间隔内发生,在多道程序环境下,一段时间内宏观上有多个程序在同时执行,而在同一时刻,单处理器环境下实际上只有一个程序在执行,故微观上这些程序还是在分时的交替进行。操作系统的并发是通过分时得以实现的。操作系统的并发性是指计算机系统中...
进程调度策略
进程调度的关注点: - 性能:执行完所有任务需要的总时间。 - 公平性:每个任务都期望自己先被执行,尽早完成。 - 响应时间:首次运行时间 - 任务提交时间。 性能、公平性、响应时间是矛盾的,为了达到最好的性能,我们希望cpu不要在不同进程或线程之间切换,这样避免了上下文的切换,一个任务从开始执行到...
Openssl
1. RSA密钥 生成私钥 - :指定算法为 RSA - :指定密钥长度为 2048 位(可改为 4096 - :输出私钥文件路径 生成公钥 - :输入私钥 - :导出公钥 - :输出公钥文件路径 2. ECC密钥 生成对应的ECC私钥 - :指定椭圆曲线(可换成 , , , 等) - :生成密钥 ...
SSL证书
在密码学和数字证书体系中,一般没有“私钥证书”的说法。主要是公钥证书。公钥证书(通常就简称为数字证书)是一种电子文档,包含以下信息 - 公钥信息 - 持有者身份信息(如姓名、组织等) - 证书颁发机构(CA)的数字签名等 其主要目的是将公钥与特定的实体(如个人、服务器等)绑定,用于在网络通信等场景中...
Webauthn
在数字时代,密码已成为我们日常生活和在线活动中不可或缺的一部分。尽管互联网已经发展了20多年,许多方面都有了巨大的改进,但只有密码,还是20年前的用法。更准确的说,它的用户体验比 20 年前更差了。 1. 密码的强度现在要求越来越高,一般不能少于8个字符,还要包括特殊符号。 2. 除了密码,通常还有...
CPU架构
1. 主频 CPU 主频,即CPU的时钟频率,是衡量 CPU 运算速度的重要指标,以下从其定义、工作原理及与性能的关系等方面进行具体解释。 - 基本定义:CPU 主频表示 CPU 内数字脉冲信号振荡的速度,单位为赫兹(Hz)。通常所说的CPU 主频为2.4GHz、3.6GHz等,意味着CPU内部的时...
CPU缓存设计
1. 缓存 Cache Memory也被称为Cache,是存储器子系统的组成部分,存放着程序经常使用的指令和数据,这就是Cache的传统定义。从广义的角度上看,Cache是快设备为了缓解访问慢设备延时的预留的Buffer,从而可以在掩盖访问延时的同时,尽可能地提高数据传输率。 快和慢是一个相对概念,...
CPU调度策略
1. MLFQ(Multi-Level Feedback Queue) - 系统中存在多个就绪队列,每个队列有不同的优先级,高优先级队列中的进程会优先获得 CPU 执行。 - 进程在队列之间可以移动,根据其行为(如 CPU 占用时间、I/O 操作等)动态调整优先级。 1.1. 规则 1.1.1. 优...
TODO
- BGP实践,BGP PEER建立 - 核隔离与CGROUP - NUMA - 中断 - 硬件卸载 - 大页 - etcd
Awesome Tools
1. 全平台 - freefilesync,文件夹同步工具 - ChatGPT流媒体解锁检测脚本: - https://gitlab.com/fscarmen/warp解锁应用端chatgpt 2. macos 2.1. 媒体工具 - snipaste截图软件 - kap屏幕gif录制工具,对于博客...
Icloud
使用土区账号购买50G icloud,平均每个月2.5块 1. 土区账号登录icloud 2. 国区账号登录apple store 3. 闲鱼购买土区礼品卡充值到土区账号 4. 土区账号购买icloud 5. 过去账号通过airdop发送邀请土区账号加入家庭组 6. 土区账号共享icloud设置家庭...
Excel
1. 将多个sheet join合并 Power Query自动化合并(适合多列/大数据) 1. 导入数据到Power Query: - 在Excel中点击数据 > Power Query > 获取数据,加载Sheet1和Sheet2。 2. 合并查询: - 选择Sheet1作为主表,与Sheet2...
Jupyter安装
z从sqlite官网,下载安装最新版本sqlite3 清理旧版本的sqlite3 安装并编译python环境 配置jupyter lab 添加python环境 1. 格式转换
Movie Pilot
1. docker 安装 注意要通过环境变量配置代理,否则无法访问themoviedb或thetvdb等 2. 下载与整理 可以通过软连接目录的方式达到下载目录和mp的/media目录一致。 3. ref https://wiki.movie-pilot.org/zh/install
NAS搭建
1. 主机硬件 - 主板:微星B360M Mortar - CPU:i3-8300t - 内存:金士顿骇客8G 2 DDR4 - SSD:三星980 NVMe PCIe3.0 500G - 西数:红盘4T - 散热器:利民AXP90 X47 - 电源:台达VX350 - 机箱:先马米立方matx 2...
Ubuntu系统备份
1. 备份 2. 还原 如果当前启动无法启动,可以通过live cd来启动并执行恢复操作
Xiaoya
windows下必须使用bridge模式 1. docker安装 2. 定时清理 3. 获取元数据 在wsl的ubuntu子系统中执行 4. 参考
Advanced Table
obsidian 功能 - 自动化格式表格 - Excel样式的表格导航,即使用Tab和Enter在行和列之间导航 - 对指定的列进行函数求值 - 添加、删除、移动行和列 - 设置列的对齐方式 - 对指定列进行排序 - 将表格导出为CSV格式 公式 基本格式如下: 如中的 代表最后一行、第二列,右边...
Appearance
打开笔记仓库的 .obsidian 文件夹,其中如果没有 snippets 文件夹则创建。在 Obsidian 中的 CSS snippets 都是以 .css 的档案格式储存在特定的文件夹。如果你有将 CSS snippets 放到该文件夹,就会在 Obsidian 显示开关。 1. 别人给你的,...
Dataview
1 查询依据 yaml数据/metainfo 2 使用查询语言 使用下列语法创建查询语言代码块 dataview query command 3 使用内联查询 内联查询的结果只能是一个,不能查询一个列表。当前页面可以通过获得,其他页面可以通过双链语法获得 通过下列语法创建内联查询: 此博客文件名: ...
Excalidraw
obsidian 是一个手工风格的白板工具。可以使用呼出命令菜单,输入excalidraw进行创作。 library 提供了很多公开的模板库可以帮助我们画出很多精美的图案。 导出 可以导出为png或svg 双链 鼠标右键选中create link,可以在excalidraw中使用双链。和在markd...
Image Auto Upload Plugin
obsidian 使用aliyun oss作为obsidian图床 1. 下载 2. 配置oss作为图床 3. 在obsidian中粘贴图片后自动上传aliyun os
Mind Map
obsidian 1. 使用方式 使用呼出命令行,输入通过提示补全命令 2. pin 可以将思维导图的预览面板嵌到当前笔记中。 3. copy screenshot 将svg格式mind map复制到剪切板 4. bug修改 mind map已经很久没有维护了,对于代码块支持存在bug,会导致无法生...
Minimal Theme Setting
obsidian 设置主题 settings -> options -> appearance里面选择主题 Style settings 自定义包括字体等各种样式 Minimal Theme setting 里面内置了一些经典的配色,可以对主题进行一些快速设置
Obsidian Tasks
任务管理 常用语法 1. 今日之前(包括)已完成,done before 2. 本周截止当前日(包括)已完成,done after 3. 根据重要性排序,sort by priority reverse 示例 获取本周所有已经完成的任务,按优先级倒序排列 tasks done before done...
Obsidian总览
obsidian 1. 视图 obsidian一共提供了三种视图: - preview mode:预览模式,可以编辑,显示实时预览结果,此模式下metadata不会渲染 - reading mode:阅读模式,markdown渲染后结果,不可编辑 - source mode:以纯文本形式显示mark...
Quantumult X
1. 参考配置 https://raw.githubusercontent.com/limbopro/Profiles4limbo/main/full.conf 2. 规则仓库 https://github.com/blackmatrix7/iosrulescript/tree/master 3. ...
代理
ssh代理
效率工具
1. windows命令行代理 2. git代理 也可以直接编辑/.gitconfig文件 3. windows配置beyondcompare作为gitdiff 修改.gitconfig配置文件 4. 删除重复文件
上海迪士尼
极速光轮 雷鸣山漂流 飞跃地平线 巴斯光年星际营救 小矮人矿车 小飞侠天空奇遇 晶彩奇航 加勒比海盗 - [x] 抱抱龙冲天赛车 ✅ 2023-06-10 - [x] 胡迪牛仔嘉年华 ✅ 2023-06-10 - [x] 古迹探索营 - [x] 喷气背包飞行器 ✅ 2023-06-10 - [x] ...
江西
1. 北京 -> 南昌 7点48南昌西站 -> 维也纳国际酒店(南昌红谷滩学府大道) 8.5公里 20分钟 2. 南昌(4月29日) 2.1. 八一纪念馆 维也纳国际酒店(南昌红谷滩学府大道) -> 八一纪念馆 8公里 20分钟 Timing: 9:00-10:00 票务:提前三天公众号预约 2.2...
Tcp异常断链
1. 现象 客服访问建行业务偶现超时。 建行server端主动发起断链,发送fin报文,客户B收到后回ACK报文,进入fin-wait-2状态 客户B服务端前设置有防火墙,fin状态下设置10秒超时,客户B超时后的rst报文被防火墙丢了,建行server无法收到rst报文,导致一直处于fin-wai...
业务偶现超时
1. 现象 客户A通过NAT网关访问客户B业务偶现超时。 2. 抓包分析 中间设备抓包发现,服务端主动断链,发送FIN报文并收到ACK报文完成两次挥手,但客户端并没有随之进行被动关闭,直到约20秒后发出rst报文,在此期间连接一直处于半关闭状态。而NAT网关fin超时时间为5秒,此时会话已经老化,再...
交换机选型要点
交换机选型
clos架构
CLOS网络的核心思想是:用多个小规模、低成本的单元构建复杂,大规模的网络。简单的CLOS网络是一个三级互连架构,包含了输入级,中间级,输出级。下图中的矩形都是规模小得多的转发单元,相应的成本也很低。简单来说,CLOS就是一种多级交换架构,在输入输出增长的情况下,增加中间交换单元的数量,而不是每个交...
NAT分片报文
前文我们聊到,在NAT地址转换中,NAT除了对IP地址转换外,还使用到TCP或UDP报文的端口号、ICMP报文的ICMP头中的identifier字段信息。当一个IP分片报文和TCP分段报文 1|IP报文被分成若干片之后,这些信息只有首片报文会携带,后续分片报文依靠报文ID、分片标志位、分片偏移量依...
NAT之ICMP
报文没有类似于或的端口信息,而正常NAT为了内网的安全性和IP地址的高利用率,一般都使用了五元组来匹配NAT会话。为了对ICMP的请求报文进行NAT映射,又要确保网络的安全性,只允许合法的ICMP响应报文进入内网,就必须对其进行特殊的处理。 1. ICMP请求和应答报文 ICMP的request和r...
NAT会话
我们知道传输层的任意一条流都是通过两个建立的,由组成,因此一条流可以用五元组表示。这个五元组中的任意一个元素都不能改变,否则就是另外一条流了。对于服务端来说,和中任意一个变了,就意味着一个新的接入连接;而对于客户端来说,和中任意一个发生变化,访问的就是一个新的服务,比如通常是一个服务,是一个数据库的...
Thrift协议
是一种轻量化、语言无关的RPC框架。主要包含三大部分:代码生成、序列化框架、RPC框架。 Thrift网络协议栈 采用的是模型,网络协议栈从下到上分别为:、、、。 Transport 传输层为网络提供了一个简单的抽象,定义了具体的网络传输协议。其本质是一个提供了通过各种协议进行通信的框架,支持包括和...
shell编程
本文主要介绍shell编程的基本语法以及实际应用中的常见命令。 1. 注释 1.1. 单行注释 1.2. 多行注释 多行注释也可替换成或 2. 变量 2.1. 变量定义 使用的形式,VALUE如果是字符串的话,可以使用单引号、双引号或者不加引号。单引号内的任何字符都会原样输出,不能进行转义,单引号内...
netstat命令
是基于Netstat这个命令行工具的指令,它可以用来查询系统上的网络套接字连接情况,包括,以及。另外它还能列出路由表,接口状态和多播成员等信息。 1. 参数选项 | 参数 | 作用 | | | --- | -----------------------------------------------...
系统信息查看命令汇总
在系统下经常要查看各种信息,需要使用到各种命令,全部背下来也是一项不小的工作量。每次临时找也比较浪费时间,这里汇总下常用的命令。 1. 系统 1.1. 查看linux内核版本 文件系统不是普通的文件系统,而是系统内核的映像。也就是说,该目录中的文件是存放在系统内存之中的,它以文件系统的方式为访问系统...
数据库隔离级别
本文主要目的是阐明数据库的四种隔离级别以及在mysql下实现隔离的原理。 1. 隔离级别 数据库事务隔离级别从低到高分别是:read uncommitted、read committed、retpeatable read、serializable,依次解决了数据库脏读、不可重复读、幻读问题。 - 脏...
用户和权限
使用 Linux 系统,不免会和用户和权限打交道,本文介绍了根权限和文件的权限属性等概念和应用。 1. 用户与群组 使用查看所有用户 使用查看所有用户组 修改文档所有者或群组 2. Linux权限 命令 - 代表三种身份owner/group/other,a代表全部身份all - 代表三种操作行为(...
进程管理
在 系统中,进程是资源调度的最小单位,进程的管理关乎着你使用系统的体验。 1. 进程类型 Linux 系统里有几种不同类型的进程:用户进程(User processes)、守护进程(Deamon processes)和内核进程(Kernel processes)。 1.1. 用户进程 系统里大多数进...
NAT概览
1. 背景 地址使用4个字节进行存储,最多能够提供个地址。随着互联网尤其是物联网的发展,全球地址早已不够用,因此人们发明了(网络地址转换)来缓解这个问题。 简单来说,国际互联网组织划分了三个网络地址段作为内部网络本地通信使用,分别是,,。大部分内部机器都使用这些网段中的私有地址,如果它们需要访问公网...
NAT Overview
1. What is NAT? 1.1. NAT(Level 4) NAT(Network address translation)即网络地址转换,工作在OSI模型的三层或四层(PNAT),用于修改IP数据包中的IP地址和端口。当在专用网内部的一些主机本来已经分配到了local ip地址,但又想和I...
iptables
iptables 是 Linux 防火墙工作在用户空间的管理工具,是 netfilter/iptablesIP 数据包过滤系统是一部分,用来设置、维护和检查 Linux 内核的 IP 数据包过滤规则。 1. 四表五链 数据包在经过每个的时候会按照每个链对应的表依次进行查询匹配执行的操作,如PRERO...
tcpdump
tcpdump是一个优秀的网络分析工具,提供了强大且简单的接口。 1. options - -i any 监听所有的网卡接口,用来查看是否有网络流量 - -i eth0 只监听eth0网卡接口 - -D 显示可用的接口列表 - -n 不要解析主机名 - -nn 不要解析主机名或者端口名 - -q 显...
数据中心网络架构
0.1. 数据中心 根据维基百科释义,指用于安置计算机系统及相关部件的设施,例如电信和存储系统。数据中心是全球协作的特定设备网络,用来在internet网络基础设施上传递、加速、展示、计算和存储数据信息。 0.2. 传统数据中心网络架构 如图1所示,传统的大型数据中心网络通常采用三层架构。cisco...
应用层DNS协议
(Domain Name System)域名解析服务采用架构,是一个应用层协议。的作用是将人类可读的域名(如:www.shinerio.cc) 转换为机器可读的 IP 地址(如:1111.111.111.111)。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。协议建立...
计算机网络(九)—— 传输层
传输层架构在网络层之上,在两台计算机进程之间传输数据,常见的传输层协议包括TCP和UDP。 1. TCP 1.1. 首部格式 1.2. TCP状态机 TCP是面向连接的,在其生命周期会有各种不同状态 | 状态 | 描述 | | ------------ | ---------------------...
路由协议
路由是选择路径并将报文沿着选择的路径进行转发的过程。 1. 路由器 1.1. 路由器功能 路由器从功能上可以划分为: - 路由选择:使用路由协议(或手工静态配置的方式)获取整个网络的拓扑结构,构造、维护路由表。 - 分组转发:分组转发结构由交换结构、一组输入端口和一组输出端口构成。 1. IP分组检...
计算机网络(七)—— 网络层 —— ICMP
互联网控制消息协议(Internet Control Message Protocol,ICMP)是TCP/IP协议族的核心协议之一,用于IP协议中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些消息,使管理者可以对所发生的的问题作出诊断,然后采取适当的措施解决。ICMP可以简单认为是...
数据链路层概述
数据链路层使用的信道主要分为以下两种: - 点对点信道,使用一对一的点对点的通信方式 - 广播信道,使用一对多的广播通信方式,广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。 0.1. 数据链路 当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必...
计算机网络(三)—— 网络的基本分类
本文主要介绍计算机网络的分类以及局域网技术。 0.1. 网络分类 - 地理位置: 1. 个域网(PAN,Personal Area Network)。个域网允许设备围绕一个人进行通信。一个常见的例子是计算机通过无线网络(蓝牙)与其外围设备(显示器、键盘、鼠标。打印机)连接。 2. 局域网(LAN,L...
计算机网络(二)—— 性能指标
计算机网络的常见的性能指标有速率、带宽、吞吐量、时延、时延带宽积、往返时间、利用率。 1. 速率(bit/s或byte/s) 速率是物理层概念,指的是信道上每秒钟传输的0/1比特数量。比如下载文件中显示的7.8MB/s指的是每秒中可以传输7.8M字节的信息。 2. 带宽(bit/s) 带宽是逻辑概念...
计算机网络(一)—— 分层模型
计算机网络按照使用范围可以划分为个域网、局域网、城域网、广域网和互联网,其组成复杂,存在着大量诸如集线器、交换机、路由器、笔记本、手机等硬件。为了降低网络设计的复杂性,现阶段大部分网络都会形成一个层次栈结构,每一层都建立在其下一层的基础之上,向上一层提供特定服务。这种分层结构的概念其实和计算机领域的...
加密算法
本文主要介绍密码学中常见的两种加密算法—对称加密和非对称加密。 1. 散列(摘要)算法 在学习加密算法之前,我们先来了解一下散列算法(散列不是加密)。散列算法是通过一定方式对原文进行计算,产生一个哈希值,不管原始数据是什么样的,得到的哈希值都是固定长度的,其作用只是为了验证数据的完整性和唯一性,无法...