自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (2)
  • 收藏
  • 关注

原创 使用Android-ndk编译安卓可执行程序

使用Android-ndk编译安卓可执行程序

2022-06-09 16:13:41 2605 1

原创 08 数据结构与算法之并查集(C语言实现)

8 森林与并查集并查集是用来解决联通问题的结构森林是并查集的别名,他俩指代的是同一种结构8.1 Introduce8.1.1 Quick-Find算法1、基于染色的思想,一开始所有点的颜色不同2、连接两个点的操作,可以看成将一种颜色的点染成另一种颜色3、如果两个点颜色一样,证明联通,否则不联通4、这种方法叫做并查集的:Quick-Find算法】合并操作流程:合并操作要遍历所有元素时间复杂度O(n)1、4与3连通:用3号点颜色标记4号点颜色(也可用4号标记3号,规则自定)

2022-05-23 23:15:00 313

原创 07 数据结构与算法之堆与优先级队列(C语言实现)

注:只给出C语言实现代码,涉及到的数据结构相关概念请自行阅读相关书籍或参考其他博文;简介堆与优先级队列的形式大概如下:堆是一种特殊的完全二叉树结构插入的时间复杂度O(logN), 整个堆的调整时间复杂度为O(NlogN)①优先级队列//可以用二叉树或用顺序结构(队列)实现#include <stdio.h>#include <stdlib.h>#include <time.h>#define swap(a,b){\ __typeof(a) .

2022-05-23 22:45:00 347

原创 06 数据结构与算法之哈希表(拉链法) (C语言实现)

注:只给出C语言实现代码,涉及到的数据结构相关概念请自行阅读相关书籍或参考其他博文;将哈希表理解为一个顺序表,顺序表里面存储的是一个链表(拉链法解决碰撞)注:(hash & 0x7FFFFFFF)的作用:让hash值一直保持为正。Because -1 % 10 == -1 which you certainly don’t want for indexing into an array. Forcing the sign bit to 0 avoids this problem.0.

2022-05-23 22:15:00 1454

原创 05 数据结构与算法之二叉排序树(建树 广义表 前中后序)(C语言实现)

注:只给出C语言实现代码,涉及到的数据结构相关概念请自行阅读相关书籍或参考其他博文;本文代码功能:给定整数建立二叉排序树,以广义表形式打印建树过程。建树完成后输出前中后序版。额外增加调试版帮助理解递归插入过程。①版本1(建树,广义表打印,前中后序)#include <stdio.h>#include <stdlib.h>#include <time.h>/*建立一个排序二叉树(二叉查找树)*以广义表形式打印树结构*/typedef struct.

2022-05-20 22:00:00 309

原创 04 数据结构与算法之栈(C语言实现)

①版本1(数据采用顺序表存储方法):#include <stdio.h>#include <stdlib.h>#include <time.h>typedef struct Stack { int *data; //连续存储空间的首地址 int top, capacity; //top栈顶位置, capacity栈容量} Stack;Stack *init_stack(int n) { Stack *s = (Stack *)mal

2022-05-19 22:15:00 208

原创 03 数据结构与算法之队列(C语言实现)

①版本1(数据采用顺序表存储方法):实现顺序存储版队列,即容量大小固定,包含入队、出队、查询队头元素等操作。#include <stdio.h>#include <stdlib.h>#include <time.h>/**** * [81, 78, 68, 45, 4 ] * | | * head * * * tail ** * |<------size--->| | * |<

2022-05-18 18:15:40 331

原创 02 数据结构与算法之线性表(带自动扩容功能)(C语言实现)

① 存储整型数据的顺序表(基础版)#include <stdio.h>#include <stdlib.h>#include <time.h>typedef struct Vector { int *data; int size, capacity;} Vector;Vector *init_vec(int n) { Vector *vec = (Vector *)malloc(sizeof(Vector)); vec-&g

2022-05-12 12:18:18 534

原创 01 数据结构与算法之单向链表(C语言实现)

