自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HiMark

不会写诗歌的马克吐温

原创 AVL平衡二叉树,红黑树原理。

二叉搜索树 插入和删除操作必须先查找,查找效率代表了二叉搜索树中各个操作的性能 最优情况:二叉搜索树为完全二叉树,比较次数Log2^N 最坏情况:二叉搜索树为单支树,平均比较次数N/2 平衡树 平衡树: AVL树,红黑树 AVL树:(二叉搜索树改良版) 具有二叉搜索树的性质,其...

2018-11-18 11:18:07 2990 1

原创 C语言求水仙花数

题目描述: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。 输入描述 输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)。 输出描述 对于每...

2018-07-06 21:37:06 27394 2

原创 求二叉树的叶子节点【数据结构】

求二叉树的叶子节点 有两种方法都是递归实现 方法一 将先序遍历打印节点改为:先判断是否是叶子节点(左右子树为空) 如果是计数器+1,如果不是则不做处理 遍历到一个非空节点时判断一次 1 先判断根节点 2 在递归遍历左子树 3 在递归遍历右子树 4 子树的遍历过程遵循...

2018-07-06 17:08:26 6115 0

原创 求二叉树的结点个数 【数据结构】

求二叉树的结点个数 如下利用递归来实现 方法一 根据递归函数实现,如果树不为空,根节点为1 1 统计根节点左子树 2 统计根节点右子树 3 将左子树节点个数+右子树节点个数+根节点个数1=即为整颗树的节点个数 4 统计左右子树的节点个数也是按照1~3的步骤进行 5 当树为空时,根节点的个数为...

2018-07-06 16:43:56 15093 3

原创 链式队列的入队列,出队列,取队首元素,

队列:先进先出 链式队列: 通过单链表实现队列的功能, 入队列的方式为单链表的尾插 出队列的方式为单链表的头删 链式队列的结构 //定义链式队列的节点 typedef char Datatype; typedef struct LinkQueueNode { D...

2018-05-25 10:39:31 4243 0

原创 Linux入门 常用编译器的介绍及其对比

GCC/G++: 开源的,Linux/Unix平台上的首选,而且支持N中硬件平台,如果想进行跨平台编译的话,这是一个不错的选择。编译效率和编译后的代码效率都不错 VisualC++ : Windows平台上最流行的编译器,和VS集成的很好,编译效率和编译后的代码效率都不错 VS系列...

2018-03-29 10:06:19 4902 0

原创 wget获取https地址时加入--no-check-certificate

[root@localhost ~]# wget https://www.kernel.org/pub/software/scm/git/git-2.0.5.tar.gz --2018-03-22 01:43:37-- https://www.kernel.org/pub/software/sc...

2018-03-22 16:53:23 12932 0

原创 打印1-100之间的素数 C++实现

