Android中管道的使用

前言

最近读了一些 Android 源码,发现其中不少是用 pipe 机制来实现的,并且和我们往常使用 pipe 有些不一样。

有必要学习一下 pipe 的使用,不然会影响阅读源码,并且 Android 里的使用方式比较有技巧。

C++5大构造函数

前言

自 C++11 以来,引入了移动构造函数和移动赋值函数,使得在构造对象的时候可以减少调用次数,以提高性能。

所以 C++的构造函数从 3 个变成了 5 个,分别是构造函数、拷贝构造函数、拷贝赋值函数、移动构造函数、移动赋值函数。

它们非常相似,放在一起容易搞混,于是总结一下,便有了此文,希望能够对大家有所帮助。

把Manjaro安装到Macbook Pro的外置硬盘

前言

在开始行动之前,请使用Time Machine备份系统,以免出现数据丢失,导致不可挽回的局面。

随着电脑的使用,软件越装越多,感觉越来越卡,在Mac上也不能例外。于是我就萌生来在Mac上装Linux的想法,毕竟Mac的配置跑Linux完全没有问题。

OpenGL环境搭建

前言

本文在 Manjaro Linux 下进行操作,学习如何在 Linux 下结合 CMake 搭建 OpenGL 环境。

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 在背后默默的工作着,但是我们一直都不了解它,今天来看看它是怎么工作的,这样出现问题了才有应对之法。