自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(309)
  • 收藏
  • 关注

原创 【Kernel】内存管理

1、概述内存管理是内核最复杂同时也最重要的一部分,具体包括内存中的物理内存页的管理,分配大块内存的伙伴系统,分配较小块内存的slab、slub和slob分配器,分配非连续内存块的vmalloc机制,以及进程的地址空间。 内核一般将处理器的虚拟地址空间分为用户空间和内核空间,在两个用户进程之间切换时会切换它们的上下文,用户空间发生变化,但内核空间保持不变。 可用的物理内存奖映射到内核的地址空间中。

2018-02-23 09:22:44 808

原创 【C++】C++11知识点串讲

1、long long类型C++11引入了long long类型,标准规定long long类型的长度至少是long类型的长度,即64bits,同其它类型一样,标准规定了各类型的最小长度,而编译器允许使用超过最小长度的限制。2、初始化列表int a = 0;int a(0);int a = {0}; // C++11int a{0}; // C++11C++11引入了初始化列表,把变量值放到一

2017-12-30 15:51:18 1657

原创 【OpenGL ES】同步对象和栅栏

OpenGL ES 3.0为客户-服务器模型,客户即应用程序,发送命令,服务器即OpenGL ES实现,处理命令,因为针对的是手持和嵌入平台,所以客户和服务器通常在同一个设备上。在客户-服务器模型中,一个常见的问题是,客户如何发送命令,每次发送一个命令还是缓存后批量发送,服务器如何处理命令,同步等待所有命令完成还是异步处理立即返回,下面介绍这个问题的几种解决方案。void glFlush(void)

2017-12-21 17:05:25 4999

原创 【OpenGL ES】帧缓冲区对象FBO

1、FBO使用OpenGL ES,一般要通过EGL来配置本地窗口系统,关于EGL的介绍可参照“【OpenGL ES】EGL简介”http://blog.csdn.net/ieearth/article/details/71180457。默认情况下,OpenGL ES使用窗口系统提供的帧缓冲区作为绘图表面,但是许多应用程序需要渲染到纹理,可行的方案是使用glCopyTexImage2D和glCopyT

2017-12-21 15:41:12 2791

原创 【OpenGL ES】片段操作

在OpenGL ES 3.0的可编程管线中,片段操作在片断着色器之后,下一步是帧缓冲区。片段着色器执行之后,片断着色器的输出是片段的颜色和深度值,片段在前往帧缓冲区途中经历的测试和操作包括裁剪区域测试、模板缓冲区测试、深度缓冲区测试、混合、抖动,下面逐个介绍。1、缓冲区缓冲区包括颜色缓冲区、深度缓冲区和模板缓冲区,它们都保存帧缓冲区中每个像素的不同数据,其中颜色缓冲区由前台和后台颜色缓冲区组成。缓冲

2017-12-20 16:26:31 1113

原创 【OpenGL ES】片段着色器

1、管线片段着色器在OpenGL ES 3.0的可编程管线的位置如下图所示。 2、输入输出片段着色器为片段操作提供了通用功能的可编程方法,输入和输出如下图所示。 输入或者可变值,in,是顶点着色器生成的插值数据,顶点着色器输出跨图元进行插值,并作为输入传递给片段着色器。 统一变量,uniform,是片段着色器使用的状态,为常量值,在每个片段上不会变化。 采样器,sampler2D,用于访问着

2017-12-19 21:12:42 2333

原创 【OpenGL ES】纹理

1、2D纹理2D纹理是OpenGL ES中最基本和最常用的纹理形式,它是一个图像数据的二维数组,纹理坐标(s, t)或(u, v)用作纹理图像中的索引,代表用于查找一个纹理贴图的规范化坐标。纹理图像的左下角由st坐标(0.0, 0.0)指定,右上角由坐标(1.0, 1.0)指定,在[0.0, 1.0]区间之外的坐标是允许的,在该区间外的纹理读取行为由纹理包装模式定义。一个纹理的单独数据元素称作纹素T

2017-12-19 17:27:17 2553

原创 【CS】(奇妙的)虚拟存储器

