自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 C/C++变长参数实现log输出

__VA_ARGS__宏使用说明sample code:vsnprintf和snprintf使用说明sample code:相关测试源码参考资料

2017-08-23 14:32:36 5281 1

原创 C++调用Object-C

使用背景调用结构实现方式代码详解编译及运行使用限制延伸阅读

2017-08-18 10:16:54 8991

转载 inline函数用法详解

inline函数定义内联函数的编程风格慎用内联inline 和 预处理的区别

2017-07-03 09:17:26 35427 2

转载 设计模式:组合模式(COMPOSITE)|菜鸟教程

定义组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。 我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。介绍意图: 将对

2017-03-17 22:41:33 6378 1

转载 设计模式:桥接模式|菜鸟教程

定义桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现

2017-03-16 19:59:41 929

转载 设计模式:适配器模式|菜鸟教程

定义适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

2017-03-15 15:07:27 1613

转载 设计模式:原型模式|菜鸟教程

定义原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少

2017-03-14 23:12:30 2545 1

转载 设计模式:抽象工厂模式|菜鸟教程

定义抽象工厂模式抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 介绍意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们

2017-03-14 18:30:47 702

转载 设计模式:单例模式|菜鸟教程

定义单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 1. 单例类只能有一个实例。 2. 单例类必须自己创建自己的唯一实例。

2017-03-14 18:00:23 1408

转载 设计模式:建造者模式|菜鸟教程

定义建造者模式(Builder Pattern)

2017-03-14 17:57:59 1167

转载 设计模式:工厂模式

工厂模式

2017-03-13 14:14:25 371

原创 RTMP推流及协议学习

前期准备了解RTMP定义准备RTMPDump中的librtmp使用openssl中的libssllibcrypto推流工作整体框架图使用libtrmp提供的API将streaming封装成为RTMP格式进阶RTMP client与RTMP server交互流程RTMPDump源码分析参考资料

2017-03-13 13:44:34 48604 3

原创 RTSP协议学习

RTSP简介RTSP和HTTP RTPRTCP的关系RTSP和HTTPRTSP和RTPRTCPRTSP消息简单的rtsp交互过程RTSP中常用方法OPTIONDESCRIBESETUPPLAYTEARDOWNSDP协议RTSP基于libcurl代码实现参考资料

2017-03-03 18:41:23 44574 10

原创 使用HTTP获取 OAuth 2.0 access tokens(Google)

1.搭建开发环境2.请求 code3.请求access token4.使用refresh token来刷新access token

2017-01-22 10:41:29 15624 2

原创 如何将live stream发布到Youtube

1.搭建开发环境2.获取用户授权3.建立LiveBroadCast频道4.建立streaming通道5.绑定LiveBroadcast和LiveStreams6.切换BroadCastLive状态7.删除liveBroadCast直播频道

2017-01-19 16:10:41 10747 6

原创 RTSP to RTMP 基于 Live555

前期准备:1.Live555 2.rtmpdunp设计思路:1.使用Live555接收码流2.将码流封装成RTMP格式3.使用librtmp将码流推送到直播平台。

2016-09-02 16:58:24 7500 1

翻译 Media foundation——Media source:Writing a Custom Media Source

编写自定义的媒体源(Writing a Custom Media Source)本主题描述如何在微软MF基础上实现自定义媒体源。它包含以下部分:创建表示描述符开始媒体源索引暂停媒体源产生源数据样本请求分配采样样本流中的间隙关闭媒体源Live源创建表示描述符IMFMediaSource::CreatePresentationDesc

2016-01-12 15:00:21 752

翻译 Media foundation——Media source:Media Source Events

媒体源事件(Media source events)本主题列出由媒体源和媒体流发送的事件。媒体来源还可以发送自定义事件,但不在这里列出。媒体源事件(Media Source Events)事件描述MEEndOfPresentation Event演示结束。演示中的所有流已到达流的结尾。MENew

2016-01-12 11:23:43 717

翻译 Media foundation——Media source:Presentation Descriptors

表示描述符一个Presentation是一组相关的共享一个共同的演示时间的媒体流。例如,一个演示可以是来自电影的视频流和音频流。一个表示描述符(Presentation Descriptors)是一个包含一个特定的演示描述的对象。演示描述符用于配置媒体源和一些媒体接收器。每个演示文稿描述符(Presentation Descriptors)包含一个或多个流描述符的列表。这些用于描述存在pr

2016-01-12 11:09:45 670

翻译 Media foundation——Media source:Media source object module

Media Source 对象模型主要描述在Microsoft Media foundation中media source 的对象模型。一个Media source必须实现两个对象:一个描述符。用于描述源的内容:包括stream流的个数以及每个stream流的格式。产生元数据的一个(或以上)media stream。在playback开始之前,Media source不会创建流

2016-01-11 17:48:07 445

原创 atags--__vet_atags标签

atags–__vet_atags标签常量值ATAG_CORE定义为0x54410001。表示atag list启动幻数(magic number)。tagged list 由struct teg数组组成,包含内存、视屏、ramdisk、initrd等信息。tagged list从ATAG_CORE开始启动,用ATAG_NONE表示数组结束。

2015-12-04 11:09:20 1162

原创 DEFINE()和offsetof的定义

DEFINE的定义:include/linux/kbuild.h#define DEFINE(sym, val) \        asm volatile("\n->" #sym " %0 " #val : : "i" (val))offsetof定义:include/linux/stddef.h#undef offsetof#ifdef __compiler

2015-12-03 15:16:20 1108

原创 kernel/head.S

