- 博客(33)
- 收藏
- 关注
原创 Redis核心技术与实战课程复习三
Redis核心技术与实战课程复习三哨兵哨兵的作用客观下线和主观下线哨兵集群如何选主筛选打分哨兵集群如何通信的其他哨兵的信息pub/sub机制其他从节点基于pub/sub机制的客户端事件由哪个哨兵执行主从切换过程?扩展集群应对更高的数据量哨兵哨兵的作用在Redis使用主从模式时,如果主节点挂了,这个时候整个集群无法接受读操作,为了确保集群的高可用性,哨兵可以及时发现主节点挂了,然后在从节点中选一个作为新的主节点。同上,在主节点挂了之后选出新的主节点在选出新的主节点后,通知其他从节点和客户端有某个从
2021-04-26 23:46:55
121
原创 Redis核心技术与实战课程复习二
Redis核心技术与实战课程复习二RDBsave和bgsave生成RDB文件时写操作的问题RDB的问题RDB和AOF结合主从模式(master-slave)主从数据同步方式第一次同步从节点过多如何解决主从节点连接断开如何解决RDBRDB和AOF一样,也是Redis的一种持久化方式,不过是使用快照的方式,即将Redis某一时刻的数据状态以文件的形式写入磁盘。Redis有save和bgsave两个指令生成RDB文件save和bgsavesave:在主线程中执行,会阻塞主线程bgsave:由主线程f
2021-04-25 23:59:10
136
原创 Redis核心技术与实战课程复习一
Redis核心技术与实战课程复习一基础数据类型底层数据结构数据类型和数据类型的对应关系Redis数据类型操作复杂度大概如果业务非要范围操作有没有好的办法?Redis为什么快?Redis性能瓶颈AOFAOF是写后日志好处风险AOF写回策略AOF日志重写一个拷贝,两处日志基础数据类型指给客户用的数据类型string、list、hash、set、sorted set底层数据结构指实现Redis各功能所用到的数据结构sds(简单动态字符串)、双向链表、ziplist、跳表、整数数组,字典数据类型和数据
2021-04-24 02:33:37
92
原创 基于docker的ELK+filebeat+kafka环境部署
基于docker的ELK+filebeat+kafka环境部署ELK以及常用模式环境部署一、docker二、centos(centos虚拟机中)1、拉取centos镜像2、制作centos容器三、filebeat(centos容器中)四.kafka五.logstash(centos虚拟机中)1、拉取logstash镜像2、制作logstash容器5.elasticsearch(es)6.kibanaELK以及常用模式什么是elk以及常用模式环境部署顺序:和log走向一直filebeat->ka
2020-11-04 19:19:59
2037
5
原创 skynet网络模块的简易demo
skynet网络模块的简易demo服务端local skynet = require "skynet"local socket = require "skynet.socket"skynet.error("hahha")local function acceptrecv(id, addr) socket.start(id) skynet.error("connect from ".....
2020-03-17 18:13:12
586
原创 LeetCode 621 任务调度器
题目给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命状态。然而,两个相同种类的任务之间必须有长度为 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你...
2020-01-27 23:31:49
79
原创 外观模式
作用将某些实现隐藏起来,交给另一个类去管理,管理的类对外开放,调用的时候只需要访问这个管理类实现有一个活动,需要游戏服和跨服交互,需要使用这两个服的函数的时候,只需要调用管理这两个类的那个类即可(例子中main中的调用)。//Facade.h#include "Singleton.h"namespace Facade{#include <vector>#include...
2020-01-27 22:13:16
69
原创 LeetCode 17 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。来源:力扣(LeetCode)链接:h...
2020-01-27 20:59:22
120
原创 策略模式
实现的功能模拟一个任务系统,有两个任务,完成条件不相同,使用策略模式写了两个任务的完成情况。另外,用到了单例模式和shared_ptr代码//Strategy.h#pragma once#include "Singleton.h"#include <unordered_map>#include <memory>using namespace std;na...
2020-01-26 22:26:51
69
原创 单例模式
懒汉template<typename T>class Singleton{public: T* GetSingletonPtr() { if(_instance)return _instance; else return _instance = new T; } ~T() { if(_instance) { delete _instance;...
2020-01-25 23:38:18
67
原创 LeetCode 15 三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]来源:力扣(LeetCode)链接:...
2020-01-24 23:36:30
75
原创 LeetCode 11 盛最多水的容器
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部...
2020-01-24 23:11:59
76
原创 LeetCode 7 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)...
2020-01-24 22:21:35
55
原创 LeetCode 6 Z字型变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:st...
2020-01-24 19:27:33
155
原创 高性能Mysql读后总结 第一章
一、Mysql架构1.1 Mysql逻辑架构Mysql逻辑架构分为三层: 第一层为对外开放的连接处理、授权认证、安全等。 第二层为Mysql大部分的核心服务,如查询的解析、优化、缓存以及所有的内置函数,如日期、时间、数学、加密函数。 第三层为存储引擎。1.1.2 优化与执行优化包括重写查询、决定表的读取顺序,以及选取合适的索引对于查询语句,还会有查询缓存,如果缓存命中,将不会...
2020-01-22 23:23:26
114
原创 LeetCode 5 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring...
2020-01-22 16:01:01
104
原创 LeetCode 3 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...
2020-01-21 18:02:42
69
原创 LeetCode 2 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...
2020-01-21 17:34:27
75
原创 基数排序
复杂度和稳定性时间复杂度:最好、最差、平均都是O(N*K)空间复杂度:O(N+K)K为桶的个数稳定性:稳定CPP实现#include <vector>#include <time.h>#include <stdlib.h>using namespace std;//获取数组中的数字的最大位数int get_max_bit(vector<...
2020-01-21 17:09:48
62
原创 LeetCode 1 两数之和
题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(Le...
2020-01-19 01:59:56
65
原创 堆排序
复杂度和稳定性时间复杂度:最好、最坏、平均:O(N*ln(N))稳定性:不稳定CPP实现:#include <vector>#include <time.h>#include <stdlib.h>using namespace std;void make_heap_max(vector<int>& v, int start, ...
2020-01-19 01:33:06
60
原创 希尔排序
复杂度和稳定性时间复杂度:平均O(Nln(N)),最好O(N),最差O(NN)空间复杂度:O(1)稳定性:不稳定CPP实现#include <vector>#include <stdlib.h>#include <time.h>using namespace std;void shell_sort(vector<int>& ...
2020-01-18 00:38:20
68
原创 插入排序和选择排序
插入排序一、复杂度和稳定性时间复杂度:最坏和平均:O(N*N),最好O(N)空间复杂度:O(1)稳定性:稳定二、CPP实现#include <vector>#include <stdlib.h>#include <time.h>using namespace std;void insert_sort(vector<int>&...
2020-01-17 02:48:57
83
原创 归并排序
一、复杂度和稳定性时间复杂度:平均,最好,最坏:O(N*ln(N))空间复杂度:O(N)稳定性:稳定二、CPP实现#include <vector>using namespace std;void merge(vector<int>& src, vector<int>& tmp, int s, int e, int m){ in...
2020-01-15 02:21:13
76
原创 冒泡和快排
一、冒泡1、复杂度和稳定性时间复杂度:平均:O(N2),最坏(N2),最好(N)(#define AVOID_ORDERED)空间复杂度O(1)稳定性:稳定2、CPP实现#include<vecctor>using namespace std;#ifdef AVOID_ORDEREDbool bChange = false;#endifvoid bubby_s...
2020-01-14 01:27:02
125
原创 placement new
内存池中会“释放”内存所谓内存中的释放,实际只是内存复用,并没有把内存还给操作系统所以释放的时候需要调用析构函数,再次使用的时候需要调用构造函数在没有使用内存池的时候构造只需要new Object就可以了,但是在使用内存池的时候应该咋办呢用placement new有一个类:class Object{public: Object(){}; ...};placement n...
2020-01-13 23:57:44
66
原创 运输层其他细节
传输层实际上是两端进程间的通信复用和分用:复用指的发送发的不同进程都可以使用同一个运输层协议传送数据,分用指的是接收方可以从运输层剥去报文首部之后可以正确的把剩下的数据交给进程协议端口号(端口):运输层用一个16位的数字来表示端口号,即有65535个不同个端口号。端口号只具有本地意义,即在网络中的不同计算机里,相同的端口号是没有关联的。由于传输层实际是两端进程的通信而不是计算机与计算机的通信...
2018-09-10 21:55:53
158
原创 TCP的流量控制和拥塞控制
1、TCP的流量控制流量控制是干什么的一般情况下,我们都希望数据的传送尽量地快,但是如果发送方的发送速率超过了接收方的接受速率将会造成数据的丢失。所以需要进行流量的控制,流量控制就是控制发送速率不要太快,以便接受方能够完全接受。流量控制怎么实现的通过滑动窗口(rwnd)实现流量控制 其中有一个问题,当接收方回复发送方窗口大小为0之后,接收方处理了一些缓存区的数据,腾出了一...
2018-09-10 21:26:25
229
原创 三次握手四次挥手
1、三次握手过程1、(建立之前的准备,不算“握手”)服务端在连接之前被动打开,使用socket(),bind(),listen()三个函数完成,调用之后服务器进程处于listen状态; 2、客户端调用connect申请建立连接,客户TCP使用同步的方式发送一个同步位SYN=1,初始序列号seq=x的报文段,TCP中规定申请建立连接的报文段不能携带数据,但是也会消耗掉一个序列号,申请完之后客户...
2018-09-10 12:55:39
91
原创 五种I/O模型,同步和异步,阻塞和非阻塞
一共有哪五种? 阻塞IO,非阻塞IO,IO复用,事件(信号)驱动IO,异步IO 阻塞(blocking)IO:在linux中,默认情况下所有的socket都是阻塞的 具体如下:使用recvfrom系统调用,此时内核开始准备数据,一般网络IO情况下,很多数据一开始都是没有到达的,内核就需要等待数据的到来,用户进程就就会进入阻塞状态,直到数据到来,就会将数据从内核拷贝的用户内存,然后内核返回结果...
2018-09-09 19:58:13
231
原创 epoll,select,poll
1、epoll的具体步骤 epoll_create(),返回一个句柄,之后的使用都依靠这个句柄来标识 epoll_ctl(),包括epoll_ctl_add,epoll_ctl_mod,epoll_ctl_del,分别进行添加、修 改、删除操作。 epoll_wait()通过这个调用收集在epoll监控中已经发生的事件 2、epoll为什么高效 ep...
2018-09-09 19:19:26
112
原创 CSDN用法
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: e - Markdown和扩展Markdown简洁的语法 - 代码块高亮 - 图片链接和图片上传 - LaTex数学公式 - UML序列图和流程图 - 离线写博客 - 导入导出Markdown文件 - 丰富的快捷键快捷键加粗 Ct...
2018-09-09 18:45:57
217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人