- 博客(162)
- 问答 (3)
- 收藏
- 关注
转载 vscode c/cpp智能提示配置
如果只是将需要包含的头文件放在includePath字段中,那么include的问题解决了,但是defines的问题还没有解决,这将会出现一大堆的提示,这些提示大部分都是因为缺少相应的宏定义引起的,而browse可以搜索相应browse.path字段中所有的宏定义,并把缺少的宏定义补全,让Definition/Declaration操作可以无障碍。智能感知模式,有msvc-x64.gcc-x64和clang-x64,根据编译器的前端选择就行,例如我的xtensa编译器选的是gcc-x64。
2022-11-01 18:24:35
1507
原创 nginx支持rtmp
1 nginx安装我这里使用nginx-1.20.2版本,此版本已经将 mp4和hls做成内置模块,只需要增加 --with-http_flv_module enable ngx_http_flv_module --with-http_mp4_module enable ngx_http_mp4_module配置选项即可。需要注意的是,nginx的配置文件读取,需要用到正则表达式,而正则表达式依赖于 pcre库,这里使用pcre-8.45,注意n
2021-12-24 17:04:54
3341
原创 关于CMake构建工具的一些规则记录
CMake 工具默认编译时不会显示编译器及编译选项等详细信息,在编译时使用 make VERBOSE=1 即可。CMake 的 message() 函数的使用 :message( [STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...)/*(无) = 重要消息; STATUS = 非重要消息; WARNING = CMake 警告, 会继续执行; AUTHOR_WARNING = CM.
2021-12-03 21:11:57
774
原创 WebRTC之信令篇
在WebRTC中,信令发挥着举足轻重的作用,但是webrtc工作组并没有对信令交互进行标准化,留给开发人员自行选择。这也导致了信令交互的方案出现了多种,了解这些方案之间的差异,将有助于我们在研发WebRTC应用程序时做出正确的选择。1 信令的作用在实时通信中,信令的作用主要体现在以下几个方面:协商媒体功能和设置标识和验证会话参与者的身份控制媒体会话、指示进度、更改会话和终止会话当会话...
2021-11-25 11:38:33
1802
原创 WebRTC之SDP篇
1 SDP 是什么见名知意,SDP是session description protocol,会话描述协议。即SDP是一个描述一次会话的协议。一般SDP用于多媒体通信中,由于视频和音频数据的复杂性,不同编码类型的音视频流需要对应的专门的编解码器进行编解码操作,经过编解码器的处理后音视频方能够传输或者播放。而对应的编解码器的初始化必须要知道响应的音视频信息,故SDP一般用于音视频传输前通信双方交流...
2021-11-23 19:55:53
758
原创 TCP连接的几种异常情况
TIME_WAIT作用:1、若是LAST_ACK丢失(丢失的周期1个TTL),需要重新发送FIN;2、防止同ip和port过早复用连接,导致收到上一个连接的数据。EINTRaccept、read等慢系统调用,在挂起的过程中,若是进程收到信号,则此挂起系统调用可能返回 EINTRtcp建立连接中涉及2个队列:一个已经完成连接队列(ESTABLISHED),一个未完成连接队列(SYN_RC...
2019-10-13 16:38:06
328
原创 source insight
Source Insight 4.0是一款功能强大的程序编辑器和代码浏览器,只要你拥有相应的程序语言包就能够进行程序分析,比如说目前最好的开源语言java。软件提供个用户快速的对源码进行导航和任何程序编辑器的元信息,还提供了快速和革新的访问源代码和原信息的能力,让开发人员轻松进行编程。软件可以说支持近乎所有的语言,比如C、C++之类常见的语言,以及一些不常见的比如GO语言,这款语言编辑器能够自动创...
2019-05-15 21:44:38
216
原创 2019面试遇到的技术问题
1 libevent2 netlink套接字3 虚函数,虚函数表4 进程间通信的方式5 系统调用的过程6 敏捷开发的流程7 tcp连接的状态有哪些8 三次握手 四次挥手9 构造函数可不可以是虚函数,为什么10 线程池同步11 多生产者多消费者12 几种锁13 不用中间变量交换值14 单机模式 线程安全16 业务与基础通道管理分离17 一个大字符串中查询多个关键字18 字符串翻转19 有序链表合并...
2019-04-19 09:38:16
72
原创 MQTT 系列之 MQTT broker 的连接
client 在可以发布和订阅消息之前,必须先连接到 broker,下面我们来看一下连接到 broker 的流程。1 Client 连接到 Broker 的流程2 CONNECT连接的建立由 Client 端发起,Client 端首先向 broker 发送一个 CONNECT 数据包,CONNECT 数据包包含以下内容(这里我们略过 fixed header)。2.1 可变头(V...
2019-01-28 19:36:30
1389
原创 Linux 上的内置链表
1 简介在 Linux 的 <sys/queue.h>中定义一系列操作不同链表的宏函数。如:LIST_ENTRY(TYPE); LIST_HEAD(HEADNAME, TYPE); LIST_INIT(LIST_HEAD *head); LIST_INSERT_AFTER(LIST_ENTRY *listelm, ...
2019-01-24 16:20:11
77
原创 libcurl 使用 https 时切换 ip 遇到的问题
1 问题由来开发的产品使用到的某服务器后台接口,因为业务的特殊性,在常规的host访问失败时,需要前端再使用指定的ip访问,而且是https。开始使用ip访问https的首要问题就是证书验证流程。在提出此需求时,后台同学给了一份阿里云的参考:HTTPS(含SNI)业务场景“IP直连”方案说明 。此中提到的例子是Andriod和ios上的应用,方案就是在使用的对应库中修改https的证书验证过...
2019-01-24 13:20:57
179
原创 MQTT 协议系列之基础概念
1 MQTT 协议的通信模型就像我们之前提到的那样,MQTT 的通信是发布/订阅的方式来实现的,消息的发布方和订阅方通过这种方式来进行解耦,他们没有直接地进行连接,它们需要一个中间方。在 MQTT 里面我们称之为 broker,用来进行消息的存储和转发。一次典型的 MQTT 消息通信的流程如下图所示:发布方将消息发布到 brokerbroker 接收到消息后,检查都有哪些订阅方订...
2019-01-17 15:29:38
136
原创 mqtt 系列之综述
1 mqtt 起源MQTT 的全称为 Message Queue Telemetry Transport,是在 1999 年,由 IBM 两位工程师为通信卫星网络连接输油管道的项目开发的。其主要目的是为了满足低电量消耗和低网络宽带的需求,MQTT 协议在设计之初就包含了一下特点:实现简单提供数据传输的 QoS轻量、占用宽带低可传输的任意类型的数据可保持的会话之后 IBM 一直将其...
2019-01-17 14:38:27
159
原创 c++ 类的几个要点
1 C++ 类的书写风格Lakos (Lakos, J., 2001) Large-Scale C++ Software Design (Addison-Wesley) 书中推荐了 C++ 类的书写风格:所有数据成员都应该设置为 private 属性,且放置于类申明的最开头。所有数据成员都已 d_ 前缀开头,但是静态成员以 s_ 前缀开始。非 private 数据成员只能在极少数情况下...
2019-01-09 19:37:02
88
原创 如何对 1 千万个整数进行快速排序
问题原型一个最多包含 n 个正整数的文件,每个数都小于 n,其中 n = 10^7。此 n 个正整数不存在重复。请将这 n 个正整数按照升序排列。问题约束最多有大约 1MB 的内存空间可用,有充足的磁盘存储空间。运行时间最多几分钟,运行时间小于 10 秒。问题分析首先我们来看10^7个整数需要占用的空间大小 4*10^7个byte,即约 40MB 的空间,由于内存空间的限制,我们不可能把...
2018-12-27 18:36:24
284
原创 用 automake 来构建项目
author:守拙圆一般而言,对于小项目通常自己来编写 Makefile 即可。但对于大型项目,手动编写维护大型项目,编写 makefile 将是一项费力费时的工作。1 工具介绍gnu 提供了一套 autotools 工具来辅助用户来生成 makefile,完成编译工作。此工具集包括:autoscan: 此命令能够对于一个软件包或目录创建或者维护一个 configure.ac 文件。...
2018-11-21 17:56:19
92
原创 关于 https 的 SNI(Sever Name Indication) 问题记录
1 虚拟主机要讨论 SNI 的问题,首先需要来介绍一个虚拟主机的概念。1.1 概念虚拟主机一般使用的技术为软硬件,它可以把一台真实的物理电脑主机进行划分,让它变成多个逻辑的存储单元,每一个单元中不会再有物理的实体,但是在单元内,却可以和真实的物理主机一样正常的工作,实现 IP 地址,单独的域名,完整的 Internet 服务器的工作。其中关键一点就是,虚拟主机的主要技术是在同一操作系统,同一...
2018-11-08 14:40:48
584
原创 套接字 socket
1 socket 简介socket 是处于传输层之上封装的网络接口,方便应用层、会话层等使用。socket 的本意是“插口或插槽”,顾名思义,可以将 socket 想象成一根网线,一头插在客户端,一头插在服务端,然后进行通信,故客户端与服务端在通信之前必须要创建一个 socket。由于此 socket 对于 tcp/ip 各种协议通用,故 socket 必须提供各种选项,例如使用 IPv4 和...
2018-11-07 16:30:28
80
原创 汽车电子系统网络管理的简介
本文旨在从业务功能上介绍汽车电子系统中网络管理模块的功能,已达到对于网络管理模块的一个初步管理。1 网络管理的含义汽车系统中存在着多种 ECU 控制单元,这些 ECU 控制单元并不是孤立的,而是协同工作。既然各个 ECU 控制单元需要协同工作,那么它们之间就必须能够相互通信。目前各 ECU 之间通信的方式主要有 CAN、 Flexray等车载网络,还包括目前新兴的车载以太网。汽车电子系统通过车...
2018-11-05 10:05:14
304
原创 路由协议
1 如何配置路由路由器是一台网络设备,它有多张网卡。当一个入口的网络包送到路由器时,它会根据一个本地的转发信息库,来决定如何正确地转发流量,这个转发库就是常说的路由表。一张路由表中会有多条路由规则。每一条规则至少包含这三项信息:目的网络:这个包想去哪儿?出口设备:将包从哪个口转发出去?下一跳网关:下一个路由器的地址。通过 route 命令 和 ip route 命令都可以进行查询或...
2018-10-12 16:53:43
58
原创 网络诊断:ICMP、Ping、Traceroute
在工作和生活中,常常会遇到网络不通的情况,而机器明明就在那里,看着都好好的,就是网络不通。遇到类似的问题如何定位呢?1 ICMP 协议的格式要分析类似的问题,我们先需要了解一个协议,ICMP 协议,ICMP 全称 internet Control Message Protocol,就是互联网控制报文协议。网络包在异常复杂的网络环境中传输时,常常会遇到各种各样的问题。当遇到问题的时候,总不能“...
2018-10-11 19:03:19
191
原创 网络协议:从物理层到MAC层
1 对于几种网络设备的认识通常我们所说的几层设备中的层就表示此设备所处理的网络协议层的数量,例如:一层设备----主要代表有集线器(HUB),仅涉及物理层。二层设备----主要代表有交换机(switch),涉及物理层和MAC层三层设备----主要代表有路由器(router),涉及物理层、MAC层、网络层。其中,hub 和 switch 都用于局域网,而 router 可跨局域网。2...
2018-10-11 16:02:16
278
原创 软件设计文档书写规范
规范下软件文档的部分:业务流程:按如下大模块,主要体现交互流程 (黑线、黑字,上面的4个大模块可以蓝色底)框架设计:主要是此功能模块的整体软件框架,重点是此功能模块和其他各模块的交互接口/数据,(格式如下功能框无底色,黑边黑字)详细设计流程:此功能的详细设计流程,含异常处理流程 (格式如下:功能框无底色,黑边,黑字)...
2018-10-08 16:49:41
159
原创 priority_queue 优先级队列的使用
priority_queue 优先级队列是一个拥有权值概念的单向队列 queue,在这个队列中,所有元素是按优先级排列的(也可以认为queue是个按进入队列的先后做为优先级的优先级队列——先进入队列的元素优先权要高于后进入队列的元素)。注意:优先级对于相等优先级的元素保持了 queue 队列的基本特性:先进先出。#include <queue>#include <cst...
2018-10-06 17:37:49
149
原创 Linux 目标文件的格式
编译器用于为源程序文件产生对应的二进制代码和数据目标文件。链接程序用于对相关的所有目标文件进行组合处理,形成一个可被内核加载的目标文件(即可执行文件)。上述涉及的两种目标文件统一称为目标文件。本文主要分析目标文件的格式及其组成。并简要分析目标文件的链接过程。1 目标文件格式GNU gcc 或 gas 编译输出的目标模块文件和链接程序所生成的可执行文件都是用了 UNIX 传统的 a.out ...
2018-09-17 18:48:17
116
原创 硬盘镜像和软盘镜像中内容的查看方法
软盘镜像和硬盘镜像的制作软盘镜像和硬盘镜像均可以通过命令 bximage 来制作。注意完成后需要格式化。软盘镜像根据镜像的文件类型将文件挂载到 linux 下的文件夹,从而访问文件镜像中的内容。对于软盘镜像来说,软盘由于容量限制,软盘只能包含一个分区,即只能包含一个文件系统,故直接挂载软盘镜像就可以。$ sudo mount -t minix rootimage /mnt -o loo...
2018-09-13 17:26:54
405
原创 UCOS---上下文切换(Context Switching)
当 UCOS 决定运行另一个任务时,则需要保存当前任务的上下文,其中主要包括 CPU 相关寄存器,以及当前的任务的栈,并恢复新任务的上下文和重新开始执行任务。这个过程称为上下文切换。上下文切换增加了内存开销。CPU 的寄存器越多,内存开销越大。执行上下文切换的时间也主要是 CPU 寄存器的保存与恢复。本文我们主要借助于一个虚构的 CPU 来讨论上下文切换的一般过程。此虚构 CPU 包含 16 ...
2018-09-05 12:34:00
431
原创 ucos---Scheduling(调度)
调度器,也称分发器,是负责决定接下来运行哪个任务。UCOS 是一个基于优先级的抢占式内核。如我们所见,每个任务都根据其重要性赋予一个优先级别。任务的优先级别依赖于其具体应用场景,另外,UCOS 支持同一优先级多个任务。抢占意味着当事件发生,将响应的高优先级的任务切换为就绪状态,接着此任务立即获得 CPU的控制权。当前任务挂起,高优先级的新任务运行。1 抢占调度UCOS 处理事件发布有两种方式...
2018-09-04 19:40:26
265
原创 UCOS---临界区(Critical Sections)
一个临界代码也被称为临界区,是需要被当作一个整体对待的代码段。在 UCOS 中包含许多临界区代码段。如果一个 ISR(Interrupt Service Routine)或任务中存在临界区代码,则在执行临界区代码时需要禁止中断,以防止临界区代码的执行被中断。如果一个临界区仅仅存在于任务中,而不能存在于 ISR 中,则此临界区需要使用一个抢占锁(preemption lock)来保护。在 UCOS...
2018-09-04 09:36:43
431
原创 UCOS----时钟节拍源码分析
时钟节拍类似于人体心脏的跳动,人体依赖心脏的跳动将血液输入身体各个部位,支撑生命活动。时钟节拍的是操作系统的时基,操作系统依赖于时钟节拍推动 CPU 去执行指令。1 时钟节拍原理时钟节拍是系统以固定的频率产生中断(时基中断),并在中断处理与时间相关的事件,推动所有任务向前运行。时钟节拍需要依赖于硬件定时器,STM32 通常使用 systick 时钟作为 MCU 的内核定时器。2 系统时钟初始...
2018-08-21 11:21:34
94
原创 ASN.1简介
1 ASN.1 定义不同系统之间通信需要面对的一个基本问题是数据从发送端到接收端的高效转换。在 OSI(开发式系统互联参考模型) 参考模型,为了方便数据传输,数据类型和数据结构都表现为应用层的一个函数接口。在表示层完成数据到规定地可传输的二进制序列的转换。功能的分离使得应用层仅承担处理数据的内容和结构,而将数据表示的工作留给表示层。与这种分离机制相应地,我们提出一种数据和结构表示的抽象语法,这...
2018-08-16 15:16:39
592
原创 看《后来的我们》有感
作为天朝教育流水线生产出来的我,向来无比惧怕写作文,谈感想。因为更多的时候都是一些极其零碎的想法、简单的一个词或者一句话就完成表达。看电影看书更多的时候给自己的感觉是无感。《后来的我们》上映之初,也稍微注意到,知道是刘若英的处女作。但没有想着去看,后面妹子和她的闺蜜去看了。和妹子聊起,她说要推荐我去看看,我想着看电影一般也是和她一起去看,就说你都看了,那我就等着网上有了看看,后面又适逢妹子放假过...
2018-06-01 23:50:05
70
原创 动态主机配置协议(DHCP)和PXE(预启动执行环境)
当一个子网中主机增多时,需要人工手动去配置 ip 的话,工作量巨大,而且目前对于云计算、大数据大行其道,一个企业的数据中心动辄就几百台主机,显然主机配置等工作方式需要改变。DHCP 和 PXE 能够很好的解决此问题。1 DHCP1.1 概念DHCP是指子网内的主机 IP 动态分配,所有主机从一个 IP 池中申请空闲租用 IP,在租用结束后返还给 IP 池。1.2 DHCP的工作方式一台主...
2018-06-01 16:38:16
191
原创 c++11 新特性之保证稳定性和兼容性
1 C++11 的整体设计目标如下:使得 C++ 成为更好的适用于系统开发和库开发的语言;使得 C++ 成为更加易于教学的语言(语法更加一致化和简单化);保证语言的稳定性,以及和c++03 及 C语言的兼容性.2 C++11 相对于 C++98/03 在以下几方面明显增强:通过内存模型、线程、原子操作等支持本地并行编程;通过统一初始化表达式、auto、declytype、移动语义...
2018-05-28 15:30:24
233
原创 一次购物请求中网络协议工作过程
互联网缩短了人与人、人与物、物与物之间的距离,构建了其间的交流方式。不同个体之间交流需要通信通道,而网络协议就是构建此通道的基础。目前网络通用的协议是 TCP/IP 协议。TCP/IP 标准协议分为 7 层:物理层、数据链路层、IP层、传输层、会话层、表示层、应用层。但是在实际使用中通常将会话层、表示层合并到应用层。从而成为 5 层协议体系。下面将一一次购物请求来说明 TCP/IP 协议的工作过...
2018-05-27 08:38:41
112
原创 C++11 扩展 friend 关键字特性后对于单元测试的改进
简述所谓单元测试,就是针对于函数粒度的单元进行测试。由于 c++ 良好的封装性,这就导致c++ 单元测试向来是个比较令人纠结的选择:需要对于对象的私有成员进行单元测试,则必须具有私有成员的访问权限。这就引出两种方式:测试时更改被测试对象的成员的属性将测试对象设置为被测试对象的友元更改成员属性更改成员属性是利用 #define 的替换作用,将对象成员的可见权限关键字 private 替...
2018-05-19 10:13:48
85
原创 boost 线程管理
概要#include <boost/thread/thread.hpp>namespace boost{ class thread; void swap(thread& lhs,thread& rhs) noexcept; namespace this_thread { thread::id get_id() noexcept; ...
2018-05-03 19:58:45
255
原创 可调用对象归纳
首先需要了解一个 callable 概念,callable 故名就是可以调用的对象。在 c/c++ 中一共存在以下几种 callable 对象:1. 函数void func(){}显然函数名 func 是一个可调用对象2. 函数指针func_t func;上述的 func 指针也是一个可调用对象。3. 重载 () 操作符的类struct Callable{ public:...
2018-04-27 15:01:10
67
空空如也
git创建ssh密钥对不成功
2015-10-27
android studio编译无错误,运行时显示,但点击button不响应按键事件
2015-10-27
android studio中使用第三方模拟器Genymotion,新建项目编译不成功
2015-10-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人