- 博客(88)
- 资源 (10)
- 收藏
- 关注
原创 排序算法
class Sort {public: void PrintSort(vector<int>vec,string s) { cout<<s<<endl; for(int i=0;i<vec.size();i++) { cout<<vec[i]<<" "; } cout<<endl; } void BubblingSo.
2020-05-13 22:23:45
230
原创 Linux内核设计与实现读书笔记一:操作系统与内核
1、Unix强大的原因 a:Unix很简洁,仅仅提供几百个系统调用接口; b:所有东西都被看成文件对待;这种抽象使得对数据和对设备都通过一套系统调用来操作; c:使用C语言编写,易于移植; d:进程创建迅速; e:简单稳定的进程间通信元语。2、操作系统 操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分(内核、设备驱动...
2019-04-28 15:37:55
387
原创 CDN技术详解之集群服务与负载均衡技术
大纲集群技术基本概念集群分类集群系统结构CDN负载均衡集群Cache集群协同交互方法基本概念ICPHTCPCache DigestCache Pre-fillingCARP优势负载均衡技术的实现含义负载均衡关键技术负载均衡调度算法会...
2019-03-06 20:39:54
491
原创 CDN技术详解之内容缓存原理及实现
背景工作方式和设计要求客户端与服务器交互过程中的网元Web Cache 代理模式正向代理反向代理透明代理Web Cache实现基础Web的工作机制HTTP协议缓存技术Web Cache技术实现关键点参考CDN技术详解...
2019-03-01 11:27:25
3049
原创 CDN技术详解之引言
影响互联网传输因素基本工作过程DNS解析,最终指向CDN专用的DNS服务器。 返回CDN全局负载均衡设备的IP地址给用户。 用户发送请求到CDN全局负载均衡设备。 根据用户的IP地址已经请求内容,选择合适的区域负载设备并用户的请求转发给它。 区域负载设备会选择一台合适的CDN缓存服务器,并返回IP地址。 CDN缓存服务器IP地址返回给用户。 用户向CDN缓存服务器发送请...
2019-02-25 20:30:25
271
原创 win10+Ubuntu16.04双系统安装以及可能的问题
先说说遇到的问题:1、UltraISO版本过低导致打开Ubuntu16.04时,只有一个EFI文件,这时候,换一个版本高一点的就OK。2、当安装完成后,发现没有Ubuntu的启动项,直接进入win10,此时需要将刚才Ubuntu的启动U盘插入电脑,按安装Ubuntu同样的步骤,选择不安装进入Ubuntu,不安装Ubuntu选项。然后$ sudo su# sudo add-apt-r...
2018-12-09 11:27:11
185
原创 Ubuntu上配置Samba与window上共享文件夹
1、Ubuntu上安装配置Sambasudo apt-get install samba 配置:[share] path = /home/ros/shareForlder //要共享的文件夹路径 valid users = ros //用户名 available = yes browseable = yes writable =...
2018-12-07 18:32:22
207
原创 分布式系统里得数据分片
数据分片考虑得问题 ① 具体如何划分原始数据集? ② 当原问题的规模变大的时候,能否通过增加节点来动态适应? ③ 当某个节点故障的时候,能否将该节点上的任务均衡的分摊到其他节点? ④ 对于可修改的数据(比如数据库数据),如果某节点数据量变大,能否以及如何将部分数据迁移到其他负载较小的节点, 及达到动态均衡的效果? ⑤ 元数据的管理...
2018-11-30 21:43:31
326
原创 音视频---SDL安装
执行这两个命令就可以了sudo apt-get install libsdl2-2.0sudo apt-get install libsdl2-dev引用SDL2库编译自己的程序gcc -o myprogram myprogram.c `sdl2-config --cflags --libs`
2018-11-29 21:16:38
169
原创 FFmpeg解码视频并保存为图片
1、多媒体文件的读取 一个多媒体文件包含有多个流(视频流 video stream,音频流 audio stream,字幕等);流是一种抽象的概念,表示一连串的数据元素; 流中的数据元素称为帧Frame。也就是说多媒体文件中,主要有两种数据:流Stream 及其数据元素 帧Frame,在FFmpeg自然有与这两种数据相对应的抽象:AVStream和AVPacket。2、FFm...
2018-11-27 21:00:57
2419
3
原创 ffmpeg安装及在QtCreator使用
1、安装参考 https://blog.youkuaiyun.com/qq_38631503/article/details/800071282、打开QtCreator,新建工程为纯C++工程3、将安装路径里的include和lib拷贝到工程文件中的ffmepg文件夹中4、Qt Creator中修改工程配置文件 testFFmpeg.pro:unix:!macx: LIBS +...
2018-11-27 11:34:51
1056
原创 音视频基础
1、带宽:每秒传输的数据量(bit/s)2、H.264的优势低码率(Low Bit Rate):和MPEG2和MPEG4 ASP等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3。 高质量的图像:H.264能提供连续、流畅的高质量图像(DVD质量)。 容错能力强:H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工...
2018-11-27 10:47:26
148
原创 x264在Ubuntu上编译步骤
1、下载资源git clone http://git.videolan.org/git/x264.git2、进入目录直接运行./configure如果出现nasm最低版本,则在nasm下载,得到nasm,解压,进入nasm目录:./configure --prefix=/usr makesudo make install3、安装打包makemake i...
2018-11-22 17:05:28
1322
原创 C/C++积累
1、C库函数:calloc()C 库函数 void *calloc(size_t nitems, size_t size) 分配所需的内存空间,并返回一个指向它的指针。malloc 和 calloc 之间的不同点是,malloc 不会设置内存为零,而 calloc 会设置分配的内存为零。void *calloc(size_t nitems, size_t size)nitems --...
2018-11-22 09:02:05
141
转载 YUV和RGB32
YUV 4:4:4采样,每一个Y对应一组UV分量。 YUV 4:2:2采样,每两个Y共用一组UV分量。 YUV 4:2:0采样,每四个Y共用一组UV分量。YUV它将亮度信息(Y)与色彩信息(UV)分离由存储模式可知,将Y、U、V分量分别打包,依次存储。其每一个像素点的YUV数据提取遵循YUV420格式的提取方式,即4个Y分量共用一 组UV。 RGB与YUV的转化公式...
2018-11-21 11:02:50
1032
转载 V4L学习资料链接
v4l2的学习建议和流程解析1、调用V4L的流程打开设备-> 检查和设置设备属性-> 设置帧格式-> 设置一种输入输出方法(缓冲 区管理)-> 循环获取数据-> 关闭设备。 2、检查和设置设备属性struct v4l2_capability capability;int ret = ioctl(fd, VIDIOC_QUERYCAP, &...
2018-11-20 09:45:09
294
转载 流媒体格式---FLV(flash video)
目前主流的视频网站如优酷网,土豆网,乐视网等网站无一例外地使用了FLV格式。1、格式FLV由Flv Header和Flv Body组成,而Flv Body由一系列的 Tag组成,每一个Tag前面都有一个Previous Tag Size表示前一个Tag的长度。Tag的类型有音频、视频、Script三种。对于普通的音视频来说,Tag header的长度是11 字节,包含:(1)t...
2018-11-18 16:38:18
1236
转载 getopt----解析main函数中的参数
转自------ Linux下getopt()函数的简单使用 "a:b:cd::e",这就是一个选项字符串。对应到命令行就是-a ,-b ,-c ,-d, -e 。冒号又是什么呢? 冒号表示参数,一个冒号就表示这个选项后面必须带有参数(没有带参数会报错哦),但是这个参数可以和选项连在一起写,也可以用空格隔开,比如-a123 和-a 123(中间有空格) 都表示123是-a的参数;...
2018-11-12 11:10:06
293
原创 读Muduo源码笔记---8(定时器)
muduo的定时器由三个类实现,TimerId、Timer、TimerQueue。1、采用timer_create函数得到定时器对象 timerfd_create把时间变成了一个文件描述符,该“文件”在定时器超时的那一刻变得可读,这样就能很方便的融入到select/poll框架中,用统一的方式来处理I/O和超时事件,这正是Reactor模式的长处。2、Timer类 ...
2018-11-01 09:10:36
274
原创 读Muduo源码笔记---7(Protobuf)
1、概念 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。 将 程序数据转化成能被存储并传输的格式的过程被称为“序列化”(Serialization),而它的逆过程则可被称为“反序列化” (Dese...
2018-10-30 15:06:55
720
1
原创 读Muduo源码笔记---6(Buffer:应用层缓冲区)
1、存在的原因TCP是一个无边界的字节流协议,接收方必须要处理“收到的数据尚不构成一条完整的消息”和“一次收到两条消息的数据”等等情况。这些情况被称为粘包问题。考虑一下场景:发送方发送两条5k字节的数据,接收方收到的情况可能是如下情况:分两次收,一次5k,第二次5k 分两次收,一次2k,第二次8k 一次收10k 其他的可能因此,必须在应用层对粘包问题进行处理,需要在应用层定义一个缓...
2018-10-24 10:43:35
343
原创 读Muduo源码笔记---5(NTP协议)
1、概念NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。2、原理 客户机首先向服务器发送一个NTP 包,其中包含了该包离开客户机的时间戳T1,当服务器接收到该包时,依次填入包到达的时间戳T2、包离开的时间戳T3,然后立即把包返回给客户机。客户机在接收到响应包时,记录包返回的时间戳T4。客户机用上述4个时间参数就能够计算出...
2018-10-22 14:46:02
258
原创 读Muduo源码笔记---4(TCP自连接)
1、问题原因 svr挂掉了,端口释放了,cli去connect这个目的端口的时候正好选择了这个端口作为源端口,此时端口没人用,使用是合法的。于是自连接形成了。 就是出现源ip和源端口通目的ip和目的端口完全相同的情况,也就是在服务端没有启动,客户端也可以连接成功,但会造成服务端无法启动。2、tcp连接分析 要建立一个tcp连接,首先svr要在b端口上listen,cli再使用...
2018-10-22 10:26:50
345
原创 读Muduo源码笔记---3(ttcp分析)
1、ttcp作用:检测TCP吞吐量2、ttcp协议:3、一次写一定长度的数据static int write_n(int sockfd, const void* buf, int length){ int written = 0; while (written < length) { ssize_t nw = ::write(sockfd, stati...
2018-10-19 15:52:54
846
原创 读Muduo源码笔记---2
1、线程共享地址空间,从而可以高效地共享数据。2、非阻塞IO+IO多路复用模型 while(!done) { int timeout_ms=max(1000,getNextTimedCallback()); int retval=::poll(fds,nfds,timeout_ms); if(retval<0) { /...
2018-10-18 09:09:41
184
原创 读Muduo源码笔记---1
对象销毁时出现的竞态条件:析构对象时,其他线程是否正在执行该对象的成员函数; 在执行成员函数期间,对象不会被其他线程析构; 在调用成员函数之前,如何确定对象还活着。线程安全的类:多线程访问时,变现出正确的行为; 无论操作系统如何调度这些线程,以及线程的执行顺序; 调用端代码不需要额外的同步。简单的线程安全类class Counter{ public: Cou...
2018-10-16 17:32:13
271
原创 TCP/IP学习笔记之网际层
点击打开链接大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。1、IP首部总长度字段是指整个IP数据报的长度,以字节为单位。 IP数据报最长可达65535字节 。TTL生存时间字段设置了数据报可以经过的最多路由器数。由源主机设置,经过一个处理它的路由器时减一,当为0时数据报被丢弃,并发送ICMP报文通知源主机。...
2018-05-02 09:44:33
217
原创 TCP/IP学习笔记之链路层
1、作用链路层主要有三个目的: (1)为I P模块发送和接收I P数据报;(2)为A R P模块发送 A R P请求和接收 A R P应答;(3)为R A R P发送R A R P请求和接收R A R P应答。 2、帧格式、3、环回接口 IP:127.0.0.1 处理发送给自己的数据报以允许运行在同一台主机上的客户程序和服务器程序通TCP/IP进行通信。一个传给环回接口的IP数据报不能在任...
2018-04-28 08:56:44
188
转载 四种类型转换(cast)的关键字 详解 及 代码
点击打开链接reinterpret_cast用在任意指针(或引用)类型之间的转换;以及指针与足够大的整数类型之间的转换;从整数类型(包括枚举类型)到指针类型,无视大小。...
2018-04-24 08:29:25
973
转载 Visual Studio中检测内存泄漏的方法
Visual Studio中检测内存泄漏的方法#include <iostream> //可以定位到发生内存泄露 所在的文件和具体那一行,用于检测 malloc 分配的内存 #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> //把分配内存的信息保存...
2018-04-23 21:36:23
728
原创 Shell学习之练习
1、简单计算器#! /bin/sh while [ : ];do read a op b case $op in "+") c=$[a+b];; "-") c=$[a-b];; "*") c=$[a*b];; "/") c=$[a/b];; *) c=0;; esac echo "$a $op $b = $c"...
2018-04-22 15:41:18
513
原创 Shell学习之正则表达式-----find
find常用参数:find: 1. -name find ./ -name *.mp3 2. -type find ./ -type f/d/p/c/b/s/l 3. -size 默认单位:512B-->0.5K-->一个扇区大小 -M:不能m find /home/itcast -size +3M -size -7M -k:不能K find /home/itcast ...
2018-04-22 14:04:49
2604
原创 Shell学习之正则表达式-----grep
grep1. 作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符...
2018-04-22 13:50:57
171
原创 正则表达式之C程序中使用正则
POSIX规定了正则表达式的C语言库函数,详见regex(3)。我们已经学习了很多C语言库函数的用法,读者应该具备自己看懂man手册的能力了。本章介绍了正则表达式在grep、sed、awk中的用法,学习要能够举一反三,请读者根据regex(3)自己总结正则表达式在C语言中的用法,写一些简单的程序,例如验证用户输入的IP地址或email地址格式是否正确。C语言处理正则表达式常用的函数有regcomp...
2018-04-22 13:19:32
511
httpDNS思维导图
2019-01-10
DNS思维导图
2019-01-10
x264安装资源
2018-11-22
OSG+Qt编译说明
2017-12-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人