自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 问答 (3)
  • 收藏
  • 关注

原创 redis分布式锁

需要强调,当客户端从大多数Redis实例获取锁失败时,应该尽快地释放(部分)已经成功取到的锁,方便别的客户端去获取锁,假如释放锁失败了,就只能等待锁超时释放了。线程二就可以获取同个key的锁啦,但线程一也已经拿到锁了,锁的安全性就没了。客户端2去取锁,从C, D, E 3个节点拿到锁,A, B没有拿到(还被客户端1持有),客户端2也超过多数派,也会拿到锁。原理: thread1 加锁成功 通过子线程续命;redis 原生SET的扩展命令 锁的val唯一 => 解决 锁被其他线程释放问题。

2023-04-14 11:14:05 89

原创 linux命令

作者:int32bit链接:http://t.cn/R1FKgdNag:比grep、ack更快的递归搜索文件内容。tig:字符模式下交互查看git项目,可以替代git命令。mycli:mysql客户端,支持语法高亮和命令补全,效果类似ipython,可以替代mysql命令。jq:js...

2019-08-21 10:39:00 126

原创 redis基础结构之字典

字典作用: 数据库和hash键字典的结构typedef struct dict { // 类型特定函数 //type以及privdata为了创建多态字典存在 dictType *type; // 私有数据 void *privdata; // 哈希表 ht[1]主要用于rehash dictht ht[2]; // ...

2019-06-20 23:25:05 91

原创 redis 内存管理zmalloc.c

zmalloc.h对c的函数进行了封装void *zmalloc(size_t size); //调用zmalloc申请size个大小的空间 void *zcalloc(size_t size); // 调用系统函数calloc函数申请空间void *zrealloc(void *ptr, size_t size); // 原内存重新调整空间为size的大小void zfree(void...

2019-06-18 23:07:14 177

原创 redis基础结构之双端链表

双端链表定义 //链表信息typedef struct list { listNode *head; //双端链表的头部节点 listNode *tail; //双端链表的尾部节点 void *(*dup)(void *ptr); //链表节点数据域拷贝 void (*free)(void *ptr); //链表节点数据域释放 ...

2019-06-18 22:35:07 156

原创 redis基础机构之简单字符串

简单动态字符串SDS的定义 struct sdshdr{ int len; //记录buf中已经使用字节的数量 不包括'\0' int free; //记录buf中未使用字节的数量 char buf[]; //字节数组,用于保存字符串,会设置数据的末尾为‘\0' 这样可以兼容部分c标准库函数 ...

2019-06-03 23:31:57 84

原创 目标文件.o

目标文件目标文件格式: 可执行文件,如linux的elf或者windows的pe,他们都是coff的变种;以下几种文件在linux下采用elf格式; 1.可重定位文件: 这类文件包含代码和数据。可以用来连接成可执行文件和共享目标文件,静态链接库也算这一类; 例:hello.o 2.可执行文件: 可以直接执行程序,代表elf可执行文件 3.共享目标文件:包含代码和数据:链接器可以...

2019-05-16 22:40:12 682

原创 编译和链接

编译和链接整个过程分为预编译,编译,汇编以及链接几个过程 以编译hello.cc为例 1.预编译: 1).命令 gcc -E hello.c -o hello.i 2).做什么: 宏展开;处理条件预编译如"#if" ; 处理#include指令,将被包含的文件插入到预编译指令的位置,递归的包含文件; 删除注释; 添加行号和文件名标识,便于调试;保留**#prag...

2019-05-15 22:43:47 91

原创 线程安全

一. 概念:1. 同步和锁: 1. 二元信号量:最简单的一种锁;只有占用或者没有占用;他适合唯一一个线程独占的资源,一旦被占用,其他所有线程将会等待直到锁释放; 2. 多元信号量:简称信号量,允许多个线程并发访问的资源 3. 互斥量:与二元信号量很相似,资源仅同时允许一个线程访问,但是有所不同,**信号量可以在一个线程获取并且阿紫另一个线程释放,而互斥量必须试获取的线程才能释放**...

