自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (4)
  • 收藏
  • 关注

原创 submodule + gradle配置实现动态打包

项目背景 最近的项目是一个通用的播放框架。内部集成了目前市面上主流的视频网站的播放sdk,比如爱奇艺、腾讯、华数等。另外,还需要支持明流的url播放。这个通用的播放框架需要在多个项目中使用,各个项目需要支持的播放方式也是不一样的。有的项目只需要支持url播放,有的项目需要支持所有的播放方式。如果统一的只提供一个jar或者aar,将导致只需要url播放的应用也需要集成一个巨大无比的库。而且,这个

2017-05-23 16:04:44 1402

原创 submodule集成第三方库

Maven集成第三方库在Android Studio中,原生支持maven仓库,可以简单的几行配置项就可以集成第三方的jar或者aar。如下两步即可实现:配置jcenter地址 配置依赖 这种方式简单方便,支持广泛,但是也存在一些痛点:需要第三方库编译打包完成,并上传到maven仓库。GitHub上很多项目并不支持maven下载。简单方便,但不够灵活。如果是一个庞大的第三方库,即使你只想使用其

2017-05-23 14:49:38 1733

原创 主流插件框架分析

前言目前移动端产品功能越来越复杂,模块不断增加,APK体积也不断增长。由于Android Dalvik最初设计的问题,单个.dex文件方法数最多是65536个。因此,APK难免会遇到64K方法数限制的问题。 Google官方提供了MultiDex解决方案。但是该解决方案,有比较大的局限性。应用进程启动时MultiDex需要在主线程去做DEXOPT操作,中间涉及到文件读写、文件验证、数据复制、反射

2017-03-10 14:35:25 3921

原创 Web Cache的实现

CDN将图片、视频和网页等内容存储到离用户最近的地方,实现为大量用户的就近服务,减少对源服务器和骨干网络的压力。负载均衡系统和内容管理系统都是为了更好的实现各个CDN节点协同工作。所以,CDN的本质上等于分层分布式集群Cache + 智能访问调度。根据缓存内容的不同,可以将Cache设备分为Web Cache和流媒体Cache。Web Cache服务器主要缓存静态网页等内容,也具备文件下载和流媒体

2016-11-26 16:16:50 3374

原创 CDN架构

CDN公司在整个互联网中部署了数以百计的节点(Cache服务器集群)。这些Cache服务器都分布在各个网络运营商的IDC机房中,位置尽量靠近用户网络。CDN系统将内容从源站复制到各个节点,在内容提供者更新内容时,CDN系统将更新后的内容重新分发到各个节点。当用户请求内容时,CDN系统将选择一个最优的节点向用户提供内容。这个挑选最优节点的过程,就是负载均衡。而这个最优节点,可能最接近用户,或者有一条与

2016-10-11 18:06:41 6388

原创 CDN基础知识

CDN的基本概念CDN,content distribute network(内容分发网络)或者content delivery network(内容交付网络)。很显然,CDN的任务是将内容从源站传递给用户。联网的设计理念是:网络是中立的,是无控制的,任何人都无决定权;网络是应用无关的,它的任务就是将数据更好更快的进行端对端的传输。常说的互联网由两层组成:一层是以TCP/IP为代表的网络

2016-10-08 17:15:41 1429

原创 CDN专栏

最近看了《CDN技术详解》一书,结合自己在工作中的实践,整理总结,作为自己的读书笔记。 以下文章中所有插图均截取自《CDN技术详解》。1. cdn基础知识 2. cdn的技术架构 3. web cache实现 4. 流媒体cdn技术

2016-09-29 15:01:10 475

转载 volatile关键字解析

本文转载Java并发编程:volatile关键字解析   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatil

2016-07-20 12:08:52 202

原创 MVP模式

2016-07-18 11:35:10 223

原创 Android资源文件的管理

android程序中,不管是普通的drawable、anim、color、layout、value等类型的资源文件,还是raw类型的资源文件,或者asset类型的资源文件,所有的资源文件都是通过AssetManager管理的。其中asset资源文件,在打包apk时,不会有任何的改动,会被原封不动的打包进apk内,可以通过文件名和路径访问;而raw资源文件打包时也会原封不动的打包,只不过使用资源id访

