自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (2)
  • 收藏
  • 关注

原创 InnoDB/MyISAM

并发事务解决1、交给应用解决a、更新丢失2、由数据库提供事务间的隔离机制来解决a、脏读b、不可重复读c、幻读3、实现隔离机制的方法a、加读写锁b、一致性快照读(MVCC),MVCC只在可重复读和读未提交两个隔离级别下工作索引分类1、根据存储分类:B-树索引哈希索引2、根据用途分类普通索引、唯一性索引、主键索引、空间索引、全文索引3、索引实现原理MyISAM 引擎使用B+树作为索引结构,叶结点的data域存放的是记录的地址Inn...

2021-09-01 18:02:38 131

原创 MySQL事务

事务是mysql执行的最小单元MySQL事务1、在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。2、事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。3、事务用来管理 insert,update,delete 语句。事务命令mysql> start transaction;#手动开启事务mysql> insert into t_user(name) values('pp');mysq...

2021-09-01 17:58:35 135

原创 Effective C++

尽量使用const、enum、inline替换#define (对于单纯常量最好以const对象或enums替换#define)• 无法利用#define创建一个class专属常量,因为#define并不重视作用于,意味着#define不仅不能用来定义class专属常量,也不能够提供任何封装性尽可能使用const• 用于class外部修饰global或namespace作用域中的常量,或修饰文件、函数、或区块作用域被声明为static的对象• const出现在星号左边表示被指物是常量,出现在..

2021-09-01 16:58:23 259

原创 openssl 内部封装的哈希

1、在一般的数据结构如线性表和树中,记录在结构中的相对位置是与记录的关键字之间不存在确定的关系,在结构中查找记录时需进行一系列的关键字比较。这一类查找方法建立在“比较”的基础上,查找的效率与比较次数密切相关。理想的情况是能直接找到需要的记录,因此必须在记录的存储位置和它的关键字之间建立确定的对应关系,使每个关键字和结构中一个唯一的存储位置相对应。在查找时,只需根据这个对应关系找到给定值。这种对应关系既是哈希函数,按这个思想建立的表为哈希表。哈希表存在冲突现象:不同的关键字可能得到同一哈希地址。在建造哈希表时

2021-08-24 11:08:56 186

原创 Malloc和堆利用

