朝闻道

朝闻道

Thoughts, stories and ideas.

博客

EHome 协议 — 海康设备接入方式

海康设备接入方式 — EHome 协议 文档版本: V1.0 适用范围: 煤矿工业视频监控平台 编写日期: 2026-06-12 1. 概述 EHome(Enhanced Home)是海康威视自主研发的私有设备接入协议,专为跨 NAT/防火墙场景设计。 核心思想: 设备主动注册 → 平台反向连接。设备作为客户端主动向平台发起 TCP 连接,平台无需知道设备 IP 地址,无需在本地网络开放任何入站端口。 典型用途: 井下防爆摄像机通过 4G/5G 路由器接入地面平台、跨运营商公网接入、移动/临时部署场景。 2. 技术原理与架构 2.1 角色定义 角色 说明 设备 海康前端设备(IPC/NVR/DVR),运行
阅读时间 5 分钟
博客

C++ 插件式开发详解

C++ 插件式开发 简介 插件是你想开发一个好的系统所需要的一种好的架构方式。C++插件是 C++ 编写的动态链接共享对象。一种可复用的、灵活管理(维护、替换或增加、删除)的功能模块儿化组件。基于插件的扩展性,进而实现业务模块儿的独立和解耦,增加可维护性和可扩展性。插件使得第三方开发人员可以为系统做增值工作,也可以使其他开发人员协同开发相互配合,增加新的功能而不破坏现有的核心功能。插件能够促进将关注点分开,保证隐藏实现细节,且可以将测试独立开来,并最具有实践意义。 比如强大的Eclipse的平台实际上就是一个所有功能都由插件提供的骨架。Eclipse IDE自身(包括UI和Java开发环境)仅仅是一系列挂在核心框架上的插件。 插件机制仍需要考虑的一些问题如错误处理,数据类型,版本控制,与框架代码以及应用代码的分离等等。或许,在应用程序框架容器内,可以借助lua脚本来动态的灵活的实现业务。 为什么要用插件机制 我们为什么要用插件架构? 现代软件工程已经从原先的通用程序库逐步过渡到应用程序框架。假设一个场景,以C++开发应用程序为例,我们的架构是基于APP+
阅读时间 13 分钟
博客

Chrony 时间同步服务

chrony Chrony由两个主要组件组成: * chronyd:这是一个后台守护进程,负责时间同步任务。 * chronyc:这是一个命令行界面工具,用户可以通过它与chronyd通信,监控和配置时间同步。 Chrony的配置文件位于/etc/chrony.conf。配置文件包括了时间服务器、日志选项、漂移文件等配置。 命令 * 查看当前同步状态: chronyc tracking 这个命令显示了系统时钟的当前状态,包括偏移量、漂移速率和同步源的信息。 * 查看NTP源状态: chronyc sources 该命令列出了所有配置的NTP源及其当前状态(如可达性、偏移量等)。 M - 这表示信号源的模式。^表示服务器,=表示对等方,#表示本地连接的参考时钟。 S - 此列指示源的状态。 * "*" 表示chronyd当前同步到的源。 * "+" 表示可接受的信号源,与选定的信号源组合在一起。 * "-" 表示被合并算法排除的可接受源。 * ? 指示已失去连接性或其数据包未通过所有测试的源。
阅读时间 5 分钟
博客

NTP 网络时间协议

