加载中…
个人资料
行者无疆
行者无疆
  • 博客等级:
  • 博客积分:0
  • 博客访问:361
  • 关注人气:6
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
博文
标签:

股票

分类: 数据结构与算法

最近复习了下数据结构中的哈希表,发现在计算等概率情况下查找不成功的平均查找长度时比较迷茫,不知道到底是怎么计算出来的。现在通过查阅资料终于知道如何计算了,所以记录下来以供以后查阅。

 

标签:

佛学

分类: 设计操作系统

Linux 内核采用页式存储管理。虚拟地址空间划分成固定大小的“页面”,由 MMU 在运行时将虚拟地址“映射”成某个物理内存中的地址。与段式存储管理相比,页式存储管理有很多好处。首先,页面都是固定大小的,便于管理。更重要的是,当要将一部分物理空间的内容换出到磁盘上的时候,在段式存储管理中要将整个段 通常很大 都换出,面在页式存储管理中则是按页进行,效率显然要高得多。由于 i386 系列的历史演变过程,它对页式存储管理的支持是在其段式存储管理已经存在了相当长的时间以后才发展起来的。所以,不管程序是怎样写的, i386 微处理器一律对程序中的地址先进行段式映射,然后才能进行页式映射。而 Linux&nbs

标签:

股票

分类: 设计操作系统
标签:

股票

分类: 设计操作系统
标签:

股票

分类: TCP/IP
 常见socket读写异常及错误 

  

EAGAIN的错误:一般是对非阻塞端口读写产生的错误。

1、发送产生:发送缓冲区剩余空间小于发送包大小。可以通过修改 tcp_sendspace,使之大于send中的size参数   ---no -p -o tcp_sendspace=65536 
2、接收产生:errno代码为11,算是异常,等待再次触发读取。

EINTR:errno=4,错误描述Interrupted system call,操作也应该继续。

ECONNABORTED
          该错误被描述为“software caused connecti
标签:

股票

分类: 设计网络库

一、写代码

1)理清整个代码的逻辑,

2)就像自己用汉字一样,将将整个代码的逻辑写出来,最好一气呵成,写完了一个完整的逻辑块以后再去调试

3)每写模块,尽量带一个值进去检查,有没有逻辑的错误

4)

 

二、调试

1)

 

 

如何进行调试:

1)保证所有的线程都在运行

2)上锁和不上锁的效率比较

 

??为什么不出现竞争的情况呢

答:没有在线程函数中使用sleep函数,因为计算执行的速度是非常快的,如果创建第一个线程的时候没有等待sleep一段时间,那么可能还没创建第二个线程的时候,计算就已经达到了

      睡眠设置,对多线程的调试

(2015-05-09 00:05)
标签:

佛学

分类: 汇编/C/CC
摘要:C++是一个恶草丛生的地带,虚拟机制是很重要,但是很危险的一个C++特性,所以有必要对此作一下阐述,希望能对大家有所帮助。

       什么是虚函数
   
简单地说,就是在成员函数前加关键字virtual,这样这个成员函数就变成了虚函数。
    虚函数的思想是从Simula借来得,在C++里面算得上最显著的特征。
    虚函数允许派生类取代基类所提供的实现。编译器确保当对象为派生类时,派生类的实现总是被调用,即使对象是使用基类指针访问而不是派生类的指针。
  
     

标签:

股票

分类: TCP/IP

 

Linux下TCP延迟确认(Delayed Ack)机制导致的时延问题分析_产生原因(延迟确认机制和Nagle算法及拥塞控制),解决办法(收到数据包后setsockopt(fd, IPPROTO_TCP, TCP_QUICKACK, (int*){1}, sizeof(int));)  

 

案例:
        在做Server压力测试时发现,客户端给服务器不断发请求,并接受服务器端的响应。发现接收服务器响应的过程中,会出现recv服务器端响应,阻塞40ms的情况,但是查看server端日志,Server都在2ms内将请求处理完成,并给客户端响应。
 
产生问题的原因:
        TCP的延迟确认(Delayed Ack)机制导致的。

        服务器端是调用send给客户端响应的,send只是把数据存放到TCP的发送缓

分类: TCP/IP
 
TCP建立与断开连接以及错误处理(包括部分小问题)
 
1. TCP建立连接:三次握手,到处都有。需要注意的是ACK确认序列号是SYN携带序列号+1,不是直接相等。基本过程如图所示。
 
socket程序中调用connect将激发三路握手过程,connect将在成功建立连接或者出错才返回。
 
(1) 客户端发送SYN以后,6s没有来自服务器的SYN分节响应,则重发SYN,24s后无响应再重发,75s后无响应则返回错误ETIMEOUT(超时)。
 
(2) 对客户端的响应若是RST,则表明服务器端对应端口没有进程等待与之连接,硬错误,返回ECONNREFUSED错误。
 
(3) 客户发出的SYN在中间路由器发生了“destination unreachable”ICMP错误,客户主机内核保存该信息,按照第一种情况所述时间间隔发送SYN。超时未收到相应,则把保存信息EHOSTUNREACH或ENETUNREACH错误返回给进程
 
(4) connect导致套接字从CLOSED状态转换到SYN_S
标签:

股票

分类: Linux内核
进程的用户栈和内核栈 

进程是程序的一次执行过程。用剧本和演出来类比,程序相当于剧本,而进程则相当于剧本的一次演出,舞台、

灯光则相当于进程的运行环境。

进程的堆栈

每个进程都有自己的堆栈,内核在创建一个新的进程时,在创建进程控制块task_struct的同时,也为进程创建

自己堆栈。一个进程有2个堆栈,用户堆栈和内核堆栈用户堆栈的空间指向用户地址空间,内核堆栈的空间

指向内核地址空间。当进程在用户态运行时,CPU堆栈指针寄存器指向的用户堆栈地址,使用用户堆栈,当进

程运行在内核态时,CPU堆栈指针寄存器指向的是内核栈空间地址,使用的是内核栈;

进程用户栈和内核栈之间的切换

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有