链表基础概念请参考其他书籍或文章。本文只列出完整测试代码实现链表代码 头指针法(需要特判),采用虚头节点,节省特判操作。插入示例:while (ind--) p = p->next;node->next = p->next;p->next = node;代码执行图解完整代码#include <stdio.h>#include <stdlib.h>#include <time.h>//结构定义typedef struc.

2022-05-11 10:03:38 260

原创 RTSP协议详解

参考: 手撕RTSP协议系列Rtsp基本流程rtsp协议简介rtsp,英文全称 Real Time Streaming Protocol,RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议!协议主要规定定了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP体系结位于RTP和RTCP之上(RTCP用于控制传输,RTP用于数据传输),使用TCP或UDP完成数据传输!rtsp基本交互过程假设我们现在要向一个RTSP的sever发送请求获取数据,基本流程如下:OPTIO

2022-03-28 17:53:26 35244 4

原创 Ubuntu 18.04 安装googlepinyin 输入法

Ubuntu 18.04 安装googlepinyin 输入法步骤1:sudo apt install im-config步骤2:Terminal中执行im-config根据提示1.选择fcitx2.同时吧一些必要的包装上步骤3:执行如下命令安装输入法sudo apt install fcitx-googlepinyin...

2022-01-06 16:07:29 1019

原创 Ubuntu18.04安装gcc7.5.0 + gcc11.2.0

gcc7.5.0为Ubuntu18.04默认版本,默认已经安装好。未安装好请先自行参照其他教程将基本环境配置好再进行下述安装步骤下面为安装gcc11.2步骤采用源码安装方式步骤一:下载源码包gcc-11.2.0.tar.gz下载链接1 该链接不加速下载比较慢,可自行搜索国内镜像源下载。gcc-11.2.0.tar.gz下载链接2解压tar xvf gcc-11.1.0.tar.gz步骤二:安装依赖库cd gcc-11.2.0./contrib/download_prerequisit

2021-12-14 10:30:08 4056 1

原创 Linux 命令总结

记录用的比较多的Linux 命令总结,也是我们平时工作中使用率非常高的操作命令,命令有点多,不用全部背下来,不同方向常用的也就二三十个,其他的权当做检索。基本命令uname -m 显示机器的处理器架构uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件(SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息arch 显示机器的处理器架构uname -m

2021-12-09 09:36:57 324

原创 升级WSL1到WSL2

升级WSL1到WSL2本方法只适用已安装好WSL1版本的系统,如何安装WSL请查阅其他答案1、启用适用于 Linux 的 Windows 子系统以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell”> 单击右键 >“以管理员身份运行”),然后输入以下命令:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart2、检查运

2021-12-07 14:27:22 408

原创 Error: listen EACCES 0.0.0.0:444 node.js while listening on port 444/443

监听低于1024的端口号需要root权限。用如下方式执行程序sudo node server.js参考stackoverflowWhy are the first 1024 ports restricted to the root user only?

2021-12-02 20:36:56 295

原创 arm-linux-strip 与aarch64-linux-gnu-strip命令

linux环境下交叉编译后的文件a.out部署到嵌入式平台,其编译的可执行文件可能较大,可采用如下命令压缩可执行文件。32平台:arm-linux-strip a.out64平台:aarch64-linux-gnu-strip a.out

2021-12-01 16:45:09 2391

原创 编译问题:libavfilter.so: undefined reference to **

嵌入式平台编译应用程序,其依赖libjpeg库和ffmpeg库,编译出错。/Deps/lib/libavfilter.so: undefined reference to `avresample_open@LIBAVRESAMPLE_3'/Deps/lib/libavfilter.so: undefined reference to `avresample_alloc_context@LIBAVRESAMPLE_3'/Deps/lib/libavcodec.so: undefined referenc

2021-12-01 15:49:33 5743 1

原创 编译问题:error: cast from ‘Hy_BLOCK_T* {aka _Hy_BLOCK_T_*}’ to ‘int’ loses precision [-fpermissive]

