自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(152)
  • 资源 (12)
  • 收藏
  • 关注

转载 malloc崩溃

malloc崩溃

2023-02-24 17:37:50 3811

原创 264 POC

h264 poc

2023-01-03 15:06:29 191

原创 gcc添加-fsanitize=address编译选项

内存泄露

2022-06-28 09:50:01 2412

转载 Linux丢包故障的解决与思路

前言​ 本文为大部分内容是转载:原文地址,和之前一样,在原文的基础上进行了一些格式的调整,包括一些错别字的修正,以及进行了一些博文链接的插入,以便于读者或者我自己更好的理解。​ 我们使用Linux作为服务器操作系统时,为了达到高并发处理能力,充分利用机器性能,经常会进行一些内核参数的调整优化,但不合理的调整常常也会引起意想不到的其他问题,本文就一次Linux服务器丢包故障的处理过程,结合Linux内核参数说明和TCP/IP协议栈相关的理论,介绍一些常见的丢包故障定位方法和解决思路。​ 在开始之前

2022-04-24 15:12:11 9112

转载 Linux收包

网卡到内存网卡需要有驱动才能工作,驱动是加载到内核中的模块,负责衔接网卡和内核的网络模块,驱动在加载的时候将自己注册进网络模块,当相应的网卡收到数据包时,网络模块会调用相应的驱动程序处理数据。下图展示了数据包(packet)如何进入内存,并被内核的网络模块开始处理: +-----+ | | Memroy+--------+ 1 | |

2022-03-21 11:44:52 165

转载 Linux动态追踪

目录动态追踪历史 追踪机制说明 常用追踪工具 线上实践指南 总结 参考动态追踪历史严格来讲 Linux 中的动态追踪技术其实是一种高级的调试技术, 可以在内核态和用户态进行深入的分析, 方便开发者或系统管理者便捷快速的定位和处理问题. Linux 在过去十多年的发展中, 演化了很多追踪技术, 不过一直没有一款可以媲美Solaris/FreeBSD系统中的DTrace追踪工具, 直到Linux 4.1+版本eBPF机制的出现, 这种情况才得到了极大的改善. 不过eBPF...

2022-03-01 13:40:58 537

原创 查看进程被谁杀

