- 博客(42)
- 收藏
- 关注
转载 TCP三次握手四次挥手
如果只有两次握手,此时客户端接收到服务端发来的ACK和SYN,客户端可以确认服务端能够正常的接收和发送数据,而此时服务端无法确认客户端是否能正常接收和发送数据。当客户端发送的SYN报文在网络中阻塞了,会重复发送多次SYN报文,那么服务端在收到请求后就会建立多个重复的无效链接,造成不必要的资源浪费。四次握手的过程就是服务端在接收到客户端发来的SYN请求连接报文后,先发送一个确认应答报文ACK,然后在向客户端发送SYN请求连接报文,客户端收到SYN后向服务端发送一个ACK,到此便是四次握手的过程。
2023-11-28 23:37:01
102
原创 局部性原理和伪共享
例如,两个CPU都读取了内存中的某一数据,该数据和相邻数据就会分别写入两个CPU的Cache中,此时CPU1修改了该数据,则会写入自己的Cache,并不会回写内存,CPU2将无法读到新的数据。于是有了MESI协议:当CPU1修改了Cache中的某数据时,其它CPU都会收到通知,它们的相应Cache Line就被置为无效状态,当其它CPU需要访问此数据时,发现自己的Cache Line数据已失效,这是CPU1会立即把数据写到内存中,其它CPU就会立即从内存中读取该数据。
2023-11-27 02:16:14
199
1
原创 使用零拷贝技术实现消息转发功能
这是一个简单的基于epoll的Linux TCP代理程序,通过匿名管道和零拷贝技术的splice函数,将两个TCP端口相互连接,并转发数据。
2023-11-11 22:51:18
632
原创 一致性哈希算法
假设我们有三台缓存服务器,用于缓存图片,我们为这三台缓存服务器编号为 0号、1号、2号,现在有3万张图片需要缓存,我们希望这些图片被均匀的缓存到这3台服务器上,以便它们能够分摊缓存的压力。也就是说,我们希望每台服务器能够缓存1万张左右的图片,那么我们应该怎样做呢?常见的做法是对缓存项的键进行哈希,将hash后的结果对缓存服务器的数量进行取模操作,通过取模后的结果,决定缓存项将会缓存在哪一台服务器上。
2023-10-10 22:30:42
177
原创 环形缓冲RingBuffer和无锁
环形缓冲区,也被称为循环缓冲区或者环形队列,是一种数据结构类型,它在内存中形成一个环形的存储空间。环形缓冲区的特点是其终点和起点是相连的,形成一个环状结构。这种数据结构在处理流数据和实现数据缓存等场景中具有广泛的应用。环形缓冲区的主要作用是存储和管理数据。它可以存储一定数量的数据,并且在数据存储满后,新的数据会覆盖最早的数据,从而实现了一种“先进先出”(FIFO)的数据管理方式。这种数据结构的优点是可以高效地利用有限的缓存空间,避免内存碎片,并且可以在多线程环境中实现数据的同步处理。
2023-10-09 23:29:03
901
1
转载 linux工具集
Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。IOZone是一款Linux文件系统性能测试工具,可以测试不同的操作系统中文件系统的读写性能。IOTop命令是专门显示硬盘IO的命令,界面风格类似top命令。IPtraf是一个运行在Linux下的简单的网络状况分析工具。iftop是类似于linux下面top的实时流量监控工具。比iptr
2016-07-01 19:06:28
440
转载 emacs配置
;;设置中文显示(set-language-environment 'utf-8)(set-keyboard-coding-system 'utf-8)(set-clipboard-coding-system 'utf-8)(set-clipboard-coding-system 'cn-gb-2312)(set-terminal-coding-system 'utf-8)(set-b
2015-11-02 21:41:59
548
转载 cscope配置
1. 安装 cscope yum install cscope2. 安装 xcscope.el 把 cscope 附带的 xcscope.el 文件放到你的 emacs的 load-path 下,在 ~/.emacs 中增加: (require 'xcscope)3. 生成 project 文件列表,可以用如下命令完成。例如kernel代码,找出所以 .
2015-11-02 21:37:32
558
转载 linux性能测试:其它工具
1. nmonhttp://blog.youkuaiyun.com/stanjiang2010/article/details/5655150http://www.ibm.com/developerworks/cn/aix/library/analyze_aix/http://blog.itpub.net/23135684/viewspace-626439/2. Googl
2015-06-15 20:50:22
448
转载 Linux性能测试:gprof篇
1 简介改进应用程序的性能是一项非常耗时耗力的工作,但是究竟程序中是哪些函数消耗掉了大部分执行时间,这通常都不是非常明显的。GNU 编译器工具包所提供了一种剖析工具 GNU profiler(gprof)。gprof 可以为 Linux平台上的程序精确分析性能瓶颈。gprof精确地给出函数被调用的时间和次数,给出函数调用关系。gprof 用户手册网站 http://sour
2015-06-15 20:41:49
608
转载 修改ecb 2.4对于cedet 1.0的依赖
从ecb官网下载http://sourceforge.net/projects/ecb/下载2.4版本,make后报错ECB can only be used with [1.0pre6, 1.0.9]! Please install it and restart Emacs!因为ecb2.4依赖于cedet1.0,并且做了版本检测。尝试着修改ecb-upgrade.el 文件,将ecb-
2015-06-15 19:32:58
545
转载 【转】国外程序员整理的 C++ 资源大全
关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Template Library:标准模板库C POSIX l
2014-10-24 22:04:13
1122
转载 25个有趣的SSH命令
1、复制SSH密钥到目标主机,开启无密码SSH登录ssh-copy-id user@host如果还没有密钥,请使用ssh-keygen命令生成。2、从某主机的80端口开启到本地主机2001端口的隧道ssh -N -L2001:localhost:80 somemachine现在你可以直接在浏览器中输入http://localhost:2001访问这个网站。3
2014-10-08 20:35:46
667
转载 git使用
1. git 版本控制系统相比CVS\SVN优势:- 支持离线开发,离线Repository- 强大的分支功能,适合多个独立开发者协作- 速度块ps:关于git的更详细的介绍于优点在此就不介绍了,教大家怎么用是关键。:)==============运行环境========系统:windowsgit : Git-1.7.3.1-preview2
2014-09-27 23:51:55
558
转载 linux进程高cpu问题分析
1.用top命令查看哪个进程占用CPU高gateway网关进程14094占用CPU高达891%,这个数值是进程内各个线程占用CPU的累加值。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14094 root 15 0 315m 10m 7308 S
2014-05-19 23:27:40
535
转载 cacti安装与配置
一、准备所需要的软件包Apache http://www.apache.org/Mysql http://www.mysql.com/Php http://www.php.netRrdtool http://oss.oetiker.ch/rrdtool/Net-snmp http://www.net-snmp.org
2014-05-13 17:41:35
591
转载 MongoDB 运行状态、性能监控,分析
这篇文章的目的是让你知道怎么了解你正在运行的Mongdb是否健康。mongostat详解mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态。它的输出有以下几列:inserts/s
2014-05-07 16:08:54
20347
转载 linux下yum源配置
1.确保RHEL5中已经安装了yum[root@lvs-master ~]# rpm -qa |grep yumyum-metadata-parser-1.1.2-3.el5yum-updatesd-0.9-2.el5yum-3.2.22-26.el5yum-security-1.1.16-13.el5yum-rhn-plugin-0.5.4-15.el52.修
2014-03-03 16:21:15
701
转载 tmux配置
# $Id: vim-keys.conf,v 1.2 2010/09/18 09:36:15 nicm Exp $## vim-keys.conf, v1.2 2010/09/12## By Daniel Thau. Public domain.## This configuration file binds many vi- and vim-like bindings
2014-02-28 21:46:14
1104
转载 我的Emacs配置文件
;;用户根目录下,文件名:~/.emacs;;设置中文显示(set-language-environment 'Chinese-GB)(set-keyboard-coding-system 'euc-cn)(set-clipboard-coding-system 'euc-cn)(set-clipboard-coding-system 'cn-gb-2312)(se
2013-03-16 16:30:08
717
转载 Emacs常用命令(精简版)
摘自《Emacs教程中文版》C-v 向前翻一整屏M-v 向后翻一整屏C-l(L) 清楚屏幕并重新显示所有文本,第一次键入把光标移到屏幕中央,第二次键入把光比移到屏幕上方==================================================================================C-f 向前移动一个字
2013-03-15 21:06:16
915
转载 emacs常用命令
Emacs 的命令通常包括控制键(就是上面标有 Ctrl或Ctl的那个)或者是META键(上面标有EDIT或ALT)。为了方便起见我们将用下面的缩写来代替这些键的全称: C- 意思是当敲入字符时同时按住控制键,因此,C-f表 示:按住控制键并且按 f 。 M- 表示当键入时按住META或ALT或EDIT键。如果没有META 或ALT或EDIT键,则用ESC键代替
2013-03-15 20:09:38
813
转载 修改FreeBSD默认的shell
有点不习惯FreeBSD下的csh,虽然可以输入bash临时切换到bash下,但每次都这样来一次,显得比较麻烦,一次搞定他,使用chsh命令来修改FreeBSD默认的shell吧: FreeBSD# whereis bash bash: /usr/local/bin/bash /usr/local/man/man1/bash.1.gz /usr/ports/shells/bash
2013-03-09 17:35:52
2095
转载 IOCP编程注意事项
1、每个连接同时最好只有一个待决的WSARecv。IOCP不保证多个待决WSARecv情况下先投递的WSARecv就一定会先得到完成通知。因此,多个待决WSARecv可能导致数据乱序,无谓增加代码复杂性。 2、投递0长度缓冲区的WSARecv可以不占用非分页内存,避免WSAENOBUFS错误。 3、每个连接同时最好只有一个待决的WSASend。发送数
2013-01-29 17:27:56
2272
转载 IOCP相关的一些总结
1:在IOCP中投递WSASend返回WSA_IO_PENDING的时候,表示异步投递已经成功,但是稍后发送才会完成。这其中涉及到了三个缓冲区。网卡缓冲区,TCP/IP层缓冲区,程序缓冲区。情况一:调用WSASend发送正确的时候(即立即返回,且没有错误),TCP/IP将数据从程序缓冲区中拷贝到TCP/IP层缓冲区中,然后不锁定该程序缓冲区,由上层程序自己处理。TCP/IP层缓冲区在网络合
2013-01-29 16:57:42
787
原创 socket编程
1. TCP/IP协议介绍TCP/IP协议包含的范围非常的广,他是一种四层协议,包含了各种硬件、软件需求的定义。 TCP/IP协议确切的说法应该是TCP/UDP/IP协议。UDP协议(User Datagram Protocol 用户数据报协议),是一种保护消息边界的,不保障可靠数据的传输。TCP协议(Transmission Control Protocol 传输控制协议),是一种流传输的协
2009-02-15 21:19:00
643
转载 Linux下的C编程--文件系统编程
1.Linux文件系统 Linux支持多种文件系统,如ext、ext2、minix、iso9660、msdos、fat、vfat、nfs等。在这些具体文件系统的上层,Linux提供了虚拟文件系统(VFS)来统一它们的行为,虚拟文件系统为不同的文件系统与内核的通信提供了一致的接口。下图给出了Linux中文件系统的关系: 在Linux平台下对文件编程可以使用两类函数
2008-02-19 17:29:00
643
转载 实用小代码之内存泄漏检测
相信很多人在用C语言编写程序时,常常会用到动态内存分配的函数。而使用这样的函数,往往会一不留神就造成内存泄漏。虽然说世面上有很难多检查内存泄漏的工具,功能也很强大。对于简单检测方式,这三个函数,相对来说,还是比较不错的,也是一种解决内存泄漏问题的方法之一吧。 int *_mem_check(void)......{ static int c=0; return(&c);
2008-02-10 02:57:00
719
转载 一个SyncML协议的例子
下面是一个例子,描述同步传输的大体过程。同步传输有七种方式,下面的例子是双向传输,最复杂的一种。首先进行初始的准备工作,然后进行传输,再进行确认。1. 客户端发出同步请求 相当于同步的头文件,基本为固定模式 1.0 SyncML/1.0 1 1 同步初始化时数值为一,相当于第几个回合 目标地址 http://www.syncml.org/sync-server 源地址 IMEI:493005
2007-11-30 22:23:00
4413
转载 嵌入式系统数据同步协议---SyncML协议
概述 SyncML是目前行业通用的移动数据同步化协议。它由SyncML initiative制定,是一种开放性协议。SyncML initiative最初由行业先锋Ericsson, IBM, Lotus, Motorola, Nokia, Palm Inc., Psion, Starfish Software初创,Matsushita最近也加入其中,使其会员达到
2007-11-30 21:44:00
2724
转载 RSS 2.0 规范
什么是RSS? RSS是一种网页内容联合格式(web content sydication format)。 它的名字是Really Simple Syndication的缩写。 RSS是XML的一种。所有的RSS文档都遵循XML 1.0规范,该规范发布在W3C网站上。 在一个RSS文档的开头是一个节点和一个规定的属性version,该属性规定了该文档将以
2007-11-07 14:37:00
536
原创 JDK与TOMCAT环境变量配置
jdk路径:C:/Program Files/Java/jdk1.6.0 tomcat路径:C:/Program Files/Apache Software Foundation/Tomcat 6.0JAVA_HOME: C:/Program Files/Java/jdk1.6.0 PATH: C:/Program Files/Java/jdk1.6.0/bin CLASSPATH: .;C:
2007-09-29 14:28:00
823
转载 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
// search.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "LinkTable.h"#define MAX_KEY 500//------------------------------数组实现部分----------------------
2007-09-28 15:10:00
1899
转载 cookie技术在Java ME平台的应用与实现
Cookie在Web应用程序中被广泛采用,维护浏览器和服务器之间的状态。遗憾的是这一特性在Java ME平台中并没有得到支持。因此,要想维持客户端和服务器端的状态则必须使用URL重写的方式。URL重写操作起来比较麻烦,所以研究一下cookie的原理并在Java ME平台上实现cookie是不错的尝试。首先,我们来看一下cookie的原理。当服务器需要和浏览器维持某一状态的时候,例如需要记录用户的购
2007-09-27 15:05:00
684
转载 J2ME中使用缓存将屏幕内容存储为Image
本文介绍如何将手机屏幕的内容存储为Image对象,这里认为手机屏幕上显示的是一个Canvas。完成这一个功能的思想就是使用缓冲机制。我们不能直接获得Canvas上的像素,因此不能直接从Canvas上的内容获得Image对象。转换一下思路,如果把要绘制的Canvas上的内容首先绘制到一个Image上,而这个Image并不显示到屏幕上,只是在绘画完成后一次性的显示到屏幕上。有经验的朋友
2007-09-27 13:58:00
547
转载 混合字符串在CANVAS中的编排显示
所谓混合字符串就是由中英文+各种标点符号+转义字符构成的字符串。我们在J2ME程序中,很多时候由于需要自己控制UI的风格,所以选择使用CANVAS而不使用FORM等高级界面。但在canvas中,长字符串的显示就需要我们自己根据显示的宽度来进行切割显示。而处理混合字符串就是其中比较复杂的情况。 首先我们要解决的是每行要绘制多少个字符,由于中文字符和英文字符,标点符号的宽度不同。如果
2007-09-27 12:35:00
747
转载 编程语言排行榜
【优快云 9月14日消息】日前国外某编程社区给出了2007年9月份的编程语言排行榜。排名根据语言可用性、课程、第三方数据等来排定,Google、MSN和Yahoo等搜索引擎皆用来评定和评估这个排行榜。 排行榜前20位如下: Sep2007 Sep2006 De
2007-09-26 11:21:00
1419
转载 C++数组应用之特殊矩阵的压缩存储
矩阵: 矩阵是数值程序设计中经常用到的数学模型,它是由 m 行和 n 列的数值构成(m=n 时称为方阵)。在用高级语言编制的程序中,通常用二维数组表示矩阵,它使矩阵中的每个元素都可在二维数组中找到相对应的存储位置。然而在数值分析的计算中经常出现一些有下列特性的高阶矩阵,即矩阵中有很多值相同的元或零值元,为了节省存储空间,需要对它们进行"压缩存储",即不存或少
2007-09-20 03:59:00
998
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人