Docker--Docker网络原理
虚拟网卡
==虚拟网卡(Virtual Network Interface,简称vNIC) 是一种在软件层面模拟的网卡设备,不依赖于物理硬件,而是通过操作系统或虚拟化技术实现网络通信功能。==它允许计算机在虚拟环境中模拟物理网卡的行为,用于连接虚拟网络或与物理网络交互。
核心特点
1.软件模拟
- 通过软件算法模拟物理网卡的功能,如数据包的接收、发送、MAC地址处理等。
- 无需物理硬件支持,可在无物理网卡的设备上运行。
2.灵活配置
- 用户可自由设置虚拟网卡的IP地址、MAC地址、子网掩码等参数。
- 支持动态调整网络配置,适应不同场景需求。
3.跨平台兼容
- 可在Windows、Linux、macOS等操作系统上运行。
- 常见于虚拟机(如VMware、VirtualBox)、容器(如Docker)、云服务(如AWS、Azure)等场景。
虚拟网卡:TUN/TAP
TUN/TAP 是 Linux 内核中提供的两种虚拟网络设备,用于在用户空间程序和内核网络栈之间传输数据。
1.TUN(网络层虚拟设备)
- 工作层次:网络层(第三层)。
- 处理数据:IP 数据包。
- 特点:
模拟一个网络层接口,允许用户空间程序接收和发送 IP 层的数据包。
常用于 VPN 应用,将网络流量从一个远程网络重定向到本地虚拟网络接口。
没有 MAC 地址,仅处理 IP 层数据,无法进行二层操作(如发送 ARP 包或以太网广播)。
2.TAP(链路层虚拟设备)
- 工作层次:数据链路层(第二层)。
- 处理数据:以太网帧。
- 特点:
模拟一个以太网接口,允许用户空间程序发送和接收以太网帧。
通常用于虚拟机网络、桥接网络、虚拟交换机等场景,以模拟完整的二层网络通信。
拥有 MAC 地址,可以处理二层数据帧,支持二层广播和 MAC 层功能。
工作机制
数据传输:数据在用户空间和内核之间通过设备文件(如 /dev/net/tun)传输。
- 用户空间 → 虚拟设备 → 内核网络栈:用户空间程序通过文件描述符将数据(IP 包或以太网帧)写入 TUN/TAP 设备,内核接收到数据后,根据设备类型(TUN 或 TAP)将数据包发送到内核网络栈的对应层。
- 内核网络栈 → 虚拟设备 → 用户空间:当内核网络栈收到外部网络的数据包,并且这些数据包的目标是虚拟网络设备时,内核会将这些数据包发送到 TUN 或 TAP 设备,设备接收到数据后,通过文件描述符将数据传递到用户空间。
VPN应用程序例子
应用程序通过tun设备对外发送数据包后,tun设备就会把数据包通过字符设备发送给VPN应用程序,VPN接收到数据包,重新封装出新的报文;然后通过协议栈发送到物理网卡上;
虚拟网卡tun实战
1.查看当前的物理网卡,eth0就是我们的物理网卡
ifconfig
通过ip link
命令 创建一个虚拟网卡
ip tuntap add dev tun0 mod tun
查看网卡信息,新添加的虚拟网卡默认是DOWN
状态.需要用-a 参数显示
ifconfig -a
激活网卡
ip link set tun0 up
再次通过ifconfig
查看,可以看到网卡状态UP
了;
分配ip地址
ip addr add 10.5.0.1/24 dev tun0
通过ifconfig
进行查看
此时说明我们的虚拟网卡已经添加好了,通过 del 可以删除网卡
ip tuntap del dev tun0 mod tun
虚拟网卡:veth
使用 tun/tap 设备传输数据需要经过两次协议栈,不可避免地会有一定的性能损耗,
所以引入了新的网卡实现方式 veth.
veth(Virtual Ethernet)是一种虚拟网卡设备,在 Linux 内核中实现,用于在两个网络命名空间之间创建点对点连接。
- 成对出现:veth 设备总是成对出现,例如 veth0 和 veth1,它们之间形成一个虚拟的以太网连接。
- 网络命名空间隔离:veth 设备的一端可以放置在一个网络命名空间中,另一端放置在另一个网络命名空间中,从而实现不同命名空间之间的通信。
- 数据传输:从一个 veth 设备发送的数据包会直接传输到其对端的 veth 设备,就像在物理以太网中通过网线连接的两台设备一样。
工作原理
- 内核网络栈处理:veth 设备的数据传输由 Linux 内核的网络栈处理。当一个 veth 设备接收到数据包时,内核会将数据包直接传递给其对端的 veth 设备,而不会经过物理网络接口。
- 高效通信:由于 veth 设备之间的通信在内核中完成,没有物理网络接口的开销,因此通信效率非常高。
虚拟网卡veth实战
查看当前网卡信息
ifconfig
创建两个网络空间
ip netns add ns1ip netns add ns2ip netns list
ns2
ns1
创建一个虚拟网卡对
ip link add veth11 type veth peer name veth12
执行 ifconfig -a
可以看到网卡多了 2 个
将网卡挪到不同的命名空间中
sudo ip link set veth11 netns ns1
sudo ip link set veth12 netns ns2
激活我们的网卡
ip netns exec ns1 ip link set veth11 up
ip netns exec ns2 ip link set veth12 up
设置ip地址
ip netns exec ns1 ip addr add 10.5.0.1/24 dev veth11
ip netns exec ns2 ip addr add 10.5.0.2/24 dev veth12
相互ping一下
ip netns exec ns1 ping 10.5.0.2
ip netns exec ns2 ping 10.5.0.1
删除网络命名空间
ip netns del ns1
ip netns del ns2
弊端:随着网络设备的增多,网络连线的复杂程度将成倍增长。
虚拟交换机
在现实生活中,一台设备往往与多台设备进行通信,路由器很好的解决了这个问题,将设备通过路由器的二层交换,那么设备就能通过路由器IP分配来进行通信;
Linux Bridge
最主要的功能就是二层交换,是对现实的虚拟机进行模拟;
Linux Bridge
,由brctl
命令创建和管理。
实战
创建三个 netns,三对 veth pair,分别一端在 netns 中,另一端连接在网桥上;
新建网络命名空间
root@VM-8-12-ubuntu:~# ip netns add ns1
root@VM-8-12-ubuntu:~# ip netns add ns2
root@VM-8-12-ubuntu:~# ip netns add ns3
创建 veth 对
root@VM-8-12-ubuntu:~# ip link add veth2-ns type veth peer name veth2-br
root@VM-8-12-ubuntu:~# ip link add veth1-ns type veth peer name veth1-br
root@VM-8-12-ubuntu:~# ip link add veth3-ns type veth peer name veth3-br
将 ns 一段的网卡移入到命名空间
root@VM-8-12-ubuntu:~# ip link set dev veth1-ns netns ns1
root@VM-8-12-ubuntu:~# ip link set dev veth2-ns netns ns2
root@VM-8-12-ubuntu:~# ip link set dev veth3-ns netns ns3
启动网卡,并配置 ip,开启本地回环,
root@VM-8-12-ubuntu:~# ip netns exec ns1 ip link set veth1-ns up
root@VM-8-12-ubuntu:~# ip netns exec ns2 ip link set veth2-ns up
root@VM-8-12-ubuntu:~# ip netns exec ns3 ip link set veth3-ns up
root@VM-8-12-ubuntu:~# ip netns exec ns1 ip link set lo up
root@VM-8-12-ubuntu:~# ip netns exec ns2 ip link set lo up
root@VM-8-12-ubuntu:~# ip netns exec ns3 ip link set lo up
root@VM-8-12-ubuntu:~# ip netns exec ns1 ip addr add 10.100.0.11/24 dev veth1-ns
root@VM-8-12-ubuntu:~# ip netns exec ns2 ip addr add 10.100.0.12/24 dev veth2-ns
root@VM-8-12-ubuntu:~# ip netns exec ns3 ip addr add 10.100.0.13/24 dev veth3-ns
测试网络联通性,此时是不通的
root@VM-8-12-ubuntu:~# ip netns exec ns3 ping 10.100.0.11
PING 10.100.0.11 (10.100.0.11) 56(84) bytes of data.
^C
--- 10.100.0.11 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2037ms
创建网桥
root@VM-8-12-ubuntu:~# brctl addbr testbr0
root@VM-8-12-ubuntu:~# ifconfig -a
启动网桥
ip link set testbr0 up
配置ip地址
ip addr add 10.100.0.1/24 dev testbr0
将veth的另一端打开
ip link set veth1-br up
ip link set veth2-br up
ip link set veth3-br up
将veth的另一端与网桥连接上
brctl addif testbr0 veth1-br
brctl addif testbr0 veth2-br
brctl addif testbr0 veth3-br
尝试ping一下
ip netns exec ns3 ping 10.100.0.11
ip netns exec ns2 ping 10.100.0.13
如果发现不能转发,原因是 linux 加入了 bridge_netfilter
。需要开启允许通过:
iptables -A FORWARD -i testbr0 -j ACCEPT
释放空间
ip link del veth1-br
ip link del veth2-br
ip link del veth3-br
ip link del testbr0
ip netns del ns1
ip netns del ns2
ip netns del ns3
相关文章:
Docker--Docker网络原理
虚拟网卡 虚拟网卡(Virtual Network Interface,简称vNIC) 是一种在软件层面模拟的网卡设备,不依赖于物理硬件,而是通过操作系统或虚拟化技术实现网络通信功能。它允许计算机在虚拟环境中模拟物理网卡的行为࿰…...
Java 性能优化:如何在资源受限的环境下实现高效运行?
Java 性能优化:如何在资源受限的环境下实现高效运行? 在计算机系统中,性能优化是一项至关重要的任务,尤其是在资源受限的环境下,如何让 Java 程序高效运行是许多开发者面临的挑战。本文将深入探讨 Java 性能优化的策略…...
Spring之我见 - Spring MVC重要组件和基本流程
核心组件详解 前端控制器 - DispatcherServlet 作用:所有请求的入口,负责请求分发和协调组件。 public class DispatcherServlet extends HttpServlet {// 核心服务方法protected void doService(HttpServletRequest request, HttpServletResponse re…...
MongoDB常用命令
数据库操作 显示所有数据库 show dbs 切换/创建数据库 (如果数据库不存在则创建) use <database_name> 删除当前数据库 db.dropDatabase() 查看当前数据库 db 查看数据库状态 db.stats() 集合操作 显示当前数据库中的所有集合 show collections 创建集合 d…...
Java Set/List 知识点 Java面试 基础面试题
Java Set/List 知识点 Set与List区别 List 有序、值可重复,内部数据结构 Obejct[ ] 数组Set 无序、值不重复,内部数据结构 HashMap keyobject value固定new Object() ArrayList 有序存储元素允许元素重复,允许存储 null 值支持动态扩容非线程安全 HashSet、LinkedHa…...
C#委托介绍
委托可以将方法作为参数传递,同时委托也可以自己作为参数传递 委托可分为自定义委托delegate 无返回值的Action 与有返回值的Func委托 也有匿名委托与Lamada 委托支持多播是事件的基础 用处如在分线程调用主线程的UI invoke public delegate string Say(stri…...
三网通电玩城平台系统结构与源码工程详解(三):控制台与银商权限模块设计
本篇聚焦于三网通电玩城系统中的控制台管理系统及银商权限逻辑。通过深入解构后台系统的角色分权、账目明细管理、发卡接口与日志追踪机制,本文将提供完整的权限划分方案和部分关键实现代码,为平台运维与数据安全提供坚实基础。 一、控制台整体结构概览 …...
audio 核心服务AudioPolicyService 和AudioFlinger启动流程
目录 1、audioserver启动 2、AudioPolicyService启动 3、AudioFlinger启动 audio的核心服务有两个,AudioPolicyService 和AudioFlinger他们到在audioserver一个进程中 1、audioserver启动 设备开机,系统启动时将执行 /system/etc/init/audioserver.rc…...
Android自动化功能-使用Appium获取android页面节点元素信息
一、appium安装和使用 官方网站:https://appium.io/docs/en/latest/ github地址:https://github.com/appium/appium 安装步骤: 首先需要安装node.js 安装好node.js之后使用npm安装 appium npm install -g appium appium -v # 检查安装版本…...
springboot项目配置springMVC
为什么需要配置springMVC 在Spring Boot中配置Spring MVC,实际上是为了更好地集成和使用Spring框架提供的Web开发功能。 Spring Boot本身是为了简化Spring应用的配置和部署,它内置了一些默认的配置和组件,帮助开发者快速启动应用,…...
解决 MongoDB 查询中的 `InvalidMongoDbApiUsageException` 错误
您在使用 Spring Data MongoDB 时遇到了 InvalidMongoDbApiUsageException 异常,错误信息如下: “由于 com.mongodb.BasicDocument 的限制,您无法添加第二个 ‘null’ 条件。查询已经包含 ‘{ “KaTeX parse error: Expected }, got EOF at e…...
多模态知识图谱:重构大模型RAG效能新边界
当前企业级RAG(Retrieval-Augmented Generation)系统在非结构化数据处理中面临四大核心问题: 数据孤岛效应:异构数据源(文档/表格/图像/视频)独立存储,缺乏跨模态语义关联,导致知识检…...
基于大模型的贲门失弛缓症手术全流程风险预测与治疗方案研究
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与技术路线 二、贲门失弛缓症概述 2.1 定义与发病机制 2.2 临床表现与诊断标准 2.3 治疗现状与挑战 三、大模型预测原理与数据基础 3.1 大模型介绍与选择依据 3.2 数据收集与预处理 3.3 模型训…...
C语言内存函数
1.memcpy函数 1.1:memcpy函数的介绍 1.2:模拟实现memcpy函数 我实现的memcpy函数无法处理两块重叠的内存的数据的拷贝 #include<assert.h> void* my_memcpy(void* dest, const void* src,size_t num) {assert(dest ! NULL && src ! NULL);//从src指向的内存位…...
Uniapp:navigator(页面跳转)
目录 一、基本概述二、属性说明三、具体使用 一、基本概述 页面跳转。该组件类似HTML中的<a>组件,但只能跳转本地页面。目标页面必须在pages.json中注册。 二、属性说明 属性名类型默认值说明平台差异说明urlString应用内的跳转链接,值为相对路…...
建造者模式详解及其在自动驾驶场景的应用举例(以C++代码实现)
模式定义 建造者模式(Builder Pattern)是一种创建型设计模式,用于分步构造复杂对象。该模式将对象构建过程与其表示分离,支持通过相同构建过程生成不同表现形式,特别适合需要灵活配置的自动驾驶车辆系统搭建场景。 自…...
2025年数字媒体设计与文化交流国际会议 (DMACE 2025)
2025 International Conference on Digital Media Art and Cultural Exchange 【一】、大会信息 会议简称:DMACE 2025 大会地点:中国烟台 收录检索:提交Ei Compendex,CPCI,CNKI,Google Scholar等 【二】会议…...
【MCP Node.js SDK 全栈进阶指南】利用TypeScript-SDK打造高效MCP应用
前言 在MCP(模型上下文协议)的世界中,SDK(软件开发工具包)是开发者构建应用的重要工具。作为MCP生态中最活跃的SDK之一,TypeScript-SDK提供了简洁而强大的接口,帮助开发者快速构建高效的MCP应用。本文将带你深入了解MCP的TypeScript-SDK,掌握其核心概念和使用方法,让…...
LangChain4j 搭配 Kotlin:以协程、流式交互赋能语言模型开发
Kotlin 支持 | LangChain4j Kotlin 是一种面向 JVM(及其他平台)的静态类型语言,能够实现简洁优雅的代码,并与 Java 库无缝互操作。 LangChain4j 利用 Kotlin 扩展和类型安全构建器来增强 Java API,为其增添特定于 Ko…...
搜索引擎的高级语法
文章目录 精确搜索:双引号站内搜索:site通配符搜索:*减号缩小范围:-文档搜索:filetypeURL搜索: inurl标题搜索:intitle正文搜索:intext参考链接 精确搜索:双引号 “ ” …...
探秘 SenseGlove Nova 2力反馈手套,解锁 VR 键盘交互新方式
在虚拟现实(VR)技术不断发展的现今,键盘交互体验的优化成为众多科研人员关注的重点。今天,让我们一同走进 Heilbronn 大学与 SenseGlove 的合作项目,探寻 SenseGlove Nova 2 力反馈手套为 VR 环境中的键盘交互带来的新…...
品牌如何通过朝日新闻出海日本?——某企业日本媒体发稿实战
文 | 言同数字亚太传播实验室 一、日本市场的隐形门槛:中国品牌的三大痛点 案例背景: 某中国灵芝保健品企业(代号"ForestLife"),产品虽获中国/欧盟有机认证,但在日本市场面临: 认知…...
安全文件共享实际上是什么样的呢?
通过即时通讯应用共享敏感信息的安全漏洞由来已久,且令人担忧。很少有事件像最近曝光的美国高级政客通过热门即时通讯应用 Signal 泄露军事攻击计划那样引起公众关注。 此类备受瞩目的漏洞凸显了全球各组织迫切需要重新评估其安全交换机密数据的方法。对于许多机密…...
深入探索Spark-Streaming:从基础到核心编程
在大数据实时处理领域,Spark-Streaming凭借其强大功能脱颖而出。它是Spark生态系统中处理流式数据的利器,支持Kafka、Flume等多种数据输入源,能利用Spark的map、reduce等原语处理数据,处理结果可存储于HDFS、数据库等。 Spark-Str…...
深度学习3.6 softmax回归的从零开始实现
本章节引入3.5的数据集 import torch from IPython import display from d2l import torch as d2lbatch_size 256 #迭代器批量 train_iter, test_iter d2l.load_data_fashion_mnist(batch_size)3.6.1 初始化模型参数 num_inputs 784 # 权重矩阵长度 num_outputs 10 # 类别…...
使用Spark-TTS-0.5B模型,文本合成语音
文章目录 背景模型介绍拉取开源代码conda下载与使用项目环境配置修改部分代码文件进阶玩法小结背景 ~~~~ 由于本博主遇到了需要文本转语音的相关需求,经过多方面的调研和研究,市面上的实现这个需求的方法有很多,可以直接通过调取api的方式实现,文本转语音。也可以…...
08前端项目----升序/降序
升序/降序 vue实现升序/降序服务器处理 vue实现升序/降序 用vue实现升序/降序,以及css绘制三角形 <div class"sui-navbar"><div class"navbar-inner filter"><ul class"sui-nav"><li class"active"&g…...
Dataway在Spring Boot中的引入以及使用教程
Dataway是Hasor生态中的接口配置工具,能帮助开发者快速配置数据接口。它支持DataQL和SQL两种语言模式,可将SQL转换为DataQL执行,简化数据查询与交互,无需编写大量代码。接口配置完成后,可进行自测、冒烟测试࿰…...
百度搜索 API 相比于爬虫的效率提升、价格及如何注册使用
使用百度搜索 API 进行数据查询,相比于爬虫(selenium)速度提升的幅度取决于几个因素: 1. 摆脱页面渲染(Selenium) Selenium 通过控制浏览器来模拟用户行为,加载网页并渲染页面。每次请求都需要…...
Docker 中运行 JAR 文件
文章目录 步骤 1:准备文件结构步骤 2:编写 Dockerfile步骤 3:构建 Docker 镜像步骤 4:运行容器常见问题解决Q1:容器启动后立即退出Q2:时区不一致Q3:依赖外部服务(如MySQL)…...
MacOS 10.15上能跑大语言模型吗?
MacOS 10.15上能跑大语言模型吗? 下载安装Ollama运行大语言模型引申出的问题 MacOS 10.15.7(发布于2020年9月)作为已经发布了将近5年的系统版本能够运行当今流行的大语言模型吗?这篇文章简要介绍了在MacOS 10.15上通过Ollama运行d…...
分布式之易混淆概念
昨天写UE写的破防了,忘了写文章,今天补一下分布式的一些概念。😚 在软件架构领域,微服务、领域驱动设计(DDD)和分布式系统是三个高频且容易被混淆的概念。许多开发者误以为它们是“同一件事的不同说法”&a…...
DeepSeek开源引爆AI Agent革命:应用生态迎来“安卓时刻”
开源低成本:AI应用开发进入“全民时代” 2025年初,中国AI领域迎来里程碑事件——DeepSeek开源模型的横空出世,迅速在全球开发者社区掀起热潮。其R1和V3模型以超低API成本(仅为GPT-4o的2%-10%)和本地化部署能力&#x…...
Anaconda 与 Miniconda 的差异详解
Anaconda 与 Miniconda 的差异详解 Anaconda 和 Miniconda 都是 Python 数据科学领域常用的发行版管理工具,它们都基于 conda 包管理系统,但在设计定位和功能组成上有显著区别。 核心差异对比 特性AnacondaMiniconda安装包大小较大 (3GB)较小 (100MB左…...
STM32 中断系统深度剖析
在嵌入式系统开发领域,STM32 系列微控制器凭借其强大的性能和丰富的资源被广泛应用。中断系统作为 STM32 的关键特性之一,能够极大地提升系统的实时响应能力和多任务处理效率。本文将基于 STM32F4 系列芯片,深入剖析中断与外设中断的原理、配…...
List findIntersection getUnion
List findIntersection & getUnion 求两个列表的交集和并集 package zwf;import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List;/*** 列表工具类* * author ZengWenFeng* date 2025.04.22* mobile 13805029595* email 117791303qq.com*/ p…...
【微服务】SpringBoot制作Docker镜像接入SkyWalking详解
目录 一、前言 二、SkyWalking介绍 2.1 SkyWalking是什么 2.2 SkyWalking核心功能 2.3 SkyWalking整体架构 2.4 SkyWalking主要工作流程 三、前置准备 3.1 搭建SkyWalking服务 3.1.1 下载安装包 3.1.2 上传服务器目录 2.1.3 数据库持久化配置说明 3.1.4 启动skywalk…...
豪越科技消防公车管理系统:智能化保障应急救援效率
近期消防车辆管理暴露出的问题,凸显了传统管理模式的不足。在应急救援任务日益繁重的背景下,消防部门对公车管理提出了更高要求。豪越科技针对消防行业特殊需求,研发了专业的消防公车管理系统,通过"线上提交申请-线上审批-线…...
vscode本地docker gdb调试python
背景 最近在部署测试一个工程,不想配环境,拉官方镜像下来跑的,不幸地是,程序运行有点问题。想要debug一下,又不想在终端gdb,想要在vscode中点点点,所以有了下面的一顿配置。 vscode python常用…...
Electron使用WebAssembly实现CRC-32 原理校验
Electron使用WebAssembly实现CRC-32 原理校验 将C/C语言代码,经由WebAssembly编译为库函数,可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-32 原理格式校验的方式。 CRC-32 原理校验函数WebAssembly源文件 C语言实现C…...
Java求职面试:从Spring Boot到微服务的全面考核
面试场景: 在某互联网大厂的面试室内,面试官严肃地坐在桌子后面,面前是几本厚厚的技术书籍。而我们的主人公,搞笑的水货程序员赵大宝,则带着他标志性的微笑走进了房间。 第一轮提问: 面试官:…...
Electron主进程渲染进程间通信的方式
在 Electron 中,主进程和渲染进程之间的通信主要通过 IPC(进程间通信)机制实现。以下是几种常见的通信方式: 1. 渲染进程向主进程发送消息(单向) 渲染进程可以通过 ipcRenderer.send 向主进程发送消息&am…...
Spring Boot 主模块 spring-boot 核心技术解析:从启动类到内嵌容器的无缝支持
在现代企业级应用的开发中,构建高效、简洁的应用框架是至关重要的。Spring Boot 作为 Spring 生态系统的重要一员,凭借其“约定优于配置”的理念,极大简化了传统 Spring 应用的开发过程。通过内嵌的容器支持、自动配置功能以及灵活的外部化配…...
盈达科技GEO解决方案:破解AI时代品牌增长困局
盈达科技GEO解决方案:破解AI时代品牌增长困局 ——全域优化策略助力企业抢占生成式AI流量高地 一、客户痛点:AI重构规则下的三大生存危机 1. 信任危机:AI放大负面杀伤力 财务隐患:上市公司因财报误读导致股价波动 产品质量&…...
安宝特科技 | AR眼镜在安保与安防领域的创新应用及前景
随着科技的不断进步,增强现实(AR)技术逐渐在多个领域展现出其独特的优势,尤其是在安保和安防方面。AR眼镜凭借其先进的功能,在机场、车站、海关、港口、工厂、园区、消防局和警察局等行业中为安保人员提供了更为高效、…...
蓝牙 6.0 发布,解锁无线科技新可能
在5G和Wi-Fi 7高速发展的时代,蓝牙技术始终以独特优势深度融入日常生活。从无线耳机到智能家居,它凭借低功耗、高兼容的特性,悄然连接各类智能设备,打造无缝的数字生活体验。无论是聆听音乐、智能门禁还是健康监测,蓝牙…...
redis数据类型-地理空间GEO
redis数据类型-地理空间GEO 文档 redis单机安装redis常用的五种数据类型redis数据类型-位图bitmapredis数据类型-基数统计HyperLogLog 说明 官网操作命令指南页面:https://redis.io/docs/latest/commands/?nameget&groupstring 地理空间:GEO …...
2023蓝帽杯初赛内存取证-5
直接查找关键词”xlsx“,但是使用filescna失败了,换成mftparser倒是成功: vol.py -f memdump.mem --profile Win7SP1x64 filescan | grep -E "xlsx" vol.py -f memdump.mem --profile Win7SP1x64 mftparser | grep -E "xlsx&…...
安宝特方案 | 医疗AR眼镜,重新定义远程会诊体验
【AR眼镜:重新定义远程会诊体验】 在快速发展的医疗领域,安宝特医疗AR眼镜以其尖端技术和创新功能,引领远程会诊的未来,致力于为为医生和患者带来更高效、精准和无缝的医疗体验。 探索安宝特医疗AR眼镜如何在医疗行业中引领新风潮…...
RT-Thread学习笔记(三)
RT-Thread学习笔记 时钟管理时钟节拍获取系统节拍定时器系统定时器初始化定时器工作机制动态创建定时器静态创建定时器定时器控制高精度延时函数 时钟管理 操作系统需要通过时间来规范其任务 时钟节拍 任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间…...