方法1 systemtap:probe begin{ printf("%-8s %-16s %-5s %-16s %6s %-16s\n", "SPID", "SNAME", "RPID", "RNAME", "SIGNUM", "SIGNAME")}probe signal.send{ if (sig_name == @1 && sig_pid == target()) printf("%-8d %-16s %-5d %-16s %-6d ...

2022-03-01 10:37:09 1445

转载 x264 的码率控制

x264 的码率控制是如何实现的 ?本文介绍 x264 码率控制算法的数学原理,和基本框架。1.理论假设有助于往下阅读,可以暂时跳过。设变量: qscale = 拉格朗日常数 lamda = 0.85 * 2^((QP-12)/6) ≈ 量化步长 Qstep = 2^((QP-4)/6)设变量: 复杂度 complexity ≈ 运动补偿后残差的satd 二次编码中: complexity ≈ 第一趟编码的实际比特数...

2022-02-25 10:51:58 1047

原创 Linux内存分析常用工具

原文链接:https://blog.csdn.net/u014023993/article/details/102646882

2021-12-02 10:06:05 736

转载 Linux系统下查看网卡相关数据

1、查看网口基本信息$ ethtool eth02、点亮网卡灯$ ethtool -p eth0 10 # 亮 10 秒3、查询网口驱动相关信息$ ethtool -i eth0 driver: igb version: 5.3.0-k firmware-version: 1.67, 0x80000d38, 18.3.6 bus-info: 0000:01:00.0 supports-statistics: yes supp

2021-09-24 16:41:19 6327

转载 解决网卡丢包问题,以及丢包问题解决后系统网络还是慢的问题

背景线上的K8S集群有一台节点,装了Istio的遥测组件,这个组件,之前在哪个节点哪个节点就出问题。出现的问题主要体现在几个点:①:服务器间歇性 NodeNotReady②:服务器丢包极为严重③:服务器网络非常慢,以至于在服务器上执行 curl youku.com 都要响应很久。Istio的遥测组件,是一个服务,由Istio的Ingress以及SideCar发送数据给遥测服务,而且发送的是UDP的包,量非常非常大,能达到 500Mbps。UDP包量大应该是导致了网卡丢包以及网络缓慢的主要问题

2021-09-24 16:38:24 3430

转载 Encoding UHD 4K HDR10 and HDR10+ Videos

Encoding UHD 4K HDR10 and HDR10+ VideosPosted on June 29, 2020byChris GriffithCodingOverview98I talked about this before with myencoding setting for handbrakepost, but thereiswas a fundamental flaw using Handbrake for HDR 10-bit video….it only...

2021-04-14 10:00:15 2960 1

转载 rtsp认证

一 、基本认证是http 1.0提出的认证方案,其消息传输不经过加密转换因此存在严重的安全隐患。1.1 客户端发送DESCRIBE请求到前端设备,URL中携带请求的URL地址 DESCRIBE rtsp://192.168.1.55:554/live/1/video.sdp?token=A00453FR805a54C8 RTSP/1.0\r\n CSeq: 1\r\n Accept: application/sdp\r\n User-agent: Realplayer\r\.

2021-03-12 17:03:41 1513 1

转载 块效应 振铃效应 呼吸效应

1、块效应:(1)概念:主要是由视频图像采用基于块的编码方式和量化造成相邻块之间存在明显差异的现象,在视频编码中人眼察觉到的小块边界处的不连续。(2)产生原因:1、编码过程中对残差进行DCT变换是基于块的,使得块与块之间的相关性被忽略了;2、对DCT系数进行量化,不同的图像块做了不同的处理。(3)解决方案:在视频编码中,为了解决或减小块效应,很多视频编码标准(H264,H265,SVAC)中采用了去块滤波Deblock的方案。2、振铃效应:(1)概念:图像处理中,对一

2021-02-26 10:28:10 2953

转载 C语言float、double的内存表示

在内存中,小数是以指数形式存在的。float、double 在内存中的形式如下所示:小数在被存储到内存前,首先转换为下面的形式:a × 2n其中 a 为尾数,是二进制形式,且 1 ≤ a < 2;n 为指数,是十进制形式。例如对于 19.625,整数部分的二进制形式为:19 = 1×24+ 0×23+ 0×22+ 1×21+ 1×20= 10011小数部分的二进制形式为:0.625 = 1×2-1+ 0×2-2+ 1×2-3= 101将整数部分和小数部分合并在一...

2021-01-28 09:43:05 942 1

转载 使用 tc netem 模拟网络异常

在某些情况下,我们需要模拟网络很差的状态来测试软件能够正常工作,比如网络延迟、丢包、乱序、重复等。linux 系统强大的流量控制工具 tc 能很轻松地完成,tc 命令行是iproute2软件包中的软件,可以根据系统版本自行安装。流量控制是个系统而复杂的话题,tc 能做的事情很多,除了本文介绍的还有带宽控制、优先级控制等等,这些功能是通过类似的模块组件实现的,这篇文章介绍的功能主要是通过netem这个组件实现的。netem是Network Emulator的缩写,关于更多功能以及参数的详细解...

2020-12-01 10:16:29 967

转载 Linux 丢包分析

最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,总结出来这篇文章,供更多人参考。在开始之前,我们先用一张图解释 linux 系统接收网络报文的过程。首先网络报文通过物理网线发送到网卡 网络驱动程序会把网络中的报文读出来放到 ring buffer 中,这个过程使用 DMA(Direct Memory Access),不需要 CPU 参与 内核从 ring buffer 中读取报文进行处理,执行 IP 和 TCP/UDP 层的逻辑,最后把报文放到应用程序的 socket

2020-12-01 10:08:13 2284

转载 uprobe

项目上需要分析用户态程序的性能,开发人员一般的方式是在程序内部实现打点函数,记录当程序运行到该点的时间戳,通过比较两点之间的时间间隔来估计两点之间的时间消耗。这样一方面增加了开发的工作量,另外这些打点也会给业务带来额外性能消耗,是否有另外的方式来解决该问题呢?前段时间在研究ftrace,发现其还有个uprobe特性,故名思意就是用户态的探针工具,今天尝试了下uprobe的使用,小结如下:1.编写小测试程序如下:#include <stdlib.h>#include <s.

2020-10-15 15:44:22 728

转载 内存泄露

本文由西邮陈莉君教授研一学生戴君毅、梁金荣、马明慧等翻译,宋宝华老师指导和审核。译者戴君毅、梁金荣、马明慧等同学热爱开源,践行开放、自由和分享。原文地址:http://www.brendangregg.com/FlameGraphs/memoryflamegraphs.html正文当你的应用程序占用的内存不断地提升时,你不得不立即修复它。造成这种情况的原因可能是因为错误配置而导致的内存增长,也可能是因为软件bug引起的内存泄露。无论哪一种,由于垃圾回收机制开始积极响应(消耗CPU),一些应用的性

2020-09-23 10:54:36 343

转载 H.264 GOP

H.264帧类型主要有五种编码帧:I(IDR帧)、i(非IDR I帧)、P(P帧)、B(参考B帧)、b(非参考B帧)。 IDR帧,NALU_type = 0x65。IDR帧是一种特殊的I帧,在解码IDR帧前,清空所有前后向参考缓冲区,IDR帧随后的所有帧不能参考IDR前面的任何帧。IDR帧是视频安全的随机访问点,找到一个IDR帧可以丢弃前面所有帧数据而正确解码。 i帧是帧内预测帧,它的解码不依赖与任何其他帧。NALU_type = 0x61。有些解码器没有区分这两种I帧,将所有的i帧都缺

2020-08-20 20:05:22 430

转载 制作centos镜像

http://www.oschina.net/news/62897/docker-hub-contains-high-risk-vulnerabilities这里有个统计,docker官方和个人发布的镜像由于版本等各种原因,漏洞较多,那我们如何自己从头开始做个定制的镜像呢?对,找官方文档http://docs.docker.com/articles/baseimages/,这里说明的很清楚了试验如下:在centos7机器上做centos镜像直接参考这个脚本https://ra...

2020-07-02 10:01:19 661

转载 ASAN

ASAN(Address-Sanitizier)早先是LLVM中的特性,后被加入GCC 4.8,在GCC 4.9后加入对ARM平台的支持。因此GCC 4.8以上版本使用ASAN时不需要安装第三方库,通过在编译时指定编译CFLAGS即可打开开关。1、编译选项1.1 Gcc编译选项# -fsanitize=address:开启内存越界检测# -fsanitize-recover=address:一般后台程序为保证稳定性,不能遇到错误就简单退出,而是继续运行,采用该选项支持内存出错之后程序继续运行

2020-06-09 13:43:07 2047

转载 HEVC标准概览-很概括很详细

HEVC的设计兼顾提高编码效率、降低传输压力、增强丢包容忍性、优化并行处理在内的多个目标。本章将简要描述HEVC实现这些目标的关键技术以及标准HEVC编码器的处理流程。解码流程和具体的语法会在之后的章节讨论。一、编解码层面HEVC的编码分层沿用了H.261以来的混合模式(帧间预测、帧内预测、2D转换)。下图表达了编码HEVC标准码流的基本过程。HEVC_flowHEVC标准编码过程大致如下:帧首先被切分成多个块状区域,分别传输给解码器。图像序列的第一个画面(以及每一个可被拖放的帧)只...

2020-05-09 09:34:16 2346

转载 中断和异常——内核的动力

本文内容关注一种内核工作的基本机制——中断和异常。标题称这种机制为内核的动力,或许不那么恰当,主要想强调中断和异常对内核工作的重要性。对于操作系统上层的应用程序开发者而言,或许感觉离中断和异常的机制很远,因为我们不需要开发内核。但是毕竟我们使用的是内核所提供的各种服务,理解内核的基本运作原理能够帮助我们更好地写程序、优化程序。问在前面:通常所说的“陷入内核”,是怎么个陷入法呢? 我们的网...

2020-04-21 09:27:32 1376

转载 Linux内核——等待队列浅谈

本文关注内容:Linux内核的一种数据结构:等待队列。在这里,我们不太去关注等待队列细节的实现。主要从功能角度谈下等待队列在内核中的角色。我的观点是,不管是内核,还是内核中的某个组件,理解其角色定位很重要,单纯是从实现细节上去理解某种机制,或许少了点乐趣。你理解阻塞吗?写程序的时候,我们常常说某个系统调用是阻塞调用。从用户层的角度,基本理解是:进程在执行某个系统调用的时候,因为需要的资源...

2020-04-21 09:14:26 405

转载 gettimeofday

我们在程序中会频繁地取当前时间,例如处理一个http请求时,两次调用gettimeofday取差值计算出处理该请求消耗了多少秒。这样的调用无处不在,所以我们有必要详细了解下,gettimeofday这个函数做了些什么?内核1ms一次的时钟中断处理真的可以支持tv_usec字段达到微秒精度吗?它的调用成本在i386/x86_64体系架构上代价一样吗?如果在系统繁忙时,频繁的调用它有问题吗?...

2020-04-15 09:16:05 2453

转载 h.264参考图像列表、解码图像缓存

1.参考图像列表(reference picture list)一般来说,h.264会把需要编码的图像分为三种类型:I、P、B,其中的B、P类型的图像由于采用了帧间编码的这种编码方式,而帧间编码又是以参考图像为基础进行的,因此需要有个参考图像列表来管理之前生成的参考图像,方便用于对当前图像进行编码。2.解码图像缓存(decoded picture buffer)随着图像编码的进行,(解...

2020-04-10 14:07:23 1012

转载 nvprof

1. 使用nvprof输出kernel timeline数据Kernel Timeline 输出的是以gpu kernel 为单位的一段时间的运行时间线,我们可以通过它观察GPU在什么时候有闲置或者利用不够充分的行为,更准确地定位优化问题。nvprof是nvidia提供的用于生成gpu timeline的工具,其为cuda toolkit的自带工具。使用方法如下:nvprof -o ou...

2020-03-25 10:19:22 1725

转载 GPU数据传输概览

在机器学习训练过程中,大家往往会发现IO成为制约训练速度提升的瓶颈。提升训练速度,数据传输是绕不开的话题。那么GPU机器中,数据传输是如何做的呢?同机的CPU和GPU之间数据如何传输?同机的多卡之间数据如何传输?多机的卡之间数据如何传输?1、CPU和GPU之间1)CPU->GPU图1 锁页内存从CPU向GPU传输数据,最为人熟知的就是cudaMemcpy了...

2020-03-25 10:06:30 5084

转载 SRT互联网传输设备技术分享

来自:https://blog.csdn.net/weixin_42228920/article/details/90946259

2020-02-17 22:28:48 362

转载 kprobe工作原理

kprobe工作原理kprobe的工作过程大致如下:1)注册kprobe。注册的每个kprobe对应一个kprobe结构体,该结构中记录着插入点(位置),以及该插入点本来对应的指令original_opcode;2)替换原有指令。使能kprobe的时候,将插入点位置的指令替换为一条异常(BRK)指令,这样当CPU执行到插入点位置时会陷入到异常态;3)执行pre_handler...

