- 博客(308)
- 资源 (10)
- 收藏
- 关注
转载 Camera2框架从Java层到C++层类关系
转自:http://blog.csdn.net/hejjunlin/article/details/53138945 Agenda:getSystemService(Context.CAMERA_SERVICE)CameraManager.getCameraIdList()ICameraService.aidlICameraService.cppcamera2中从Java层
2017-10-20 14:54:37 773
转载 Camera框架之Camera2
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52751055 前言:监于5.0之后Google用的是Camera2相关API取代之前的Camera,过时的Camera虽然精典,但不再进行介绍,可自行查阅相关资料。今天本文是在正式深入代码前对Camera2的一个补充。上篇中
2017-10-20 14:10:42 889
原创 C++ 中函数的一些概念
梳理一些C++中函数的一些概念,比如隐藏,想说清隐藏,就肯定要提到重载,覆盖。先说重载的一些特征:1),在相同的范围内,也即是要在同一个类中,成员函数之间的重载。2),函数名字相同,但是参数不同。3),virtual关键字可以有,可以没有,从以上特征看出,重载函数的区分是根据参数的不同,编译器会根据参数为每个重载函数产生不同的内部标识符。比如函数:void func(i
2017-10-19 22:13:05 439
原创 指针操作动态内存
因为指针“可变”的特性,常用它操作动态内存。1,如何通过指针来申请动态内存?如果函数的参数是一个指针,是否能通过这个参数获取到期望的内存?void getMemory(char *p, int num){ p = (char*)malloc(sizeof(char) * num);}void testGetMem(){ char *str = NULL; getMemo
2017-10-19 06:52:33 582
原创 C++中引用,指针和数组的比较
C++中引用和指针的比较引用是c++中的概念,int var;int&ref = var;以上代码中,ref是var的引用,var是被引用物,ref相当于var的别名,对ref的任何操作就是对var的操作,所以ref既不是var的拷贝,也不是指向var的指针,其实ref就是var它自己。引用的一些规则:1)引用被创建的同时必须被初始化(指针可以在任何时候被初始化)。
2017-10-17 06:48:27 340
转载 Android总结篇系列:Android广播机制
点击打开链接转自:http://www.cnblogs.com/lwbqqyumidi/p/4168017.html Android总结篇系列:Android广播机制1.Android广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信
2017-10-13 16:57:23 538
转载 用Happen-Before规则,分析单例模式-懒汉式写法
转自: http://www.iteye.com/topic/260515 编写Java多线程程序一直以来都是一件十分困难的事,多线程程序的bug很难测试,DCL(Double Check Lock)就是一个典型,因此对多线程安全的理论分析就显得十分重要,当然这决不是说对多线程程序的测试就是不必要的。传统上,对多线程程序的分析是通过分析操作之间可能的执行先后顺序,然而程序执行顺序十分复杂,
2017-10-12 20:05:48 493
转载 java同步中的ReentrantLock和synchronized
转自 ->点击打开链接 https://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个Thread 类,可以用它来构建、启动和操纵线程,Java 语言
2017-10-12 07:35:45 267
转载 Java并发编程:volatile关键字解析
转自:http://www.cnblogs.com/dolphin0520/p/3920373.htmlJava并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 vo
2017-10-10 06:18:49 195
原创 activity的启动模式,startactivity的过程
Android:launchMode用于指定Activity被启动的方式,主要包括两个方面:即Activity是否为单实例,及Activity归属的task。不管是那种方式,被启动的Activity都要位于Activitytask的栈顶。1),standard,默认状态,这种模式下Activity是多实例的,系统总是启动一个新的Activity来满足要求,即使之前已...
2017-09-28 19:59:34 2414
原创 android 中c/c++层用到的同步机制
Android 中的同步机制。 什么是同步,什么是互斥? 如果多个(包括两个)进程间存在时序关系,需要协同工作以完成一项任务,就叫同步。 如果他们之间并不满足协同的条件,而只是因为共享具有排他性的资源时所产生的关系,就叫互斥。 C/C++层用到的同步机制。一,Mutex进程间的同步Mutex,Mutual Exclusion的
2017-09-25 18:27:28 907
原创 android事件处理,对事件的接收处理,(6)
六,对事件的接收,从ViewRootImpl.java 说起。 为什么要从ViewRootImpl说起呢?还记得前面说inputChannel通道的时候,是从添加一个窗口开始的,那么添加窗口就是从ViewRootImpl的setView开启的。 ViewRootImpl.javapublic void setView(View view,WindowManage
2017-09-19 17:14:04 935
原创 android事件处理,把事件通知到焦点窗口,(5)
五,接下来的问题是InputDispatch是怎么把事件通知到到焦点窗口InputTarget的呢?先看下InputTarget的定义,InputDispatcher.h一个inputtarget表明了怎样把一个输入事件分发给一个特定的窗口。struct InputTarget { enum{ //这个flag指示 事件应该发给前台应用
2017-09-19 17:11:01 1022
原创 android事件处理,InputDispatch怎么处理事件的?(4)
四,InputDispatch怎么处理事件的?InputDispatch的循环同样是通过InputDispatchThread的ThreadLoop调用dispatchOnce实现的。在分发事件的处理中,如果事件类型是TYPE_KEY,将分发给dispatchKeyLocked。InputDispatcher.cppvoidInputDispatcher::dispatchOnce
2017-09-19 17:08:07 891
原创 Android事件处理过程,InputDispatchThread和InputReaderThread的协作,(3)
三、另一个线程InputDispatchThread,它的实现核心是InputDispatch。InputDispatchThread和InputReaderThread是要协同工作的,那是怎么协作的呢?前面说过这两个线程是在frameworks/native/services/inputflinger/InputManager.cpp中创建的。InputManager::InputM
2017-09-19 17:03:33 831
原创 Android 事件处理过程,读取事件线程,(2)
二、InputReaderThread, InputManager创建的两个主要线程之一InputReaderThread,它的主要工作是轮询设备节点是不是有新的事件发生,这是一个独立的循环线程。他的运行通过前面提到的 mReaderThread→run()这个run方法启动的,这个run方法接着调用_threadLoop,InputReaderThread的核心实现类是Input
2017-09-19 17:01:46 562
原创 Android 事件处理过程,(1)
Android 事件处理过程 一、事件主要包括按键-keyEvent,触屏-motionEvent,事件投递的过程分为几个部分,源信息的采集->WindowManagerService分配->应用程序处理。Android通过访问/dev/input节点来获知当前发生的事件。WindowManagerService是窗口的管理者,记录了系统中所有窗口的状态信息,所以它能够判断应该
2017-09-19 16:57:53 1102
原创 字符串排列,for循环嵌套递归
字符串的排列,就是给定一个字符串abc,输出能排列出的所有的字符串,如:abc,acb,bac,bca,cba,cab,写这个算法主要是想练习for循环中嵌套递归是怎么执行的,其实单纯的递归算法还是相对好理解的,你想找一个问题的递归算法,就是先把问题分成更小的子问题,并且这个分割还要是有限的,得有终止递归的条件,然后就是用什么方法解决最小的问题。算法写出来后,验证算法的正确行,运行下最直观,也
2017-09-10 22:55:23 1405
原创 环形链表,约瑟夫问题,(7)
一个经典的环形链表问题,有1,2,3,,,,n这些数字排成一个圆圈,从1开始每次删除第m个数字,求出这个圆圈中最后的数字。当然也可以说先从数字k开始,数到m删除这个数字,然后就从1开始,数到m删除这个数字,原理是一样。这里是从1开始,数到m删除这个数字。其实一个单向非循环链表也是可以模拟这个应用的,就是当指针知道最后一个节点时,让他转到头结点继续遍历。下面的实例是环形链表,尾节点的下一
2017-09-04 22:36:31 339
原创 Camera (api1)的打开过程
Camera (api1)的打开过程 setModuleFromIndex()@CameraActivity.javaà{ mPhotoModule = new PhotoModule();mPhotoModule.init(this,mCameraPhotoModuleRootView); mCurrentModule= mPh
2017-09-04 18:29:39 916
原创 链表合并(6)
有两个递增排序的链表,把他们合并后的节点仍然是递增排序的。这个问题的思路比较简单,首先比较p1,p2头结点,把较小的节点(比如是p1)赋值给mergeHead节点,然后,把p1->Next跟p2比较,以此类推,每次比较两个节点,所以这里可以考虑用递归。#include #include "ListCommon.h"using namespace std;ListNode* mer
2017-09-03 14:43:06 241
原创 从尾部查找一个单向链表的第几个节点。(4)
给定一个单向链表,查找出从尾部开始的第k个节点,也就是倒数第k个节点,这里假定是从1开始计数的,即尾节点是第一个节点。如图,假如要查找的是倒数第3个节点,一种思路就是从头结点开始遍历,遍历到尾部,得出链表的长度n,然后再从头开始遍历到 n-k+1个节点,就是倒数第k个,这么做要遍历链表两次。还有一个思路,定义两个指针,p1st,p2d,开始都指向头结点,如果p1st指向尾部节点时,刚好
2017-09-02 21:42:52 893 1
转载 编码问题,unicode,string
转:http://blog.csdn.net/z69183787/article/details/25742307unicode编码简而言之就是将每一个字符用16位2进制数标识。但是通常都用4位的16进制数标识。例如:1)中文字符串"你好"的unicode码为:\u60\u597d;2)英文字符串"ab"的unicode码为:\u0061\u0062;其中\u是标
2017-09-01 16:49:59 1625 1
原创 用O(1)时间,删除一个链表节点(3)
有这样一个问题,给定一个单向链表的头结点pHead和要删除的节点pDeleted,但是要求在O(1)时间完成。可能先想到的就是从头结点往前遍历,找到要删除的节点pDeleted,这样就知道了它的前后节点,但是这样的时间是O(n)。这里的思路是:把pDeleted的下一个节点pNode1的值赋给pDeleted,同时让pDeleted指向pNode2,然后把pNode1删掉,pDelet
2017-08-31 22:52:32 347
转载 callable,Executor,Future
转:http://blog.csdn.net/zhangzhaokun/article/details/6615454 在再度温习Java5的并发编程的知识点时发现,首要的就是把Runnable、Callable、Executor、Future等的关系搞明白,遂有了下述小测试程序,通过这个例子上述三者的关系就一目了然了。在java5以后,一个可以调度执行的线程单元可以有三种方式定义:
2017-08-31 19:41:05 267
转载 Android内存优化
转:http://www.cnblogs.com/ldq2016/p/6635774.html 智能手机发展到今天已经有十几个年头,手机的软硬件都已经发生了翻天覆地的变化,特别是Android阵营,从一开始的一两百M到今天动辄4G,6G内存。然而大部分的开发者观看下自己的异常上报系统,还是会发现各种内存问题仍然层出不穷,各种OOM为crash率贡献不少。Android开发发展到今天也是已经
2017-08-31 19:29:38 446
转载 Callable Feature
转:http://blog.csdn.net/ghsau/article/details/7451464 接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功
2017-08-31 19:19:25 758
转载 图片加载库-Glide
在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。毫无疑问,这个库引起了我的兴趣。于是我花了一个晚上研究和把玩它,将它的实现原理分析清楚以后,我决定写一篇博文分享一些自己的经验。在开始之前我想说,Glide和Picasso有90%的
2017-08-31 18:49:36 290
转载 图片加载库-Fresco
转载:http://blog.csdn.net/theone10211024/article/details/45646963 在Android设备上面,快速高效的显示图片是极为重要的。过去的几年里,我们在如何高效的存储图像这方面遇到了很多问题。图片太大,但是手机的内存却很小。每一个像素的R、G、B和alpha通道总共要占用4byte的空间。如果手机的屏幕是480*800,那么一张屏幕大小
2017-08-31 18:46:47 327
转载 Picasso 图片下载缓存库
转:http://blog.csdn.net/theone10211024/article/details/45604373对于Bitmap的对象池,重用对象,通常使用WeakReference来保存要引用的Bitmap对象,这里需要加一个引用队列,在发生GC时,可以对Bitmap做recycle处理。https://www.jianshu.com/p/f86d3a43eec5http...
2017-08-31 14:53:55 564
转载 EventBus的使用
相关文章:1、《EventBus使用详解(一)——初步使用EventBus》2、《EventBus使用详解(二)——EventBus使用进阶》一、概述EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。
2017-08-31 14:40:01 213
原创 反方向打印链表。(2)
给出一个链表的头节点,从尾部逆序打印链表。这里有2中实现思路,一种是用stack,先从头节点开始,依次把链表节点入栈,然后再依次弹出。第二种思路是递归,实际递归的本质也是用栈来实现的。#include #include #include "ListCommon.h"using namespace std;//用stack实现void printListR
2017-08-28 22:56:12 310
原创 链表基本操作的函数实现。(1)
如下是一个模拟的链表的基本操作,主要有创建链表,连接链表,打印链表,删除链表等,后面有关链表的算法都依赖这个文件中函数实现。ListCommon.h//链表的结构struct ListNode{ int m_nValue; ListNode* m_pNext;};//通用的操作函数ListNode* CreateListNode(int
2017-08-28 22:48:22 929 1
原创 用两个栈实现一个队列算法
栈:后进先出,队列:先进先出。用两个栈实现一个队列,主要实现队列中的两个函数,appendTail,尾部追加,deleteHead,在头部删除节点,用了一个模板类,队列的元素可以是任意类型,int,char都可以,其中类模板中构造函数,析构函数,appendTail,deleteHead的声明和实现都要写在.h中,把实现写在.cpp中,会提示这些方法没定义。模板定义挺特殊的。Analo
2017-08-27 12:20:16 379
原创 一个字符替换的算法
给定一个字符串把其中的空格替换成 (%) 这3个字符。#include using namespace std;void strRepace(char chArray[], int maxLen){ if(chArray == NULL) return ;//计算空格数 int numsOfSpace =0;
2017-08-26 22:05:52 469
原创 使用位运算 的2个算法
1,不用临时变量,交换两个值:#include using namespace std;void swapValue(int num1,int num2){//通过亦或运算符^,交换两个值,不适用临时变量,第一步:num1 = num1^num2,num2=num2^num1,相当于num2 =num2^num1^num2;也等于num1^num2^num2,因为num2^
2017-08-26 11:46:31 362
原创 哈希表,找出第一个出现一次的字符
在一个字符串中,找出第一个出现一次的字符,把每个字符做为hash表中的key,出现的次数做为对应的值。#include using namespace std;char getFirstNotRepeatChar(const char *pStr){ if(pStr == NULL) return '\0';//一个char字符占8个
2017-08-24 22:16:10 347
原创 二分法 -算法
二分法查找,这个算法要求数据要是有序的。比如有这样的问题:找出一个数组中,两个数的和小于等于15,然后输出他们,否则就单独输出较大的数。#include using namespace std;void binarySearch(int *array, int length){ if(array == NULL || length == 0) ret
2017-08-23 22:49:46 543
原创 字符转整数 算法
把一个字符串转成整数:#include using namespace std;long long strToInt(const char* str){ long long num = 0; bool minus = false; cout if(str != NULL && *str != '\0'){ if(*st
2017-08-22 23:00:45 327
simple-ffmpeg-player.zip
2020-03-13
jetty-libs-9.4.zip
2019-11-26
android studio3.1匹配的gradle版本最新4.4
2017-12-25
release3.1
2017-11-21
android make 介绍
2017-11-16
如何分析JAVA crash
2017-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人