自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 1、全局变量定义在头文件中有什么问题

会出现重复定义,编译不过

2021-07-18 19:42:22 735

原创 linux总结4:Linux磁盘I/O

文件系统是对存储设备上的文件,进行组织管理的一种机制。而 Linux 在各种文件系统实现上,又抽象了一层虚拟文件系统 VFS,它定义了一组,所有文件系统都支持的,数据结构和标准接口。 这样,对应用程序来说,只需要跟 VFS 提供的统一接口交互,而不需要关注文件系统的具体实现;对具体的文件系统来说,只需要按照 VFS 的标准,就可以无缝支持各种应用程序。VFS 内部又通过目录项、索引节点、逻辑块以及超级块等数据结构,来管理文件。目录项,记录了文件的名字,以及文件与其他目录项之间的目录关系。...

2020-11-08 17:10:00 332

原创 linux总结3:文件系统I/O

把文件系统挂载到挂载点后,你就能通过挂载点,再去访问它管理的文件了。VFS 提供了一组标准的文件访问接口。这些接口以系统调用的方式,提供给应用程序使用。就拿 cat 命令来说,它首先调用 open() ,打开一个文件;然后调用 read() ,读取文件的内容;最后再调用 write() ,把文件内容输出到控制台的标准输出中。 文件读写方式的各种差异,导致 I/O 的分类多种多样。最常见的有,缓冲与非缓冲 I/O、直接与非直接 I/O、阻塞与非阻塞 I/O、同步与异步 I/O 等。 接下...

2020-11-08 14:45:51 213

转载 RTP/AVP & RTP/AVP/TCP总结

https://www.jianshu.com/p/7b9793eb2f4e 转载

2020-07-01 09:36:21 885

转载 I帧和IDR帧区别(转载)

I帧和IDR帧的区别: IDR帧属于I帧。解码器收到IDR frame时,将所有的参考帧队列丢弃(用x264_reference_reset函数实现——在encoder.c文件中)。这点是所有I帧共有的特性,但是收到IDR帧时,解码器另外需要做的工作就是:把所有的PPS和SPS参数进行更新。由此可见,在编码器端,每发一个IDR,就相应地发一个PPS&SPS_nal_unit这是网上搜索到的一个答案,有一定参考价值吧。...

2020-06-21 19:23:54 2806

转载 accept和select的区别

参考:https://blog.csdn.net/lsgqjh/article/details/65629609select:查看指定fd_set中socket状态,如果fd_set中有套接字准备就绪(触发(读、写或执行)),则会返回,返回值为触发的套接字个数accept:经过创建套接字socket()绑定bind()以及listen()之后,将监听socket和客户端socket建立一个全新连接,并返回client的socket信息;判断是否有客户端发起链接请求, 一般用select(),.

2020-06-07 22:28:06 2385

转载 面試1:Linux网络编程——select、poll和epoll(重點select和epoll对比)

https://blog.csdn.net/lianghe_work/article/details/46534029小哥整理的不错,对一些基础的东西总结的比较全面。一、回顾前面的selectselect优点:目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点select缺点:1.每次调用 select(),都需要把 fd 集合从用户态拷贝到内核态,这个开销在 fd...

2020-03-23 09:09:15 288

转载 C++_虚函数详解(你肯定懂了)

前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不...

2020-01-01 11:53:38 814

翻译 ONVIF协议Profile A/Q/G/C/S

ONVIF协议Profile A/Q/G/C/SONVIF Profile A涵盖了常见的例行门禁控制功能,适用于负责授予和撤销员工凭证、创建和更新计划表,以及对系统内门禁控制权限进行更改的安保人员、接待员或人力资源专员等用户。强化用户端的功能性和系统管理功能,从而实现门禁控制市场的互联互通ONVIF Profile Q为系统集成商和终端用户提供创新功能,通过简易安装机制和基础设备配置,实现系统与...

2019-10-14 14:48:21 1257

转载 Linux卷管理详解--PV(物理卷)--VG(卷组)--LV(逻辑卷)--PE(基本单元)