1.初始化指向--stext标签通过引导加载项加载内核以后,首先执行的部分就是stext。执行该标签时要如下状态:MMU = offD-Cache = offr0 = 0r1 = machime numberr2 = atags pointer在stext标签中,首先转换为SVC模式,并禁用IRQ。然后调用调用多个检查程序,查找CPU和机器信息,并检查atag信

2015-12-03 14:58:52 767

转载 linux常见知识

1) Linux中主要有哪几种内核锁?2) Linux中的用户模式和内核模式是什么含意?3) 怎样申请大块内核内存?4) 用户进程间通信主要哪几种方式?5) 通过伙伴系统申请内核内存的函数有哪些?6) 通过slab分配器申请内核内存的函数有?7) Linux的内核空间和用户空间是如何划分的(以32位系统为例)?8) vmalloc()申请的内存有什么特点?

2013-10-21 17:58:50 528

转载 作为一个新人,怎样学习嵌入式Linux?(韦东山)

被问过太多次,特写这篇文章来回答一下。   在学习嵌入式Linux之前,肯定要有C语言基础。汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会)。C语言要学到什么程度呢?越熟当然越好,不熟的话也要具备基本技能。比如写一个数组排序、输入数字求和什么的。学C语言唯一的方法是多写程序多练习,编译出错没关系,自己去解决;执行出错没关系,自己去分析。以前我是用VC来练习C语

2013-10-16 14:58:12 706

原创 bootloader

一个嵌入式系统从软件角度来看可以分为三个层次:1.引导加载程序包括固化在固件(firmware)中的boot程序,和bootloader两大部分。2.Linux内核特定于嵌入式平台的定制内核3.文件系统包括了系统命令和应用程序。 软件层次:同时装有bootloader、内核的启动参数、内核映像和根文件系统映像的固态存储设备的典型空间分配。 Bootloa

2013-10-14 13:59:50 877

原创 并发和竞态

scull的缺陷在scull内存管理代码中。scull必须判断所请求的内存是否已经分配好。if( !dptr->data[s_pos]){    dptr->data[s_pos] = kmalloc(quantum, GFP_KERNEL);   if(!dptr->data[s_pos]){      goto out;   }}如果有AB两个进程,假设都同时到

2013-10-14 09:22:53 583

原创 字符设备驱动程序

驱动程序的定义:使硬件工作的软件 驱动程序分类:字符设备驱动(重点),网络接口驱动(重点),块设备驱动 字符设备:按字节为最小单位来访问的设备。字符驱动则负责驱动字符设备,通常实现open,close,read,write系统调用 块设备:Unix:只能一次传送一个或多个长度是512字节(或更大的2次幂的数)的整块数据。Linux:允许块设备传送热议数目的字节。

2013-10-14 09:16:57 738

原创 中断处理

中断的概念:用于CPU与外设之间信息交互的机制。为什么需要中断?1、外设的处理速度一般慢于CPU;2、CPU不能一直等待外部事件所以设备必须有一种方法来通知CPU它的工作进度,这种方法就是中断。 中断的实现:1、向内核注册中断;2、实现中断处理函数。 中断注册:request_irq用于实现中断的注册功能 :int request_irq(unsig

2013-10-14 09:11:11 951

原创 platform总线

虚拟总线:由两部分组成:platform_device和platform_driver 工作流程:通过platform机制开发底层设备驱动的流程图:定义 platform_device|注册 platform_device|定义 platform_driver|注册 platform_driver platform设备:struct pl

2013-10-14 09:10:30 565

原创 总线/设备/驱动模型

设备元素:总线, 驱动, 设备 总线:处理器和设备之间的通道,在设备模型中,所有的设备都通过总线相连,甚至是内部的虚拟“platform”总线(定时器,看门狗并没有直接相连)。在linux设备模型中,总线由bus_type结构表示,定义在 总线的注册使用:bus_register(struct bus_type *bus);若成功,新的总线将被添加进系统,并可以在sys

2013-10-14 09:08:56 584

原创 Kobject/kset的使用

Kobject实现了基本的面向对象管理机制,是构成linux 2.6设备模型的核心结构。它与sysfs文件系统紧密相连,在内核中注册的每个kobject对象对应sysfs文件系统中的一个目录。 作用:用来创建sysfs下面的目录和文件的,属性对应的文件。  file://D:\資料\学习资料\linux相关\演示代码\kobject\kobject.c> kobject操作

2013-10-14 09:06:26 690

原创 在读写二进制数据的时候,一定要用"rb”,“wb”

近期在做一个图片处理的程序。测试的方法:read rgb-> 处理rgb数据->write rgb file. 写文件的时候,发现在0a 的前面会多一个0d。所以导致读取进去的数据和写出的数据不一致。仔细研究后发现,因为我用fread 的时候,使用的是“r”, 而不是“rb”。所以导致了会读入其他字符到内存中,导致保存的时候在0d前面会多一个0d。

2013-01-21 11:21:09 1756

原创 C语言中,将结构体指针传入函数后,内存地址没变,内存数据发生变化

C语言中,将结构体指针传入函数后,内存地址没变,内存数据发生变化:rgbBlockInfo_t *rgbBlockInfo = NULL;/*获得地址*/rgbBlockInfo = fileToRgbBufBlock(rgbBufInfo, "D:\\picData\\pens.rgb");/*将地址传入函数*/rgbFileWrite(rgbBlockInfo,

2013-01-21 00:15:20 3445 4

概率论与数理统计及其应用参考答案

概率论与数理统计及其应用参考答案 word格式的。全部章节答案!

2009-11-23

《电路分析教师课件》

包括了所有的电分课程,是ppt形式的课件

2009-11-22

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

TA关注的人

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