理解循环网络及其在移动端的趣味应用:AI诗人
本文主要分析循环神经网络(RNN)的大致原理及其 TensorFlow 实现,文章后半部分详细介绍循环网络结合移动端的一次趣味实践:AI诗人(别忘记点个Star哦)。 之前介绍的神经网络包括卷积网络,HED 网络等网络结构都是从输入层到隐藏层再到输出层,每次输 […]
本文主要分析循环神经网络(RNN)的大致原理及其 TensorFlow 实现,文章后半部分详细介绍循环网络结合移动端的一次趣味实践:AI诗人(别忘记点个Star哦)。 之前介绍的神经网络包括卷积网络,HED 网络等网络结构都是从输入层到隐藏层再到输出层,每次输 […]
SmartCropper 是我写的一个开源库,主要用于卡片及文档的识别与裁剪 。最近主要对 SmartCropper 进行了两次较大升级,一是升级了 OpenCV 框架到官方最新版,解决了饱为诟病的打包问题(ISSUE), 通过升级 OpenCV 自然也支持了 […]
VGG 网络是一种经典的图像分类网络,通过多层卷积操作提取图像特征实现图片分类。由于能够提取图像的特征,也应用于风格迁移网络中的损失函数。另外用于边缘检测的 HED(Holistically-Nested Edge Detection) 网络也是基于 VGG […]
图像风格迁移是利用机器学习算法实现的图像风格转换, 本篇文章会从风格迁移网络发展历史出发一步步了解风格迁移网络算法,然后带领大家搭建单模型多风格的训练网络,最终给出如何将训练出的模型移植到 Android 端运行的工程化实践。 何为图像风格迁移? 使用机器学习 […]
相信大家对线程锁和线程阻塞都很了解,无非就是 synchronized, wait/notify 等, 但是你有仔细想过 Java 虚拟机是如何实现锁和阻塞的呢?它们之间又有哪些联系呢?如果感兴趣的话请接着往下看。 为保障多线程下处理共享数据的安全性,Java […]
*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 本文是 SmartCamera 原理分析的文章,SmartCamera 是我开源的一个 Android 相机拓展模块,能够实时采集并且识别相机内物体边框是否吻合指定区域。 SmartCame […]
SmartCamera 是一个 Android 相机拓展库,提供了一个高度可定制的实时扫描模块能够实时采集并且识别相机内物体边框是否吻合指定区域。如果觉得还不错,欢迎 star,fork。 语言描述起来略显生涩,具体实现的功能如下图所示,适用于身份证,名片,文 […]
本文主要分析 Android 端基于 mmap 的高性能日志框架 Log4a 的实现原理。 项目地址:https://github.com/pqpo/Log4a(求star) 前言 对于移动开发者来说,针对一些用户反馈难以复现的线上问题,分析日志有时候是解决问 […]
之前写了一个智能图片裁剪库:SmartCropper,选择照片之后会自动识别出边框的位置,适用于身份证,名片,文档等照片的裁剪。 你也可以关注我新开源的另外一个库 SmartCamera,也是基于 OpenCV 实现的, 能够实时采集并且识别相机内物体边框是否 […]
引言 目前国内大厂均开源了自己的 Android 热修复框架,阿里的《深入探索 Android 热修复技术原理》一书全面介绍了热修复技术的现状,原理与展望。一方面是阿里系为代表的底层方法替换,另一方面是以腾讯系为代表的类加载方案。前者支持立即生效,但是限制比较 […]
概述 本篇文章主要通过源码讲述 Android 控件系统,包括输入事件是如何产生的, View 是如何绘制的,输入事件是如何传递给 View 的,Window token 与 type 之间的联系等。整个系统比较复杂,每个部分只能点到为止,有兴趣可以继续深入, […]
本文主要讲述 Android 加载动态链接库的过程及其涉及的底层原理。 会先以一个Linux的例子描述native层加载动态链接库的过程, 再从Java层由浅入深分析System.loadLibrary 首先我们知道在Android(Java)中加载一个动态链 […]
JNI 即Java native interface,,是一种技术,提供了丰富的接口,可以在Java层调用native代码,也可以在native层调用Java代码,native代码一般是指C/C++程序。JNI就像是一座桥,连通着Java与native。阅读A […]
Android 中有两个非常重要的知识点,分别是Binder机制和Handler机制。前者用于跨进程通讯,并且通过 ServiceManager 给上层应用提供了大量的服务,而后者用于进程内部通讯,以消息队列的形式驱动应用的运行。之前的文章已经多次分析了Bin […]
ServiceManager是安卓中一个重要的类,用于管理所有的系统服务,维护着系统服务和客户端的binder通信。 对此陌生的可以先看系统服务与ServiceManager来了解应用层是如何使用ServiceManager的。 我们可以通过 ServiceM […]
Android Toast 是我们日常开发中常用的View组件,下面分析一下Toast是如何运作的,开始之前先要知道所有的视图都是通过 WindowManager.addView(mView, mParams) 添加并显示到屏幕上的,这是一个IPC调用。对此有 […]
Android Binder 机制是安卓应用运行的基础,一个应用的运行需要无法避免地和系统提供的Binder做交互。Android 系统以服务(Service)的方式暴露出很多Binder对象,准确的说我们拿到的是Binder代理对象(BinderProxy) […]
本文为《Android 开发艺术探索》 第二章IPC机制 笔记及实践 文章中涉及的代码:https://github.com/pqpo/ServiceAndIpcDemo 建议先clone一份到本地,运行起来之后再继续阅读。 其中项目中包括Service生命 […]
本文为《深入理解Java虚拟机》读书笔记,加入了一些自己的见解。 Jvm内存溢出异常就是我们常说的OOM,即java.lang.OutOfMemoryError,当然还包括java.lang.StackOverflowError。 那么它和内存泄漏有什么区别与 […]
该系列文章分析基于 Tinker1.7.6 版本 Tinker项目地址:https://github.com/Tencent/tinker Tinker接入及源码分析(一):简单介绍以及如何接入 Tinker接入及源码分析(二):加载补丁源码分析 Tinker […]
该系列文章分析基于 Tinker1.7.6 版本 Tinker项目地址:https://github.com/Tencent/tinker Tinker接入及源码分析(一):简单介绍以及如何接入 Tinker接入及源码分析(二):加载补丁源码分析 Tinker […]
该系列文章分析基于 Tinker1.7.6 版本 Tinker项目地址:https://github.com/Tencent/tinker Tinker接入及源码分析(一):简单介绍以及如何接入 Tinker接入及源码分析(二):加载补丁源码分析 Tinker […]
线程带来的风险: 1. 安全性问题(永远不发生糟糕的事,避免竞态条件) 2. 活跃性问题(某个正确的事情最终会发生,死锁,饥饿,死锁) 3. 性能问题 线程安全性:当多个线程访问某个类时,这个类始终能表现出正确的行为,那么就称这个类时线程安全的。 竞态条件:在 […]
单元测试是什么 单元测试 是针对 程序的最小单元 来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。一个单元可能是单个程序、类、对象、方法等。 ——维基百科 为什么要做单元测试 卖个关子,看完文章自然就知道了 原来和很多人一样并没有写单元测试的习惯, […]
在项目中引入RxJava之后,得益于RxJava的各种优势,比如线程切换,避免死亡式回调,方便的数据流处理等等,便希望将所有用到回调的地方都用RxJava重写一遍。一大批使用RxJava的开源项目如雨后春笋般应运而生,RxBinding,RxBus,RxLif […]