- 浏览: 439011 次
- 性别:
- 来自: 深圳
最新评论
-
su6838354:
我有点疑问啊,thread1中的i自增的慢的话,thread2 ...
浅析pthread_cond_wait -
zeronever:
请问pthread_cond_signal有解锁操纵吗?我在p ...
浅析pthread_cond_wait -
paladin1988:
你这帖子真心不错。。
浅谈bitmap算法 -
parabellum_sky:
昨天还有个姑娘让我去考我说会考虑
个人日志
文章列表
关于Java中几种loadClass的讨论java中有几类加载class的方法,本文针对这几个方法,就行源码导读。
本文的native源码来源于android4.1.2源码。
1. Class.forName(className, true, classLoader);clazz = Class.forName(className, true, classLoader);className:要加载的类的全路径名。classLoader:类加载器。这个函数会调用native方法,源码:java_ ...
java 网络编程中,不可避免的要谈论NIO,这篇文章就来谈谈对NIO的认识。
IO传统意义上分为File IO,StreamIO,这两个分别对应文件读写和Socket,文件读写IO目前只有阻塞进行读写,而socket由于Selector和ByteBuffer构成了非阻塞IO,但是由于NIO需要单独的线程去遍历selectoryKey,导致线程资源一致被占用,所以AIO出现了,利用监听回调,来取代遍历selectorykey。
一、阻塞IO网络通信
在传统的阻塞IO模型中,大多是通过多线程处理不同的socket,尤其是在服务端,accept会创建不同的channel,然后利用独立的线程进 ...
jni方法的注册和调用流程
- 博客分类:
- android
JNI在android中起重要作用,是连接java层和dalvik重要的通道,java层的开发也比较简单,有两种注册方式:
1. 按照JNI格式声明native函数并在c文件中定义此native函数
2. 动态注册,在c文件中重写JNI_OnLoad函数,并在JNI_OnLoad中调用JNIEnv函数RegisterNatives注册native方法。
看似简单的注册和调用,背后隐藏着复杂的理论,下面就来分析一下RegisterNatives方法的逻辑。
RegisterNatives源码如下:jni.cpp
static jint RegisterNatives(JNIEnv* e ...
Hook的原理是修改java层的method属性,然后注册jni函数,但是实现起来还是有点复杂,具体看下面的函数。
int Hook(){
init();
void* handle = dlopen("/data/local/libTest.so",RTLD_NOW);
const char *dlopen_error = dlerror();
if(!handle){
DEBUG_PRIN ...
XposedBridge是Xposed框架替代ZygoteInit的文件,其中main方式是其入口,分析main方法可以更好的理解Xposed的运行模式,下面就来分析一下此函数。
private static void main(String[] args) {
// the class the VM has been created for or null for the Zygote proc ...
callback_XposedBridge_initNative函数为XposedBridge注册回调方法的JNI接口,在整个Xposed中起关键作用,连接了module与Xposed框架,下面来分析一些这个函数。
完整的代码如下:libxposed_dalvik.cpp
jboolean callback_XposedBridge_initNative(JNIEnv* env) {
xposedHandleHookedMethod = (Method*) env->GetStaticMethodID(classXposedBridge, "handleHook ...
ViewGroup 继承View,实现了View各个方法,同时ViewGroup中包含了不同的View,事件消息在ViewGroup中的传递就比较重要了,理解了事件的传递,才能够写出符合需求的自定义的ViewGroup。
首先分析一下onInterceptTouchEvent函数,此函数是ViewGroup独有的拦截函数,顾名思义,是拦截用户触发的事件,来决定此事件是否要传递给子View。原理比较简单,但是传递流程稍许复杂。
先看一段官方的文档:
· You will receive the down event here.
· The down event will be handl ...
gdx-metagun分析--整体框架(com.dozingcatsoftware.bouncy)
一、Metagun.java
Metagun类是整个游戏的入口也是资源和UI创建的入口。
public class MetagunAndroid extends AndroidApplication {
/** Called when the activity is first created. */
@Override
public void onCrea ...
gdx-vectorpinball分析--整体篇
gdx-vectorpinball经典弹珠游戏,网上没有太多相关文章,在此对gdx-vectorpinball源码进行分析。
一、源码框架
1. com.dozingcatsoftware.bouncy
BaseFieldDelegate.java
Bouncy.java
Field.java
FieldLayout.java
GameMessage.java
GameState.java
GLFieldRenderer.java
IFieldRenderer.java
2.com.dozingcatsoftware.bouncy.el ...
重构,简化条件表达式
- 博客分类:
- 读书笔记
重构,简化条件表达式
重构一书,早就在手,只是一直没有细细品味,对于堪称经典之书,除了瞻仰之外,不敢评论,但是这本书确实通俗易懂,利用小的改动,让你的代码逻辑更清晰,可阅读行更高等。
重构的工作是建立在 ...
最近在WIN7中安装XAMPP,无法启动apache,显示的log为:
20:41:12 [Apache] Error: Apache shutdown unexpectedly.
20:41:12 [Apache] This may be due to a blocked port, missing dependencies,
20:41:12 [Apache] improper privileges, a crash, or a shutdown by another method.
20:41:12 [Apache] Check the "/xampp/apa ...
MFC两个对话框SendMessage通信
- 博客分类:
- MFC
MFC两个对话框SendMessage通信
用MFC做Demo时需要两个对话框进行通信,两个对话框的关系如下:
1.CDialog<-- CDHtmlDialog<--CHtmlCtrl
2.CDialog<-CTwitter_demo_mfcDlg
CHtmlCtrl和CTwitter_demo_mfcDlg同样继承与CDialog。在CTwitter_demo_mfcDlg中会创建和显示CHtmlCtrl窗口。
那么CHtmlCtrl和CTwitter_demo_mfcDlg如何通信呢?
方法1:设置父子关系
1.在创建CT ...
Google编程风格
- 博客分类:
- C++
Google编程风格(自己整理)
1. 头文件
1. 避免多重包含是学编程时最基本的要求;
2. 前置声明是为了降低编译依赖,防止修改一个头文件引发多米诺效应;
3. 内联函数的合理使用可提高代码执行效率;
4. 标准化函数参数顺序 ...
IME输入法编程
第三章 输入法的消息
Messages
1.WM_IME_SETCONTEXT
激活或休眠输入法
LRESULT CALLBACK UIWndProc(HWND hUIWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
:
case WM_IME_SETCONTEXT:
fSet= (BOOL) wParam;
lISCBits = lParam;
}
如果fSet为TRUE,系统将激活当前输 ...
IME输入法编程
第二章 输入法的函数简介
下面我们将介绍第一章各个函数的功能及接口格式。
1.BOOL
ImeInquire( //初始化输入法
LPIMEINFO lpIMEInfo, //Pointer to the IME info structure.
LPTSTR lpszWndClass,//IME UI窗口名
DWORD dwSystemInfoFlags //Varying system information provided by the system
)
如果该函数初始化成功,返回TURE,否则为FALSE
用户应该搞清楚 ...