2016-07-12 22:16:40 3848

原创 ANR机制

ANR全称是application not responsing,也就是程序无响应。在android系统中,和程序崩溃一样,都是程序设计编码的问题。 android应用中,当你的touch、key等事件得不到及时响应时,在一定的延时之后,系统就会弹出ANR的警告。此时,用户可以选择结束程序或者继续等待。本文将主要从分析ANR原理,以及如何避免ANR。一、ANR产生的原因在android程序中,所有的

2016-07-08 00:48:07 1498

原创 TCP/IP分层结构

2016-06-23 11:12:48 377

原创 zygote启动流程

在Android系统中,所有的应用程序和系统服务京城system server都是由zygote进程fork出来的。本文简单分析zygote的启动过程。1、init.rc init进程是linux系统启动的第一个进程,后续启动的所有进程都是init进程的直接或者间接fork出来的,zygote进程也是一样。service zygote /system/bin/app_process -X

2016-06-13 23:40:35 486

转载 JNI相关知识

本文转载,原文链接要素 :1、 该函数大全是基于C语言方式的,对于C++方式可以直接转换 ,例如,对于生成一个jstring类型的方法转换分别如下: C编程环境中使用方法为:(*env) ->NewStringUTF(env , “123”) ; C++编程环境中(例如,VC下)则是: env ->NewStri

2016-06-08 11:56:13 270

原创 media server分析

media server是android的一个重要服务,主要是与多媒体相关的一些系统服务。在 ServiceManager相关中我们已经分析了,media server是在系统init.rc脚本中启动的,并且在service manager之后。由于media server中包含了media player、audio flinger、camera等多个service相关的东西,本文则只取其中的med

2016-05-30 23:57:52 5537

原创 ServiceManager启动流程

ServiceManager是一个系统服务进程,在系统init.rc脚本中启动。其代码位于目录/frameworks/base/cmds/servicemanager下。1、init.rc init.rc文件存放在/system/core/rootdir/目录下。service servicemanager /system/bin/servicemanager class core

2016-05-27 00:30:10 2687 1

原创 native binder相关类

android native binder相关的类在/frameworks/native/libs/binder/目录下,对应的头文件在/frameworks/native/include/binder/目录下。不同版本的源码,路径可能会有不同。1、ProcessState.cppProcessState::ProcessState() : mDriverFD(open_driver())

2016-05-24 22:57:35 712

原创 Java aidl分析

