- 博客(27)
- 资源 (28)
- 收藏
- 关注
原创 数据结构与算法(7)动态规划法
动态规划法(dynamicprogramming)也是将待求解问题分解成若干个子问题,但是子问题之间往往不是相互独立的,如果用分治法求解,这些子问题的重叠部分被重复计算多次。动态规划法将每个子问题求解一次并将其解保存在一个表格(通常采用数组)中,当需要再次解此子问题时,只是简单地通过查表获得该子问题的解,从而避免了大量重复计算。动态规划法的一般过程:一般来说,动态规划法的求解过程由以下三...
2020-03-27 11:19:14 776
原创 数据结构与算法(6)贪心法
贪心法(greedymethod)是把一个复杂问题分解为一系列较为简单的局部最优选择,每一步选择都是对当前解的一个扩展,直到获得问题的完整解。正如其名字一样,贪心法在解决问题的策略上目光短浅,只根据当前已有的信息做出选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。例如用贪心法求解付款问题:假设有面值为{5元、2元、1元、5角、2角、1角}的货币若干张,需要付款4元6角现金,...
2020-03-26 17:22:41 764
原创 数据结构与算法(5)减治法
减治法(reduceandconquermethod)在将原问题分解为若干个子问题后,利用了原问题的解与子问题的解之间的关系,这种关系通常表现为:(1)原问题的解只存在于其中一个较小规模的子问题中;(2)原问题的解与其中一个较小规模的解之间存在某种对应关系。由于原问题的解与较小规模的子问题的解之间存在这种关系,所以,只需求解其中一个较小规模的子问题就可以得到原问题的解,无须对子问题的解进...
2020-03-26 16:20:30 1330
原创 数据结构与算法(4)分治法
分治者,分而治之也。分治法(divide and conquer method)的设计思想是将一个难以直接解决的大问题,划分成一些规模较小的子问题,以便各个击破,分而治之。由分治法产生的子问题往往是原问题的较小模式,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到能够直接求解,这自然导致递归。分治与递归经常同时应用在算法设计之中,并由此产生许多高效的算法。...
2020-03-26 15:57:09 669
原创 数据结构与算法(3)蛮力法
蛮力法(bruteforcemethod,也称穷举法)通常采用一定的策略依次处理待求解问题的所有数据,从而找出问题的解,是一种简单直接地解决问题的方法。例如,对于给定的整数a和非负整数n,计算an的值,最直接的想法就是把1和a相乘n次。蛮力法常常直接基于问题的描述,所以是最容易应用的方法。但是,用蛮力法设计的算法其时间性能往往也是最低的。因此,蛮力法通常用来解决非常基本的问题。在本书中...
2020-03-26 14:45:47 1077
原创 数据结构与算法(2)算法分析
如何度量一个算法的效率呢?一种方法是事后统计的方法,先将算法实现,然后输入适当的数据运行,测算其时间和空间开销。事后统计的方法至少有以下缺点:① 编写程序实现算法将花费较多的时间和精力;② 所得实验结果依赖于计算机的软硬件等环境因素,有时容易掩盖算法本身的优劣。通常我们采用事前分析估算的方法——渐进复杂度(asymptoticcom-plexity),它是对算法所消耗资源的一种估算方法。...
2020-03-26 11:31:56 776
原创 数据结构与算法(1)数据结构与算法的基本概念
一、什么是算法算法必须满足下列五个重要特性:(1)输入: 一个算法有零或多个输入(即算法可以没有输入),这些输入通常取自某个特定的对象集合。(2)输出: 一个算法有一或多个输出(即算法必须要有输出),通常输出与输入之间有着某种特定的关系。(3)有穷性: 一个算法必须总是(对任何合法的输入)在执行有穷步之后结束,且每一步都在有穷时间内完成。(4)确定性: 算法中的每一条指令必须有确切的含义...
2020-03-26 10:04:47 1102
原创 《Linux内核 学习笔记》--- 第二章 内存管理 2.9 mmap
《Linux内核 学习笔记》--- 第二章 内存管理2.9 mmap 概述问题1:请阅读Linux内核中mmap相关代码,找出第二次调用mmap会成功的原因?问题2:在一个播放系统中同时打开几十个不同的高清视频文件,发现播放有些卡顿,打开视频文件是用mmap函数,请简单分析原因。2.9 mmap 概述mmap/munmap接口是用户空间最常用的一个系统调用接口,无论是在用户程序中分配内存、...
2020-03-24 17:42:48 572
原创 《Linux内核 学习笔记》--- 第二章 内存管理 2.6 vmalloc & 2.7 VMA & 2.8 malloc
kmalloc、vmalloc和malloc这3个常用的API函数具有相当的分量,三者看上去很相似,但在实现上可大有讲究。kmalloc基于slab分配器,slab缓冲区建立在一个连续物理地址的大块内存之上,所以其缓存对象也是物理地址连续的。如果在内核中不需要连续的物理地址,而仅仅需要内核空间里连续虚拟地址的内存块,该如何处理呢? 这时vmalloc()就派上用场了。vmlloc()函数声...
2020-03-24 16:48:07 598
原创 《Linux内核 学习笔记》--- 第二章 内存管理 2.5 slab分配器
伙伴系统用于分配内存时是以page为单位的,在实际中有很多内存需求是以Byte为单位的,那么如果我们需要分配以Byte为单位的小内存块时,该如何分配呢?slab分配器就是用来解决小内存块分配问题的,也是内存分配中非常重要的角色之一。slab分配器最终还是由伙伴系统来分配出实际的物理页面,只不过slab分配器在这些连续的物理页面上实现了自己的算法,以此来对小内存块进行管理。slab分配器提供如...
2020-03-24 13:24:19 424
原创 iperf工具吞吐量测试
【附件】iperf.exe(电脑端),iperf(车机端),版本号,2.06【测试步骤】车机手动开启热点。===> 进入设置方法: adb shell am start com.android.settings/com.android.settings.Settings笔记本 连接上车机的热点。分别通过 ifconfig 和 ipconfig 记录下 车机 和...
2020-03-24 08:45:03 1743 1
原创 《Linux内核 学习笔记》--- 第二章 内存管理 2.3 内核内存布局图
第二章 2.3 内核内存布局图2.3.1 ARM32内核内存布局图2.3.2 ARM64内核内存布局图2.3.1 ARM32内核内存布局图Linux内核在启动时会打印出内核内存空间的布局图.编译器在编译目标文件并且链接完成之后,就可以知道内核映像文件最终的大小,接下来打包成二进制文件,该操作由arch/arm/kernel/vmlinux.ld.S控制,其中也划定了内核的内存布局。\ke...
2020-03-23 16:49:20 600
原创 《中医基础理论学习》--绪论
一. 中医学概念中医学,是发祥于中国古代的研究人体生命、健康、疾病的科学。它具有独特的理论体系、原创的思维方式方法、丰富的临床经验及系统的保养生命及诊治疾病的理论和方法,是以自然科学知识为主体、与人文社会科学知识相交融的科学知识体系。二. 中医学理论体系的主体框架第一个是整体观,这是中医学的指导思想;第二个是精气阴阳五行,这是哲学思想;第三个是脏腑经络、精气血津液,这是中医学的核心...
2020-03-23 13:13:51 1773
原创 《Linux内核 学习笔记》--- 第二章 内存管理 2.1 物理内存初始化
《Linux内核 学习笔记》--- 第二章 内存管理2.1 物理内存初始化2.1.1 内存管理概述2.1.2 内存大小2.1.3 物理内存映射2.1.4 zone初始化Linux 内存 zone 布局2.1.5 空间划分2.1 物理内存初始化从硬件角度来看内存,随机存储器(Random Access Memory, RAM)是与CPU直接交换数据的内部存储器。现在大部分计算机都使用DDR(...
2020-03-20 11:54:21 1043
原创 《Linux内核 学习笔记》--- 第一章 处理器体系结构
《奔跑吧-Linux内核》--- 第一章 处理器体系结构1.ARM 指令集介绍2.请简述精简指令集RISC和复杂指令集CISC的区别3.请简述数值0x12345678在大小端字节序处理器的存储器中的存储方式。1.ARM 指令集介绍兼容ARMv4指令集的处理器架构有ARM7-TDMI,典型处理器是三星的S3C44B0X。兼容ARMv5指令集的处理器架构有ARM920T,典型处理器是三星的S3...
2020-03-18 18:21:48 1225
原创 《奔跑吧-Linux内核》--- 不服,来跑个分吧
如没有特殊说明,本奔跑卷基于Linux 4.0内核和ARM32/ARM64体系架构。请简述在你所熟悉的处理器中(比如双核\2ortex-A9)一条存储读写指令的执行全过程。在一个32KB的4路组相联的cache中,其中cache line为32Byte,请画出这个cache组相联的结构图。内核的一级页表和二级页表存放在什么地方?用户进程的一级页表和二级页表分别存放在什么地方?...
2020-03-18 17:44:36 700
转载 【输入子系统04】input_handler之evdev
【输入子系统04】input_handler之evdevevdevinput_register_handlerevdev_connectevdevinput_handleevdev/kernel/drivers/input下众多事件处理器handler其中的一个,可以看下源码/kernel/drivers/input/evdev.c中的模块init:static int __init evd...
2020-03-18 16:48:03 497
转载 【输入子系统03】输入子系统核心
【输入子系统03】输入子系统核心一、input_init二、input_register_device:三、input_match_device:四、input_handlerinput子系统,作为管理输入设备与系统进行交互的中枢,任何的输入设备驱动都要通过input向内核注册其设备,常用的输入设备也就是鼠标,键盘,触摸屏。稍微细分一点整个输入体系,就是 硬件驱动层,input核心中转层,...
2020-03-17 11:24:44 665
转载 【输入子系统02】输入子系统Input_event 传递
【输入子系统02】输入子系统Input_event 传递一、input_dev二、input_event三、input_handle_event在前文 《【输入子系统01】USB触摸屏驱动》中记录了如何在kernel中添加input device 类型为touchscreen的驱动,这在整个输入体系中是最下层的设备驱动部分,往上一层就是linux内核的管理驱动input系统,kernel中的源...
2020-03-17 10:54:54 613
转载 【输入子系统01】USB触摸屏驱动
USB触摸屏驱动驱动编译注册usb驱动驱动编译目前的kernel中都是自带了usbtouchscreen驱动的,我的版本3.1.10源码位于:/kernel/drivers/input/touchscreen/usbtouchscreen.c从这个路径可以看出所属驱动分支,我这边平台本身是没放开的,并没有编译进kernel,谁会想到触摸电视呢~可以在make menuconfig之后,...
2020-03-16 18:11:40 978
转载 Android输入子系统之启动过程分析
Android输入子系统之启动过程分析Step 1. SystemServer.startOtherServicesStep 2. InputManagerService.initStep 3. InputManagerService.nativeInitStep 4. NativeInputManager.initStep 5. InputManager.initStep 6. InputMan...
2020-03-16 17:35:53 386
转载 Input Subsystem 底层框架浅析
Input Subsystem 底层框架浅析一、绑定 input_dev 和 input_handler一、绑定 input_dev 和 input_handler当我们创建一个input_dev其描述一个输入设备的时候,我们需要把这个输入设备通过接口进行注册,会调用 input_register_device 接口:int input_register_device(struct inp...
2020-03-16 15:41:07 399
转载 输入子系统(input subsystem)
输入子系统(input subsystem)一、为什么引入输入子系统二、输入子系统分层三、输入子系统代码分析四、输入子系统的重要数据结构五、输入子系统驱动层的编写一、为什么引入输入子系统之前我们学习了一些简单的字符设备驱动,我们在写按键驱动时,都采用字符设备、混杂设备处理的,使我们的驱动程序只能我们自己使用,别人很难使用。如果所有的输入设备都这样处理的话,那么大量的输入设备驱动将会非常的混乱...
2020-03-16 14:02:49 629
原创 【Android 输入子系统 01】- 前言
前面一段时间专门看了Linux内核代码及内核相关的书籍,看了比较久,效果不大,反而把自已看的越来越懵。思虑比较久,要如何下手更加深入的学习Linux,而不是单纯的满足于调试调试驱动,做做代码帮运功。接下来,打算,从Linux 各子系统开始,独个击破,这段时间,主要就是把输入子系统,从上层到底层,全部吃透:网上有挺多兄弟写的很好,学习下:基础知识:输入子系统(input subsys...
2020-03-16 11:40:44 437
原创 【Linux内核】---- 03 安装文件系统
【Linux内核】---- 03 安装文件系统3.1 从硬盘上获取hello.txt 文件的 i 节点3.1 从硬盘上获取hello.txt 文件的 i 节点在文件系统中,每个文件都对应一个唯一的 i 节点。目录文件和普通文件是有区别的,它们存储的内容不一样。目录文件存储着若干个目录项,每个目录项由两部分组成:一个是文件名,表明该项目所对应的文件名,它可以是对应着普通文件,也可以对应着目...
2020-03-13 11:35:51 364
原创 【Linux内核】---- 02 从main到怠速
【Linux内核】---- 02 从main到怠速2.1 开中断之前的准备工作2.1.1 复制根设备号 和 硬盘参数表2.2.2 规划物理内存2.2.3 虚拟盘设置与初始化2.2.3 内存管理结构mem_map 初始化2.2.4 异常处理类中断服务程序挂接2.2.5 初始化块设备请求项结构2.2.6 与建立人机交互界面相关的外设的中断服务程序挂接2.2.7 开机启动时间设置2.2.8 系统开始激活...
2020-03-05 18:45:36 575
原创 【Linux内核】---- 01 开机上电初始化过程
【Linux内核】---- 开机上电初始化过程1.1 启动BIOS,准备实模式下的中断向量表和中断服务程序1.1.1 BIOS的启动原理1.1.2 BIOS在内存中加载中断向量表和中断服务程序1.1.3 加载操作系统内核程序并为保护模式做准备1.2 加载引导程序 bootsect从开机到 main 函数的执行分三步完成,其目的是实现从启动盘加载操作系统程序,完成main函数所需要的准备工作。...
2020-03-02 18:42:08 1745
5-FFmpeg编码YUV420P图片.zip
2020-10-13
4-FFmpeg-SDL视频播放器-音视频播放-更新.zip
2020-10-12
4-FFmpeg-SDL视频播放器-音视频播放.zip
2020-10-12
3-FFmpeg-SDL视频播放器-只能播放视频.zip
2020-10-10
2-VS2019-muxing.c编码视频-工程所有文件.zip
2020-10-09
VS2019-解码视频-工程所有文件.zip
2020-10-09
windows-ffmpeg4.3-dll-build.zip
2020-10-08
linux-ffmpeg4.3-build-带调试信息.zip
2020-10-08
linux-ffmpeg4.3-build-不带调试信息.zip
2020-10-08
bmp图片的快速傅里叶变换.zip
2020-09-10
22.分离RGB24中的RGB分量.zip
2020-08-27
【c代码+素材】分离YUV420P中的YUV分量.zip
2020-08-26
[素材]分离YUV420P像素数据中的Y、U、V分量.zip
2020-08-25
图的创建 --- 十字链表法.zip
2020-08-24
Python简单案例--收集熊猫TV主播人气行榜
2019-02-25
uboot-RK3568编译过程记录.txt
2024-06-19
optee-os.tar.gz
2024-06-19
rkbin.tar.gz
2024-06-19
u-boot-2024.07-rc3-build.tar.gz 编译好的 RK3399 u-boot ,供学习使用
2024-06-02
u-boot-2024.07-rc3.tar.bz2
2024-06-02
optee-build.tar.gz
2024-06-02
atf-bl31-build.tar.gz
2024-06-02
Yocto Kernel编译过程分析完整log
2022-05-07
Native层应用程序实现获取video0数据并进行H264编码-代码实现.zip
2020-11-14
Native层打开 V4L2 video0摄像头 - V4L2_MEMORY_USERPTR - NV12格式 - 2plane.cpp
2020-11-14
Native层打开 V4L2 video0摄像头-V4L2_MEMORY_DMABUF-YUYV格式-1plane.cpp
2020-11-14
Native层打开 V4L2 video0摄像头-V4L2_MEMORY_USERPTR-YUYV格式-1plane.cpp
2020-11-14
Video_Capture.cpp
2020-11-11
H264_Encoder.cpp
2020-11-09
在Native层实现MediaCodec H264 编码.zip
2020-11-02
ffmpeg-4.3-arm64含静态库-动态库-调试信息-(内含三个压缩包).zip
2020-10-23
5-FFmpeg编码YUV420P图片-方法二.zip
2020-10-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人