分类 Tech 中的文章

虚拟内存简介

虚拟内存是计算机领域中一个很重要的概念,不管是对于日常工作排查问题,还是技术面试,出现的频率都很高。之前对这块内容的理解一直只存在于头脑里,现在把它拿出来,形成书面记录。

……

阅读全文

使用 protobuf

在软件开发过程中,通常会使用 http 方式调用别人的接口获取数据,json 是一种流行且易读的数据交换格式,因此在调接口时,大家都习惯用这种格式。但对于微服务来说,或者对于高性能的 rpc 请求,http 和 json 实际还是有点过重,具体体现在,http 协议规定了在传输数据时,必须要有请求头,请求行,请求体。而 protobuf 格式的数据,可以很好解决这个问题。它对传输的数据做了很好的编码和压缩,虽然不易阅读,但传输的体积和效率,比 json 或 xml 好很多。与 protobuf 类似的,还有 thrift。虽然使用上有差别,但目的都是类似:高性能的序列化框架。本文记录下如何使用 proto 格式处理数据,或者称为消息。

……

阅读全文

云计算中的资源调度

云厂商将机房中服务器的计算能力进行整合,如 CPU、内存等,并把这些硬件统一抽象为资源,然后按需卖给用户,这就是云计算理念,怎么把这些资源有效的管理和调度起来,最大化资源利用率,关系着云厂商的成本和营收,也是各厂商实现差异化的一个重要切入点。本文讲讲云计算中的资源调度,或者称为 scheduler。

……

阅读全文

使用 PXE 从网络安装操作系统

平时我们拿到一台新电脑后,第一件事就是安装操作系统,安装系统常规方式是用光盘或 U 盘,需要提前在 BIOS 里设置引导顺序,让 CDROM 或 U 盘为第一引导项,重启后就可以走安装系统流程了,安装过程中还需要手动设置一些选项,如设置时区,硬盘分区等。等安装完后,再设置 BIOS 从硬盘启动,系统就算安装好了。这是家庭或电脑店里的常规方式。试想下,企业采购一批服务器,100 台甚至上千台,如果仍然采用这种方式,那运维得累死。这时,我们可以采用 PXE 方式,从网络给服务器安装系统。

……

阅读全文

什么是 I/O 多路复用

在高并发环境下,web 服务器需要处理成千上万的客户端连接,如何最大限度发挥单台机器的性能,使之在处理大量连接时仍保持较低的负载,这是个很重要的课题。本文介绍下解决此类问题的一种很经典的方式:I/O 多路复用。

……

阅读全文

Java 中 Future 和异步任务

Java 中的多线程技术一直是个热门话题,而线程池、异步任务是多线程编程中绕不开的一个技术要点,本文介绍下 java 中的 Future 相关使用方法以及任务执行框架 ExecutorService。

……

阅读全文

git pull 和 git rebase

git 是团队开发中常用的代码版本管理工具,我们经常会遇到这样一个场景:在 feature 分支上开发完一个新功能后,通常会做这样的操作:git pull,然后git push。但也有人喜欢在git pull后面再上--rebase参数,即git pull --rebase,这是什么意思呢?

……

阅读全文

Docker 和 KVM 虚拟机

近几年,随着微服务概念和容器化思想的风(chao)靡(zuo),Docker 技术成了各大厂和各种吹牛大会上的香饽饽,一提到 Docker,就是各种优势,大有在云计算领域一统江湖的趋势。但是 Docker 真的是万精油吗?本文简单介绍下 Docker 的一些底层技术,以及和传统虚拟机的一些差异。

……

阅读全文

Java 中常用的监控和故障处理命令行工具

我们常常需要获取 Java 程序运行过程中的一些执行情况,如执行路径,GC 情况,堆栈信息等。JDK 给我们提供了一些简单但却很有用的命令行工具,本文介绍下这些工具的使用和参数说明,用于备忘。

……

阅读全文