虚拟内存简介

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

阅读全文

由病毒检测想到的一种面试题

最近看到一个新闻,武汉开展全城新冠病毒核酸检测,要在 10 天内检测全市 1000 多万人中病毒携带者,这无疑是一个巨大的工程。这里我不打算深究医护人员是采用什么方式完成这项任务,主要想从这个检测事例中,引出一个有意思、又很有实践意义的问题:有 N 瓶无色无味液体(N 可能很大,如 100,1000,10000 等),其中混入了一瓶有毒液体,同时也有试剂,可以检测液体的毒性,如果试剂滴入到有毒液体中,液体变蓝,否则不变色,除此之外,不能通过其他方式检测。问题来了,如何用最少的检测次数,找到这瓶有毒液体。

阅读全文

使用 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 的一些底层技术,以及和传统虚拟机的一些差异。

阅读全文