自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (2)
  • 收藏
  • 关注

原创 详解IP地址

网段划分特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址

2021-02-21 23:37:36 358

原创 网络知识总结

网络知识总结网络协议协议分层1. OSI七层模型 OSI(OpenSystemInterconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如路由器,交换机。OSI七层模型是一种框架性的设计方法,建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的功能使就是帮助不同类型的主机实现数据传输。它的最大优点是将服务、接口和协议这三个概念...

2021-02-21 19:43:03 285

原创 网络基础知识

这里主要是对网络知识的简单介绍,以便对网络知识有一个简单的、整体的认识,了解网路的发展历史,理解网络传输的基本流程。网络发展 独立模式:计算机之间相互独立。(每个计算机之间相互独立,每个终端各自持有客户数据) 网络互连:多台计算机连接在一起,完成数据共享。(每个人都使用各自独立的计算机,共享数据由服务器集中管理) 局域网LAN:计算机数量更多了,...

2019-03-31 12:52:44 220

原创 用例图、功能模块图和数据库的区别

1. 用例图是功能模块图的前身;其次,用例图分角色,而功能模块图不分角色;最后,用例图有需求分析师来做,功能模块图由详细阶段的设计人员来做。2. 根据用例图和功能模块图设计数据库。综上,三者之间的关系,先画用例图,在根据用例图画出功能模块图,最后根据用例图与功能模块图进行数据库的设计。...

2019-03-31 12:52:08 8720

原创 汉诺塔问题

        汉诺塔问题是一个简单又经典的递归问题。  题目描述        汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。...

2018-10-01 17:49:58 2046

原创 算术表达式求值

中缀表达式      我们平时写的表达式称为中缀表达式。      eg: 1. 2 - 3*4 +5       2.  2* (3- 5) +7      正如上面的表达式,我们在计算的过程中,首先要注意运算符的优先级,其次要注意括号。 我们应如何判断运算符的优先级以及如何进行运算。后缀表达式     首先,我们可以将中缀表达式转化为后缀表达式(逆波兰表达式),然后进行运算...

2018-10-01 15:20:43 10894 1

原创 模拟实现atoi 和itoa

模拟实现atoi分析: 需要对特殊情况进行处理。字符转整数1. 考虑输入的字符串是否为NULL、空字符串2. 考虑输入的字符串是否包含正负号3. 考虑输入的字符串是否会发生上溢或下溢(正整数的值是0X7FFFFFFF,最小的负整数是0X80000000)4. 如何区分正常返回数字0和不合法的返回 //模拟实现 atoi//int atoi( const char *str...

2018-09-16 17:25:51 214

原创 MTU对IP协议、UDP协议、TCP协议的影响

认识MTU    MTU(最大传输单元)是指一种通讯协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口)。     以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU。     注:如果一个...

2018-09-05 15:34:25 2845

原创 堆栈相关面试题(详解)

