- 博客(130)
- 资源 (49)
- 收藏
- 关注
原创 Low Memory Killer
oom_score_adj 计算方法:oom_score_adj = oom_adj*OOM_SCORE_ADJ_MAX/(-OOM_DISABLE)OOM_SCORE_ADJ_MAX = 1000;OOM_DISABLE= -17其中,oom_adj 取值范围为[-17, 15], -17 表示关闭LMK,也就是永不被关闭。Android中:前台交互进程为:0 oom_
2015-08-19 23:43:43
882
原创 volatile
JMM(Java Memory Model) 主要是为了规定了线程和内存之间的一些关系。系统存在一个主内存(Main Memory),Java中所有变量都存储在主存中,对于所有线程都是共享的。每条线程都有自己的工作内容(Working Memory), 工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主内存完成。
2015-06-03 22:29:33
738
原创 Java 设计模式之责任链模式
责任链模式(Chain of Responsibliity) 缩写COR该模式属于对象的行为模式。多个对象连成一条链,请求沿着这条链进行传递,直到有一个对象处理它为止,这样使得多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。责任链模式涉及到的角色如下所示: 1)抽象处理者(Handler)角色:定义处理请求的接口。如果需要可以定义出一个方法
2015-05-21 10:58:33
1046
转载 Java 理论与实践: 正确使用 Volatile 变量
转:http://www.ibm.com/developerworks/cn/java/j-jtp06197.htmlJava 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介
2015-05-18 11:43:14
630
转载 Linux IPC通信机制
Linux IPC通信机制主要有3种。1.管道(pipe)由于基于fork机制,管道只能用于具有亲缘关系的进程间通信,如父子进程和兄弟进程之间的通信。管道是由内核管理的一个缓冲区。管道的一端连接一个进程的输出,这个进程会向管道中写入信息;管道的另一端连接一个进程的输入,这个进程读出被放入管道的信息。一个缓冲区不需要很大,它被设计成为环形的数据结构,以便管道可以被循环利用。当管道中没
2015-05-14 14:35:32
794
原创 requestFocus() 与 requestFocusFromTouch() 方法的区别
两个方法都是获取焦点:requestFocus() 源码如下:/** * Call this to try to give focus to a specific view or to one of its descendants * and give it hints about the direction and a specific rectangle t
2015-05-04 23:26:26
24883
原创 Android 组件间的解耦
EventBus、Otto, Android 自身提供的BroadcastReceiver/Intent System 和利用Handler实现的类似广播功能用来简化应用组件间的通信。对比主要如下:1) Otto主要使用Bus类和两个注解@Produce, @Subscribe注解。@Subscribe 注解告诉Bus该函数订阅了一个事件,该事件的类型为该函数的参数类型;@
2015-03-11 09:42:23
3675
原创 Andrioid SQLite 操作与SQLiteStatement关系
以插入数据为例,有三种方法:1)直接拼接SQL语句,执行execSQL方法;2)借用ContentValues进行插入;3)使用compileStatement进行插入;1)直接拼接SQL语句,执行execSQL方法String sql = "create table msgTable(uid INTEGER NOT NULL, msg TEXT NOT NULL)"
2015-01-27 16:11:45
9004
原创 Android Parcelable 嵌套readParcelable
对于Android的自定义对象进行序列化,一般会选择Parcelable,或者Serializable。在Android中,由于在使用内存时,Parcelable类要比Serializable类的性能要高;并且Serializable在序列化的时候会产生大量的临时变量,从而会引起频繁的GC,因此在Android开发中,会推荐使用Parcelable进行序列化。在序列化时,碰到P
2015-01-07 15:52:13
12086
转载 如何定位Android NDK开发中遇到的错误
原地址:http://www.youkuaiyun.com/article/2014-12-30/2823366-Locate-Android-NDKAndroid NDK是什么?Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。众所周知,Android程序运行在Dalvik虚拟机中,NDK允
2014-12-31 09:40:14
804
原创 JAVA虚拟机规范 java SE 7 读书笔记
方法调用的四条指令:1)invokevirtual2)invokeinterface3)invokespecial (指令用于调用一些需要特俗处理的实例方法,包括实例初始化方法、私有方法和父类方法);4)invokestaticJava虚拟机可以支持方法级的同步和方法内部一段指令序列的同步,这两种同步结构都是使用管程(Monitor)来支持的。1)方法级的同步时隐式
2014-12-28 11:17:03
1053
原创 OpenCV 之Hello world篇
Step1: 准备环境OpenCV 在github上下载最新源码:https://github.com/Itseez/opencvCMake 下载最新3.0 http://www.cmake.org/cmake/resources/software.htmlVS2013安装gitTBB 下载https://www.threadingbuildingblocks.org/ 线程构
2014-08-03 17:27:02
10983
原创 Android 画图抗锯齿
Android 中提供了两种方法:第一种:使用Paint进行设置,然后传递给Canvas进行绘制。paint.setAntiAlias(true)第二种:直接设置Canvas的DrawFilter属性。
2014-07-15 10:46:37
991
转载 C语言宏定义##连接符和#符的使用
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP)
2014-04-21 10:43:20
741
原创 nodejs/express+mongodb/mongoose
Step 1 install nodejs1.1 install nvm使用 nvm(Node Version Manage) 来安裝 node.js,sudo apt-get install git-core g++ curlgit clone git://github.com/creationix/nvm.git ~/.nvmecho ". ~/.nvm/nvm.s
2014-04-09 15:12:01
3843
原创 Android 中的CreatePackageContext()
/** * Return a new Context object for the given application name. This * Context is the same as what the named application gets when it is * launched, containing the same resources and
2014-04-03 15:52:44
22895
9
原创 #ifdef __cplusplus extern "C" { #endif 含义
如下,经常会在C语言的*.h文件中看到:#ifdef __cplusplusextern "C" {#endif ... #ifdef __cplusplus}#endif这个作用经常看到,也经常忘记,今天做个记录吧。__cplusplus 是C++ 编译器内定的,在一个*.cpp文件中,直接就可以访问该宏,而*.c文件是不可见。extern "C
2014-04-02 15:29:50
880
原创 有关Object之wait(),notify() 和notifyAll() 以及Thread之sleep(),join()和yield()
1. Object的wait(),notify()和notifyAll()主要用于在多线程情况下,同步控制访问共享资源使用。调用wait() 函数后,导致当前线程处于等待状态,只有通过notify()或者notifyAll()方法,或者在调用wait()函数时,设置超时时间timeout,等待超时时间到了,才能使阻塞在该对象上的线程唤醒,进行运行。也就是说wait()或notify
2014-03-26 16:01:13
874
原创 Nexus S Flash Custom Rom
之前一直没有时间折腾这个,最近由于要调试smali,需要源码调试,所以就。。。。操作步骤如下:Step1: repo 下载源码(http://source.android.com/source/downloading.html)Step2: 下载相应的驱动(https://developers.google.com/android/nexus/drivers)如我的需要下载6个
2014-03-21 12:02:53
1060
原创 Ubuntu Vim 十六进制模式修改dex文件
有时要破解*.apk时,除了使用apktool反编译成smali语言,然后用smali语言来hack相应的破解点,还有一种比较NB的方法就是直接解压出*.apk的class.dex文件,然后用十六进制编辑工具,修改相应的破解点,即可完成相应的破解。本文主要介绍vim如何切换至16进制。Step1: vim -b *.apk 以二进制模式打开*.apk文件。Step2:输
2014-03-13 17:50:40
2444
转载 库项目中对R.id资源的引用方式
转自:http://blog.youkuaiyun.com/djun100/article/details/12994757管理Android项目(官网原文翻译)原文地址:http://developer.android.com/guide/developing/projects/index.html库项目 Android库项目是保存共享的Android源代码和资源的开发
2014-02-08 11:54:04
1077
原创 Sqlite3 使用记录
如果想列出该数据库中的所有表,可:.table 如果想查看这些表的结构:select * from sqlite_master where type='table' order by name;select * from sqlite_master where type="table" and name="emperors"; 另外,也可以这样:sqli
2014-01-06 10:04:55
823
原创 C/C++ typedef 温习
typedef 作用:用来声明一个别名。使用的场合有以下三种:1) 定义一种类型的别名,属于编译过程的一部分,并不实际分配内存空间。在这种使用场景下,typedef与define的作用相同;而不同点在于define声明的类型别名,只是一个简单的宏替换。如:char* pa, pb; typedef char* PCHAR;#define PCHAR2 char*;PC
2014-01-01 23:38:34
860
原创 Drawable 转换Bitmap
code: public static Bitmap drawable2Bitmap(Drawable drawable){ if(drawable instanceof BitmapDrawable){ return ((BitmapDrawable)drawable).getBitmap() ; }else if(dr
2013-12-27 21:31:00
759
原创 Android Animation动画
Android 3.0之前,支持两种动画模式,Tween animation & Frame animation, 在Android 3.0 中又引入了新的动画系统:Property animation。这三种动画模式,又被称之View animation (Tween animation) 补间动画;Drawable Animation(Frame animation) 帧动画;Prop
2013-12-27 19:57:34
3573
原创 Android view 的cache
1 View 相关的六个个函数分别如下:public void setDrawingCacheEnabled (boolean enabled) API Level1Enables or disables the drawing cache. When the drawing cache is enabled, the next call to getDrawingCache() or
2013-12-27 16:13:24
3268
原创 bash脚本,自动输入sudo的密码
解决方法: echo + | (管道)开始使用 echo "admin" | sudo service tomcat7 stop始终提示输入密码后来查看了下sudo命令的使用man sudo发现有如下的解释:-S The -S (stdin) option causes sudo to read the password f
2013-12-26 11:31:13
35982
1
原创 cocos2d-x & CocoStudio UI使用
1.添加头文件和引用#include "CocosGUI.h"#include "cocostudio/CocoStudio.h"using namespace gui;using namespace cocostudio;备注: 需要引用namespace gui 和 cocostudionamespace gui 包含的所有UI元素为cocostudio界面上拖动的所有元素
2013-12-22 14:45:27
4488
原创 Jenkisn + Tomcat7 + Ubuntu12.04 server
1. sudo apt-get install tomcat7In this case, here are the paths you might care about:/var/lib/tomcat6 – These are the Java-y files for Tomcat. If you were to just extract Tomcat’s tar file and
2013-11-25 10:50:14
3796
原创 Django Apache2 配置
在配置Django 与Apache2 过程中遇到的问题,以及总结的解决方案Bug#1 attempt to write a readonly 原因:放sqlite.db的文件夹及文件,没有访问权限。解决方案: sudo chown www-data. sqlite.dbBug#2 Invalid command 'RewriteEngine', perhaps
2013-09-11 14:51:25
1894
原创 判断ScrollView 是否滚动到底部或顶部
1)是否滚动到顶部if(scroll.getScrollY() == 0){ // 到顶部了 //TODO}2)是否滚动到底部//childView是scrollview里包含的Linearlayout容器View childView = scrollView.getChildAt0);if(mLastY == (childView.getHeigh
2013-08-08 15:15:21
24135
原创 Python 成员方法,类方法以及静态方法
#!/usr/bin/python#-*- coding: utf-8 -*-class A: def f_method(self, x): print "%s,%s" %(self , x ) @staticmethod def f_smethod(x): print "%s" %(x) @classmeth
2013-07-08 10:34:44
1369
原创 mysql 乱码问题
mysql 中英文插入时,出现乱码无法插入的问题。由于是Ubuntu的机器,mysql的配置文件是:/etc/mysql/my.cnf设置了下配置文件my.cnf的编码为utf8:[client]default-character-set=utf8#default-character-set=utf8 #这个太坑爹了,在mysql 5.+版本上设置,mysql直接
2013-07-02 19:42:03
3015
原创 bash 变量作用域
bash 里面有两种作用域一种是全局作用域,即默认所声明的变量;另外一种则是局部作用域,用local关键字声明的变量。1)全局变量声明有如下几种情形:#!/bin/bashmm=12 #visible globallyfunc() { mn=34 #visible globally echo "mc=${mc}" #is visible}mc=
2013-06-24 20:12:57
4492
1
原创 git diff/merge 配置
1.安装meld 图形化工具git difftool 和 git mergetool 是Git专门提供给我们用自己的工具进行diff和merge的命令。只要配置一下就可以使用了:git config --global diff.tool meld #配置默认的difftoolgit config --global merge.tool meld #配置默认的mergetoo
2013-06-21 19:43:58
1223
原创 Chrome for android 编译
Step1: 获取源码 (http://dev.chromium.org/developers/how-tos/get-the-code#TOC-Windows).gclient文件内容为:solutions = [ { "name" : "src", "url" : "https://src.chromium.org/chrome/trunk
2013-06-12 19:28:05
15787
3
原创 vim 列编辑功能
1)插入功能(即在若干行的某一列插入一个字符或几个字符)Step1:光标移动到开始插入的行的指定位置Step2:Ctrl+v,进入visual block模式Step3:将光标移动到最后插入行的指定位置(通过j或者输入行号+G)Step4: shift+i,进入插入模式Step5:输入你想输入的字符,完成后,按两下“Esc”键,就能看到自己想要的结果2)删除功能同上St
2013-05-26 00:28:49
2255
原创 git安装
环境:Ubuntu 10.101) APT-GETsudo apt-get install git2)通过源码安装由于Ubuntu10.10 上git 版本为1.7.1 觉得版本有点低,换一个高点版本的gita)下载源码包:wget https://git-core.googlecode.com/files/git-1.8.1.2.t
2013-05-24 11:47:26
764
原创 Perl 变量的作用my, our, local和全局变量
perl定义的变量默认是全局1)my 作用:把变量的名字和值都限于某个范围内,也就是说,该变量只能本层模块或者函数可以看到这个变量,高一层或者低一层的都看不到。2)our 作用:把变量名字限于某个范围,其实就是明确声明一个”全局变量”,虽然是在某个模块或者函数里面定义,外面的也可以访问,如果已经声明过了,再次用our,表示此处用的和之前声明的our变量是同一个。3)loca
2013-05-13 16:49:41
3240
原创 Smallest-width 限定符
很多开发者都想在这个范围内根据不同的具体屏幕尺寸来显示不同的布局(例如 5寸和7寸的设备)。在Android 3.2版本中引入 “Smallest-width”限定符就是为了解决这个问题的。例如,普通的7寸平板的最小宽度是600dp,因此如果你希望你的程序在这种尺寸的屏幕上使用两个窗口(小于该尺寸的屏幕使用一个窗口),那么您可以使用上面的两个布局文件,只要把xlarge 限定符
2013-04-15 22:38:24
3825
C++ GUI Programming with Qt 4, Second Edition
2011-03-16
微软的petshop(宠物店)源码
2009-12-13
The J2EE Architect's Handbook: How to be a Successful Technical Architect for J2EE Applications
2009-08-17
有关多边形切分的论文
2011-07-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人