ntp 网络时间协议,英文名称:Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP的目的是在无序的Internet环境中提供精确和健壮的时间服务。 NTP提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。按照离外部UTC 源的远近将所有服务器归入不同的Stratum(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。计算机主机一般同多个
阅读时间 8 分钟
博客

代理服务器与反向代理详解

proxy 综述 随着网络技术与计算机的普及与发展,代理服务成为网上应用较多的形式。代理服务是指内部网络对Internet发出连接请求,需要制定代理服务将原本直接传输至Web服务器的HTTP发送至代理服务器中。换句话来说,代理服务就是网络信息的中转站。代理服务器作为浏览器与Web服务器之间的另一类服务器,配备代理服务器,浏览器无需直接至Web服务器获取网页,只需向代理服务器发出所需的请求,由代理服务器传送给访问者所需的浏览器。 代理服务器(Proxy Server)的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站,是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。 代理服务器作为连接Internet与Intranet的桥梁,在实际应用中发挥着极其重要的作用,它可用于多个目的,最基本的功能是连接,此外还包括安全性、缓存、内容过滤、访问控制管理等功能。更重要的是,代理服务器是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层。 详细内容 代理服
阅读时间 13 分钟
博客

OpenSSL 完全指南

openssl OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。 在OpenSSL被曝出现严重安全漏洞后,发现多数通过SSL协议加密的网站使用名为OpenSSL的开源软件包。由于这是互联网应用最广泛的安全传输方法,被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用,所以该漏洞影响范围广大。 OpenSSL有两种运行模式:交互模式和批处理模式。 直接输入openssl回车进入交互模式,输入带命令选项的openssl进入批处理模式。 OpenSSL整个软件包大概可以分成三个主要的功能部分: * 密码算法库 * SSL协议库 * 应用程序。 OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。 1.对称加密算法 OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(EC
阅读时间 20 分钟
博客

X.509 数字证书标准

x.509证书 X.509 是密码学里公钥证书的格式标准。 X.509 证书己应用在包括TLS/SSL(WWW万维网安全浏览的基石)在内的众多 Internet协议里.同时它也用在很多非在线应用场景里,比如电子签名服务。X.509证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构CA的签名,也可以是自签名)。对于一份经由可信的证书签发机构签名或者可以通过其它方式验证的证书,证书的拥有者就可以用证书及相应的私钥来创建安全的通信,对文档进行数字签名. 另外除了证书本身功能,X.509还附带了证书吊销列表和用于从最终对证书进行签名的证书签发机构直到最终可信点为止的证书合法性验证算法。 X.509是ITU-T标准化部门基于他们之前的ASN.1定义的一套证书标准。 X.509是一种国际电信联盟(ITU-T)和国际标准化组织(ISO)共同制定的数字证书标准。它是公钥基础设施(PKI)中使用的一种标准,用于在网络环境中验证身份和加密信息。X.509证书包含了以下信息: 1. 版本号:证书的格式版本。 2. 序列号:由证书颁发机
阅读时间 5 分钟
博客

HTTPS 协议详解

https 简介 HTTPS (全称:Hypertext Transfer Protocol Secure ),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。 HTTPS不是协议,而是通过SSL/TLS协议提供的安全连接进行的HTTP通信。最初,它被用于安全很重要的通信,例如在互联网上传输个人信息和电子支付。 随后,由于公共无线局域网的普及、PRISM的大规模窃听以及中间人攻击的风险增加, 用HTTPS取代单纯的HTTP通信越来越多。 与以纯文本形式发送和接收消息的标准 HTTP 不同,HTTPS 使用SSL/TLS等协议对服务器进行身份验证、加密通信内容和检测篡改。 这样可以防止欺骗、
阅读时间 23 分钟
博客

API Gateway 网关技术详解

API Gateway 目录 简介 API gateway 处于客户端与各个微服务之间,它担任了反向代理的角色,将不同的请求路由到相对应的微服务中去。与此同时,它还有以下功能:安全,限流,缓存,日志,监控,重试,熔断等。 API Gateway在当代云原生架构下是不可或缺的一部分,起到了路由、认证、转换、缓存、监控和安全性等多个方面的作用,帮助简化和管理复杂的API调用和后端服务集成。^2 * 路由和转发请求: API Gateway充当了客户端和后端服务之间的代理,接收并路由传入的请求到相应的后端服务。它可以根据请求的特征(如URL、HTTP方法、请求头等)进行路由决策,将请求转发到适当的服务。 * 认证和授权: API Gateway可以集成身份验证和授权机制,以确保只有经过身份验证的用户可以访问受保护的API。它可以处理用户认证、生成和验证访问令牌、执行访问控制策略等。 * 请求转换和协议转换: API Gateway可以根据需要转换请求和响应的格式、协议和数据结构。它可以将请求和响应从一个协议转换为另一个(例如,
阅读时间 21 分钟
博客

网络环境模拟与恶劣网络测试

网络环境模拟 在解决日常的支持需求中,经常会遇到一些用户反馈一些无法简单复现的bug,有很大一部分的bug是由于用户自身的网络环境波动,或者是本身网络环境就较为恶劣,而服务在面对这种恶劣的网络环境的健壮性不够,导致会出现一些意想不到的bug。而在正常的开发自测过程中很难去营造出这种恶劣的网络环境,使得这些bug较难被提前发现和修复。另外一些服务在恶劣网络环境下虽然不会出现不可用的情况,但是用户体检很差,为了优化这个情况下的用户体验,也需要去在本地模拟这种环境来进行调优。 ^1 所以要去复现这些bug,甚至是去提前发现这些bug,就需要能够在开发环境中模拟出恶劣的网络环境,从而看到在这种恶劣的网络环境下的服务的表现等。当前模拟恶劣网络环境主要可以通过以下这些手段实现: * 通过应用层或者传输层的代理服务器,通过在代理服务器上设置一些模拟恶劣网络环境的参数,使得通过这些代理服务器的流量都被转化为恶劣网络环境下的流量。如利用Fiddler,Charles等具有代理服务器功能的网络流量分析软件来实现。 * 通过利用一些更底层的驱动层面的服务,通过控制网卡的收包发包的行为,来模拟恶
阅读时间 14 分钟
博客

OAuth2.0 单点登录

OAuth2.0 单点登录 OAuth2.0 单点登录有四种授权方式: * 客户端模式 * 密码模式 * 隐式授权模式 * 授权码模式 详细 客户端模式 指客户端以自己的名义,而不是以用户的名,向“服务提供商”进行认证。严格的说,客户端模式并不属于OAuth框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求“服务提供商”提供服务,其实不存在授权问题。 操作步骤说明: 【步骤1】【步骤2】客户端向授权服务器进行身份认证,并申请访问令牌(access_token) 【步骤3】授权认证服务器验证通过后,向客户端提供访问令牌(access_token) 【步骤4】客户端向资源服务器发出请求资源的请求 【客户端5】【客户端6】服务提供商的资源服务器返回数据给客户端使用 客户端发出的HTTP请求,包含一下参数: * client_id:客户端ID * client_secret:客户端密钥
阅读时间 13 分钟
博客

常见音频硬件接口介绍

硬件 综述 详细内容 TRS 日常生活中我们见得最多的就是TRS接口,它的接头外观是圆柱体形状,通常有三种尺寸1/4"(6.3mm)、1/8"(3.5mm)、3/32"(2.5mm),我们最常见的是3.5mm尺寸的接头。 2.5mm的TRS接头以前在手机耳机上比较流行,但现在已经不多见了,耳机接口基本被3.5mm接口一统江湖。而6.3mm的接头在很多专业设备和高档耳机上比较常见,但现在有不少高档耳机也逐渐开始改用3.5mm接头。TRS的含义是Tip(signal)、Ring(signal)、Sleeve(ground),分别代表了这种接头的3个触点,我们看到的就是被两段绝缘材料隔离开的三段金属柱。因此,3.5mm接头和6.3mm接头也被人称为“小三芯”和“大三芯”。 TRS接口就是一个圆孔,其内部与接头对应,也有三个触点,
阅读时间 11 分钟
博客

视频压缩编年史

视频压缩 https://my.oschina.net/u/3521704/blog/5139834 多年以来,人们设计出许多不同的算法来压缩视频。视频压缩虽然听起来是一个很现代的词,但其实它从模拟视频开始,已经有很长的历史了。在本篇文章中,我会向大家一一介绍视频压缩史上的里程碑事件,正是这些事件的发生才有了今天的视频压缩。从过去到现在,各类视频压缩方法由最初的概念最终演化成现今的标准。很多压缩标准今天还在使用,人们也一直在继续开发和完善新的标准。 1929:首次出现帧间压缩 帧间压缩是指仅保留一张关键图像,以及后面帧与此图像之间的差异,这张关键图像被称为关键帧(Keyframe)。令人惊讶的是,关于帧间压缩的讨论可以追溯到1929年。英国的R.D. Kell提出将帧间压缩用于模拟视频,这一概念随后便延续下来并应用在今天的数字视频上。 1952:差分脉冲编码调制 下一个视频压缩的里程碑事件发生在1952年。贝尔实验室的B.M. Oliver 和 C.W. Harrison提出可以在视频编码中使用差分脉冲编码调制(DPCM)。在此之前,DPCM一直被用于音
阅读时间 14 分钟
音视频技术以及处理介绍
博客 精选

音视频技术以及处理介绍

音视频技术以及处理介绍 目录 * 简介 * 什么是音视频 * 音视频技术 * 采集 * 视频采集 * 色域(色彩空间) * HDR (High Dynamic Range Capture) * yuv与rgb * 视频制式(PAL、NTSC、SECAM) * 音频采集 * 传输 * 编码 * h264与h265 * 常见参数与原理 * 编码方式 * 网络传输协议 * gb28181 * 点播与直播 * 存储 * 渲染 * 延迟 * 处理 * 传统 * 深度学习 * 常用的流媒体处理框架 * 参考文献 简介 什么是音视频 音视频技术其实就是音频技术和视频技术的一个统称,在实际处理中,音视频需要分开处理。 视频:图像,随着时间变化的动态图像 视频的基础是视觉暂留原理 人眼观看物体时,成像于视网膜上,并由视神经输入人脑,感觉到物体的像。但当物体移去时,
阅读时间 23 分钟
博客

SIP 会话初始协议

SIP SIP(Session initialization Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点。^1 简介 SIP(Session Initiation Protocol)是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。 SIP与负责语音质量的资源预留协议(RSVP)互操作。它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议(LDAP)、负责身份验证的远程身份验证拨入用户服务 (RADIUS) 以及负责实时传输的 RTP 等多个协议。 [2]
阅读时间 6 分钟
博客

RTSP 实时流媒体传输协议

rtsp 实时流媒体传输协议(Real-Time Streaming Protocol, RTSP)是一种应用层协议,专为实时流媒体数据传输而设计。RTSP协议主要负责在客户端与服务器之间建立连接、控制媒体流传输的状态(如播放、暂停、停止等),以及调整媒体流参数(如带宽、传输速率等)。 RTSP协议广泛应用于以下场景: * 视频监控系统:RTSP协议可以实现实时监控画面的传输和播放,满足远程查看和监控的需求。 * 在线教育:RTSP协议支持在线课堂的实时音视频传输,帮助老师和学生进行远程互动教学。 * 远程会议:RTSP协议使得远程会议参与者能够实时分享和观看音视频内容,提高会议效率和参与感。 * 直播娱乐:RTSP协议为直播平台提供了实时音视频传输功能,让观众可以即时观看和互动。 内容 RTSP协议的组成 RTSP协议主要由以下几个部分组成: * 请求和响应:RTSP协议使用类似于HTTP的请求-响应机制。客户端通过发送请求命令来控制媒体流的播放、暂停和停止等操作,服务器则返回相应的响应消息。 * 方法:RTSP协议定义了一系列方法,用于描
阅读时间 8 分钟
博客

Markdown 数学公式与矩阵语法

公式 行内与独行 行内公式:将公式插入到本行内,符号:$公式内容$,如:$xyz$ 独行公式:将公式插入到新的一行内,并且居中,符号:$$公式内容$$,如:$$xyz$$ 上标、下标与组合 上标符号,符号:^,如:$x^4$ 下标符号,符号:_,如:$x_1$ 组合符号,符号:{},如:${16}{8}O{2+}{2}$ 汉字、字体与格式 汉字形式,符号:\mbox{},如:$V_{\mbox{初始}}$ 字体控制,符号:\displaystyle,如:$\displaystyle \frac{
阅读时间 7 分钟
博客

Mermaid 图表语法

Mermaid 通过 mermaid 可以实现以纯文本的方式绘制流程图,序列图,甘特图等。 使用 元数据标识: grammar_mermaid 想要使用该语法,需要在设置>扩展语法 里把mermaid选项打开。或者在每篇文章的元数据里通过 grammar_mermaid 进行控制。系统默认关闭mermaid语法功能 mermaid 提供了流程图,序列图,甘特图等多种图形效果 mermaid的语法为代码块语法的执行功能,语言为 mermaid ```mermaid! graph TD; A-->B; A-->C; B-->D; C-->D; ### 流程图 因为 mermaid 支持不同图表,所以所有的流程图需要以 graph 开头 #### 图表方向
阅读时间 11 分钟
博客

kubernetes 03

kubernetes 03 基础 * 创建kubernetes集群 * 部署应用程序 * 应用程序探索 * 应用外部可见 * 应用可扩展 * 应用更新 https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/ 创建kubernetes集群 Kubernetes 协调一个高可用计算机集群,每个计算机作为独立单元互相连接工作。 Kubernetes 中的抽象允许您将容器化的应用部署到集群,而无需将它们绑定到某个特定的独立计算机。为了使用这种新的部署模型,应用需要以将应用与单个主机分离的方式打包:它们需要被容器化。与过去的那种应用直接以包的方式深度与主机集成的部署模型相比,容器化应用更灵活、更可用。 Kubernetes 以更高效的方式跨集群自动分发和调度应用容器。 Kubernetes 是一个开源平台,并且可应用于生产环境。 一个 Kubernetes 集群包含两种类型的资源: * Master 调度整个集群 * Nodes 负
阅读时间 15 分钟
博客

Kubernetes 安装配置

Kubernetes 安装配置 运行环境为各种 linux 发行版 etcd etcd etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。 etcd作为服务发现系统,有以下的特点: * 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单 * 安全:支持SSL证书验证 * 快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作 * 可靠:采用raft算法,实现分布式系统数据的可用性和一致性 etcd项目地址:https://github.com/coreos/etcd/ etcd应用场景 etcd比较多的应用场景是用于服务发现,服务发现(Service Discovery)要解决的是分布式系统中最常见的问题之一,即在同一个分布式集群中的进程或服务如何才能找到对方并建立连接。 从本质上说,服务发现就是要了解集群中是否有进程在监听upd或者tcp端口,并且通
阅读时间 2 分钟
博客

kubernetes

kubernetes kubernetes 是谷歌内部大规模集群管理系统Borg的开源版本。 kubernetes 是基于容器技术的分布式架构。 PaaS - platform as a service PaaS是(Platform as a Service)的缩写,是指平台即服务。 把服务器平台作为一种服务提供的商业模式,通过网络进行程序提供的服务称之为SaaS(Software as a Service),是云计算三种服务模式之一,而云计算时代相应的服务器平台或者开发环境作为服务进行提供就成为了PaaS(Platform as a Service)。 Service Mesh - 服务网格 Serverless - 无服务器架构 kubernetes 具有完备的集群管理能力,包括多多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建的智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调动机制,以及多粒度的资源配额管理能力。 组成 分为 * control
阅读时间 10 分钟
博客

Godot

godot Godot游戏引擎是Juan Linietsky 1 和Ariel Manzur 1 发起的,是一款制作游戏的软件,可以制作2D和3D游戏。通过基于节点的架构来设计游戏,3D渲染器设计可以增强3D游戏的画面。具有内置工具的2D游戏功能以像素坐标工作,可以掌控2D游戏效果。面向团队的设计从架构和工具到VCS集成,Godot专为团队中的每个人设计。编辑器可在Windows、Mac OS和Linux系统中运行,支持导出游戏到Windows、Mac OS、Linux、Android、iOS、UWP和HTML5等平台。 最新发布的 Godot 3.5 Beta 3 开发版已支持在 Android 上运行。 1.详细内容 1.1 Godot 关键概念概述 * 场景 - scene 在 Godot 中,你把你的游戏分解成可重复使用的场景。场景可以是一个角色、一件武器、
阅读时间 14 分钟
博客

开源字体

开源字体 JetBrains Mono 许可证:SIL Open Font License 1.1 官网:https://www.jetbrains.com/lp/mono/ 开发商:JetBrains JetBrains Mono 是 JetBrains 公司专门为开发者打造的编程字体——甚至有「最漂亮的编程字体」之称。 这款字体充分考虑了长时间查阅代码可能导致的眼睛疲劳问题,以及与之相关的因素,比如字母的大小和形状、字形之间的空间量、自然等宽平衡、不必要的细节、以及难以区分的符号或字母(l 和 I)和连字等。 JetBrains Mono 提供了 Thin、ExtraLight、Light、Regular、Medium、SemiBold、Bold 和 ExtraBold
阅读时间 7 分钟
博客

内存泄漏检测工具

内存泄漏检测工具 工具 1. ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。 2. Dmalloc-Debug Malloc Library. 3. Electric Fence-Linux分发版中由Bruce Perens编写的malloc()调试库。 4. Leaky-Linux下检测内存泄漏的程序。 5. LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。 6. MEMWATCH-由Johan Lindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。 7. Valgrind-Debugging and profiling Linux programs, aiming at programs written in C and C++. 8. KCachegrind-A visualization
阅读时间 7 分钟
苏ICP备19018690号-1