自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Nikki_o3o的博客

不积跬步无以至千里

  • 博客(185)
  • 资源 (1)
  • 收藏
  • 关注

原创 完全理解图(上)——图的概念、存储及遍历

图的存储结构、遍历

2021-08-03 08:56:50 1063 2

原创 完全理解二叉树(下)——平衡二叉树、二叉排序树、哈夫曼树

二叉树的应用1. 平衡二叉树二叉树可以用于查找元素,对于如下这颗二叉树:对其的遍历相当于对链表的遍历,因此找到元素5需要从头开始,查找5次,但是如果树的形状是这样:从根结点出发只需要查找3次即可找到元素5。1.1 定义左右子树高度差不超过1的二叉树称为平衡二叉树(AVL树),注意是对于树中的任意结点。例如:都不是平衡二叉树。结点的平衡因子 = 左子树高 - 右子树高,平衡因子的绝对值不超过1,如下图所示:1.2 存储结构typedef struct AVLTreeNode*

2021-06-11 10:10:51 863

原创 完全理解二叉树(中)——二叉树与树、森林的转化及遍历

完全理解二叉树(上)——二叉树的概念、遍历、构造以及线索化1. 树与二叉树的转化现有如下一颗树:将其转化为二叉树的过程为:加线:在同一层中,将兄弟结点(注意没有堂兄弟结点)连接起来,下图中红色部分。去线:对每一个结点来说,只保留其第一个孩子结点,其余孩子结点的连线全部删除,下图中蓝色部分。去掉蓝色部分得到:最后调整层序,黑线必为左孩子,红线为右孩子:2. 森林与二叉树的转化现有如下一个森林:将其转化为二叉树的过程为:树转化成二叉树,先将森林中所有的树转化成二叉树:

2021-06-03 10:24:00 744

原创 完全理解二叉树(上)——二叉树的概念、遍历、构造以及线索化

术语结点的度:结点的子树个数树的度:树的所有结点中最大的度数结点的层次:规定根结点在 1 层,其他任一结点的层数是其父结点的层数 +1树的深度(高度):树中所有结点中的最大层次叶结点:度为 0 的结点父结点:有子树的结点子结点:A为B的父结点,则B为A的子结点兄弟结点:具有同一父结点的各结点祖先结点:沿树根到某一结点路径上的所有结点都是这个结点的祖先结点子孙结点:某一结点的子树中所有的结点堂兄弟结点:父结点在同一层的结点森林:若干颗互不相交的树的集合树一、定义n 个结点构成

2021-06-01 19:40:17 419

原创 如何通俗易懂地理解分治

本节需要先理解递归的含义:如何通俗易懂地理解递归一、引例描述对给定数组中的数字进行排序,要求在O(nlogn)时间内完成样例输入:7 1 5 3 2 4 7 6输出:1 2 3 4 5 6 7 二、原理定义(引自维基百科)在计算机科学中,分治法是建基于多项分支递归的一种很重要的算法范型。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。分析思路一(归并):对于数组排序的问题,可以考虑

2021-05-24 20:36:55 305

原创 如何通俗易懂地理解递归

一、引例描述给定一个数字 n(范围在0~10),求 n 的阶乘样例输入:0 输出:1输入:5输出:120算法设计首先最容易想到的就是利用循环做,即进行 n-1 次循环,然后每次循环中进行累乘,最后输出结果,再加一个特殊值判断(0! = 1),那么很容易编写代码如下:#include <iostream>int main(){ int n = 0,num = 1; std::cin >> n; while(n > 0)

2021-05-14 15:48:32 3167

原创 c++模板类链表(模板结构体,模板类,运算符重载)