2019-11-25 11:24:30 365

转载 httpd 403

apache httpd服务器403 forbidden的问题一、问题描述在apache2的httpd配置中,很多情况都会出现403。刚安装好httpd服务,当然是不会有403的问题了。主要是修改了一些配置后出现,问题描述如下:修改了DocumentRoot目录指向后,站点出现403错误。 设置了虚拟主机目录也可能导致403。 apache的httpd服务成功启动,看起来都...

2019-10-28 12:02:28 1754

原创 返回地址截断

主要是没有引用头文件,编译默认返回值是int,导致截断

2019-07-16 17:43:12 202

转载 傅里叶变换为什么能从时域转到频域

看到论坛有一个朋友提问为什么傅里叶变换可以将时域变为频域?这个问题真是问到了灵魂深处。在这我只能简单讲讲我的理解,要深刻理解翻信号处理教科书是最好的方法。1. 如何描述信号我们常常用数学模型去抽象物理事件。信号也可以用数学模型来表示。有了信号的数学模型,我们就可以利用数学计算对信号模型做各种各样的改变。如果加以计算机,模电,数电的相关知识,我们就可以将我们对信号模型的改变转换为对物理信...

2019-06-24 16:00:17 12782 3

转载 HDR关键技术:色度学,颜色空间及转换

