$or操作符
    
            
摘要:【$or操作符】 The$oroperator performs a logicalORoperation on an array oftwo or moreand selects the documents that satisfyat leastone of the. The$orhas th...
        
阅读全文
摘要:【$in 操作符】 The$inoperator selects the documents where the value of a field equals any value in the specified array. $in 选择包含指定值之一的 doc。 If thefiel...
        
阅读全文
摘要:【Redis 字典的实现】注意dict类型使用了两个指针,分别指向两个哈希表。其中, 0 号哈希表(ht[0])是字典主要使用的哈希表, 而 1 号哈希表(ht[1])则只有在程序对 0 号哈希表进行 rehash 时才使用。table属性是个数组, 数组的每个元素都是个指向dictEntry结构的...
        
阅读全文
摘要:【Redis 键空间通知】 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。以下是一些键空间通知发送的事件的例子:所有修改键的命令。所有接收到LPUSH命令的键。0号数据库中所有已过期的键。事件通过 Redis 的订阅与发布功能(pub/sub)...
        
阅读全文
摘要:【Redis 集群二】集群的客户端Redis 集群现阶段的一个问题是客户端实现很少。 以下是一些我知道的实现:redis-rb-cluster是我(@antirez)编写的 Ruby 实现, 用于作为其他实现的参考。 该实现是对redis-rb的一个简单包装, 高效地实现了与集群进行通讯所需的最少语...
        
阅读全文
摘要:【Redis 集群】Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。Redis 集群提供了以下两个好处:将数据自动切分(split)到多个节点的能力。当集群中的一部分节点失效...
        
阅读全文
摘要:【SLAVEOF命令】SLAVEOF host portSLAVEOF命令用于在 Redis 运行时动态地修改复制(replication)功能的行为。通过执行SLAVEOFhostport命令,可以将当前服务器转变为指定服务器的从属服务器(slave server)。如果当前服务器已经是某个主服务...
        
阅读全文
摘要:【Redis AOF文件】1、关于AOFAOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得...
        
阅读全文
摘要:【Redis RDB文件】1、RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。RDB 的优点RDB 是一个非常紧凑(compact)的文件,它保存了 Redis 在某个时间点上的数据集。 这种文件非常适合用于进行备份: 比如说,你可以在最近...
        
阅读全文
摘要:【Redis服务器操作】1、TIME返回当前服务器时间。2、DBSIZE返回当前数据库的 key 的数量。3、LASTSAVE返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示。4、BGSAVE在后台异步(Asynchronously)保存当前数据库的数据到磁盘。B...
        
阅读全文
摘要:【Redis 发布/定阅】1、SUBSCRIBE channel [channel ...]订阅给定的一个或多个频道的信息。2、PSUBSCRIBE pattern [pattern ...]订阅一个或多个符合给定模式的频道。每个模式以*作为匹配符,比如it*匹配所有以it开头的频道(it.news...
        
阅读全文
摘要:【Redis的强大之处】1、拥有对脚本的支持(此处是lua),脚本可选择性的缓存。2、提供HyperLogLog计数器。3、提供5种数据类型的全方位支持:List、Hash、Set、OrderedSet、String。4、 提供GEO地理位置类型的支持。5、提供命令行客户端直接操作数据库。6、支持定...
        
阅读全文
摘要:【Redis Script】1、EVAL script numkeys key [key ...] arg [arg ...]从 Redis 2.6.0 版本开始,通过内置的 Lua 解释器,可以使用EVAL命令对 Lua 脚本进行求值。script参数是一段 Lua 5.1 脚本程序,它会被运行在...
        
阅读全文
摘要:【Redis 集合操作】1、SCARD key返回集合key的基数(集合中元素的数量)。2、SDIFFSTORE destination key [key ...]这个命令的作用和SDIFF类似,但它将结果保存到destination集合,而不是简单地返回结果集。如果destination集合已经存...
        
阅读全文
摘要:【Redis List操作】1、LLEN key返回列表key的长度。如果key不存在,则key被解释为一个空列表,返回0.如果key不是列表类型,返回一个错误。2、MULTI标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由EXEC命令原子性(atomic)地执行。3...
        
阅读全文
摘要:【Redis Scan命令】SCAN cursor [MATCH pattern] [COUNT count]SCAN命令及其相关的SSCAN命令、HSCAN命令和ZSCAN命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements)...
        
阅读全文
摘要:【Redis OBJECT命令】1、OBJECT subcommand [arguments [arguments]]OBJECT命令允许从内部察看给定key的 Redis 对象。它通常用在除错(debugging)或者了解为了节省空间而对key使用特殊编码的情况。当将Redis用作缓存程序时,你也...
        
