编程
itegel84
这个作者很懒,什么都没留下…
展开
-
memcpy和memmove
<br />下面是一个memcpy的结构体的复制,有点类似于C++中调用类的拷贝构造函数,用一个对象去初始化另一个对象!<br />例:<br />#include "stdio.h"<br />#include "string.h"<br />void main(void)<br />{<br />struct student<br />{<br /> char *name;<br /> int age;<br />}stu1={"wangqiao",24};<br />struct stud转载 2010-07-05 09:11:00 · 723 阅读 · 0 评论 -
异步编程几种模式
callback事件监听pub/subpromise消息队列是典型的pub/sub模式实现,典型的如kafka。回调是最原始的。事件驱动这个对于GUI或JS这些里很常见。promise是把callback等顺序化,可以更直观的维护各种回调逻辑。可能有偏见,暂时没看到有啥特别之处,当然也是因为没有用过。回调可能会失败,失败时候就需要重试。重试策略怎么维原创 2016-05-19 15:29:26 · 989 阅读 · 0 评论 -
fastbit 基于bitmap的索引,看着很牛X的样子,先记录
https://sdm.lbl.gov/fastbit/stBit is an open-source data processing library following the spirit of NoSQL movement. It offers a set of searching functions supported by compressed bitmap inde转载 2014-09-01 10:05:05 · 1997 阅读 · 0 评论 -
vector resize和reserve区别
<br />reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。<br />resize是改变容器的大小,并且创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。<br />再者,两个函数的形式是有区别的,reserve函数之后一个参数,即需要预留的容器的空间;resize函数可以有两个参数,第一个参数是容器转载 2011-04-02 15:41:00 · 4029 阅读 · 2 评论 -
python去掉行尾'\n'
fold_in=open('diff_query.txt','r')for i in fold_in: i=i.strip('\n')似乎是我的第一行python脚本...纪念一下。原创 2012-08-29 15:03:04 · 10188 阅读 · 0 评论 -
抽屉原理与Simhash
抽屉原理:把多余N个物体反倒N个抽屉, 至少有一个抽屉里的物体数不少于两件。simhash:如果两个输入(文档)越相似,其哈希值越相近。具体哈希算法,可以百度一下,也比较简单。那么抽屉原理和simhash有什么关系呢?他俩一般组合起来用,通常用于文档判重上。最著名的当然是google用于网页判重上。定义两个文档相似为两个文档simhash值海明距离(二进制数不同的位数)小与原创 2012-08-03 14:16:12 · 2420 阅读 · 0 评论 -
Makefile中的预定义变量
好不容易找到的,先记录下来^_^ 含义 $* 不包含扩展名的目标文件名称。 $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。 $ 第一个依赖文件的名称。 $? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。 $@原创 2012-07-16 11:28:17 · 824 阅读 · 0 评论 -
找出数组中第k个元素
好久没写代码了,练练手。从其他地方看的,其实思想跟快排一样,不过只是找第K个元素,所以不用全部都排序。复杂度号称是O(N),不过算上交换,我觉得实际上是比O(要大的)。交换代价应该比比较要大。#include using namespace std;int count_cmp = 0;int count_swp = 0;void swap(int &a,int &b){ i原创 2012-01-31 14:56:19 · 1105 阅读 · 0 评论 -
stl hash_map原理
1 数据结构:hash_map原理这是一节让你深入理解hash_map的介绍,如果你只是想囫囵吞枣,不想理解其原理,你倒是可以略过这一节,但我还是建议你看看,多了解一些没有坏处。<br />hash_map基于hash table(哈希表)。哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。<br />其基本原理是:使用一个下标范转载 2011-04-02 11:38:00 · 1912 阅读 · 0 评论 -
MapReduce
MapReduce 百科名片 mapreduce结构示意图MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(化简)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同转载 2011-03-08 15:00:00 · 496 阅读 · 0 评论 -
自己写的一个ASSERT宏
<br /><br />//带返回值的ASSERT<br />#define R_ASSERT(EXP, RET)/<br /> if (!(EXP)){/<br />UB_LOG_WARNING("R_ASSERT(%s) failed! file:%s, line:%d.", #EXP, __FILE__, __LINE__);/<br />return RET;/<br /> }原创 2011-02-14 11:21:00 · 589 阅读 · 0 评论 -
CppUnit用例访问被测类私有&保护成员的解决方案
<br />1. 方案意义 <br />以前测试类访问被测类的私有、保护成员的方法是在被测类中声明测试类为它的友元类,这种方法有一个很不好的缺陷:需要修改正式代码。<br />本方案便是解决此问题的。此方案的思想是包向信原创,之后又与陈国栋讨论,解决了private成员访问问题、使用链接库时的静态成员链接问题,最后再整理出来的易于操作的实施办法。<br />注:如果您对访问权限不关心,可以直接参见“其它方案”中提供的更加简单、有效的解决方案。<br />2. 方案简述 <br />1) 从被测类(CBeTe转载 2010-11-25 14:11:00 · 862 阅读 · 0 评论 -
后缀数组
<br />转自:<br />后缀数组(Suffix Array)——理论和思想<br /> 这一篇和下一篇博文我准备写一下我在参加ACM/ICPC期间曾经研究过的后缀数组。关于后缀数组,网上有很多英文资料,但是很多现在的研究结果都是受1991年Udi Manber & Gene Myers的《Suffix arrays: a new method for on-line string searches》中所提的方法的启发,采用倍增的思想。当然,现在有国外学者提到的三分+分治的线性构造方法除外。<br /转载 2010-11-18 19:53:00 · 6886 阅读 · 2 评论 -
字符串检索
<br />前缀匹配:trie树<br />匹配:后缀树,后缀树组原创 2010-11-16 11:16:00 · 758 阅读 · 0 评论 -
简单.bat文件编写
<br />我想着里面的程序可以说是最简单,最实用的了。不要看他简单,一些简单的病毒就是用这种批处理来实现的<br />当我们得到一个批处理文件的时候用记事本打开里面的代码,看上去有些简单,而且很容易懂,不过我还是想说一下,当作灌水吧.<br />我们来看看命令表<br />命令 功能<br />CALL 用来调用另外的批处理程序<br />CHOICE 使批处理程序等待某个健 (DOS6.X出现的命令)<br />ECHO 显示信息或允许/禁止COMMAND.COM程序的命令回显<br />FOR 对一组原创 2010-10-10 22:20:00 · 2539 阅读 · 0 评论 -
CFileDialog类应用详解(好久不用MFC了...)
<br />CFileDialog文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: <br />CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pP转载 2010-11-30 15:53:00 · 875 阅读 · 0 评论 -
pthread_join函数及linux线程
<br />pthread_join使一个线程等待另一个线程结束。 代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。 所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self()函数可以获得自身的线程号。 下面说一下如何创建一个线程。 通过创建线程,线程将会执行一个线程函数,该线程格式必转载 2010-08-13 15:23:00 · 573 阅读 · 0 评论 -
网络编程常见问题总结
来源http://yaocoder.blog.51cto.com/2668309/897030/网络编程常见问题总结 串讲(一) 网络编程常见问题总结 6 I& I! E- x8 Z+ p- U- B 在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出. .转载 2017-05-12 18:18:07 · 1681 阅读 · 0 评论