- 博客(95)
- 资源 (9)
- 收藏
- 关注
转载 tcp/ip三次握手、四次挥手
为什么建立连接是三次握手,而关闭连接却是四次挥手呢? 这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己
2015-08-08 00:05:20 576
转载 secureCRT快捷键
Secure CRT 超爽快捷键 1、打开secureCRT,按alt+b,可以调出快速启动栏,我相信secureCRT的忠实用户,都会保存一堆的sessions。2、按ctrl,可以同时选中多个session,再点击连接,可快速连接。3、打开的第一个标签记为数字1,第二个记为2,依次类推,可用alt+1、alt+2……这种方式在不同标签之间切换。4、
2014-10-29 16:50:44 884
原创 tail
#!/usr/bin/env pythonimport optparseimport osimport sysimport timeclass Error(Exception): passclass FileError(Error): passclass Tail(object): def __init__(self, path, sleep=1.0, reopen_
2014-10-21 16:17:21 729
转载 线程池代码
#include #include #include #include #include #include /**线程池里所有运行和等待的任务都是一个CThread_worker*由于所有任务都在链表里,所以是一个链表结构*/typedef struct worker{ /*回调函数,任务运行时会调用此函数,注意也可声明成其它形式*/ void *(*pro
2014-07-11 16:02:02 670
原创 C++的一些问题
1、typedef map KEYVALUE_HASH_MAP;类似这种定义一个map类型,总是出现 expected initializer before ‘这种错误,究其原因为没有声明map,可以讲map改为std::map。
2013-12-17 11:21:26 702
转载 各种文件的头信息
1、从Ultraedit中提取出来的文件头信息,两个字符算一字节(十六进制)JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 TIFF (tif),文件头:49492A00 Windows Bitmap (bmp),文件头:424D CAD (dwg),文件头:41
2013-12-10 16:43:41 13368 1
原创 私有化析构函数
如果想实现这样的功能:对类所对应的对象所涉及到的内存都释放掉,就需要在析构函数中delete掉对应的对象,为了确保所new出来的对象都是在堆上,就需要把析构函数放到private中,而在public中实现一个类似destroy()的销毁函数,执行delete操作。原理解释:如果析构函数是私有的,在对类实例化的时候,如果对应的对象不是在堆中那么编译器会报错,因为无法直接调用析构函数来进行析构
2013-11-08 17:08:43 1052
原创 ImageMagick--打水印
不得不说,让程序员兴奋的事情就是在苦恼了一天,对着一堆一堆的英文文档看的头晕眼花的时候,终于在一张pdf的角落里找到一个貌似相关能解决问题的几句话,拷贝到代码里,编译、运行。。。。结果正确!!!这是我今天最兴奋的事情。还是那句话,ImageMagick很少有中文文档和资料,还是英文document,还是一个一个的尝试。我今天的任务是给图片打水印,但是我一直出现的结果是:重要代码:ima
2013-11-07 15:54:10 4508
原创 ImageMagick--往图片上写文字
为了在文件上写文字,话费了一天的时间,都快崩溃了,其实可以有两种写法:一种是自己实现,对指定的点进行修改像素值,一种是直接用库中的函数进行写文字;当然所有人都希望用库中的函数,既方便又好用,但是事情的发展总是不如人意,我以为我直接写一个image.annotate("abcok",Geometry("100x100"));就能实现功能,谁知道总是运行错误,调了大半天,处于崩溃边缘,于是,在Magi
2013-11-06 18:13:57 8440
原创 ImageMagick学习中
ImageMagick资料很少,更没有中文文档,我就看的是http://www.imagemagick.org/Magick++/Documentation.html 英文文档我对Image中的每个函数都做了尝试,赶快记录一下,随着以后的了解,会实时更新的// magick_1.cpp : Defines the entry point for the console appl
2013-11-06 11:26:48 4024 1
转载 递归快排
#include "stdio.h"void swap(int *a,int *b){ /*序列中元素位置的交换*/ int tmp; tmp = *a; *a = *b; *b = tmp;}void prin(int k[]){ int i; static int cont = 0
2013-10-07 12:37:42 1087
原创 vs2010解决win32代码编译成x64的错误
我刚接手一个任务,把公司win32上的代码编译为x64,一点没变地编译结果出现了“The following code only works for x86!”这是因为我使用的库中混淆的有win32的库,所以就会出现了这个情况。只需要把所有的静态链接库更改成x64的就可以了。如果直接更改还是不行,就要把vs2010中的属性栏的那些链接重新更改一下,防止vs2010对那些链接地址做的优化或者缓存
2013-09-15 21:01:29 7096 2
原创 我工作的大半年总结
好久没有在csdn上写博客了,在上次的那家搜索引擎公司辞职后来到了一个主打图像处理算法的公司,工作了这一个多月的时间里,我算是没有接触到算法更是没时间写自己所钟爱的算法,这段时间内所做的事情就是把公司以前的框架代码看了一遍,我就是不太擅长看别人的代码,有时候太痛苦了,而且我以前用的是纯C,现在的代码是基于C++的mfc框架,导致我连多线程都不知道怎么用了。(提到这个代码的多线程代码,我感觉限制太多
2013-09-15 20:54:22 780
转载 windows下的一些关于文件的操作
#include "stdlib.h"#include "direct.h"#include "string.h"#include "io.h"#include "stdio.h" #include "iostream.h"class CBrowseDir{protected: //存放初始目录的绝对路径,以'\'结尾 char m_szInitDir[_MAX_PATH];
2013-09-09 17:12:38 627
转载 多线程同步和互斥的实现方法
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify
2013-07-18 10:52:43 1714
转载 shell面试题
1.用Shell编程,判断一文件是不是块或字符设备文件,如果是将其拷贝到 /dev 目录下。 #!/bin/bash#1.sh#判断一文件是不是字符或块设备文件,如果是将其拷贝到 /dev 目录下#file executable: chmod 755 1.shPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/loc
2013-07-18 10:44:47 1294
转载 编写类String的构造函数、析构函数和赋值函数
编写类String的构造函数、析构函数和赋值函数已知类String的原型为: class String { public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~ St
2013-07-17 07:26:34 830
转载 C++基础面试题
1.编写my_strcpy函数,实现与库函数strcpy类似的功能,不能使用任何库函数;答:char *strcpy(char *strDest, const char *strSrc){if ( strDest == NULL || strSrc == NULL)return NULL ;if ( strDest == strSrc)returnstrDest ;ch
2013-07-17 07:14:38 4315
转载 const传奇
作者:Rahul Singh译者声明:有些地方按原文解释不通,译者根据自己的理解作了适当修改。如有不妥之处,请告知coolgrass@sina.com或参考原文。 简介当我自己写程序需要用到const的时候,或者是读别人的代码碰到const的时候,我常常会停下来想一会儿。许多程序员从来不用const,理由是即使没用const他们也这么过来了。本文仅对const的用法稍作探讨,希望能
2013-07-16 22:03:13 586
转载 堆和栈的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态
2013-07-16 13:34:13 863
原创 搜索--md5
MD5是一个加密压缩算法,传说中绝对安全的算法。是一个非可逆的过程。输入:一个字符串输出:一个16字节的字符串MD5保证了输出为不可重复(2004年前)。2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤
2013-05-02 17:47:15 817
原创 索引--优化数据结构--平衡二叉树(avl)
天下文章一大抄,最近在做第二版的搜索引擎,比起第一版总要有很大的改进才行。首先想到的是要对数据结构进行优化,就要把原来“倒排索引--二叉树”http://blog.csdn.net/txgc0/article/details/8697380这边文章中提到的二叉树进行优化,众所周知,单纯的简单二叉树的坏处就怕退化,退化成一条链表后,这查找速度是相当难以让人接受的。平衡二叉树的好处就是
2013-05-02 17:37:48 813
原创 搜索引擎中缓存(cache)用到的哈希(hash)算法
前一段查看了关于哈希的各种算法,发现流传最广的还算伟大的暴雪(dota爱好者)工程师得到的一种算法,有很多博客中都有对其的介绍,我在此就不多废话了。虽说是借鉴,也只是一小部分的抄袭。不知道是否冒犯了暴雪的版权。我修改成了我需要的功能,我的目标是对6w数据进行哈希计算然后暂存到内存中,当做缓存使用。这是搜索引擎中必须要做的一步,当然,代码是公司机密,我只是把我写的代码雏形拿出来,看看有没有值
2013-04-26 11:21:01 2520
原创 从网页输入框获得字符的转码
从网络上接收到的检索词汉字编码是以%开始的十六进制数。而普通的字符还是以ascii码的形式。所以就牵扯到了转码问题,正好我目前所需要的编码方式跟获得的字符串中十六进制对应,所以我的转码就简单多了。 代码:#include #include #include void main(){ char *p="abcd%BB%D8%BC%D2ab%BB%D8%BC%D2";
2013-03-27 17:15:46 985
原创 倒排索引--二叉树
这两天写了一个索引的建立与搜索过程,目前是对13M的数据进行了测试,整个过程只用了不到6s,这个数字是值得庆祝的。算是一个比较快的算法了。在此要感谢wang sir和xu sir的支持。对这两位表示由衷的感谢。整个算法过程对文件中每个字符进行了一次遍历,对每次得到的字符进行建立二叉树(综合考虑,二叉树还是最好的一个数据结构),并且统计总共有多少个字符和每个字符出现的次数,存放在一个数组中,还对
2013-03-20 17:41:49 1693
原创 读取中英文混搭的文件
中英文编码方式不一样,中文是由两个字节组成的字符,而英文是由一个字节组成,而且该字节的首位为0,而如果是中文,中文编码的第一个字节首位是1.这就是最主要的区别。根据这个就可以对中英文混搭的文件进行读取。就是根据你读到的第一个字节是否小于0.下边是一段自己编写的一小段代码,不登大雅之堂,只为抛砖引玉。忘高人指导赐教:#include void main(){ FILE *stream;
2013-03-15 14:47:57 1542
原创 对大数据量进行排序--位图法
题目:对2G的数据量进行排序,这是基本要求。数据:1、每个数据不大于8亿;2、数据类型位int;3、每个数据最多重复一次。内存:最多用200M的内存进行操作。我听过很多种类似问题的解法,有的是内存多次利用,有的用到了外存,我觉得这两种做法都不是比较好的思想,太慢。由于这个题目看起来没有对效率进行约束,所以这两种方法也是对的,但是我这次提出一个比较好的算法来解答此题,如果有更好的做法请赶
2013-03-15 09:23:33 3574
原创 比较有意思的问题
1、不使用if else判断两个数的大小;(a*a/b+b*b/a)/(a/b+b/a)2、不使用sizeof判断一个变量的所占的字节数;3、不使用printf只用putchar输出int型的数据;。。。。后续增加中。。。。
2013-03-09 15:05:30 637
转载 关于链表的一些面试题
题一、给定单链表,检测是否有环。 使用两个指针p1,p2从链表头开始遍历,p1每次前进一步,p2每次前进两步。如果p2到达链表尾部,说明无环,否则p1、p2必然会在某个时刻相遇(p1==p2),从而检测到链表中有环。http://ostermiller.org/find_loop_singly_linked_list.html这篇文章讲了很多好的坏得相关算法。题二、 给定两个
2013-03-06 15:19:32 858
转载 sscanf的高级用法
sscanf函数的高级用法sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。函数原型:int sscanf( const char *format [,argument]... );其中的format可以是一个或多个:{%[*][width][{h|l|I64|L}]type|' '|'\t'|'\n'|非%符号},
2013-03-05 16:04:02 816 2
转载 传输控制协议TCP
6.3 TCP的数据编码与确认 TCP协议采用了许多与数据链路层类似的机制来保证可靠的数据传输,如采用序列号、确认、滑动窗口协议等。只不过TCP协议的目的是为了实现端到端结点之间的可靠数据传输,而数据链路层协议则为了实现相邻结点之间的可靠数据传输。 首先,TCP要为所发送的每一个报文段加上序列号,保证每一个报文段能被接收方接收,并只被正确地接收一次。
2013-03-01 19:21:07 6942 1
原创 不使用sizeof 判断一个数据所占的内存大小
这个是我在笔试一家全英文笔试题的时候,绞尽脑汁才看懂的一个题目。猛的一看这是一个比较DT的问题,一般我们看到关于测一个变量的内存大小就会想到sizeof,但是这次就是不让用sizeof了。就需要发掘新的想法。当初在学习平台那一块知识的时候,讲到bootloader源码的时候似乎提到过一个想法,就是可以使用内存加1后的相减,得出该变量的实际内存大小。而后来我也在网上看到了一个类似的解答。
2013-03-01 16:41:11 1494
原创 判断一个系统的大小端函数
小端:低地址存放地位数据;大端:低地址存放高位数据;而网络中传输是用大端。用代码实现大小端利用了共用体的原理实现判断是比较简单的一个方法:#include union n{ int a; char b;};int main(){ union n ss; ss.a=1; if(ss.b!=0) printf("Little\n"); else
2013-03-01 16:28:08 6892 3
原创 回家后的小米便签
难道我是一个爱学习的人?我活了这二十多年的习惯是,从来不会在家学习。上学上了这么多年,逢年过节,有过无数个假期,每次回家前都是信誓旦旦的说要回家好好看书、学习,结果我的书包在家从来没有打开过,我的书怎么拿回家就怎么拿回学校,这次或许是一个不是意外的意外,因为我看书的地方的确不是在家。我是想到一个问题我就用我的小米便签记录下来,然后想明白了就记下我思想的过程,想不明白就把问题记下来,回头找那几个
2013-01-25 12:09:53 1075
原创 bootloader启动过程详细说明
今天早上看了一上午的bootloader简单源码,终于捋顺了bootloader的执行过程,之前只是知道bootloader代码会先被irom中的代码拷贝到iram中一部分,然后执行这部分代码,会把整个bootloader代码拷贝到sdram中,最终在sdram执行剩下的代码,而这段代码会把kernel拷贝到sdram的某个地址,最终引导起来整个内核。但是我今天早上看代码的时候看到一个问题,我所有
2012-12-30 17:38:56 11813 4
原创 关于nor flash和nand flash启动过程区别
1、比较nor flash 和nand flash:Nor flash :intel推出,一般以64-128kb每块进行擦除,时间约为5s(这是一个很大的数)。带有EBI(三总线)接口,支持线性读取,支持片上程序执行(XIP);虽然擦写速度慢,但是读取速度很快(也许是因为可以进行线性读取);更加稳定,不容易出现位翻转;成本高,相同体积下容量更小;接口简单,操作更方便。N
2012-12-30 11:22:37 6063 1
转载 哈希表
又是一个查找,这个查找思想跟其他的不太一样,是把所有元素都映射到了出来,直接对元素的某一特性的计算,得到它对应的一个存储地址(这个可以存在数组中),到查找的时候,就可以直接对数组名以同样的计算方式算出来存储的地址,可以直接访问该元素。这就形成了一个最有的查找(O(1))。但是在计算过程中出现重复的结果,这个时候就要根据个人爱好选择或者自己规定一种解决方案,比如说再散列法(即有冲突再以其他不同的计算
2012-12-24 21:28:22 701
转载 C 某些库函数中字符串处理函数的具体实现
其中包括:strcpy(char *, char *),strncpy();strcat();strncat();strcmp();strncmp();strchr();strrchr();strlen();strdup();strspn();strpbrk();strtok(); memset();memcpy();memmove();memcmp();memscan();strstr();
2012-12-16 18:32:38 2747
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人