bingoohuang

Results 115 issues of bingoohuang

## 缘起 那天,有一小哥虔诚的来问我,说他不小心在客户那边有一个 50 G 的 ZIP 包(客户实现打好的),需要在网络上传走,可是找不到特那么大的 50 G 的内存,咋办? 我有点“吓尿”了,我大概知道了,这小哥估计想是把整个文件,囫囵吞枣一样,一口吃进内存,然后再进行一些处理吧! > 详细了解后,他还真是这么干的。他还写了一个测试程序,用了个 10M 的 zip 包做测试数据文件,还用读文件一行一行读接口去读,说竟然还读出来了。然后想去玩 50 G的包,然后就 OOM 了。 > 听完后一行一行的读后,我心理就默默的疑问,非文本文件也用一行一行读,难道他精通 Unix/Linux 哲学?Unix/Linux 哲学中的第5条:使用纯文本文件来存储数据 。 首先,度娘一下,ZIP 包的结构,了解一下大概是什么样子,如下所示,大概知道,还是一个文件写一块的嘛(我设计也得这么玩啊),流式写,磁盘缓冲写,估计几...

实践

## 问题列表 1. 问:假设千兆网卡,单次请求包 1M,其它条件没限制,请问单台 TPS 能达到一万么? 2. 问:我的接口平均响应时间是 200 毫秒,期望 TPS 是 1 万,需要多少并发连接? 3. 问:为什么我的并发连接数加到 100 以后,TPS 就上不去了,而且不升反降? 4. 问:客户说要十万并发,我们能实现么? 5. 问:为什么我的 CPU 没打满,TPS 还是上不去呢? 6. 问:假设,甲接口平均响应时间是 100...

灵魂

# 如何在不杀掉进程前提,关闭一个 TCP 连接? 看帖:https://mp.weixin.qq.com/s/JYNmDxZ4DQQ-dSZZR0Gp5Q 结论: 1. killcx 是一个 perl 脚本,要跑起来,还需要安装一些必要依赖。 1. 在连接正在忙碌(数据传送)时,很难杀死。 大家在关闭 TCP 连接第一反应都是「杀掉进程」。 是的,这个是最粗暴的方式,杀掉客户端进程和服务端进程影响的范围会有所不同: 在客户端杀掉进程的话,就会发送 FIN 报文,来断开这个客户端进程与服务端建立的所有 TCP 连接,这种方式影响范围只有这个客户端进程所建立的连接,而其他客户端或进程不会受影响。 而在服务端杀掉进程影响就大了,此时所有的 TCP 连接都会被关闭,服务端无法继续提供访问服务。 所以,关闭进程的方式并不可取,最好的方式要精细到关闭某一条 TCP 连接。 有的小伙伴可能会说,伪造一个四元组相同的 RST...

实践

# TPS 哪些事儿 ## TPS 具体是指什么? TPS 的英文全称是 Transactions Per Second,即每秒事务数。例如,每秒钟签名数量,每秒钟加密数量,每秒钟生成订单的数量等。有时候,我们见到类似的 HPS (每秒点击数),QPS(每秒查询数),RPS(每秒请求数)等,我们可以理解成是 TPS 的事务映射成点击、查询、请求的更加具体的解释上,为了方便起见,以下我们都统称 TPS。 为了让大家有一个直观的概念,我这里从一篇 2019 年的博客[Database Comparison - SQL vs. NoSQL (MySQL vs PostgreSQL vs Redis vs...

博客

今天给同事培训了一下Golang的入门知识 ,要求录制一下屏幕和声音。在此记录一下录制方法。 1. 使用内置的QuickTime Player来录制屏幕和声音。 文件 -> 新建屏幕录制,点小三角,麦克风选"Macbook Pro麦克风",或者“聚集设备“ ![image](https://user-images.githubusercontent.com/1940588/55946772-dc694800-5c7f-11e9-90b6-779f43850dd1.png) 2. 保存后,是比较大的mov格式的文件,可以用[HandBrake](https://handbrake.fr/),或者[VLC](http://www.videolan.org/vlc/) 选择转换为mp4格式,减少大小。1.72G就变成了223M了。 > HandBrake is a tool for converting video from nearly any format to a selection of modern,...

博客

# [SQLite Playground](https://sqlime.org/) ![image](https://user-images.githubusercontent.com/1940588/141600186-49397d06-38d3-4210-a6c0-618117a79dbd.png)

In the real world, Rust is the coating closest to the bare metal. ![image](https://user-images.githubusercontent.com/1940588/40842436-790fff74-65e0-11e8-94ae-03e98d3362e5.png) 图片来自于[Why Programming Language “Rust” is Getting all the Love](https://www.cbronline.com/analysis/rust-language) 没事翻翻slideshare上的ppt。一些觉得好的,收藏一下。 ## Rust这个名字是个什么鬼? [TL;DR](https://www.reddit.com/r/rust/comments/27jvdt/internet_archaeology_the_definitive_endall_source/): Rust is named...

博客

[我在架构设计和代码开发中的一些常用原则](https://mp.weixin.qq.com/s/XAdSl1zkOeJpcWHrS0IAVw) > 不管我一生中取得了多大的成功,其主要原因都不是我知道多少事情,而是我知道在无知的情况下自己应该怎么做。我一生中学到的最重要的东西是一种以原则为基础的生活方式,是它帮助我发现真相是什么,并据此如何行动。 > ——瑞·达利欧(Ray Dalio)

摘句

毁三观的图: ![image](https://user-images.githubusercontent.com/1940588/99343938-e591b080-28c9-11eb-98c9-396c7a2e30fe.png) 三观回正的图: ![image](https://user-images.githubusercontent.com/1940588/99343947-eaeefb00-28c9-11eb-98f4-0091d825532e.png) [用了这么久HTTP, 你是否了解Content-Length和Transfer-Encoding ?](https://blog.piaoruiqing.com/2019/09/08/do-you-know-content-length/) 由Content-Length导致的问题引发的一系列思考: > 前段时间开发API网关, 使用postman调试时出现了超时的情况, 经排查确定是请求数据被处理后Content-Length与实际不一致导致的问题, 故有此文. ### 前言 Content-Length, HTTP消息长度, 用十进制数字表示的八位字节的数目. 一般情况下, 很多工作都被框架完成, 我们很少去关注这部分内容, 但少数情况下发生了Content-Length与实际消息长度不一致, 程序可能会发生比较奇怪的异常, 如: 1. 无响应直到超时. 1. 请求被截断, 而且下一个请求解析出现错乱. ###...

博客

记录一些Nginx实践的内容

博客