自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 历时四年,给Google提交的Android Framework Bug终于被Fixed了

历时四年,Google终于修复了一个我发现的Android Framework Bug 2014年在做一个Android终端设备开发过程中,发现了一个Android Framework层的Bug,给Google提交了issue和解决方案,和外界传言一致Google一般不太在意个人开发者提交的issue,直到2017年12月,再次提交了issue,在几轮沟通无果下,忍不住喷了Google几句...

2018-03-30 00:03:16 2050 2

原创 实现一个通用的生产者消费者队列(c语言版本)

背景:笔者之前一直从事嵌入式音视频相关的开发工作,对于音视频的数据的处理,生产者消费者队列必不可少,而如何实现一个高效稳定的生产者消费者队列则十分重要,不过按照笔者从业的经验,所看到的现象,不容乐观,很多知名大厂在这种基础组件的开发能力上十分堪忧。音视频数据处理的特点:音视频数据量大:音视频数据特别是视频数据,占据了计算机数据的很大一块,不信就看看每个人的硬盘里,去除电影,照...

2017-10-02 18:10:15 4281 3

原创 海康萤石摄像机远程监控机制分析

背景介绍有一个远程监控的需求,正常情况下采用服务器转发视频流对服务器要求很高,所以p2p看似是一个比较好的方案,但是p2p打洞却不是一件容易的事情,所以打算分析下海康萤石摄像机远程监控的机制,是否采用了p2p的方式。初步分析结果少废话,先说结果:对称型nat的p2p打洞是一个比较困难的技术问题,萤石摄像机并没有很好的解决对称型p2p打洞的问题,而是采用服务器转发的方式实现远程监控。 *注:由于测试

2017-07-29 19:05:25 10231

原创 记录一次kernel内存泄漏的查找定位过程

Bug描述:压力测试一个小工程时发现内存逐渐减少,10个小时后出现OOMBug定位过程:对整个工程模块进行分解,逐步缩小范围,由于整个工程包括几个相对独立的小模块,而整个工程采用单进程多线程的模型,导致进行分解时,要特别注意相互之间的耦合,只能逐步分离各个模块,运行测试(这里如果采用多进程模型,定位会更快一些,一个完整的功能,放在一个进程和多进程中,多进程天然的将功能细化了,定位问题,范围更小)

2017-05-17 10:19:20 2522

原创 基于pjsip实现p2p语音对讲

需求为实现跨网络的语音对讲,使位于NAT后的两个设备进行p2p的语音通讯,此处选用pjsip开源项目说实现。 未解决的问题:对称型的NAT无法实现p2p打洞,pjsip采用的turn服务进行转发,不能称之为纯粹的p2p。pjisp简介PJSIP是一个开放源代码的SIP协议栈,它支持多种SIP的扩展功能 。它的实现是为了能在嵌入式设备上高效实现SIP/VOIP。(摘自百度百科) 项目网址:http

2017-03-24 17:39:28 8804 2

原创 嵌入式软件开发工程师谈软件架构的设计

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-02-19 17:45:45 8390 5

转载 Android Camera 2.0 Api

二次图像处理Camera2的API扩展了对YUV的支持,及图像再处理支持。要知道是否据有这个能力,可以调getCameraCharacteristics()方法,检查REPROCESS_MAX_CAPTURE_STALL这个键值 。如果设备支持再处理,则可以调用createReprocessableCaptureSession(),创建一个再处理摄影设备,然后创建输入缓冲再处理请求。使用Ima...

2019-07-09 21:10:44 708

原创 Android应用开发——onStop的调用时机

onStop的调用时机,网上搜索到的说法大概是:“ onStop的调用是“The activity is no longer visible”,也就是完全不可见的时候调用的,这个完全不可见真的就是指视觉上的完全看不到而已,无论是按home键返回桌面,还是启动另一activity把原activity完全遮住,都会调用onStop。”开发中遇到个问题,发现onStop的调用时机受下一个页面的影响,本...

2019-03-21 14:38:05 1878

原创 什么是嵌入式设备?/ 嵌入式设备的定义