阅读全文
摘要:【KEY操作续】1、UMP key序列化给定key,并返回被序列化的值,使用RESTORE命令可以将这个值反序列化为 Redis 键。序列化生成的值有以下几个特点:它带有 64 位的校验和,用于检测错误,RESTORE在进行反序列化之前会先检查校验和。序列化的值不包括任何生存时间信息。返回值:如果k...
        
阅读全文
摘要:【Redis Key操作】1、GETSET key value将给定key的值设为value,并返回key的旧值(old value)。当key存在但不是字符串类型时,返回一个错误。2、RENAME key newkey将key改名为newkey。当key和newkey相同,或者key不存在时,返回...
        
阅读全文
摘要:【Redis 位操作】1、GETBIT key offset对key所储存的字符串值,获取指定偏移量上的位(bit)。当offset比字符串值的长度大,或者key不存在时,返回0。2、SETBIT key offset value对key所储存的字符串值,设置或清除指定偏移量上的位(bit)。位的设...
        
阅读全文
摘要:【Redis Set命令】SET key value [EX seconds] [PX milliseconds] [NX|XX]将字符串值value关联到key。如果key已经持有其他值,SET就覆写旧值,无视类型。对于某个原本带有生存时间(TTL)的键来说, 当SET命令成功在这个键上执行时, ...
        
阅读全文
摘要:【Redis 基础操作】1、ECHOmessage。 Returnsmessage. 2、PHING ReturnsPONGif no argument is provided, otherwise return a copy of the argument as a bulk. This c...
        
阅读全文
摘要:【Redis 授权操作】AUTH password 通过设置配置文件中requirepass项的值(使用命令CONFIGSETrequirepasspassword),可以使用密码来保护 Redis 服务器。 如果开启了密码保护的话,在每次连接 Redis 服务器之后,就要使用AUTH命令解锁,...
        
阅读全文
摘要:【Redis Hash操作】1、HSETkeyfieldvalue Setsfieldin the hash stored atkeytovalue. Ifkeydoes not exist, a new key holding a hash is created. Iffieldalready ...
        
阅读全文
摘要:【Varint 数值压缩】 Varint 是一种紧凑的表示数字的方法。它用一个或多个字节来表示一个数字,值越小的数字使用越少的字节数。这能减少用来表示数字的字节数。比如对于 int32 类型的数字,一般需要 4 个 byte 来表示。但是采用 Varint,对于很小的 int32 类型的数字,则可...
        
阅读全文
摘要:【LevelDB Version】 Version保存了当前磁盘以及内存中所有的文件信息,一般只有一个Version叫做"current" version(当前版本)。Leveldb还保存了一系列的历史版本,这些历史版本有什么作用呢? 当一个Iterator创建后,Iterator就引用到了...
        
阅读全文
摘要:【LevelDB Cache机制】 对于levelDb来说,读取操作如果没有在内存的memtable中找到记录,要多次进行磁盘访问操作。假设最优情况,即第一次就在level 0中最新的文件中找到了这个key,那么也需要读取2次磁盘,一次是将SSTable的文件中的index部分读入内存,这样根据这...
        
阅读全文
摘要:【LevelDB Compaction操作】 对于LevelDb来说,写入记录操作很简单,删除记录仅仅写入一个删除标记就算完事,但是读取记录比较复杂,需要在内存以及各个层级文件中依照新鲜程度依次查找,代价很高。为了加快读取速度,levelDb采取了compaction的方式来对已有的记录进行整理压...
        
阅读全文
摘要:【LevelDB 读取记录】 LevelDb是针对大规模Key/Value数据的单机存储库,从应用的角度来看,LevelDb就是一个存储工具。而作为称职的存储工具,常见的调用接口无非是新增KV,删除KV,读取KV,更新Key对应的Value值这么几种操作。LevelDb的接口没有直接支持更新操作的...
        