虚拟存储器,Virtual Machine,简称VM,是对主存(DRAM)的一种抽象,是计算机系统中最重要的概念之一。计算机中有各种存储器,而VM的存在,就是为了帮助我们有效地管理这些存储器,减少错误,提供一种简单的数据交互方法。VM,将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存中来回传送数据,而且为每个进程提供了一致的地址空间,并保护这个地址空间

2017-12-18 13:01:31 1120

原创 【C++】深入理解模板

1、简介模板是一种代码复用方式,其它的代码复用方式还包括继承和组合。当我们使用模板时,参数由编译器来替换,这非常像原来的宏方法,但却更清晰、更容易使用。在C++中,模板实现了参数化类型的概念,放在一对尖括号中,通过template这个关键字,告诉编译器随后的定义将操作一个或更多未指明的类型,当由这个模板产生实际代码时,必须指定这些类型以使编译器能够替换它们。下面是一个简单的模板类。template

2017-12-12 12:25:58 1304 1

原创 【C++】 运算符重载

1、一元运算符运算符重载是C++的一大特色,以函数重载的形式出现,函数名为关键字operator后跟着一个运算符,这些函数可以作为类的成员函数实现,也可以作为类的友元函数以全局函数的形式实现,而有的操作符只能以其中一种方式实现,因为全局函数没有this指针,所以在参数列表中比成员函数多一个参数。可以重载的一元运算符包括+、-、~、&、!、++、--,例子如下。// Overloading Unary

2017-12-08 13:33:15 597

原创 【C++】C++中的C

C++兼容C,但同样的东西,在C++和C中的表现可能不同,下面总结了一些。1、函数空参int f();函数空参时,C表示任意参数,C++表示没有参数。int f(void);C表示没有参数时使用void。2、函数参数标识符int f(int a);int f(int);声明函数时,C和C++都可以省略标识符。int f(int a) {}int f(int) {} // C++定义函数时,C++

2017-12-07 17:49:36 3999

原创 【C++】深入理解C++的常见关键字

1、autovoid foo() { auto int f = 0; }void foo() { int f = 0; }auto变量即自动变量或局部变量,位于一个进程的地址空间的堆栈段,它们是局限于一个函数的,出现在一个作用域内,进入作用域时自动生成,离开作用域时自动消失,这种变量默认就是auto。2、registerfor (register int i = 0; i < 100; ++i)

2017-12-07 17:46:27 978

原创 【C++】链接器及undefined reference的秘密

1、链接器当C或C++要对函数和变量进行外部引用时,根据引用情况,链接器会选择不同的处理方法。如果还未遇到过这个函数或变量的定义,链接器会把它的标识符加到未解析的引用列表中,即undefined reference。如果链接器遇到过这个函数或变量的定义,那么这就是已解决的引用。如果链接器在目标模块中不能找到函数或变量的定义,它将去查找库。库有某种索引方式,链接器不必到库里查找所有目标模块,而只需浏览

2017-12-06 12:36:40 1177

原创 【C】《C专家编程》核心知识点总结

1、穿越时空的迷雾编译器设计者的金科玉律:效率几乎就是一切,这包括两个方面,编译效率和运行效率,而后者起决定性作用。有很多编译优化措施会延长编译时间,但却能缩短运行时间;还有一些优化措施如清除误用代码和忽略运行时检查等,既能缩短编译时间,又能减少运行时间,同时还能减少内存的使用量,但有利就有弊,在于使用者如何权衡。早期C语言的许多特性是为了方便编译器设计者而建立的,如类型系统、数组下标从0而不是1开

2017-12-05 17:37:35 1185

原创 【Algo】排序算法

1、冒泡简介—— 冒泡排序,可以想象成从水中冒出的气泡,从水中到水面气泡逐渐变大,近似有序排列。冒泡排序就是这个思想,对于给定的一组N个数据,从前往后或者从后往前,依次比较两个相邻数据的大小,不满足排序要求(从小到大或者从大到小)的就交换它们的位置,每轮比较可以冒出一个最大数或者最小数。因为是两个数据作比较,所以每轮最多只需比较N-1次,而且对于已经冒出的数据即排序好的数据没有必要再进行比较,所以