2019-05-14 22:55:44 55

原创 工厂模式 c++

工厂模式 三类:简单工厂模式(Simple Factory),工厂方法模式(Factory Method),抽象工厂模式(Abstract Factory)定义:简单工厂模式又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类

2017-07-27 09:52:39 516

原创 观察者模式 c++

观察者模式 定义:也叫发布订阅模式,定义对象间一对多的依赖关系,使得每当一个对象改变(被观察者(韩非子)),则所有依赖于它的对象(观察者)都会得到通知并被自动更新。通用类图: Subject被观察者 定义被观察者必须实现的职责,它必须能够动态的增加,取消观察者。它一般是抽象类或者实现类,仅仅完成作为被观察者必须实现的职责:管理观察者并通知观察者。 Observer观察者 观察者接收到

2017-07-27 09:36:02 246

原创 建造者模式 c++

建造者模式 定义: 也叫生成器模式,将一个复杂的对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。 如果有多个产品类就有几个具体的建造者,而且这多个产品类具有相同的接口或抽象类。 导演类起到封装作用,当建造者模式比较大时,导演类可以有多个。 类图: Product产品类: 通常实现了模板方法模式,也就是有模板方法和基本方法. Builder抽象建造者: 规范产品的

2017-07-16 20:07:32 508

原创 kmp算法浅析

解释不对的地方 希望帮忙指出来我们一起探讨 1.kmp算法的原理:   本部分内容转自: http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html2.next数组 即是找搜索词在 k属于[0,搜索词长-1] 位置时 前缀与后缀的最长公共子串(连续) 例如 :字符串 “ABC

2017-04-17 21:59:33 248

转载 B+,B*到R树

从B树、B+树、B*树谈到R 树 目录(?)[+]第一节B树B树B树4B树的高度第二节R树处理空间存储问题简介R树的数据结构叶子结点的结构非叶子结点R树的操作搜索删除结语从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、

2017-04-17 21:13:41 575

转载 并查集详解

[置顶] 并查集详解 (转) 这个文章是几年前水acm的时候转的, 当时也不知道作者是谁, 要是有人知道的话说一下吧并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实

2017-04-15 18:41:26 222

转载 区分五种io模型

区分IO的五种模型,下面先来看看同步与异步、阻塞与非阻塞的概念差别。

2017-04-14 21:00:06 248

转载 计算机程序是怎样运行的

计算机程序是怎样运行的 关于《深入理解计算机系统》“这本书的中译名为“深入理解计算机系统”,我非常,十分,以及百分之一百二十地不满意。我这么说的原因在于这个译法完全扭曲了书的本意。如果直译原书名,应该是类似于“以程序员的视角理解计算机系统”,何来“深入”二字。可能在国内编辑看来,这是讲系统的,用C和汇编语言的,因此很“深入”,但我认为这只能说明国内

2017-04-14 13:42:42 270

原创 find

1.在student用户下执行find /etc -name passwd 命令,并管理其输出要求如下: (1)2>/dev/null 错误输出导入到/dev/null (2)>/dev/null 正确输出导入到/dev/null (3)&>/dev/null 正确和错误输出都导入到/dev/null (4)2>>/dev/null 错误输出追加导

2017-04-14 13:24:51 202

原创 查看进程相关命令如ps

关于linux进程的信息查看

2017-04-13 11:11:00 398

原创 正则表达式通配符及vim

通配符 正则表达式 vim

2017-04-13 10:54:37 4234

原创 基本文本编辑diff,cut,grep sed,awk

######################文本处理工具awk grep sed...#########################1.1.diff比较两个文件的不同 diff [option] file1(旧) file2(新)diff -u file file.new >file.path##生成补丁文件diff -r ki1 ki2

2017-04-13 10:48:49 524

空空如也

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

TA关注的人

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