自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 资源 (7)
  • 收藏
  • 关注

原创 C++学习之Numeric overflow due to incorrect type casting

由于不正确的类型转换导致的数字溢出,可能会导致错误的结果。这种错误通过debug并不好追踪。示例1:typedef unsigned long long uint64_t;typedef unsigned int uint32_t;uint64_t foo(uint32_t x, uint32_t y){ uint64_t z; z = (uint64_t)( x * y );

2016-03-06 10:27:08 862

原创 C++学习之内联函数、引用变量、函数重载、函数模板

记录C++中函数的一些语法内容

2016-02-26 15:26:29 1982

原创 Git学习初级篇(下)

简单记录了学习 git 时用到的与服务器相关的知识。

2016-02-22 22:33:50 1183

原创 Git学习初级篇(上)

Git学习初级篇(上)主要记录了git使用中最常用的几条命令

2016-02-21 08:17:40 1236

原创 ffmpeg tool 简单介绍

ffmpeg tool 使用简单介绍ffmpegffplayffprobeffserverffmpeg tool 使用简单介绍本文主要简单总结 ffmpeg 的四个 tool 的使用:ffmpeg : 一个转换多媒体文件格式的命令行工具ffplay :一个简单的基于SDL和FFmpeg库的媒体播放器ffprobe : 一个简单的多媒体流分析器ffserver : 一个针

2015-12-06 00:11:09 1661

原创 由找工作引发的读研感悟

作者:李冰·微博:懒人李冰·豆瓣:懒人李冰引子:         9月底找到工作后,就想写一篇文章,总结一下自己的研究生生活和找工作期间的感受,拖到现在,今天补上。为什么想写这篇文章:     1、读研的过程给了我很多启示,想记录下来。     2、在学习的过程中,没人指导让我感

2014-11-27 08:51:29 4097 25

原创 算法学习之查找算法:动态查找表(1)二叉排序树

引言:       动态查找表的特点是在表结构

2014-09-25 14:26:15 3040

原创 算法学习之查找算法:静态查找表(2)有序表查找

如果静态查找表是一个有序表,则可以使用折半查找。       折半查找的过程是:先确定待查记录所在的范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。折半查找过程是以处于区间中间位置记录的关键字和给定值比较,若相等,则查找成功,若不等,则缩小范围,直至新的区间中间位置记录的关键字等于给定值或者查找区间的大小小于零时(表明查找不成功)为止。       关键字key与

2014-09-24 20:57:55 2097

原创 算法学习之查找算法:静态查找表(1)顺序表查找

引言:        查找表一般

2014-09-22 06:44:17 3977 1

原创 算法学习之排序算法:堆排序

要了解堆排序,首先要了解堆的概念,因为本文主要研究堆排序的算法,此处对数据结构堆只是给出概念:n个元素的序列{k1,k2,...kn},当且仅当满足如下关系时,称之为堆。k[i]  (或k[i] >= k[2i]且k[i] >= k[2i+1])比如:序列96、83、27、38、11、09(或12、36、24、85、47、30、53、91)都是堆。       如果将堆对应的一维数

2014-09-20 08:16:02 1757 1

原创 算法学习之排序算法:归并排序

“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。无论是顺序存储还是链表存储结构,都可在O(m+n)的时间量级上实现。        归并排序又是一类不同的排序方法。假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个为2或1的有序子序列;再两两归并,....... ,如此重复,直至得到一个长度为n的有序序列为止。初始关

2014-09-13 09:12:37 1408 1

原创 算法学习之排序算法:选择排序

选择排序:每一趟在n-i+1(i=1,2,...,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。一、简单选择排序        一趟选择排序操作:       通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1       对L[1...n]中记录进行简单选择排序的算法为:令i从1至

2014-09-12 07:17:35 1454 2

原创 算法学习之排序算法:快速排序

快速排序:快速排序是对冒泡排序的一种改进。它的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。一趟快速排序的具体做法:1、附设两个指针low和high,它们的初值分别为low和high,设枢轴记录的关键字为pivotkey。2、首先从high所指位置起向前搜索找到第一

2014-09-11 09:15:20 1606

原创 算法学习之排序算法:冒泡排序

冒泡排序:不同于插入排序,冒泡排序主要通过“交换”来完成。基本思想:1、将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序(Record[1].key > Record[2].key),则将两个记录       交换之,然后比较第二个记录和第三个记录的关键字。2、依次类推,直至第n-1个记录和第n个记录的关键字被安置到最后一个记录的位置上。完成第一趟冒泡排序。结果使

2014-09-07 07:25:07 1620

原创 算法学习之排序算法:插入排序(直接插入排序、折半插入排序、2-路插入排序)

引言:      插入排序作为最简单易于理解的排序算法,基本实现比较简单。本文详细介绍直接插入排序,并给出实现,简单的介绍折半插入排序,并给出2-路插入排序和表插入排序两种插入排序,但并未给出具体实现。一、直接插入排序       直接插入排序的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。

2014-09-07 06:03:45 2140

原创 算法学习之排序算法:希尔排序

希尔排序又称“缩小增量排序”,它的基本思想是:先将整个待排记录序列分割成若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对记录进行一次直接插入排序。      希尔排序的一个特点是:子序列的构成不是简单地“逐段分割”,而是将相隔某个“增量”的记录组成一个子序列。这就使得希尔排序中关键字较小的记录不是一步一步地往前挪动,而是一次按照“增量”的大小跳跃式地往前移,从而使

2014-09-06 23:50:10 1811

原创 LINUX设备驱动程序笔记(五)中断处理

中断处理流程如下:     1、发生中断时,CPU执行异常向量vector_irq的代码。     2、在vector_irq里面,最终会调用中断处理的总入口函数asm_do_IRQ。     3、asm_do_IRQ根据中断号调用irq_desc数组项中的handle_irq。     4、hadnle_irq会使用chip成员中的函数来设置硬件,比如

2014-08-27 08:33:36 1977

原创 LINUX设备驱动程序笔记(四)并发和竞态

.并发及其管理       大部分竞态可通过使用内核的并发控制原语,并应用几个基本的原理来避免。第一个规则是,只要可能,就应该避免资源的共享,这种思想的明显应用就是避免使用全局变量。但硬件资源本质上就是共享的,软件资源经常需要对其他执行线程可用。全局变量并不是共享数据的唯一途径,只要我们的代码将一个指针传递给了内核的其他部分,一个新的共享就可能建立。在单个执行线程之外共享硬

2014-08-27 08:31:31 1219

原创 LINUX设备驱动程序笔记(三)字符设备驱动程序

.主设备号和次设备号       对字符设备的访问时通过文件系统内的设备名称进行的。那些设备名称简单称之为文件系统树的节点,它们通常位于/dev目录。字符设备驱动程序的设备文件可通过ls -l命令输出的第一列中的'c'来识别。块设备同样位于/dev下,由字符'b'标识crw-rw----  1 root root    253,   0 2013-09-11 20:33 usbmon0

2014-08-27 08:28:10 1339

原创 LINUX设备驱动程序笔记(二)构造和运行模块

一>:设置测试系统         首先准备好一个内核源码树,构造一个新内核,然后安装到自己的系统中。          二>:HelloWorld模块#include //定义了驱动的初始化和退出相关的函数#include //定义了内核模块相关的函数、变量及宏 MODULE_LICENSE("Dual BSD/GPL"); //该宏告诉内核,该模块

2014-08-27 08:25:55 1607

原创 LINUX设备驱动程序笔记(一)设备驱动程序简介

:设备驱动程序的作用       从一个角度看,设备驱动程序的作用在于提供机制,而不是策略。在编写驱动程序时,程序员应该特别注意下面这个基本概念:编写访问硬件的内核代码时,不要给用户强加任何特定策略。因为不同的用户有不同的需求,驱动程序应该处理如何使硬件可用的问题,而将怎样使用硬件的问题留给上层应用程序。       从另一个角度来看驱动程序,它还可以看作是应用程序和实际设备之间的

2014-08-27 08:21:06 1605

原创 嵌入式Linux开发环境搭建

一、制作u-boot.bin文件:   tar xjf u-boot-1.1.6.tar.bz2   cd u-boot-1.1.6   patch -p1    make 100ask24x0_config   make二、制作适用于4.3寸屏幕的uImage文件:   tar xjf linux-2.6.22.6.tar.bz2   cd linux

2014-08-18 13:05:04 1361

原创 Linux内核之进程管理

写在前面:       在Linux的内核的五大组成模块中,进程管理模块时非常

2014-07-22 12:18:55 3341

原创 毕业找工作准备

这个假期过后,就要找工作了,为找工作列一个清单吧。       语言篇:《C程序设计语言》、《C陷阱与缺陷》、《C专家编程》、《C和指针》、《C Primer Plus》数据结构与算法:《数据结构(C语言版)》、《数据结构与算法分析——C语言描述》、《剑指offer》《编程之美》、《程序员面试宝典》计算机网络:《TCP/IP详解》《Uni

2014-07-16 21:21:09 2073 5

原创 七大内部排序算法总结(插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、归并排序、堆排序)

写在前面:                排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。因此排序掌握各种排序算法非常重要。对下面介绍的各个排序,我们假定所有排序的关键字都是整数、对传入函数的参数默认是已经检查好了的。只是简单的描述各个算法并给出了具体实现代码,并未做其他深究探讨。基础知识:

2014-07-16 08:01:40 9993 10

原创 静态查找表:顺序查找、折半查找、分块查找

引言:       除去各种线性和非线性的数据结构外,还有一种在实际应用中大量使用的数据结构——查找表。查找表是由同一类型的数据元素构成的集合。       对查找表经常进行的操作有:1、查找某个"特定的"数据元素是否在查找表中;2、检索某个"特定的"数据元素的各种属性;3、在查找表中插入一个数据元素;4、从查找表中删去某个数据元素。对查找表只作前两种统称为"查找"的操

2014-07-16 07:55:55 4776

原创 二叉查找树

引言:        使二叉树成为二叉查找树的性质是:对于树中的每个节点X,它的左子树中所有关键字值小于X的关键字值,而它的右子树中所有关键字值大于X的关键字值。二叉查找树声明struct TreeNode;typedef struct TreeNode *Position;typedef struct TreeNode *SearchTree;struct T

2014-07-12 10:56:37 1029

原创 队列——数组实现

引言:       队列的实现除了链表外,也可用数组实现。分析描述:      队列的结构:typedef int ElementType;typedef struct QueueRecord{ int Capacity; int Front; int Rear; int Size; ElementType *Array;}QueueRecor

2014-07-10 18:26:50 1319

原创 【C语言天天练(二四)】内存分配

引言:              对于C语言程序,了解它运行时在内存中是如何分配的对于我们理解它的运行机制是非常有用的。下面就总结一下C语言程序的一些内存分配知识。一        一段C程序,编译连接后形成的可执行文件一般有代码段、数据段、堆和栈等几部分组成。其中数据段又包括只读数据段、已初始化的读写数据段和未初始化的BSS段。如下图所示:文本段:存放程序执行

2014-07-10 16:08:37 1461 1

翻译 C进阶指南(3):显式内联、矢量扩展、C的逸闻轶事

五、显式内联函数代码可被直接集成到调用函数中,而非产生独立的函数目标和单个调用。可显式地使用 inline 限定符来指示编译器这么做。根据 section 6.7.4 of C standard inline 限定符仅建议编译器使得”调用要尽可能快”,并且“此建议是否有效由具体实现定义”要用内联函数优点,最简单的方法是把函数定义为 static ,然后将定义放入头文件。

2014-07-10 11:24:30 1319

翻译 C进阶指南(2):数组和指针、打桩

原文地址:http://pfacka.binaryparadise.com/articles/guide-to-advanced-programming-in-C.html翻译地址:http://blog.jobbole.com/72830/三、指针和数组尽管在某些上下文中数组和指针可相互替换,但在编译器看来二者完全不同,并且在运行时所表达的含义也不同。

2014-07-10 11:20:41 1279

翻译 C进阶指南(1):整型溢出和类型提升、内存申请和管理

原文地址:http://pfacka.binaryparadise.com/articles/guide-to-advanced-programming-in-C.html翻译地址:http://blog.jobbole.com/72830/C语言可用于系统编程、嵌入式系统中,同时也是其他应用程序可能的实现工具之一。 当你对计算机编程怀有强烈兴趣的时候,却对C语言不感冒,这种可能性

2014-07-10 11:11:38 1123

原创 【剑指offer】打印1到最大的n位数

题目描述:       输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。分析描述:       首先想到的是先计算出最大的n位数是多少,然后用一个循环从1开始打印直到最大的n位数。void Print1ToMaxOfNDigits_1(int n){ if(n <= 0) return;

2014-07-10 10:21:20 1360

原创 【剑指offer】数值的整数次方

题目描述:       实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。分析描述:       对于实现一个函数,首先要做的就是全面考虑它的参数的全部可能。对于此题中的数值函数,应该考虑的参数有整数、0、负数、浮点型、整型、是不是大数问题等。

2014-07-10 07:22:35 1199

原创 【剑指offer】二进制中1的个数

题目描述:       请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。分析描述:            1、对一个整数的二进制形式,要想知道其中1的个数,首先想到的应该就是遍历整个二进制数,用到的方法当然就是移动了(包含左移或右移)。例如,用1来跟给定的整数做与运算。如果结果为1

2014-07-09 21:09:00 870

原创 【剑指offer】斐波那契数列

题目1描述:       写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列的定义如下:f(n) = 0 (n = 0);  f(n) = 1 (n = 1);  f(n) = f(n-1)+f(n-2) (n > 1);分析描述:       在大多数的C语言教科书中,一般会用递归求斐波那契数列。代码如下:long long Fibonacci(

2014-07-09 20:01:37 941

原创 【剑指offer】旋转数组的最小数字

题目描述:           把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。分析描述:       求一个数组中的最小值,最简单的办法就是逐个比较数组中各个元素的值,遍历完整个数组,即可得数组中最小元素。但

2014-07-09 17:04:08 1031

原创 队列——链表实现

引言:          队列与栈的区别是队列是先进先出的数据结构。为了使得出入队列容易,可以引入队列头指针和队列尾指针。分析描述:       队列的结点结构。typedef int QElemType;typedef struct QNode{ QElemType data; struct QNode *next;}QNode, *QueuePtr;

2014-07-09 13:38:52 1851

原创 栈——数组实现

引言:            使用链表实现栈存在“对malloc和free的调用开销昂贵”的缺点,特别是与指针操作的例程相比尤其如此。利用数组实现栈可以避免了指针。但它的缺点是可能存在空间的浪费。分析描述:       数组栈的结点元素。#ifndef ERROR#define ERROR (0)#endif#ifndef OK#define OK (!

2014-07-09 10:24:51 1212

原创 栈——链表实现

引言:              栈是先进后出的数据结构类型。在许多应用中也会经常用到,比如迷宫的求解时会用到栈结构。掌握栈的基本操作对于解决问题,有很大的帮助,尤其是编程中经常用到的递归的思想,就是栈的一个例子。分析描述:              栈的实现有两种方法,一种是用链表来完成。这种方法比较简单,我们先掌握这种方法。另一种是用顺序表(即数组)来实现栈。下一节

2014-07-09 09:31:45 1004

1. A novel macroblock-tree algorithm for high-performance optimization of.pdf

A novel macroblock-tree algorithm for high-performance optimization of.pdf

2021-06-26

AV1 Specification pdf

AV1 Bitstream & Decoding Process Specification pdf

2018-10-30

u-boot README翻译

u-boot README的翻译详细讲解了

2014-11-11

Vi IMproved-vim.pdf

详细介绍了vi及Vim的使用技巧,pdf是制作的,不是扫描的,非常清晰,唯一的缺点是没有目录,但可以通过查找找到。

2014-11-11

u-boot源码start.S逐行分析

逐行逐句的分析u-boot的启动代码中start.S的语句,这是我见过的最详细的分析uboot的文档了。

2014-05-31

Linux下的lds链接脚本资源

详细讲解了链接脚本的结构,熟读后对于基本的链接脚本问题,可以轻松的分析,并能够自己写一个简单的脚本。

2014-05-31

空空如也

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

TA关注的人

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