1、IBinder接口定义:public String getInterfaceDescriptor();public boolean pingBinder();public boolean isBinderAlive();public IInterface queryLocalInterface(String descriptor);public void dump(FileDescrip

2016-05-23 23:14:25 861

原创 ubuntu 14.04使用codeblock

ubuntu codeblock

2016-05-17 09:39:53 1019

转载 JNI相关

http://blog.csdn.net/qinjuning/article/details/7595104

2016-04-08 10:12:16 215

转载 Android studio gradle配置问题

点击打开链接

2015-12-14 17:41:35 270

原创 视频直播Android端流程图

最近做的一个视频直播录制项目,android端的核心功能流程图

2015-11-05 16:11:57 1556

原创 PostgreSQL的一些操作

psql命令先使用安装pq时的超级用户postgres登入psql控制台,创建一个新的用户和数据库,并将该数据库的权限赋给新用户。创建用户 CREATE USER user_name WITH PASSWORD ‘user_password’; 创建数据库 CREATE DATABASE user_db OWNER user_name;将数据库的权限赋给用户 GRANT ALL PRIVILE

2015-11-04 11:49:46 305

原创 git操作

git ignore配置1、语法规则: 以斜杠“/”表示目录; 以星号“*”通配多个字符; 以问号“?”通配单个字符; 以方括号“[]”包含单个字符的匹配列表; 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;2、举例: *.[oa] // 忽略.o和.a文件 !my.b // my.b除外 build // 忽略build文件和build目录 build

2015-10-12 14:22:06 270

原创 android studio的一些编译错误

Must have one-pixel frame that is either transparent or white. 使用 .9图片编辑工具打开对应的图片,严格设置四边,重新保存即可libpng warning: iCCP: Not recognizing known sRGB profile that has been edited 可以直接忽略掉这种警告,或者参考[http://my

2015-10-09 20:16:14 242

转载 http协议详解

http://blog.csdn.net/cs408/article/details/48932687

2015-10-08 18:42:53 286

原创 常见的MySQL命令大全

一、连接MySQL        格式: mysql -h主机地址 -u用户名 -p用户密码       1、例1:连接到本机上的MYSQL。        首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:

2015-10-08 18:39:37 292

原创 eclipse svn操作

创建 分支 / 标记1、使用eclipse import菜单导入svn项目。 2、项目菜单 -> Team -> 分支/标记对话框,选择分支存储位置。 此处是要创建一个基础分支。路径前缀为 branches/base,而项目名字是FangYan。所以最终路径是branches/base/FangYan。需要注意服务器上该路径是不存在的。 2次Next然后输入 分支/标记 的co

2015-10-08 18:33:42 311

原创 Android开源项目汇总

https://github.com/wasabeef/awesome-android-ui#material https://github.com/Trinea/android-open-project 各种常用工具、UI的汇总。

2015-08-18 18:57:10 282

原创 Activity启动流程

本文主要是对activity的启动流程做一个简单分析1、Activity.java 位于/frameworks/base/core/java/android/app/目录。有activity发起startActivity()请求,再调用到startActivityForResult()。 public void startActivityForResult(Intent intent, in

2015-07-29 23:55:29 657

原创 MediaPlayer源码简单分析

/frameworks/base/media/java/android/media目录 MediaPlayer.java/frameworks/base/media/jni目录 com_android_MediaPlayer.cpp (jni层,将java对象和BnMediaPlayerClient对象一一对应绑定)/frameworks/av/include/media和/framework

2015-07-28 22:48:50 2405

原创 按键事件在java framework中的流程

按键事件在activity中的流程和按键事件在native和jni中的流程两篇文章主要探讨了事件在activity中的处理流程和事件在native层的处理流程。本文则主要探讨事件如何进入activity,以及如果activity未处理事件时,事件在framework中的处理。事件如何进入activity 前面的文章已经讲到了事件经过native和jni的处理之后,最终通过InputChannel进

2015-07-26 20:19:06 786

原创 按键事件在native和jni中的流程

按键事件在activity中的流程一文已经简单介绍了按键事件在activity中的处理流程。本文则着重介绍事件进入activity之前的nativie层的流程。Native层的流程 native层相关类都在/frameworks/base/services/input目录下,InputManager、InputReader、InputDispatcher、EventHub是几个主要类。InputM

2015-07-23 21:02:26 2141

原创 按键事件在activity中的流程

android的事件有很多种,touch、key、mouse等。但是基本流程大概是一致的。本文将探寻activity中的事件流程,至于事件如何传递到activity,将另起篇幅介绍。activity的事件入口 public boolean dispatchKeyEvent(KeyEvent event) { onUserInteraction(); Window

2015-07-23 10:37:39 3646

原创 设计模式六大原则

开放封闭原则,所有面向对象设计原则的核心。其核心思想是:类、模块和函数应该对扩展开放,对修改关闭。对扩展开放,意味着有新的需求或变化时,应该对现有的类、模块等做扩展,以适应新的情况。对修改关闭,意味着一旦类、模块等设计完成,就可以独立完成其工作,而不应尝试对其做任何修改。实现开闭原则的基础:面向抽象编程,而不针对具体实现。抽象相对固定,而具体实现则和实际相关。让类依赖相对固定的抽象,对外部调用

2015-07-22 10:14:10 423

tcp/ip分层

tcp/ip分层

2016-06-23

自己整理的UPnP资料

最近学习UPnP,网上找了不少资料,花了不少时间。整理了一下,跟大家分享分享。压缩包里包含了upnp协议资料,一个第三方开发的java sdk(包括源码和lib包,支持android),还有基于该sdk开发的media renderer和media player。使用java开发的码农们有福了。

2011-12-08

cling-support源码

一个UPnP协议的java sdk,可以使用java语言快速开发UPnP应用

2011-12-07

cling-core源码

一个UPnP协议的java sdk,可以使用java语言快速开发UPnP应用。

2011-12-07

空空如也

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

TA关注的人

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