自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 查找第k小的数

思路:主要利用快速排序的思想查找第K小的数,核心的思想就是快排的分治思想,具体思路:1 利用快排的Parition()函数将数组分成两部分,返回基准值value,小于value的都在左边,大于的在右边2 如果index刚好等于k,则说明index位置的数就是我们要找的数,如果值小于它,就肯定在左边,大于就在右边3 递归在index的左边或者右边进行查找/*题目描述:寻找第K...

2019-08-20 20:36:12 2479 1

原创 替换空格---举一反三

替换空格题目描述:用函数实现一个功能,把字符串中的每个空格替换成“%20”。例如,输入“We are happy.”,则输出“We%20are%20happy.”。思路:在替换空格时,从后向前开始进行搬移,因为把一个字符替换为了3个字符,所以数组的长度会变长,替换后数组的长度=空格的数量*2+替换之前数组的长度,要注意内存覆盖。给两个标记,tailoldlength标记原数组(...

2019-08-20 15:38:46 165

转载 系统调用与库函数

一、是什么系统调用系统调用是通向操作系统本身的接口,是面向底层硬件的。通过系统调用,可以使得用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互,是操作系统留给应用程序的一个接口。下面适用于访问设备驱动程序的系统调用:open: 打开文件或设备read: 从打开的文件或设备中读取数据write: 向打开的文件或设备中写入数据close: 关闭文件或设备ioctl...

2019-08-14 21:05:52 575

原创 二维数组中的查找

时间限制:1秒 空间限制:32768K 热度指数:1281361本题知识点: 查找 数组题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数例如下面的二维数组就是每行,每列都递增排序,如果在这个数组中查找数字7,则返回true;查找5...

2019-08-13 19:23:53 117

原创 二维数组赋值给vector

一维:vector<int> a;int b[5] = {1,2,3,4,5};a.push_back(b);二维: vector<vector<int> > vec(4,vector<int>(4)); int br[4][4] = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}}...

2019-08-13 19:09:44 1119

原创 MySQL基础

MySQL 是关系型数据库的应用语言DDL 操作数据库或者数据表create drop alter show/desc1.库1.创建库create database [if not exists] dbname;eg:create database [if not exists] by22;2.删除库drop database [if e...

2019-08-12 20:32:15 82

原创 【C++】--抽象工厂模式

本文借鉴Java大佬的设计模式,灰常厉害的大佬简单工厂模式--->https://blog.csdn.net/aby_byy/article/details/99328126工厂模式--->https://blog.csdn.net/aby_byy/article/details/99329071抽象工厂模式(Abstract Factory Pattern):提供一个创...

2019-08-12 19:53:04 98

原创 【C++】--工厂模式

本文借鉴Java大佬的设计模式,灰常厉害的大佬简单工厂模式--->https://blog.csdn.net/aby_byy/article/details/99328126工厂方法模式(Factory Method Pattern):又称为工厂模式。定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。Fruit(抽象产品)类它是...

2019-08-12 19:45:32 157

原创 【C++】--简单工厂模式

本文借鉴Java大佬的设计模式,灰常厉害的大佬工厂模式是最常用的一类创建型设计模式,包括 抽象工厂模式,工厂模式和简单工厂模式 这三种,简单工厂模式是其中最简单的一种简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。Factory类是简单工厂模式的核心,负责实现创建所有产品实例的内部...

2019-08-12 19:38:53 143

原创 【进程间通信】--管道

管道概念当从一个进程连接数据流到另一个进程时,我们使用术语管道。我们通常是把一个进程的输出通过管道连接到另一个进程的输入。分类 有名管道 无名管道有名管道有名管道是在实际文件系统上实现的一种半双工通信机制。由于它是一个与进程没有“血缘关系”的、真正且独立的文件,所以它可以在任意进程之间实现通信。由于命名管道不支持诸如lseek()等文件定位操作,严格遵守先进...

2019-08-11 20:06:36 194

原创 MVC

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。 View(视图) - 视图代表模型包含的数据的可视化。 Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变...

2019-08-11 16:41:04 82

原创 N皇后问题(二)--非递归

话不多说,N皇后思想以及递归代码--> N皇后非递归代码:#include<iostream>#include<math.h>using namespace std;bool Place(int *ar,int k){ for(int j = 1;j<k;++j) { if(ar[k] == ar[j] || abs(k-j) == ...

2019-08-08 12:22:45 240

原创 【进程】~

本篇博客参考:https://blog.csdn.net/lizhidefengzi/article/details/70231334#commentBox推荐看 《Linux内核源代码情景分析》第四章 《操作系统精髓与设计原理》进程篇程序概念:程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一...

2019-08-03 14:29:52 108

原创 N皇后问题(一)

N皇后问题是指在给定的NxN的棋盘上要摆N个皇后,要求任何两个皇后不同行,不同列,也不在同一条斜线上。给定一个整数n,返回n皇后的摆法有多少种。思考:如果在(i,j)位置(第i行第j列)放置了一个皇后,接下来哪些位置都不能放置皇后呢?整个第i行的位置都不能放置 整个第j列的位置都不能放置 入股位置(a,b)满足|a-i| == |b-j| ,说明(a,b)和(i,j)处在同一条斜线上,...

2019-08-02 21:10:48 322 2

原创 【HTTP复习】--(1)

HTTP请求方法:Linux上提供了几个命令:HEAD、GET、POST。适合用来快速测试Web服务器HTTP应答码和状态信息:

2019-08-02 13:38:40 108

原创 【C++】---封装、继承、多态

面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!封装 封装可以隐藏实现细节,使得代码模块化;封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世...

2019-08-02 11:57:14 185

原创 【Linux】--守护进程

守护进程:(daemon进程) 也称为精灵进程,常常在系统启动自启,仅在系统关闭时才终止,生存周期比较长。是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理发生的事件。 Linux下的大多数服务器都是利用守护进程实现的。 可通过ps -axj命令查看常用系统的守护进程,其中最常见的是init进程,负责各运行层次间的系统服务。但凡事无绝对:da...

2019-08-01 21:05:50 172

原创 【TCP】浅谈

TCP协议:(传输控制协议,Transmission Control Protocol)为应用层提供可靠的、面向连接的和基于流的服务。TCP协议使用超时重传、数据确认等方式来确保数据包被正确的放至目的端口,因此TCP服务是可靠的。使用TCP协议的通信双方必须先建立TCP连接,双方都必须为该连接分配必要的内核资源,以管理连接状态和连接上数据的传输。TCP连接是全双工的,即双方的数据读写可以通...

2019-07-31 13:36:36 190

原创 const

const:阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了; 对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const; 在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值; 对于类的成员函数,若指定其为c...

2019-07-30 18:40:08 407

原创 C/C++区别

c语言是面向过程的程序设计,主要核心为:数据结构和算法,具有高效的特性。对于C语言程序的设计,主要是考虑如何通过一个过程,对输入进行处理得出一个输出。C++是面向对象的程序设计,对于C++,首先考虑的是如何构造一个对象模型,让这个模型配合对应问题,这样可以通过获取对象状态信息得到输出 new/malloc区别 new/malloc区别C++符号生成规则 C语言中...

2019-07-30 18:18:46 201

转载 同步、异步、阻塞与非阻塞

博客来源:简书:同步异步、阻塞与非阻塞 近来遇到了一些常见的概念,尤其是网络编程方面的概念,如:阻塞、非阻塞、异步I/O等等,对于这些概念自己也没有太清晰的认识,只是很模糊的概念,说了解吧也了解,但是要让自己准确的描述概念方面的具体细节,却说的不那么准确,这也是自己在这几个方面也没有细细考究过的原因吧。经过看了些这几个概念的资料,发现同步、异步、阻塞、非阻塞的概念其实也并不难以理解...

2019-07-30 14:26:14 109

原创 Makefile简述

简单总结一下常用到的关于Makefile的知识:Makefile里有什么?显示规则、隐晦规则、变量的定义、文件指示、注释(详细解释后面会引大大佬的博客)Makefile文件名:默认的情况下,make命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件,找到了解释这个文件。在这三个文件名中,最好使用“Makefile”这个文...

2019-07-29 20:39:58 107

原创 动态规划---最长公共子序列(LCS)

问题描述:给出两个字符串,求出这样的一个最长公共子序列的长度:子序列中的每一个字符都能在两个原串中找到,而且每个字符的先后顺序和原串中的先后的顺序一致。例如:Sample Inputabcdbc abfcabprogramming contestabcd mnpSample Output4 //abcb2 //on0 设...

2019-07-29 19:47:48 184

原创 动态规划

动态规划解题的一般思路:1、将原问题分解为子问题把原问题分解成若干个子问题,子问题和原问题形式相同或类似,只不过规模变小了。子问题都解决,原问题即解决! 子问题的解一旦求出就会被保存,所以每个子问题只需求解一次。2、确定状态 在用动态规划解题时,我们往往将和子问题相关的各个变量的一组取值,称之为一个“状态”,一个“状态”对应于一个或多个子问题,所谓某个“状态”下的“值”,...

2019-07-28 18:57:38 59

原创 C/C++区别---new和malloc的区别

简单总结的几点区别:1.new是一个C++关键字,需要编译器支持,而malloc是一个库函数,需要头文件支持;2.使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸;3.new内存分配失败时,会抛出bac_alloc异常。malloc分配内存失败时返回NULL;4.new操作符内存分配成功时,返回的是对象类...

2019-07-26 21:10:34 385

原创 sizeof和strlen

sizeof是一个单目运算符,像c语言的其他操作符++、--等一样,它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。sizeof的计算发生在编译时期!sizeof使用方法:1.用于变量:sizeof(var_name) 或 sizeof var_name;2.用于数据类型: sizeof(type) 必须用括号括住sizeof计算对象大小也是转换成...

2019-07-26 19:57:10 116

原创 Linux下GDB调试

常用的简单的Linux下gdb调试命令:首先调试版本的文件是二进制可执行文件,可以运行gcc -g -o main main.c 这是编译成可调试文件gdb main 进入调试要退出gdb,使用quit命令 也可以一个q查看源码:列出程序的源码(默认每次显示10行)-----------list/l显示以“行号”为中心的前后10行代码-----------list 行号显示...

2019-07-24 20:44:56 130

转载 C++四种类型转换方式

C 风格(C-style)强制转型如下: (T) expression // cast expression to be of type T 函数风格(Function-style)强制转型使用这样的语法: T(expression) // cast expression to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括...

2019-07-24 20:12:59 2026

原创 编译链接 运行原理

编译过程分为 预处理、编译、汇编,生成二进制可重定位目标文件(obj文件)!预编译: 生成.i文件,第一步预编译的过程相当于如下命令: gcc -E hello.c -o hello.i (假定文件名为hello.c) 预编译过程主要处理那些源代码文件中的以“#”开始的预编译指令。比如“#include"、”#define"等,主要的处理规则如下:删除所有的“#defin...

2019-07-23 20:05:57 164 1

原创 libevent安装

PS: 如果Linux下已经安装了libevent库,则此处无需再安装,可以使用#ls /usr/lib | grep libevent查看是否安装安装步骤:下载地址:http://www.monkey.org/~provos/libevent/ # tar zxvf libevent-2.0.22-stable.tar.gz (如果解析到桌面,就要进入桌面,才能执行下一步...

2019-03-21 17:09:23 138

原创 Linux实现拷贝文件

Linux下一个简单的实现文件拷贝的代码:#include<stdlib.h>#include<unistd.h>#include<string.h>#include<assert.h>#include<fcntl.h>int main(){ int fdr = open("./passwd",O_RDONLY);...

2019-03-21 11:47:58 749

转载 linux文件目录操作基本命令

原文参考:https://www.cnblogs.com/yolanda-lee/p/4544573.html1, mkdir命令mkdir用来创建指定名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。(1) 命令格式:mkdir [选项] 目录(2) 命令功能:在指定位置创建指定文件名命名的文件夹或目录,...

2019-03-20 23:24:41 325

转载 批量终止进程的命令

ps -ef|grep aaa|grep -v grep|awk '{print "kill -9 " $2}' |sh1.ps -ef|grepaaa|grep-vgrep ps -ef 用于获取当前系统所有进程,如上图所示。  grep aaa 过滤出与“aaa”字符相关的数据(以行为单位)。  grep -v grep 的作用是除去本次操作所造成的影...

2019-03-18 14:59:16 1118

原创 【分治法】---归并排序

分治的基本概念: 把一个任务,分成形式和原任务相同,但规模更小的几个部分任务(通常是两个部分),分别完成,或只需要选择一部完成。然后再处理完成后的这一个或几个部分的结果,实现整个任务的完成。 归并排序是典型的分治问题。 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子...

2019-03-17 15:38:07 224

原创 fork系统调用

fork函数介绍:《Linux高性能服务器编程》P239#include&lt;sys/types.h&gt;#include&lt;unistd.h&gt;pid_t fork(void); 该函数的每次调用都返回两次,在父进程中返回的是子进程的PID,在子进程中则返回0,该返回值是后续代码判断当前进程是父/子进程的依据。fork调用失败时返回-1,并设置errno...

2019-03-13 14:11:22 1049

原创 c++写时拷贝

c++ 写时拷贝:当一个拷贝构造一个需要动态开辟内存空间的对象时,用浅拷贝就会出现空间被释放两次的情况,这样显然会出现问题,用深拷贝的话就可以解决此问题,但是每一次不管它用不用都是有空间被申请,这样就很浪费。举个不恰当的例子:就比如一块蛋糕,你就坐一边看着也不吃就那样放着,来了第二个人的话,同样的蛋糕同样不吃在那看着,就需要重新拿一块,这样两个人,两个蛋糕,大家都不吃在那只是盯着预备着就很...

2019-02-02 18:16:43 142

原创 结构体大小

结构体大小是考试常考也是重点的内容。结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。然后我们看一个名词,这个名词是从网上看到的定义--偏移量。偏移量指的是结构体变量中的成员的地址和结构体变量地址的差。用一个图来解释如果是第一个,那...

2018-07-09 22:47:11 4791

原创 斐波那契数列的两种方法

斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........这个数列从第3项开始,每一项都等于前两项之和。如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式:F(...

2018-06-22 16:35:08 1306 1

原创 时间复杂度简述

时间复杂度定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。特别注意,时间复杂度只考虑高阶项,而且不保留其系数。时间复杂度计算方法:一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的...

2018-06-22 15:45:01 1205

原创 初入指针

对于刚接触指针的童鞋来说,首先要知道的就是什么是指针?指针基本上和其他的变量一样,唯一的一点不同就是指针并不包含实际的数据,而是包含了一个指向内存位置的地址,你可以在这个地址中找到某些信息,这个概念很重要。那么,如何定义一个指针呢,就是比平时的变量定义前多加一个*,简单粗暴hhh,例如:*P1,*P2,*PP等,一般用P,Q定义指针的多一些。之前我们经常写的...

2018-05-31 14:22:57 93

空空如也

空空如也

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

TA关注的人

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