本文转自:https://cloud.tencent.com/developer/article/1346167摘要:HDR技术的第二个理论基础是色度学。从前面的文章中我们了解到,光学以及人类视觉感知模型为人类提供了解释与分析人类感知亮度的理论基础,但是HDR技术不仅仅关注于提升图像与视频的亮度范围,同时也关注于提供更加丰富的色彩。因此,在本文中,我们将首先介绍人眼与色度学相关的生理特征以...

2019-05-29 21:36:39 5538

转载 通过/proc查看Linux内核态调用栈来定位问题

前几天碰到一个问题:一个进程运行过程中挂死了,把gdb挂上去之后bt打印的内容为空,后来通过查看 /proc 文件系统,查看程的调用栈,才发现是发消息给内核态程序时,内核态一直没有响应,导致用户态进程挂死。刚好在网上看到一篇描述通过 /proc 文件系统来定位问题的文章,这篇文章讲解得比较清楚,因此尝试翻译出来。原文地址:Peeking intoLinuxkernel-land using /...

2019-03-22 16:19:34 2018

原创 system 错误记录

在一次采集off cpu时,脚本老报错,too many pending(error),加上MAXERRORS这个宏也不管用,然后加上参数 --vp00002发现打印出了probe overhead exceeded threshold,这是脚本开销太大了,超过了正常的负载,通过查看代码可以用STP_NO_OVERLOAD来解除这个限制...

