自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 问答 (1)
  • 收藏
  • 关注

原创 立一个小小的flag

距离上次写博客已经很久了,下个月也是我入职一周年了。很久没有沉下心好好写一些文章,内心还有有点不安的。准备接下来花点时间好好写点东西,把工作学习中的事情记录下来,希望对你我都有帮助。

2020-06-10 09:18:20 900

转载 ubuntu安装ssh无法连接解决日志(已解决,可连接)

原文链接http://bbs.chinaunix.net/thread-3585704-1-1.html网上有很多介绍在Ubuntu下开启SSH服务的文章,但大多数介绍的方法测试后都不太理想,均不能实现远程登录到Ubuntu上,最后分析原因是都没有真正开启ssh-server服务。最终成功的方法如下:sudo apt-get install openssh-serverUbuntu...

2018-07-27 09:00:06 5405

原创 string中的npos

STL中的string.find()函数原型如下:size_t find (const string& str, size_t pos = 0) const noexcept;size_t find (const char* s, size_t pos = 0) const;size_t find (const char* s, size_t pos, size_type n)...

2018-06-27 14:02:44 1230

原创 数据结构-集合(set)和字典(dict)

前序: set()表示集合,是一个无序不重复元素的集,特点是消除重复元素,集合对象支持union(联合),intersection(交),difference(差)和sysmmetric dirrerence(对称差集)等数学运算。 dict()表示字典,是以(kek,value)这样的键值对来保存的。set(集合)下面就以具体的实例来学习set相关的操作。 set的...

2018-06-21 12:02:44 5828

原创 数据结构-列表与元组

前序: 列表和元组都是python中的数据结构,最近一直在学习python,就想记录一下一些知识。先分别来介绍两种数据结构,再来比较两者的相同点和不同点 1. 列表和元组可以保存任意数量的任意类型的python对象 2. 可以使用下标来访问元素 3. 可以使用[:]切片规则来得到想要的子集列表符号 列表使用 [ ] 来嵌套它所包含的对象。#可以是任意类型的对...

2018-06-20 13:58:03 469

转载 39条常见的Linux系统简单面试题

本文系转载:原文链接:http://www.cnblogs.com/chengjian-physique/p/8313175.html1、如何看当前Linux系统有几颗物理CPU和每颗CPU的核数?答:[root@centos6 ~ 10:55 #35]# cat /proc/cpuinfo|grep -c 'physical id'4[root@centos6 ~ 1...

2018-06-03 15:30:42 629

原创 shell中的三种引号

元字符(指在shell中有特殊含义的字符)< > | ; ! ? * [ ] $ \ " ' ` ~ ( ) { } ^双引号”“消除元字符的特殊含义,除$ ` “三个字符外,均当作普通字符处理单引号‘ ’除单引号自身外,都当作普通字符来处理,可以使用\来消除单引号的特殊语义单引号 `命令替换,将一个命令的输出作为另一个命令的参数通过下面的例子来理解上面的文字解释,双引号的实例和单引号的实例对比来看

2018-05-03 11:22:27 2179 1

原创 shell中的通配符

星号*匹配任意字符he*.c*处可以是任意个任意字符例:hello.c hel.c hel.ccc问号?匹配任意一个字符h?.c?处只能是一个任意字符例:h1.c h2.c he.c方括号[]匹配括号内所限定的任何一个字符[Hh]ello匹配括号中的任何一个字符例:Hello hellofile[1-5]即表示括号中为1,2,3,4,5例:file1 file2 file3

2018-05-03 11:06:07 514

原创 HTTP中常见状态码

前序:当通过浏览器向一个服务器发起一次请求时,比如访问www.baidu.com,此时就是向百度的服务器发送了一个HTTP的请求报文,而百度的服务器同样给你返回了一个响应报文。通过抓包工具,先来看一下请求报文和响应报文的格式。请求报文 可以看到在响应报文格式HTTP/1.1 200 OKHTTP/1.1代表使用的HTTP版本号200就是这里的返回码OK是对返回码的描述下面就来简单介绍一下HTT

2018-04-26 14:30:18 2572

原创 如何向面试官解释线程

你有几次面试的经历,你就被问到过几次关于线程问题,当然,前提你面的是技术岗。文章会大概说一下需要答的几个点,改怎么答,具体的每个点的详解,可以参考其他博文,只想记录一下相关的知识,加深印象。一、什么是线程,为什么要有线程?线程是操作系统能够进行调度的最小单位包含在进程内部,是进程的实际执行单位一个线程是进程单一顺序的控制流一个进程可以有多个线程,每个线程执行不同的任务为什么有?真正想问的是

2018-04-13 11:49:17 615 1

原创 vecotr和list的区别