什么是嵌入式设备?/ 嵌入式设备的定义区别于通用计算机的其他设备都可以称之为嵌入式设备 (个人电脑,服务器)一段时期内,必备的硬件配置。嵌入式开发包括哪些部分:底层驱动开发:关键字:BSP/嵌入式Linux/wince/vxworks…上层应用开发:关键字:Posix底层驱动开发工程师工作内容:jd以嵌入式linux系统开发为例:熟悉linux驱动开发的接口,模式,限制。(...

2019-03-04 10:36:58 9588

转载 Iot相关杂烩

人工智能就像人的大脑,而 IoT 就像人的神经网络1)在天空中巨大的鸟群里,每一只鸟儿都实时判断自己和四周同伴的距离。这时,它们各自都是一个物联网节点。2)这些“节点”并不是简单地收集数据,而是在实时计算,调整自己的飞行姿势。3)如果你站在远处,无法分辨每一只鸟儿,只看到黑压压一团。你会相信,自己看到的是一整个拥有智慧的生命。作者:史中链接:https://www.zhihu.com/que...

2019-02-26 21:01:52 547

原创 Android应用开发——service连接泄露异常:android.app.ServiceConnectionLeaked: that was originally bound here

在做service开发过程中,大部分可能会遇到以下异常,该异常仅通过log输出,并不会导致app crash。E/ActivityThread: Activity com.example.image.all_samples.Main2Activity has leaked ServiceConnection com.example.image.all_samples.Main2Activity$...

2018-10-19 14:39:23 7005

转载 Android应用开发——文件目录

Android 存储位置及 API一、内部存储应用安装后都会在Android 根目录生成 /data/data/packagename,当前应用读取不需要读写权限注意: 有些开发者可能看到过应用的根目录为 /data/user/0/packagename 的情况,这里解释一下,Android 4.2 版本添加了同一设备可以登录不同用户的功能(由于专利原因仅限于平板电脑,手机不支持此功能),...

2018-09-30 01:40:17 344

转载 Android Bluetooth BLE相关开发资源汇总

Android开启蓝牙开关检查系统蓝牙是否开启BluetoothManager bluetoothManager = (BluetoothManager) this.getSystemService(Context.BLUETOOTH_SERVICE);BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter();mB...

2018-09-27 17:23:59 401

原创 如何revert一个merged branch上所有的改动

开发过程中如果想删除之前merged的某个branch,并且在merge过该分支之后又进行了多次的提交,可以通过以下命令进行:git revert -n merge_commit_id -m 1注:该方法适合merge过分支后,没有基于该branch内容做修改的情况下,如果在merge之后基于做了大量的修改,还是需要手工修改了。...

2018-09-20 20:47:09 1138

转载 利用fastjson对json转map的操作

String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\&amp

2018-08-22 11:19:16 1586

转载 AirPods的自动连接配对原理

首次连接打开装有 AirPods 的充电盒,并将它放在 iPhone 旁边。此时你的 iPhone 上将出现设置动画。轻点「连接」,然后轻点「完成」。就这么简单,而且会自动设置,实现与已使用同一 Apple ID 登录 iCloud 的任一支持设备搭配使用,无需额外操作。与其他蓝牙耳机不同的是,完成连接后,再也不用到蓝牙中去进行连接,使用时只需要在控制中心的 AirPlay 播放设备中选择...

2018-08-14 18:35:30 33580 4

转载 加载一张图片到ImageView到底占据多少内存

简介Android中经常要通过ImageView进行图片资源显示。在加载图片时,首先要考虑的两个因素就是体验问题和性能问题。其中,体验问题是指图片显示的是否正确(例如Universal-Image-Loader在适配Adapter图片资源时会导致图片显示错位),分辨率是否合适等。而体验问题主要是指图片加载速度,以及更加重要的图片加载的内存占用问题。本文重点介绍ImageView加载图片中的...

2018-07-19 16:05:11 601

转载 Android应用开发—Application

What is ApplicationApplication和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己的Application,也很简单创建一个类继承 Application并在m...

2018-05-28 14:22:46 254

转载 Fragment Or DialogFragment Can not perform this action after onSaveInstanceState

转载自Fragment Or DialogFragment Can not perform this action after onSaveInstanceState表现可会造成app崩溃掉,具体日志如下: 异常如下:java.lang.IllegalStateException: Can not perform this action after onSaveIn...

