自定义博客皮肤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的博客

不积跬步无以至千里

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

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

2020-03-11 10:59:52 51 0

原创 Ubuntu18.04 部署 Kubernetes

国内环境下以 minikube 方式部署 Kubernetes 前言:这是本人折腾了 3 天,踩过无数坑之后得出来的经验,此方法仅用作参考,实际运行效果我不能保证,所以出现问题我不一定会解答,但我尽量列出新手(我)在安装过程中的一些问题。 此篇文章适合人群:小白,系统为 ubuntu,不会设置li...

2020-03-07 21:55:39 177 0

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

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

2020-02-26 15:59:33 78 0

原创 Docker安装

Docker 安装 更新 apt 软件包索引 sudo apt-get update 安装一些软件包,使得 apt 支持 HTTPS 协议 sudo apt-get -y install apt-transport-https ca-certificates curl software-prop...

2020-02-26 09:08:35 52 0

原创 不用循环做数组排序

不用循环做数组排序 利用递归改写冒泡排序 #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] &...

2020-02-25 13:16:24 111 0

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

ubuntu18.04下使用 Docker 构建并测试 Web 应用程序 构建 Sinatra 应用程序 创建文件夹: mkdir sample01 && cd sample01 touch Dockerfile 编辑 Dockerfile : FROM ubuntu:18.04...

2019-10-22 08:55:32 52 0

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

使用 Docker 测试静态网站 Sample 网站的初始 Dockerfile mkdir sample && cd sample touch Dockerfile 需要一些配置文件才能运行这个网站: cd sample mkdir nginx && cd ng...

2019-10-21 10:26:21 120 0

原创 ubuntu下添加chrome插件

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

2019-10-14 18:55:30 153 0

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

参考:结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法 牛客网 有程序如下: typedef struct { int a; char p[0]; }buffer; 问其中 p 有何作用? C99中,结构体中char p[0]被称为柔性数组,这是个广泛使用的常见...

2019-09-24 10:55:34 125 0

原创 将项目同步至 github 或 coding

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

2019-09-03 08:45:39 113 0

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

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

2019-09-02 11:03:56 297 0

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

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

2019-08-31 11:22:25 52 0

原创 最详解——两数相加

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

2019-08-30 15:58:59 85 0

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

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

2019-08-22 19:46:05 9582 0

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

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

2019-08-22 17:54:52 26553 0

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

一、新类型 long long int 并不是 C++11 最先引入的,其实早在 C99,long long int 就已经被纳入 C 标准中,所以大部分的编译器早已支持。C++11 的工作则是正式把它纳入标准库,规定了一个 long long int 类型至少具备 64 位的比特数。 二、noe...

2019-08-09 18:22:32 125 0

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

std::mutex, std::unique_lock C++11引入了 mutex 相关的类,其所有相关的函数都放在 <mutex> 头文件中。 std::mutex 是 C++11 中最基本的 mutex 类,通过实例化 std::mutex 可以创建互斥量,而通过其成员函数 l...

2019-08-09 18:09:51 153 0

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

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

2019-08-09 17:58:17 152 0

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

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

2019-08-09 17:53:48 109 0

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

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

2019-08-09 17:43:09 477 0

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

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

2019-08-09 17:21:19 80 0

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

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

2019-08-08 19:00:45 108 0

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

std::shared_ptr std::shared_ptr是一种智能指针,它能够记录多少个shared_ptr共同指向一个对象,从而消除显式的调用delete,当引用计数变为0时,就会将对象删除。 std::make_shared能够用来显式的使用new,所以std::make_shared会...

2019-08-08 18:00:21 112 0

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

引用计数这种计数是为了防止内存泄露而产生的。基本想法是对于动态分配的对象,进行引用计数,每当增加一次对同一个对象的引用,那么引用对象的引用计数就会增加一次,每删除一次引用,引用计数就会减一,当一个对象的引用计数减为零时,就自动删除指向的堆内存。 在传统 C++ 中,『记得』手动释放资源,总不是最佳...

2019-08-07 18:35:25 157 0

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

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

2019-08-07 15:47:05 115 0

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

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

2019-08-07 15:24:28 123 0

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

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

2019-08-07 15:15:39 231 0

原创 Linux内核简介

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

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

原创 常用C++11特性

详细介绍:C++11/14 高速上手教程 一、右值引用与std::move 如下代码: std::string tmp("bert") std::string name(tmp) 第一行声明了一个对象tmp,用"bert"字符串进行初始化 第二行声明了一个...

