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