2018-04-03 14:45:04 213

转载 版本字符串比较工具接口&&常用接口函数

版本升级比较常用的接口,字符串解析,不是很难,但没必须重复造轮子,保存一份网上搜到的实现:/** * 比较版本号的大小,前者大则返回一个正数,后者大返回一个负数,相等则返回0 * * @param version1 * @param version2 * @return */ public static int compare...

2018-03-28 10:45:34 350

原创 同步本地远程分支 git remote prune origin

git remote prune origin (不常用总忘记,记录下)

2018-03-16 11:02:31 3317

转载 Android应用开发—onSaveInstanceState方法什么时候被调用?

转载自onSaveInstanceState方法什么时候被调用?(转载/整理)在 Activity 被销毁之前被调用来保存每个实例的状态,这样就可以保证该状态能够从 onCreate(Bundle) 或者onRestoreInstanceState(Bundle)恢复过来。 本方法在 Activity 可能被销毁前调用,这样当该 Activity 在将来某个时刻重新回来时可以恢复其之前的状

2018-01-30 16:09:34 776

转载 Android应用开发-onNewIntent()

转载自Android中 activity 的onNewIntent函数

2018-01-29 21:22:50 228

原创 Android Studio出现Failed to open zip file. Gradle's dependency cache may be corrupt问题的解决

删除了/Users/tycao/.gradle/wrapper/dists目录下对应的gradle-X.X-all目录重新sync了

2018-01-29 13:48:54 2479

转载 Android应用开发-图片加载库Glide

GlidePicasso和Glide之间的区别:Picasso 仅仅缓存了全尺寸的图像;然而 Glide 缓存了原始图像,全分辨率图像和另外小版本的图像。

2018-01-28 16:03:14 287

原创 Todo List

fragment里面如何处理back按键事件。 fragment里面无法Override onBackPressed接口,如何优雅的处理back press事件?activity如何获取当前活跃的fragment对象。异步网络请求如何改造成rxjava,rxjava有设置运行线程的能力,异步请求是否必要?只同步处理感觉就可以完全解决问题了。jdk内hashmap的散列函数 ja...

2018-01-28 14:09:34 375

转载 Android应用开发—FragmentManager如何管理fragments

本文主要摘录自Android中使用FragmentManager管理fragments 和 浅谈FragmentManager与fragment之一二事先讲下自己对fragment的理解:对于fragment,有太多官方文档和博文来介绍,此处不做转述:我感觉android提供fragment这种组件给了开发者更多的“创造”的机会,开发者可以基于fragment自己创造、管理页面的处理

2018-01-27 17:24:18 16860

转载 Android应用开发—AsyncTask

摘录自 Android 多线程—–AsyncTask详解AsyncTaskAsyncTask:异步任务,从字面上来说,就是在我们的UI主线程运行的时候,异步的完成一些操作。AsyncTask允许我们的执行一个异步的任务在后台。我们可以将耗时的操作放在异步任务当中来执行,并随时将任务执行的结果返回给我们的UI线程来更新我们的UI控件。通过AsyncTask我们可以轻松的解决多线程之间

2018-01-27 15:28:44 212

转载 Java多线程编程:变量共享分析(Thread)

Java多线程编程:变量共享分析(Thread) Java 创建线程的两种方法此处只简单讲下自己对java多线程变量共享的理解: 按照进程和多线程的原理,同一进程内的多个线程之间的地址空间是共享的(除去ThreadLocal),这样线程间的数据是可以互相任意访问的,而对于不同的的语言,如果要实现变量数据的访问,除了要遵循线程间非ThreadLocal数据可以直接访问的原则,还要

2018-01-27 14:02:24 195

转载 Android应用开发—Android 消息处理机制:Handler&Message

Android 消息处理机制:Handler|Message

2018-01-26 19:26:04 244

转载 Android应用开发—如何解决handler的警告:Handler Class Should be Static or Leaks Occur

