本文记录了一个由于HttpservletInputstream的读取0字节和FileInpustStream之间的差异导致的一个bug. 原因是因为Tomcat的 org.apache.catalina.connector.CoyoteInputStream 实现会优先判定是否已经关闭了流. 从而在流无效的时候返回EOF (-1) , 而对于FileInputStream的流的读取会先判定读取的大小. 从而导致了差异. 文中还介绍到了如何使用chatGPT来完成bug的排查. 其中chatGPT的能力非常优秀.不过如果你问得不好,可能达不到你想要效果. 具体情况如何, 请看原文吧.
当想模拟一个用户在弱网环境下请求一个网站或者一个API接口的真实响应时长时, 我们需要对网速进行限速. 这个可以使用curl
的--limit-rate
参数来进行.
对于TOMCAT来说,NIO与BIO实际并没有太大的区别. 原因在于Servlet规范导致了整体的协议处理都基本是阻塞读的. 除了Header部分以及长链接中的连接复用时的read next request等待.
本文对Nginx的HTTP请求的各个阶段涉及到的缓存(Buffer)相关的配置进行了简单的梳理.
关键字: proxy_buffer_size
, proxy_buffering
, proxy_buffers
, proxy_busy_buffers_size
.
看完本文后, 你会对Nginx的请求缓存以及Response缓存有一个基本的了解.
- proxy_buffer_size 用于设置 upstream的header的缓存.
- proxy_buffers 用于设置 upstream的response的body(可能不准确)的缓存个数与大小.
- proxy_busy_buffers_size 用于设置可用于处于发送busy状态的缓存区大小. 其值最小值必须大于等于 max(proxy_buffer_size,proxy_buffers one buffer size),且必须小于 (proxy_buffers-1)*size
介绍了 Shell 中的变量嵌套(shell嵌套参数)情况下的变量替换方法.
#
key="keyname"
keyname="helloworld"
echo "$key" # 期望输出 "helloworld"
上面的语法无法达到此目的.本文介绍解决此问题的办法.
当你创建了一个家用网络,里面有一堆可访问的设备的时候. 你可能想在外面随时随地都可以方便的访问自家的服务. 而sshutle就是这么一款穷人专用的虚拟专用网络方案. 前提是你的网络需要有一个公用IP. 同时你的家用的服务器通过SSH远程登陆. 满足这两个条件, 就可以使用 sshutle
实现远程回家.
修改 mac 的主机名: scutil --set HostName "username"
修改 help → Edit Custom VM options 中的内存大小
如果 spring 启动时间超过一分钟,一般改主机名就起作用了。
"username" 就是 mac 的账户名
服务器前端浏览器报502的时候, 查询代理服务器Nginx的日志中有: upstream sent too big header while reading response header from upstream, client
很明显这个是后端服务器返回的header过大导致.
本文旨在寻找一款合适的家用轻量级的服务器。甚至都不考虑上EXSI此类系统。 达到轻量稳定低功耗即可?
n6000处理器怎么样? 本篇文章会基于R71S给出一个基础测试. 整体来看功耗和性能都还控制得不错.就是大家都不把TDP6W作为设计功耗. 而是往TDP20W去设计,以期得到更高的性能.
-F
实际上是上传的表单的文件内容项的一个缩写.在上传后的内容会是一个表单.具体的表现为Header
中会有一个内容类型: Content-Type: multipart/form-data
简言之,实际-F
是一个简写的--form
的表单的意思. 而实际在上传文件时, 我们是使用的`-F "fieldName=@/path/to/file" 这样的形式指定的一个文件而已. 因此整体BODY是一个表单.而文件是表单内容的一部分.
大家使用Windows平台的研究较多. 基本接触的程序是Win平台的. IDE用Visual C++ , 自然一般也只会接触到$MS的编译器. 而微软家使用的是Intel 风格的汇编语言. 而在开源界,特别是基于GCC
的编译器是使用的是AT&T
风格的汇编 . 这里简单记录下两者的区别. 以备查. Linux小白. 如有纰漏, 大家请轻拍.
注: 这里是为了研究语言底层的实现机制,同时研究一些JVM的底层实现逻辑需要. 所以需要对栈帧的结构进行较细致的研究. 因此需要了解编译后的语言的反汇编.
Github Stats 所有开源项目 仓库项目简介Starsfork编程语言 ElfReaderELF 文件解析程序51Java macbookpro-env-initmacbookPro java web development init script.20Shell elf-static-load-appLinux ELF executable File parse and analysis00 GnuMakeManual_CNGNU make 中文手册00 JavaHelloWorld自己写的一些测试Dmeo.我的文章中相关的测试也会放到这里00Java JavaWorldLearningLearn java basic knowledge00 node-spa-helloworld 00JavaScript
当在传输大文件,或者是从另外一个流获取数据再通过Thrift传输到RPC Server端时, 时常会想. 如果Thrfit支持流传输就好了. 但是目前并没有支持. 具体请看正文.
从Spring6和SpringBoot3开始, Spring框架支持通过注解的形式将远程HTTP服务代理为Java接口. 类似于Feign
和Retrofit
.
声明式的HTTP接口包括请求的方式等信息.这样我们可以使用带注解的Java接口简单地表达远程API的细节.让Spring生成一个实现该接口并执行请求的代理. 这样可以有效的减少模板代码.
原书作者: W. Richard Stevens 著作的第一版本. 英文版本可以在 JD 找到买书链接.
想看电子版本的可以在这里找:CSDN 要分的链接. 如果没有积分想下载.可以私我. 顺便说下这个链接不是我的账号.我找了好久才找到的这一个要分少的链接.
由于之前网络知识断层.所以回顾一下 TCP/IP 相关的知识. 找时间读了下经典著作.豆瓣链接:TCP/IP详解 卷1:协议
译文如下:
之前在此博客发布了NAS的开箱文章,有热心的网友告诉我这个可能 是假货。 于是就有了这篇文章,此文章会探索怎样鉴定一个英睿达(Crucial)内存是否是正品。同时也会看看假货有什么特征。 最后会给出假货与真的内存之间的性能跑分数据。帮助大家避坑。
这篇文章会详细说明下目前英睿达(Crucial)内存正品识别 / 正品鉴别 的常规方法和一些避坑的细节. 主要围绕着DDR4的一些规格进行展开说明.
平时大家会使用curl来进行请求时间的测量. 比如:
curl -s -o /dev/null -w "dns: %{time_namelookup}\ntime_connect: "%{time_connect}"\ntime_appconnect: "%{time_appconnect}"\ntime_pretransfer: "%{time_pretransfer}"\ntime_starttransfer: "%{time_starttransfer}"\ntime_redirect: "%{time_redirect}"\ntime_total: "%{time_total}"\n" www.baidu.com
但是对于其中的参数: time_starttransfer 的理解,并不是那么容易. 在使用curl
进行文件上传的场景.
官网的驱动特别难找. 这里备份一份供大家下载.永久有效.
网卡: Intel i226-v
操作系统: windows 10
下载链接具体见正文