2019-08-02 13:42:18 51 0

原创 C++11/14介绍(三)——语言运行期的强化(三)

右值引用 一、左值,右值的纯右值、将亡值,右值 左值:赋值符号左边的值。左值是表达式后依然存在的持久对象 右值:右边的值。指表达式结束后就不在存在的临时对象,C++11中为了引入强大的右值引用,将右值的概念进行了进一步的划分,分为 纯右值:纯粹的右值,要么是纯粹的字面量,ex:10,t...

2019-08-01 21:19:28 87 0

原创 C++11/14介绍(三)——语言运行期的强化(二)

函数对象包装器 一、std::function Lambda表达式的本质是一个函数对象,当lambda表达式的捕获列表为空时,Lambda表达式还能作为一个函数指针进行传递: #include <iostream> using foo = void (int); void funct...

2019-08-01 14:36:51 64 0

原创 C++11/14 高速上手教程

目录 1、弃用特性和与C语言的兼容性 2、语言可用性的强化 2.1、nullptr与constexpr 2.2、类型推导 2.3、区间迭代 2.4、初始化列表### 2.5、模板增强 2.6、面向对象增强 2.7、强类型枚举 ...

2019-07-05 16:02:32 391 0

原创 C++11/14介绍(三)——语言运行期的强化(一)

Lambda表达式 lambda表达式的基本语法如下: [捕获列表](参数列表) mutable(可选) 异常属性 -> 返回类型{ //函数体 } 捕获列表可以理解为参数的一种类型,lambda表达式内部函数体在默认情况下是不能够使用函数体外部的变量的,这时候捕获列表可以起到...

2019-07-05 15:46:11 156 0

原创 C++11/14介绍(二)——语言可用性的强化(七)

强类型枚举 在传统 C++中,枚举类型并非类型安全,枚举类型会被视作整数,则会让两种完全不同的枚举类型可以进行直接的比较(虽然编译器给出了检查,但并非所有),甚至枚举类型的枚举值名字不能相同,这不是我们希望看到的结果。 C++11 引入了枚举类(enumaration class),并使用...

2019-07-03 17:11:03 86 0

原创 C++11/14介绍(二)——语言可用性的强化(六)

面向对象增强 一、委托构造 C++11 引入了委托构造的概念,这使得构造函数可以在同一个类中一个构造函数调用另一个构造函数,从而达到简化代码的目的 class Base { public: int value1; int value2; Base() { ...

2019-07-03 16:58:20 88 0

原创 C++11/14介绍(二)——语言可用性的强化(五)

模板增强 一、外部模板 传统 C++ 中,模板只有在使用时才会被编译器实例化。换句话说,只要在每个编译单元(文件)中编译的代码中遇到了被完整定义的模板,都会实例化。这就产生了重复实例化而导致的编译时间的增加。并且,我们没有办法通知编译器不要触发模板实例化。 C++11 引入了外部模板,扩充...

2019-07-03 16:34:02 96 0

原创 C++11/14介绍(二)——语言可用性的强化(四)

初始化列表 提起初始化列表,首先想到的是类的构造函数的初始化列表: class test { private: int x,y; public: test(int a,int b):x(a),y(b){} }; int main() { test a(2,4); ...

2019-07-03 09:35:01 79 0

原创 C++11/14介绍(二)——语言可用性的强化(三)

区间迭代 C++11 引入了基于范围的迭代写法,我们拥有了能够写出像 Python 一样简洁的循环语句: int array[] = {1,2,3,4,5}; for(auto &x : array) { std::cout << x << std::e...

2019-07-03 09:11:56 88 0

原创 C++11/14介绍(二)——语言可用性的强化(二)

类型推导 在传统C/C++中,任何参数的类型都必须明确定义,这会使开发效率变慢,而且让代码变得冗长 C++11引入了auto和decltype实现了类型推导 一、auto 使用auto进行类型推导的一个最为常见而且显著的例子就是迭代器,以前需要这样写: for(vector<int&...

2019-07-03 09:07:09 86 0

原创 C++11/14介绍(二)——语言可用性的强化(一)

nullptr与constexpr 一、nullptr nullptr的出现是为了替代NULL C++98中,NULL和0是不做区分的,导致以下程序 void foo(char *a) { cout<<"String"; } void foo(int...

2019-07-02 17:27:12 108 0

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