排序:
默认
按更新时间
按访问量

用redis实现分布式锁

在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现分...

2017-09-23 20:46:38

阅读数:381

评论数:0

补充:需要掌握的算法

01背包和完全背包使用一维数组的版本: 01背包:int main() { int n,m; while(cin>>n>>m) { vector<int> weight(n+1,0);//物品的重量 vector...

2017-09-10 17:24:14

阅读数:200

评论数:0

C++知识点(4)

GCC常用参数-ansi:关闭 gnu c 中与 ansi c 不兼容的特性 , 激活 ansi c 的专有特性 ( 包括禁止一些 asm inline typeof 关键字 , 以及 UNIX,vax 等预处理宏-lxx:表示动态加载libxx.so库-Lxx:表示增加目录xx,让编译器可以在x...

2017-08-11 17:40:22

阅读数:281

评论数:0

Web网站架构的高并发实现

Web前端性能优化浏览器访问优化减少http请求http是无状态的应用层协议,意味着每次http请求都需要建立通信链路、进行数据传输,而在服务器端,每个http都需要启动独立的线程去处理。 减少http的主要手段是合并CSS、合并JavaScript、合并图片等,这样浏览器就只需要一次请求。使用...

2017-08-11 17:09:52

阅读数:658

评论数:0

时序数据库

时序数据的概念时序数据简单的说, 就是随着时间流而不断产生的数据, 比如一台服务器的cpu负载, 或者一个应用的log文件等。 对于这种时序数据, 有一些常用的操作, 比如统计每分钟的平均值, 中位数等。 所谓时序数据库, 就是针对这类场景做了优化的一类数据存储查询系统。 又如百度无人车在运行...

2017-08-10 21:39:06

阅读数:322

评论数:0

简单的平面几何问题

已知直线上两点坐标,求直线方程已知两点(x1,y1) ,(x2,y2),代入两点公式: (x-x1)/(x2-x1)=(y-y1)/(y2-y1) 于是有:ax+by+c=0; //a=y2-y1 //b=x1-x2 //c=x2*y1-x1*y2判断两点是否在直线的同一侧方法1:如果已知直线...

2017-06-09 15:26:56

阅读数:293

评论数:0

B树、B+树和R树

前言动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间...

2017-06-06 11:35:54

阅读数:528

评论数:0

递归调用中使用全局变量或者函数参数

在编写递归函数时,我们可以选择使用全局变量,也可以选择使用函数参数。这两者的差别在于: 全局变量的形式,递归结束后必须对该变量修改,恢复原值; 函数参数的形式,因为递归调用函数时,实际上,从内存分布上看,每一层调用都保存了该层函数的参数,因此递归返回上层时,不会影响原参数值。 拿一道题举例,求二...

2017-06-03 11:00:33

阅读数:3311

评论数:0

C++知识点(3)

内联函数内联函数相当于自动地用函数的形式添加进代码,可以提高效率。编译器会对内联函数的参数做安全检查或自动类型转换,而宏定义不会。 内联函数可以访问类的私有成员变量,而宏定义则不能,在类中声明同时定义的成员函数,自动转化为内联函数。继承机制中对象之间的转换从派生类向基类的类型转换只对指针和引用类...

2017-06-03 10:17:49

阅读数:362

评论数:0

Linux命令行之文本处理

cat贴出一个文件的内容,从文件中获取输入,并将该文件内容输出到标准输出。 cat指令功能虽然简单,但是配合重定向,它就可以将一个文件内容送给任何可以从标准输入获取数据的工具来进行处理。head用于显示一个文件的前几行。指令格式:$ head [OPTION]... [FILE]...head指...

2017-05-17 20:32:30

阅读数:211

评论数:0

搜索引擎:倒排索引

搜索引擎通常检索的场景是:给定几个关键词,找出包含关键词的文档。那么如何快速找到包含某个关键词的文档就成为搜索的关键。这里我们借助单词-文档矩阵模型,通过这个模型我们可以很方便知道某篇文档包含哪些关键词,某个关键词被哪些文档所包含。 单词-文档矩阵的具体数据结构可以是倒排索引、签名文件、后缀树等...

2017-05-15 19:22:15

阅读数:399

评论数:0

Memcached和Redis缓存技术

Redis与其他key-value存储有什么不同?Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。 Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高...

2017-05-09 19:20:10

阅读数:616

评论数:0

MySQL数据库

浮点型和定点型

2017-05-07 16:32:01

阅读数:291

评论数:0

Linux(2)

fork和exec函数fork( )用来创建一个新的进程,该进程几乎是当前进程的一个完全拷贝;函数族exec( )用来启动另外的进程以取代当前运行的进程。Linux的进程控制和传统的Unix进程控制基本一致,只在一些细节的地方有些区别,例如在Linux系统中调用vfork和fork完全相同,而在有...

2017-05-05 11:29:12

阅读数:455

评论数:0

线程池和内存池的实现

为什么需要线程池?大多数的网络服务器,包括Web服务器都具有一个特点,就是单位时间内必须处理数目巨大的连接请求,但是处理时间却是比较短的。在传统的多线程服务器模型中是这样实现的:一旦有个请求到达,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出。这就是”即时创建,即时销毁”的策略...

2017-04-26 13:29:31

阅读数:1023

评论数:0

Linux中线程同步:互斥锁/信号量/条件变量+无锁队列

基本概念互斥锁,条件变量,信号量 应用互斥锁POSIX线程锁机制的Linux实现都不是取消点,因此,延迟取消类型的线程不会因收到取消信号而离开加锁等待。值得注意的是,如果线程在加锁后解锁前被取消,锁将永远保持锁定状态,因此如果在关键区段内有取消点存在,或者设置了异步取消类型,则必须在退出回调函数...

2017-04-25 14:33:43

阅读数:811

评论数:0

select和epoll的区别

select原理概述调用select时,会发生以下事情: 从用户空间拷贝fd_set到内核空间; 注册回调函数__pollwait; 遍历所有fd,对全部指定设备做一次poll(这里的poll是一个文件操作,它有两个参数,一个是文件fd本身,一个是当设备尚未就绪时调用的回调函数__pollwai...

2017-04-23 12:00:17

阅读数:217

评论数:0

C++知识点(2)

尽量用const,emum,inline替换#define换句话说,“宁可用编译器替换预处理器”,因为或许define不被视为语言的一部分。

2017-04-18 21:48:13

阅读数:246

评论数:1

分布式存储和一致性哈希

关于分布式存储如果单台机子的hashmap存储已经不能满足我们的key-value需求,我们就需要把存储内容分布到不同的实体机上。这时需要一种把key映射到不同机器的方法,我们想起了hash,可以把实体机当做是桶,采用和hashmap实现一样的思路,通过和实体机的数量取模,自然映射到不同的机器。 ...

2017-04-18 18:49:12

阅读数:244

评论数:0

数据库

索引与B树

2017-04-04 14:18:08

阅读数:325

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