…/Emd.Service.CapImageFlow/SharedMemory/SharedMemory.cpp:106:10: error: cast from ‘Hy_BLOCK_T* {aka Hy_BLOCK_T*}’ to ‘int’ loses precision [-fpermissive]if((int)data == -1)^~~~stackoverflow类似问题C环境下编译成功,但是在C++环境下编译时在自定义转行类型时编译失败。改用如下方式:if(*((int *)(&a

2021-12-01 14:35:03 573

原创 编译问题:error: unable to find string literal operator ‘operator““format’ with ‘const char [31]’

../Emd.Service.CapImageFlow/SharedMemory/../DebugAssint.h:43:84: error: unable to find string literal operator ‘operator""format’ with ‘const char [31]’, ‘long unsigned int’ arguments #define LOG_TRACE(format,...) fprintf(stdout,"[%s][TRACE][%ld %s:%d %s

2021-12-01 13:58:12 1381

原创 linux 中执行shell脚本的source 命令和 .命令的区别

#test.shsource ./test.sh #在当前shell中执行。. test.sh #在一个子shell中执行。#上面在执行一个普通程序并不会有什么不利影响,但是如果所执行程序中有配置临时的环境变量时,只有source执行才在当前shell界面生效,用. 执行可能配置的临时变量不生效...

2021-11-25 15:18:11 953

转载 网络编程之UDP简单示例

UDP编程函数recvfrom()、inet_pton()、sendto()UDP协议 user data protrol 用户数据协议特点:TCP: 面向连接 --> 一定双方连接上了才能进行通信!UDP: 面向非连接 --> 不需要连接就可以进行数据的收发,提高效率。UDP例子: 写信UDP实现过程例题: 客户端发送数据给服务器,使用UDP完成。服务器:(收信) Rose.c(1). 买一个信箱int fd = socket(AF_INET,SOCK_DGRAM,0

2021-09-30 11:28:39 1744

转载 网络编程之TCP简单示例

转载地址TCP网络编程关键函数:socket()、struct sockaddr_in、htons()、htonl()、socklen_t、bind()、listen()、accept()、recv()、connect()、send()传输层协议:TCP协议(打电话)面向于有连接的通信方式例题: 使用网络通信TCP协议,实现不同主机之间的通信主机A---主机BJack.c Rose.c核心代码 Rose.c 服务器创建未连接TCP套接字int fd = socket(AF_IN

2021-09-30 11:16:01 978

转载 I帧 P帧 B帧 DTS / PTS概念

帧帧是音视频中的一个非常重要的概念。简单来说,帧就是一个一个静态的图像,帧快速的变化,因为人眼的视觉暂留效应,就会有动图的感觉。当然,一般的视频为了控制大小和压缩率,会使用一定的帧压缩算法。每一帧不一定都能恢复出完整的图像。这也就是常说的 I 、B、P 帧的区别。I帧:I帧(Intra-coded picture, 帧内编码帧,常称为关键帧)包含一幅完整的图像信息,属于帧内编码图像,不含运动矢量,在解码时不需要参考其他帧图像。因此在I帧图像处可以切换频道,而不会导致图像丢失或无法解码。I帧图像用于阻止

2021-07-06 13:54:48 1030

转载 C10K C100K C1000K C10M select poll epoll

C10KC10K 和 C1000K 的首字母 C 是 Client 的缩写。C10K 就是单机同时处理 1 万个请求(并发连接 1 万)的问题,而 C1000K 也就是单机支持处理 100 万个请求(并发连接 100 万)的问题。I/O 的模型,在 C10K 以前,Linux 中网络处理都用同步阻塞的方式,也就是每个请求都分配一个进程或者线程。请求数只有 100 个时,这种方式自然没问题,但增加到 10000 个请求时,10000 个进程或线程的调度、上下文切换乃至它们占用的内存,都会成为瓶颈。I/O

2021-07-06 13:49:10 228

原创 Ubuntu 18.04单网卡多网段IP配置

ubuntu 18IP配置修改/ete/network/interface* 文件不能使其生效,需修改/etc/netplan/下的**.yaml文件。sudo vi /etc/netplan/01-network-manager-all.yaml# Let NetworkManager manage all devices on this systemnetwork: version: 2 renderer: NetworkManager ethernets: enp0s3:

2021-06-09 13:20:56 2091

原创 pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) - 1) 详解

发现很多文章都没有把pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) - 1) 详细计算过程写出来,字节专门计算了一边,附在文末。本例为man mmap中的原样实例程序,加上了一些额外的无关代码及打印输出信息 让总字节数超过一页大小sysconf(_SC_PAGE_SIZE)以方便查看调试信息#include <sys/mman.h>#include <sys/stat.h>#include <fcntl.h>#i

2021-05-21 20:21:26 1134 1

原创 C++ explicit关键字详解

转载 C++ explicit关键字详解首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明, 即默认为隐式声明 { public: char *_

2021-03-12 19:22:07 73

转载 析构函数、虚析构函数、纯虚析构函数

我们知道对象在结束其生命周期之前,都会调用析构函数以完成必要的清理工作;派生类调用的析构函数顺序是“先子类,后基类”; 这篇文章用于总结当析构函数是普通析构函数、虚析构函数、纯虚析构函数时,我们使用delete运算符删除一个指针对象时,析构函数会有什么情况发生;普通析构函数CBase是基类,CDerive是其子类,类源码代码如下:class CBase{public: CBase(){} //基类析构函数 ~CBase(){ cout << "CBase Des

2021-03-12 19:17:15 1110

转载 常用的html代码

常用的html代码 加粗 加亮 字型加大 变色1)加入连接:<a href=“所要连接的相关地址”>写上你想写的字</a>2)在新窗口打开连接:<a href=“相关地址” target="_blank">写上要写的字</a>3)移动字体(走马灯):<marquee>写上你想写的字</marquee>4)帖子背景音乐:<bgsound=“背景音乐地址” loop=infinite>5)字体加粗:<b>写

