现在几乎所有人都听过 Linux 下的零拷贝技术,但我经常遇到对这个问题不能深入理解的人。所以我写了这篇文章,来深入研究这些问题。本文通过用户态程序的角度来看零拷贝,因此我有意忽略了内核级别的实现。
什么是 “零拷贝” ?
为了更好的理解这个问题,我们首先需要了解问题本身。来看一个网络服务的简单运行过程,在这个过程中将磁盘的文件读取到缓冲区,然后通过网络发送给客户端。下面是示例代码:
继续阅读 »
Java 并发常用的组件中有一种队列叫阻塞队列(BlockingQueue),当队列为空时,获取元素的线程会阻塞等待直到队列有数据;当队列满时,想要存储元素的线程会阻塞等待直到队列有空间。我们经常会用这种数据结构可以实现生产者、消费者模型。
继续阅读 »
Go 语言也提供了接口类型,使得我们可以面向接口编程,将实现和接口分离。在我看来,软件的抽象之美也应该以此来表达,和 Java 语言不同的是 Go 并不是那么 “强制”,它使用了一种 鸭子类型 的方式让动态类型成为可能。
继续阅读 »
世界的脆弱性越来越强,在看也看不清的变数里,如何才能反败为胜、扭亏为盈?
脆弱的反面是什么?是坚强吗?不!脆弱的反面是 “反脆弱” ! 学会反脆弱,掌握新时代的生存之道你也可以高枕无忧。
认识 “脆弱”
了解 “反脆弱” 之前,我们需要先了解脆弱。什么是脆弱?我们真的了解它吗?
继续阅读 »
REST 是一种现代架构风格,它定义了一种设计 Web 服务的新方法。和之前的 HTTP 以及 SOA 不同,它不是一个协议(即:一套严格的规则),而是一些关于 Web 服务应该如何相互通信的一些建议和最佳实践。按照 REST 最佳实践开发的服务被称为 “RESTful Web 服务”。
继续阅读 »
后端开发中大家肯定遇到过实现一个线程安全的计数器这种需求,根据经验你应该知道我们要在多线程中实现 共享变量 的原子性和可见性问题,于是锁成为一个不可避免的话题,今天我们讨论的是与之对应的无锁 CAS。本文会从怎么来的、是什么、怎么用、原理分析、遇到的问题等不同的角度带你真正搞懂 CAS。
继续阅读 »
本文转载自:https://www.cnblogs.com/dennyzhangdd/p/7218510.html
一、论文简介
继续阅读 »
Rocket.Chat{:target="_blank"} 是一种类似 Slack 的开源聊天软件,当然你可能没用过 Slack,毕竟它在国内不流行,这名字听起来像是 “火箭聊天”,非常霸气啊!不过光开源这一项就很吸引我了,同道中人同道中人。
继续阅读 »
How To Become A Hacker
Eric Steven Raymond, Thyrsus Enterprises{:target="_blank"}, < esr@thyrsus.com >
继续阅读 »
为啥选 Google Cloud 呢?主要原因是他们家有香港和台湾的服务器,速度和价格来讲都比较好,但是他们的 Web 面板操作真心复杂。下面来看看如何操作吧!
如果你没有域名,请跳过安装 Nginx 和域名配置的选项,请确保防火墙配置正常,需开放如下端口:
继续阅读 »