- 博客(48)
- 收藏
- 关注
原创 【FFMPEG】ffmpeg内部组件总结
总结ffmpeg内部基础组件decoder,demuxer,encoder, muxer, filter,以及如何使用给出demo code
2023-03-16 20:08:48
587
原创 【surfaceflinger源码分析】RenderSurface与FramebufferSurface之间的关系
surfaceflinger中合成时,合成之后的数据bufferqueue的生产者和消费之之间的关系,RenderSurface与FramebufferSurface的关系
2023-02-20 17:31:24
880
原创 【surfaceflinger源码分析】surface与surfaceflinger之间的关系
surface的本质是什么 ?surface与graphic buffer与surfaceflinger之间的关系是什么?
2023-02-17 15:33:10
876
1
原创 【surfaceflinger源码分析】surfaceflinger进程的消息驱动模型(二)
surfaceflinger中onMessageReceived()函数运行原理
2023-02-16 19:51:35
599
1
原创 【surfaceflinger源码分析】surfaceflinger进程的消息驱动模型
surfaceflinger消息驱动模型分析 -- MessageQueue
2023-02-16 15:43:21
1276
原创 【FFMPEG源码分析】ffmpeg中context与AVClass,AVOption之间的关系
ffpmeg中Context的含义,AVClass/AVOption的作用
2023-02-14 19:35:17
428
原创 shared_ptr
从上面class shared_ptr的定义来看只是继承了class __shared_ptr,并没有涉及ref count相关的实现。从上面的定义来看,_Sp_counted_base_impl中并没有实现ref count的加,减。总结一下,shared_ptr的类关系图如上图所示,在_Sp_counted_base中成员_M_use_count是表示引用计数的值。class __shared_count 中的重要成员:_Sp_counted_base* _M_pi;
2022-12-14 17:36:22
312
原创 智能指针 -- unique_ptr
unique_ptr源码分析代码示例默认构造函数,操作符(), 以及get(),操作符->示例运行结果: 过程分析:那么该示例实际都调用了unique_ptr这个类中的哪些接口呢 ?默认构造函数上述语句会调用unique_ptr的默认构造函数: template
2022-11-08 13:03:54
857
原创 Linux Memory -- 三大allocator原理
文章目录Linux Memory -- 三大allocator原理boot memory allocatorbuddy allocatorslab allocatorLinux Memory – 三大allocator原理boot memory allocatorboot memory allocator的作用因为内核里面有很多memory struct,不可能在静态编译阶段就静态初始化...
2020-05-05 10:18:15
1137
原创 Linux Memory初始化过程
文章目录Linux Memory初始化过程start_kernel()setup_arch()boot memeory allocator初始化页表初始化Zone初始化以及buddy allocator初始化mem_init()kmem_cache_init()Linux Memory初始化过程start_kernel()首先我们来看看Linux的系统启动函数中的start_kernel()...
2020-05-03 19:58:00
1271
原创 Linux内存管理第九章 -- High Memory Management(高端内存)
文章目录Linux内存管理第九章 -- High Memory ManagementManaging the PKMap Address SpaceLinux内存管理第九章 – High Memory Managementkernel仅仅能够直接访问那些已经建立了页表项的物理内存。但是在大多数情况下,在32位机器上,用户空间和内核空间被切割为3GB/1GB,这就意味着内核最多能够直接访问的内存...
2020-03-26 08:32:58
708
原创 Linux内存管理第七章 -- Non-Contiguous Memory Allocation(vmalloc)
文章目录Linux内存管理第七章 -- Non-Contiguous Memory Allocation(非连续内存分配)Describing Virtual Memory Areas(描述虚拟内存区域)Linux内存管理第七章 – Non-Contiguous Memory Allocation(非连续内存分配)因为cache相关原因和内存访问延迟的原因,在处理大量内存的时候应该尽量选择连续...
2020-03-17 09:21:42
1173
原创 Linux内存管理第八章 -- Slab Allocator (二)
文章目录Linux内存管理 -- Slab Allocator (二)SlabsLinux内存管理 – Slab Allocator (二)Slabs本段落将描述slab如何被结构化和被管理的。用来描述slab的结构体要简单很多...
2020-03-08 19:51:59
436
原创 Linux内存管理第八章 -- Slab Allocator (一)
文章目录Linux内存管理 -- Slab AllocatorLinux内存管理 – Slab Allocator在本章中,来介绍内核中更加通用的分配器。Linux使用的slab allocator与用在Solaris中使用的通用分配器有许多相似之处。Linux的实现基本上是在Bonwick的the first allocator论文的基础上进行了一些改进而这些改进与他后续的论文中的描述十分相...
2020-03-07 17:41:08
2136
原创 Linux内存管理第六章 -- Physical Page Allocation(Buddy Allocator)
文章目录Linux内存管理 -- Physical Page AllocationManaging Free BlocksLinux内存管理 – Physical Page Allocation本章将描述在Linux中物理内存如何分配和管理。其主要算法是Binary Buddy Allocator。Buddy Allocator相比较其他分配器要快很多。这是一种将普通pow-of-two分配...
2020-02-25 18:14:41
1668
原创 Linux内存管理第五章 -- Boot Memory Allocator
文章目录Linux内存管理 -- Boot Memory AllocatorRepresenting the Boot MapAllocating MemoryFreeing MemoryRetiring the Boot Memory AllocatorLinux内存管理 – Boot Memory Allocator在编译阶段就初始化内核核心的memory struct是不现实的,因为有太...
2020-02-23 20:56:59
564
原创 Linux内存管理 -- 白话Linux page cache / swap cache/页框回收
文章目录Linux内存管理 -- 白话页框回收什么是Page Cache?什么是Swap Cache?什么是buffer Cache?Linux内存管理 – 白话页框回收经过前面几篇博客翻译和阅读Understaning Linux Virtutal Memory Manger,对于Linux页框回收有了一些基本的理解。现在自己再来对照Linux kernel2.6.9源码来做一些总结。什么...
2020-02-18 18:19:35
4260
1
原创 Linux内存管理第十一章 -- Swap Management
文章目录Linux内存管理 -- Swap ManagementDescribing the Swap AreaLinux内存管理 – Swap ManagementLinux会使用空闲的内存来缓存磁盘上的数据,然后需要再释放进程私有的或者正在使用的匿名page。这些page不像有在磁盘上对应的文件的的page那样简丹地丢弃然后再来重新读。相反必须小心滴将它们复制到磁盘介质上,有时候我们称这些...
2020-02-15 19:49:33
1521
原创 Linux内存管理第十章 -- 页框回收(Page Frame Reclamation)
文章目录Linux内存管理 -- 页框回收(Page Frame Reclamation)页替换策略(Page Replacement Policy)Page CachePage Cache Hash TableLinux内存管理 – 页框回收(Page Frame Reclamation)页替换策略(Page Replacement Policy)每当讨论页替换策略,提及最多的就是基于LR...
2020-02-14 16:56:27
976
原创 Linux内存管理第四章 -- 进程地址空间(Process Address Space)
文章目录Linux内存管理 -- 进程地址空间(Process Address Space)Linux内存管理 – 进程地址空间(Process Address Space)
2020-02-13 10:18:14
1582
原创 Linux内存管理第三章 -- 页表管理(Page Table Management)
Linux内存管理 – 页表管理(Page Table Management)页目录描述(Describing the Page Directory)每一个进程都有一个指针指向它自己的PGD(Page Global Directory),PGD是一个物理页框。该页框包含有一组类型为pgd_t的结构。该类型有具体的架构代码中指定。例如在x86下,其定义如下: typedef struct { ...
2020-02-11 18:02:09
5356
1
原创 Linux内存管理第二章 -- Describing Physical Memory
文章目录Linux内存管理 -- Describing Physical MemoryNodesZonesZone InitialisationInitialising mem_mapPagesLinux内存管理 – Describing Physical Memory首先来描述几个名词:NUMA:Non-Uniform Memory Access即内存非一致性访问.在很多巨星机上内存被分...
2020-02-10 18:12:52
632
原创 细读HTTPS -- 白话TLS
文章目录细读HTTPS -- 白话TLS什么是对称加密?什么是非对称加密?什么是MAC ?细读HTTPS – 白话TLS前面三篇文章是阅读《HTTPS权威指南 在服务器和WEB应用上部署SSL》这本书的笔记,不过由于翻译不是太好,很多地方难以理解。经过多次阅读以及网上查阅资料终于弄懂了一些原理和概念。下面用自己的话来重新描述下SSL中的原理以及SSL握手过程中用到了哪些东西。什么是对称加密?...
2020-02-06 09:43:51
1886
原创 细读HTTPS -- 公钥基础设施PKI
文章目录细读HTTPS -- 公钥基础设施PKI订阅人证书证书字段证书链信赖方证书颁发机构 -- CA细读HTTPS – 公钥基础设施PKIPKI(public key infrastructure)的目标就是实现不同成员在不见面的情况下进行安全通信,我们当前采用的模型是基于可信的第三方机构,也就是证书颁发机构(certification authority或certificate autho...
2020-02-05 09:17:53
424
原创 细读HTTPS -- SSL/TLS协议
文章目录细读HTTPS -- SSL/TLS协议握手协议握手之对服务器进行身份验证握手之客户端身份验证&服务器身份验证握手之会话恢复密钥交换RSA 密钥交换Diffie-Hellman 密钥交换椭圆曲线Diffie-Hellman 密钥交换身份验证加密序列加密分组加密已验证的加密应用数据协议警报协议协议中的密码操作伪随机函数主密钥秘钥生成TLS中的密码套件TLS扩展TLS扩展:证书透明度T...
2020-02-04 15:32:21
789
原创 细读HTTPS -- SSL/TLS历史,密码学
文章目录细读HTTPS -- SSL,TLS,密码学SSL/TLS协议历史细读HTTPS – SSL,TLS,密码学SSL/TLS协议历史SSL协议由Netscape公司开发,历史可以追溯到Netscape Navigator浏览器统治互联网的时代。第一个版本从未发布过第二版即SSL2则于1994年11月发布。SSL2的开发基本上没有与Netscape以外的安全专家进行过商讨,所以有严...
2020-02-04 10:04:03
934
原创 HTTP协议详解(三)
文章目录HTTP协议详解(三)HTTP协议详解之响应报文状态行以及状态码说明响应首部字段Accept-RangesAgeETagLocationProxy-AuthenticateRetry-AfterServerVaryWWW-Authenticate通用首部字段实体首部字段响应报文主体响应报文样例HTTP协议详解(三)HTTP协议详解之响应报文状态行以及状态码说明包含表明响应结果的状...
2020-02-03 13:56:19
473
原创 HTTP协议详解(二)
文章目录HTTP协议详解HTTP协议详解之请求报文通用首部字段Cache-ControlConnectionHTTP协议详解HTTP协议详解之请求报文通用首部字段通用首部字段是指,请求报文和响应报文双方都会使用的首部。Cache-Control通过指定首部字段 Cache-Control 的指令,就能操作缓存的工作机制。指令的参数是可选的,多个指令之间通过“,”分隔。首部字段 Ca...
2020-02-03 10:13:30
376
原创 HTTP协议详解
文章目录HTTP协议详解HTTP协议的特点:HTTP协议详解之URLHTTP协议详解之请求方法HTTP协议详解之请求报文请求行请求首部字段HTTP协议详解HTTP协议的特点:支持客户/服务器模式。简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模...
2020-02-02 17:43:42
940
原创 TCP/IP基础(三)
文章目录TCP/IP基础(三) -- IP协议相关技术DNS域名的构成DNS查询ARPARP的工作机制ICMPICMP消息类型NATNAT定义NAT的工作机制NAT的潜在问题TCP/IP基础(三) – IP协议相关技术DNS由于IP地址不便记忆,在最开始的时候,人们用一种叫做hosts的数据库文件来记录IP和主机名的关系。在互联网的起源ARPANET中,起初由互联网信息中心(SRINIC)整...
2020-02-02 11:37:45
559
原创 TCP/IP基础(二)
文章目录TCP/IP基础(二) -- IP协议IP地址的定义IP地址的组成: 网络地址 + 主机地址IP地址的分类广播地址IP多播子网掩码全局地址与私有地址路由控制IP地址与路由控制路由控制表的聚合TCP/IP基础(二) – IP协议IP地址的定义IP地址(IPv4地址)由32位正整数来表示。TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。IP地址在计算机内部以二进制(二进...
2020-02-01 20:16:53
426
原创 TCP/IP基础
TCP/IP基础一、 计算机网络体系结构分层二、 数据处理流程三、 传输层中的 TCP 和 UDPTCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,当应用程序采用 TCP 发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。TCP 为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络...
2020-02-01 14:30:29
223
原创 Linux Kernel 2.6.9源码分析 -- send/recieve 报文
Linux Kernel 2.6.9源码分析 – send/recieve 报文可用户socket报文读写的函数有以下几对:ssize_t read(int fd, void *buf, size_t count);ssize_t write(int fd, const void *buf, size_t count);ssize_t send(int sockfd, const ...
2020-01-31 18:40:47
462
原创 Linux Kernel 2.6.9源码分析 -- accept
Linux Kernel 2.6.9源码分析 – accept先来看一下原型:int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)sockfd:这个套接字用来监听一个端口,当有一个客户与服务器连接时,它使用这个一个端口号,而此时这个端口号正与这个套接字关联。当然客户不知道套接字这些细节,它只知道一个地址和一个端口号。...
2020-01-30 19:59:21
352
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人