1、结构 vector是一个顺序结构,是一块连续的内存空间。 list是一个链式结构,许多小块内存通过指针来连接2、支持操作 vector是连续空间,很好的支持随机访问,iterator支持”+”,”+=”,”<”等操作符 list空间不连续,iterator不支持”+”,”+=”,”<”3、效率 vector插入删除元素的时候,需要移动大量的元素 list插入删除元素的时候,只需要改变

2018-04-13 10:24:38 301

原创 malloc和new的区别

最近找实习生,这个问题被问的太多了,所以想把最近被高频率问到的东西整理一下,以备后续复习。一、malloc和new的区别: 1、malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2、new可以认为是malloc加构造函数的执行。new出来的指针是直接带类型信息的。而malloc返回的都是void指针,需要进行强转。3、如果

2018-04-13 10:21:27 236

原创 不要在构造和析构函数中调用虚函数

注:本文对应Effective C++ 条款9基类是一个模拟股票交易的类,成员函数logTransaction()是记录每一笔交易,具体买/卖派生类实现自己的记录函数。基类的构造函数中调用了这个虚函数。 先来思考下面这段代码:#include<iostream>using namespace std;//交易类class Transaction{public: Transactio

2018-03-15 16:09:23 591

原创 链表面试题-复杂链表的复制