1、函数执行流程void * malloc(size_t bytes) void *__libc_malloc (size_t bytes) __malloc_hook void * _int_malloc (mstate av, size_t bytes)2、相关结构体分析malloc_state/* have_fastchunks indicates that there are probably some fas

2021-08-14 17:27:29 429

原创 堆、malloc_chunk

堆• 在程序运行过程中,堆可以提供动态内存的分配,允许程序申请大小未知的内存。• 堆其实就是在程序虚拟地址空间的一块连续的线性区域,它由低地址向高地址生长。• 我们一般称管理堆的那部分程序为堆管理器。• 堆管理器位于用户程序和内核中间,主要负责 : • malloc• free• double free : 当p已经被释放后再次释放,造成乱七八糟的现象。• 请求堆• 响应用户的申请内存请求,向操作系统申请内存,然后返回给用户程序。为了保持内存管理的高效性,内核一般会预先分配很大的一块连续的

2021-08-14 17:16:35 431

原创 wpscan 升级错误处理

1、更新国内的源编辑sources.list,将kali更新源加入其中sudo vim /etc/apt/sources.list国内更新源#阿里云deb http://mirrors.aliyun.com/kali kali-rolling main non-free contribdeb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib#清华大学deb http://mirrors.tuna.tsi

2021-08-14 17:10:18 498

原创 docker 搭建wordpress

wordpress 5.0 RCE漏洞利用环境搭建拉取并下载镜像到本地docker pull medicean/vulapps:w_wordpress_7启动环境docker run -d -p 8000:80 medicean/vulapps:w_wordpress_7wordpress 4.6 RCE漏洞利用环境搭建拉去并下载镜像到本地docker pull medicean/vulapps:w_wordpress_6启动环境docker run -d -p 8001:80 me

2021-08-14 17:09:30 179

原创 ubuntu18.04 ->ZSH

安装oh-my-zsh1、安装zshsudo apt-get install zsh2、把默认的Shell改成zshchsh -s /bin/zsh注意:不要使用sudo。3、配置密码文件,解决chsh: PAM认证失败的问题sudo vim /etc/passwd 把第一行的/bin/bash改成/bin/zsh,这个是root用户的。4、安装Gitsudo apt-get install git5、安装oh-my-zshsh -c “$(curl -fsSL.

2021-08-14 17:08:13 200

原创 Kail 开启ssh

一. kali安装ssh服务1.修改源1 root@DGG:~# vi /etc/apt/sources.list2 deb http://http.kali.org/kali kali-rolling main non-free contrib2.更新一下源apt-get update3.下载ssh服务包apt-get install ssh4.打开ssh服务1 service ssh start 打开ssh服务2 service ssh status 查看状态3 ser

2021-08-14 17:05:54 333

原创 VS链接MySQL

一、环境配置先安装mysql,安装过程在此不赘诉。安装完成之后右键项目属性添加mysql 中include头文件路径并添加库文件路径和库文件,如下图:以后步骤完成之后输入下面的代码执行,如果出现直接将libmysql.dll文件复制到 C:\Windows\System32目录下即可MySQL4CAPI.h##第一部分#pragma once#include "mysql.h"#include <string>#include <vector>using

2021-08-14 16:55:12 948

原创 restsdk安装及使用

restsdk安装及使用1、安装相关的库,如boost、openssl可以直接用windows中vcpkg工具安装但经常网络会出错,推荐使用离线包直接安装,即使用管理员ps页面,切换到vcpkg离线包目录执行bootstrap-vcpkg.bat文件、等待环境安装完成vcpkg install --triplet x64-windows zlib openssl boost-system boost-date-time boost-regex boost-interprocess websock

2021-08-11 11:05:40 1430

原创 适配器模式(C++)

意图:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作使用场景1、当使用一个已经存在的类时,而它的接口不符合你的需求2、创建一个可以复用的类,并且该类可以与其他不相关的类或不可预见的类协同工作3、对于对象适配器向使用其已经存在的子类优缺点优点: 1、可以让任何两个没有关联的类一起运行。 2、提高了类的复用。 3、增加了类的透明度。 4、灵活性好。缺点: 1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,

2020-06-12 20:23:54 190

原创 顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.//主要是要判断好边界条件class Solution {public: vector<int> printMatrix(vector<vector<int>> matrix) {

2020-06-04 12:09:15 83

原创 包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。class Solution {public: void push(int value) { m_stack.push(value); if(m_min_stack.empty()){ m_min_stack.push(value);

2020-06-03 11:34:36 74

原创 两个链表的第一个公共结点

输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNo

2020-05-25 11:53:13 63

原创 第一个只出现一次的字符

在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)class Solution {public: int FirstNotRepeatingChar(string str) { if(str.empty()) { return -1; } map<char,

2020-05-22 20:41:34 77

原创 把二叉树打印成多行

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: vector<vector<i

2020-05-22 17:24:05 80

原创 按之字形顺序打印二叉树

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*///主要思路:结合栈是先进

2020-05-21 22:16:48 81

原创 对称的二叉树

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*///主要思路是利用一个队列存储结点,类似于BFS查找,以根结点

2020-05-21 20:54:13 70

原创 二叉树的深度

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*///也是利用广度优先搜索的方法解决,将结点存储在队列中,然后判断在同一高度下是否存在左右子树,//

2020-05-16 13:40:34 68

原创 单例模式

三、单例模式定义:保证一个类仅有一个实例,并提供一个实例的全局访问点目的作用:1、在某些特殊的软件系统中,为了保证逻辑正确和良好的效率,必须在系统中存在一个实例。2、绕过常规的构造器,提供一种机制来保证一个类只有一个实例。使用场景:1、读取配置文件2、频繁实例化并随后销毁时3、频繁访问IO资源时,如各种数据的连接4、创建对象时对资源的消耗过多并耗时,但是又经常要用到对象UML结构:四种单例模式:1、饿汉式单例:将实例设置为static变量,当类进行装载时进行创建,且stat

2020-05-14 21:41:56 69

