自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

努力努力再努力的博客

每天会不定时更新一些我的学习心得,欢迎大家共同交流,共同进步

  • 博客(65)
  • 收藏
  • 关注

原创 数据结构之二叉树面试题整理内容

数据结构之二叉树面试题整理内容 【摘要】在数据结构中,二叉树是一种类似于树型的结构,常见的二叉树由递归和非递归两种构建。递归方式构建二叉树很方便,缺点就是递归的使用要考虑栈桢的问题,而非递归虽然复杂一些,但是却不用考虑。这篇文章,我会把我最近学到的一些关于二叉树的构建以及面试题很详尽的写下来,希望可以帮助到你们。(附:有些问题用递归和非递归都可以解决,因此我会写两种方法) 常见的面试题...

2018-03-02 17:26:50 687 1

原创 时间复杂度详解

衡量一个算法的复杂度,我们通常是通过比较这个算法的时间复杂度和空间复杂度来进行算法优劣的比较,而这种比较不需要将程序跑起来,通过得到结果的快慢进行比较,而是在没有运算之前就已经可以通过估算得到这个结果。这样做,可以使程序员可以很清楚的了解到这个算法的好坏,从而方便地进行更正和优化。  提起时间复杂度,我们第一时间想到的肯定是计算时间的,但是,时间复杂度其实和程序的运行时间关系不大,它说

2017-12-11 18:07:07 1153

原创 结构体知识总结

结构体的知识,不是那么难,但是知识点也是很多的,在这篇文章中,我会告诉大家关于结构体的常用理论,以及如何去使用它,当然,关于结构体里面最重要的一个概念,内存对齐,我也用了很大的篇幅去说明,这是一篇写的很用心的博文,希望你们可以从中得到收获,谢谢

2017-11-25 11:14:28 437 4

原创 C语言循环小总结

每个do while语句都可以用一个for语句来替代。并且可以让初始条件,判断语句以及循环语句放在同一个语句中,十分的方便,也可以有效的减少代码量。但是在运用for语句的时候,有时会出现一些难以预料的情况,比如死循环,又比如输出的结果并不是预期的。这时候,我们就需要看清楚在{}中的一些语句是否出现了循环的副作用。举个很简单的例子吧。    当你把continue和break用的不是很恰当的时候

2017-11-06 17:15:10 1153 2

原创 Python爬虫实战基础篇(1)正则表达式

在学习Python来做一个爬虫时,是一定要知道正则表达式的,今天我就把学到的关于正则表达式的知识分享给大家,希望可以对你们有所帮助字符一般字符 匹配自身. 匹配任意除换行符以外的字符\ 转义字符,使后一个字符改变原来的意思[] 字符集,对应的位置可以是字符集中任意字符 ^表示取反,意思是除过这些字符之外的其他字符...

2018-08-03 15:25:22 330

原创 Python常用语法(上)

【摘要】Python作为一门很简洁的语言,在编程界也占有一席之地,在学完了C++之后,适当的学习一些Python的常见语法也是很不错的,现在我就把最近学到的Python的知识点总结在下面,可能有些多,你们可以慢慢看,这个主要还是要多练习呢printf函数将结果输出到标准输出raw_input = 函数从标准输入中获取用户输入name = raw_input("Enter name:")r...

2018-07-24 12:49:40 376

原创 网络传输层知识总结

端口号范围划分0-1023:知名端口号,HTTP,FTP,SSH等这些广为使用的应用层协议,他们的端口号都是固定的 1024-65535 操作系统动态分配的端口号,客户端程序的端口号,就是由操作系统从这个范围分配的。认识知名端口号SSH服务器,使用22端口ftp服务器,使用21端口Telnet服务器,使用23端口http服务器,使用80端口https服务器,使用443...

2018-07-10 15:46:06 504

原创 STL常用接口大全

【注】本文适合STL新手,包括今年就要秋招的广大朋友,可以让你们快速上手STL 最近刷题,发现好多题都需要用到STL才可以做,想到之前学了一遍但是没有很好地掌握,我就决定重新复习一遍,现在把我觉得重要的接口使用总结下来写成一篇博客,希望可以对你们有所帮助vector常用接口//构造一个空的vectorvector<int>v1;//构造一个空的vector ,但是底层...

2018-07-10 15:43:15 2982