一、逻辑盘卷管理(LVM,Logical Volume Manager) 完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。那么我们可以通过逻辑盘卷管理(LVM,Logical Volume Manager)的方式来非常完美的实现这一功能。 LVM是逻辑盘卷管理(Logical Volume Manage...

2019-06-04 20:36:01 1026

转载 RAID磁盘阵列、热备盘的浅显整理

简介 RAID是英文Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。 组成磁盘阵列的不同方式称为RAID级别(RAID Levels)。在用户看起来,组...

2019-06-04 19:19:56 2820

转载 SAN和NAS、ISCSI存储有什么区别,SAN和NAS设备哪个更好?

实际上SAN、NAS、DAS、FC、ISCSI、FC-SAN、IP-SAN等并不是同一类别的概念。SCSI、FC、NAS、ISCSI等概念指的是存储设备类型,DAS、NAS、SAN等指的是存储系统的网络架构。大家常提到的、主流的存储系统网络架构有DAS、NAS、SAN三种网络结构。其中SAN网络环境中,因采用存储设备类型的不同又可以分为FC-SAN(采用光纤通道存储产品)和IP-S...

2019-06-04 18:51:07 8668

原创 UNIX高级编程总结-----进程环境

1、进程的终止方式 通常情况下,进程有八种终止方式(5种正常终止 + 3种异常终止) 正常终止: (1)main 的 正常 return (2)调用 exit 退出 (3)调用 _exit 和 _Exit (4)最后一个线程从启动历程返回 (5)最后一个线程调用pthread_exit退出...

2019-05-24 21:29:27 142

转载 C语言_GCC -O 优化等级详解

GCC提供选项控制代码的优化等级:这些选项可以实现不同程度的优化。没有任何优化选项的话,编译时的目标是降低编译成本,并使调试产生预期的结果。语句是独立的:如果你使程序停止在语句之间设置的断点处,你可以改变任何变量的值或者改变程序计数器的值使程序执行任意函数中的语句并得到源代码中期望的结果。打开优化标志使编译器尝试以编译时间和可能的调试程序的能力为代价来改进性能和/或代码大小。编译器...

2019-05-24 20:50:57 2198

原创 UNIX高级编程总结-----标准I/O库 (二 行IO、二进制IO、格式化IO、定位流、内存流)

上一篇五、每次一行的IO 上一篇总结到了标准IO库中,单个字符的IO操作。紧接上篇,Unix中提供了两个 以行为单位操作的IO:#include<stdio.h>char *fgets(char *restrict buf, int n,FILE* restrict fp);char *gets(char *buf); ...

2019-05-24 19:33:31 220

转载 在Linux中设置umask值以及umask函数

一、umask命令 umask值用于设置用户在创建文件时的默认权限,当我们在系统中创建目录或文件时,目录或文件所具有的默认权限就是由umask值决定的。 对于root用户,系统默认的umask值是0022;对于普通用户,系统默认的umask值是0002。执行umask命令可以查看当前用户的umask值。[root@localhost ~]#umask0...

2019-05-24 13:24:03 2834

原创 UNIX高级编程总结-----进程间通信(XSI IPC 总述)

在 XSI IPC 中,有三种IPC:消息队列、信号量 以及 共享内存,他们之间有许多相似之处。 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。1、标识符 和 ...

2019-05-20 17:16:27 314

原创 UNIX高级编程总结-----进程间通信(FIFO---有名管道)

1、简介 对于普通的未命名pipe,两个不相关的进程是无法通信的。但是对于命名通道FIFO而言,即便是两个不相关的进程也可以实现进程间通信。2、操作 FIFO FIFO在文件系统中表现为一个文件,大部分的系统文件调用都可以用在FIFO上面,比如:read,open,write,close,unlink,stat等函数。但是seek等函数不能对FIFO...

2019-05-20 17:14:13 268

原创 UNIX高级编程总结-----进程间通信(管道)

管道是UNIX 系统中比较古老的一种,他有两个比较大的局限性(缺点)。 (1)历史上的通道都是半双工的(即数据只能往一个方向流)。某些系统是全双工的,但是由于大多数系统都是半双工的,为了提高可移植性,应该将通道视作半双工去使用。 (2)管道的只能使用在有公共祖先的进程之间。一般情况下,一个进程由进程创建,在调用fork之后,这个管道就能在父子进程...

2019-05-16 15:20:16 272

转载 linux网络编程:多播(组播)编程

什么是多播 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途。 多播,也称为“组播”,将局域网中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数...

2019-05-13 13:53:30 389

转载 IP地址的分类及范围

IP地址的分类及范围详解:A、B、C、D、E五类是如何划分的? 大家都知道现在的互联网使用的是32位地址,IPv6虽然也说了好些年,但大家都习惯接受IPv4的用法说法。IP以点分十进制表示,如172.16.0.0。地址格式为:IP地址=网络地址+主机地址 或 IP地址=主机地址+子网地址+主机地址。IP地址类型 最初设计互联网络时,为了便于寻址以及层次化构造网络...

2019-05-13 11:41:00 23340

转载 WCF-Discovery的协议基础:WS-Discovery

我们传统的服务调用的模式都是这样的:客户端在设计的时候预先知道目标服务的地址,并基于这个地址创建终结点对服务进行调用。而我们即将介绍的新特性是你在预先不知道目标服务的情况下,可以动态的探测可用的服务并调用之。就像我们的无线网卡可以动态的获取周围可用的Wifi网络一样。 服务发现解决了客户端和服务端之间的依赖。允许服务的提供者可用动态的改变它的地址,也是新的服务可以很容易的被注册并...

2019-05-11 17:20:33 1189

转载 linux下进程的实际用户ID(有效组)和有效用户ID(有效组ID)

实际用户ID(实际组ID):标识当前用户(所属组)是谁,当用户登陆时取自口令文件。  有效用户ID(有效组ID):用来决定我们(当前进程)对文件的访问权(即实际该进程的是以那个用户运行的)。  一般情况下,进程的有效用户ID等于进程的实际用户ID,进程的有效用户组ID等于进程的实际用户组ID。  但是当可执行程序文件的文件模式(st_mode)中设置了“设置-用户-ID(set_use...

2019-05-07 17:20:01 1813

原创 H264的基本原理(三)------ H264结构与码流

上一篇:H264的基本原理(二)------ H264编码原理1、H264的结构图2、H264的编码分层 H.264原始码流(裸流)是由一个接一个NALU组成,它的功能分为两层,VCL(视频编码层)和 NAL(网络提取层). (1)NAL层 (视频数据网络抽象层) 因为H264最终还是要在网络上进行传输,在传输的时候,网络包的最大传输...

2019-05-06 13:48:19 2699 1

原创 H264的基本原理(一)------视频的基本知识

前几天在慕课网上看到了一个移动端音视频入门的视频,讲到H264编解码,方面的知识,故做一下笔记总结。基础概念理解:1、经过压缩后的帧分为:I帧,P帧和B帧:I帧:关键帧,采用帧内压缩技术。你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面) P帧:向前参考帧,在压缩时,只参考前面已经处理的帧。采用帧音压缩技术。P帧表示的是这一帧跟...

2019-05-06 11:29:04 3987 3

转载 H264的基本原理(二)------ H264编码原理

上一篇:H264的基本原理(一)------视频的基本知识1、H264的压缩技术H264压缩技术主要采用了以下几种方法对视频数据进行压缩。包括:帧内预测压缩,解决的是空域数据冗余问题。该帧中的数据,比如:宽、高、颜色、光亮等,有一些人眼不敏感的,可以删除掉的,这称之为空域冗余数据。 帧间预测压缩(运动估计与补偿),解决的是时域数据冗余问题。比如:一个摄像头获得了许多帧的数据,帧间的相...

2019-05-06 11:27:53 5816 1

转载 RTSP流媒体数据传输的两种方式(TCP和UDP)

RTP(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作。其目的是提供时间信息和实现流同步。但RTP通常使用UDP来传送数据。但RTP也可以在TCP或ATM等其他协议之上工作。当应用程序开始一个RTP会话时将使用两个端口:一个给RTP一个给 RTCP。RTP本身并不能为接顺序传送数据包提...

2019-05-05 16:28:48 3018

原创 UNIX高级编程总结-----文件I/O (二)

上一篇九、文件共享 内核使用了3种数据结构表示打开的文件,他们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响。以下是书中总结的三个部分: 如果说,两个单独的进程各自打开了同一个文件,其关系如下图: 由图3-8可以看出,两个进程打开同一个文件,他们各自有自己的文件表项,但是其v节点指向的是同一个v节点表项。之所以...

2019-05-04 17:22:40 143

原创 UNIX高级编程总结-----文件I/O (练习题)

内核中几乎所有的IO都会经过内核的块缓冲区。所以,所谓的“不带缓冲的IO”,是指在用户层的进程对读写不进行自动的缓冲。 fd1、fd2 和 fd3 指向的是同一个v节点表,fd1 和 fd2 指向的同一个文件表项。F_SETFL影响的是fd1指向的文件表项中的文件状态标志。F_SETFD 作用于fd1 只对fd1 文件描述符状态。 ...

2019-05-04 17:22:30 261

原创 UNIX高级编程总结-----文件I/O (一)

一、文件描述符 1、对于内核而言,所有打开的文件都通过文件描述符来表示。文件描述符是一个非负整数,当打开或者创建一个文件时,内核会向进程返回一个文件描述符。当对文件进行操作时,会使用到文件描述符。UNIX系统shell把0与标准输入,1与标准输出,2与标准错误相关联。所以在unix中文件描述符0,1,2被标准化,为提高可读性,定义了三个宏STDIN_FILENO、STDOUT_F...

2019-05-03 16:10:22 242

原创 UNIX高级编程总结-----标准I/O库 (三)

九、实现细节

2019-04-27 16:40:52 105

转载 linux Shell的重定向

在网上搜索一圈,清楚明了的解释还是http://www.runoob.com/linux/linux-shell-io-redirections.html结合理论,整理例子如下:1、command > file ( >> 不覆盖,追加)@debian69:~/algoAndSturct$ ls -l > test@debian69:~/alg...

2019-04-26 11:19:56 107

原创 C语言常见的小算法 一(斐波那契数列、回文、质数检查、金字塔)

1、斐波那契数列 -----1 1 2 3 5 8 13用常见的两种方式实现(非递归 和 递归):#include<stdio.h>/*递归实现*/int Fibonacci_recursion(int num){ if(num <= 2) { return 1; } return ...

2019-04-25 19:31:52 850

原创 UNIX高级编程总结-----标准I/O库 (一 流、缓冲、打开流、读写流)

一、流 和 FILE对象 之前在文件I/O中提到的函数,都是围绕文件描述符的,当打开一个文件时,返回的是一个文件描述符,然后对该文件描述符进行后续的I/O操作。而对于标准I/O库,他们的操作是围绕着 流进行的。当用标准I/O库打开或创建一个文件时,我们就使一个流与一个文件相关联。 在标准IO流中预定义了3个文件指针,stdin(标准输入)、stdout(标准输...

2019-04-25 11:13:20 263

原创 C语言关键字 restrict(一)

概念:  restrict,C语言中的一种类型限定符(Type Qualifiers),用于告诉编译器,对象已经被指针所引用,不能通过除该指针外所有其他直接或间接的方式修改该对象的内容。渊源:  restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不...

2019-04-24 17:53:52 5056

原创 linux高级IO-----readv、writev 以及 struct iovec

readv和writev函数用于在一次函数调用中读、写多个非连续缓冲区。有时也将这两个函数称为散布读(scatter read)和聚集写(gather write)。#include<sys/uio.h>struct iovec { /* Starting address (内存起始地址)*/ void *iov_base; ...

2019-04-22 16:01:27 1285

转载 跟我一起写 Makefile(七 函数)陈皓

使用函数————在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。一、函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:$(<function> <arguments>)或是...

2019-04-18 13:29:44 106

转载 跟我一起写 Makefile (六 条件判断)陈皓

使用条件判断—————— 使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。一、示例下面的例子,判断$(CC)变量是否“gcc”,如果是的话,则使用GNU函数编译目标。libs_for_gcc = -lgnunormal_libs =foo: $(objects)...

2019-04-18 13:14:51 104

转载 跟我一起写 Makefile (五 变量)陈皓

在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是Makefile的其它部分中。 变量的命名字可以包含字符、数字,下划线(可以是数...

2019-04-18 10:47:25 144

原创 算法_监视哨兵能让顺序查找时间减半! 真的吗?

在严奶奶版的《数据结构》一书中, 严奶奶引用了别的书的观点: 在顺序查找时(设表长>=1000), 引入监视哨兵, 可以减少几乎一半的查询时间。 理论上,引入监视哨兵, 的确可以优化时间。来测试一下, 看看引入监视哨兵的前后对比:#include<stdio.h>#include<time.h>#define TIMES 10000#d...

2019-04-18 09:09:18 633

空空如也

空空如也

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

TA关注的人

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