分类: 笔记

11 篇文章

深入理解 Android 控件
概述 本篇文章主要通过源码讲述 Android 控件系统,包括输入事件是如何产生的, View 是如何绘制的,输入事件是如何传递给 View 的,Window token 与 type 之间的联系等。整个系统比较复杂,每个部分只能点到为止,有兴趣可以继续深入,主要是让读者对 Android 控件系统有一个大体的认识。 例子 下面是创建 Window 并显示 View 最简单的一个例子: publi…
C++11 学习笔记
上篇文章《理解JNI技术》介绍了Java与C/C++代码交互的一项技术。由于在项目中有用到C++代码,所以重拾吃灰半年多的《C++ Primer 第5版》。大学期间也学过Hello World版的C++,由于C++11版标准变化之大(据悉ART虚拟机的实现代码已经切换到了C++11了),完全不是我以前认识的那个C++了,所以专门记录一下,并且会不定期更新,最近很火的Kotlin之后也会写一篇学习笔…
Kotlin 函数与函数式编程
自从Google爸爸宣布Kotlin为自己的干儿子之后,Kotlin被各大社区炒的火热。 如果你对Kotlin语法一无所知,推荐先阅读官方文档或者中文站(https://www.kotlincn.net/docs/reference/)之后再看这篇文章会有更深刻的理解。本篇文章主要介绍Kotlin函数的用法,以及自己对函数式编程的一些理解。并且会和Python,C++做一些比较。 下面是维基百科上…
Android IPC 机制
本文为《Android 开发艺术探索》 第二章IPC机制 笔记及实践 文章中涉及的代码:https://github.com/pqpo/ServiceAndIpcDemo  建议先clone一份到本地,运行起来之后再继续阅读。 其中项目中包括Service生命周期的部分不在本文 讨论范围之内,并且只演示了使用Binder进行进程间通讯,其他方式比较简单。 IPC:Inter-Process Com…
thumbnail
JVM 内存结构与内存溢出异常
本文为《深入理解Java虚拟机》读书笔记,加入了一些自己的见解。 Jvm内存溢出异常就是我们常说的OOM,即java.lang.OutOfMemoryError,当然还包括java.lang.StackOverflowError。 那么它和内存泄漏有什么区别与联系呢? 对于内存泄漏,维基百科的定义是:在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。 对应于Java虚拟机…
《Java 并发编程实战》笔记
线程带来的风险: 1. 安全性问题(永远不发生糟糕的事,避免竞态条件) 2. 活跃性问题(某个正确的事情最终会发生,死锁,饥饿,死锁) 3. 性能问题 线程安全性:当多个线程访问某个类时,这个类始终能表现出正确的行为,那么就称这个类时线程安全的。 竞态条件:在并发编程中,由于不恰当的执行时序而出现不正确的结果。 锁可重入意味着获取锁的操作的粒度是线程而不是调用。 在没有同步的情况下,编译器,处理器…
Spring-in-action
Spring: Ioc(控制反转 Inversion of Control):依赖注入(DI)。 Aop(面向切面编程 Aspect Oriented Programming): 动态代理。 应用上下文: ClassPathXmlApplicationContext:从类路径下的xml配置文件中加载。 FileSystemXmlapplicationcontext:读取文件系统下的xml配置文件并…
Java 加密与解密的艺术
单向加密算法:MD5,SHA。用于数据完整性验证。 对称加密算法:DES。数据储存加密的常用算法。 非对称加密算法:RSA。数据传输加密的常用算法。 柯克霍夫原则:密码系统应该就算被所有人知道系统的运作步骤,仍然是安全的。 Java API支持: MessageDigest类构建MD5,SHA两种加密算法; Mac类可以构建HMAC加密算法; Cipher类可以构建多种加密算法,如DES、AES、…
thumbnail
Java volatile 关键字
Java 内存模型: 线程安全: 原子性:由Java内存模型直接保证的原子性变量操作包括read,load,user,assign,stroe,write,大致可认为Java基础数据类型的读写是具备原子性的。Java内存模型还提供了lock和unlock,由高层字节码指令monitorenter和monitorexit隐匿地使用,反应到Java代码就是synchronized关键字。因此synch…
线程池 ThreadPoolExecutor
常用线程池 newFixedThredaPool 固定线程数量的线程池,改线程池中的线程数量始终不变。当有一个新任务提交时,若有空闲线程,则立即执行,否则会被暂存到一个任务队列中 newSingleThreadExecutor 只有一个线程的线程池 newCachedThreadPool 可根据实际情况调整线程数量的线程池。若有空闲线程可以复用,则优先使用,否则创建新线程。执行完毕后返回线程池复用…
Spring-技术内幕-IoC容器的实现
控制反转(Inversion of Control) 简单容器:BeanFactory 容器的高级形态:ApplicationContext Bean定义:BeanDefinition 定位(Resource) -> 载入、解析(BeanDefinitionReader、BeanDefinitionDocumentReader,创建BeanFactory) -> 注册(通过BeanDe…