C/C++
文章平均质量分 75
哇小明
这个作者很懒,什么都没留下…
展开
-
面向对象编程中遇到的问题1
invalid use of incomplete type 'struct RTPPacket' jni/jrtp/rtpsources.h:60:7: error: forward declaration of 'struct RTPPacket'类似上面的错误,查看rtpsources.h中第60行,是class RTPPacket;在程序中出现第一行一样的错误是因为没有原创 2013-06-24 12:45:55 · 1164 阅读 · 0 评论 -
Android4.4 Camera 数据流分析
开门见山: 这里给出rk 在cameraHAL层的camera数据结构:typedef struct FramInfo{ int phy_addr; int vir_addr; int frame_width; int frame_height; int frame_index; int frame_fmt; int zoom_value;原创 2016-10-12 10:06:09 · 3731 阅读 · 0 评论 -
Android4.4 Camera callback注册和回调过程分析
一、注册过程camera的callback是在cameraclient中的initialize接口中注册的,而这个接口是由上层初始化调用的。status_t CameraClient::initialize(camera_module_t *module) { int callingPid = getCallingPid(); status_t res; LOG1("Camer原创 2016-10-12 09:54:38 · 5114 阅读 · 0 评论 -
Android4.4 Camera client连接到CameraService的过程分析
先抛出一张类图关系,纯手工制作,比较乱,不过看完文章后再来看这张图会很清晰: 1.cameraservice在mediaservice中启动:CameraService::instantiate();先分析一下CameraService的继承类:class CameraService : public BinderService<CameraService>, public BnC原创 2016-10-13 17:26:57 · 6080 阅读 · 0 评论 -
Android4.4 Camera HAL startpreview的具体过程
先抛图修改过的: 从前面几篇文章,可以知道camerahal是在initialize的时候open操作被声明初始化的,现在先分析一下CameraHal初始化的内容:CameraHal::CameraHal(int cameraId) :commandThreadCommandQ("commandCmdQ"){ LOG_FUNCTION_NAME {原创 2016-10-12 11:17:42 · 4503 阅读 · 0 评论 -
android4.4 Camera 框架纵横方向分析
一、Android系统的一般性框架一、android 系统的启动流程一张自做草图先大概了解下: 第一个android进程,或许说是第一个dalvik进程zygote进程,是在init.rc中用命令启动的,init.rc在device/方案商/产品型号 中,各个厂商可能会有不同的命名,比如rk init.rk30board.rc。里面会有启动zyg原创 2016-10-02 19:53:23 · 2928 阅读 · 10 评论 -
设计模式-策略模式
序言设计模式是编程所要掌握的重要技能,其实这之前这些模式都看过相关例子源代码,但是时间一久,每次别人问起,什么是策略模式,或者其他。总是说不清道不明,后来干脆说我忘记了。后来仔细想来,其实我当初根本不知道什么是策略模式,只是看了定义,看了软件结构,看了例子代码。然而这些远远不够,前辈们总结下来的精华,怎么可能在短短几篇博客或者几页书就能完全掌握呢。深挖其中的精髓,并且能够自己设计出来,才应该是真正的原创 2017-07-30 23:28:11 · 1201 阅读 · 0 评论 -
C++实战之OpenCL 并行优化编程从零学起系列文章
接下去一大段时间,会把所有的精力放在opencl 并行优化编程的学习中,在此过程中记录学习的要点,开发环境是:macbook pro + xcode + c++迷迷糊糊毕业两年多了,做过系统工程师,做过android应用开发,最终我选择C++开发,但是目前职场上C++开发的职位大都是后台服务器开发,我曾经一度想选择服务器这个方向,但是我我的内心深处告诉我,你曾经学的那些机器学习算法呢?原创 2017-09-19 04:29:07 · 2861 阅读 · 0 评论 -
C++ callback 结构体数组传到unity上层
运行场景:最近在做unity sdk,所有的功能都要从C++底层开始封装成C#,遇到一个问题,C++ 如何回调自定义数据结构到unity上层,简单的类型,int,float都没问题。C++ Code//自定义数据结构typedef struct PointInfo { float x; float y;}PointInfo;typedef void(__stdcall *OnTo原创 2017-09-27 17:56:15 · 1927 阅读 · 1 评论 -
cuda 9.0 + vs2015 环境搭建
cuda 9.0 + vs2015总结:搭建还算顺利,全自动,没毛病系统硬件属性: win7 64位 + GTX960 +内存16G先下载安装vs2015,当然vs2017也是可以的,cuda9.0支持2017cuda 9.0 下载地址:https://developer.nvidia.com/cuda-downloads我配置如下:点击下载本地版。原创 2017-11-06 15:29:01 · 27271 阅读 · 5 评论 -
C++实战之OpenCL矩阵相乘
简单概念理解在opencl中,有个索引空间NDRange的概念,NDRange是一个N维的索引空间,N可以是1,2,3。NDRange由一个长度为N的整数阵列来定义,他指定了索引空间各个维度的宽度,每个work-item的全局id和局部id,都是N维元组。有多个work-item构成的叫做work-group,作業組的 ID 跟作業項的全局 ID差不多。一個長度為 N 的陣列定義了每個維度上作業組的原创 2017-11-06 15:54:40 · 5718 阅读 · 4 评论 -
C++ 深入理解系列-构造函数的技巧
**引言** 有时候我们会不希望当前类被复制,因为有可能类中的成员不建议被复制比如锁,一些智能引数等,这个时候想到的办法就是禁止类中拷贝构造函数和重载操作符=这两个成员函数的禁用了,有以下两种方法可以解决这个问题。用delete关键字// c++ 11以上均可用class TestDeleteCopy{public: TestDeleteCopy(int count): m_coun原创 2017-12-12 10:39:02 · 1050 阅读 · 0 评论 -
C++深入理解系列-类对象的限制
前沿最近每天睡前都会看efficient c++ ,每天一个条款,看了几天,发现有好多有用的c++编程技巧,想了下,为了巩固一下自己所看,准备定时在这边总结分享一下,一起交流学习。一.单例模式的另外一种实现目前现有限制对象个数的机制就是常用的单例模式:静态成员:类中的成员加入static修饰符,即是静态成员,可以使用类名+静态成员名访问此静态成员,外部可以直接访问类中的...原创 2017-12-15 11:13:14 · 1361 阅读 · 0 评论 -
c++ 面试中的题目系列
通过几次面试发现自己一个问题,凡是叫我写代码的无论是纸上还是网页上面,给我很长时间我基本都无法写出来,但是回去后基本几分钟就能在VS上搞定。可能是太依赖VS这个IDE了。这个系列会收集我面试中遇到的一些题目,我想以后可能要去刷leetcode了。国内某知名人脸识别面试题目(回来后发现很简单)1.输入一个字符串,输出字符串中第一个不重复的字符的index,比如“leetcode”输出0;“l原创 2018-01-23 18:48:49 · 333 阅读 · 2 评论 -
C++强化之路之线程池开发整体框架(二)
一.线程池开发框架我所开发的线程池由以下几部分组成: 1.工作中的线程。也就是线程池中的线程,主要是执行分发来的task。 2.管理线程池的监督线程。这个线程的创建独立于线程池的创建,按照既定的管理方法进行管理线程池中的所有线程,主要任务是监听任务的到来,唤醒线程池中的空闲线程,分发任务;如果任务增多,动态的创建一批线程加入原来的线程池中,进行工作;适当的销毁线程,减少系统开销。这个线...原创 2016-05-30 00:28:49 · 4570 阅读 · 0 评论 -
快速排序非递归代码
直接贴代码:int part(int *a,int left,int right){int middle = a[left];int ind=left;while (left != right) { while (a[right] >= middle && left < right) right--; while (a[left...原创 2018-04-08 18:07:58 · 598 阅读 · 0 评论 -
设计模式-抽象工厂和builder模式
一、序言 系列博客文章都是研读Gof的Design Patterns这本书的总结分享,书上的有些例子代码不是很全,这边依葫芦画瓢还原了一些代码,可供运行。目前,网络上很多分享设计模式内容的博客文章,都很经典,其中有个CSDN中的设计模式博客专栏也是研究的Gof的书籍,通俗易懂,让读者对设计模式一目了然。 自己在学习设计模式的过程中,有时候理解一个设计模式挺简单的,但是想要记住它,运用它,原创 2016-06-09 04:05:21 · 5577 阅读 · 0 评论 -
基于gprs关于sms和mms的一些研究。
最近一个项目需要有发送短信功能,于是我买了一个gprs modem,Q2403吧 GPRS/GSM只要有这个标志就可以连接网络,可以发彩信。先搞搞短信,先百度了下,花了几天时间摸清楚了发送短信的流程,其实网上有很多例子,本人开发的是基于ARM9嵌入式的程序,找了个例子,分析了一下,修改了一些地方,运行下就实现了发送短信的功能。虽然代码不是我写的 ,但是还是想把它写出来分享给更多的人。原创 2014-03-25 23:24:10 · 1674 阅读 · 0 评论 -
android 中Bn 和Bp的区别
最近在研究surfaceflinger,真心被里面的类名折腾惨了。 Bn原创 2014-07-23 11:29:12 · 16369 阅读 · 4 评论 -
Android4.4深入浅出之SurfaceFlinger(一)
同样还是surfaceflinger,最近有点进展,tedifenxiang原创 2014-07-27 01:57:16 · 5384 阅读 · 0 评论 -
openGL学习(1)
经过几天的了解后开始搭建opengl的开发环境,首先搭建windows上的开发环境。 vc++6.0 先安装这里就省掉了。 再者 安装GLUT工具包。opengl需要用到可以使编程方便撒。 http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 这是glut的下载地址。原创 2014-07-15 14:21:16 · 1436 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger框架-渲染一个surface(二)
SurfaceFlinger自启动之后,主要有三种类型线程参与工作:1.binder线程,负责监控binder设备完成与客户端的交接2.控制台事件监控线程,负责监控硬件帧缓冲区的睡眠/唤醒状态切换事件。3.UI渲染线程,负责渲染UI。一 UI渲染线程 UI渲染线程平时是处于休眠状态,一旦binder线程监测到有其他进程发过来的请求渲染UI的消息就会唤醒UI渲染线程,另一原创 2014-08-01 11:52:12 · 10908 阅读 · 1 评论 -
Android4.4深入浅出之SurfaceFlinger与Client通信框架(一)
SurfaceFlinger服务运行在System进程中,用来统一管理系统的帧缓冲区设备。由于SurfaceFlinger服务运行在System进程中,因此,Android应用程序就需要通过Binder进程间通信机制来请求它来渲染自己的UI。Android应用程序请求SurfaceFlinger服务渲染自己的UI可以分为三步曲:首先是创建一个到SurfaceFlinger服务的连接,接着再通过这个原创 2014-07-31 15:42:15 · 9689 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger (二)
接上篇文章,我们来看一下init()都做了什么事。原创 2014-07-28 14:36:02 · 8228 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger总体结构
Android4.4 GUI系统框架之SurfaceFlinger一. Android GUI框架:SurfaceFlinger:每当用户程序刷新UI的时候,会中介BufferQueue申请一个buffer(dequeueBuffer),然后把UI的信息填入,丢给SurfaceFlinger,SurfaceFlinger通过计算多重计算合成visibleRegi原创 2014-08-07 16:08:45 · 28071 阅读 · 26 评论 -
Android 4.4 Fence在SurfaceFlinger中的应用
网上关于android,fence的资料好少啊,几乎没有,但是这个机制又在GUI系统中起着重要的作用,于是自己通读源码和注释,与大家分享下Fence到底是怎么回事? Fence即栅栏,栅栏的角色与它的名字非常类似.一组线程可以使用栅栏来集体进行相互同步;在本质上,每个线程在到达某种周知的状态时调用栅栏的wait()方法,阻塞起来,以等待其它所有参与线程调用wait()方法表明它原创 2014-08-12 17:14:41 · 4980 阅读 · 2 评论 -
C语言算法训练2
/*N*M的矩阵迷宫中,放着不同价值的礼物,从(0,0)开始,只能向下或向右走。经过的每一个位置,如果该位置的礼物价值大于你手上所有的礼物,则你可以选择拿该礼物(也可以不拿),直到(n-1, m-1)。如果你的手上礼物个数恰好为K个,那么礼物归你。试问总共有多少总方案,使最后可以拿到k个礼物。输入实例:2 2 21 22 1第一行为N M K(1之后N行K列为礼物数值矩原创 2015-10-22 11:41:35 · 968 阅读 · 0 评论 -
C语言算法训练1
/*=====================================单词翻转总时间限制: 1000ms 内存限制: 65536kB描述输入一个句子(一行),将句子中的每一个单词翻转后输出输入只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。输出翻转每一个单词后的字符串样例输入hello world样例输出olleh dlrow=========原创 2015-09-20 00:45:45 · 1276 阅读 · 0 评论 -
C++强化之路之线程池开发(一)
一.线程基础1.简单线程c++封装class Thread {private: pthread_t _thread; bool _valid; bool _stopped; static void * start_routine(void * param) { Thread * thread = (Thread*)param;原创 2016-05-24 01:47:07 · 1133 阅读 · 0 评论 -
设计模式-Prototype模式
一、序言 系列博客文章都是研读Gof的Design Patterns这本书的总结分享,书上的有些例子代码不是很全,这边依葫芦画瓢还原了一些代码,可供运行。目前,网络上很多分享设计模式内容的博客文章,都很经典,其中有个CSDN中的设计模式博客专栏也是研究的Gof的书籍,通俗易懂,让读者对设计模式一目了然。自己在学习设计模式的过程中,有时候理解一个设计模式原创 2016-06-24 02:00:50 · 936 阅读 · 0 评论 -
堆排序
int maxHeap(int *a,int start,int end){ int node = start; int left = 2*node+1; int tmp = a[node]; for(;left<end;node = left,left=2*node+1){ if(a[left] < a[left+1] &&a...原创 2018-04-19 14:31:45 · 210 阅读 · 0 评论