原创 工厂模式

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂模式使一个类的实例化延迟到子类目的作用:1、解耦合2、适应需求的变化,适应要创建的对象的具体类型经常变化3、绕过对象的创建,提供一种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧耦合使用场景:1、数据导出2、支付接口UML结构:结构代码:```c++#include <iostream>using namespace std;class Export_File{public:

2020-05-13 22:10:53 158

原创 观察者模式

定义:定义对象间的一种一对多(变化)的的依赖关系,以便当一个对象的状态发生改变是,所有依赖于它的对象都得到通知并自动更新作用:1、在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”,当一个目标对象的状态发生改变,所有的依赖对象即观察者都将得到通知。如果这样的依赖关系过于紧密,将使软件不能做到适应业务变化。2、弱化依赖关系,形成一种稳定的依赖关系。从而达到结构的松耦合。模型:1、推模型:把具体的内容相当于广播模式推送给目标对象2、拉模型:目标对象在通知观察者时,只传递少量的信息。如

2020-05-13 22:05:54 96

原创 红黑树

红黑树:性质:1、每个节点是红的或者黑的2、根节点是黑的3、每个叶子节点是黑的4、如果一个节点是红的,则它两个孩子都是黑的5、对每个节点,从该节点到其子孙节点的所有路径上的包含相同数目的黑节点6、每个叶子节点都隐藏,并且为黑色应用:1、Linux进程调度CFS2、Nginx Timer事件管理3、Epoll事件块的管理红黑树:数据结构:typedef int KEY_TYPE;typedef struct _rbtree_node{ unsigned char

2020-05-11 21:15:50 111

原创 剪绳子

给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。////动态规划:按照从下而上的顺序计算,也就是说我们先得到f(2),f(3),再得到f(4)...

2020-05-05 17:41:39 136

原创 滑动窗口的最大值

给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, ...

2020-05-05 15:29:09 96

原创 左旋转字符串

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!//整体思路是先将n%len这部分先反转,然后再将len - n%len这部分反转,最后再整体反转clas...

2020-04-28 19:26:50 62

原创 和为S的两个数字

题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。//也是类似滑动窗口的解题办法但是这次窗口有范围限制class Solution {public: vector<int> FindNumbersWithSum(vector<...

2020-04-28 12:36:51 65

原创 和为S的连续正数序列

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序列内按照从小...

2020-04-27 12:44:58 113

原创 数字在排序数组中出现的次数

统计一个数字在排序数组中出现的次数。class Solution {public: int GetNumberOfK(vector<int> data ,int k) { if(data.size() == 0) { return 0; } int len = data...

2020-04-26 12:34:26 77

原创 矩形覆盖

我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法://利用斐波那契数列求解://当n为1时有一个2*1的小矩形,要组成2*1的矩形只有1种方法//当n为2时有两个2*1的小矩形,要组成2*2的矩形只有2种方法//当n为3时有三个2*1的小矩形,要组成2*3的矩形只有3种...

2020-04-22 12:13:48 108

原创 数组中出现次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { ...

2020-04-20 15:50:07 118 1

原创 从上往下打印二叉树

从上往下打印出二叉树的每个节点,同层节点从左至右打印。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*///利用广度优先遍历解决class Solution ...

2020-04-20 14:40:11 82

原创 合并两个排序的链表

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 /*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Merge(L...

2020-04-17 13:02:34 70

原创 反转链表

输入一个链表,反转链表后,输出新链表的表头。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*///使用头插法解决class Solution {public: ListNode* ReverseList(ListNode* ...

2020-04-16 13:03:09 64

原创 链表中倒数第k个结点

输入一个链表,输出该链表中倒数第k个结点。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*///先让first指针走k - 1步,然后再让lastptr再和firstptr一起走。其中要判断k的值是否越界class Solution...

2020-04-15 11:39:38 76

原创 调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。//利用插入排序的思想,先找到第一个奇数,然后在第一个奇数的基础下往前查找如果是偶数的话将该数插入到该偶数的//前一个数,循环结束再将第一个奇数插入到查找偶数循环的最后一个数。class Solution {public:...

2020-04-14 18:47:39 53

原创 数值的整数次方

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0//利用快速幂求解//快速幂: 快速幂:如计算经典的2^11;11的二进制为1011,2^3*1+2^2*0+2^1*1+2^0*1,2^(2^3*1+2^2*0+2^1*1+2^0*1)。class Solution {public: ...

2020-04-14 15:58:18 64

转载 二进制中1的个数

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。class Solution {public: int NumberOf1(int n) { int count = 0; while(n) { count++; n = (n - 1) & n; ...

2020-04-13 14:21:41 57

cpprestsdk.zip

安装过程见https://blog.csdn.net/qq_41661777/article/details/119598840

2021-08-11

红黑树rbTree.c

红黑树的遍历,查找过程,以及插入时对红黑树进行位置修复,修复包括左旋右旋,还有就是红黑树节点的删除,删除之后还要对节点修复

2020-05-12

空空如也

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

TA关注的人

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