自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小一的专栏

坚持、努力、谦逊

  • 博客(607)
  • 资源 (8)
  • 收藏
  • 关注

原创 Android Studio调用第三方动态库

目录目录前言Android Studio导入动态库前言今天用Android Studio写了一个应用来实现应用层控制抬手亮屏功能。由于抬手亮屏的控制需要借助JNI调用底层kernel的接口,所以这里记录一下Android Studio中使用动态库的注意事项。比较水,高手可以自动掠过。Android Studio导入动态库基于Android Studio 1.3.1进行的测试。在项目的app/s

2015-09-23 20:20:26 6289

原创 Android Studio 之 Gradle 安装配置和编译

目录目录前言Gradle简介Gradle安装Gradle构建项目XYALLappbuildgradle模块gradle配置文件XYALLbuildgradle整个项目的gradle配置文件XYALLgradlewrappergradle-wrapperpropertiesgradle版本统一管理文件settingsgradle项目模块引用配置文件前言由于生产力很大一部分取决于生产工具

2015-09-22 15:07:29 28212 2

转载 C语言指针使用总结

前言这篇博客是转载@qyuhen大神知名的C99学习笔记,总结了一下其中关于指针内容的介绍。项目中需要用到大量的c编程,所以借着学习的机会顺便记录读书笔记。指针常量指针常量就是指“类型为常量的指针”,初始化后不能被修改,固定指向某个内存地址。也就是说,我们不能修改指针自身的值,但是可以修改指针指向目标的值。int x[] = {1, 2, 3, 4};int* const p = x;for (i

2015-09-07 12:08:37 1388

原创 心情无题

不吐槽,有吐槽的时间不如去奋发努力,外部的条件都是借口。宣布一件事情:以后博客全部用英文完成,主要还是为了锻炼一下英文能力,为了以后做准备。当然了,开始英文语法肯定惨不忍睹,大家可以选择性无视我了。

2015-08-25 12:13:20 1253 4

原创 Android Touch事件分发响应机制

概述在Android中,事件包括了点按、长按、拖拽、滑动等,这些事件才能让Android响应用户的各种操作。但是归根结底,所有的这些事件都是以如下三个部分作为基础的:ACTION_DOWN(按下)ACTION_MOVE(移动)ACTION_UP(抬起)所有的操作事件首先必须执行ACTION_DOWN(按下)操作,之后所有的操作都是以按下操作为前提,当按下操作完成后,接下来可能是一段ACTIO

2015-08-19 20:36:00 2000

原创 git patch生成和使用

前言由于工作需要,基于源码进行改动的时候经常需要在git分支上打各种各样的patch来解决各种各样的问题。这里总结两种生成patch和打patch的方法。git diff这种是Unix下的patch,在git分支下通过git diff命令生成。具体命令如下:git diff > diff.patch对于git diff生成的patch,可以用如下两条命令进行merge:git apply diff.

2015-08-17 21:38:05 3203

原创 《深入理解Java虚拟机》读书笔记——内存分配与回收策略

概述JVM采用分代的垃圾回收策略:不同对象的生命周期是不一样的。目前JVM分代主要是分三个年代:新生代:所有新创建的对象都首先在新生代进行内存分配。新生代具体又分为3个区,一个Eden区、一个From Survivor区和一个To Sruvivor区。大部分对象都被分配在Eden区,当Eden区满时,还存活的对象将被复制到From Survivor区,当From Survivor区满时,此区还存活

2015-08-17 11:21:04 2927

原创 Android Logger日志系统

目录目录前言运行时库层日志库liblog源码分析CC日志写入接口Java日志写入接口前言该篇文章是我的读书和实践笔记。参考的是《Android系统源代码情景分析》。运行时库层日志库——liblogAndroid系统在运行时库层提供了一个用来和Logger日志驱动程序进行交互的日志库liblog。通过日志库liblog提供的接口,应用程序就可以方便地往Logger日志驱动程序中写入日志记录。

2015-08-10 10:47:20 6372

原创 java和javac编译运行java程序

目录目录前言编译命令介绍javacjava代码编译与运行java类发现规则分离class和java文件参考链接前言给自己定了一个月学习JVM虚拟机的计划,不管有没有卵用,学点新东西总是好的。但是在学习过程中,我想在命令行测试一些JVM参数的时候,发现自己脱离了IDE,竟然无法直接编译java程序!!我的原则不能抱怨太多,像个Loser,不会的就花时间补回来。下面,主要是总结一些如何在

2015-08-06 20:59:42 10880

原创 《深入理解Java虚拟机》读书笔记——Java内存区域与内存溢出异常

前言10月4号就要举办和璐璐的婚礼了,为了督促自己,准备8月份利用一个月晚上的业务时间来学习Java虚拟机的知识。 参考的是周志明写的《深入理解Java虚拟机》。运行时的数据区域初学Java时,估计很多人都跟我一样,将Java的内存模型划分为:栈区堆区字符串常量区并非说这种区分方法是错误的,而是说这种区分方法过于笼统,纯粹是为了方便记忆。真要深入了解Java语言,那我们就应该清楚的知道,J

2015-08-05 19:21:08 1309

原创 Android init进程——属性服务

目录目录概述属性服务属性服务初始化创建存储空间__system_property_area_initinit_workspace客户端进程访问属性内存区域属性服务器的分析启动属性服务器服务端处理设置属性请求客户端发送请求概述init是一个进程,确切的说,它是Linux系统中用户空间的第一个进程。由于Android是基于Linux内核的,所以init也是Android系统中用户空

2015-08-05 14:33:16 6542

原创 按文件大小列出指定目录下文件(du,sort)

需求做系统移植的过程中,经常会遇到需要查看指定目录下所有文件大小的需求,然后根据文件的大小进行暴力的删除操作。方案列出所有文件的具体大小。du -s *sort命令对其进行排序。du -s * | sort -t " " -k 1 -nru

2015-08-04 12:12:18 3723

原创 [LeetCode]Number of Digit One,解题报告

题目Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n.For example: Given n = 13, Return 6, because digit 1 occurred in the following n

2015-07-30 12:34:10 3067

原创 Android Recovery OTA升级(一)—— make otapackage

概述make otapackage是Android Build系统支持的命令,用来生成Recovery系统能够进行升级的zip包。因此,想要了解Android的OTA升级机制,我们首先需要学习make otapackage命令的执行过程。为了防止泄密,以下源码内容都是基于Android4.4.2_r1分支进行分析。make otapackagemake otapackage是一个.PHONY伪目标。

2015-07-25 14:03:00 16865 1

原创 python getopt使用

getopt函数原型:getopt.getopt(args, shortopts, longopts=[])参数解释:args:args为需要解析的参数列表。一般使用sys.argv[1:],这样可以过滤掉第一个参数(ps:第一个参数是脚本的名称,它不应该作为参数进行解析)shortopts:简写参数列表longopts:长参数列表返回值:opts:分析出的(option, value)列

2015-07-23 13:55:20 4432

原创 Python subprocess模块使用

前言学习Android生成OTA包的python脚本的时候,发现脚本里是使用subprocess模块管理子进程的,很有意思,这里记录一下学习心得和大家分享一下。subprocess在c语言中,一个进程可以fork出一个子进程,并让这个子进程exec一个新的命令。在python中,我们通过标准库的subprocess包来fork一个子进程,并在子进程中运行一个新的程序。subprocess包中有数个创

2015-07-22 15:54:40 5105

原创 [LeetCode]Product of Array Except Self,解题报告

题目Given an array of n integers where n > 1, nums, return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].Solve it without division and in O(n).For

