技术

Android IPC 机制

本文为《Android 开发艺术探索》 第二章IPC机制 笔记及实践 文章中涉及的代码:https://github.com/pqpo/ServiceAndIpcDemo  建议先clone一份到本地,运行起来之后再继续阅读。 其中项目中包括Service生命周期的部分不在本文 讨论范围之内,并且只演示了使用Binder进行进程间通讯,其他方式比较简单。 I […]

JVM 内存结构与内存溢出异常

本文为《深入理解Java虚拟机》读书笔记,加入了一些自己的见解。 Jvm内存溢出异常就是我们常说的OOM,即java.lang.OutOfMemoryError,当然还包括java.lang.StackOverflowError。 那么它和内存泄漏有什么区别与联系呢? 对于内存泄漏,维基百科的定义是:在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已 […]

Tinker 接入及源码分析(三)

该系列文章分析基于 Tinker1.7.6 版本 Tinker项目地址:https://github.com/Tencent/tinker Tinker接入及源码分析(一):简单介绍以及如何接入 Tinker接入及源码分析(二):加载补丁源码分析 Tinker接入及源码分析(三):合成补丁源码分析 上篇文章分析了加载补丁的源码,本篇文章会继续分析tinker […]

Tinker 接入及源码分析(二)

该系列文章分析基于 Tinker1.7.6 版本 Tinker项目地址:https://github.com/Tencent/tinker Tinker接入及源码分析(一):简单介绍以及如何接入 Tinker接入及源码分析(二):加载补丁源码分析 Tinker接入及源码分析(三):合成补丁源码分析 上篇文章简单的介绍了Tinker的使用:《Tinker接入及 […]

Tinker 接入及源码分析(一)

该系列文章分析基于 Tinker1.7.6 版本 Tinker项目地址:https://github.com/Tencent/tinker Tinker接入及源码分析(一):简单介绍以及如何接入 Tinker接入及源码分析(二):加载补丁源码分析 Tinker接入及源码分析(三):合成补丁源码分析 现在市面上有很多Android热修复框架,包括开源的,未开源 […]

《Java 并发编程实战》笔记

线程带来的风险: 1. 安全性问题(永远不发生糟糕的事,避免竞态条件) 2. 活跃性问题(某个正确的事情最终会发生,死锁,饥饿,死锁) 3. 性能问题 线程安全性:当多个线程访问某个类时,这个类始终能表现出正确的行为,那么就称这个类时线程安全的。 竞态条件:在并发编程中,由于不恰当的执行时序而出现不正确的结果。 锁可重入意味着获取锁的操作的粒度是线程而不是调 […]

Android 单元测试实践

单元测试是什么 单元测试 是针对 程序的最小单元 来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。一个单元可能是单个程序、类、对象、方法等。 ——维基百科 为什么要做单元测试 卖个关子,看完文章自然就知道了 原来和很多人一样并没有写单元测试的习惯,写好一个功能模块之后直接在真机上做自测,看看刚写的功能是否和预期一致,如果不一致,从头debug找问 […]

当百度定位遇上 RxJava

在项目中引入RxJava之后,得益于RxJava的各种优势,比如线程切换,避免死亡式回调,方便的数据流处理等等,便希望将所有用到回调的地方都用RxJava重写一遍。一大批使用RxJava的开源项目如雨后春笋般应运而生,RxBinding,RxBus,RxLifecycle,RxActivityResult,RxCache… 原项目中使用百度定位作 […]

手牵手教你写 IntelliJ Idea 插件:MvpGenerator

上一篇文章写了:如何将原项目重构成MVP模式 实际使用中发现每次新建一个页面,都需要另外建三个类,分别是Contract,Model,Presenter,着实是一项枯燥无味的体力活。 当遇到这种事情的时候,最先想到的就是能不能写一段代码来做这件事。 上网一搜,果然已经有人做好了:Android Studio插件之MVPHelper,一键生成MVP代码,非常感 […]

如何将原项目重构成 MVP 模式

最近在做公司项目的重构工作,主要重构点包括: 网络请求框架由 HttpURLConnection + Handler 改为 Retrofit + OkHttp + RxJava 事件通知由 安卓广播 改为 RxBus 图片加载框架由 ImageLoader 改为 Glide 代码优化(瘦身,内存泄漏分析等) 将传统Activity作为God Object的M […]

能力值控制实现文档

SMB能力值控制实现文档 功能需求 服务消息总线接口管理添加能力值字段,能力控制体现为:调用次数上限/秒。 第三方应用调用消息服务总线提供的服务接口时,需要实现服务能力权限控制功能。 主要操作类 net.rubyeye.xmemcached.MemcachedClient 获取方法: MemcachedBaseService.getMemcachedServ […]

前端乱码解决方案

前端接收乱码 1.response.addHeader("Content-Type", "text/xml" + "; charset=" + CommunicateService.charset); 2. 字节流 3. ///////////// 4. //这句话的意思,是让浏览器用utf8来解析返回的数据 5. response.setHeader("C […]