`
weihe6666
  • 浏览: 439076 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
                                          关于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

java 网络编程中,不可避免的要谈论NIO,这篇文章就来谈谈对NIO的认识。 IO传统意义上分为File IO,StreamIO,这两个分别对应文件读写和Socket,文件读写IO目前只有阻塞进行读写,而socket由于Selector和ByteBuffer构成了非阻塞IO,但是由于NIO需要单独的线程去遍历selectoryKey,导致线程资源一致被占用,所以AIO出现了,利用监听回调,来取代遍历selectorykey。 一、阻塞IO网络通信 在传统的阻塞IO模型中,大多是通过多线程处理不同的socket,尤其是在服务端,accept会创建不同的channel,然后利用独立的线程进 ...
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做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输入法编程

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输入法编程

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 用户应该搞清楚 ...
Global site tag (gtag.js) - Google Analytics