Android中管道的使用
前言
最近读了一些 Android
源码,发现其中不少是用 pipe
机制来实现的,并且和我们往常使用 pipe
有些不一样。
有必要学习一下 pipe
的使用,不然会影响阅读源码,并且 Android
里的使用方式比较有技巧。
最近读了一些 Android
源码,发现其中不少是用 pipe
机制来实现的,并且和我们往常使用 pipe
有些不一样。
有必要学习一下 pipe
的使用,不然会影响阅读源码,并且 Android
里的使用方式比较有技巧。
自 C++11 以来,引入了移动构造函数和移动赋值函数,使得在构造对象的时候可以减少调用次数,以提高性能。
所以 C++的构造函数从 3 个变成了 5 个,分别是构造函数、拷贝构造函数、拷贝赋值函数、移动构造函数、移动赋值函数。
它们非常相似,放在一起容易搞混,于是总结一下,便有了此文,希望能够对大家有所帮助。
在开始行动之前,请使用Time Machine备份系统,以免出现数据丢失,导致不可挽回的局面。
随着电脑的使用,软件越装越多,感觉越来越卡,在Mac上也不能例外。于是我就萌生来在Mac上装Linux的想法,毕竟Mac的配置跑Linux完全没有问题。
本文在 Manjaro Linux
下进行操作,学习如何在 Linux
下结合 CMake
搭建 OpenGL
环境。
自从 AndroidStudio2.2
开始支持 CMAKE
来构建 C/C++
程序之后,作为 Android
开发就可以使用 CMake
来替换 Android.mk
了。
在学习 CMAKE
之前,我们先来看一下如何使用 CMAKE
编译项目。假设 CMakeLists.txt
已经编写完毕,并且是正确的。
最近使用 C/C++
开发,在 Emacs
下使用 Cmake
作为编译工具,结合 ccls
进行代码补全,有着不错的体验,于是记录一下。
在上一篇文章中,我们谈到了怎么在 Arch
系的 Linux
上安装 ROS
,这只是入门的第一步,接下来我们要来了解 ROS
的文件系统。
上周开始,我在 Arch
上安装 ROS
,装了一周才搞定,记录一下碰到的问题。
官方推荐使用 Ubuntu
来安装 ROS
,但是我比较喜欢 Arch
所以就尝试在 Arch
上安装, Arch
上安装 ROS
的资料还是比较少的,官网的教程并不是那么准确,有误导性,所以写下此文,希望能帮助有缘人。
这些日子切换到 Windows
下使用 Emacs
,在使用 Org-Mode
设置计划时间后,星期几显示不出来,如下所示
|
|
早就听说 Rust
的大名, 近两年 Rust
发展的不错,从微软宣布要使用 Rust
来替代 C/C++
重写 Windows
组件,到 Rust
进入 TIOBE
排名前20,越来越受到开发的关注。
Rust
的官网介绍其是一门赋予每个人构建可靠且高效软件能力的语言。它的特点是:运行快,防止段错误,保证线程安全。
自从使用 Manjaro 19
开始,在 Parallels Desktop
中安装 Manjaro
发行版的时候,要不就卡在启动页面进不去安装页面,要不就是在安装 Parallels Tools
后卡在启动页面,折腾了许久,翻遍了各个论坛和帖子都没有找到解决方案,于是我有两种选择,一种是使用其他发行版(对我试了其他发行版),另一种是用其它虚拟机软件(Virtual Box)。
在前一篇文章我们讲了 Groovy
,有了 Groovy
的基础就能看懂 Gradle
里的语法。但是光有 Groovy
基础还是不够的, Gradle
提供了一些 API
让我们可以很方便的参与到项目的构建中。
在 Android
中现在默认的构建工具是 Gradle
,而 Gradle
构建工具是使用 Groovy
语言编写的,这就使得了解 Groovy
语言变得非常重要了。
如果你不了解 Groovy
会以为 build.gralde
文件中写的就只是一些配置,其实并没有这么简单。之所以看起来项配置文件,是因为 Groovy
的闭包特性,让我们写起来简单,看起来像配置文件,这就降低了编写的门槛。使得我们可以专注于 Android
层面的业务逻辑。
随着 Android
的发展,我们不能局限于应用层,在构建的过程我们也可以进行一些优化。今天就来学习一下 Groovy
这们语言。
今天来学一下 Java
内存模型。
在学 Java
内存模型之前,我们来了解一下 CPU
的工作模型。
现代计算机中的 CPU
的执行速度远高于内存的读取速度, CPU
每读取一次都要都要等待老半天,这样 CPU
就会有大量的时间在等待,而浪费了 CPU
的计算能力。
上次说到了类的加载器,分为 BootstrapClassLoader
、 ExtClassLoader
、 AppClassLoader
。具体是怎么加载的没说,这次来说一说类的加载过程,主要分为装载、链接、初始化。其中链接又可以分为验证、准备、解析。
做开发的都知道 HTTP
使用明文进行传输内容,就是在裸奔,一点安全感都没有。
在传输的过程中任何一个节点都可以对内容进行监听,篡改,冒充。
为了解决 HTTP
存在的这些问题就出现了 HTTPS
。
上一篇我们了解了字节码的结构,这些字节码文件都是什么时候被加载到内存中的,今天就来聊聊类加载。
Java
开发都知道 .java
文件编译后得到的是 .class
文件,这个文件是 Java
虚拟机能够识别加载的文件。有了这个字节码文件 Java
实现一次编写到处运行才成为可能。
然而我们平时都是写 .java
文件,很少接触 .class
文件,今天就来看看 .class
文件中有什么秘密,它长什么样子。
之前我们介绍了 JVM 运行时内存是怎么分配的,其中方法区和堆是线程共享的,这里的对象如果不需要使用了,需要释放掉。
但我们很少像 C/C++ 一样去自己管理,释放内存,这其中就要归功于 Java GC
,它在背后默默的工作着。
虽然 Java GC
在背后默默的工作着,但是我们一直都不了解它,今天来看看它是怎么工作的,这样出现问题了才有应对之法。