2020-12-08 15:31:11 1103

转载 C++中指针和引用的区别

1.指针和引用的定义和性质区别:(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:int a=1;int *p=&a;int a=1;int &b=a;上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。而下面2句定义了一个整形变量a和这个整形a的引用b,事实上a和b是同一个东西,在内存占有同一个存储单元。(2)可以有const指针

2020-12-05 10:43:21 186

转载 Markdown矩阵及公式语法编辑

Markdown矩阵及公式语法编辑详见链接:https://cloud.tencent.com/developer/article/1402840

2020-10-17 11:47:11 745

原创 Oracle VitualBox配置新建虚拟机与建盘

准备工作:若采用已有的vdi文件来生成系统,建议先需先修改拷贝来的vdi的 UUID号。新建 linux机选择从已有的虚拟机创建基本系统选项挂载库盘共享文件夹双向复制网络开启新增盘:原理:由于往往公司内部会给一个通用的系统盘。但缺乏数据盘。故需自己新建一个盘。盘大小自己选,建议40G到50G.完成后。剩下的就是如何在linux系统中,格式化与mount 的问题了...

2020-09-29 09:40:57 226

原创 Linux共享文件夹之Samba的安装与配置

Linux共享文件夹之Samba的安装与配置概述Linux共享文件夹:Samba的安装与配置我们知道Windows系统之间可以通过共享文件夹实现文件共享访问。那么Linux系统如何共享文件给Windows系统?比较常用的就是通过Samba软件包实现。如何在Linux系统上安装和配置Samba?网上有很多版本,试了很多次就是不成功,以下给出的方法亲测有效,在此把每一步写清楚,方便以后自己查看。工具LinuxSamba步骤安装Samba软件包sudo apt-get install sa

2020-09-29 09:29:09 442

空空如也

空空如也

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

TA关注的人

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