2019-03-22 14:13:56 920

转载 字幕

Teletext     20世纪70年代由英国制定的电视文本信息传送服务。可以通过它在电视上发布诸如国内新闻,国际新闻,体育新闻,天气预报和电视节目预报之类的文本信息。 teletext例子:      Subtitles     是电影或电视节目中一种显示对话文本的字幕。一般出现在画面的底部(当然,也可以放到画面顶部)。它可以是原始语言的...

2019-02-25 11:30:28 463

转载 yuv 10bit 8bit

我们知道为了获得更好的动态范围,除了常见的8bit yuv外,还有10bit,16bit这样的yuv数据。8bit的yuv数据还好理解,每一个像素8bit,在内存中自然也就是一个字节一个字节的存储咯,16bit的也类似,每一个像素对应两个字节,在内存中存起来也非常方便,那么10bit呢?在不做任何调查的情况下,我们可以凭直觉猜想有两种存储方式:1.每个像素依然占用16bit两个字节,但是其中...

2019-02-18 20:02:50 5697

原创 sdp 例子

 AAC:m=audio 4002 RTP/AVP 97a=rtpmap:97 MPEG4-GENERIC/44100/2a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=1210c=IN IP4 10.10.40.41 mpga:...

2018-12-07 18:27:32 700

rfc 4028 sip保活机制

sip保活机制 sip保活机制

2018-10-22

mpeg-2 138181中文

mpeg-2 138181中文

2018-10-22

GB28181国标

GB28181的标准

2018-10-22

深入理解https

2017-03-16

hls 快进快退

2017-03-16

ffmpeg 源码分析

ffmpeg源码分析,算是比较全的,把每个文件简单介绍了一下

2016-02-01

http协议标准.pdf

http协议标准,中文版,写的通俗易懂,对于网络编程的人来说很实用

2011-05-06

gdb使用说明手册

gdb命令使用详细说明

2011-02-15

B_Tree的插入算法

B_树的插入算法,分裂(详细的C++代码)

2009-08-26

空空如也

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

TA关注的人

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