自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 大模型 + cursor应用案例

作为一个嵌入式linux c/c++软件工程师,第一次使用cursor让我感到十分震惊,他直接一步一步帮我实现了我想要的前端代码框架,并且告诉我如何运行。对于一个没有学过前端的人,如果直接借助cursor来帮我实现web的业务,并且用来对接自己写的后端服务,开发效率将大大提高,对于有一个有前端基础的人来说就是如虎添翼。

2025-02-18 17:28:24 1157

原创 MQTT学习笔记

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)目前MQTT代理的主流平台有下面几个:Mosquitto:VerneMQ:EMQTT:这里我们选择mosquitto开源项目。

2025-01-04 16:16:31 887

原创 WFGoTask源码解析

实现一个异步发乘法任务。

2024-12-10 11:30:06 268

原创 workflow笔记

场景:公网接入网需要 http 协议,但是后端服务是自定义私有协议,接入层需要自己开发。常见的办法是使用 nginx,开发 ngx_module_t,但 nginx的网络有 11 个阶段,内部资源纯自行管理,模块代码与框架代码完全耦合到一起,开发起来非常困难,出了问题也很难排查。workflow 可以派生基本网络层,实现消息的序列化/反序列化接口,即得到自定义协议的任务。然后启动 http server,创建自定义任务,再利用案例 4 中提到的转发功能,即可得到一个自定义协议接入层,转发性能无损耗。

2024-12-07 11:05:32 1143

转载 WebSocket

客户端向服务器发送一个特殊的HTTP请求,其中包含一个Upgrade字段,表明客户端希望将该连接从HTTP协议升级为WebSocket协议。:客户端使用GET方法请求与WebSocket连接Upgradewebsocket:服务器接收到握手请求后,确认请求是否有效,并返回一个包含状态码的响应,表示协议升级成功。3:握手完成后,HTTP连接升级为WebSocket连接,客户端和服务器可以通过这个持久的连接开始双向通信。

2024-11-28 10:21:41 763

原创 go module使用

go module是go官⽅⾃带的go依赖管理库,在1.13版本正式推荐使⽤go module可以将某个项⽬(⽂件夹)下的所有依赖整理成⼀个 go.mod ⽂件,⾥⾯写⼊了依赖的版本等使⽤ go module之后我们可不⽤将代码放置在src下了使⽤ go module 管理依赖后会在项⽬根⽬录下⽣成两个⽂件 go.mod 和 go.sum。

2024-11-17 10:26:50 967

原创 sqlite3相关经验记录

记录工作中使用sqlite3。

2024-11-15 10:22:56 309

原创 opencv视频读写

需要使用VideoCapture类。

2024-11-14 11:33:10 365

原创 opencv常用api

【代码】opencv常用api。

2024-11-14 10:16:56 407

原创 vs2022搭建opencv开发环境

下载对应版本然后进行安装。

2024-11-11 11:35:54 726

原创 c++设计模式demo

⾼层模块不应该依赖低层模块,⼆者都应该依赖抽象;抽象不应该依赖具体实现,具体实现应该依赖于抽象;⾃动驾驶系统公司是⾼层,汽⻋⽣产⼚商为低层,它们不应该互相依赖,⼀⽅变动另⼀⽅也会跟着变动;⽽应该 抽象 ⼀个⾃动驾驶⾏业标准,⾼层和低层都依赖它;这样以来就解耦了两⽅的变动;⾃动驾驶系统、汽⻋⽣产⼚商都是具体实现,它们应该都依赖⾃动驾驶⾏业标准(抽象);⼀个类应该对扩展开放,对修改关闭;不将变量类型声明为某个特定的具体类,⽽是声明为某个接⼝。

2024-11-06 18:03:50 1007

原创 gb28181-sip注册流程

当客户端第一次接入时,客户端将持续向Server端发送REGISTER消息,直到Server端回复"200 OK"后结束。

2024-10-30 16:48:18 1572

原创 vim实用笔记

想要使用函数跳转功能需要先安装 ctags接着,在源文件目录树执行如下命令:ctags -R .即可在该目录下生成一个tags文件, 这个文件就是所有函数和变量的索引接着打开用vim打开任一文件 此时光标停留在 getTimeout通过快捷键 " CTRL + ] ", 即可快速跳转到函数getTimeout定义处, 如图:此时如果想要回到跳转之前的位置, 只需要通过快捷键“ CTRL + T ”即可。

2024-10-12 17:37:17 351

原创 嵌入式开发常用库编译

下载解压进入编写编译脚本编译报错修改Makefile解决如上问题删掉带 m64 字样安装。

2024-10-09 14:30:23 373

原创 acl使用笔记

进入acl目录修改buid_env。

2024-10-09 11:34:28 197

原创 记录libhv编译openssl

libhv编译openssl过程

2024-07-30 21:55:57 371

原创 libevent上传和下载文件