原创 网络套接字编程

【摘要】进程间通信使用的信号,通过在操作系统之间传递信号来实现进程之间的通信,也就是互相协作进行运行。线程间也是通过信号进行通信的,线程本质上来说是一个轻量级的进程。进程是资源分配的最小单位,线程是运行的最小单位。进程间切换保留上下文的开销远远大于线程,因为线程间的大部分资源是共享的,除了一些栈上的信息以及数据段和文件。 - 网络间的通信往往是多个主机之间进行的,因此使用信号进行通信那一套已经是...

2018-07-03 10:27:14 254

原创 文件知识复习总结

【摘要】最近把之前学的关于文件的知识再次复习了一下,并且和Linux下的文件描述符fd进行了一个对比,希望这篇博客可以对你们有所帮助。目录复习C文件IO相关操作认识文件相关系统调用接口认识文件描述符,理解重定向对比fd和FILE,理解系统调用和库函数的关系软硬链接,对比区别动态静态库先复习一下C文件接口在C语言中,要想单个的输出字符,可以使用fgetc ,fput...

2018-06-29 17:03:38 332

原创 进程常用知识总结

【摘要】之前写了一篇详细的关于进程的博客,觉得有些繁琐,于是我今天重新把里面的重要知识点总结在这里,很简短但是很好懂,希望可以对你们有所帮助,上一篇的链接也给你们放在这里吧。https://blog.csdn.net/zb1593496558/article/details/80643381关于运行状态进程的运行状态有很多种,但是常见的有R运行状态,S睡眠状态,D磁盘休眠状态(不可中断睡...

2018-06-25 10:48:18 271 2

原创 异常处理

异常处理是C++体系中为了使得错误和代码分离的最常用的做法,为了达到这种目的,我们需要了解异常处理机制的本质,这样才能让我们更好的使用起来错误处理技术传统错误处理方法 1.终止程序 2.返回错误码 3.返回合法值,让程序处于某种非法的状态 4.调用一个预先设置的出现错误时调用的函数—回调函数异常处理异常,就是当一个函数发现自己没有办法处理错误时会抛出一个异常,让函数...

2018-06-14 17:05:40 362

原创 Linux学习之进程

【摘要】要想更好的学习并使用Linux操作系统,学习进程的知识是必不可少的,今天我就把这几天来关于进程的知识总结一下写了一篇博客,希望会对你们有所帮助。目录:冯诺依曼体系操作系统概念与定位深入理解进程概念,了解PCB学习进程状态,学会创建进程了解进程调度,Linux优先级,理解进程竞争性和独立性,理解并发与并行冯诺依曼体系冯诺依曼体系总共有四个部分,输入设备,输出设备,...

2018-06-10 18:32:39 275

原创 关于new,你可能不知道的三种用法

