`
king_c
  • 浏览: 213745 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表

SkipList 跳表

为什么选择跳表 目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。   想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树 出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树, 还要参考网上的代码,相当麻烦。   用跳表吧,跳表是一种随机化的数据结构,目前开源软件 Redis 和 LevelDB 都有用到它, 它的效率和红黑树以及 AVL 树不相上下,但跳表的原理相当简单,只要你能熟练操作链表, 就能轻松实现一个 SkipList。

c++引用计数的本质

 
为什么要用引用计数?         场景:代码里X是一个非常重要的资源,模块A,B,C都有对其指针的引用,那么为了不出现内存泄露,常规的代码我们要怎么写?                1. A 模块用完X时,需要检查B,C是否还在引用X,如果B,C有一个在用,那么X只要删除掉对A的引用就可以了,                   如果B,C对A都已经没有引用了,那么A需要删除对X的引用时,要同时清除掉X。                2.同样B,C在用完X时,也要重复做1里面的事情。                  这样,代码将会多了许多的逻辑判断,同时模块B,C还需要对模 ...
The “Java Decompiler project” aims to develop tools in order to decompile and analyze Java 5 “byte code” and the later versions. JD-Core is a library that reconstructs Java source code from one or more “.class” files. JD-Core may be used to recover lost source code and explore the source of Java r ...
        之前学习OpenCV时是从于老师的书本教材开始的,所以一直使用的接串口就全是其于C的,但越使用越觉得C接口不其方便,再者使用C++应当是大的趋势所向,所以,又只好对相应的C++接口进行学习和使用,真心烦燥! 浪费了一些时间不说,关键是c++接口中的一些函数的使用和要求,与C的有些出入,按之前C的方法去使用,有时会出些莫名的问题,解决起来老费劲!         之前的笔记也记,只不过是,不是记在所看文档上,就是记录在Word里,现在起打算把这些经验和记录放在这里,希望能与路过的朋友多多交流,共同提高,呵呵。         今天就讲讲reduce() 和 findConto ...
1、在要打印调试的类中加上头文件   #include <io.h>//Rain  用来输出调试信息 #include <fcntl.h>//Rain   2、加入一个方法   void InitConsoleWindow()//Rain  { int nCrt = 0; FILE* fp; AllocConsole(); nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT); fp = _fdopen(nCrt, "w"); *std ...
最近一直在做相关推荐方面的研究与应用工作,召回率与准确率这两个概念偶尔会遇到,知道意思,但是有时候要很清晰地向同学介绍则有点转不过弯来。召回率和准确率是数据挖掘中预测、互联网中的搜索引擎等经常涉及的两个概念和指标。召回率:Recall,又称“查全率”——还是查全率好记,也更能体现其实质意义。准确率:Precision,又称“精度”、“正确率”。以检索为例,可以把搜索情况用下图表示:
#include <iostream> #include <vector> #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace std; using namespace cv; int main() { // Read input binary image Mat image= imread(" ...
 PHP获取当前类名、方法名__CLASS__           获取当前类名__FUNCTION__     当前函数名(confirm)__METHOD__        当前方法名 (bankcard::confirm)   __FUNCTION__      函数名称(PHP 4.3.0 新加)。 自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。__CLASS__    类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。__METHOD_ ...
<p><span style="font-family: Arial; font-size: 14px; color: #333333; line-height: 26px;"> <p>支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决<strong>小样本</strong> 、<strong>非线性</strong>及<strong>高维模式识别</strong> 中表现出许多特有的优势,并能够推广应 ...
分页程序原理很简单,这里就不多说了,本篇文章主要说的是在数据表记录量比较大的情况下,如何将分页SQL做到更优化,让MySQL执行的更快的方法。 一般的情况下,我们的分页SQL语句是这样的: 查看代码
一).Epoll 介绍 Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select 相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘的。其实在 Linux 下设计并发网络程序,向来不缺少 ...
  今天在使用fopen的时候,遇到了fseek(fp,0,SEEK_END); 然后想在文件的头部修改信息,但是无论如何都无法修改,而只会在文件的最后append,最后发现了问题如下:   FILE *fp = fopen(_db_file,"ab+);     的文件用ab+方式打开,a的意思就是追加,声明原内容不会变化。 如果要修改原有内容,应该以rb+方式打开,这种方式,也可以向末尾追加内容。
  一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。     C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。 请看下面的程序。   #include <iostream>; using namespace std; class T { pub ...

MySQL性能优化点

1. 为查询缓存优化你的 sql query 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。 这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例: // 查询缓存不开启 $r = mysql_query("SELECT username FROM user WHER ...
     一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。        一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:   1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。   2、单调性(Monotonic ...
Global site tag (gtag.js) - Google Analytics