CMake基础

前言

自从 AndroidStudio2.2 开始支持 CMAKE 来构建 C/C++ 程序之后,作为 Android 开发就可以使用 CMake 来替换 Android.mk 了。

基本使用

在学习 CMAKE 之前,我们先来看一下如何使用 CMAKE 编译项目。假设 CMakeLists.txt 已经编写完毕,并且是正确的。

ROS文件系统

前言

在上一篇文章中,我们谈到了怎么在 Arch 系的 Linux 上安装 ROS ,这只是入门的第一步,接下来我们要来了解 ROS 的文件系统。

在Arch上安装ROS

前言

上周开始,我在 Arch 上安装 ROS ,装了一周才搞定,记录一下碰到的问题。

官方推荐使用 Ubuntu 来安装 ROS ,但是我比较喜欢 Arch 所以就尝试在 Arch 上安装, Arch 上安装 ROS 的资料还是比较少的,官网的教程并不是那么准确,有误导性,所以写下此文,希望能帮助有缘人。

Rust 环境搭建

简介

早就听说 Rust 的大名, 近两年 Rust 发展的不错,从微软宣布要使用 Rust 来替代 C/C++ 重写 Windows 组件,到 Rust 进入 TIOBE 排名前20,越来越受到开发的关注。

Rust 的官网介绍其是一门赋予每个人构建可靠且高效软件能力的语言。它的特点是:运行快,防止段错误,保证线程安全。

Parallels Desktop 安装 Manjaro 无法进入安装界面的解决办法

前言

自从使用 Manjaro 19 开始,在 Parallels Desktop 中安装 Manjaro 发行版的时候,要不就卡在启动页面进不去安装页面,要不就是在安装 Parallels Tools 后卡在启动页面,折腾了许久,翻遍了各个论坛和帖子都没有找到解决方案,于是我有两种选择,一种是使用其他发行版(对我试了其他发行版),另一种是用其它虚拟机软件(Virtual Box)。

Gradle入门

前言

在前一篇文章我们讲了 Groovy ,有了 Groovy 的基础就能看懂 Gradle 里的语法。但是光有 Groovy 基础还是不够的, Gradle 提供了一些 API 让我们可以很方便的参与到项目的构建中。

Groovy 入门

前言

Android 中现在默认的构建工具是 Gradle ,而 Gradle 构建工具是使用 Groovy 语言编写的,这就使得了解 Groovy 语言变得非常重要了。

如果你不了解 Groovy 会以为 build.gralde 文件中写的就只是一些配置,其实并没有这么简单。之所以看起来项配置文件,是因为 Groovy 的闭包特性,让我们写起来简单,看起来像配置文件,这就降低了编写的门槛。使得我们可以专注于 Android 层面的业务逻辑。

随着 Android 的发展,我们不能局限于应用层,在构建的过程我们也可以进行一些优化。今天就来学习一下 Groovy 这们语言。

Java 内存模型

前言

今天来学一下 Java 内存模型。

CPU 工作模型

在学 Java 内存模型之前,我们来了解一下 CPU 的工作模型。

现代计算机中的 CPU 的执行速度远高于内存的读取速度, CPU 每读取一次都要都要等待老半天,这样 CPU 就会有大量的时间在等待,而浪费了 CPU 的计算能力。

Java 类的加载过程

前言

上次说到了类的加载器,分为 BootstrapClassLoaderExtClassLoaderAppClassLoader 。具体是怎么加载的没说,这次来说一说类的加载过程,主要分为装载、链接、初始化。其中链接又可以分为验证、准备、解析。

HTTPS 原理

为什么要有 HTTPS

做开发的都知道 HTTP 使用明文进行传输内容,就是在裸奔,一点安全感都没有。

在传输的过程中任何一个节点都可以对内容进行监听,篡改,冒充。

为了解决 HTTP 存在的这些问题就出现了 HTTPS

ClassLoader

前言

上一篇我们了解了字节码的结构,这些字节码文件都是什么时候被加载到内存中的,今天就来聊聊类加载。

Java Class 探秘

前言

Java 开发都知道 .java 文件编译后得到的是 .class 文件,这个文件是 Java 虚拟机能够识别加载的文件。有了这个字节码文件 Java 实现一次编写到处运行才成为可能。

然而我们平时都是写 .java 文件,很少接触 .class 文件,今天就来看看 .class 文件中有什么秘密,它长什么样子。

Java 垃圾回收机制

前言

之前我们介绍了 JVM 运行时内存是怎么分配的,其中方法区和堆是线程共享的,这里的对象如果不需要使用了,需要释放掉。

但我们很少像 C/C++ 一样去自己管理,释放内存,这其中就要归功于 Java GC ,它在背后默默的工作着。

虽然 Java GC 在背后默默的工作着,但是我们一直都不了解它,今天来看看它是怎么工作的,这样出现问题了才有应对之法。

在 Emacs 中使用 Git Flow

Git Flow 简介

随着 GitHub 的流行,越来越多人开始使用 GitGit 的强大在于我们可以随时随地的创建分支。

随时随地创建分支,给我带来了极大的方便,但同时,分支太多管理起来也是非常头疼。

Git 支持多人协作,如果没有一个规范的话,随着时间的变化,将会越来越难以管理。

这时 Git Flow 出现了,这个分支模型,为我们管理 Git 分支提供了一个模型,用来管理 Git 分支,有效的减少分支混乱不堪的情况。

JVM 运行时内存分配

前言

JVMJava 程序员绕不过去的坎,今天学习下 Java 虚拟机运行时是怎么分配内存的。

JVM 规范中规定, JVM 运行时内存分为程序计数器、虚拟机栈、本地方法栈、方法区、堆,这5个部分,如下图所示。

我的快捷键跨平台方案

前言

我经常要在 macOS 和 Linux 下来回切换使用,使用的过程中,有许多不便之处。比如快捷键就是一个非常头疼的问题,需要记两套不同的快捷键,而且两个平台的键位还不一样。

熟练使用快捷键可以成吨的提高效率。于是在两个平台之间使用我都要刻意去配置让两个平台的快捷键尽肯能的相似,这样开发效率才不会受到太多的影响。

MPAndroidChart 使用总结

前言

今年开工以来,一直接触图表相关的开发,经过选择最后采用 MPAndroidChart ,期间碰到了一些问题,踩了不少坑。特来总结一下,以免日后忘记。这些知识点虽然不难,但是非常零碎,找起来比较麻烦。