new的三种使用方法我们通常情况下使用new都是普通的new,并不会接触其他的两种类型,那么今天我就带你们了解一下不同的new,并且在了解这两种之后可以帮助我们更好的进行内存空间的开辟。plain new/delete 这是普通的new,也就是我们常使用的new,先来看它的函数原型吧。void *operator new(std::size_t)throw(std::bad_...

2018-06-04 22:10:09 1767 1

原创 C++内存管理

【摘要】在实际的工作生活中,正确的使用内存并且很好的管理这块内存是尤其重要的,在这篇博客中,我总结了最近学到的关于内存管理的常见问题以及解决办法,希望可以对你们有所帮助。内存分配方式(1)从静态存储区域分配。内存在程序编译的时候就已经分配好了(已经编址)这些内存在程序的整个运行期间都存在,如全局变量,static变量(2)在堆栈上分配。在函数执行期间,函数内局部变量(包括形参)的存储单...

2018-06-04 21:30:52 393

原创 C++复习大全(各种知识点)

前言这篇博客是我之前的一个礼拜复习总结的各种知识点,可能有些多,其中的一些观点是来自于《Effective C++》和《C++编程思想》,这两本书中的知识给了我很多启发,也让我懂得了许多不一样的知识点,我连带我的认识以及理解整理起来,希望会对你们有所帮助。资源就是一旦被使用,将来必须要返还给系统。在c++中最常使用的资源就是动态分配内存(如果分配了内存却从来不归还它,会导致内存泄漏其他...

2018-05-28 20:42:29 30246 6

原创 C++ 常见编程技巧总结(一)

【声明】这篇博客,是我阅读《Effective C ++》这本巨作,然后根据自己的理解,加上了一些见解,代码有些是参考本书的,希望可以帮助你们理解C++ 的一些机制,关于详细情况,还是请你们观摩这本巨作。确定对象被使用前已被初始化有时候,读取未被初始化的值会导致不明确的行为。对于无任何成员的内置类型,必须手动完成初始化int x = 0;const char* text = ...

2018-05-23 15:32:48 5352

原创 Linux学习 — 线程

【摘要】线程的出现让我们的计算机运行效率得到了显著地提升,虽然我们现在还很少接触到多线程的程序,但是在以后的实际工作中,多线程绝对是我们的一大得力助手,它可以显著提升你的工作效率,并且使得你的代码执行质量更有保障。在本文中,我整理了关于线程的各种知识,希望会对你们有所帮助通过为每种事物分配单独的处理线程,可以简化处理异步事件的代码。线程的概念什么是线程在一个程序里的一个执行...

2018-05-23 08:19:24 166

原创 进程间通信(命名管道,消息队列,PV操作)

进程间通信目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源通知事件:一个进程需要向另一个或一组进程发送信息,通知他们发生了某种时间进程控制:有些进程希望可以完全控制另一个进程的执行,此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变进程间通信发展管道System V 进程间通信POSIX进程间通信...

2018-05-22 18:30:36 1203

原创 I /O 文件的操作

【摘要】C语言中我们必须要掌握IO随着当前计算机的快速发展,文件越来越大,因此文件的需求也I/O操作就是简单的从程序移进,移出字节的事情,因此这些字节流被称为流。绝大多数的流都是完全缓冲的,这就意味着“读取”和“写入”都是在一块被称为:缓冲区的内存块来回复制数据。从内存中来回复制数据是特别快的用于输出流的缓冲区的数据只有被写满的时候才会被刷新(fflush,物理写入)到设备或文件,一次性把放满的缓...

2018-05-15 17:00:13 282

原创 Linux 信号总结以及常见信号使用

【摘要】信号是学习linux时必须要熟悉的一部分,没有了信号Linux系统就没办法正常的工作。而我们作为Linux程序员,也要用到信号来进行程序的运行,没有了信号,我们的工作将会变得一团糟。这几天,我把刚刚学的关于信号的知识点总结了一下,分享给大家,希望可以对大家有所帮助。信号的概念信号是linux系统为了响应某些状况而产生的事件。进程收到信号后应该采取相应的动作哪些情况会引发信号1.键盘事件  ...

2018-05-11 16:54:09 18742 9

原创 C++复习笔记(总结每一个小的知识点,经常更新)

类和对象的特性1.对象客观世界中任何一个事物都可以看成一个对象,任何一个对象都应该具有属性和行为。对象应能根据外界给的消息进行相应的操作,一个对象一般有一组属性和一组行为构成。数据体现了前面提到的属性,函数是用来对数据进行操作的,以便实现某些功能。2.封装与信息隐蔽可以对一个对象进行封装处理,把它的一部分属性和属性对外界屏蔽,也就是说外界是看不到的,甚至不可知的。把对象的内部实现和外部行为分割开来...

2018-05-06 13:56:23 3585

原创 Linux [vim]常用指令集

要想在Linux开发环境下熟练编程,那就必须得熟悉 vim 的基本操作最近我把之前学过的一些关于 vim的指令总结了一下,全部汇总到这篇博客里面,希望会对你们有所帮助(注:找工作一定要会这些操作,最好认真练习)闲话不多说,直接步入正题吧。我们常见的 vim 有三种模式 ,但是实际上有好多种模式呢,我们目前掌握这几种就足够啦。这三种模式分别是:命令行模式,插入模式和底行模式、  1.命令模式   这...

2018-05-01 10:01:44 855

原创 C++ 笔记 —>深度剖析多态(虚函数表)下

【摘要】在这篇文章中,我引出了虚基表的概念,但是由于篇幅原因,我没有深度去探索它,于是我分成了上下两篇。在这篇博客中,我会将继承时容易出现的几种情况都一一列出来并且进行虚表的分析,包括虚表的打印等等。上一篇博客的链接:https://blog.csdn.net/zb1593496558/article/details/80113176这篇博客会讲到的有以下几点。1.承接上文,先介绍一下虚表2.单继...

2018-04-29 12:02:05 286

原创 C++ 笔记 —>深度剖析多态(虚函数表)上

【摘要】多态性是面向对象程序设计语言中数据抽象和继承之外的第三个基本特性。要想认识多态,我们需要从最基础的知识开始着手,这篇博客是我整理了很久才发出来的,里面对于多态的底层分析很详尽,希望可以对你们有所帮助多态的概念多态,顾名思义就是一种事物具有多种形态,用比较正式的话来说,大概就是下面这段话啦。向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己...

2018-04-27 22:20:15 241

原创 深度剖析单继承与多继承

c++具有四大特性,封装,继承,多态,其中继承是很重要的一个特性,它的出现,保持了c++中类的复用性,因此继承的使用也很普遍。常见的继承分为单继承和多继承,而从这两个分支又可以扩展出很多种情况。所以,我把继承中最常见也最实用的几种方式总结在下面,希望可以对你们产生帮助。前言继承的关系是由人类的血缘关系衍生出来的一个名词,因此,继承中分为父类和子类,这和人类关系是相同的。

2018-04-22 21:24:06 4973

原创 Linux下生成动态链接库

【摘要】动态链接库是在编译器编译之后生成  obj 文件之后,将几个链接文件和动态链接库中的文件链接起来,在链接器中将几个目标文件组合在一起然后生成可执行文件  exe 文件,而生成动态链接库的这一步骤是由编译器自己完成的,它可以调用自己已经处理好的库函数,在需要时直接拿出来使用就好了。而今天,我要分享给大家一个可以自己实现动态链接库生成的小技巧,别说,这种小技巧在面试中还是会被经常问到的哦。方法...

2018-04-18 17:32:53 3081

原创 深浅拷贝剖析

【摘要】string类的拷贝构造和赋值拷贝函数一定会面临浅拷贝和深拷贝,要想合理使用这两种函数,那就必须要想出解决的办法。浅拷贝面临多次析构以及改动一个就会全部改变的问题,很容易造成内存泄漏,接下来我就先把浅拷贝的产生原因以及对应的解决办法分享给大家吧。目录1.简析拷贝构造和赋值构造2.引用计数法3.写实拷贝法前言在这里,我先说一下什么情况下是拷贝构造,什么

2018-04-17 17:05:35 487

原创 经典面试题—string类的详细分析与实现

【摘要】在常见的面试场景中,如果面试官想要考察你对于C++的掌握程度能够很完整的写出一个string类是很重要的。因为string类包含了C++的很多知识,可以系统的将你的知识发挥出来。在这篇博客中,我将会详细地说明string类的实现过程,方便你们理解。   目录          string类的成员分析            想要完成的常见操作   

2018-04-16 19:57:24 3146 9

原创 经典面试题-(日期类的实现)

【摘要】过去我们因为接触的数据类型比较少,因此不需要对运算符有太多的要求,但是自从我们开始学习C++之后,有了类的概念,如果我们仍想要对类中的对象进行一些操作,那就必须得实现操作符的重载了。       如果我们想要完成关于日期的一些操作,就像简单的加减,日期里面乘除没有意义。还有比如说算两个日期差的天数,用普通的操作符是很难实现的,因此,我们需要重载运算符,使它可以完成日期类的操作。首先,我们需...

2018-04-10 17:42:02 937

原创 malloc/calloc/realloc/以及new的用法详细分析

学过数据结构的话,我们想必对动态开辟内存空间的那几个函数已经颇为了解了吧。在我开始自学

2018-04-03 17:25:25 1195

原创 指针和引用的比较

在日常编程过程中,指针出现的频率可是相当高的,但是相对来说,引用就没有那么有名了。实际上,引用即具有指针的高效率,又具有变量的直观性,很适合各种环境中的使用。我今天就把引用和指针的相同不同之处总结起来,希望会对大家有所帮助      目录1.什么是指针2.什么是引用3.引用和指针的本质区别4.使用建议一.什么是指针我们对于指针的定义一定不会陌生,简而言之,指针就是指向一段内存空间的一个变量,从本质...

2018-04-03 16:12:47 479

原创 linux下调试程序

【摘要】在linux下,我们也应该掌握常见的程序调试指令,这样才能方便我们在linux下进行工作。在Windows下虽然调试程序比较方便,但是linux有比它更加吸引人的地方在于它可以很轻松的就进入一个程序的内部。这对于我们后期的代码分析有很大的好处,所以,今天我就把这几天学到的关于调试程序的命令行总计一下,希望会对你们有所帮助。(1)【strip +程序中的代码段】 给文件瘦身 这个命令行通常是...

2018-03-27 14:49:26 1065

原创 linux下gdb和g++的安装

前提是你的linux虚拟机必须联网并且你是在root用户下一.gdb的安装第一步:在命令行中输入如下代码                wget -O /etc/yum.repos.d/CentOS-Base.repo 当出现如下代码段时,你可以进入第二步了             [root@localhost usr]# yum makecacheLoaded plugins: fastest...

2018-03-22 22:11:20 540

原创 this 指针与常对象指针

【摘要】定义类对象时,我们可以同时定义多个对象,但是在调用函数时,编译器应该怎么样才能分得清楚它到底要对哪个变量进行操作呢?这时候,编译器通常会隐式地使用this指针来完成编译工作。那么,this指针到底是什么呢?常对象指针又是什么呢?这篇文章我会将学的知识整理下来,详尽地告诉你们。为什么会出现this指针呢?这是为了解决下面的问题当一个类中定义了多个对象时,则有n组大小相同的空间以存放n...

2018-03-21 16:46:17 348

原创 构造函数的魔力

【摘要】C++作为C语言的继承,具有C语言的一些特性,C++主要是面向对象,因此离不开类的使用,而类的使用和C语言里面的结构体很像,不过,它比结构体更加灵活。今天我就把使用类时碰到的关于构造函数的知识整理起来,因为构造函数实在是太多变了,我觉得很有必要写出来,希望可以帮助到你们。 类为什么不能进行初始化? 因为类就像结构体一样只是进行了声明,并没有实际的开辟空间,所以无法对数据成员进行初始化,...

2018-03-20 16:42:59 191

原创 通讯录(C语言)

通讯录是学完结构体之后检验自己掌握知识是否牢固的关键 代码分为三个部分,list.h,list.cpp 和 test.cpp,写这个通讯录花了我一上午的时间,已经有了雏形,不过没有满足动态开辟空间的要求,也没有使用文件格式,所以过几天我还会写一个高阶版的。 List.cpp#include"List.h" //包含头文件void InitPeople(Status *L) ...

2018-03-18 14:17:28 474

原创 剑指offer面试题(三)数组中重复的数字

题目 在一个长度为n的数组里的所有数字都在0~n-1 的范围里面,数组中有一些重复的数字,但是不知道有几个数字重复了,也不知道每个数字重复了几次,题目要求:找出数组中任意一个重复的数字这个题目有三种思路可以实现两种是通过数组实现,还有一个是通过哈希表来实现,我就把除了哈希表的那两种算法实现一下吧。 方法一 如果规定了空间复杂度为O(1),那也...

2018-03-14 20:09:53 209

原创 面试必须掌握的四大经典排序算法

一个好的排序算法,应该兼具时间复杂度和空间复杂度的优势,目前为止可以做到的排序算法中,时间复杂度最低的也是 n*log n,因此,要想优化排序算法,你必须先知道该从哪几个可能的算法进行优化,这篇博客,我会将几种最常见也最容易出现在面试题中的排序算法罗列下来,并且做一个完整的比较 1.直接插入算法 直接插入算法的算法思想 (1)默认数组已经有序 (2)这时候如果你要继续放进去元素,就要从数...

2018-03-13 20:54:48 2281

原创 高级指针的应用

【摘要】指针作为C语言阶段最重要的部分,连接着C语言和数据结构,指针的出现,简化了代码,使得程序猿从大量的代码中解脱出来。但是随之而来的也是各种副作用。因此,你必须完全熟悉它,才可以利用好它来帮助自己。在之前的一篇博客中,我把指针的初级使用整理到一起,最近又学了些关于高级指针的知识,我也照例总结出来,希望会对你们有所帮助。     目录     1.指向指针的指针以及...

2018-03-12 20:06:17 327

空空如也

空空如也

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

TA关注的人

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