curl 支持 HTTP2
curl 命令支持 HTTP2 执行以下命令: {代码...} 首先使用 curl 请求 https://nghttp2.org(使用了 http2)。但是结果却是返回了 HTTP1.1 响应: {代码...} 如果使用 http2,会给我们返回一个协议不支持的错误。 {代码...} 安装 nghttp2 安装 nghttp2 ad 工具(http2 的 C 库支持): {代码...} 更新到最新的 curl 版本:...
2016-03-07

基于 epoll 设计类似 libevent 的异步 I/O 库 - 接口
这篇文章可以算是我在 GitHub 上一个工程的设计概要了。简要说明了该工程的设计思路以及技术要点。 本文章纯原创,没有参考资料。不过有设计过程中记录下的相关文章: 使用 pipe 在程序正文中捕获和处理信号 本文地址:[链接] 工程简介 基本原理 总所周知,在 Linux 中实现异步 I/O,适用的系统 API 就是 epoll。这里主...
2017-06-13
在 libevent 中使用 MariaDB(MySQL)
在之前我翻译的官方文档中提到了 MariaDB 提供了对异步 I/O 的支持。那篇文章是一个比较简要的介绍。不过实际适配中,官方也提供了一个完整适配 libevent 的示例代码。本文算是对我上述示例代码的阅读笔记吧。
网络异步请求之gevent
我们知道对于网络请求这种IO bound的场景来说,最怕的就是某个请求阻塞了其余的操作,让并发性大大降低。今天就来介绍一款python下的并发库-gevent。
在 libevent 中使用 MariaDB(MySQL)
在之前我翻译的官方文档中提到了 MariaDB 提供了对异步 I/O 的支持。那篇文章是一个比较简要的介绍。不过实际适配中,官方也提供了一个完整适配 libevent 的示例代码。本文算是对我上述示例代码的阅读笔记吧。阅读本文之前,作者假设读者已经有了 libevent 的相关知识。如果没有的话,可以参见我的系列文章:Libevent官...
2025-04-26
使用 libev 构建 TCP 响应服务器(echo server)的简单流程
基本流程创建 socket,绑定 socket 地址Listen socket创建一个 watcher,用来承载accept事件写一个 callback 用来做实际的accept调用创建并初始化一个 watcher 用来从 client 中读取请求写一个 callback 用来read启动 event loop创建 socket 并绑定 address注意:原文例子中未显示的是,应当将 fd 设置为非阻塞的。带非...
2025-04-26
译/理解node事件循环
第一个基本论点:IO是昂贵的。 看图: 所以,当前编程技术的最大浪费,是等待IO完成。 解决这个性能效应有几个方法(来自sam rushing) 同步:按照次序,一次处理一个请求。好处:简单,坏处:任何人的一个请求都会阻塞其他全部人的请求 建一个新进程:一个进程处理一个请求。好处:容易 坏处:不具备可伸缩性,几百个...
使用Rancher-Gen动态更新配置文件
Docker和Rancher让大家能更轻易地部署和管理基于微服务的应用程序。然而,如果有些服务是依赖于其他动态服务的,那该如何管理它们的配置?你是否时常觉得,要是有方法能自动检测后端服务的变化,并实现配置文件的动态更新就好了?本文给你答案。
2017-01-13
muduo记录
1.muduo编译安装 Github源码目录: [链接] 编译muduo遇见的报错可以在github上的issue上面查找。一般都能顺利解决,我遇到的就是没有安装boost-dev. centos7系统 执行: sudo yum install boost-dev 2.截取流程图 图片截取自《Linux多线程服务端编程:使用muduo C++网络库》 3.源码摘录 摘录一个examples里面的pingpong为例...
python基础教程:异步IO 之 概念和历史
编程中,我们经常会遇到“并发”这个概念,目的是让软件能充分利用硬件资源,提高性能。并发的方式有多种,多线程,多进程,异步IO等。多线程和多进程更多应用于CPU密集型的场景,比如科学计算的时间都耗费在CPU上,利用多核CPU来分担计算任务。多线程和多进程之间的场景切换和通讯代价很高,不适合IO密集型的场景(关于多...
2019-05-17
对libuv的C++封装
uv-cpp是一个基于libuv的C++封装网络库,基于本人实际项目需求开发并使用。接口较为简单易用,并对libuv一些特性做了扩展及优化。压测结果稳定、高效。未发现内存泄漏及崩溃相关bug。
Node.js异步I/O,事件驱动
Node.js以高效,轻量著称,具有非阻塞I/O,事件驱动的特性.非阻塞I/O很浅显的解释就是: 代码以单线程的方式执行,在遇到I/O操作时Node会开辟新的线程去执行I/O操作,主线程代码继续执行.事件驱动很浅显的解释就是: 事件产生者发布一个事件,事件订阅者在收到事件后执行某段代码.但非阻塞I/O,事件驱动到底是如何实现的呢,它们跟...
node了解
Node之父的Ryan Dahl阻塞式IO是错误的方式,V8的发布为Node的诞生奠定了坚实的基础。JavaScript本身就是单线程的,而且浏览器发起的AJAX请求就是非阻塞的。所以将JavaScript和异步IO以及一个简单的HTTP服务器集合在一起,就达到一个比较好的配合。虽然Node的非阻塞模型没有了多线程,但却多出了“回调地狱”问题。Ryan认为...
2022-04-23
异步IO的应用
循环:早期系统使用简单的循环选择解决方案,即循环遍历打开的网络连接的列表,判断是否有要读取的数据。这种方法既缓慢(尤其是随着连接数量增加越来越慢),又低效(因为在处理当前连接时其他连接可能正在发送请求并等待响应)。在系统循环遍历每个连接时,其他连接不得不等待。如果有 100 个连接,其中只有一个有数据...
2016-03-06
结合React源码,五分钟带你掌握优先队列
这是第 85 篇不掺水的原创,想获取更多原创好文,请搜索公众号关注我们吧~ 本文首发于政采云前端博客:结合React源码,五分钟带你掌握优先队列前言最近写一个需求用到了优先队列和二叉堆的相关知识,借此机会梳理了一些二叉堆的相关知识分享给大家。什么是优先队列优先队列是数据结构中的基础概念,与队列先进先出(FIFO...
MySQL数据库运维之数据备份02
上篇文章介绍了一下MySQL数据库逻辑备份第一部分mysqldump的使用,本篇文章将继续介绍MySQL数据库逻辑备份第二部分Xtrabackup工具的操作过程!微信搜索公众号:”菜鸟封神记“,定期分享一线大厂常用技术干货。