数据结构和算法学习
ctreewang
这个作者很懒,什么都没留下…
展开
-
插入排序算法学习——算法导论学习笔记
今天第一次写算法的笔记,从今天开始正式步入学习算法的行列。白天的时间保质保量的把工作完成,然后就是开始学习unix环境高级编程,还有就是算法了。学习要思考,要总结,才能有收获。回归正题。插入排序 来一个例子排序的过程如下:给定无需序列:(3,6,9,7,1,8,2,4)原创 2011-08-02 08:18:43 · 1163 阅读 · 0 评论 -
FastDFS概述
本篇文章是我上级老大所写。 留在这里为了不弄丢。FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux, FreeBSD等UNIX系统类google FS, 不是通用的文件系统,只能够通过专有API访问,目前提供了C,Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key-val原创 2014-10-08 11:08:39 · 21150 阅读 · 5 评论 -
redis源码解读之哈希接口————dict.h文件
这篇文章主要是介绍redis的哈希的原创 2014-05-04 13:03:12 · 3097 阅读 · 2 评论 -
NoSQL数据库笔谈(转)
序思想篇CAP最终一致性变体BASE其他I/O的五分钟法则不要删除数据RAM是硬盘,硬盘是磁带Amdahl定律和Gustafson定律万兆以太网手段篇一致性哈希亚马逊的现状算法的选择Quorum NRWVector clockVirtual nodegossipGossip (State Transfer Model)转载 2015-05-24 18:11:37 · 5647 阅读 · 0 评论 -
数据库排名sql,group by 分组查询按照时间最大值
先给出类似的简单表DROP TABLE IF EXISTS `TouTiaoAnchor`;CREATE TABLE `TouTiaoAnchor` ( `HourId` int(10) unsigned NOT NULL, `BetinTime` varchar(40) NOT NULL, `AnchorUid` int(11) unsigned NOT NULL, `ti原创 2015-07-10 19:26:23 · 17409 阅读 · 1 评论 -
内存数据库中的索引技术
引言 传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称作磁盘数据库(DRDB: Disk-Resident Database)。磁盘数据库需要频繁地访问磁盘来进行数据的操作,磁盘的读写速度远远小于CPU处理数据的速度,所以磁盘数据库的瓶颈出现在磁盘读写上。 基于此,内存数据库的概念被提出来了。内存数据库(MMDB:Main Memory Database,也叫主存数据转载 2015-08-30 17:49:36 · 2178 阅读 · 0 评论 -
直播间架构设计
趁着十一后,事情相对少,我来总结一下YY娱乐后台的整体结构。首先,娱乐后台都是基于公司的一整套分布式框架来进行开发的。内部的网络层代码都是基于C++实现的,封装了epoll的 非阻塞的网络操作。详细代码的deamo可以看我的写的相对来说比较清晰的一个。一、整体架构这个结构是相对来说比较简单了,只抽取了结构中比较重要的层,YY客户端,首先从service manager原创 2015-10-10 19:25:12 · 14754 阅读 · 1 评论 -
Google Protocol Buffer 的使用和原理
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。转载 2015-10-13 15:23:00 · 1274 阅读 · 0 评论 -
支持vector,map,list<map>序列化,反序列化实现
协议序列化原创 2015-11-29 23:33:18 · 10667 阅读 · 5 评论 -
探究redis和memcached的 LRU算法--------redis的LRU的实现
一直对这redis和memcached的两个开源缓存系统的LRU算法感兴趣。今天就打算总结一下这两个LRU算法的实现和区别。首先要知道什么是LRU算法:LRU是Least Recently Used 近期最少使用算法。相关的资料网上一大堆。http://en.wikipedia.org/wiki/Cache_algorithms#LRU redis的六种策略rewrite原创 2015-04-06 23:18:24 · 8660 阅读 · 1 评论 -
巧夺天工的kfifo
Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。在Linux kernel里面,简洁并不表示代码使用神出鬼没的超然技巧,相反,它使用的不过是大家非常熟悉的基础数据结构,但是kernel开发者能从基础的数据结构中,提炼出优美的特性。kfifo就是这样的一类优美代码,它十分简洁,绝无多余的一行代码,却非常高效。关于kfifo信息如下:本文分析的原代转载 2015-05-20 19:50:00 · 1080 阅读 · 0 评论 -
游戏公会工作总结
想写这篇文章已经脱了很久了。本文主要写一写我在游戏公会组所做事情和成长吧。 在这里,首先要感谢我的前老大,技术组leader,郭文瑞,具有十几年的技术经历。技术广度和深度都是公司首屈一指的。还有他对技术的敏感程度是非常值得敬佩的。项目成立之时,感谢他对我的信任和帮助,才让我能够基本独立的完成游戏公会后台的设计,架构,开发等工作。目前,郭文瑞已经离职,在一家深圳公司做CTO。 以下我们公司的YY后台的一个整体架构以及公会组内部的一些基本关系。我们项目属于YY频道内的一个服务,YY频道内的所原创 2015-05-13 20:01:01 · 3961 阅读 · 0 评论 -
带有头结点的简单链表实现
#ifndef LinkedList_H #define LinkedList_H #include "dsexceptions.h" #include // For NULL // List class // // CONSTRUCTION: with no initializer原创 2012-01-03 14:54:19 · 1708 阅读 · 0 评论 -
简单链表实现
今天元旦,不想工作。只想写一写自己想学习的东西。。今天就写了个链表的单向链表。//头文件chain.h#ifndef _chain_#define _chain_#include #include using namespace std;template class Chain;templateclass ChainNode{ friend Chain;priva原创 2012-01-01 16:07:25 · 1452 阅读 · 0 评论 -
解析STL中典型的内存分配
1 vector在C++中使用vector应该是非常频繁的,但是你是否知道vector在计算内存分配是如何么? 在c++中vector是非常类似数组,但是他比数组更加灵活,这就表现在他的大小是可以自动分配的,就是当你的数据量增大的时候,自动的为你分配空间,当你的分配的大小不够的时候,他就会在分配的内存后边增加2倍大小的空间,vector增加的空间是连续的,因此这个就涉及到原创 2012-03-23 02:26:24 · 4408 阅读 · 1 评论 -
c语言实现双链表
#include #include #include typedef struct myList DNode;struct myList{ DNode *next; DNode *prev; int data;};DNode* init(int data);void insertLastNode(DNode* L,int data);void insertNod原创 2012-10-06 16:56:01 · 1770 阅读 · 2 评论 -
c语言实现的通用二分查找算法
///* 二分查找是基于排好序的算法。复杂度低,并且很高效, 由于项目中大量使用的了二分查找,但是又不能每个业务实现一个 因此有必要实现一个通用的二分查找 其主要思想:通过对已经排好序的数组,进行数据指针的比较。 @const void *key 需要查找的key值 @const void *base, 所要查找数据的首地址 @int nmemb,所要查找的成员数量 @int原创 2012-12-08 11:14:35 · 6003 阅读 · 1 评论 -
如何提高游戏后台数据查找效率
在游戏后台中,内存的数据查找是一个很重要,也是关系到我们游戏的后台效率的问题。在大量的数据中,我们如何让我们的的程序能够快速的查找到我们所想要的数据呢。那么我们就要使用相应的算法了。首先,我们所有使用的内存都是通过分配内存的方式,基本上都是共享内存。通过shmid来分配内存。那么游戏中有哪些数据呢。1.配置表数据,这个数据是程序启动的时候,就要加载到内存中,我们就使用了二分原创 2013-05-04 00:25:43 · 4228 阅读 · 6 评论 -
标准库 STL :Allocator能做什么?
Allocator是C++语言标准库中最神秘的部分之一。它们很少被显式使用,标准也没有明确出它们应该在什么时候被使用。今天的allocator与最初的STL建议非常不同,在此过程中还存在着另外两个设计--这两个都依赖于语言的一些特性,而直到最近才在很少的几个编译器上可用。对 allocator的功能,标准似乎在一些方面追加了承诺,而在另外一些方面撤销了承诺。这篇专栏文章将讨论你能用allo转载 2014-03-26 14:46:50 · 7597 阅读 · 1 评论 -
redis源码解析----epoll的使用
平时做项目,涉及到网络层的都是epoll,前几年发现redis的epoll实现起来非常的精简,好用。因为提供的接口简单,爱并实现的很高效。于是,我就提取出来,直接使用。今天又打开该文件详细的看看他的实现细节。首先简单介绍epoll,它是linux内核下的一个高效的处理大批量的文件操作符的一个实现。不仅限于socket fd。他在超时时间内会唤醒有事件的操作符。其中有两种模式 1、水平触原创 2015-05-02 14:14:54 · 6832 阅读 · 1 评论 -
Skip List(跳跃表)原理详解与实现
本文内容框架:§1 Skip List 介绍§2 Skip List 定义以及构造步骤§3 Skip List 完整实现§4 Skip List 概率分析§5 小结 §1 Skip List 介绍 Skip List是一种随机化的数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要转载 2016-02-02 14:43:19 · 7405 阅读 · 0 评论