`
sunqi
  • 浏览: 228098 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么。 为方便阅读,我们可以带着以下5个问题来阅读本文: 1、当socket被多进程或者多线程共享时,关闭连接时有何区别? 2、关连接时,若连接上有来自对端的还未处理的消息,会怎么处理? 3、关连接时,若连接上有本进程待发送却未来得及发送出的消息,又会怎么处理? 4、so_linger这个功能的用处在哪? 5、对于监听socket执行关闭,和对处于ESTABLISH这种通讯的socket执行关闭,有何区别?   下面分三部分进行:首先说说多线程多进程关闭连接的区别;再用一幅流程图谈谈c ...
这篇文章将试图说明应用程序如何接收网络上发送过来的TCP消息流,由于篇幅所限,暂时忽略ACK报文的回复和接收窗口的滑动。 为了快速掌握本文所要表达的思想,我们可以带着以下问题阅读: 1、应用程序调用read、recv等方 ...
我们已经建立好的TCP连接,对应着操作系统分配的1个套接字。操作TCP协议发送数据时,面对的是数据流。通常调用诸如send或者write方法来发送数据到另一台主机,那么,调用这样的方法时,在操作系统内核中发生了什么事情呢 ...
编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项目功能点、希望应用代码完全不关心通讯细节。他们更喜欢在OO世界里,去实现某个接口、实现这个组件预定义的各种模式、设置组件参数来达到目的。学习复杂的通讯框架、底层细节,在习惯于使用OO语言的程序员眼里是绝对事倍功半的。以上做法无可厚非,但有一定的局限性,本文讲述的网络编程头前冠以“高性能”,它是指程序员设计编写的服务器需要处理很大的吞吐量,这与简单网络应用就有了质的不同。因为:1、高吞吐量下,容易触发到一些设计上的边界条件;2、 ...

AQS(同步器) 转

    博客分类:
  • java
 
Java.util.concurrent.locks.AbstractQueuedSynchronizer 简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式来操纵状态。然而多线程环境中对状态的操纵必须确保原子性,因此子类对于状态的把握,需要使用这个同步器提供的以下三个方法对状态进行操作: java.util.concurrent.lock ...
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'   具体每种状态什么意思,其实无需多说,看看下面这种图就明白了,注意这里提到的服务器应该是业务请求接受处理的一方:   这么多状态不用都记住,只要了解到我上面提到的最常见的三种状态的意义就可以了。一般不到万不得已的情况也不会去查看网络状态,如果服务器出了异常,百分之八九十都是下面两种情况: 1.服务器保持了大量TIME_WAIT状态 2.服务器保持了大量CLOSE_WAIT状态 因为linux分配给一个用户的文件句柄是有限的(可以参考:
1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面 第一,控制资源的使用,通过线程同步来控制资源的并发访问 第二,控制实例的产生,以达到节约资源的目的 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信 - 2.尽量避免随意使用静态变量 
new Object()将占用多少bytes的内存空间?  原生类型(primitive type)的内存占用Primitive Type             Memory Required(bytes)—————————————————————boolean                      1byte                            1short           
在Sun JVM中,(除了数组之外的)对象都有两个机器字(words)的头部。第一个字中包含这个对象的标示哈希码以及其他一些类似锁状态和等标识信息,第二个字中包含一个指向对象的类的引用。另外,任何对象都是8个字节为粒度进行对齐的。这就是对象内存布局的第一个规则: 规则1:任何对象都是8个字节为粒度进行对齐的。 比如,如果调用new Object(),由于Object类并没有其他没有其他可存储的成员,那么仅仅使用堆中的8个字节来保存两个字的头部即可。 继承了Object的类的内存布局
下图展示了这些术语之间的逻辑关系:一个NUMA node包括一个或者多个Socket,以及与之相连的local memory。一个多核的Socket有多个Core。如果CPU支持HT,OS还会把这个Core看成 2个Logical Processor。为了避免混淆,在下文中统一用socket指代Processor or Socket;为了偷懒,下文中用Processor指代Logical Processor,击键能省则省不是。 查看CPU Topology 本文以笔者能访问的某台Red Hat Enterprise Linux Server release 5.4为例介绍,其他系统请自行 ...
衡量CPU性能的指标: 1,用户使用CPU的情况;CPU运行常规用户进程CPU运行niced processCPU运行实时进程 2,系统使用CPU情况;用于I/O管理:中断和驱动用于内存管理:页面交换用户进程管理:进程开始和上下文切换 3,WIO:用于进程等待磁盘I/O而使CPU处于空闲状态的比率。 4,CPU的空闲率,除了上面的WIO以外的空闲时间 5,CPU用于上下文交换的比率
一.free1.简介:显示系统空闲和已使用内存量2.使用:free -b/k 默认使用-k选项,以KB为单位显示内存使用情况free -m 以MB为单位显示内存使用情况free -g 以GB为单位显示内存使用情况free -s delay(延时) 每隔多少秒连续显示内存使用情 ...
最近在用tomcat来搞servlet异步化请求,当然异步化下异常处理也很重要,servlet3默认带一个监听器,可以监听onComplete,onError,onStartAsync,onTimeout事件,当然onTimeout可以选择在系统server.xml当中Connector 设置asyncTimeout="100"单位是毫秒,如果不设置,默认就是10秒,当然 AsyncContext asyncContext = request.startAsync(); asyncContext.setTimeout(100);  在代码中也可以去设置,tomcat ...
sqoop http://mirror.bit.edu.cn/apache/sqoop/1.4.1-incubating/sqoop-1.4.1-incubating__hadoop-0.20.tar.gz     mysql  http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.20.tar.gz/from/http://mysql.ntu.edu.tw/   安装好 sqoop、hbase。 下载jbdc驱动:mysql-connector-java-5.1.20.jar 将 my ...
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类     1 .Hadoop和Hbase都已经成功安装了 Hadoop集群配置:http://sunqi.iteye.co ...
Global site tag (gtag.js) - Google Analytics