- 博客(21)
- 收藏
- 关注
转载 java 核心
从C++到JavaJava是C系编程语言,许多语法与C、C++相似,对于C/C++开发者来说,入门相当容易,但也更容易忽略其间某些细微的差别,需要特别注意:1. Java成员函数必须在类的内部定义实际上,C++也允许在类的内部给出成员函数的定义,只是由于C++沿用了C语言的include机制,而这种定义方式会导致函数重定义,因此大部分情况下会将成员函数的定义与类
2013-08-26 10:52:48 750
转载 C 语言核心
编程模型c语言是系统级编程语言,对于运行时支持的要求最小,本身不提供复杂的数据结构,任何扩展性的功能哪怕是基本的输入输出操作都需要依赖外部库。可以这样讲,C是高级语言中的低级语言,它提供的是某种对机器的最基本的抽象,因此,理解机器本身是理解C语言的核心。下图给出了一个简单的机器抽象,以此来剖析C语言的编程模型。首先是一个负责执行代码的中央处理器抽象。它需要完成所
2013-08-26 10:49:52 1841
转载 C++ 核心
第一阶段:更好的C语言声明(declaration)任何变量和函数在使用前必须实现声明。(定义也是一种声明方式。对于变量,使用extern关键字强调是声明不是定义;对于函数,可以不使用extern 关键字,不带函数体的函数名连同参数等被认为是函数的声明。)命名空间(namespace)的概念命名空间是为了解决C++中变量、函数命名的冲突而服务的,
2013-08-26 10:46:57 1147
原创 FFmpeg基础一
一、研究数字多媒体,首先要了解几个基本术语(ffmpeg的相关文档几乎都是英文的,不弄懂几个基本术语看文档还是比较吃力的) 1、容器/文件 (Container/file) ,既多媒体源文件 2、媒体流(Stream):与时间相关的一段连续数据。既某一时刻对应某个数据,这样的多个连续数据组在一起就成了媒体流。 3、数据帧/数据包(Frame/Packet):一个媒体流由大量的数据
2013-08-26 10:32:08 1808
原创 C语言创建柔性数组
typedef struct _soft_array{ int len; int array[]; //这里array仅仅是一个占位符,它不占据存储空间}SoftArray; //P.S. sizeof(SoftArray) == 4SoftArray * create_soft_array(int size){ SoftArray * ret = NULL;
2013-08-24 17:07:00 594
原创 C 语言中的static
1、静态函数 static C 语言中,静态函数又叫内部函数,用来指明指定的函数只能用于本文件,在其他文件中不能调用。这样做的好处是:不同的人编写不同的函数时,不用担心自己定义的函数是否会与其它文件中的函数同名,因为同名也没有关系。 没有static修饰的函数,是外部函数,C语言中默认的函数都是外部函数,当然也可以用extern关键字指明。
2013-08-24 14:23:35 653
原创 图像处理基础(像素、RGB、YUV etc.)的那点小事
为了方便记录,以下名词等价: 1、色彩空间==颜色空间==色域==表示颜色的模型或方法2、采样方式==(图像)信息元素的记录方式==数据结构中信息的记录方式一、像素到底是什么? 像素是用来描述图像信息元素的数据结构 如果把一张图片看成是一堆信息元素的集合,那么为了描述一张图片,我们要先建模,用一个数据结构来表示信息元素。从而,建模后图像就成了一堆数据结构(结构体)的集合,现在给这
2013-08-23 22:20:52 7975 1
原创 理解“指针的指针”
一、关于指针的指针 **p ,最容易想到的用法就是用他来控制指针数组了。还有一种比较犯错却又常用的用法,现在一起来讨论下:二、通过例子来说 这里,我们想要创建一个能够用于动态分配内存的函数,在main函数中调用该方法并传递一个实参,GetMemory分配好内存后,再将该段内存的首地址传给实参void GetMemory(char *p,int num){p=(char*)mall
2013-08-23 09:56:53 661
原创 makefile 中自动化变量一览表
数据摘自陈皓的 跟我一起写makefile先讲下说明中用到的术语:规则语法如下, : [tab] 1、目标集合,就是targets2、依赖目标集合,就是prerequisites3、模式,就是pattern,eg: %.c ,标明所有以.c 为后缀的文件自动变量说明$@规则中的目标集合,使用的时候是一个一个的从集合中取
2013-08-21 17:20:33 839
原创 (三)线程控制--java 多线程编程的那点小事
线程的控制,所白了就是控制线程间的一些时序问题,下面开始讲可以控制线程时序的几个方法:一、睡眠函数 sleep (1)Thread.sleep(); (2)TimeUnit.XXX.sleep(); 睡眠函数在上一节结束的时候已经讲过了,这里就balabala了二、等待函数 Join join 函数在逻辑上理解起来可能有些绕,其实都怪这个名字起的太烂
2013-08-13 11:45:17 824
原创 (二)拒绝单一,用不同的方法实现线程--java 多线程编程的那点小事
是不是不管一个线程任务有多简单,都要重新new 一个java class ?当然不是,java 中线程的实现非常灵活,下面就具体讲下如何通过不同的方式来实现一个线程;一、使用“Thread”+“有名内部类”来实现线程public class InnerThread1 { private Inner inner; private class Inner extends T
2013-08-13 10:29:51 764
原创 (一)线程的创建和启动--java 多线程编程的那点小事
一、创建线程 谈到创建线程,脑子里总会想起这么几个关键字:Runnable、Thread;但他们之间到底是什么关系呢? 1、Runnable:创建线程的目的肯定是要执行一个任务或者说一段业务逻辑。那么我们怎么通知系统这个系统要执行什么样的任务?答案就是:实现Runnable接口的run方法,把业务逻辑写到其中。 (我们可以把Runnable中的run方法比作一份“任务方案书”,现
2013-08-12 17:29:23 743
原创 (非)守护线程 Daemon thread 的那点小事
一、Daemon thread 的定义 1、在java 中守护线程 daemon thread 的定义是:(1)java 虚拟机必须要等全部的“非守护线程”non-daemon 全部退出,它自己才会退出。(2)如果在 java 虚拟机中只有 守护线程存在,那么java虚拟机会退出。注意:1、main 函数所在线程是非守护线程2、如果main函数结束了,如果此时其他的线程都是
2013-08-12 15:23:39 1577
原创 关于设计模式的那点小事--桥接《Bridge》模式(1)
1、Java 中的接口,一、DIP 依赖反转原则 在了解何谓桥接模式之前,我们先来看一下经典的面向对象设计原则之一:DIP原则。所谓DIP原则,即Dependency Inversion Principle,用中文解释就是“依赖反转原则”。在传统的面向过程的程序设计中,模块之间的关系式:(1)高层次模块 依赖 低层次模块 (2)抽象模块 依赖 具体模块这种依赖关系
2013-08-10 22:26:09 868
原创 关于"堆栈"和"堆"的那点小事
本人没事喜欢扯淡,,和同学一扯到程序,就难免会涉及“堆栈”和“堆”,但很长时间了,对它的认识还只停留在只知道他是干什么的,不知道它到底是个什么玩意。 今天有时间,就去网上搜罗些资料,将【关于"堆栈"和"堆"的那点小事】记录在此,供以后思考用之。 在深入讨论之前,我们要先了解以下基本知识: 1、这里讨论的硬件平台是:Intel x86 2、堆栈和堆的区别: (1
2013-08-10 19:14:59 1305
转载 curl 命令
Curl是Linux下一个很强大的http命令行工具,其功能十分强大。1) 二话不说,先从这里开始吧!$ curl http://www.linuxidc.com回车之后,www.linuxidc.com 的html就稀里哗啦地显示在屏幕上了 ~2) 嗯,要想把读过来页面存下来,是不是要这样呢?$ curl http://www.linuxidc.com > page.h
2013-08-10 15:32:53 645
原创 ARM中指令的学习和分析(用法、格式以及英文全称)
ARM指令及功能描述 满光明 2006-3-18 于电子科技大学指令格式: 指令{条件}{S} {目的Register},{OP1},{OP2}"{ }"中的内容可选。即,可以不带条件只有目的寄存器,或
2013-08-07 21:42:27 2918
原创 ARM高分笔记--(三)ARM寻址方式
寻址方式就是说: 处理器根据指令中给出的地址信息来寻找物理地址的方式一、立即寻址立即寻址也叫立即数寻址,就是说:操作数本身就在指令中,这个操作数就叫立即数。所以这种指令对应的寻址方式就叫立即寻址。eg: ADD R0,R0,#1 ; R0= R0+1注意: 当操作数作为立即数时,必须以“#”为前缀,对于16进制的立即数还要加上 “0x“ 或 ”&“二、寄存器
2013-08-06 20:01:45 1319
原创 ARM高分笔记--(二)ARM寄存器
一、1、ARM 共有37个32位的寄存器,其中:31个通用寄存器,6个状态寄存器。2、这些寄存器不能同时被访问,ARM的工作状态和运行模式决定了哪些集训器可以访问哪些不能被访问。3、但,任何时候:15个通用寄存器 R0~R14 、 程序计数器PC 和 一个状态寄存器都是可以被访问的。 二、1、ARM 状态下的通用寄存器和程序计数器R0 ~ R15 ,16个R
2013-08-05 21:36:56 916
原创 ARM高分笔记--(二)ARM工作模式
一、ARM 有两种工作状态(1)ARM 状态,此时处理器执行32位的字对齐的ARM指令。(2)Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令二、ARM处理器又要分为大端和小端格式(ARM9、ARM11 都是小端格式)所谓的大小端格式主要讲的是: 数据的逻辑高地位 和 地址的高地位的关系,如图
2013-08-05 20:55:43 717
原创 MIME
1、MIME 是一个互联网标准,简单的说它的作用是:规定了哪种扩展名的文件改用哪个应用程序来打开。当该扩展名的文件被读取时,浏览器会自动根据对应的应用程序来打开该文件2、深入:(1)通常服务器会把MIME 标识符放入传送的数据中,从而用来告诉浏览器该使用什么样的插件来读取相关文件。(2)每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image
2013-08-01 20:38:19 671
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人