题目描述: 请实现函数ComplexListNode* Clone(ComplexListNode* Head),复制一个复杂链表,在复杂链表中,每个节点除了有一个_next指针指向下一个外,还有一个Sibling指针指向链表中的任意节点或者nullptr。节点类型struct ComplexListNode{ int _data; ComplexLis...

2018-03-15 15:13:18 195

原创 链表面试题-单链表排序(冒泡,快速,归并)

面试中单链表是一个被问及频率很高的问题,这几天同学面试中多次被问及,所以今天整理一下。注:对链表排序时,只需要交换结点间的_data即可,如果想法是改变指针,那么只能是走弯路了。结点类型struct Node{ //构造函数 Node(int data) :_next(nullptr) ,_data(data) {} Node...

2018-03-15 12:40:42 2838 2

原创 区分接口继承和实现继承

本文系整理Effective C++中的条款34首先当我们设计一个基类的时候,对于派生类的需求可能有下面几种派生类只继承基类的接口(即函数的声明);派生类同时继承接口和实现,并且希望能够重写(多态)自己的版本派生类同时继承接口和实现,但是不允许重写任何东西说这些晦涩难懂的文字,一时半会不好理解,下面分别举实例,用代码来解读这三种需求。下面是一个展现绘图程序中各种几何图形的class继承体系:

2018-03-14 15:41:26 7090 1

转载 UNIX网络编程-recv、send、read、write之间的联系与区别

原文链接:http://www.cnblogs.com/mhscn/p/3911284.htmlinclude <unistd.h>ssize_t read(int fd, void *buf, size_t nbyte); read()函数是负责从fd中读取内容。当读成功时,read()返回实际所读的字节数,如果返回的值是0,表示已经读到文件的结束了,小于0表示出现了错误。如果错误为EINTR说明

2018-03-13 17:33:39 993

转载 UNIX网络编程-send、recv、sendto、recvfrom详解

原文链接:http://www.cnblogs.com/mhscn/p/3908854.htmlsend、recv和sendto、recvfrom,一般情况下,send、recv在TCP协议下使用,sendto、recvfrom在UDP协议下使用,也可以在TCP协议下使用,不过用的很少。1、send 这里只描述同步socket的send函数的执行流程。s:套接字 | buf:存储发送数据 |

2018-03-13 17:28:57 1289

原创 链表面试题-逆置单链表和逆序打印单链表

先来讨论逆序打印的问题:逆序打印:所谓逆序打印,就是先打印整个链表的最后一个节点,故此可以使用一个栈,只要节点存在就一直入栈,当所有的节点都入栈后,此时最后一个节点就在栈顶了,然后一次pop()即可。代码实现:void PrintTailToHead(Node* Head){ if(Head == NULL) return; stack&...

2018-03-13 10:03:28 551 1

原创 链表面试题-合并两个有序单链表(递归和非递归)

题目描述: 合并两个有序单链表,使得最终的链表也是递增的。节点的结构typedef struct ListNode{ ListNode* _next; int _data;}Node;递归:Node* MergeListR(Node* Head1,Node* Head2){ if(NULL == Head1 || NULL == ...

2018-03-12 09:35:03 493 1

原创 链表面试题-单链表带环和环的入口点问题

带环问题判断链表是否带环如果带环则环长是多少求环的入口点1、判断单链表是否带环思路:设置一个快指针,每次走两步,再设置一个慢指针每次走一步。然后判断是否有交点即可。 就好比你在环形跑道和别人赛跑,不管你俩速度如何,只要他比你快,总会追上你将你套圈(甩你好几圈的意思)基于这种思路实现如下代码://判断链表是否带环bool IsExistLoop(Node* H...

2018-03-11 10:09:17 426

原创 7. Reverse Integer

题目简介: 给一个整型数,将它逆置过来:Example 1:Input: 123Output: 321Example 2:Input: -123Output: -321Example 3:Input: 120Output: 21思路:如果该数后面是连续的0,逆置过来没有0,由于逆置之后也是数字,打印出来不会显示。考虑到整型逆置溢出的问题,有符号整数的范围为-2147483648~2

2018-02-07 16:24:26 121

原创 TCP协议三次握手,四次挥手

TCP建立连接的过程叫做握手,握手需要在客户端和服务器端之间交换三个TCP报文段,称之为三次握手。TCP断开连接的过程叫做挥手,即在客户端和服务器端之间交换四个TCP报文段,称之为四次挥手。下面是一次完整的TCP连接过程: 上图中对于发送SYN和FIN时,缺少了一点细节的东西,就是在发送FYN和FIN时同时会发送一个ISN(初始序列) 当一端为建立连接而发送它的SYN时,它为连接选择一个初始序号

2018-02-06 23:26:13 251

原创 初识python,编写一个简单的python程序

在ubuntu下安装好了最新的python3.9,开启学习python之旅。在命令行输入python进入交互模式: 交互模式下,你每输入一行代码,python解释器就将这一行代码转换成机器码来执行。例如:交互模式输入100+200,然后回车直接会显示运行结果300但是这样的代码是没有保存的,如果下次我们还要计算100+200的值,就得重新写。那么还有一种方式就是将所有代码写在一个.py结尾的文件里

2018-02-05 13:03:53 16694 1

原创 Ubuntu下安装最新的python,开启学习python之旅

查看当前python的版本python --version下载python3.7sudo apt-get install python3.7如果想下载3.x的话,输入python3.后连续按两次tab,就会显示当前可下载的版本,如下图: 下载完成后,用最新下载的版本去替换系统默认的版本sudo rm /usr/services/python然后将刚下载的最新版创建

2018-02-05 12:49:30 3207

原创 c++string类(浅拷贝,深拷贝,写实拷贝的优点和缺陷)

前言楼主现在大三,鉴于年后想找一个实习,故寒假在家复习一些学过的知识点,前几天看到一篇关于string类的文章,细读之后,发现我还是有许多遗漏的地方,经过这几天的学习,想通过这篇文章,将有关string类的东西都记录一下。重点介绍:浅拷贝深拷贝写时拷贝写时拷贝隐含的问题下面的文章将会以上面的四点进行展开,至于代码,我会在linux和vs下都跑一下,因为我发现编译器不同。有

2018-02-04 20:23:27 1558

原创 touch指令

linux下touch有两个作用。将已存在的文件的时间标签改修改为系统当前的时间(默认),也可以通过参数指定时间,但是数据原封不动。用来创建新的空文件,这个应该是最常用的一种方法。语法:touch [选项] [参数]选项:-a:或--time=atime或--time=access或--time=use 只更改存取时间;-c: 或--no-create 不建立新文件-f:此参数将忽略不

2018-01-28 23:06:13 20062

转载 C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解

在C++的类定义里面,可以看到类似下面的定义:class List {private: Node * p_head; int length; ……Public: int GetLength () const; bool GetNodeInfo(const int index,Node & buffer) const {…… } bool

2017-12-30 20:51:18 227

原创 有关联的多表查询

前言数据库最多的操作应该就是查询了,尤其是有关联的多表之间的查询了。下面会介绍几种多表查询的操作的语句和实例演示,一方面是作为自己的总结,一方面希望可以帮助到需要使用的同学。对于下面的代码示例都是基于学生表,课程表,成绩表三张表。 学号是学生表中的主键课程号是课程表中的主键成绩表中的学号和课程号分别为外键,和学生表,课程表建立联系 - 简单多表查询首先要指定查询中都用到了那些表,然后在whe

2017-12-24 11:32:32 572

原创 数据库的存储过程

下面的代码示例为sqlserver。对于数据库的操作可以每次直接输入SQL语句,也可以使用过程存储。 两者的区别 存储过程是创建好就存在与数据中当中的,所以可以大大提高效率,减少一些重复性的操作。 例如:对于学生表当中要插入10000条记录,如果只简单使用SQL语句,需要输入重复性的语句INSERT INTO STUDENT VALUES注:下文的代码演示基于一张学生表,课程表,和一张成绩

2017-12-22 17:11:23 426

原创 基础I/O总结

引言对于文件I/O,即打开文件,读文件,写文件这个应该都不太陌生,这篇文章会首先回忆一下C语言中的一些基础I/O,进而引入到Linux下的文件I/O。C语言中的文件I/O打开文件#include<stdio.h>FILE *fopen(const char *path,const char *mode) 返回值:FILE* :文件指针参数:path:文件路径mode:打开方式这里的打开方式一

2017-12-21 14:45:26 252

原创 理解vfork函数

前言vfork这个函数,起初是在fork函数没有实现写实拷贝机制的时候出现的一个东西。然而现在的fork的函数早已经支持写实拷贝。 提到写实拷贝就多说几句,在操作系统中,创建一个子进程你就得给他分配进程所需的资源,如果每次创建子进程后都要拷贝父进程的资源有点太降低效率了。就是在这个环境下衍生出了vfork这个函数,父子进程同时使用同一份内存空间,虽然省去了重新开辟和拷贝的动作,但却非常危险。写实拷

2017-12-13 15:51:01 1039

原创 进程的基本控制

前言:整个操作系统都在围绕进程这一概念具体展开,所以对于进程的控制就显得十分重要,这篇文章主要讲述以下几点:1. 进程创建 2. 进程退出 3. 进程等待 4. 进程程序替换进程创建在操作系统中,对于父子进程的概念非常重要,必要linux自带的bash,对于你在命令行输入的一些指令,它是不会自己去处理你这些请求的,而是通过创建子进程去处理,它只需要知道子进程返回的消息就好了。为什么要基于

2017-12-10 23:19:37 562

原创 布隆过滤器

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。背景介绍: 在一个集合内想要快速查找一个元素是否存在,如果是整数集合的话,可以直接采用位图,可以在O(1)的时间复杂度内判断出是否存在,但是位图的缺陷很

2017-12-07 14:48:51 211

原创 位图

位图(Bit Map)是一个数组的每一个数据的每一个二进制位表示一个数据,0表示数据不存在,1表示数据存在。不好理解的话,由下面这道题来引出位图的使用: 给出40亿个不重复的无符号整数,没排过序,给出一个无符号整数,如何快速判断一个数是否在这40亿个数中?解题思路:首先没由给出数的范围,只说了无符号整数,所以就要考虑到0到最大整数42亿的整个区间的所有数。所有数据没有排过序,故而不能使用类似二

2017-12-07 11:15:43 326

原创 两个栈实现一个队列&两个队列实现一个栈

两个栈实现一个队列实现思路:定义两个栈stack1,stack2。stack1存放入队列序列,stack2存放出队列序列。如果进行Push操作,直接对stack1进行操作。如果进行Pop操作,stack2不为空,直接对stack2进行Pop操作,如果stack2为空,将stack1中的数据Push进stack2,然后对stack2进行操作。整个流程如下图: 先Push 1 2 3,然后进

2017-12-06 15:37:17 240

原创 出栈的合法性检测

对于一个给定的入栈顺序,可能的出栈顺序会有很多,但是肯定都要遵循栈“后进先出”的特点,那么怎么进行合法性检测呢?算法思想如下:定义变量InIndex标记入栈序列的当前位置,定义OutIndex标记出栈序列的当前位置对InIndex和Outindex处的数进行比较,如果相同,同时往后走。如果不相同,则出栈序列去和辅助栈的栈顶的数据比较,如果相同,则pop掉栈顶,++OutIndex,然后继续和栈

2017-12-02 18:24:01 986

原创 实现最小栈

题目要求实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)首先针对这道题有多重解决方案。 1、定义两个栈,一个正常栈,另一个栈的栈顶始终保存整个栈内的最小值。思路如下:无论Push什么数据,正常栈肯定直接Push进去。而当新Push的数据大于最小栈的栈顶时,最小栈将自己的栈顶再次Push一遍。而当新Push的数据小于最小栈的栈顶时,意思是该

2017-12-02 17:17:30 860

原创 九种常见排序的比较和实现

首先排序算法大的可以分为:关键字比较非关键字比较关键字比较关键字比较就是通过关键字之间的比较和移动,从而使整个序列有序, 而关键字比较的算法,又可以像下面这样划分:对于排序算法之间的比较,无异于时间复杂度和空间复杂度,看下面这张表格 由上表不难得出下面这几个重要的点:从平均时间性能而言,快速排序最佳,其所需时间最佳,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。堆排序和归并之间,

2017-12-01 13:24:02 928

原创 冒泡排序

冒泡排序(Bubble Sort)见名知意,就是从前至后依次比较相邻的两个数据的大小,将大的往后移动,这样经过一次完整的比较和移动,就可以将序列中最大的一个数放置到序列的最后,这也就是它名字的由来,就像水里的水泡一样, 越往上浮越大。算法过程:比较相邻的元素,如果第一个比第二个大,就交换两个的位置。从序列的开头一直到结尾一直重复这样的工作,这样一趟结束够就可以将最大的数放置到最后。进行第二趟排

2017-12-01 11:21:44 307

空空如也

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

TA关注的人

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