Fly Higher's Blog
Do one thing and do it well
-
Mac 开发环境配置
Typora 我先放张我在Mac中我用Typora写这篇文章时的界面吧,你们说香不香吧: Typora绝对是我这几年中遇到的最好用,最好看,最喜欢的一款软件,没有之一。 虽然Typora还没有发布正式的release版本,但是现在它一直在不断迭代更新,修复一些问题和补齐功能。 自从6年前入了Markdown的坑,我的笔记文档,博客文章基本都是用Markdown写的,期间也是尝试过各种Markdown软件,玩过在线网页版的Cmd Markdown,也使用过套了一层Electron的蚂蚁笔记,印象笔记中最新内置的Markdown编辑器我也体验过,但就是觉得他们要么在线写笔记不方便,要么就是渲染出来的样式很丑,要么就是笔记同步功能要收费。直到遇到了Typora,我终于找到了最钟意的Markdown软件,满足了我挑剔的要求,我也是各种安利推荐给我身边的朋友和同事。 简洁美观 所见即所得模式 支持自定义主题,也可从主题商店下载喜欢的主题 富文本自动转换成Markdown格式功能 搜索高亮功能 目录层级管理功能 大纲显示功能 图床功能,支持常用图床和自定义图床配置 Mac 修改设置环境变量 Mac 中修改环境变量的方法和 Linux 中修改环境变量的方法类似,可以修改的文件主要分为两类:...
-
QEMU/KVM 原理综述
QEMU 工作原理简介 QEMU是一款开源的模拟器和虚拟机监视器(Virtual Machine Monitor, VMM)。QEMU主要提供两个功能给用户使用: 作为用户态模拟器:通过动态代码翻译机制来执行不同架构的代码,例如在X86平台上模拟ARM平台下执行环境。 作为虚拟机监视器:模拟全系统,利用其它VMM(Xen,KVM等等)来使用硬件提供的虚拟化支持,创建接近于主机性能的虚拟机。 QEMU虚拟化的主要原理 系统虚拟化最重要的就是虚拟化出计算机系统中最重要的三大组件:CPU、内存和IO设备。QEMU虚拟出来的CPU成为vCPU,为了提升vCPU执行Guest OS中指令的效率,通过KVM、Xen等虚拟化技术,直接利用CPU硬件虚拟化的支持,在主机上安全地执行虚拟机代码(需要BIOS中CPU开启对应的硬件虚拟化支持)。 在x86平台上最常见的虚拟化组合就是QEMU/KVM的组合了,其中利用QEMU来模拟IO外设,通过KVM来捕获Guest OS中运行的指令并将其中非特权指令在物理CPU上直接运行,达到硬件加速的目的。 KVM内核模块对用户空间只暴露出一个/dev/kvm的设备文件,然后通过ioctl命令与QEMU进程进行通信,KVM利用硬件扩展直接将虚拟机代码运行于主机之上,当vCPU需要执行访问IO设备寄存器的指令时,vCPU就会停止从退回到QEMU进程中,由QEMU去模拟操作的结果。 KVM 虚拟化原理简介 KVM是Linux内核的一个虚拟化特性,由一组内核模块文件组成,它可以让QEMU中运行的Guest OS的指令直接在Host OS上的CPU中执行,前提是Guest OS和Host...
-
Android 系统图形栈(二):OpenGL ES 库和 EGL 库加载过程
1. OpenGL ES 和 OpenGL ES 库的区别 OpenGL ES : 它本身只是一个协议规范,定义了一套可以供上层应用程序进行调用的 API,它抽象了 GPU 的功能,使应用开发者不必关心底层的 GPU 类型和具体实现。 OpenGL ES 库:OpenGL ES...
-
Android 系统图形栈(一): OpenGL ES 和 EGL 介绍
OpenGL ES 什么是 OpenGL ES? OpenGL ES(OpenGL for Embedded Systems)是 OpenGL 三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,各显卡制造商和系统制造商来实现这组 API。1 OpenGL 基本概念 因为 OpenGL ES 是 OpenGL...
-
Linux I/O 模型详解
Linux I/O 模型 在 Linux/Unix 系统环境下进行 I/O 编程时,我们经常会遇到这些似懂非懂的名词: Synchronous I/O Asynchronous I/O Blocking I/O Non-blocking I/O 首先,这里讲的 I/O 指的是用户空间的 I/O,并且主要侧重于网络编程中的...