打印1-100之间的素数 素数:除了1和它本身之外不能被其他数整除/* 1-100素数 #include<iostream> #include<math.h> using namespace std; void main() { int i; ...

2018-03-14 00:01:00 6540 3

原创 自定义strcat函数的用法及其实现C语言

strcat 功能把src所指字符串添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’\0’注意:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串#include<stdio.h> #include<assert.h> char...

2018-03-05 14:57:15 2407 0

原创 C语言冒泡排序将一个数组按照从小到大进行排序

例如 int a[10] = {0,5,2,3,6,9,8,7,4,1} 对其10个整数由小到大进行排序 思想:冒泡排序 实现一: #include&lt;stdio.h&gt; int main() { int i = 0; int a[10] = ...

2018-03-05 10:28:55 29881 0

原创 将一个数组中的值按逆序重新存放(简易版)C语言实现

将一个无序数组中的数据按照相反的顺序存放 例如 int arr[10]={1,2,3,4,5,6,7,8,9,0}方法:采用for循环 交换len/2次既可。 不采用冒泡的原因是因为此数组中的数据无序#include<stdio.h> int main() { char ...

2018-03-05 09:26:58 14734 1

原创 实现一个函数可以求任意个参数的平均值 C语言

利用可变参数列表#include<stdio.h> #include<stdarg.h> int average(int n, ...) { va_list arg; int i = 0; int sum = 0; va_start(arg,...

2018-02-24 23:14:32 4819 0

原创 对一维数组初始化并输出一维数组值

#include<stdio.h> int main() { int arr[10] = { 0 }; int i = 0; for (i = 0; i < 10; i++) { arr[i] = i; } for ...

2018-02-20 08:21:05 2414 0

原创 写一个函数判断闰年C语言

闰年:能被4整除同时不能被100整除,或者能被400整除。#include<stdio.h> #pragma warning (disable:4996) int runnian(int n) { if (((n%100!=0) && (n%4==0)) ||...

2018-02-20 00:08:48 5136 0

原创 判断一个数是不是素数,编写函数

素数:除了一和它本身之外不能被其他的数整除#include<stdio.h> //编写函数判断一个数是不是素数 int sushu(int n) { int j = 0; for (j = 2; j < n; j++) { if ...

2018-02-20 00:05:10 6440 1

原创 用二分查找法在一维有序数组中查找某个值并输出其下标值

关键字与左右标的大小比较#include<stdio.h> int main() { int arr[] = { 0, 1, 2, 3, 4, 6, 7, 9 }; int left = 0; int right = sizeof(arr) / sizeof(...

2018-01-13 00:29:14 8051 1

原创 计算n的阶乘 C语言

#include<stdio.h> #pragma warning (disable:4996) int main() { int i = 0; int n = 0; int count = 1; printf("请输入:"); ...

2018-01-12 23:47:12 6603 1

原创 循环语句中break 与 continue的区别

总结: 1 break; while循环break是用于永久终止循环。即不执行本次循环中break后面的语句,直接跳出循环。 2continue; while循环continue是用于终止本次循环。即本次循环中continue后面的代码不执行,进行下一次循环的入口判断。 #include...

2018-01-11 11:17:13 19261 0

原创 计算器C语言的实现简单易懂版

思想: 运用switch语句进行功能的选择即可实现简易计算器 #include //计算器 void menu() //自定义的菜单界面 { printf("----------------...

2018-01-11 10:19:52 19740 6

原创 判断两个数组中是否有相同的元素 C语言

判断两个数组中是否有相同的元素方法一:用第一个数组的第一个元素遍历第二个数组的每一个元素,然后依次用第一个数组的第二个第三个等等元素遍历数组二的每一个元素。#include<stdio.h> int main() { int i = 0; int j = 0; ...

2018-01-11 08:59:30 10611 0

原创 windows通信之共享文件映射

client // shareclient.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include "pch.h" #include <iostream> #include<Winsock2.h&...

2019-08-15 20:41:57 126 0

原创 windows 通信之命名管道

client //等待实例化 //创建管道 //发收数据 //关闭会话 #include "pch.h" #include <iostream> #include <windows.h> #include <stdio.h> #include...

2019-08-15 20:40:10 46 0

原创 winsock I/O通信之Select

//select 特点 (轮询) //可监控的文件描述符取决于sizeof(fdset)值 //将文件描述符加入select监控集的同时,使用数组保存select监控的文件描述符 //select返回时将数组中的文件描述符,与监控的文件描述进行比较 //select 缺点 //每次调用都要设置文件...

2019-08-15 20:38:14 95 0

原创 编译与反编译

代码从预处理,编译,汇编,链接,最终形成文件,C语言作为编译语言,可以准确定义在不同情况下所采取的行动。 程序的执行过程 预处理: 头文件展开,宏替换,去掉注释 test.i 编译: 生成汇编码 词法和语法的检查 te...

2019-08-11 22:44:02 827 0

原创 VS217编译安装Detours库

A、添加工程的头文件目录:工程—属性—配置属性—c/c+±–常规—附加包含目录:加上头文件存放目录。 B、添加文件引用的lib静态库路径:工程—属性—配置属性—链接器—常规—附加库目录:加上lib文件存放目录。 C 然后添加工程引用的lib文件名:工程—属性—配置属性—链接器—输入—附加依赖项:...

2019-08-08 09:32:59 273 0

原创 winsock I/O selec/WSAEventSelect模型

#include<Winsock2.h> #include<stdio.h> #pragma comment(lib,"ws2_32.lib") #pragma warning(disable:4996) /* //创建服务器套接字 socket ...

2019-07-30 21:10:21 43 0

原创 Winsock多线程TCP通信

#include<WinSock2.h> #pragma warning(disable:4996) #pragma comment(lib,"ws2_32.lib") #include<stdio.h> SOCKET clientSocket[10...

2019-07-30 21:08:06 484 0

原创 window下socket实现TCP服务器

服务器 1.初始化 WSAStartup(…) 2.创建Socket s = Socket ( … ) 3.绑定端口 ret = bind ( … ) 4.监听 ret = listen ( … ) 5.接收客户端的连接请求 s_new = accept ( … ) // 三次握手发生在这个过...

2019-07-29 20:57:05 1061 0

原创 Windows 命名管道通信

什么是命名管道? 命名管道是一种简单的进程间通信机制, 命名管道的命名规范 \\server\Pipe\[path]name 第一部分server,指定服务器名字 第二部分Pipe,硬编码即原样照录 第三部分 唯一命名+路径 例如 \myserver\Pipe\mypipe \Testse...

2019-07-29 20:50:38 97 0

原创 Centos7 linux下 安装 Redis 5.0

环境:Centos7+Redis 5.0,如果环境不符合,本篇仅供参考。 1、准备工作 作者习惯软件安装包放在单独路径,解压路径也放在单独路径。 下载路径:mkdir -p /data/softwore cd /data/software 2、软件下载 redis包下载地址,可以下载后用ftp工具...

2019-07-23 09:19:59 67 0

原创 CephFS简析

Ceph简介 分布式存储系统,支持对象存储,块存储,文件系统。 无中心结构,系统规模和存储容量可以扩展。 多副本,纠错码确保数据安全。 Ceph系统架构 Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统 特点:高性能,高可用,高扩展,特性丰富。 Clients:客户...

2019-07-21 23:09:08 48 0

原创 剑指offer,面试题1,面试题2

面试题1:赋值运算符函数 面试题2:实现Singleton模式 赋值运算符函数 //TEST 1赋值运算符重载 class String { public: String(const char* pst =nullptr); String(const String&am...

2019-01-27 14:32:01 473 0

原创 Linux大三搜索命令locate,grep,find

locate:可以搜索文件和目录的名称,但是不能搜索文件的内容。 grep:在文件中搜索数据 find:根据指定条件对文本进行搜索 locate 搜索文件名数据库 -i 不区分大小写 locate -n 3 test 查看前三个结果 locate test | less 结果分屏显示 ...

2019-01-17 08:37:46 155 0

原创 查看文件的命令总结cat,less,head,tail

查看文件的命令总结cat,less,head,tail cat:一次显示整个文件内容 less:分页一次一屏显示文件内容 head:显示文件开始部分 tail:显示文件结束部分 cat cat 在标准输出上查看文件 cat file1 file2 将文件拼接至标准输出设备 cat file1 f...

2019-01-17 07:43:10 98 0

原创 C++十大设计模式(易懂)

单例模式: 单例模式:确保一个类只有一个实例,并且这个实例化向整个系统提供 (例如只有一台打印机,可以有多个打印任务队列,但是只能有一个正在打印)。 单例模式又分为(饿汉模式,懒汉模式)两种 饿汉模式:程序运行即创建对象并实例化,静态实现所以线程是安全的 懒汉模式:创建对象不实例化,...

2018-12-18 20:33:24 4702 0

原创 设计模式-工厂模式(简单,工厂方法,抽象)

工厂模式 建立对象的类就是一个工厂,被建立的对象就是一个产品,在工厂中加工产品,不用在乎产品如何产生。降低模块耦合。 工厂模式分类 包括 简单工厂模式,工厂方法模式,抽象工厂模式。 1简单工厂模式 由工厂对象决定创建哪一个产品类的实例,这些产品类(继承自父类或接口)。 例如:一个工厂生产A,B两种...

2018-12-18 20:05:55 78 0

原创 Mysql数据库 索引的原理和优化

本文主要讲述了如何加速动态网站的MySQL索引分析和优化。 参考原文 https://www.2cto.com/database/201707/660712.html 一、什么是索引? 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。 如果没有索引,执行查询时My...

2018-12-17 12:07:55 61 0

原创 系统内存不足的处理方案?

当operator new没有能力申请到所需要的空间时,通常会丢一个exception(异常类)打印出信息。 常见的 C 习惯做法: 定义一个与型别无关的宏,用来配置内存,并做检查,以确定配置成功。 对于C++而言的宏如下 #define NEW(PTR,TYPE) try{ (PTR)=new...

2018-12-17 10:26:05 227 0

原创 面试总结:B树,B+树的原理及区别

之前在网上看到过一些B树与B+树的区别然后主要是针对定义来陈述,分分钟看的我快要冬眠,然后在一次面试遇到该没问题没回答上来一首凉凉送 给自己,今天老老实实的分享自己对B树,B+树浅显理解,若望指出不足。 B树的原理 动态查找树主要包括:二叉搜索树,平衡二叉树,红黑树,B树,B-树时间复杂度O(...

2018-12-08 18:58:32 12370 2

原创 剑指offer 树的子结构

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) class Solution { public: bool Hassubtree(TreeNode* root1, TreeNode* root2) { if (root1 == nullptr |...

2018-12-08 15:28:09 41 0

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