自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Rasa中文聊天机器人开发指南(3):Core篇
原力计划

文章目录1. 对话管理1.1 多轮对话1.2 对话管理2. Rasa Core2.1 Stories2.2 Domain2.3 Responses2.4 Actions2.5 Policies2.6 Slots2.6.1 Slots Type2.6.2 Slots Set2.6.3 Slots G...

2020-04-10 15:30:46 2035 28

原创 Rasa中文聊天机器人开发指南(2):NLU篇
原力计划

文章目录1. 什么是NLU2. NLU训练数据2.1 NLU样本格式2.2 验证数据有效性2.2.1 使用命令2.2.2 使用代码2. Rasa NLU Components2.1 词向量资源(Word Vector Sources)2.1.1 MitieNLP2.1.2 SpacyNLP2....

2020-02-27 10:28:46 5038 23

原创 Rasa中文聊天机器人开发指南(1):入门篇

文章目录1. Rasa简介与安装1.1 Rasa简介1.2 Rasa安装(v1.7.0)1.1 Ubuntu 16.04环境1.2 Windows10环境2. Rasa使用--构建简单聊天机器人2.1 构建NLU样本2.1.1 nlu.md2.2 构建Core样本2.2.1 stories.md2...

2020-02-15 17:08:01 7884 78

原创 Android直播开发之旅(10):AndroidUSBCamera,UVCCamera开发通用库