该函数只能完成表单上传一个文件的功能。

2024-07-10 10:28:56 303

原创 libevent编译openssl

第一次编译过程中发现找不到openssl错误。

2024-06-21 11:26:07 584

原创 spdlog学习笔记

直接通过名字获取到日志对象(spdlog创建的时候已经在全局创建,内部通过单例实现)

2024-06-19 15:58:21 360

原创 NALU结构学习

H.264标准指出,当数据流是储存在介质上时,在每个NALU 前添加起始码:0x000001 或 0x00000001,⽤来指示⼀个NALU 的起始和终⽌位置: 在这样的机制下,在码流中检测起始码,作为⼀个NALU得起始标识,当检测到下⼀个起始 码时,当前NALU结束。其余场合都是4字节0x00000001的。,占2个bit nal_ref_idc.:取00~11,似乎指示这个NALU的重要性,如00的NALU解码器可以丢弃它⽽不 影响图像的回放,0~3,取值越⼤,表示当前NAL越重要,需要优先受到保护。

2024-03-09 15:23:13 559

原创 AAC ADTS格式

aac

2024-03-05 18:12:53 903

原创 c++对接CAT1400

最近应工作需要研究CAT1400协议对接,记录下使用c/c++对接流程

2023-11-08 10:08:52 414

原创 内核编译bpf

缺少 bison库。缺少clang编译器。

2023-08-19 17:36:00 399

原创 openresty学习笔记

openresty 是一个基于 nginx 与 lua 的高性能 web 平台,其内部 集成了大量精良的 lua 库、第三方模块以及大数的依赖项。用于 方便搭建能够处理超高并发、扩展性极高的动态 web 应用、 web 服务和动态网关。openresty 通过汇聚各种设计精良的 nginx 模块,从而将 nginx 有效地变成一个强大的通用 Web 应用平台。

2023-02-26 10:28:59 1151

原创 googletest 笔记

1 测试应该是独立的和可重复的。调试一个由于其他测试而成功或失败的测试是一件痛苦的事情。googletest 通过在不同的对象上运行测试来隔离测试。当测试失败时,googletest 允许您单独运行它以快速调试。2 测试应该很好地“组织”,并反映出测试代码的结构。googletest将相关测试分组到可以共享数据和子例程的测试套件中。这种通用模式很容易识别,并使测试易于维护。当人们切换项目并开始在新的代码库上工作时,这种一致性尤其有用。3 测试应该是可移植的和可重用的。

2023-02-21 09:59:53 500

原创 Kubernetes 基本概念

Kubernetes 是一个可移植、可扩展的开源平台。用于管理容器化的工作负载和服务,可促进声明式配 置和自动化。是谷歌保密了十几年的秘密武器Borg的开源版本,谷歌一直通过Borg系统管理着数量庞大 的应用程序集群。由于Kubernetes是基于容器技术的分布式架构方案,所以不局限于任何编程语言。Kubernetes是一个可插拔的开放式平台,那些默认的解决方案可都是可选的。Kubernetes为构建开发 人员平台提供了基础,但是在重要的地方保留了用户的选择权,拥有更高的灵活性。

2023-01-18 17:27:27 1222

原创 Docker Swarm

Docker Swarm 是Docker官方的跨节点的容器编排工具。用户只需要在单一的管理节点上操作,即可管理集群下的所有节点和容器。

2023-01-17 18:43:55 1019

原创 Docker-Compose

Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。其代码目前在 https://github.com/docker/compose 上开源。

2023-01-17 17:47:49 1061

原创 Docker 容器监控

源码:https://github.com/google/cadvisor源码:https://github.com/prometheus/node_exporter官方文档:https://prometheus.io/ PromQL文档:https://prometheus.io/docs/prometheus/latest/querying/basics/源码:https://github.com/prometheus/prometheus。

2023-01-17 14:39:21 1508 1

原创 Docker 网络

在一台未经特殊网络配置的Ubuntu机器上安装完Docker之后,在宿主机上通过ifconfig命令可以看到多 了一块名为docker0的网卡。该网卡即是docker0网桥,网桥在这里的作用相当于交换机,为连接在其上 的设备转发数据帧。网桥上的veth网卡设备相当于交换机上的端口,可以将多个容器或虚拟机连接其 上,这些端口工作在二层,所以是不需要配置IP信息的。

2023-01-17 10:31:06 2940

原创 Docker数据卷

Docker的镜像是有一系列的只读层组合而来,当启动一个容器时,Docker加载镜像的所有只读层,并在最上层加入一个读写层。这个设计使得Docker可以提高镜像构建、存储和分发的效率,节省了时间和存储空间,然而也存在一些问题:为了解决这些问题,Docker引入了数据卷(volume)机制。Volume 是存在于一个或多个容器中的特定文件或文件夹,这个目录以独立于联合文件系统的形式在宿主机中存在,并为数据的共享和持久化提供便利。Docker run 和 docker create 通

