- 博客(34)
- 收藏
- 关注
原创 数据库的学习
数据库的含义:数据库,顾名思义就是数据的仓库,也可视为电子化的文件柜,能对数据进行增加、删除、修改、查询等操作由DBMS进行操作,DBA是对数据库进行设计、维护、管理的人员数据库的类型:层次型数据库:数据的存储类似一棵树,以上下层级关系来组织数据网状型数据库:数据的存储类似于一幅图,各个数据节点和其他节点都有连接关系关系型数据库:关系模型就是一张二维表,任何数据都可以通过行号和...
2020-01-22 13:48:59
257
原创 递归算法
递归算法的基本思想:递归算法就是在程序中不断反复调用自身来达到求解问题的方法。递归的重点是调用自身,这就要求待求解问题能够分解为相同问题的一个子问题。这样通过对此递归调用,便可以完成求解递归调用是一个函数在它的函数体内调用它自身的函数调用方式,这种函数也称为"递归函数"。在递归函数中,主调函数有事被调函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。函数的递归调用分两种...
2019-11-22 19:31:58
388
原创 递推算法
递推算法是一种理性思维模式的代表,根据已有的数据和关系,逐步推导而得到结果执行过程:1、根据已知结果和关系,求解中间结果2、判定是否达到要求,如果没有达到,则继续根据已知结果和关系求解中间结果。如果满足要求,则表示寻找到一个正确的答案地推算法需要用户知道答案和问题之间的逻辑关系。在许多数学问题中,都有明确的计算公式可以遵循,因此可以采用递推算法来实现。运用递推算法可以用来实现斐...
2019-11-22 19:19:54
238
原创 穷举算法
穷举算法是最基本的算法思想,其基本思想就是从所有可能的情况中搜索正确的答案,其步骤如下:1、对于一种可能的情况,计算其结果2、判断结果是否满足需求,如果不满足则执行第一步来搜索下一个可能的情况,如果满足需求,则表示寻找到一个正确的答案在使用穷举算法时,需要明确问题的答案的范围,这样才可以在指定范围内搜索答案。指定范围之后,就可以使用循环语句和条件判断语句逐步验证候选答案的正确性,从而得...
2019-11-22 16:32:23
622
原创 lua中pairs和ipairs的区别
ipairs (t)Returns three values: an iterator function, the tablet, and 0, so that the constructionfor i,v in ipairs(t) dobodyendwill iterate over the pairs (1,t[1]), (2,t[2]), ···, up to the f...
2019-11-01 16:50:49
142
原创 关于std::ios::sync_with_stdio(false);的作用
之前因为初学C++代码,然后写代码的时候经常会出现程序无故超时,最后发现问题是出现在cout和cin上,用C语言的scanf和printf便不会有这样的问题,但又因为scanf和printf有太多的占位符嫌麻烦,因此研究了下此问题。通过写这篇blog来解决大家的超时问题,此问题的原因出在cin和cout会与stdio产生同步,中间会有一个缓冲区,因此cin和cout的效率会降低,所以通过...
2019-10-12 11:46:47
551
原创 switch case开关语句的坑
由于之前写的switch case 都是case语句后面有break的,因此也没有注意到一个知识点就是若case语句后面没有加break的话,会继续执行以下的case语句,不管是不是与条件相符,直到遇到第一个break才跳出switch结构例题:#include <stdio.h>#include <string.h>int main(){ int...
2019-09-19 12:57:45
1263
原创 sizeof与strlen的区别及例题解析
sizeof:计算数组长度,返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,该类型保证能容纳实现所建立的最大对象的字节大小。strlen:strlen在C语言中是string标准库中的函数,但其本质是一个计数器,从程序员给的任何位置开始计数,直到遇到\0,便结束然后返回计数器的值例题代码解析:#include <stdio...
2019-09-19 11:46:49
699
原创 C语言中程序在内存中的分段
当程序开始运行后,会加载到内存中,会把内存分成若干个段,每一段的功能和权限不同。代码段:通常是用来存放程序执行代码的的一块内存区域,该段的权限是只读权限,存放的是二进制指令、常量、具有const属性且被初始化过的全局变量和静态变量、字符串字面值。只读段:存放一些只读的数据,有字符串字面值数据段:用来存储被初始化过的全局变量和静态变量BSS段:用来存储未被初始化过的全局变...
2019-09-19 11:04:41
757
原创 面试题(五、内联函数与宏函数的区别)
内联函数:内联函数把函数编译好的二进制指令直接复制到函数的调用位置。内联函数的优点是:能够提高程序的运行速度,但这样会导致可执行文件冗余,因为是牺牲空间来换取时间内联函数分为显示内联和隐式内联:显示:在函数前加inline隐式:在结构、类中直接定义的成员函数,则该函数也被自动优化成内联函数宏函数与内联函数的区别?1、宏函数不是真正的函数,只是代码的一个替换,因此不...
2019-09-02 21:12:50
293
原创 面试题(四、谈谈对指针的看法)
什么是指针:指针是一种数据类型,使用它定义的变量叫作指针变量,一般这种指针变量占4|8个字节内存大小。为什么使用指针:1、函数之间不能共享变量:函数之间传参是值传递,因此不能共享变量,函数之间的命名空间是独立的,但是存储空间是统一的,可以把存储的地址在函数之间传递,达到共享的目的。2、堆内存无法取名字,只能与指针配合使用3、优化函数之间的传参,会随着要传递的参数的字节数增加...
2019-09-02 20:54:23
523
原创 面试题(三、在C++中指针与引用的区别)
简要概括指针与引用:指针:一个数据对象的地址引用:一个数据对象的别名指针与引用的相同点:都可以优化函数传参的效率指针与引用的区别:1、指针可以为空,而引用不能为空2、指针可以不初始化、而引用必须初始化3、指针可以改变指向,而引用在对一个对象取别名后不能对其他对象再取别名4、指针是个数据类型大小为四字节,而引用只是取别名大小为其依附数据对象的大小5、指针...
2019-09-02 20:29:43
377
原创 面试题(二、fork和vfork的区别)
在库函数中fork和vfork函数的功能都是:创建一个新的进程fork和vfork的区别:1、调用fork函数后,子进程会拷贝父进程中的数据段、代码段、堆栈段,而调用vfork,子进程与父进程共享数据段,不拷贝代码段、堆栈段。2、调用fork函数后,子进程和父进程的执行次序不确定,而调用vfork后,保证子进程会先运行,但是在调用exec或exit前会在父进程的空间中运行,在子进程调用...
2019-09-02 20:16:49
281
原创 面试题(一、进程与线程的区别)
多进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。多线程线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和...
2019-09-02 19:41:18
298
原创 C++实现cp覆盖指令
前言:想必大家都知道cp这个命令,现在我要给大家分享一个用命令行参数实现的cp覆盖命令main函数的命令行参数:int main(int argc,char* argv[]){}关于argc与argv[ ] 下面这张图可以助你理解本图来自:https://blog.csdn.net/Boring_Wednesday/article/details/78954104代...
2019-08-21 16:58:42
1114
原创 构造函数与析构函数
目录构造函数:构造函数需要注意的几点:单参构造与类型转换:初始化列表:析构函数:构造函数:构造函数是类的一种特殊的成员函数,特点是:会在创造一个新对象时调用执行。构造函数需要注意的几点:1、构造函数是可以被重载的,不会有冲突,并且同一个名字的函数可以有多个版本。Stu(void){ cout << "我是无参构造" <&l...
2019-08-20 21:04:09
140
原创 浅谈new/delete与malloc/free的用法及区别联系
目录一、在C++中内存主要分为5个存储区:二、new/delete的用法三、malloc/free的用法四、new/delete与malloc/free的相同点与不同点:一、在C++中内存主要分为5个存储区:栈(Stack):局部变量,函数参数等存储在该区,由编译器自动分配和释放.栈属于计算机系统的数据结构,进栈出栈有相应的计算机指令支持,而且分配专门的寄存器存...
2019-08-20 20:10:39
781
原创 C++中的内存管理
在C++中内存主要分为5个存储区:栈(Stack):局部变量,函数参数等存储在该区,由编译器自动分配和释放.栈属于计算机系统的数据结构,进栈出栈有相应的计算机指令支持,而且分配专门的寄存器存储栈的地址,效率分高,内存空间是连续的,但栈的内存空间有限。堆(Heap):需要程序员手动分配和释放(new,delete),属于动态分配方式。内存空间几乎没有限制,内存空间不连续,因此会产生内存碎片。...
2019-08-20 18:24:36
121
原创 C++中类对象的创建与释放过程
在C++的学习过程中,来分享类对象的创建过程与释放过程,即类对象的构造函数与析构函数;//********************************************创建过程: 分配内存(对象)-> 父类构造函数-> 成员的构造函数-> 自己的构造函数父类构造的顺序:按照继承表从左到右依次构造。成员构造的顺序:按照声明顺序从上至下依次构造...
2019-08-18 16:16:08
4696
原创 TCP/UDP协议的C/S模型
努力学学习Linux编程的我,来分享一下TCP/UDP的C/S模型嘻嘻首先是基于TCP协议的C/S模型客户端代码如下:#include <stdio.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h&g...
2019-08-14 22:39:12
392
原创 数组与链表的区别
:**数组的特点:1、在内存中数组是一块连续的区域2、数组在使用前要事先预定好大小,不然会浪费内存,静态数组由栈分配,动态数组由堆分配3、查找效率高,因为数组是连续的,知道每一个元素的内存地址,可以直接找到给出地址的元素4、插入元素与删除元素效率低5、不利于扩展6、内存空间要求高****数组的优点:1、查找元素效率高2、内存空间占有的少****数组的缺点:1、插...
2019-08-13 23:12:57
125
原创 Linux的内存管理(最上层到最小层的内存管理)
大家好,tyc今天来给大家总结一下并且梳理一下Linux从最高层到最底层的内存管理。******************************************************************************************************************** 类型...
2019-08-06 20:58:50
180
原创 静态库与动态库
我们先来描述一下库、静态库、动态库:库:就是目标文件的集合,把不需要升级更新维护的代码打包合并在一起方便使用,也可以对源代码进行保密。静态库:静态库在使用的时候是把被调用的代码复制到调用模块中,然后再执行程序时,静态库就不需要了。静态库的执行速度比较快,不过占用空间大,当库中的内容发生变化时,需要重新编译生成程序。因此不能轻易修改静态库中的内容。动态库:动态库在调用模块中嵌入调用代码在库的相...
2019-08-04 22:31:22
87
原创 数据结构与算法之堆排序
这是我最近几天写排序的最后一个算法排序了我觉得这个堆排序和归并排序可以说是这几个算法中写起来最困难的代码了。堆排序:是指利用堆这种数据结构所设计的一种排序算法。因为堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点,所以建堆就和建树一样,必须建好堆再进行排序。堆排序的时间复杂度为:O(nlog2n),是一种不稳定的排序算法代码思路:首...
2019-07-27 15:12:07
153
原创 数据结构与算法之选择排序
接下来要说的便是选择排序工作原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。选择排序的时间复杂度是O(n^2),是一种不稳定的算法算法实现:1、假设确定最后一个数据为最大值2、从头开始遍历这串数据,如果找...
2019-07-27 15:01:03
110
原创 数据结构与算法之插入排序
今天要分享的是前两天写的排序的后几个首先是插入排序:插入排序的稳定性是稳定的,时间复杂度与冒泡排序一样:快的话是O(n),慢的话是O(n^2)插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第...
2019-07-27 14:56:04
140
原创 数据结构与算法之归并排序
算法三连!!!这次我要分享的是归并排序归并排序的时间复杂度为:O(nlog2n),并且是一种稳定的排序算法归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。老样子接下来要分享的便是我写...
2019-07-25 21:00:57
123
原创 数据结构与算法之快速排序
这次我要分享的是算法中的另一种排序:快速排序快速排序可以说是排序当中大部分情况下效率最高的排序算法。快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行...
2019-07-25 20:51:45
174
原创 数据结构与算法之冒泡排序
励志成为程序员的小白又来啦!这次要分享的是算法中的几种常用排序。首先这次我们要分享的是最经典的冒泡排序…冒泡排序:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或...
2019-07-25 20:45:46
131
原创 二叉树的功能实现(C语言)
疯狂学习的代码小白又来啦!从上篇博客过来的童鞋们可能知道我这篇要写什么上篇博客我通过自己的学习个人总结了一下树的基本概念因此这篇我就来加载自己当时学习时写的树的C语言代码首先我们要用结构体来定义树的结点…typedef struct TreeNode{ TYPE_T data; struct TreeNode* left; struct TreeNode* right;}Tre...
2019-07-23 20:49:21
529
原创 数据结构之树
标题:树正在疯狂学习数据结构的我 来分享总结一下之前所学的树。树:是一种元素之间存在一对多关系的数据结构,常用于表示组织结构、辅助排序、查找等等。因此它有许多的相关术语:1、根:树的最顶层的元素,有且只有一个。2、父结点(双亲结点):指的是元素的上一层元素。3、子结点(孩子结点):指的是元素的下一层元素。4、兄弟结点:指的是有同一个双亲的不同结点。5、叶子结点:没有子结点的元素,一...
2019-07-23 20:19:52
260
原创 C语言设计的简单2048小游戏
//***************************************************************************////**************************刚学代码的小白************************************////想必大家小时候或者现在都玩过2048这款小游戏//在此我用从学习c语言到现在所学知识简...
2019-07-13 14:41:21
908
1
原创 C语言设计的简易电话簿
#include <stdio.h>#include <stdbool.h>#include <string.h>#include <stdlib.h>#include <getch.h>typedef struct Contact{ //定义联系人结构体 char name[20]; //姓名 char sex; /...
2019-04-27 14:05:42
693
原创 C语言中字符串输入时残留回车符的解决
当先输入整数时再输入字符数据时,输入整数时的回车符会残留下来,影响字符的输入解决方法:1.调整输入的顺序,先输入字符,在输入整数。2.scanf("%[^\n]");**scanf("%c"); //必须在确定有垃圾数据的情况才能使用,否则必须补一个回车符。3.stdin->_IO_read_ptr = stdin->_IO_read_end;//把输入缓冲区当前位置指针...
2019-04-27 13:18:05
4713
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人