2017-11-01 15:01:55 1222

原创 【OpenGL ES】顶点着色器

1、输入输出顶点着色器可用于传统的基于顶点操作,例如通过矩阵变换位置、计算照明方程式以生成逐顶点的颜色以及生成或者变换纹理坐标。顶点着色器的输入、输出如下图所示。输入变量或属性:用顶点数组提供的逐顶点数据。 统一变量和统一变量缓冲区:顶点着色器使用的不变数据。 采样器:代表顶点着色器使用的纹理的特殊统一变量类型。 着色器程序:顶点着色器程序源代码或者描述在操作顶点的可执行文件。 输出或可变变

2017-10-24 20:36:54 3046

原创 【CS】软件测试概念Software Testing

1、定义软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。行业标准IEEE/ANSI提出的软件工程术语中给软件测试下的定义是:使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。2、方法从是否关心软件内部结构和具体实现的角度划分: ——白盒...

2017-09-23 12:56:02 2859

原创 【C++】cppcheck

1、简介cppcheck是一款用于C/C++的代码静态检查工具,与编译器和其它的分析工具不同,cppcheck不检查代码中的语法错误,主要目的是检查编译器在正常情况下发现不了的错误,即代码中真正的错误或者说运行时错误,也就是计算机术语中的zero false positives,如越界操作、内存泄漏、空指针引用、变量未初始化等等。2、示例test.c示例代码如下:int main(){ c

2017-09-21 13:49:39 1781 1

原创 【C++】cpplint

1、简介cpplint或cpplint.py是Google开发的一款代码静态检查工具,Python实现,用以检查C++代码是否遵循Google代码规范,还可以发现语法错误。2、示例test.cpp示例代码如下:int foo(int a) { if (a < 0) { a = 0; } return a;}int bar(int a) { if (a

2017-09-21 13:48:32 3210

原创 【Bash百宝箱】doxygen

1、简介doxygen是一个用于多种编程语言的文档系统,支持C++、C、Java、Objective-C、Corba和Microsoft风格的IDL、PHP、C#、D等。在Linux下,doxygen是一个命令行工具,另外还有一个GUI工具doxywizard,下面简单介绍doxygen的用法。2、配置文件在Linux shell执行如下命令,其中-g表示生成配置文件,-s表示配置文件中不保留注释代

2017-09-20 18:54:47 829

原创 【C】C语言内存函数

C语言内存函数向编程人员提供复制、比较与设置内存块的有效方式,这些函数属于字符串函数,放在库文头文件string.h中声明,C89增补1增加了5个操纵宽字符数组的新函数。string.h中的这些函数名称以mem开头,内存块在标准C语言中用void*类型指针指定,常用函数原型如下:void* memchr(const void *ptr, int val, size_t len);int memcm

2017-09-09 11:16:05 1341

原创 【C】C语言字符处理函数

字符处理有两类函数:分类和转换,每个字符分类函数的名称以is开头,返回int类型的值,在参数为指定类时为非0值即真,否则为0即假,每个字符转换函数的名称以to开头,返回int类型的值,表示一个字符或EOF。字符处理函数在库头文件ctype.h中声明,另外,C89增补1定义了对宽字符进行运算的分类与转换函数,与普通字符对应,在头文件wctype.h中声明。字符分类处理函数具体如下:// ctype.h

2017-09-09 10:49:33 1149

原创 【C】C语言核心知识点总结(Reference Manual)

1、词法(1)字符集——C语言字符集使用ISO/IEC 10646基本拉丁字符集,包括52个大小写拉丁字母,10个数字,空格,水平制表符HT,垂直制表符VT,换页符FF,以及29个特殊字符,它们是感叹号!,数字号#,百分号%,折音符^,和号&,星号*,左括号(,下划线_,右括号),连字符-,加号+,等号=,波浪号~,左方括号[,右方括号],撇号',竖线|,反斜杠\,分号;,冒号:,引号",左花括号{

2017-09-03 15:59:00 2771

原创 【C】表达式

C语言表达式——(1)可以作为左值的非数组表达式(2)要求某个操作数为左值的运算符(3)运算符的优先级与结合性(4)二元运算符表达式(5)按位运算符(6)建议复杂的表达式最好使用圆括号进行分组,而不要依靠默认的操作符优先级与结合性;使用逻辑与、逻辑或的短路特性是个很好的选择。

2017-09-03 14:52:50 1035

原创 【QT】float double的范围与精度及Qt中的qfloat16

1、格式float和double都是浮点数据类型,前者为单精度占四个字节,后者为双精度占八个字节。浮点数的存储格式采用IEEE标准,float包括1个符号位、8个指数位和23个尾数位,double包括1个符号位、11个指数位和52个尾数位,其中符号位表示正负,为1时表示负数,为0时表示正数。2、范围浮点数的范围由指数决定,以float为例,指数共8个二进制位,以无符号形式存储,指数范围为0~255,

2017-08-25 18:12:37 11364

翻译 【QT】QApplication简介

1、QApplicationQApplication类管理GUI程序的控制流和主要设置,是基于QWidget的,为此特化了QGuiApplication的一些功能,处理QWidget特有的初始化和结束收尾工作。 对于使用了Qt的任何GUI程序来说,不管何时何地有多少个Window,但只有一个QApplication对象,如果不是基于QWidget的程序,相应的则使用QGuiApplication,

2017-08-16 19:34:16 23766

翻译 【QT】QObject简介

1、简介QObject类是所有Qt对象的基类,是Qt对象模型的核心,这个模型的主要特征为信号与槽,信号与槽是一个非常重要的机制,用于对象间的通信。连接信号与槽使用connect()函数,断开连接使用disconnect()函数,blockSignals()函数可以临时屏蔽信号,避免循环不断的通知,另外,protected级别的connectNotify()和disconnectNotify()函数还

2017-08-16 19:33:26 4921

原创 【QT】Qt QFlags源码分析

QFlags是个模板类,目的是提供类型安全的enum,在头文件qflags.h中定义,传统上C++使用int或uint存储enum值,却没有作类型检查。1、QFlagQFlag是一个基础类,还用到了QTypeInfo类,定义如下:// 在C++11中Q_DECL_CONSTEXPR为constexpr// 在C++11中Q_DECL_NOTHROW为noexcept// 重载了operator(

2017-08-09 18:37:15 3220

原创 【QT】Qt对大小端字节序的处理

1、Endian Order什么是大小端字节序(Endian Order)?以四字节十六进制整型数0x12345678为例,按照书写习惯,从左到右,高位在前,低位在后,我们称0x12为最高有效字节,0x78为最低有效字节,在存储这个数字时,需要四字节的地址空间,比如说从0x00到0x03,地址空间是从低地址0x00到高地址0x03的一段连续地址,那么,低地址存储最高有效字节的形式为大端(Big En

2017-08-09 18:36:14 19833 3

原创 【QT】Qt Compiler Detection(编译)

1、Compiler&GNUQt是跨平台的,从下面的编译配置选项(宏)中可以看出Qt支持的编译环境。// qcompilerdetection.h/* The compiler, must be one of: (Q_CC_x) SYM - Digital Mars C/C++ (used to be Symantec C++) MSVC - Micros

2017-08-08 18:22:27 5748

原创 【QT】Qt 5.9 QWidget程序执行过程分析

一个最简单的QWidget程序可能是下面这个样子:int main(int argc, char *argv[]){ QApplication a(argc, argv); QWidget w; w.show(); return a.exec();}首先是QApplication实例化,然后创建QWidget对象并show出来,最后通过exec进入事件循环,下面逐个分

2017-08-08 12:30:44 3121 1

原创 【QT】QPA

1、QPAQPA即Qt Platform Abstraction,是Qt5里面的平台抽象层,用以取代Qt for Embedded Linux以及Qt4中的平台接口。QPA插件通过定义QPlatform开头的一系列类的子类实现,其中有两个根类,QPlatformIntegration和QPlatformTheme,前者用于窗口系统的集成,后者用于更深层次的平台主题化和集成,QStyle不属于QPA,

2017-07-28 17:56:18 5963

翻译 【QT】Qt for Embedded Linux Hardware Accelerated Graphics

1、硬件加速在嵌入式设备上设计应用程序时,通常要在图形特效与性能之间作出选择,不过在大多数设备上由于硬件特性,以及越来越多的设备上硬件能够很好地支持图形操作,可能不必担心这个问题。使用图形加速,不仅可以使用动态图形特效,还有其它两方面好处。一方面,图形硬件加速比CPU的电源使用率更高,当完成同样的事情时,CPU所需的时钟频率可能是GPU的20倍,例如,一个典型的硬件加速的手机图形单元可以在一个时钟周

2017-07-05 21:58:36 1916

翻译 【QT】Qt for Embedded Linux Architecture

1、简介Qt for Embedded Linux(Qt4.8),是用于嵌入式设备(Linux)的开发GUI和应用程序的C++框架,提供了一个轻量级的窗口系统(QWS)以及标准的Qt API,基本架构如下图所示。Qt for Embedded Linux程序直接向Framebuffer写数据,Framebuffer设备是图形硬件的一种抽象,使得我们通过定义好的接口就可以访问图形硬件,而不比关心底层更

2017-07-05 21:56:52 1966

原创 【QT】深入qt信号与槽实现原理

1、先上示例代码先上示例代码直观地感受一下qt信号与槽的用法,后面再详细解释。通过QtCreator创建一个Qt Widget工程(没有创建ui文件,其它选项为默认值),工程名为SS,最后在SS目录下会生成5个文件:main.cpp、mainwindow.cpp、mainwindow.h、SS.pro和SS.pro.user,然后对这几个文件稍作修改,最终的源码如下。SS.pro——QT += co

2017-07-01 05:19:38 12384 1

原创 【Arch】Android input系统之input命令

1、简介在Android input系统中,包括一个input命令,用于模拟input事件,通过keycode或字符串向设备发送key事件。2、源码位置frameworks/base/cmds/input/3、结构input命令实际上就是一个shell脚本,真正执行的是app_process命令,所用的Java类库为input.jar。从源码Input.java中可以看出,input事件来源包括ke

2017-06-21 19:59:26 1318

原创 【FUTURE】麻省理工科技评论-年度10大突破性技术-导读

《麻省理工科技评论》(MIT Technology Review)于1899年在美国麻省理工学院创刊,是历史悠久、影响极大的技术商业类杂志,内容覆盖广泛,涉及互联网、通讯、计算机技术、能源、新材料、生物医学和商务科技几大领域,重点关注新兴科技及其对商业和社会的巨大影响,为科技人士及商业领袖提供前瞻性的资讯和独到深入的行业趋势研究分析。近些年,MIT每年都会公布10大突破性技术(10 Breakthr

2017-06-21 19:58:14 2136

原创 【Python】python逆向入门

1、开发环境我们在Windows 10上开始python逆向之旅,首先开始搭建开发环境,python解释器使用最新的3.6.1,IDE使用PyCharm社区版2017.1.3,下载地址如下所示,下载完成后直接双击安装包安装即可,随后设置PyCharm的Project Interpreter为刚才安装的Python解释器就可以了。【Python】https://www.python.org/downl

2017-06-08 09:33:51 9139 5

原创 【Linux】深入解析Linux proc文件系统

在Linux上,proc是一个伪文件系统,提供了访问内核数据的方法,一般挂载在“/proc”目录,其中的大部分内容是只读的,挂载(mount)信息可能为:proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)proc文件系统支持如下挂载选项:hidepid=_ngid=_gid_n设置访问“/proc/[pid]”目录的权限,可以取值为0

2017-06-03 08:05:06 12070

原创 【Wayland】初识Wayland(X、Mir)

【声明】下图copy自wikipedia,如有侵权请告知。在介绍Wayland之前,先熟悉一下X与Mir,简单来说,同样作为显示服务,X是一个老派的庞然大物,Wayland是一颗节节高的芝麻,Mir是一个颇受争议的新秀,其它的显示服务还包括Android的SurfaceFlinger,MacOS家族的Quartz Compositor等。1、Mir【参考ubuntu-wiki】https://wik

2017-05-28 09:41:04 12850 1

空空如也

空空如也

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

TA关注的人

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