自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fmt.Println(

fmt.Println("Hello World")

  • 博客(102)
  • 资源 (3)
  • 论坛 (1)
  • 收藏
  • 关注

原创 基于RABC权限管理的后台管理项目新权限的设计思想

说到权限很多人都会想到RBAC,ACL等等,这些方案都是十分成熟的权限管理方案,最早写PHP用yii2框架的时候,就自带了rbac权限管理,也对rbac比较熟悉,但今天想说的不仅仅局限于路由权限。RBAC权限管理关于rbac权限管理gg可以出一堆文章,基于角色的访问控制,把一堆路由分配给一个角色,然后把一堆角色分配给项目中的某个人,此人即拥有这些路由的访问权限。这里只对rbac做出简单的说明,此处不

2017-10-20 17:39:12 2131

原创 高并发读与高并发写的项目总结和mongodb使用中遇到的坑

最近开发了一个既要高并发写又要高并发读的项目,写的QPS比读还要高,这个需求几乎是变态的,任何缓存的工具都没法使用,数据在一秒内可能变化的几十遍,只能每次请求都实时从数据库读取。下面分如下几点介绍我们是如何技术选型的。一、选择通信协议之前写的项目并发量很小,http+keepalive完全可以搞定了,此项目http完全架不住,因为使用http协议传递数据,那么数据最友好的格式就是json,但是亲测过

2017-09-11 16:12:21 2248 4

原创 高并发读与高并发写的项目总结和mongodb使用中遇到的坑

最近开发了一个既要高并发写又要高并发读的项目,写的QPS比读还要高,这个需求几乎是变态的,任何缓存的工具都没法使用,数据在一秒内可能变化的几十遍,只能每次请求都实时从数据库读取。下面分如下几点介绍我们是如何技术选型的。一、选择通信协议之前写的项目并发量很小,http+keepalive完全可以搞定了,此项目http完全架不住,因为使用http协议传递数据,那么数据最友好的格式就是json,

2017-01-04 11:06:46 24365 5

原创 LeetCode中几道链表反转相关题目(Reorder List、Rotate List、Reverse Nodes in k-Group)

三道很常见的面试题,reorderList

2014-08-31 12:48:51 3607

原创 单链表排序(sort list)

昨晚被阿里在线笔试虐了,附加题完全不会,第二题

2014-08-30 11:19:34 4509 2

原创 刷leetcode的第一道题——Reverse Words in a String

好久没在Online Judge上做题了,今天

2014-08-29 18:43:36 2436

原创 实习面试总结

3月初从武汉回到帝都,休息了一个周末,开始拿出各类书籍开始复习,目的就是为了能在3月份找份不错的互联网公司的实习,复习了一周的基础数据结构与算法之后,开始给在各大互联网公司的同学、学弟、学长送简历,帮忙内推,同时自己也在大街网上广投简历,过了几天也陆陆续续收到了一些公司的面试通知。面试的第一家是创新工场的“秘密”团队,这个是大街上投的唯一邀请面试的公司,过去就聊了聊之前在中科院空间所做

2014-03-26 14:59:57 5676 5

原创 Redis数据持久化机制AOF原理分析二

本文所引用的源码全部来自Redis2.8.2版本。Redis AOF数据持久化机制的实现相关代码是redis.c, redis.h, aof.c, bio.c, rio.c, config.c在阅读本文之前请先阅读Redis数据持久化机制AOF原理分析之配置详解文章,了解AOF相关参数的解析,文章链接http://blog.csdn.net/acceptedxukai/ar

2014-01-12 15:36:08 7151 1

原创 Redis数据持久化机制AOF原理分析一

本文所引用的源码全部来自Redis2.8.2版本。Redis AOF数据持久化机制的实现相关代码是redis.c, redis.h, aof.c, bio.c, rio.c, config.c在阅读本文之前请先阅读Redis数据持久化机制AOF原理分析之配置详解文章,了解AOF相关参数的解析,文章链接http://blog.csdn.net/acceptedxukai/article/

2014-01-11 14:19:15 5053

原创 Redis数据持久化机制AOF原理分析之配置详解

Redis AOF数据持久化的参数配置详细注释

2014-01-11 12:59:14 13144

原创 Redis2.8.2源码注解github资源下载与本周吐槽

之前一直没有使用过Git,折腾了半天,乱整一通,终于把当前注释的Redis-2.8.2的源码放到Gitbub上了,https://github.com/xkeyideal/annotated-redis-2.8.2,对于代码中出现的错误注释等,本人概不负责,只提供参考。注册Github,下载Windows客户端,使用Gitshell乱整一通搞定RSA验证,上传注释代码。

2014-01-10 23:49:47 4302

原创 Redis数据类型与指令详解之集合(t_set)

本文所引用的源码全部来自Redis2.8.2版本。REDIS_SET集合数据类型与指令相关文件是t_set.h, redis.h, object.c转载请注明,文章出自:http://blog.csdn.net/acceptedxukai/article/details/17883153集合编码方式Redis 集合(set)使用REDIS_ENCONDING_I

2014-01-05 15:52:25 6837 1

原创 Redis源码整体运行流程详解

本文所引用的源码全部来自Redis2.8.2版本。Redis源码整体运行流程的相关文件是:redis.h, redis.c, networking.c, ae.h, ae.c。转载请注明,本文出自:http://blog.csdn.net/acceptedxukai/article/details/17842119Redis Server端处理Client请求的流程图

2014-01-04 16:35:39 11088

原创 Redis内部数据结构详解之字典(dict)

本文所引用的源码全部来自Redis2.8.2版本。Redis中字典dict数据结构与API相关文件是:dict.h, dict.c。本文讲解的不是很详细,可以同时参考Redis实现与设计一书中字典部分,本文关于字典的核心代码的注释可以参考。字典,简单说就是存储key-value键值数据,当然value=NULL那么就是集合了。字典通俗来说就是C++ STL中的m

2013-12-22 16:44:09 8990 4

原创 Redis内部数据结构详解之简单动态字符串(sds)

本文所引用的源码全部来自Redis2.8.2版本。Redis中简单动态字符串sds数据结构与API相关文件是:sds.h, sds.c。转载请注明,本文出自:http://blog.csdn.net/acceptedxukai/article/details/17482611预备知识下面介绍有关sizeof计算参数所占字节数的部分实例

2013-12-22 13:54:25 9656 4

原创 Redis内部数据结构详解之整数集合(intset)

本文所引用的源码全部来自Redis2.8.2版本。Redis中intset数据结构与API相关文件是intset.c, intset.h。整数集合简介整数集合intset用于有序、无重复地保存多个整数值,根据集合中元素的值自动选择使用整数类型来保存元素,例如:如果intset中绝对值最大的整数可以用int32_t来保存,那么整个intset中所有元素都使

2013-12-21 22:32:14 7188

原创 Redis内部数据结构详解之双向链表(linkedlist)

本文所引用的源码全部来自Redis2.8.2版本。Redis中linkedlist数据结构与API相关文件是adlist.c, adlist.h。本文主要讲解Redis中对双向链表的详细实现,以及相关API的分析,对于双向链表本身可以从任意一本数据结构书本中得到详解。一、双向链表简介双向链表作为一种常见的数据结构,在严蔚敏数据结构书里有详细的讲解,双向链表的每个数据节点都有

2013-12-21 15:52:17 6243 1

原创 Redis内部数据结构详解之压缩链表(ziplist)

本文所引用的源码全部来自Redis2.8.2版本。Redis中ziplist数据结构与API相关文件是:ziplist.h, ziplist.c, t_zset.c。一、ziplist的构成是一个4字节无符号整数,用来存储整个ziplist占用的字节数;是一个4字节无符号整数,用来存储ziplist最后一个节点的相对于ziplist首地址偏移量;是一个2字节

2013-12-20 22:36:21 11510 1

原创 Redis内部数据结构详解之跳跃表(skiplist)

一、跳跃表简介跳跃表是一种随机化数据结构,基于并联的链表,其效率可以比拟平衡二叉树,查找、删除、插入等操作都可以在对数期望时间内完成,对比平衡树,跳跃表的实现要简单直观很多。以下是一个跳跃表的例图(来自维基百科):从图中可以看出跳跃表主要有以下几个部分构成:1、  表头head:负责维护跳跃表的节点指针2、  节点node:实际保存元素值,每个节点有一层或多层3

2013-12-15 14:09:56 25871 5

原创 堆排序与第K小数最大顶堆

#include #include using namespace std;int a[100];void swap(int &x ,int &y){ int temp; temp = x; x = y; y = temp;}void heap_adjust(int root,int n){//max heap int j = root <

2013-06-24 00:34:26 2722 2

原创 bitmap与2bitmap实现

Bitmap就是用一个bit位来标记某个元素是否存在,而2Bitmap就是用两个bit为来标记某个元素的个数,00,01,10,11(分别表示0,1,2,3,0表示不存在,1表示存在1次,后面依次)。Bitmap能用来处理下面的两个问题:(1)、在2.5亿个整数找出不重复的整数,内存不足以容纳着2.5亿个整数(2)、腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序

2013-06-04 21:06:28 5697 1

原创 Splay Tree源码

注:此代码非本人所写,实现方式为自底向上,在做ACM题目时比教科书上的自顶向下在数据处理上要好操作。由于个人现在比较钟爱指针,所以从网上找了个指针实现的源码,只是添加了点个人的理解注释和一些其他操作。http://dongxicheng.org/structure/splay-tree/此博客对Splay Treee分析比较透彻,需要注意的是,Splay Tree的旋转操作与其他平衡树如R

2013-05-30 20:58:38 1889

原创 Skip List跳跃表代码实现

Skip List相关知识介绍:http://blog.nosqlfan.com/html/3041.html   http://www.cnblogs.com/xuqiang/archive/2011/05/22/2053516.html#include #include #include #include using namespace std;#define MAX_

2013-05-13 23:15:16 3522 4

原创 经典排序——归并、快排递归与非递归实现与冒泡排序

#include #include #include #include #include using namespace std;void merge(int a[],int b[],int l,int mid,int r){ int i = l, j = mid + 1; int k = 0; while(i <= mid && j <= r){

2013-05-05 10:52:23 1072

原创 RabbitMQ Python——Asynchronous publisher example

# -*- coding: utf-8 -*-import loggingimport pikaimport jsonLOG_FORMAT = ('%(levelname) -10s %(asctime)s %(name) -30s %(funcName) ' '-35s %(lineno) -5d: %(message)s')LOGGER = loggin

2013-04-27 23:07:18 3105 2

原创 Python 几个常用的内建函数

#build-in functions'''1 list(iter) 将iter转换为list2 tuple(iter) 将iter转换为tuple3 enumerate(iter,start=0) 4 len(seq) 获取seq的长度5 max(iter,key=None) or max(arg0,arg1,arg2..,key = None) 6 min(iter,key=No

2013-04-20 17:27:44 1336

原创 Python urlparse总结

res = urlparse.urlparse(url,scheme,allow_fragments)返回一个6-tuple,类型是ParseResult(scheme, netloc, path, params, query, fragment)ParseResult类还有几个常用方法:res.usernameres.passwordres.hostnameres.por

2013-04-15 22:09:53 10896

原创 APUE学习笔记——socket通信 阻塞IO

服务器端:#include #include #include #include #include #include #include #include #include #define BACKLOG 10int main(){ struct sockaddr_in server_sockaddr,client_sockaddr; int sockfd

2013-04-14 17:48:29 1329

原创 APUE学习笔记——第十六章 网络IPC:套接字

1、套接字描述符套接字是通信端点的抽象,与应用程序要使用文件描述符访问文件一样,访问套接字也需要用套接字描述符,套接字描述符在UNIX系统是用文件描述符实现的,许多文件描述符函数(如read write)都可以处理套接字描述符。创建一个套接字,调用socket函数#include int socket(int domain,int type,int protocol)//若成功返回

2013-04-14 15:25:11 1139

原创 Python Twisted学习总结

最近几天丢下了之前学习的UNIX环境高级编程(APUE),开始重新学习Twisted,之前在中科院空间所参与的项目使用的是Twisted异步编程框架,当时对Twisted的理解不是很深刻,因此又重新学习一遍。异步编程简单的理解就是使用Unix中的复用I/O,使得CPU的效率使用更高,总体来说现在的编程有个趋势:单进程-->多线程-->异步编程-->协程(可能不准确),异步编程其实只使用一个CP

2013-04-13 16:36:36 1887

原创 XSI IPC——System V消息队列

System V消息队列1、key_t键和ftok函数三种类型的System V IPC使用key_t值作为它们的名字,头文件把key_t这个数据类型定义为一个整数。函数ftok把一个已存在的路径名和一个整数标识符转换成一个key_t值,称为IPC键。#include key_t ftok(const char* pathname, int id);该函数把从pathnam

2013-04-05 15:46:58 1581

原创 APUE学习笔记——第十五章 进程间通信

进程间通信IPC(InterProcess Communication)是指能在两个进程间进行数据交换的机制。1、管道管道是UNIX系统IPC的最古老形式,并且所有UNIX系统都提供此通信机制。管道有下面两种局限性:(1)历史上,它们是半双工的,现在某些系统提供全双工管道(2)它们只能在具有公共祖先的进程之间使用。通常,一个管道由一个进程创建,然后该进程调用fork,此后父子进程之

2013-04-02 23:58:14 1095

原创 APUE学习笔记——第十四章 高级IO

1、非阻塞IO低速系统调用是可能会使进程永远阻塞的一类系统调用,包括:(1)如果某些文件类型(管道、终端设备)的数据并不存在,则读操作可能会使调用者永远阻塞(2)如果数据不能立即被上述同样类型的文件接受,则写操作也会使调用者永远阻塞(3)在某种条件发生之前,打开某些类型的文件会被阻塞(4)对已经加上强制性记录锁的文件进行读、写(5)某些ioctl操作(6)某些进程间通信

2013-04-01 21:38:41 1253

原创 APUE学习笔记——第十三章 守护进程

1、编程规则(1)首先调用umask将文件模式创建屏蔽字设置为0.由继承得来的文件模式创建屏蔽字可能会拒绝设置某些权限。例如:若守护进程要创建一个组可读、写的文件,而继承的文件模式创建屏蔽字可能屏蔽了这两种权限,于是所要求的组可读、写就不能起作用。(2)调用fork,然后使父进程退出(exit)。这样做实现了下面几点:第一,如果该守护进程是作为一条简单shell命令启动的,那么父进程终止使

2013-03-31 18:28:21 1691

原创 APUE学习笔记——第十二章 线程控制

本章学习控制线程行为方面的详细内容,在上章中对线程属性和同步原语属性都取其默认行为,接下来将介绍同一进程中的多个线程之间如何保持数据的私有性,最后讨论基于进程的系统调用如何与线程进行交互。1、线程限制:   Single Unix Specification定义了与线程操作有关的一些限制,和其他的限制一样,可以通过sysconf来查询。和其它的限制使用目的一样,为了应用程序的在不同操作 系

2013-03-29 22:14:29 1364

原创 APUE学习笔记——第十一章 线程

典型的UNIX进程可以看成只有一个控制线程:一个进程在同一时刻只能做一件事情。有了多个控制线程之后,在程序设计时可以把进程设计成在同一时刻能够做不止一件事,每个线程处理各自独立的任务。使用线程有很多好处:(1)、通过为每种事件类型的处理分配单独的线程,能够简化处理异步事件的代码。(2)、多个线程自动地可以访问相同的存储地址空间和文件描述符(3)、将一个问题分解为多个程序,改善整个程序的

2013-03-28 16:27:51 1067

原创 APUE学习笔记—— 信号实现系统sleep和system函数,解决进程竞争实例

1、实现系统sleep函数此函数使调用进程被挂起,直到满足下列条件之一:(1)已经经过seconds所指定的墙上时钟时间(2)调用进程捕捉到一个信号并从信号处理程序返回。以下的可靠实现并没有考虑到两个alarm交互作用的情况可靠实现如下:#include #include #include #include void sig_alarm(){}int slee

2013-03-26 17:06:19 1550

原创 APUE学习笔记——第十章 信号

1、信号信号是软件中断,很多比较重要的应用程序都需要处理信号,信号提供了一种处理异步事件的方法,例如:终端用户键入中断键,则会通过信号机制停止一个程序。每个信号都有一个名字,这些名字都是以SIG开头,在头文件中,信号都被定义为正整数。很多条件可以产生信号:(1)当用户按某些终端键时,引发终端产生的信号。按Ctrl+C键,通常产生SIGINT中断信号(2)硬件异常产生信号。例

2013-03-26 16:06:23 1008

原创 APUE学习笔记——第八章 进程控制

本章的重点内容比较多,fork函数,wait和waitpid函数,exec函数,system函数等。1、进程标识符#include pid_t getpid(void);   //调用进程的进程IDpid_t getppid(void); //调用进程的父进程IDgid_t getgid(void); //调用进程的实际组IDgid_t getegid(v

2013-03-24 19:11:42 1309

原创 APUE学习笔记——第七章 进程环境

1、main函数原型:int main(int argc, char *argv[])  其中argc是命令行参数的数目,argv是指向参数的各个指针构成的数组。main函数的命令行参数代码如下:#include #include int main(int argc,char *argv[]){ int i; for(i = 0 ; i < argc ; i ++

2013-03-24 14:18:32 882

Linux命令详解手册 英文版

英文版的Linux命令详解手册,有关CentOS系统的各种操作和管理指令

2013-04-18

Spring JDBC实现代码

Spring2.5+MySQL实现的JDBC操作(包括编程式事务的代码),如果有看不懂的地方可以去本人的博客:http://blog.csdn.net/Acceptedxukai,里面有具体讲解。

2012-07-27

分酒问题 三个酒杯A B C分别可装8升、5升、3升酒,开始B C装满了酒,在没有其它工具的情况下,将酒平分

三个酒杯A B C分别可装8升、5升、3升酒,开始B C装满了酒,在没有其它工具的情况下,将酒平分

2009-12-23

xkey的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

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