AndroidUSBCamera基于[saki4510t/UVCCamera](https://github.com/saki4510t/UVCCamera)开发,该项目对USB Camera(UVC设备)的使用和视频数据采集进行了高度封装,能够帮助开发者通过几个简单的API实现USB Camer...

2017-10-23 22:22:09 45520 685

原创 Android直播开发之旅(25):使用AES算法加密多媒体文件(+RSA+MD5+Base64)

文章目录1. AES算法1.1 AES加密过程1.1.1 字节代替(SubBytes)1.1.2 行移位(ShiftRows)1.1.3 列混合(MixColumns)1.1.4 加轮密钥(AddRoundKey)1.2 AES加解密实现1.2.1 创建密钥1.2.2 AES加密1.2.3 AES...

2020-02-12 18:06:44 3298 0

原创 从Android 8.0源码的角度剖析线程池原理

在计算机系统中,进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的基本单位,每个进程都拥有自己私有的地址空间,且进程之间是相互独立的。线程是操作系统调度的最小单位,它可以说是进程的组成部分,在一个进程中可以创建多个线程,这些线程都拥有各自计数器、堆栈和局部变量等属性,但是不再拥有系统...

2020-02-10 13:26:54 2112 0

原创 当Android遇上设计模式之观察者(Observer)模式

文章目录1. 观察者模式定义2. 观察者模式实现3. 观察者模式使用场景3.1 优点3.2 缺点3.3 使用场景 1. 观察者模式定义  观察者模式又称发布-订阅模式,是行为型设计模式的一种,所谓行为型模式就是主要处理类或对象如何交互及如何分配职责。观察者模式经常在项目中被用到,它的定义为:定义对...

2020-02-01 20:18:54 3071 0

原创 当Android遇上设计模式之代理(Proxy)模式

文章目录1. 代理模式1.1 代码实现1.2 使用场景2. 静态代理与动态代理 设计模式六大原则: 单一职责原则:就一个类仅有一个引起它变化的原因,即类承担的职责单一性; 开放封闭原则:类、模块、函数等应该是可以扩展的,但是不可修改。换句话说,就是面对需求的改变要尽可能地保证相对稳定,尽...

2020-01-31 21:25:33 4388 3

原创 当Android遇上设计模式之工厂方法(Factory)模式

文章目录1. 简单工厂模式2.1 定义2.2 代码实现2.3 使用场景2. 工厂方法模式2.1 定义2.2 代码实现2.3 使用场景 设计模式六大原则: 单一职责原则:就一个类仅有一个引起它变化的原因,即类承担的职责单一性; 开放封闭原则:类、模块、函数等应该是可以扩展的,但是不可修改。...

2020-01-31 15:27:19 2638 0

原创 当Android遇上设计模式之单例(Singleton)模式

文章目录1. 单例模式定义2. 单例模式实现2.1 饿汉模式2.2 懒汉模式2.3 双重检查模式(DCL)2.4 静态内部类单例模式2.5 枚举单例3. 单例模式的使用场景 设计模式六大原则: 单一职责原则:就一个类仅有一个引起它变化的原因,即类承担的职责单一性; 开放封闭原则:类、模块...

2020-01-30 21:48:23 2042 0

原创 内存泄漏分析框架LeakCanary的使用与原理解析

文章目录1. 常见内存泄漏1.1 “单例模式” 造成的内存泄漏1.2 “静态实例” 造成内存泄漏1.3 “Handler” 造成的内存泄漏1.4 “线程” 造成的内存泄漏1.5 “使用WebView” 造成的内存泄漏2. LeakCanary使用与原理解析2.1 LeakCanary使用方法2.2...

2020-01-12 21:52:16 4197 0

原创 2020,远征 ● 起航!(博客目录)

 最近一段时间抽空对之前积累的一些知识点进行了总结、扩展,为了更便捷地查阅与相关知识点对应的文章,本文对本博客的现有的所有文章进行了归纳、汇总。具体章节如下: 1. Android源码分析 1. 从Android源码的角度剖析UI界面架构 2. 从Android源码的角度剖析View的绘制原...

2019-12-31 20:40:38 2758 1

原创 Android性能优化(6):浅析类加载机制与热修复技术

文章目录1. 类加载与反射1.1 类加载机制1.1.1 类加载器1.1.1.1 Java中的ClassLoader1.1.1.2 Android中的ClassLoader1.1.2 双亲委托模式1.1.3 ClassLoader的加载过程1.1.4 类的链接1.1.5 类的初始化1.2 Java...

2019-12-29 18:20:29 2567 1

原创 依赖注入框架ButterKnife的使用与原理解析

文章目录1. 注解与依赖注入1.1 注解1.1.1 注解分类1.1.2 注解处理器1.2 依赖注入2. ButterKnife框架2.1 ButterKnife的基本使用2.2 ButterKnife原理解析2.2.1 创建各类注解类2.2.2 ButterKnife的注解处理器2.2.3 But...

2019-12-27 15:50:37 3874 0

原创 事件总线框架EventBus的使用与原理解析

文章目录1. EventBus框架1.1 EventBus简介1.2 EventBus基本使用1.2.1 添加Gradle依赖1.2.2 定义事件1.2.3 准备订阅者1.2.4 发布事件2. EventBus原理解析2.1 订阅者注册过程2.2 订阅者注销过程2.3 事件发布过程3. Event...

2019-12-21 16:47:36 8560 0

原创 从Android 8.0源码的角度剖析APP的启动过程

文章目录1. 应用进程启动过程1.1 AMS向Zygote进程发起请求1.2 Zygote进程接受请求2. Activity启动过程2.1 应用程序的Appication启动过程2.2 应用程序的根Activity启动过程 在从Android 8.0源码的角度剖析Android系统启动过程(2)...

2019-12-14 02:20:32 6308 4

原创 Android性能优化(5):APK瘦身优化

文章目录1. APK文件结构2. APK瘦身优化2.1 优化dex文件大小2.1.1 Proguard2.1.2 AndResGuard2.2 优化资源文件大小2.2.1 Android Lint2.2.2 [tinypng](http://leonshi.com/2015/11/02/tinyp...

2019-12-10 21:49:01 1706 0

原创 从Android 8.0源码的角度剖析Android系统启动过程(2)

文章目录1. SystemServer进程1.1 启动Binder线程池1.2 启动系统服务1.2.1 启动Bootstrap(引导)服务1.2.2 启动Core(核心)服务1.2.3 启动Other(其他)服务2. Launcher进程 在从Android 8.0源码的角度剖析Android系...

2019-12-06 23:36:11 1326 0

原创 从Android 8.0源码的角度剖析Android系统启动过程(1)

文章目录1. init进程启动过程1.1 解析init.rc文件1.2 启动Zygote进程2. Zygote进程启动过程2.1 启动SystemServer进程2.2 创建Zygote进程的Server socket  在《嵌入式Linux应用开发完全手册》一书中,我们可以较为清晰地了解到And...

2019-12-05 10:27:33 1403 0

原创 从Android 8.0源码的角度剖析APK打包、安装过程

文章目录1. APK打包过程1.1 APK文件结构1.2 APK打包过程2. APK安装过程2.1 拷贝APK2.2 解析APK  APK,全称Android Application Package,即Android应用程序包,是Android系统使用的一种应用程序包文件格式,它的作用是将Andr...

2019-11-29 22:22:56 1288 0

原创 Android直播开发之旅(18):FFmpeg中滤镜(filter)的工作原理

文章目录1. 什么是滤镜1.1 简单滤镜(滤镜链)1.2 复杂滤镜(滤镜图)2. 滤镜API介绍与使用2.1 滤镜API介绍2.1.1 结构体2.1.2 功能函数2.2 滤镜API的使用2.2.1 配置滤镜图2.2.2 使用滤镜图 1. 什么是滤镜  滤镜(filter)是指将未经过处理的原...

2019-11-21 14:54:36 1830 1

原创 Android性能优化(4):UI渲染机制以及优化

文章目录1. 渲染机制分析1.1 渲染机制1.2 卡顿现象1.3 内存抖动2. 渲染优化方式2.1 过度绘制优化2.1.1 Show GPU overdraw2.1.2 Profile GPU Rendering2.2 卡顿优化2.2.1 SysTrace2.2.2 TraceView 在从An...

2019-11-20 09:38:34 8337 4

原创 Android性能优化(2):常见内存泄漏与优化(二)

文章目录1. Android虚拟机:Dalvik和ART1.1 JVM与Dalvik区别1.2 Dalvik与ART区别1.3 Dalvik/ART的启动流程2. 常见内存分析工具2.1 Android Profiler2.1.1 Allocation Tracker2.1.2 Heap Dump...

2019-11-07 16:20:20 1384 6

原创 Android直播开发之旅(17):使用FFmpeg提取MP4中的H264和AAC

最近在开发中遇到了一个问题,即无法提取到MP4中H264流的关键帧进行处理,且保存到本地的AAC音频也无法正常播放。经过调试分析发现,这是由于解封装MP4得到的H264和AAC是ES流,它们缺失解码时必要的起始码/SPS/PPS和adts头。虽说在Android直播开发之旅(3):AAC编码格式分...

2019-10-21 15:55:44 2525 0

原创 Android性能优化(1):常见内存泄漏与优化(一)

 a众所周知,Java因其拥有独特的虚拟机(JVM)设计,使其成为一门跨平台、内存自动管理的高级开发语言。所谓跨平台,即"一次编译,多次运行",从而解决了不同平台由于编译器不同导致无法运行问题;所谓内存自动管理,即Java不像C/C++那样需要开发者来分配、释放内存,它拥有一套...

2019-10-09 18:01:47 1379 0

原创 Android直播开发之旅(16):使用FFmpeg保存网络流到本地文件

在Amdroid直播开发之旅(5):详解ffmpeg编译与在Android平台上的移植和Android直播开发之旅(12):初探FFmpeg开源框架文章中,我们分别探讨了FFmpeg的编译移植、FFmpeg框架和相关重要结构体。本文就在此基础上,将详细阐述FFmpeg的裁剪移植,以便剔除不必要的功...

2019-09-27 15:27:19 2327 8

原创 从Android 6.0源码的角度剖析View的绘制原理

在从Android 6.0源码的角度剖析Activity的启动过程和从Android 6.0源码的角度剖析Window内部机制原理的文章中,我们分别详细地阐述了一个界面(Activity)从启动到显示的整个流程和View是如何添加到Activity的Window中的。本文就在上述两篇文章基础上,从...

2019-09-03 15:35:01 1659 0

原创 Android直播开发之旅(15):libjpeg库的编译移植与使用

1. libjpeg介绍  libJPEG库是一款功能强大的JPEG图像处理开源库,它支持将图像数据压缩编码为JPEG格式和对原有的JPEG图像解压缩,Android系统底层处理图片压缩就是用得libJPEG库。但有一点需要注意的是,为了适配低版本的Android手机,Android系统在内部的压...

2019-08-28 17:41:07 1363 0

原创 Android直播开发之旅(14):使用RC4算法加解密音视频流

1. RC4算法简介与原理  RC4加密算法是Ron Rivest在1987年设计出的密钥长度可变的加密算法族,它是一种面向字节操作的对称加密算法,且属于对称密码算法中的序列密码(streamcipher,也称为流密码)。RC4算法采用的是输出反馈(OFB,oupt-feedback)工作方式,该...

2019-08-26 11:40:45 1713 0

原创 从Android 6.0源码的角度剖析View的事件分发机制

请尊重原创,转载请声明出处: 在从Android 6.0源码的角度剖析UI界面架构一文中,我们了解到Activity是Android的可视化界面,是用户与Android系统交互的窗口,也就是说每个Activity都对应着一个窗体,但窗体是一个抽象的概念,它的具体表现形式是视图。在Android中...

2019-08-15 17:47:50 1019 0

原创 Docker入门指南(1):Docker简介与原理

 Docker是基于Go语言实现的云开源项目,它的主要目标是“Build,Ship and Run Any APP,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以使一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。D...

2019-07-21 18:47:53 1308 0

原创 Rasa Core开发指南

文章目录1. Rasa Core简介1.1 Rasa Core消息处理流程1.2 安装Rasa Core2. Dialogue模型训练2.1 Story样本数据2.2 Domain2.2.0 intents2.2.1 actions2.2.2 templates2.2.3 entities2.2....

2019-06-19 10:00:53 9871 51

原创 中文NLP技术学习(1):搭建NLP开发环境

 中文NLP技术学习系列文章,将以NLTK系统为主体框架,通过整合相关的开源系统来学习NLP中涉及的所有模块。下面是我的PC环境: win10 64bits python 3.6.8+pip+virtualenv PyCharm 2018.3.5 (Professional Edition) ...

2019-05-07 10:25:11 1855 0

原创 从Android6.0源码的角度剖析Service启动过程

Service是Android四大组件之一,与Activity的可视化界面相反,Service没有向用户提供交互界面,因此常被用于执行后台任务。Service的启动方式有两种:普通启动和绑定启动,其中,前者通过Context.startService方法启动,常用于执行普通的后台任务;后者通过C...

2019-02-23 15:40:01 1147 0

原创 从Android6.0源码的角度剖析Binder工作原理

在从Android 6.0源码的角度剖析Activity的启动过程一文中,我们了解到Activity的启动过程最终由系统服务ActivityManagerService完成,ActivityManagerServer是继承于Binder且运行在系统进程中,Activity的启动实质是一次基于Bin...

2019-02-11 12:16:07 1384 0

原创 Android USB开发小结:host模式与accessory模式

很早之前就想对Android USB的两种模式作个小结,但是一直没有空去搞,毕竟USB这块应该属于冷门方向,并且应用层能够做的比较少也很简单。最近刚好在做大疆无人机的二次开发,想着对USB连接检测这块做下优化,毕竟Android终端主要是通过USB连接到远程控制器来与无人机进行交互。但与And...

2018-12-27 22:15:59 4341 3

原创 Android直播开发之旅(13):使用FFmpeg+OpenSL ES播放PCM音频

在Android直播开发之旅(12):初探FFmpeg开源框架一文中,我们详细介绍了FFmpeg框架的架构、音视频相关术语以及重要的结构体。为了能够对这些重要的结构体有个深入的理解,本文将在此基础上,利用FFmpeg解析rtsp数据流以获取AAC音频数据,再对AAC进行解码为PCM,然后结合Ope...

2018-12-25 22:37:05 1907 2

原创 从Android6.0源码的角度剖析Handler消息机制原理

■ 文  蒋东国 ActivityThread通过ApplicationThread和AMS进行进程间通信,AMS以进程间通信的方式完成ActivityThread的请求后回调ApplicationThread中的Binder方法,然后ApplicationThread会向H发送消息,H收...

2018-11-13 22:13:30 1908 0

原创 Android直播开发之旅(12):初探FFmpeg开源框架

1. FFmpeg介绍与裁剪 1.1 FFmpeg简介  FFmpeg(Fast forword mpeg,音视频转换器)是一个开源免费跨平台的视频和音频流方案,它提供了录制/音视频编解码、转换以及流化音视频的完整解决方案。ffmpeg4.0.2源码目录结构如下: 目录说明: FFmp...

2018-11-08 21:40:26 2159 0

原创 Android NDK开发之旅(6):JNI函数完全解析与项目实战

**对于基本类型而言,JNI与Java之间的映射是一对一的,比如Java中的int类型直接对应于C/C++中的jint;而对引用类型的处理却是不同的,JNI把Java中的对象当作一个C指针传递到本地函数中,这个指针指向JVM中的内部数据结构,而内部数据结构在内存中的存储方式是不可见的,本地代码必须...

2018-10-25 23:23:25 1789 2

提示
确定要删除当前文章?
取消 删除