2015-07-17 10:20:32 14030 1

原创 Android反编译工具使用

目录目录前言工具流程图获取classesdexapkjarodexbaksmailsmailclassesdex - classes-dex2jarjarjd-gui查看资源文件和xmlapk安装解包Apk打包Apk前言为什么需要反编译?反编译apk。例如市面上有很多优秀的apk,实现了一些很优秀的功能,而这些功能无法轻易google到的时候,我们可以通过反编译apk

2015-07-16 16:17:34 5063

原创 Android WakeLock详解

目录目录前言WakeLock使用WakeLock levelAndFlags和使用场景参考场景WakeLock源码分析结束语前言不知道大家是否也想过,当你手机灭屏的时候,为什么一条微信或者QQ信息能够点亮你的屏幕? 答案就是Android的WakeLock机制。这篇文章主要是介绍如何使用WakeLock,应该还达不到详解的地步,各位同学感兴趣的可以看一下WakeLock的基本使用方法。

2015-07-14 14:00:07 26824 2

原创 Android Recovery OTA升级(二)—— Recovery源码解析

目录目录Recovery源码分析概述main函数输出重定向填充fstab结构体挂载cache分区获取Recovery命令参数分析recovery命令install_packageload_keys加载公钥原文件verify_file对升级包进行签名校验mzOpenZipArchive-打开升级包获取相关信息try_update_binary-ota真正执行的地方Recove