转自android handler的警告Handler Class Should be Static or Leaks Occur在使用Handler更新UI的时候,我是这样写的:public class SampleActivity extends Activity { private final Handler mLeakyHandler = new Handler()

2018-01-26 19:14:12 324

原创 一个记录最近搜索历史的LRU实现

对于很多有搜索需求的功能,一般需要展示下最近n次的历史搜索记录,主要有以下几个功能点:最近搜索条目放在最前面,最早的搜索记录放在最后。只记录最近n条数据,如果超过n条搜索记录,删除搜索时间最久远的记录。没有重复的搜索项,如果新搜索的关键字已存在,则将该关键字提到最前面,删除原位置关键字。可方便的持久化,并可以通过读取持久化数据,恢复原纪录历史。基于以上这些条件,不难看出这就是一个

2018-01-25 20:55:43 1047

转载 Android应用开发—Intent组件详解

转载自:Android中Intent组件详解Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件。Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙述其所期望的服务或动作、与动作有关的数据等。Android则根据此Intent对象之叙述,负责配对,找出相配的组件,然后将 Intent对象传

2018-01-07 18:00:43 254

原创 Android应用开发—PendingIntent:如何判断两个PendingIntent对等

摘录自:PendingIntent详解如何判断两个PendingIntent对等:两个PendingIntent对等是指它们的operation一样, 且其它们的Intent的action, data, categories, components和flags都一样。但是它们的Intent的Extra可以不一样。主要常量FLAG_CANCEL_CURRENT:如果当前系统中

2018-01-07 17:17:03 851

转载 单机单网卡最大tcp长连接数真的是65535吗?

很早微博上一直讨论比较多的问题,这里转载个知乎的答案:单机单网卡最大tcp长连接数真的是65535吗?作者:许怀远 链接:https://www.zhihu.com/question/66553828/answer/244313925 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。TCP四元组(quadruple)的概念,就算培训班出来的也听说过吧?不做解释

2017-12-14 23:55:59 3259

转载 如何迁移整个git仓库

转自准备更换git托管,如何迁移原git仓库一个回答如果你想从别的 Git 托管服务那里复制一份源代码到新的 Git 托管服务器上的话,可以通过以下步骤来操作。从原地址克隆一份裸版本库,比如原本托管于 GitHub。 git clone –bare git://github.com/username/project.git然后到新的 Git 服务器上创建一个新项目,比如 GitCafe。以

2017-12-13 23:33:26 558

转载 节选—Android 视频直播 ( 从快播到直播,从高清到无码 )十年视频开发项目

本文转载自Android 视频直播 ( 从快播到直播,从高清到无码 )十年视频开发项目,截取其中技术概念比较相关的部分,并做了重新的排版。视频和直播的准备:android-java层:camera相关(视频)、AudioRecord(音频)相关、MediaCodec相关(音视频编码)android-native层(c++):h264、h265等编码库的调用;各种音频编码库的使用(aac、amr

2017-12-09 15:40:20 61261

转载 一只视频程序猿的移动直播SDK初体验

本文转自一只视频程序猿的移动直播SDK初体验,此处仅做排版改动。今早老板召开站会,“移动直播这么火,市面上有一百多个APP,小斌,你下周交个原型APP瞅瞅!”小弟心中一万匹草泥马奔过,这玩意儿哪儿是几天就能弄出来的?问候归问候,咱还是赶紧调研吧,端午还约了妹子游泳呢。方案选项作为公司音视频大神,对流媒体基本概念还是OK的。咱首先看看市面上火热的某客、某椒APP怎么工作的。主播端推流使用RTMP推向

2017-12-09 15:17:44 1958

转载 Tcp三次握手和四次挥手状态图

三次握手四次挥手正常情况下 同时挥手 SYN攻击:在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Ser

2017-12-07 14:36:08 3114

转载 tcp建立连接为什么需要三次握手

这是一个看似很“简单”的问题,但貌似并没有一个官方统一的答案。搜索了相关的资料,列举出一些答案。以下部分转载自:tcp建立连接为什么需要三次握手在《计算机网络》一书中其中有提到,三次握手的目的是“为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误”,这种情况是:一端(client)A发出去的第一个连接请求报文并没有丢失,而是因为某些未知的原因在某个网络节点上发生滞留,导致延迟到连接释

2017-12-07 00:32:09 15640

空空如也

空空如也

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

TA关注的人

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