
网络编程
大树叶
宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒。
展开
-
CLOSE_WAIT状态的原因与解决方法
这个问题之前没有怎么留意过,是最近在面试过程中遇到的一个问题,面了两家公司,两家公司竟然都面到到了这个问题,不得不使我开始关注这个问题。说起CLOSE_WAIT状态,如果不知道的话,还是先瞧一下TCP的状态转移图吧。关闭socket分为主动关闭(Active closure)和被动关闭(Passive closure)两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机转载 2016-04-29 01:19:10 · 3857 阅读 · 0 评论 -
NIO Selector
SelectorSelector允许单线程处理多个Channel,能够检测一到多个Channel,并能够知晓通道是否为诸如读写事件做好准备。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。如果你的应用打开了多个连接(通道),但每个连接的流量都很低,使用Selector就会很方便。例如,在一个聊天服务器中。这是在一个单线程中使用一个Selector处理3个Cha转载 2016-05-03 13:50:30 · 482 阅读 · 0 评论 -
Java 并发工具包 java.util.concurrent 大全
1. java.util.concurrent - Java 并发工具包Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前,你需要自己去动手实现自己的相关工具类。本文我将带你一一认识 java.util.concurrent 包里的这些类,然后你可以尝试着如何转载 2016-05-03 13:54:43 · 991 阅读 · 0 评论 -
Netty:JBOSS的 JAVA NIO开发开源框架
Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户,服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的原创 2016-05-13 21:21:18 · 6713 阅读 · 0 评论 -
amazon 股票的最佳买入和卖出点
/* * File: stock_price.cpp * Author: hongbin * 给出一个股价序列,求出最佳的买入和卖出点, 也就是求序列后面的元素跟前面元素的最大值。 */#include #include #include #include #include using namespace std;//O(N^2)bool find_max_pr原创 2016-05-14 13:15:25 · 813 阅读 · 0 评论 -
TCP 的那些事儿(上)
原文地址:点击打开链接TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另外,本文我会使用英文术语,这转载 2016-05-05 09:57:14 · 759 阅读 · 0 评论 -
TCP 的那些事儿(下)
原文地址:点击打开链接这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的各种思转载 2016-05-05 09:59:29 · 736 阅读 · 0 评论 -
SYN Cookie的原理和实现
本文主要内容:SYN Cookie的原理,以及它的内核实现。内核版本:3.6Author:zhangskd @ csdn blog SYN Flood下面这段介绍引用自[1].SYN Flood是一种非常危险而常见的Dos攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,SYN Cookie就是其中最著名的一种。 SYN Flood攻转载 2016-05-05 10:38:39 · 1497 阅读 · 0 评论 -
SOCKET API和TCP STATE的对应关系
在我们学习网络基础时,传输层的协议有TCP和UDP,在Linux网络编程中,我们使用socket API,实现网络通信。那么: socket API 和 TCP 协议中各个状态是如何对应的呢?我们可以通过下图来看: 在socket系统调用中,如何完成三次握手和四次挥手: SOCK_DGRAM,即UDP中的connect操作知识在内原创 2016-05-05 11:23:39 · 1878 阅读 · 0 评论 -
mysql 临时表 效率问题改进
问题:近日,线上mysql查出一个慢sql,每次都要查询1000ms以上,严重影响用户体验今得空去诊断一番,记录如下:sql原句:SELECT r.object_id AS cardId, count(1) AS attachs FROM hzresource_object r LEFT JOIN ( SELECT card_id FROM card_member转载 2016-05-08 17:20:57 · 3461 阅读 · 3 评论 -
了解一下幂等
http://macrochen.iteye.com/blog/678683转载 2016-12-02 16:02:23 · 469 阅读 · 0 评论 -
网页中怎样禁止通过输入url直接访问
通常的做法是这样的:在登录页(比如说是login.asp)登陆成功后,要把登陆成功的状态赋值给一个Session变量,比如 Session("login")="OK",然后在除登录页之外的其他页面的开头都检测这个Session变量的值,不是登录状态即立刻强制跳转到登录页面,比如:if session("login")这样的话,除登录页之外的其他页面如果想通过地址栏直接输入URL进入都会被强原创 2017-05-26 01:17:27 · 10104 阅读 · 2 评论 -
select、poll、epoll之间的区别总结
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用...转载 2018-03-06 00:49:50 · 258 阅读 · 0 评论 -
SocketChannel API用法
java.nio.channels类 SocketChanneljava.lang.Object java.nio.channels.spi.AbstractInterruptibleChannel java.nio.channels.SelectableChannel java.nio.channels.spi.AbstractSelectableCh原创 2016-05-03 11:45:48 · 3171 阅读 · 0 评论 -
ServerSocketChannel API用法
java.nio.channels类 ServerSocketChanneljava.lang.Object java.nio.channels.spi.AbstractInterruptibleChannel java.nio.channels.SelectableChannel java.nio.channels.spi.AbstractSelect转载 2016-05-03 11:43:16 · 820 阅读 · 0 评论 -
linux 解决大量SYN_RECV CLOSE_WAIT
[root@localhost ~]# netstat -nat | awk '/^tcp/{++S[$NF]}END{for (a in S) print a,S[a]}'[root@localhost ~]# netstat -antActive Internet connections (servers and established)Proto Recv-Q Send-Q Lo转载 2016-04-29 01:21:42 · 7701 阅读 · 0 评论 -
linux 下Time_wait过多问题解决
自己开发了一个服务器和客户端,通过短连接的方式来进行通讯,由于过于频繁的创建连接,导致系统连接数量被占用,不能及时释放。看了一下18888,当时吓到了。现象:1、外部机器不能正常连接SSH2、内向外不能够正常的ping通过,域名也不能正常解析。问题排查:通过 netstat -anp | grep TIME_WAIT | wc -l 命令查看数量,发现TIME转载 2016-04-29 13:17:29 · 1371 阅读 · 0 评论 -
CLOSE_WAIT状态的讨论
摘要:本文阐述了为何socket连接锁定在CLOSE_WAIT状态,以及通过什么措施力求避免这种情况。不久前,我的Socket Client程序遇到了一个非常尴尬的错误。它本来应该在一个socket长连接上持续不断地向服务器发送数据,如果socket连接断开,那么程序会自动不断地重试建立连接。有一天发现程序在不断尝试建立连接,但是总是失败。用netstat查看,这个程序竟然有上千个sock原创 2016-04-29 01:22:55 · 578 阅读 · 0 评论 -
TCP协议中的SO_LINGER选项
SO_LINGER选项用来设置延迟关闭的时间,等待套接字发送缓冲区中的数据发送完成。没有设置该选项时,在调用close()后,在发送完FIN后会立即进行一些清理工作并返回。如果设置了SO_LINGER选项,并且等待时间为正值,则在清理之前会等待一段时间。以调用close()主动关闭为例,在发送完FIN包后,会进入FIN_WAIT_1状态。如果没有延迟关闭(即设置SO_LINGER选项)原创 2016-04-29 13:47:59 · 650 阅读 · 0 评论 -
exit()与_exit()的区别
从图中可以看出,_exit 函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构;exit 函数则在这些基础上做了一些小动作,在执行退出之前还加了若干道工序。exit() 函数与 _exit() 函数的最大区别在于exit()函数在调用exit 系统调用前要检查文件的打开情况,把文件缓冲区中的内容写回文件。也就是图中的“清理I/O缓冲”。 所需头文件: e转载 2016-04-29 15:04:08 · 377 阅读 · 0 评论 -
linux 僵死进程及其处理方法
一、什么是僵死进程?一般情况下,程序调用exit(包括_exit和_Exit,它们的区别这里不做解释),它的绝大多数内存和相关的资源已经被内核释放掉,但是在进程表中这个进程项(entry)还保留着(进程ID,退出状态,占用的资源等等),你可能会问,为什么这么麻烦,直接释放完资源不就行了吗?这是因为有时它的父进程想了解它的退出状态。在子进程退出但还未被其父进程“收尸”之前,该子进程就是僵死进程,原创 2016-04-29 14:51:47 · 8757 阅读 · 0 评论 -
linux TCP 和 socket 参数设置
tcp_syn_retries :INTEGER默认值是5对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。(对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接,是由tcp_retries1 决定的)tcp_synack_retries :INTEGER默认值是原创 2016-04-30 00:37:41 · 10184 阅读 · 0 评论 -
Java NIO详细介绍
不错的文章,推荐一下。http://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.htmljava nio的io模型是同步非阻塞,这里的同步异步指的是真正io操作(数据内核态用户态的拷贝)是否需要进程参与。而说java nio提供了异步处理,这个异步应该是指编程模型上的异步。基于reactor模式的原创 2016-05-03 01:11:02 · 396 阅读 · 0 评论 -
JAVA: Socket和ServerSocket网络编程
面是本次学习的笔记。主要分异常类型、交互原理、Socket、ServerSocket、多线程这几个方面阐述。 异常类型在了解Socket的内容之前,先要了解一下涉及到的一些异常类型。以下四种类型都是继承于IOException,所以很多之后直接弹出IOException即可。UnkownHostException: 主机名字或IP错误ConnectExceptio转载 2016-05-03 10:22:32 · 508 阅读 · 0 评论 -
SelectionKey API用法
java.nio.channels类 SelectionKeyjava.lang.Object java.nio.channels.SelectionKey直接已知子类: AbstractSelectionKey public abstract class SelectionKeyextends Object表示 SelectableChannel 在 S转载 2016-05-03 11:35:55 · 3864 阅读 · 0 评论 -
SelectableChannel API 用法
java.nio.channels类 SelectableChanneljava.lang.Object java.nio.channels.spi.AbstractInterruptibleChannel java.nio.channels.SelectableChannel所有已实现的接口: Closeable, Channel, InterruptibleCha原创 2016-05-03 11:37:19 · 1356 阅读 · 0 评论 -
Selector API用法
java.nio.channels类 Selectorjava.lang.Object java.nio.channels.Selector直接已知子类: AbstractSelector public abstract class Selectorextends ObjectSelectableChannel 对象的多路复用器。 可通过调用此类的 o转载 2016-05-03 11:40:15 · 1856 阅读 · 0 评论 -
新浪微博架构的演进
http://tech.sina.com.cn/i/2010-11-16/17574872122.shtmlhttp://news.csdn.net/a/20100726/277273.htmlhttp://www.infoq.com/cn/articles/ywh-sina-mini-blog-arch大家下午好,在座的大部分都是技术开发者,技术开发者往往对微博这个产品非常关心。最晚的一次,是1...转载 2018-04-01 16:44:55 · 2727 阅读 · 0 评论