- 博客(12)
- 资源 (7)
- 收藏
- 关注
原创 虚拟机-通过字节码分析面试题
在面试的时候,我们经常问碰到字符串相关的问题,问一段代码会产生几个对象,今天我们选取几个典型的例子,通过字节码以及字符串常量池来简单分析一下。问题一public class Test1 { public static void main(String[] args) { String s = "a"+"b"+"c"; }}首先编译java文...
2018-04-05 00:44:03 500
原创 CoordinatorLayout源码分析-事件传递流程
我们知道,发生点击事件时,会首先调用ViewGroup的dispatchTouchEvent()方法,处理事件的分发,查看CoordinatorLayout并没有发现该方法, 由于它直接继承至ViewGroup,因此是默认的实现public boolean dispatchTouchEvent(MotionEvent ev) { if (disallowInterce...
2018-04-03 00:33:19 794
原创 DiskLruCache源码分析
首先,摆一套基本的使用流程 /** * 初始化 */ private void initDisk() { File cacheDir = getDiskCacheDir(MainActivity.this, "bitmap"); if (!cacheDir.exists()) { cacheDir.m
2018-01-29 21:07:48 272
原创 gson源码解析-数组
今天看看数组相关的转换 private void array() { List<User> users = new ArrayList<>(); for (int i = 0; i < 5; i++) { User user = new User(); user.setAge(24+i);
2017-12-28 23:08:46 264 2
原创 gson源码解析-普通对象
User user = new User(); user.setName("fcl"); user.setAge(24); String s = new Gson().toJson(user);首先看最简单的转换 public String toJson(Object src, Type typeOfSrc) { StringWriter w
2017-12-28 23:08:01 466
原创 ButterKnife源码初步探秘
butterknife使用很方便,在接入之后,在activity中使用ButterKnife.bind(this)即可 public static Unbinder bind(@NonNull Activity target) { View sourceView = target.getWindow().getDecorView(); return createBinding(ta
2017-08-04 20:27:51 291
原创 NDK之cmake初步尝试
2.2以后默认使用cmake,创建项目时记得选择支持c++,会在app目录下自动生成CMakeLists.txt,以及在cpp下生成native-lib.cpp先看看默认的cpp文件的内容#include <jni.h>#include <string>extern "C"JNIEXPORT jstring JNICALLJava_com_example_groot_cmaketest3_Ma
2017-08-02 21:31:53 639 1
原创 linux驱动之输入子系统
对于驱动开发者来说,对按键 触摸屏 鼠标等设备分别进行文件操作显得很繁琐,他们具有一些相同的规律,即内核负责记录数据,应用负责读取数据,因此,内核开发者为了简化驱动开发者的工作,特地创造了输入子系统。输入子系统分为两层,一个是驱动子系统,一个是文件操作子系统。驱动子系统依旧由驱动开发者完成,当发生一个事件时,驱动向子系统核心发送一个事件报告,子系统核心将这个报告交给文件操作子系统,由后者将具体
2015-07-06 20:35:08 616
原创 linux驱动之异步通知
异步通知为了启动文件的异步通知机制,用户程序需要执行两个步骤:1 fcntl(int fd, F_SETOWN, getpid()); //设置接受SIGIO和SIGURG的进程,如果getpid()为负表示以该值绝对值为值的进程组,其实就是对filp->f_owner赋值signal(SIGIO, button_signal_function);//接收到SIGIO信号
2015-07-05 17:11:30 755
原创 linux驱动之按键
key.c#include #include #include #include /* For module specific items */#include /* For new moduleparam's */#include /* For standard types (like size_t) */#include /* For the -ENODEV
2015-07-05 14:05:43 425
原创 共享内存
在头文件定义一个全局变量int a,当两个程序同时包含这个头文件时,只是说明他们不需要再次定义a,并不表明他们共享一个变量a,因为对于不同的进程,会分配不同的地址存放a。所以在A程序中对a作出修改,B中并不会有相应变化,此时,就要用到共享内存。共享内存,是在物理地址分配一块内存,然后分别映射到两个进程的地址空间,于是A进程对于这块内存的操作,会影响到B进程。#include #i
2015-06-06 11:34:04 554
mplayer播放器
2015-06-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人