1.对于缓冲区空间的设定,要根据具体情况来定,如果存在大量的长信息(比如文件传输),将缓冲区定义的大些,可能更好的利用网络资源,如果更多的是短信息(比如聊天消息),使用小的缓冲区可能更好些,这样刷新的速度会更快.一般系统默认的缓冲大小是8*1024.除非对自己处理的情况很清晰,否则请不要随意更改这个设置. 2 Apache Commons的FTPClient局域网上传文件速度本应该很快的,但却在实际开发中发现上传一个文件蜗牛速度,都是因为调用了如下API: ftpClient.storeFile…
注意:阅读本文及相关源码时,需要数据结构相关知识,包括:哈希表.链表.红黑树. Map是将键(key)映射到值(value)的对象.不同的映射不能包含相同的键:每个键最多只能映射到一个值.下图是常见Map的接口和实现.与Collection相比,继承关系简单不少. 一.Map接口和AbstractMap抽象类 Map接口除了增加映射.根据key获取value.判断映射中的key或value是否存在.删除映射的基本方法外,还包含了返回包含所有key的Set.包含所有value的collection…
一个对象占多少字节? 关于对象的大小,对于C/C++来说,都是有sizeof函数可以直接获取的,但是Java似乎没有这样的方法.不过还好,在JDK1.5之后引入了Instrumentation类,这个类提供了计算对象内存占用量的方法.至于具体Instrumentation类怎么用就不说了,可以参看这篇文章如何精确地测量java对象的大小. 不过有一点不同的是,这篇文章使用命令行传入JVM参数来指定代理,这里我通过Eclipse设置JVM参数: 后面的是我打的agent.jar的具体路径.剩下的就…
Windows 命令行 cmd 窗口系统默认的大小(80*40)对于现在的屏幕配置已经跟不上时代了,我们总是要把它改大些,而且缓冲区大小也想改得大大的.单纯的为当前的 Windows 命令行窗口修改显示大小和缓冲区大小就简单了,右键命令行窗口标题,属性里改屏幕缓冲区和窗口大小就是,系统会为与当前标题相同的命令行窗口记住你的设置,比如 C:\Windows\system32\cmd.exe.但是经常你又会打开不同标题的命令行窗口,如  Tomat,这时候它又是默认的 80*40 的窗口大小,又得改…
一个对象占多少字节? 关于对象的大小,对于C/C++来说,都是有sizeof函数可以直接获取的,但是Java似乎没有这样的方法.不过还好,在JDK1.5之后引入了Instrumentation类,这个类提供了计算对象内存占用量的方法.至于具体Instrumentation类怎么用就不说了,可以参看这篇文章如何精确地测量java对象的大小. 不过有一点不同的是,这篇文章使用命令行传入JVM参数来指定代理,这里我通过Eclipse设置JVM参数: 后面的是我打的agent.jar的具体路径.剩下的就…
本文转载自美团技术团队发表的同名文章 https://tech.meituan.com/linux-jvm-memory.html 一, linux与进程内存模型 要理解jvm最重要的一点是要知道jvm只是linux的一个进程,把jvm的视野放大,就能很好的理解JVM细分的一些概念 下图给出了硬件系统进程三个层面内存之间的关系. 从硬件上看,Linux系统的内存空间由两个部分构成:物理内存和SWAP(位于磁盘).物理内存是Linux活动时使用的主要内存区域:当物理内存不够使用时,Linux会把一…
Buffer的数据存取    一个用于特定基本数据类行的容器.有java.nio包定义的,所有缓冲区都是抽象类Buffer的子类.   Java NIO中的Buffer主要用于与NIO通道进行交互,数据是从通道读入到缓冲区,从缓冲区写入通道中的.   Buffer就像一个数组,可以保存多个相同类型的数据.根据类型不同(boolean除外),有以下Buffer常用子类:ByteBuffer.CharBuffer.ShortBuffer.IntBuffer.LongBuffer.FloatBuffe…
这篇说说如何计算Java对象大小的方法.之前在聊聊高并发(四)Java对象的表示模型和运行时内存表示 这篇中已经说了Java对象的内存表示模型是Oop-Klass模型. 普通对象的结构如下,按64位机器的长度计算 1. 对象头(_mark), 8个字节 2. Oop指针,如果是32G内存以下的,默认开启对象指针压缩,4个字节 3. 数据区 4.Padding(内存对齐),按照8的倍数对齐 数组对象结构是 1. 对象头(_mark), 8个字节 2. Oop指针,如果是32G内存以下的,默认开启对…
3.缓冲区大小及限制 影响IP数据报大小的限制. 1)IPv4数据报,最大大小是65535. 2)硬件规定的MTU.以太网的MTU是1500字节.SLIP链路1006字节或296字节 3)路径MTU.两个主机之间路径中最小的MTU.1500字节常见的路径MTU 4)IP数据报>MTU,IPv4执行分片 5)IPv4,DF位被设置(不分片).路由器接收到一个超过其外出链路MTU大小且设置了DF位的IPv4数据报时,它将产生一个ICMPv4"destination unreachable, f…
本帖节选自<Arduino程序设计基础>第二版5.1.6串口缓冲区       在之前的示例程序中,我们都是采用人工输入测试数据的方式检验程序效果,Arduino每接收到一次数据,就会将数据放入到串口缓冲区中.       但是,当我们使用其他串口设备或者传输的数据量逐步增加后,你可能会发现写入的数据会有一些丢失,这是因为Arduino默认设定了串口缓冲区为64字节,当其中数据超过64字节后,Arduino会将之后接收到的数据丢弃.              我们可以通过宏定义的方式来增大串口…