虚拟地址空间划分
以32位linux进程为例 当进程被操作系统加载时,操作系统会给该进程提供一块 0x00000000~0xFFFFFFFF 共4G大小的虚拟内存地址空间 0x00000000~0xFFFFFFFF 0x00000000~0xC0000000 : 用户空间 0x00000000~0x08048000 : 预留空间(不允许访问) .text .rodata : 代码段和只读数据区 .data : 数据段,存储已初始化且不为0的变量 .bss : 未初始化+已初始化为0的变量 .heap : 堆区 共享库 : 加载.so的地方 .stack: 栈区 : 命令行参数和环境变量 0xC0000000~0xFFFFFFFF : 内核空间 12345678910111213141516171819int gdata1 = 10;int gdata2 = 0;int gdata3;static int gdata4 = 10;static int gdata5 = 0;static int gdata6;int main() { int a = 12; in...
设计模式2-简单工厂模式
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include <iostream>enum class model { su7, modelY, M7};class car {public: virtual void info() = 0; virtual ~car(){};};class MiSu7 : public car{public: void info() override { std::cout << "a su7 car" << std::endl; }};class TeslaModelY : public car {public: void info() override...
设计模式1-单例模式
123456789101112131415161718192021222324252627282930313233343536373839#include <iostream>#include <utility>class Singleton {public: static Singleton* getInstance() { static Singleton instance; return &instance; } Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete; Singleton(Singleton&&) = delete; Singleton& operator=(Singleton&&) = delete;private: Singleton()...
H264结构详解
frame视频的一张图片就叫一帧,H264分为I帧,P帧,B帧。 slice一个frame可以切成多个slice,slice之间在解码过程中是相对独立的,能够限制产生花屏时的影响范围 NALUNALU = NAL HEADER + NAL Payload(slice data); NAL HEADERNAL HEADER = Forbidden_zero_bit(1bit)必须为0 + nal_ref_idc(2bit)重要程度,越大越重要 + nal_unit_type(5bit)NALU类型[0,31]; nal_unit_type = {6(SEI), 7(SPS), 8(PPS), 5(IDR帧), 1(非IDR帧), 28(FU-A分片)} NAL PayloadSODB编码器原始输出的比特流(非字节对齐) RBSPSODB + 补齐字节,凑齐到8bit整数倍(停止位1 + n个0) EBSPRBSP中的 0x00 00 XX (XX = {00, 01, 02, 03}), 替换为 0x00 00 03 XX NALU交界NAL...
pkg-config
前言pkg-config是一个命令行工具,用于提供库(libraries)的编译和链接信息 用法123pkg-config --list-all #查看所有支持pkg-config的库pkg-config --libs --cflags glib-2.0 # 名字就是本地/usr/lib/x86_64-linux-gnu/pkgconfig/*.pc的前缀 CMake集成pkg-config12345678910# 1. 引入 pkg-config 模块find_package(PkgConfig REQUIRED)# 2. 查找某个库,例如 libcurlpkg_check_modules(CURL REQUIRED libcurl)# 3. 使用查找到的变量target_include_directories(my_app PRIVATE ${CURL_INCLUDE_DIRS})target_link_libraries(my_app ${CURL_LIBRARIES})target_compile_options(my_app P...
ffmpeg SDK学习(4)
从 ffmpeg 接口到 x264 接口libavcodec/libx264.c 中定义了结构体 1234567891011121314151617181920212223242526const FFCodec ff_libx264_encoder = { .p.name = "libx264", CODEC_LONG_NAME("libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_H264, .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_OTHER_THREADS | AV_CODEC_...
x264 - 高品质 H.264 编码器
x264_param_t12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719...
Docker学习
卸载123for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; donesudo rm -rf /var/lib/docker 安装12345curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.shsudo systemctl start dockersudo systemctl enable docker 普通用户添加执行权限1sudo usermod -aG docker $USER
perf火焰图
生成采集文件1sudo perf record -F 100 -p 1847 -g --sleep 30 -F 100: 每秒100次的采样率 -p 1847: 要采样的PID – sleep 30: 执行30秒 输出为perf.data 1perf script -i perf.data > perf.unfold 转为火焰图1234git clone https://github.com/brendangregg/FlameGraph.gitcd FlameGraph./stackcollapse-perf.pl perf.unfolf | ./flamegraph.pl > out.svg 结果
Debain13安装btrfs和快照
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172~ # df -hFilesystem Size Used Available Use% Mounted ontmpfs 193.5M 384.0K 193.1M 0% /rundevtmpfs 952.7M 0 952.7M 0% /dev/dev/sr0 754.0M 754.0M 0 100% /cdromnone 256.0K 59.7K 191.3K 24% /sys/firmware/efi/efivars/dev/nvme...