阅读全文
摘要:【LevelDB 写入与删除记录】 levelDb的记录更新操作,即插入一条KV记录或者删除一条KV记录。levelDb的更新操作速度是非常快的,源于其内部机制决定了这种更新操作的简单性。 图6.1是levelDb如何更新KV数据的示意图,从图中可以看出,对于一个插入操作Put(Key,Va...
        
阅读全文
摘要:【SkipList】1、插入操作。 由于跳表数据结构整体上是有序的,所以在插入时,需要首先查找到合适的位置,然后就是修改指针(和链表中操作类似),然后更新跳表的level变量。 boolean insert(l,key,value) register list l; regis...
        
阅读全文
摘要:【LevelDb日知录之五:MemTable详解】 LevelDb日知录前述小节大致讲述了磁盘文件相关的重要静态结构,本小节讲述内存中的数据结构Memtable,Memtable在整个体系中的重要地位也不言而喻。总体而言,所有KV数据都是存储在Memtable,Immutable Memtable...
        
阅读全文
摘要:【LevelDB SSTable文件】 LevelDb不同层级有很多SSTable文件(以后缀.sst为特征),所有.sst文件内部布局都是一样的。上节介绍Log文件是物理分块的,SSTable也一样会将文件划分为固定大小的物理存储块,但是两者逻辑布局大不相同,根本原因是:Log文件中的记录是Ke...
        
阅读全文
摘要:【LevelDB Log文件】 log文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据。因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的数据没有来得及Dump到磁盘的SSTable文件,LevelDB也可以根据log文...
        
阅读全文
摘要:【LevelDB 整体架构】 从图中可以看出,构成LevelDb静态结构的包括六个主要部分:内存中的MemTable和Immutable MemTable以及磁盘上的几种主要文件:Current文件,Manifest文件,log文件以及SSTable文件。当然,LevelDb除了这六个主要部...
        
阅读全文
摘要:【磁盘】 磁盘是一个扁平的圆盘(与电唱机的唱片类似)。盘面上有许多称为磁道的圆圈,数据就记录在这些磁道上。磁盘可以是单片的,也可以是由若干盘片组成的盘组,每一盘片上有两个面。 如下图11.3中所示的6片盘组为例,除去最顶端和最底端的外侧面不存储数据之外,一共有10个面可以用来保存信息。 ...
        
阅读全文
摘要:【LevelDB Filters】 Because of the wayleveldbdata is organized on disk, a singleGet()call may involve multiple reads from disk. The optionalFilterPolic...
        
阅读全文
摘要:【LevelDB Cache】 The contents of the database are stored in a set of files in the filesystem and each file stores a sequence of compressed blocks. Ifo...
        
阅读全文
摘要:【LevelDB 的缺憾】1、Snapshots 只能通过 DB::GetSnapshot() 创建,意即只能创建当下的 Snapshot。2、
        
阅读全文
摘要:【linux 同步IO: sync、fsync与fdatasync】 传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要...
        
阅读全文
摘要:【Common Lisp】 1、操作符是什么? 2、quote。 3、单引号是quote的缩写。 4、car与cdr方法。 5、古怪的if语句。 6、and语句。 7、判断是真假。 null 与 not 方法。 8、递归。 9、缩排。
        
阅读全文
摘要:【函数式编程初探】1. 函数是"第一等公民"所谓"第一等公民"(first class),指的是函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值。2. 只用"表达式",不用"语句""表达式"(expression)是一个单纯的运算过程...
        
阅读全文
摘要:【TCP_NODELAY】 TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,这里我们主要讲TCP_NODELAY.Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。JohnNagle是Nagle算法的发明人,后者就是用他的名字来命名的,他在1984年...
        
阅读全文
摘要:【什么是First-class citizen?】 Inprogramming language design, afirst-class citizen(alsotype,object,entity, orvalue) in a givenprogramming languageis an en...
        
阅读全文
摘要:【SQL】 数据库表,一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。下面的例子是一个名为 "Persons" 的表: SQL 对大小写不敏感!SQL DML 和 DDL可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数...
        
阅读全文
摘要:【ADO.NET】 ADO.NET provides consistent access to data sources such as SQL Server and XML, and to data sources exposed through OLE DB and ODBC.. Data-...
        
阅读全文
摘要:【外码】 ⑴主码是表中的一列或多列的组合,它的值唯一标识了表中的一行记录 ⑵外码是这样的一列或多列的组合,它存在于表1中,但不是表1的主码;它同时存在于表2中,而且是表2的主码,于是称这一列或多列的组合是表1相对于表2的外码。
        
阅读全文
摘要:【CWinApp: The Application Class】 An application built on the framework must have one and only one object of a class derived fromCWinApp.This object i...
        
阅读全文
摘要:【股票F10】 股票非行情类的基本面资料统称为股票F10 在各种金融行情终端软件中,用户通过键盘上的F10快捷键,可迅速查看上市公司的非行情信息,诸如:公司概况、财务数据、公司公告、公司新闻、经营分析等等信息数据[1]。
        
阅读全文
摘要:【什么是盘口?】 盘口上包括了股票当天的走势状况,主要包括五个部分:1、委托比;2、五档买卖挂单;3、开盘价收盘价、涨跌幅、最低最高价、量比、内外盘、总成交量;4、换手率、总股本流通股本、净资产、收益、动态市盈率;5、买卖成交单;以下阿早班车将会为您介绍一下个人感觉比较好用的方法和技巧。
        
阅读全文
摘要:【CompletionPort】1、CreateIoCompletionPort。此方法用于创建与绑定。此方法调用后,socket即退出,只能通过CompletionKey来辨认是哪个socket的消息。 CompletionKey是自定义数据,用于区分FileHandle。 NumberO...
        
阅读全文
摘要:【WSAEvent】1、WSACreateEvent。创建WSA事件。2、WSAEventSelect。 lNetworkEvents[in] A bitmask that specifies the combination of FD_XXX network events in which...
        
阅读全文