2015-07-13 15:42:52 11933

转载 Android Binder

Binder进程间通信库Android系统在应用程序框架层将各种Binder驱动程序操作封装成了一个Binder库,这样进程就可以方便调用Binder库提供的接口来进行进程间通信。在Binder库中,Service组件和Client组件分别使用模板类BnInterface和BpInterface来描述,其中,前者称为Binder本地对象(Binder Native),后者称为Binder代理对象(B

2015-07-09 18:09:02 4122

原创 Android Parcelable vs Serializable

序列化在Android中,对象是实现序列化之前是无法直接作为Intent参数在Activity之间传递的。 Android中对象序列化可以通过实现Serializable接口或者实现Parcelable接口。接下来,我会介绍一下实现这两个接口的方法以及如何在这两者之间进行选择。SerializableSerializable是一个标记接口,意味着它没有需要实现的方法。因为对象再实现Serializ

2015-07-09 15:04:12 4296 2

原创 Android智能指针——读书笔记

目录结构目录结构概述背景知识GC经典问题轻量级指针实现原理分析构造函数析构函数应用实例分析强指针和弱指针强指针的实现原理分析增加对象的弱引用计数增加对象的强引用计数sp的析构函数实现小结弱指针的实现原理分析wp类的构造函数实现wp类的析构函数实现wp类的promote函数实现对象同时被其他强指针引用对象没有被其它强指针引用应用实例分析weightpoint

2015-07-09 11:31:28 6756 1

原创 Java abstract class vs interface

前言abstract class和interface都是java用来描述抽象体的,不知道是否有同学跟我一样对这两者的语法层面的区别以及如何选择这两者还存在着疑惑,反正接下来,让我详细介绍一下abstract class和interface。理解抽象类在面向对象的概念中,所有的对象都是通过类来描述的。但是反过来却不是这样,并不是所有的类都是用来描述对象的。因为这个类中可能没有足够的信息来描述一个具体的

2015-07-08 20:12:47 3991

原创 PreferenceActivity、PreferenceFragment使用

目录目录前言PreferenceActivitypreferences_scenario_1xmlPreference Activity演示PreferenceFragmentxml布局文件Preference FragmentPreference Activity管理Fragment适配前言转来转去又回到了Android,闲话少说,这里是参考Android原生的Setting

2015-07-01 16:53:42 6048 2

原创 Java数组备忘录

前言最近用Java做ACM题目的时候,经常忘记数组如何实现静态初始化,所以这里记录一下Java数组使用的常识。Java数组常识数组在Java中是一个对象,数组实例需要通过new操作符进行创建。常识知识:数组大小可以通过Array.length获取。数组索引起始为0,负数索引在Java中是无效的。并且,和C语言数组不同,Java中的数组会进行越界判断,无效的索引会抛出ArrayIndexOutOf

2015-06-28 11:53:40 4082 1

原创 C++中static_cast, dynamic_cast用法

前言Android的Framework层源码中有很多强制类型转换函数的调用。写惯了C代码的人一般都习惯下面这种强制转换方式:double a = 89;int b = (int)a;但是,在C++代码中,不推荐使用C这种(type-id)的强制转换风格代码,更推荐使用C++的标准类型转换符:static_cast和dynamic_cast。static_caststatic_cast的函数原型如下

2015-06-24 17:55:43 5745

原创 Android C++中线程同步实现

前言Android Framework中的线程同步主要就是对pthread的mutex和condition的封装。所以学习之前,建议先了解一个C++中线程同步的实现,参考链接:C++ 中线程学习MutexAndroid Mutex的实现源码位于/system/core/include/utils/Mutex.h,我们先来看一下Mutex类的具体实现:class Mutex {public:

2015-06-24 12:19:49 6309

原创 C++ 线程学习

线程的概念C++中的线程的Text Segment和Data Segment都是共享的,如果定义一个函数,在各线程中都可以调用,如果定义一个全局变量,在各线程中都可以访问到。除此之外,各线程还共享以下进程资源和环境:文件描述符每种信号的处理方式当前工作目录用户id和组id但是,有些资源是每个线程各有一份的:线程id上下文,包括各种寄存器的值、程序计数器和栈指针栈空间errno变量

2015-06-19 16:24:02 7460

原创 Android Binder驱动程序

Binder驱动程序Binder驱动程序实现在内核中,它主要由binder.h和binder.c两个源文件组成。下面我们就开始介绍Binder驱动程序的基础知识,包括基础数据结构、初始化过程,以及设备文件/dev/binder的打开(open)、内存映射(mmap)和内核缓冲区管理等操作。基础数据结构在Binder驱动程序中有两种类型的数据结构,其中一种是在内部使用的,另一种是在内部和外部均会使用到

2015-06-17 17:19:22 3857

转载 Javascript模块化编程(一):模块的写法

转载链接本文转自阮一峰老师的技术博客:Javascript模块化编程:模块的写法前言Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人写好的模块。 但是,Javascript不是一种模块化编程语言,它不支持“类”,更不用说“模块”了。 Javascript社区做了很多努力,在现有的运行环境中,实现“模块”的效果。本文总结了当前“

2015-06-15 14:44:25 5042

转载 JavaScript面向对象编程——非构造函数的继承

原文链接本来也是转载阮一峰老师的JavaScript教学篇:Javascript面向对象编程(三):非构造函数的继承什么是非构造函数的继承比如,我现在有一个对象,叫做’Chinese’。var Chinese = { nation:'china'}; 还有一个对象,叫做‘Doctor’。var Doctor = { career:'doctor'};怎么才能让‘Doctor’去继

2015-06-14 22:56:01 3737

转载 JavaScript面向对象编程——构造函数继承

前言上一篇文章介绍了JS里如何“封装”数据和方法,以及如何从原型对象生成实例。 这篇文章要介绍的,对象之间“继承”的五种方法。例如,现在有一个Animal对象的构造函数:function Animal() { this.species = "animal";}还有一个Cat对象的构造函数:function Cat(name, color) { this.name = name;

2015-06-12 14:28:57 3797

转载 JavaScript面向对象编程——封装

转载链接本来转载自阮一峰老师的Javascript教学,原文链接:Javascript面向对象编程(一):封装前言我认为JavaScript(之后简称js)最难的就是对象学习了。js的对象模型极为诡异,和Java、C++都不一样,有点类似于PHP的关联数组,总之,会让初学js的人感到非常不适应。 这里记录自己js对象的学习笔记,大量参考了其他牛人的博客和《JavaScript 权威指南》。封装js

2015-06-12 11:22:36 3990

原创 JavaScript-数组详解

前言计划赶不上变化,本来想深入学习python的我,无奈要转到js开发,在js基本0基础的情况下,最近也狂补js知识了。 本着好记性不如烂笔头的信念,我决定总结一下js中数组的使用。创建数组js中数组的声明可以有如下几种方式:var arr = []; // 简写模式var arr = new Array(); // new一个array对象var arr = new Array(arr

2015-06-11 18:18:40 4500

原创 Java内部类学习总结

目录目录概述非静态内部类从外部类的非静态方法中实例化内部类从外部类的静态方法中实例化内部类内部类的this引用静态内部类从外部类的非静态方法中实例化静态内部类从外部类静态方法中实例化静态内部类匿名内部类方法内部类概述最近学习python,发现python是支持多继承的,这让我想起Java是通过内部类实现的这套机制。这篇文章不是讲如何通过内部类实现多继承,而是总结一下内部类的类型和

2015-06-09 20:53:36 4520

原创 Python操作Mysql基础教程

Python操作Mysql最近在学习python,这种脚本语言毫无疑问的会跟数据库产生关联,因此这里介绍一下如何使用python操作mysql数据库。我python也是零基础学起,所以本篇博客针对的是python初学者,大牛可以选择绕道。另外,本篇博客基于的环境是Ubuntu13.10,使用的python版本是2.7.5。MYSQL数据库MYSQL是一个全球领先的开源数据库管理系统。它是一个支持多用

2015-06-08 19:44:14 6583

原创 Android动画学习——Tween Animation

Android动画学习android中动画分为3种:Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生的动画效果,即是一种渐变动画。Frame Animation:顺序播放事先做好的图像,是一种画面转换动画。Property Animation:属性动画,通过动态地改变对象的属性从而达到动画效果,属性动画为API 11新特性。Twe

2015-05-27 00:37:17 5423

原创 红黑树

目录目录前言二叉查找树插入删除小结红黑树树的旋转知识基础数据结构左旋右旋红黑树的插入情况一情况二情况三父节点p和叔叔节点u都是红色父节点p是红色但叔叔节点是黑色或者不存在父节点p是红色但叔叔节点是黑色或者不存在并且插入节点和父节点在一条直线上红黑树的删除情况一情况二情况三情况四情况五情况六前言学习Android Binder机制的时候,看到“宿主进程使

2015-05-20 20:30:36 4776 4

原创 关于Edify脚本语言

目录目录edify概述edify语法mountformatdeletedelete_recursiveshow_progresspackage_extract_dirpackage_extract_filesymlinkset_permui_printrun_programwrite_raw_imageassertfile_getprop参考资料edify概述edi

2015-05-19 12:55:17 7662

ActiveAndroid-3.0-JAR包

ActiveAndroid 3.0版本的jar包.

2016-12-02

Android打包boot.img工具mkbootfs

用于Android打包boot.img文件,主要是针对ramdisk

2014-07-08

ExpandableListView小项目展示

博客里讲解了自己利用ExpandableListView实现的一个Demo,大家可以下载参考。

2014-06-21

windows scoket编程

windows socket编程,两个程序,一个客户端,一个服务器端,实现了服务器端监听客户端的请求,客户端发送数据包,服务器段接收并返回。说白了,就是中国传媒大学研究生计算机网络的第7次实验

2011-11-28

apt-mirror搭建ubuntu本地仓库源

我自己总结的如何搭建ubuntu本地仓库源,非常具有参考价值,和大家共享一下

2011-08-22

关于ntp服务器搭建

我自己总结的如何搭建ntp服务器,希望大家也能从中学到知识.

2011-08-22

空空如也

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

TA关注的人

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