自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 收藏
  • 关注

原创 JAVA中的是传引用还是传值?

java是传引用还是传值?

2022-11-09 15:45:22 217 1

转载 【转载】深刻理解内存屏障、指令重排

BackendGolangGolang Memory Model2020-06-09一、背景1.1 一个 Code Review 引发的思考一个同学在 Golang 项目里面用 Double Check(不清楚的同学可以去百度搜下,Java中比较常见)的方式实现了一个单例。具体实现如下:var ( lock sync.Mutex instance *UserInfo)func getInstance() (*UserInfo, error) {if instance ==

2022-04-28 16:34:33 895

原创 工具系列专辑

cmake语法makefile语法

2021-12-04 20:18:50 126

原创 后端面试专辑

redis面试问题

2021-12-04 19:06:26 99

原创 java使用bountycastle验证rsa公钥和证书,使用bountycastle处理pem格式密钥

java验证公钥和证书介绍一下编码格式本节主要介绍密钥和证书中常见的编码规则 DER和由 DER 衍生出的密钥文件格式 PEM。DER (Distinguished Encoding Rules)DER (Distinguished Encoding Rules)DER 是用二进制DER编码的证书,DER格式常见于java语言PEM格式是在DER格式的基础上采用base64编码得到,PEM is Base64-encoded DER。PEM格式是采用openssl生成密钥和证书的格式。下面是经典

2021-10-11 19:19:50 1512

转载 PBFT和RBFT

https://www.cnblogs.com/xiaohuiduan/p/12210891.htmlPBFT拜占庭算法无法动态的添加结点,RBFT高鲁棒性拜占庭算法实现了动态的添加和删除节点。PBFT和RBFT算法的容错度一样:f,N,quorumf:代表PBFT中最多能容忍的错误的节点数量 f=[(N-1)/3]N:代表的是总共节点的数量quorum:达到共识需要的节点数量 quorum=[(N+f+1)/2] //总共的节点加上错误的节点除以2,加1是为了平分后共识大于错误节点因此PBF

2021-10-05 11:24:33 451

原创 数字签名、服务器和客户端认证过程、TLS握手

开始正文之前先说一下相关概念:数字签名数字签名就是“非对称加密+摘要算法”,其目的不是为了加密,而是用来防止他人篡改数据。CACertificate Authority,即颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。摘要算法即是hash算法,采用hash函数生成证书元数据的摘要。摘要算法不是用来加密的,其输出长度固定,相当于计算数据的指纹,主要用来做数据校验,验证数据的完整性和正确性。常见的算法有CR

2021-09-06 12:05:12 1249

原创 Linux Mysql将lib文件放置在系统库文件下 &虚拟机mysql和navicat链接问题

找到Mysql的lib库文件所在的位置,找到lib文件夹下最新版本的lib,使用cp命令将lib文件复制到自己规定的库文件,这个存放的库文件一定是在 /etc/ld.so.conf.d文件下的,若没有,自己创建相对的文件夹,把自己的复制的绝对位置放在创建的文件夹即可然后使用下面命令创建链接文件,src就是mysql库文件绝对位置,dst就是上一步复制到的系统库文件的位置 ln -s src dst虚拟机mysql链接navicat问题主要是:端口未监听(下图即是端口未监听处理方法)虚.

2021-06-18 18:08:34 259

转载 linux文本vim编辑器的基本操作

转载自:基础操作vim [OPTION]… FILE…+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首vim + file 直接打开file,光标在最后一行三种主要模式: 命令模式:移动光标,剪切粘贴等 插入模式:编辑,修改文本 扩展模式:保存退出等模式转换: a 在光标后插入内容 A 在光标所在行末尾插入内容 i 从当前光标前插入内容 I

2021-02-08 20:39:16 171

转载 牛客上C++的面试题和答案

作者:弑风之痕链接:https://www.nowcoder.com/discuss/578910来源:牛客网说一下C++和C的区别C++是面向对象的语言,而C是面向过程的结构化编程语言语法上:C++具有重载、继承和多态三种特性C++相比C,增加多许多类型安全的功能,比如强制类型转换、C++支持范式编程,比如模板类、函数模板等引用和指针的区别?指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。引用在定义的时候必须进行初始化,并且不能够

2021-02-08 20:02:39 2195

原创 CCF计算机软件能力认证真题:201312-3

公众号:CppCoding最大的矩形题目在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。输入第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。第二行包含n 个整数h1, h2, … , hn,相邻的数之间由空

2020-08-05 22:58:31 221

原创 CCF计算机软件能力认证真题:201312-2 ISBN号码

公众号:CppCodingISBN号码题目每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。识别码的计算

2020-08-04 22:31:11 170

原创 CCF计算机软件能力认证真题:201312-1 出现次数最多的数

出现次数最多的数题目给定n个正整数,找出他们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。输入输入的第一行只有一个正整数n(1 <= n <= 1000),表示数字的个数。输入的第二行有n个整数s1,s2,…,sn (1 <= si <= 10000,1 <= i <= n)。相邻的数用空格分开。输出输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。输入样例610 1 10 20 30 20输出

2020-08-04 14:49:22 155

原创 Mysql事务

事务事务:一个或者一组sql语句组成一个执行单元,每个sql语句相互依赖,这个执行单元要么全部执行,要么全不执行,如果某条语句失败,则整个单元将会回滚事务的ACIDA:原子性(Atomicicity) C:一致性(Consistency)事务必须使数据库从一个一致性状态到另一个一致性状态,也就是执行前后都必须是一致性状态(转钱时总共的钱)I:隔离性(Isolation)一个事务的执...

2020-02-28 19:46:15 160

转载 strace命令详解

strace命令

2020-02-26 20:53:16 84

转载 Cmake使用手册

cmake使用

2020-02-25 22:23:41 125

原创 Mysql的增删改查

数据操作语句:插入:insert修改:update删除:delete插入语句语法1:insert into 表名(列名...) values(值1,...);语法2:insert into 表名set 列名=值,列名=值...方式1支持插入多行多个值,方式2不支持方式1支持子查询,方式2不支持 //将子查询的结果插入到表插入的值的类型要与列的类型一致或者兼容inse...

2020-02-22 22:09:11 366

原创 Mysql数据库查询语句(史上最全)

show databases;//显示所有数据库use 库;//进入库show tables;//查看库中的表select database();//查看当前所在的库desc table;//查看表结构select version();//查看mysql版本注释 # 单行/* */多行起别名select 100%98 as 结果;//as可以省略去重 distincts...

2020-02-20 20:51:14 2371

原创 int8_t、int16_t、int32_t、int64_t、size_t和ssize_t的区别

公众号:CppCodingint_tint_t是一个大类,不同的机器有不同的字长,所以采用typedef的形式,便于后期维护。int8_t : typedef signed char;uint8_t : typedef unsigned char;int16_t : typedef signed short ;uint16_t : typedef unsign...

2020-01-14 18:24:50 1259

原创 leetcode 48.旋转图像

公众号:CppCodingvoid rotate{ int n=matrix.size(); for(int loop=0;loop<n/2;loop++){//外层循环 处理n/2层 for(int i=0loop,j=loop;i<n-1-loop;i++){//中层循环 处理n-1-loop次替换循环 int pre=matrix[i][j]; for...

2019-12-23 22:59:11 87

原创 leetcode 22.括号的生成

公众号:CppCoding这个解法是回溯,当每次left和right都等于n的时候,进行pushback。popback是能够寻找所有括号的关键,即每次当满足条件pushback后,把最后一个弹出,然后继续去回溯。class Solution{public: void backtrace(int left,int right,int n,string &s,vector<s...

2019-12-22 12:11:54 163

原创 leetcode 17电话号码的字母组合

公众号:CppCoding这个方法,比较好理解,就是先将第一个数字所匹配的字符全部先压入队列,然后每次将这个数字的所有字符进行深度的匹配,例如“23”,就是将“abc”先存入,然后将a进行深度匹配,就是“ad”、“ae”、“af”,匹配完成将a出队,进入下一层,就是b,就是length–,至此向上一样,往复循环,当循环到length为0,则进入下一个数字,再进行上面的过程。class Sol...

2019-12-22 10:29:09 88

原创 leetcode 3. 无重复字符的最长子串

公众号:CppCoding解法一:这个方法是用vector当作容器,存储的是每一次没有重复的最长字符。对每一个传入的字符与vector里面的字符相比,若是没有相等,则将此字符存入vector尾部,有重复的话,先更新不重复字符串的最大长度mlen,在将vector里面的字符全部删除,当目标串全部传入完毕,就返回mlen。class Solution{public: int lengthO...

2019-12-21 16:54:20 141

原创 Leetcode 5.最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。题解分为偶数形式和奇数形式,奇数直接从当前字符向两边扩散,偶数形式需要当前和当前字符的下一个字符开始向下扩散。详细了解查看我们也可以不使用子函数,直接在一个函数中搞定,我们还是要定义两个变量 start 和 maxLen,分别表示最长回文子串的起点跟长度,在遍历s中的字符的时候,我们首先判断剩余的字符数是否...

2019-11-28 22:40:58 84

原创 C++substr函数

basic_string substr(size_type _Off = 0,size_type _Count = npos) const;substr是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。substr有2种用法:假设:string s = ...

2019-11-28 21:37:11 1668

原创 Manacher`s(马拉车)算法

Manacher’s Algorithm,中文名叫马拉车算法,是一位名叫Manacher的人在1975年提出的一种算法,解决的问题是求最长回文子串,神奇之处在于将算法的时间复杂度精进到了O(N),下面我们来详细介绍下这个算法的思路。马拉车算法本质还是中心扩散,为了避免回文串是奇数还是偶数的情况,要对原始的回文串字符进行添加分隔符操作。第一步:添加分隔符假设分隔符为“#”,在字符串“ababa...

2019-11-28 21:33:58 137

原创 红黑树

公众号:CppCoding红黑树即使AVL树拥有平衡特性,但它是通过其不断的旋转操作来实现的,最坏情况下将每回溯一层都要进行旋转调整。即数据量大了以后,AVL树的旋转操作就拖慢了插入和删除的时间。为此引入了红黑树,它具有良好的旋转次数,不至于影响结点插入和删除的时间效率。红黑树的性质红黑树优先插入的结点颜色为红色,因为可以不改变以前树中黑色的数量性质1 : 每一个节点是要么是红色要...

2019-11-24 18:20:07 83

原创 平衡二叉树(AVL)

公众号:CppCoding平衡二叉树二叉查找树给我们带来了很多方便,但是由于其在有序序列插入时就会退化成单链表(时间复杂度退化成 O(n)),AVL-tree就克服了上述困难。AVL-tree是一个“加上了平衡条件的”二叉搜索树,平衡条件确保整棵树的深度为O(log n)。AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树...

2019-11-24 15:13:18 163

原创 二叉搜索树

二叉树的性质:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。没有键值相等的节点。二叉搜索树的时间复杂度为O(logN)查找二叉树中的某个元素若b是空树,则搜索失败,否则:若x等于b的根节点的数据域之值,则查找成功;否则:若x小于b的根节点的...

2019-11-23 19:38:17 151

原创 深入理解mutable、volatile关键字

volatile关键字mutable关键字在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰...

2019-11-22 22:52:59 142

原创 Linux基础操作(上)

公众号:CppCoding文件、目录操作命令1、cd格式:cd [ 目录名称 ] eg:cd ./learn.txt ====> cd home/zy/learn.txt . 是指当前路径常用选项: cd ..  返回上一级目录。 cd ../.. 将当前目录向上移动两级cd - 返...

2019-11-15 19:36:03 142

原创 leetcode 1013.将数组分成和相等的三个部分

公众号:CppCoding题目描述:给定一个整数数组 A,只有我们可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果我们可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1]) ...

2019-11-14 23:36:27 162

原创 leetcode 101. 对称二叉树

公众号:CppCoding给定一个二叉树,检查它是否是镜像对称的。class Solution {public: bool isSymmetric(TreeNode* root) { if(root) return iss(root->left,root->right); return true; } ...

2019-11-07 22:06:05 57

原创 leetcode 108.将有序数组转换为二叉搜索树

公众号:CppCoding将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。解题思路:可以基于二分查找的思想,将排好序的数组依次存入//解法一class solution{ TreeNode* sortedArrayToBST(vector<int> &num...

2019-11-07 22:00:53 56

原创 森林与二叉树的转换

公众号:CppCoding树转化为二叉树1.树中的所有相邻的兄弟之间加一条线。2.对于树中的每个结点,只保留它与第一个孩子结点之间的连线,删去它与其他孩子结点之间的连线。3.以树的根结点为轴心,将整棵树顺时针转动一定的角度。兄弟结点是右孩子子结点是左孩子森林转化为二叉树1.将森林中的每棵树转化为二叉树。2.第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵树的根结点作为前一...

2019-11-07 21:19:17 2593 1

原创 leetcode 98.验证二叉树

给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。解题的关键在于对二叉搜索树的概念,主要就是每个结点的左子树中的关键码均应该小于结点的关键码,而结点的右子树的关键码应该大于结点的的关键码,而且二叉搜索树的关键码不允许重复。//解法一c...

2019-11-07 17:14:03 128

原创 二叉树的三种遍历方法

公众号:CppCoding递归实现//结点数据类型定义typedef struct node{ int data; struct node *lchild,*rchild;}node;node* root;先序遍历算法void PreOrderTraversal(BiTree *T){ if(T){ cout << T->data; PreOrder...

2019-11-04 22:54:35 155

原创 回朔法:八皇后问题

公众号:CppCoding问题描述:在八行八列的国际象棋棋盘摆放着八个皇后。若两个皇后位于同一行、同一列或者同一对角线,则称为互相攻击。现在要求八个皇后不能互相攻击,即不能位于同一行、同一列或者同一对角线。#include <conio.h>//conio头文件是vc里面的内置文件,若果在其他编译器需根据报错改头文件#include <iostream>usi...

2019-11-04 16:39:27 144

原创 递归回朔法:迷宫问题

公众号:CppCoding回朔法简介:假设某问题的解决步骤可能有N步,且每一步的解决方法有M种,按照某种顺序依次试探每一步中的各种方法,一旦失败,就返回上一步继续其他的M-1种方法。简而言之就是,从一条路往前走,不能进则退回来,换一条路。#include <vector>#include <iostream>using namespace std;//把迷宫...

2019-11-03 22:09:31 174

原创 约瑟夫问题

问题描述Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀。然后下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于...

2019-10-28 23:15:38 132

空空如也

空空如也

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

TA关注的人

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