自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android事件的分发机制

PhoneWindow的结构Activity有一个PhoneWindow类型的成员变量mWindow,PhoneWindow是每一个Activity的主窗口类,PhoneWindow里面有一个DecorView类型的成员变量mDecor。 DecorView继承自FrameLayout,我们通过setContentView所设置进去的内容是在id为content的ViewGroup下的,这个Vie

2016-05-12 21:59:06 658

原创 Linux Shell文本处理命令技巧

原链接:http://www.vaikan.com/linux-shell-tips-and-tricks/检查远程端口是否对bash开放:echo >/dev/tcp/8.8.8.8/53 && echo “open” 让进程转入后台:Ctrl + z 将进程转到前台:fg 产生随机的十六进制数,其中n是字符数:openssl rand -hex n 在当前shell里执行一个文件里的命令

2016-05-07 23:30:43 487

原创 TintedStatusBar实践总结

Google官方在api21以前是不支持设置状态栏颜色的。在api19开始,我们可以设置window的FLAG_TRANSLUCENT_STATUS, 然后在Activity布局的最顶端放一个和状态栏等高的view实现但是这个方法有如下问题:1.  如果Activity布局中有底部的EditText,输入文字时,键盘弹出来,EditText却不会跟着弹起来2.  如

2016-02-05 23:00:51 754

原创 Android debug.keystore的key和密码

Keystore name: "debug.keystore"Keystore password: "android"Key alias: "androiddebugkey"Key password: "android"CN: "CN=Android Debug,O=Android,C=US"

2016-01-12 15:24:31 1009

原创 Java Native Interface笔记

最近在研究AndFix的动态更新原理,需要用到JNI,所以把JNI的基本知识点重新整理了一下,记录在这里,以免遗忘。教程地址:https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.htmlJNI数据类型:Java原始类型:jint, jbyte, jshort, jlong, jfloat, jdouble

2016-01-11 16:40:45 645

原创 find命令的-prune参数的使用

直接看例子: 假如在当前目录下查找文件,且当前目录下有很多文件及目录(多层目录),包括dir0、dir1和dir2 …等目录及dir00、dir01…dir10、dir11…等子目录。在当前目录下查找所有txt后缀文件find ./ -name *.txt2.在当前目录下的dir0目录及子目录下查找txt后缀文件find ./ -path './dir0*' -name *.txt3.在当前

2016-01-11 08:13:55 3156

原创 在OS X上 为什么su命令的password输入之后 总是提示Sorry?

默认情况下,OS X是不支持su命令的。相反,你应该使用sudo。sudo是允许用户以超级用户的权限执行操作的一个命令。如果要启用su命令,操作如下: sudo passwd root

2016-01-10 18:05:30 4223

原创 在一个FragmentTransaction中进行多个操作时的注意事项

在一个FragmentTransaction中进行多个操作时要注意一些事情: 比如在一个FragmentTransaction中先后执行以下操作: 1. add一个Fragment 2. hide这个Fragment 3. show这个Fragment如果我们在fragment的onHiddenChanged中做一些事情的话,我们会发现getActivity是为空的,为什么?请看以下代码:

2015-06-15 15:43:02 952

原创 Android的support v4中的Fragment的一个Bug