1. 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)时间复杂度为O(1)。分析:设计两个栈,一个栈用来push 、pop操作,另一个栈用来保存当前最小值Min。当push元素小于等于Min栈顶元素时,将其压入Min栈顶,当pop元素等于Min栈顶元素时,两个栈均要pop出栈顶元素。下图为各种情况的优缺点分析。class StackWithMin{...

2018-08-29 20:42:25 4872

原创 【剑指Offer】把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。分析  首先想到的是将数组中的数字进行排序,然后输出即可。但是我们应该用那种排序方法进行排序。显然直接使用整数进行比较是不可能实现的。其次我们可能想到转化字符串进行比较,但是对于{“3”,“32”,“32...

2018-08-26 13:08:33 254

原创 [剑指Offer]数组中出现次数超过一半的数字

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。分析 :    思路1:首先我们相当的应该就是遍历,判断每个数出现的次数。即双层循环,判断每个数出现的次数,如果有一个数字出现次数超过一般的数字,则输出。若遍历完没有找到...

2018-08-26 12:49:07 143

原创 C/C++中数字与字符串之间的转化

数字与字符串之间的转化在C中:方法:C标准库中的sprintf,sscanf字符串转数字 sscanf  #include<stdio.h>//字符串转数字void Testsscanf(){ //字符串转化为整数 char str1[] = "1234567"; int a; sscanf(str1,"%d",&a); printf("%d...

2018-08-25 14:46:55 5814

原创 字符串的排列&&翻转单词顺序列

字符串的排列题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。分析:这是个递归求解的问题。对于字符串的排列问题。如果能生成n-1个元素的全排列,就能生成n个元素的...

2018-08-24 14:07:26 397

原创 编程题--正则表达式

题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。分析:首先,考虑特殊请况:两个字符串都为空,返回true. 当第一个字符串不...

2018-08-24 13:30:03 354

原创 进程调度

     这里简单介绍下,进程的调度原理,调度类型和常用的进程调度算法。进程调度     说道进程调度,我们或许都有个疑问,为什么需要进程调度呢?进程调度的作用是什么?     需要进程调度的理由很充分,即充分利用计算机系统中的CPU资源,让计算机能够多快好省的完成各种任务。为此,可在内存中存放数目远大于计算机系统内CPU个数的进程,让这些进程在操作系统的进程调度器下,能够让进程高效(...

2018-08-21 17:50:08 15768

原创 Unique-binary-search-trees问题

问题1:Unique-binary-search-trees题目描述Given n, how many structurally unique BST's (binary search trees) that store values 1...n?For example,Given n = 3, there are a total of 5 unique BST's. 1 ...

2018-08-21 10:10:42 519

原创 环境变量&进程程序替换

环境变量      环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。 如:我们在编写C/C++代码时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。本地变量        只能在当前进程使用。环境变量          在当前进程及其子进程中使用,环境变量通常具有某些特殊...

2018-08-18 23:28:28 575

原创 关于fork以及子shell继承环境变量的疑问

在shell里,有这样的说法“在我目前这个shell的情况下,去启用另一个新的shell,新的那个shell 就是子程序啦!在一般的状态下,父程序的自定义变量是无法在子程序内使用的。但是透过export将变量变成环境变量后,就能够在子程序底下应用了”。但是在C里,父进程调用fork()创建子进程,子进程成为父进程的副本,复制父进程的所有进程内存到其内存地址空间中。父、子进程的“数据段”,“堆栈...

2018-08-18 19:07:44 3456

原创 进程的概念和进程控制

    这里将介绍进程的基本概念,什么是进程,如何描述和组织进程,接着讨论进程的状态,最后介绍进程 控制进程概念    1.  概念:            a. 进程是程序的一次动态执行过程            b. 担当分配系统资源(CPU时间、内存)的实体。(从内存角度)    2. 描述进程---PCB            进程的信息被放在一个叫做进程控制块的数...

2018-08-18 18:37:12 5667

原创 基础IO

      首先这里将对Linux下文件调用相关接口进行介绍,然后对比fd与FILE, 这里也会简单介绍下文件描述符和软硬链接相关的知识。首先复习C文件IO相关的操作。C文件IO      FILE* fp = fopen("file", "rwa+");     //打开文件    fgetc(fp);                           fputc()  //字符输...

2018-08-08 20:13:52 127

原创 重载、重写、重定义

重载    在同一作用域类,一组函数的函数名相同,参数列表不同(个数不同/类型不同),返回值可同可不同 重定义(隐藏)     子类与父类同名的成员(成员函数或成员变量)   如果一个类,存在父类相同的函数,那么,这个类将会覆盖其父类的方法,除非你在调用的时候,强制转换为父类类型,否则试图对子类和父类做类似重载的调用是不能成功的。 重写 (覆盖)     在多态机制...

2018-08-01 16:40:00 144

原创 静态库&动态库

      这里将简单介绍下什么是静态库什么是动态库以及两者之间的区别,在介绍之前,先介绍下什么是函数库,什么时候会用到库。什么是库?     库就是一段编译好的二进制代码,加上头文件就可以供别人使用。什么时候我们会用到库?      一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件,另外一种情况是,对于某些不会进行大的改动的代...

2018-07-27 16:58:18 265 1

原创 main函数参数解析和可变函数列表

 main函数参数解析    main函数是有参数的,只是我们使用main函数时,大多数情况下会省略参数。接下来我们看一下main函数的原型,并对main函数的三个参数进行解析。main函数原型解析:       这里有三个参数。       第一个参数:argc是一个整形变量,表示命令行参数的个数(含第一个参数)。     第二个参数:argv是一个字符指针数组,...

2018-07-18 17:43:02 455

原创 static、const和关键字volatile

staticstatic修饰变量&修饰函数       在介绍static之前,先看下static修饰全局变量和局部变量的题。#include<iostream>using namespace std;static int m;void fun1(){ static int n = 0; n++; printf("n = %d\n",n);} ...

2018-07-16 11:03:47 773

原创 编译链接原理

    对于源文件是怎么变成可执行程序的,当执行一个程序时,都做了那些处理,相信大家都比较好奇。在这里将简单介绍下程序的编译链接原理。    在ANSI C的任何一种实现中,存在两种环境翻译环境和执行环境。翻译环境主要将源代码转化为可执行的机器指令。执行环境用于实际执行代码。在翻译环境中,主要进行编译和链接,一个程序在编译阶段主要进行了预处理、编译和汇编处理。下面将对各阶段进行分析。(环境:cen...

2018-07-04 21:31:03 3178

原创 循环队列

        队列是一种只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表(头删尾插),它的存储方式分为顺序队或链队,以循环队列更常见。       这里仅介绍顺序队以及顺序队存在的假溢出缺陷,进而引出循环队列。顺序队列                在顺序队列中,当队尾指针已经到数组的上界,不能再有入队操作,但其实数组中还有空位置,这就叫做“假溢出”,解决假溢出的途径----采用循环...

2018-07-03 10:54:18 58690 7

原创 排序算法(4)---归并排序&总结

归并排序 定义    归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。思想     采用分治法思想 ,现将大问题进行分解,分解成小问题,再依次对小问题...

2018-06-14 16:58:28 233

原创 排序算法(3) ---交换排序

  应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。这里将主要介绍快速排序,以及快速排序的递归与非递归的实现和对快速排序的优化冒泡排序      冒泡排序是将大数或小数不断后移的一种思想,比较和交换都发生在两个相邻元素之间。    思想:        1.单趟排序:比较相邻的元素,如果第一个比第二个大(小),交换这两个元素,直到最后元素,则最后元素的值应该为最大或最...

2018-06-04 17:50:09 267

原创 排序算法(2)---选择排序

     这里先介绍简单选择排序,然后在介绍堆排序,(堆排序是选择排序的一种)选择排序      定义:     选择排序(Selection Sort)是一种简单直观的排序算法。它是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法(比如序列【5,5,3】第一次就将第一个【5】与【3】交换...

2018-05-18 21:28:38 166

原创 排序算法(1)---插入排序

     插入排序分为直接插入排序和希尔排序,接下来分别对直接插入排序和希尔排序做以介绍。 插入排序    将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。 算法过程分析:             具体例子分析:   时间复杂度 :    最坏情况下为O(n^2)   最优情况下时间复杂度为O(n)   ...

2018-05-14 18:36:00 172

原创 链表总结之STL中迭代器失效问题

             这里主要介绍链表的基本知识,加深对链表的了解,以及关于链表的常见的面试题。最后介绍STL中的迭代器失效的问题    一、链表基础知识        1.概念        链表是一种物理存储结构上非连续/非顺序的存储结构。链表的每个结点里面存储着下一个结点的指针,把存储数据元素的数据串链起来。2.结点组成         数据域:存储数据元素 ...

2018-05-05 10:10:03 387

原创 二维数组动态开辟与传参

    这里简单介绍动态二维数组的开辟与释放,以及二维数组传参的几种方法动态二维数组的开辟与释放     方法1:直接开辟一维数组                eg:   int *p = new int[10*10];//当成一维数组进行开辟                 访问数据的方式 :通过a[i*10+j] 来访问第(i*10+j)个数据。                优缺点:访问数...

2018-04-19 15:02:50 407

原创 强制类型转换

C语言强制类型转换1.隐式类型转换      eg:顺序表中在某个位置插入一个数           size_t pos;             for(int i=n-1; i>=pos; i--)             {}      注:i>=pos中,会发生隐式类型的转换,如果pos=0时,导致死循环。       应该为:i>=(int)pos将pos强转为int...

2018-04-15 21:17:31 301

原创 vim简介

vim三种基本模式    正常/普通/命令模式(Normal mode)        控制屏幕光标的移动,字符、字或行的删除。    插入模式(Insert mode)        只有在Insert mode下,才可以做文字输入,按ESC键可回到命令行模式。    末行模式(last line mode)        文件保存或退出,也可以进行文件的替换,找字符串,列出行号等操作。vim的...

2018-04-12 20:59:33 213

原创 Linux文件类型以及访问文件类型的方法

文件类型     在Linux中,可以说一切皆文件。文件类型包括 普通文件、目录、块设备文件、字符设备文件、软链接文件、命名管道文件、套接字文件共7种。    (1) - :regular file  --- 普通文件            普通文件又分为3种。           纯文本文件、二进制文件、数据文件。   (2)d  : directory --- 目录   (3)b : bla...

2018-03-30 17:54:13 1494

原创 C语言文件IO相关操作

            I/O函数以三种基本的形式处理数据:单个数据、文本行和二进制数据。1.fopen函数 (打开一个特定的文件)        形式: FILE  * fopen(char const* name,char const* mode)        参数:          name: 希望打开的文件或设备的名字            mode:                 ...

2018-03-21 19:56:20 1447 1

原创 蓝桥杯---K好数

                                                      算法训练 K好数                                           时间限制:1.0s   内存限制:256.0MB锦囊1锦囊2锦囊3问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。...

2018-03-14 16:29:53 442 1

原创 求一个数二进制中1的个数

 问题:     求一个数二进制中1的个数? 分析:     首先我们应该注意到这里的“一个数”,并没有指明是正整数,所以这里就不能用传统的方法将这个数转化二进制,然后去求1的个数。  因为负数会以补码的形式存在于内存。这里提供2中方法解决问题。 方法一:         二进制在内存中以32位存在,取出每一位判断是否为1,这里会用到 &运算 和 右...

2018-03-12 20:39:50 5437

原创 智能指针

     智能指针  概念    所谓智能指针就是智能/自动的管理指针所指动态资源的释放。 现阶段的智能指针是一种通用实现技术,是使用引用技术。 发展历史   第一阶段(C++98):auto_ptr ----自动指针         auto_ptr 的主要思想是 管理权转移, 但其缺陷很大,当通过拷贝构造函数,通过操作符=赋值后,原来的那个智能指针对象就失效了。只有新的智能 指针对象可以有效使...

2018-03-07 17:36:12 144

原创 多态与多态对象模型

      这里简单介绍下什么是多态,多态的构成条件,多态原理以及多态的对象模型。在介绍多态之前,先简单的介绍下什么是虚函数。虚函数    类的成员函数前面加virtual关键字,则这个成员函数称为虚函数。    注:1. 除静态成员函数   2. 内联函数不能定义为虚函数   虚函数重写:    当在子类的定义了一个与父类完全相同的虚函数时,则称子类的这个函数重写(也称覆盖)...

2018-02-20 23:02:38 283

字符串函数的实现

C语言字符串函数的实现,strlen、strcpy、strstr、srtcat等

2018-09-16

排序算法总结

排序算法总结(插入排序、希尔排序、选择排序等),包含源代码

2018-08-22

空空如也

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

TA关注的人

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