一、存放数据的结构体首先需要自定义一个存放数据的结构体模板,假定结构体中需要存放的数据类型有int,double,char和任意类型的数组,因此就有template <typename U>struct LNode { int a; double b; char c; U* array;};考虑到结构体内有数组,在之后初始化的工作和查找数据的时候需要重新写循环,因此在结构体中重载赋值和等于运算符。void operator= (const U a)const { int

2021-02-09 20:41:24 888

原创 C++存在重复元素(三种解法详解)

题目链接:存在重复元素题目描述给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。样例输入与输出示例1:输入:[1,2,3,1]输出:true示例2:输入:[1,2,3,4]输出:false示例3:输入:[1,1,1,3,3,4,3,2,4,2]输出:true解法1(排序)思路将所有元素排好序,然后扫描数组,如果一个数与它前一个元素相等,那么就是重复的。代码class Solu

2021-02-01 11:41:39 8190

原创 C++旋转数组(三种解法详解)

C++旋转数组(三种解法详解)题目链接:旋转数组题目描述给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。附加要求尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?样例输入与输出输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5

2021-01-28 15:32:28 2817

原创 搭建个人网站软件安装

搭建个人网站软件安装(均在Root用户下完成)系统环境为:Centos7.6参考文献:在CentOS 7系统上安装PHP 7.4版本的方法解决CentOS中yum安装程序时出现的"Transaction check error"错误Centos7下安装MySQLCentos 7下安装配置NginxNginx和PHP的配置确保系统中有网络工具sudo yum install -y net-tools服务启动失败可能原因:端口被占用netstat -nptl #查看端口占用情况fire

2020-11-16 17:38:45 655 1

原创 Kubernetes 中的对象

Kubernetes 中的对象Kubernetes 里存在大量对象,基本上每个核心概念都对应有一个对象,这些对象除了在系统内部使用,也通过 API 开放给外部系统使用。对象对象类型它们在 Kubernetes 配置文件中通过 kind 属性配置PodNodeNamespaceServiceVolumePersistentVolumeDeploymentSecretStatefulSetDaemonSetServiceAccountReplicationController

2020-10-24 13:25:15 330

原创 Docker 常用命令及生命周期

Docker 常用命令:容器生命周期:

2020-03-11 10:59:52 289

原创 Ubuntu18.04 部署 Kubernetes

国内环境下以 minikube 方式部署 Kubernetes前言:这是本人折腾了 3 天,踩过无数坑之后得出来的经验,此方法仅用作参考,实际运行效果我不能保证,所以出现问题我不一定会解答,但我尽量列出新手(我)在安装过程中的一些问题。此篇文章适合人群:小白,系统为 ubuntu,不会设置linux网络代理的,没有国外云主机和VPS的,另外感谢阿里云,真的提供了很多便利硬件配置:系统 Ubu...

2020-03-07 21:55:39 834

原创 通过程序理解 C++ static 关键字的作用

部分定义来源于牛客网C++静态成员变量的初始化一、对于函数定义和代码块之外的变量声明,static修改标识符的链接属性,由默认的external变为internal,作用域和存储类型不改变,这些符号只能在声明它们的源文件中访问。全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量.静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会...

2020-02-26 15:59:33 258

原创 Docker安装

Docker 安装更新 apt 软件包索引sudo apt-get update安装一些软件包,使得 apt 支持 HTTPS 协议sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common添加相应的密钥curl -fsSL http://mirrors.al...

2020-02-26 09:08:35 202

原创 不用循环做数组排序

不用循环做数组排序利用递归改写冒泡排序#include <iostream>using namespace std;int k = 0,index = 0,n = 10;int sort(int A[],int i,int j,int n){ if(A[j] > A[i]) k++; return (n > 0)?sort(A...

2020-02-25 13:16:24 1115

原创 Ubuntu18.04下使用 Docker 构建并测试 Web 应用程序

ubuntu18.04下使用 Docker 构建并测试 Web 应用程序构建 Sinatra 应用程序创建文件夹:mkdir sample01 && cd sample01touch Dockerfile编辑 Dockerfile :FROM ubuntu:18.04MAINTAINER nikki [email protected] REFRESHED_A...

2019-10-22 08:55:32 422

原创 Ubuntu18.04 下使用 Docker 测试静态网站

使用 Docker 测试静态网站Sample 网站的初始 Dockerfilemkdir sample && cd sampletouch Dockerfile需要一些配置文件才能运行这个网站:cd samplemkdir nginx && cd nginxwget https://raw.githubusercontent.com/jamtur01...

2019-10-21 10:26:21 395

原创 ubuntu下添加chrome插件

ubuntu下添加chrome插件操作背景:插件在windows系统上下载,拖入ubuntu虚拟机中第一步——下载插件下载谷歌浏览器(Chrome)扩展离线安装包crx文件最简单的方法第二步——拖入虚拟机中并修改名称将下载好的 .crx 文件放入 ubuntu 系统,修改文件扩展名为 .tar.gz第三步——创建同名文件夹并解压创建同名文件夹将刚才的压缩包放入同名文件夹并将其提...

2019-10-14 18:55:30 2896 1

原创 C语言结构体中 char p[0]中p存在的作用

参考:结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法牛客网有程序如下:typedef struct{ int a; char p[0];}buffer;问其中 p 有何作用?C99中,结构体中char p[0]被称为柔性数组,这是个广泛使用的常见技巧,常用来构成缓冲区。比起指针,用空数组有这样的优势:(1)、不需要初始化,数组名直接就是所在的偏移...

2019-09-24 10:55:34 1184

原创 将项目同步至 github 或 coding

一、在 Github 或 Coding 注册账号:二、在 Github 或 Coding 创建仓库:1、Github:参见以下示例2、Coding:三、同步文件至远程仓库创建完成仓库后,根据页面提示即可在本地文件夹使用 git 命令的 init 方法初始化仓库,add 方法添加文件进入仓库,commit 方法提交修改并填入修改信息, remote add 方法追加远程...

2019-09-03 08:45:39 420

原创 最详解——寻找两个有序数组的中位数

参考:【分步详解】两个有序数组中的中位数和Top K问题题目描述给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [...

2019-09-02 11:03:56 1057

原创 最详解——无重复字符的最长子串

题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “w...

2019-08-31 11:22:25 225

原创 最详解——两数相加

题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...

2019-08-30 15:58:59 663

原创 全网最全的人类图解析(下)——类型、人生角色、定义等

上一篇文章:以下内容来源:亚洲人类学院参考文章:[12種人生角色Profile](http://fantmetal.blogspot.com/2015/07/12profile.html)「人类图」你是什么人生角色?「人类图」内在权威四大類型的人生策略文章目录简介一、类型生产者投射者显示者反映者二、人生角色三、定义四、内在权威五、策略显示者显示生产者与生产者投射者反映者六、非自己主题关...

2019-08-22 19:46:05 75985 1

原创 全网最全的人类图解析(上)——九大能量中心与64道闸门

以下内容版权皆来自:亚洲人类图学院获得自己的人类图:传送门文章目录简介一、九大能量中心简介1、头脑中心(Head Center)头脑中心的主题:灵感2、逻辑中心(Ajna Center)逻辑中心的主题:概念化3、喉咙中心(Throat Center)喉咙中心的主题:行动与质变4、G中心(G Center)G中心的主题:方向与爱5、意志力中心(Ego Center)意志力中心的主题:自我6、情绪...

2019-08-22 17:54:52 153766 7

原创 C++11/14介绍(八)——其他杂项

一、新类型long long int 并不是 C++11 最先引入的,其实早在 C99,long long int 就已经被纳入 C 标准中,所以大部分的编译器早已支持。C++11 的工作则是正式把它纳入标准库,规定了一个 long long int 类型至少具备 64 位的比特数。二、noexcept 的修饰和操作C++ 相比于 C 的一大优势就在于 C++ 本身就定义了一套完整的异常处理...

2019-08-09 18:22:32 299

原创 C++11/14介绍(七)——语言级线程支持(二)

std::mutex, std::unique_lockC++11引入了 mutex 相关的类,其所有相关的函数都放在 <mutex> 头文件中。std::mutex 是 C++11 中最基本的 mutex 类,通过实例化 std::mutex 可以创建互斥量,而通过其成员函数 lock() 可以仅此能上锁,unlock() 可以进行解锁。但是在在实际编写代码的过程中,最好不去直接...

2019-08-09 18:09:51 398

原创 C++11/14介绍(七)——语言级线程支持(一)

std::threadstd::thread 用于创建一个执行的线程实例,所以它是一切并发编程的基础,使用时需要包含头文件,它提供了很多基本的线程操作,例如get_id()来获取所创建线程的线程 ID,例如使用 join() 来加入一个线程等等,例如:#include <iostream>#include <thread>void foo() { std::...

2019-08-09 17:58:17 390

原创 C++11/14介绍(六)——正则表达式库(二)

std::regex及其相关对字符串内容进行匹配的最常见手段就是使用正则表达式。可惜在传统 C++ 中正则表达式一直没有得到语言层面的支持,没有纳入标准库,而 C++ 作为一门高性能语言,在后台服务的开发中,对 URL 资源链接进行判断时,使用正则表达式也是工业界最为成熟的普遍做法。一般的解决方案就是使用 boost 的正则表达式库。而 C++11 正式将正则表达式的的处理方法纳入标准库的行列...

2019-08-09 17:53:48 433

原创 C++11/14介绍(六)——正则表达式库(一)

正则表达式简介正则表达式描述了一种字符串匹配的模式,一般使用正则表达式主要是实现下面三个需求:检查一个串是否包含某种形式的子串将匹配的子串替换从某个串中取出符合条件的子串正则表达式是由普通字符(例如 a 到 z)以及特殊字符组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。一、普通字符普通字符包括没有显式...

2019-08-09 17:43:09 957

原创 C++11/14介绍(五)——智能指针和引用计数(四)

std::weak_ptr#include <iostream>#include <memory>class A;class B;class A {public: std::shared_ptr<B> pointer; ~A() { std::cout << "A 被销毁" << std::...

2019-08-09 17:21:19 268

原创 C++11/14介绍(五)——智能指针和引用计数(三)

std::unique_ptrstd::unique_ptr 是一种独占的智能指针,它禁止其他智能指针与其共享同一个对象,从而保证了代码的安全:std::unique_ptr<int> pointer = std::make_unique<int>(10); // make_unique 从 C++14 引入std::unique_ptr<int> p...

2019-08-08 19:00:45 299

原创 C++11/14介绍(五)——智能指针和引用计数(二)

std::shared_ptrstd::shared_ptr是一种智能指针,它能够记录多少个shared_ptr共同指向一个对象,从而消除显式的调用delete,当引用计数变为0时,就会将对象删除。std::make_shared能够用来显式的使用new,所以std::make_shared会分配创建传入参数中的对象,并返回这个对象类型的std::shared_ptr指针,ex:#inclu...

2019-08-08 18:00:21 393

原创 C++11/14介绍(五)——智能指针和引用计数(一)

引用计数这种计数是为了防止内存泄露而产生的。基本想法是对于动态分配的对象,进行引用计数,每当增加一次对同一个对象的引用,那么引用对象的引用计数就会增加一次,每删除一次引用,引用计数就会减一,当一个对象的引用计数减为零时,就自动删除指向的堆内存。在传统 C++ 中,『记得』手动释放资源,总不是最佳实践。因为我们很有可能就忘记了去释放资源而导致泄露。所以通常的做法是对于一个对象而言,在构造函数的时候...

2019-08-07 18:35:25 557

原创 C++11/14介绍(四)——新增容器(三)

一、元组std::tuple传统C++中的容器,除了std::pair外,没有现成的数据结构能用来存放不同类型的数据,但是std::pair的缺陷是只能保存;两个元素。二、元组基本操作元组的使用有三个核心的函数:std::make_tuple:构造元组std::get:获得元组某个位置的值std::tie:元组拆包//在C++14下运行#include <tuple&gt...

2019-08-07 15:47:05 333

原创 C++11/14介绍(四)——新增容器(二)

无序容器传统 C++ 中的有序容器 std::map/std::set,这些容器内部通过红黑树进行实现,插入和搜索的平均复杂度均为 O(log(size))。在插入元素时候,会根据 < 操作符比较元素大小并判断元素是否相同,并选择合适的位置插入到容器中。当对这个容器中的元素进行遍历时,输出结果会按照 < 操作符的顺序来逐个遍历。而无序容器中的元素是不进行排序的,内部通过 Hash ...

2019-08-07 15:24:28 342

原创 C++11/14介绍(四)——新增容器(一)

一、std::arraystd::array会在编译时创建一个固定大小的数组,std::array不能够被隐式的转换成指针,使用std::array很简单,只需指定其类型和大小即可:std::array<int, 4> arr= {1,2,3,4};int len = 4;std::array<int, len> arr = {1,2,3,4}; // 非法, 数...

2019-08-07 15:15:39 537

原创 Linux内核简介

内核负责响应中断的中断服务程序负责管理多个进程从而分享处理器时间的调度程序负责管理进程地址空间的内存管理程序和网络、进程间通信等服务程序内核独立于普通应用程序,一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限,这种系统态和被保护的内存空间,统称内核空间应用程序在用户空间执行,当内核运行的时候,系统以内核态进入内核空间执行,而执行一个普通程序时,系统将以用户...

2019-08-05 09:52:41 600 1

原创 常用C++11特性

详细介绍:C++11/14 高速上手教程一、右值引用与std::move如下代码:std::string tmp("bert")std::string name(tmp)第一行声明了一个对象tmp,用"bert"字符串进行初始化第二行声明了一个对象name,使用参数tmp调用string的构造函数,因此对象name复制了"bert"的一个副本,如下:如下代码:std::stri...

2019-08-02 13:42:18 240

客户用户积分管理(带简易QT界面)

实现客户消费积分管理,能根据客户消费金额给予不同程度的打折优惠,也能实现客户信息的管理。

2018-01-25

空空如也

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

TA关注的人

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