问题描述public class MatchFragment extends BaseFragment { public static final String TAG = MatchFragment.class.getSimpleName(); private FragmentManager mFragmentManager; public MatchFragment() {

2015-05-24 21:24:59 3397

原创 Android支持多屏幕尺寸和多屏幕密度

屏幕尺寸: 屏幕尺寸被分为small, normal, large, and extra-large四个类别具体每一个类别的物理尺寸的大小是多少呢? Google文档里面是这样说的:xlarge screens are at least 960dp x 720dp large screens are at least 640dp x 480dp normal screens are at l

2015-05-22 18:15:39 757

原创 Android Studio上打的包在arm64位机器上找不到对应的so库

现象描述 Android Studio打出来的包在64位机器上报以下 java.lang.UnsatisfiedLinkError: dlopen failed: “libfoobar.so”我们是在工程目录中将32位的so库拷贝到arm64-v8a中的原因分析 apk包在安装的时候,系统会把包中与自己的abi对应的lib目录中的so库文件拷贝到system分区中,32位机器中只有一个目录/s

2015-05-18 17:33:08 15263 5

原创 WebView回调所在的线程

WebViewClient和WebChromeClient是在主线程上被回调的 被@android.webkit.JavascriptInterface注解的JS回调是在JavaBridge线程上被回调的,所以在JSApi的接口中如果要操作UI,必须得把Runnable对象Post到主线程上执行

2015-05-14 11:30:55 2870

原创 Android Studio的Code Completion和代码格式化

Android Studio的Code Completion需要在Settings->IDE Settings->Editor->Other->Show quick doc on mouse move中进行设置关于Androd Studio的代码格式化,我用的是EclipseCodeFormatter这个插件,这个插件的下载地址是: http://plugins.jetbrains.com/plu

2015-05-04 13:39:14 2014 1

原创 Android Studio安装时的注意点

一定要准备VPN帐号,因为在第一次运行Android Studio的时候会下载以下的内容: 1. Fetching Android SDK component information 2. Setup Wizard - Downloading Components界面下面开始下载Andorid SDK(即使你安装的是带Android SDK的AS的安装包,如果它带的SDK版本不是最新的,在这个步

2015-04-22 20:59:18 841

原创 Android UI树的Layout原理

在UI树的任意一个节点,当它被它的父亲layout时,这个节点的layout方法被父亲调用:public void layout(int l, int t, int r, int b) { if ((mPrivateFlags3 & PFLAG3_MEASURE_NEEDED_BEFORE_LAYOUT) != 0) { onMeasure(mOldWidthMeasureS

2015-03-19 20:21:33 854

原创 Android UI树的measure原理

我们来看FrameLayout的onMeasure方法:protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int count = getChildCount(); final boolean measureMatchParentChildren = MeasureSpe

2015-03-19 16:25:36 667

原创 Java NIO简单例子

例子如下:Selector selector;try { selector = Selector.open(); SocketChannel socketChannel = SocketChannel .open(new InetSocketAddress("192.168.91.109", 4321)); socketChannel.configu

2015-03-18 23:29:14 684

原创 关于消息服务的线程模型的讨论

目前的消息服务的线程模型是在单线程上面实现对socket的读和写,缺点是必须得以轮询的方式去查询是否有可读的数据,虽然轮询间隔时间为400ms,但是仍然占用了一定的系统资源解决占用系统资源的办法,最直接的是使用两个线程去分别处理socket的读和写,但是这个方式仍然比较原始,需要处理线程间的同步和互斥。如果采用mina的方式,因为mina是基于事件驱动的,所以比较方便,示例如下:IoConnecto

2015-03-18 18:24:17 392

原创 Android MessageQueue和Loop分析

我们首先来看HandlerThread的创建过程,public class HandlerThread extends Thread { @Override public void run() { mTid = Process.myTid(); Looper.prepare(); synchronized (this) {

2015-03-17 15:37:53 745

原创 关于ThreadLocal

Thread-Local provides get and set access or methods that maintain a separate copy of the value for each thread that uses it, so a get returns the most recent value passed to set from the currently exec

2015-03-15 18:43:21 401

原创 决定线程池的线程数量的公式

注意:这个公式是针对需要进行IO操作的任务的情况

2015-03-15 18:17:43 1581

原创 JVM什么时候退出

在Java的官方文档中:http://docs.oracle.com/javase/specs/jls/se8/html/jls-12.html#jls-12.1 有如下的描述: A program terminates all its activity and exits when one of two things happens: All the threads that are not

2015-03-15 18:03:45 1482 2

原创 Java并发编程实践阅读笔记

1. 在LazyInitialization中的竞争条件@NotThreadSafepublic class LazyInitRace { private ExpensiveObject instance = null; public ExpensiveObject getInstance() { if (instance == null)

2015-03-15 17:11:18 400

原创 Objective C的内存管理

Objective C提供了三种内存管理方式:1. “手工持有-释放”或者MRR2. “自动引用计数”或者ARC3. 垃圾回收的方式,此种方式只能在Mac OS下使用,iOS下是不行的错误的内存管理往往包括两类:1. 释放或者覆盖正在使用中得数据2. 不用的数据却不释放,从而导致内存泄露基本内存管理规则You own any object you

2015-03-11 14:22:50 463

原创 iOS开发学习零碎笔记

1. 如果在Xcode工程中删掉了一个文件,然后再新建一个与之同名的文件,那么在Build并部署到Simulator上运行时,新文件的效果并不会起作用,需要将Simulator里面的app删除,重新安装才可以2. 新建一个workspace,然后再将一个已经存在的工程的.xcodeproj文件拖入到workspace中,如果在工程导航栏中并没有显示工程的样式,就说明这个工程已经在另外的xcod

2015-03-11 09:48:03 350

原创 boost asio编程笔记

1. 传递给async_write的数据不能是在局部变量或在栈上分配的内存,否则会出错2. 在同一个线程上对同一个socket连续调用async_write方法时,从目前的测试来看,socket上传出去的数据并没有发生乱序,发出去的顺序是与async_write调用的顺序一致的。如果把一个包分成包头和包体,在包头的发送完成的回调里面再发送包体,会导致包头和包体中间可能会插入其他数据。

2015-03-11 00:19:34 589

原创 Android上的GIF图片缩放库的开发

最近在做Android上面的GIF图片的缩放的开发,Android原生的框架并不支持这个功能,使用BitmapFactory去解码GIF图片也只是把GIF图片的第一帧解码到Bitmap中而已。经过一定的调研搜索,我确定了有三种可行的方法:1. 使用Java版本的GIF解码器和编码器将GIF中的每一帧都解码出来,然后缩放,再编码到新的GIF文件中。2. 使用Android上面的Image

2015-01-19 14:26:51 3594 1

原创 Android Bitmap当ARGB格式的Alpha通道为0时,RGB值都为0

Android Bitmap当ARGB格式的Alpha通道为0时,RGB值都为0,这点在调用bitmap的createBitmap方法时尤其要注意,如果传入的int数组的的alpha数据为0,那么rgb值会被忽略掉。

2015-01-15 14:24:28 2629

原创 Java垃圾回收时避免内存碎片的方法

Compacting CollectorsCompacting collectors slide live objects over free memory space toward one end of the heap. In the process the other end of the heap becomes one large contiguous free area. Al

2014-12-05 20:38:41 1579

原创 Java的垃圾回收算法

直接上英文原文,以下摘自《Inside The Java Virtual Machine》Reference Counting CollectorReference counting was an early garbage collection strategy. In this approach, a reference count is maintained for each o

2014-12-05 19:01:12 423

原创 复习一下Android系统的启动过程

再次将Android系统的启动过程复习了一下linux启动后,会启动第一个用户级进程init(代码位置: system/core/init/init.c),init做的事情有很多,其中就包括了解析运行init.rc脚本。脚本中会启动一个叫做Zygote的进程(代码位置:frameworks/base/cmds/app_process/app_main.cpp),Zygote做的事情

2014-12-05 17:34:13 387

原创 linux中C程序的内存布局

个人比较懒,就不翻译了,直接上英文,来自于《Advanced Programming In The Unix Environment》1. Text segment, consisting of the machine instructions that the CPU executes. Usually, the text segment is sharable so that only a

2014-12-05 11:24:09 422

原创 管道使用注意事项

When using pipes, we must be careful to close unused descriptors in order to ensure that reading processes detect end-of-file and writing processes receive the SIGPIPE signal or the EPIPE error.

2014-12-04 17:11:28 639

原创 在Android 4.0以下机型上支持webp编码和解码

据说webp编码产生的文件大小要比jpeg小很多,但是webp在Android 4.0以下的机型上不被支持,所以这里采取的思路跟jpeg压缩的时候一样,将webp的库使用NDK移植到Android 4.0以下的机型上。第一步:使用NDK移植webp编码解码库webp的库源码下载地址:http://download.csdn.net/detail/lihuapinghust/8221

2014-12-03 18:29:39 2388

原创 android平台移植jpeg-turbo库达到减小jpeg编码体积的目的

我目前所从事的工作是做公司社交类APP的消息服务模块,其中有一个需求就是压缩传输的图片的体积,因为现在一般的手机拍摄的照片体积都在2M左右,所以想办法减小传输过程中的体积是非常有必要的。一般的处理过程是这样:设定一个固定的分辨率大小,比如960*960,图片解码成bitmap对象后,如果图片的宽或者高超出了960,那么就对宽和高进行等比例缩放,使得长的那一边刚好等于960,然后再进行j

2014-12-03 17:33:52 1644

原创 将Visual Studio下的Cocos2dx 2.2.3工程移植到Xcode下进行开发

Mac OSX的版本是OS X 10.8.5,Xcode的版本是5.1.1

2014-11-11 14:46:25 973

原创 Boost在Mac OSX的Xcode上的移植

Mac OSX的版本是OS X 10.8.5,Xcode的版本是5.1.1首先是安装

2014-11-07 19:40:58 740

原创 Android NDK JNI接口的声明

在Java中声明native接口时,一般情况下,应把接口声明在一个专门的类里面,否则,会导致

2014-11-01 17:24:46 640

原创 消息服务图片压缩研究

在放弃了消息服务的语音压缩之后,我开始转而研究图片的压缩首先来看看weixi

2014-10-24 14:17:43 578

原创 语音编码研究

最近在做公司的消息服务SDK,基本的功能已经完成,想shiyixi

2014-10-23 15:14:11 638

Android代码格式化需要用到的配置文件

Android代码格式化需要用到的配置文件,需要的可以到这里下载

2015-05-04

设置代码格式化需要用到的文件

配置import的顺序,在此进行上传,需要的可以来下载

2015-05-04

libwebp库,可用于webp的移植

libwebp库,从官网下载下来的,大家也可以去官网上下载

2014-12-03

Android NDK移植jpeg-turbo库

这个库来自于网上的下载,自己做了一些修改,可以用于Android NDK对JPEG-TURBO库的移植

2014-12-03

操作系统课程设计实验报告

操作系统课程设计实验报告 华中科技大学的

2009-01-13

华中科技大学计算机学院2006年操作系统课程设计题目

华中科技大学计算机学院2006年操作系统课程设计题目

2009-01-13

空空如也

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

TA关注的人

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