2023-01-16 17:54:38 724

原创 dockerfile笔记

Dockerfile是一个创建镜像所有命令的文本文件, 包含了一条条指令和说明, 每条指令构建一层, 通过 docker build命令,根据Dockerfile的内容构建镜像,因此每一条指令的内容, 就是描述该层如何构建.有了 Dockefile, 就可以制定自己的docker镜像规则,只需要在Dockerfile上添加或者修改指令, 就可生成 docker 镜像.

2023-01-15 21:13:56 1074

原创 Docker镜像

容器解决应用开发、测试和部署的问题,而镜像解决应用部署环境问题。镜像是一个只读的容器模板, 打包了应用程序和应用程序所依赖的文件系统以及启动容器的配置文件,是启动容器的基础。镜像所打包的文件内容就是容器的系统运行环境——rootfs(根文件系统或根目录)。容器与镜像类似对象与类的关系。

2023-01-15 17:38:28 1572

原创 docker 命令

docker 命令官方文档Reference documentation | Docker Documentationdocker events : 从服务器获取实时事件docker logs : 获取容器的日志docker history : 查看指定镜像的创建历史。docker run --rm -dit --cpu-period=50000 --cpu-quota=25000 ubuntu /bin/bashdocker run --rm -dit --cpu-rt-period=50000 --cp

2022-12-03 22:26:45 1200

原创 Docker介绍

根据官方的定义,Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行分布式应用的平台。 引用网图:docker是容器化技术,针对的是应用及应用所依赖的环境做容器化。遵循单一原则,一个容器只运行一 个主进程。多个进程都部署在一个容器中,弊端很多。比如更新某个进程的镜像时,其他进程也会被迫 重启,如果一个进程出问题导致容器挂了,所有进程都将无法访问。再根据官网的提倡的原则而言,容器 = 应用 + 依赖的执行环境而不是像虚拟机一样,把

2022-12-03 19:35:47 1997

原创 Docker环境搭建

1. 安装sudo apt install docker.io2. 卸载1. 官方文档:https://docs.docker.com/engine/install/ubuntu/2. 有三种安装方式:1. 基于官方存储库安装;2. 下载软件包安装;3. 基于官方给出的快捷脚本安装。1. 更新 apt 包索引,并且安装一些软件使得apt可以通过HTTPS协议访问软件库。2. 添加docker官方的GPG 秘钥3. 设置一个标准的docker软件仓库。4. 更新apt 包索引并查看docke

2022-12-03 17:29:58 395

原创 GRPC远程调用

RPC 即远程过程调用协议(Remote Procedure Call Protocol),可以让我们像调用本地对象一样发起远程调用。RPC 凭借其强大的治理功能,成为解决分布式系统通信问题的一大利器。gRPC是一个现代的、高性能、开源的和语言无关的通用 RPC 框架,基于 HTTP2 协议设计,序列化使用PB(Protocol Buffer),PB 是一种语言无关的高性能序列化框架,基于 HTTP2+PB 保证了的高性能。

2022-11-30 16:51:42 2327

原创 Protobuf3语法笔记

先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果 所在的页数,以及每一页多少条查询结果。可以采用如下的方式来定义消息类型的.proto文件了}文件的第一行指定了你正在使用proto3语法:如果你没有指定这个,编译器会使用proto2。这个指定语法行必须是文件的非空非注释的第一个行。SearchRequest消息格式有3个字段,在消息中承载的数据分别对应于每一个字段。其中每个字段都有一个名字和一种类型。

2022-11-29 21:00:46 538

原创 Protobuf应用层协议设计

什么协议:协议是⼀种约定,通过约定,不同的进程可以对⼀段数据产⽣相同的理解,从⽽可以相互协作,存在进程间通信的程序就⼀定需要协议。为什么说进程间通信就需要协议?⽽不是说客户端和服务器端之前?为什么需要⾃⼰设计协议?⽐如不同表的插头,还需要进⾏各种转换,如果我们两端进⾏通信没有约定好协议,那彼此是不知道对⽅发送的数据是什么意义。

2022-11-29 19:48:00 1416

原创 KafKa存储机制

Kafka 是为了解决大数据的实时日志流而生的, 每天要处理的日志量级在千亿规模。1. 数据实时产生2. 海量数据存储与处理所以它必然要面临分布式系统遇到的高并发、高可用、高性能等三高问题。对于 Kafka 的存储需要保证以下几点:1. 存储的主要是消息流(可以是简单的文本格式也可以是其他格式,对于 Broker 存储来说,它并不关心数据本身)2. 要支持海量数据的高效存储、高持久化(保证重启后数据不丢失)3. 要支持海量数据的高效检索(消费的时候可以通过offset或者时间戳高效查询并处理)

2022-11-28 20:37:31 4241

空空如也

空空如也

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

TA关注的人

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