- 博客(36)
- 资源 (25)
- 收藏
- 关注
原创 一致性协议 2PC 3PC
2PC两阶段提交是一种思想,XA协议,TCC,Paxos,Raft都用到了这种思想。分为投票和提交两个阶段: 投票阶段,协调者向参与者发送事务请求,参与者进行操作并记录redo和undo,但不提交,并将操作结果通知协调者。 提交阶段,协调者收到参与者的操作结果后,如果都是成功的,就通知参与者提交。如果有不成功的,就通知参与者根据undo回滚。优点:原理简单,实现方便。缺点: 单点故障,协调者挂了,参与者会一直阻塞下去。可以选举新的协调者,但是在选举过程中,参与者会一直处于...
2022-03-25 15:58:18 194
原创 智能指针shared_ptr reset()
当智能指针调用了reset函数的时候,就不会再指向这个对象了。如果还有其它智能指针指向这个对象,那么其他的智能指针的引用计数会减1。void test(){ std::shared_ptr<int> p1(new int(100)); std::shared_ptr<int> p2 = p1; std::shared_ptr<int> p3 = p1; cout << "p1: " << p1.use
2022-03-15 21:12:57 4554
原创 回溯算法 全排列 去重
上篇文章说了全排列的代码实现,不包含重复元素。本篇文章讲解包含重复元素的话,应该如何做去重操作。对应力扣第47题。题目描述给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]解题思路..
2022-03-07 11:36:05 294
原创 回溯算法 全排列
力扣第46题,求全排列,典型的回溯法,记录一下解题方法。下一节中我们来说说如果包含重复元素,怎么做去重。题目描述给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出.
2022-03-07 11:32:03 106
原创 回溯算法 复原IP地址
力扣93题,复原IP地址,典型的回溯法,记录一下解法。问题描述有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "[email protected]" 是 无效 IP 地址。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址
2022-03-07 11:11:50 239
原创 最大连续递增数字串
描述:给定一个字符串,求最大连续递增数字串。比如输入abc12324ff1236,输出1236;解法:双指针代码如下:#include <iostream>#include <vector>#include <map>#include <time.h>#include <algorithm>using namespace std;string getMaxSubString(string& s){
2022-03-02 17:38:28 629
原创 生成不同的二叉树
题目描述给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。思路:二叉搜索树的特点是根节点大于左子树所有节点的值,小于右子树所有节点的值,且左右子树都满足该性质。对于序列中任意一个值i,可以将区间分成两块,[1, i - 1],和[i + 1, n]。左子树和右子树的生成相较于原问题是序列长度缩小的子问题,因此可用递归法,且递归函数肯定包括区间的起点和终点。递归函数:vector<T
2022-01-27 14:58:38 863
原创 根据数组构造二叉树最强解法总结
方法论构造二叉树题目一般都是用数组构造,可以两个数组或者一个数组构造。用两个数组构造一棵二叉树的递归函数需要四个参数,每个数组都要指定起始和结束位置:TreeNode* build(vector<int>& inorder, int inbegin, int inend, vector<int>& postorder, int postbegin, int postend){}题目包括: LT106 从中序与后序遍历序列构造二叉树 LT...
2022-01-22 16:56:58 2795 1
原创 判断二叉树是否平衡
题目描述判断给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。解题思路一棵二叉树是平衡二叉树,当且仅当其所有子树也都是平衡二叉树,因此可以使用递归的方式判断二叉树是不是平衡二叉树,递归的顺序可以是自顶向下或者自底向上。解法一:自顶向下递归。对于遍历到的结点,先计算其左右子树的高度,判断是否平衡,如果平衡,再分别递归左右子树。会有大量的重复计算。/*** Defini.
2022-01-15 18:24:02 1233
原创 输出二叉树的所有路径
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。输入:root = [1,2,3,null,5]输出:["1->2->5","1->3"]解法一:深度优先搜索,递归,迭代也可以实现深度优先搜索,用到了回溯。找到叶子节点时,就生成一条路径,并放到结果集中,然后回溯到上一个节点,开始遍历上一个节点的右节点。是先序遍历。/*** Definition for a binary tree
2022-01-14 19:38:30 1477
原创 计算二叉树左叶子之和
计算给定二叉树的所有左叶子之和。示例1:3/ \9 20/ \15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24示例2:1\2在这个二叉树中,没有左叶子,返回0思路:本题的关键在于如何判断是不是左叶子?平时我们解二叉树的题目时,已经习惯了通过节点的左右孩子判断本节点的属性,而本题我们要通过节点的父节点判断本节点的属性,该题可以扩展大家对二叉树的解题思路。具体方法为:判断父节点的左不为空,且父的左的左为空,且父的左的右为空
2022-01-14 11:43:13 823
原创 判断是否为对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。解法一:递归如果一个树的左子树与右子树镜像对称,那么这个树是对称的。因此,该问题可以转化为:两个树在什么情况下互为镜像?如果同时满足下面的条件,两个树互为镜像: 它们的两个根结点具有相同的值 每个树的右子树都与另一个树的左子树镜像对称,每个树的左子树也与另一个树的右子树镜像对称。 上述两个条件表明:两个树如果对称,首先根节点的值要相同,其次除了根节点的其他子树也要镜像,因此..
2022-01-12 20:37:24 2483 1
原创 教你删除流氓软件
早上到公司,打开电脑就被惊呆了,电脑上莫名其妙地被装了16个软件,各种弹窗把屏幕占的满满,五颜六色好不壮观。于是到控制面板中一一删除。本以为事情到此就结束了,可是第二天还是有弹窗,本预到控制面板中再次删除,可是居然找不到这货。好吧,于是打开任务管理器:发现了该货的后台进程,右键->打开文件所在的位置,然后将其目录删除。然后win+R,输入regedit,进入注册表,将该货从注册表中删除即可。其他流氓软件可以参考此法!!!从此我的世界清静多了,写代码也安心多了..
2020-10-22 09:24:14 3062
原创 MySQL group by 使用临时表导致慢查询问题定位
问题描述:拼团系统突然出现很多慢查询,(拼团规则表,Frule_id是主键,Fcreate_time不是索引,Fend_time是索引字段)语句select * from t_group_rule group by Frule_id order by Fcreate_time desc limit 0,10;手动执行发现需要5s钟,可是全表只有70万行数据,即使全表扫描也要不了这么久啊,果断explain一把:Extra显示用到了临时表和排序,可是group by后面是索引啊,为什么还要
2020-09-27 15:16:38 962
原创 std sort排序
#include <algorithm>#include <functional>#include <array>#include <iostream>#include <vector>using namespace std;int main(){ std::vector<int> s = { 5...
2019-08-05 10:17:27 227
原创 windows eclipse配置shell开发环境
安装"man page viewder"插件依次”help“->“install new software”->“add”,Name输入shell,Location输入下列地址http://download.eclipse.org/technology/linuxtools/updates-nightly/在“Linux Tools”中选择“Man Page Viewer”,进...
2019-05-26 11:26:49 561
原创 子类析构时是否要调用父类的析构函数
descprition构造时,先构造父类,再构造子类部分,因此父类和子类的构造函数都会被调用;析构时,要分情况:(1)(父类析构函数不是虚函数)使用父类指针指向子类对象,析构该子类对象时,只会调用父类析构函数,因为不具多态性;代码理解:class child:public parent{};parent *p = new child();delete p; //调用父类析构函数...
2019-03-21 17:18:23 16151
原创 popen和pclose函数
1、description函数原型:#include <stdio.h>FILE *popen(const char *cmdstring, const char *type);返回值:若成功则返回文件指针,若出错则返回NULLint pclose(FILE *fp);返回值:cmdstring的终止状态,若出错则返回-1popen函数原理:创建一个管道,调用for...
2019-03-21 16:18:14 659
原创 单链表的构建、遍历、删除、插入c源码
description头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等)。有了头结点后,对在第一个元素结点前插入结点和删除第一个结点,其操作与对其它结点的操作统一了。首元结点也就是第一个元素的结点,它是头结点后边的第一个结点。头结点不是链表所必需的。头指针是指向头结点的一个指针。code#inclu...
2019-03-21 14:45:53 284
原创 二叉树构建、计算、遍历源码c++
descpription下面代码给出二叉树的构建、计算节点总数、叶子节点总数、深度、前序、中序、后序遍历、销毁的完整代码,在codeblocks上测试过可以直接运行。#include <iostream>#include <stdlib.h>using namespace std;typedef struct TreeNode{ int data;...
2019-03-20 16:17:20 335
原创 线程状态:pthread_join和pthread_detach的作用
使用pthread_create创建的线程有两种状态:joinable和unjoinable。如果是joinable状态,则该线程结束后(通过pthread_exit结束或者线程执行体任务执行完毕)不会释放线程所占用堆栈和线程描述符(总计8K多)等资源,除非在主线程调用了pthread_join函数之后才会释放。pthread_join函数一般应用在主线程需要等待子线程结束后才继续执行的场景。...
2019-03-04 16:46:23 475
原创 mgr balancer模式探索及配置方法
一、简介Mgr提供了很多有用的模块,可以通过ceph mgr module ls命令进行查询,其中enabled_modules表示已经使能的,而disabled_modules表示未使能的模块,使能一个模块可以使用ceph mgr module enable $module_name命令,本文主要介绍其中一个模块:balancer。balancer模块用于平衡pg到osd的分布,从而平均os...
2019-02-27 17:27:26 4069 1
原创 RGW ACL分析文档
1、描述ACL(Access Control List)权限控制列表,用于控制用户的行为权限。RGW提供bucket和object级别的权限访问控制,RGW允许针对每个用户设置不同的权限,也可以一次性对所有用户设置权限,具体的权限值及含义如下表:权限值权限对访问者的限制READ可读。Bucket:列出bucket下的object;Object:读取object的数据;...
2019-02-22 17:04:21 1176
原创 查看修改qcow2文件
描述可以通过qemu-nbd工具映射qcow2文件到本地设备,然后mount到本地目录进行查看或者修改;步骤:1、安装相关软件kpartx、qemu-nbdapt-get intall kpartx2、加载内核模块 nbdmodprobe nbd max_part=8查看nbd模块的加载:lsmod |grep nbd3、映射qcow2文件到本地设备qemu-nbd -c...
2019-02-20 17:28:17 10512
原创 算法复杂度
写在之前在学习算法之前,应该了解什么是算法复杂度,它包括时间复杂度【时效】和空间复杂度【存储】,用于衡量一个算法的好坏;对于同一个问题来说,可以有多种解决问题的算法,不同方法会有不同的复杂度,我们总是希望既快占用内存又小的算法。所以好的算法应该具备时效高和存储低的特点。时间复杂度设问题的规模为n,基本操作重复执行的次数是问题规模n的某个函数,记为f(n),则算法的时间量度可以记为:T(n...
2019-02-18 15:38:33 313
原创 STL总结
引言接触过c++语言的开发人员应该都使用过stl,其封装了各种查找、排序、搜索算法,使用起来确是很方便。本文只是个人的学习笔记,记录一些常用知识点,在后期回顾时能快速记起。如何学习stl,只需清晰弄懂下面这几个问题,足以应对工作中编程需要:1、容器分类?2、各种容器的实现原理、优缺点,根据实际场景如何选择?3、理解迭代器、迭代器失效问题4、各种容器类的成员方法5、操作容器的一些非成...
2019-02-15 18:06:44 195 1
原创 理解微服务
描述其思路不是开发一个巨大的单体式应用,而是将应用分解为小的、互相连接的微服务。一个微服务完成某个特定功能,微服务之间通过REST API通信。一些微服务也会向终端用户或客户端开发API接口,但通常情况下,这些客户端并不能直接访问后台微服务,而是通过API Gateway来传递请求。API Gateway一般负责服务路由、负载均衡、缓存、访问控制和鉴权等任务。优缺点优点通过分解模块,解决...
2019-01-31 15:53:25 167
原创 linux文件系统扩展属性在ceph中的应用
描述扩展属性是与文件和目录相关的key-value对,用来提供文件系统的一些附加功能,例如ACL。对文件或是目录拥有读权限的用户可以看到其扩展属性。扩展属性所需的空间被计算在文件属主的磁盘配额上。目前在Linux上支持扩展属性的文件系统有:ext2,ext3,ext4,XFS,JFS,reiserfs。在ceph中,不管是块设备、对象存储、文件存储最后都转化成了底层的对象object,这个...
2019-01-29 17:42:40 611
原创 cosbench使用文档
描述COSBench是Intel团队基于java开发,用于存储的测试工具,全称是Cloud object Storage Bench;COSBench分控制台和发起请求的driver,driver可以分布式部署,可以支持swift、s3、Openstack等接口;安装下载:https://github.com/intel-cloud/cosbench解压到任意目录,然后进入到对...
2019-01-29 17:17:34 6898 1
原创 微信小程序导入demon
本文章只单纯讲解如何导入现有demo,让新手快速上手开发,了解工程;可以到这个地址下载现成的demo,每个demo都带有效果图;https://download.csdn.net/download/ff_gogo/10649421 其实对于微信小程序开发还是比较简单的,对于编码能力要求并不高;难的是对于各种样式的设计、以及小程序产品的定位,毕竟这纯粹属于应用开发,和系统无关;...
2019-01-28 17:09:59 751
原创 ceph pg不一致问题
今天在公司环境中出现了pg不一致问题,通过ceph health detail命令查看如下: pg 19.211 is active+clean+inconsistent, acting [88,16] pg 19.214 is active+clean+inconsistent, acting [59,36] pg 19.2b7 is active+clean+inc...
2018-12-12 19:04:40 2890
原创 ceph mgr dashbord
描述监控集群功能,提供了很多restful api供用户调用,开启mgr功能:(1)查看mgr提供的模块:[root@node1 ~]# ceph mgr module ls{ "enabled_modules": [ "balancer", "dashboard", "restful", "status" ...
2018-11-05 14:58:34 1133
原创 s3cmd安装与使用
安装centos在线安装,yum install s3cmd配置执行s3cmd --configure命令,根据提示输入accesskey和scretkey。注意倒数第二步,Test access with supplied credentials? [Y/n] n,可以选择n,表示不做验证,因为前面过程中输入的可能有错误,如果选择Y,会验证失败,继而导致无法生存配置文件;跳...
2018-11-02 15:55:46 4052
ceph设计原理与实现_高清带书签完整版
2018-08-31
ceph分布式存储学习指南_带目录书签_高清完整版
2018-08-31
CplusplusConcurrencyInAction_PracticalMultithreading_c++
2018-08-31
Cpp_Concurrency_In_Action_c++高级编程
2018-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人