自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++:一些“区别”的总结

1) 指针和引用的区别 1、指针可以不初始化;引用必须在声明时进行初始化。 2、指针可以为0,即为空指针;引用不能为空,因为声明时进行了初始化。 3、指针可以改变指向的对象(地址);引用一经初始化不可以改变。 4、对指针进行更改讲导致其指向另一个对象;对引用进行更改讲导...

2019-08-21 20:16:58 225

原创 MYSQL的事务与索引

事务:MySQL 事务主要用于处理操作量大,复杂度高的数据。简单来说,事务就是一组SQL语句的集合事务的四个特性(ACID):原子性(Atomicity,或称不可分割性):一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态。一致性(Consistency):在事务开始之前和事务结束以后,数据库的完整性没有被破...

2019-08-16 18:03:12 273

原创 git管理工具的使用

首先创建一个空目录(这里我创建的是git),通过git init创建了一个空仓库,该仓库可以用来管理git目录里面的文件自己编写一个文件,使用git add +文件名可以把文件添加到仓库中通过git commit -m +该文件的说明 把该文件提交到仓库中,一旦提交,文件的说明就不可更改当重新修改了main.c文件,此时通过git status查看状态可以发现,该文件可...

2019-08-09 11:22:47 231

原创 字符串:空格替换

题目:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路:本题不是一道很难的题,在进行空格的替换时,首先得清楚字符串中有多少个空格才能进行替换,所以第一步先得遍历字符串统计空格个数,本题中要替换的是%20占3个位置,所以在原字符串长度上得再加4个位置;定义两个指针,一个指针指向字...

2019-08-02 10:32:50 238

原创 MYSQL中的DML、DDL、DCL语句

DML(Data Manipulation Language)语句:即数据操纵语句,用来查询、添加、更新、删除等,常用的语句关键字有:SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLAIN PLAN,LOCK TABLE,包括通用性的增删改查。DDL(Data Definition Languages)语句:即数据库定义语句,用来创建数据库中的表、索引、视...

2019-07-31 14:32:38 583 1

原创 数据结构:实现两条单链表的合并

题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路:在进行两个链表合并的时候,根据题目要求合并成一个单调不减的链表,那么就是一个有序的升序链表,我们只需要定义一个空链表,把 第一个链表和第二个链表的数据进行比较,将小的数据存入空链表即可具体实现代码:typedef struct PNode{ int data; ...

2019-07-31 11:07:53 3399

原创 数据结构:带环的链表

一、判断链表是否有环解题思路:定义两个指针,一个快指针,一个慢指针,快指针走两步,慢指针走一步,当快指针和慢指针指向同一个节点时,就确定有环,如果快指针和慢指针不会指向同一个节点就说明不是带环链表typrdef struct Node{ int data; Node * next;}PNode;PNode * Hascircle(PNode * head){ ...

2019-07-30 16:37:48 361

原创 数据结构:链表中倒数第K个结点

输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。解题思路:定义两个指针,一个指针先走K-1步另一个指针再开始走,当第一个指针走到最后一个位置时,就找到了第K个节点假如要找倒数第4个节点,就定义一个指针先走步...

2019-07-30 14:52:33 223

原创 网络编程中的一些“数字”

1.http的应答状态码2.查看进程打开的文件描述符上限(用户级)3.临时修改文件描述符上限(用户级)4.永久修改文件描述符的上限(用户级)5.查看文件描述符的上限(系统级)6.临时修改文件描述符最大限制(系统级)7.永久修改文件描述符最大限制(系统级)8.已完成三次握手队列的长度9.未完成三次握手队列的长度10.tcp发送...

2019-07-29 20:29:45 223

原创 C语言:二维数组中的查找

在一个二维数组中,每一行都按照从左往右递增的顺序排序,每一列都按照从上往下递增的顺序排序,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数解题思路:该题查找一个二维数组的数时,通过查找的规律发现,当从该二维数组的最右上角查找开始,如果查找的数小于该数,那么这一列的数据都将大于要查找的数组,当查找的数大于该数时,那么这一行的数据将小于要查找的数据红色表示剔除部分...

2019-07-29 19:45:01 1821

转载 MYSQL存储引擎

在写MYSQL存储引擎之前,首先来回顾在Linux虚拟机上如何启动数据库先输入'su'进入管理员权限 在使用service mysqld status查看数据库的状态 如果数据库没有打开,就输入service mysqld start开启数据库这就是数据库的启动过程;查看数据库的默认存储引擎:查看MySQL的存储引擎INNODB索引实现InnoDB 采用 B+...

2019-07-27 12:10:42 216

原创 数据结构:单链表的逆置

数据结构中链表是其中很重要的一部分,那么就以单链表的逆置为例,大体回顾链表的头插单链表的逆置算法思想:先让头结点指向空,定义一个指针P指向原来头结点的next域,在定义一个指针q和p指向同一个位置,p是用来保存链表并移动的,q指向的是每次插入的位置,通过循环,将链表中的节点一个个插入具体代码实现如下:#include<stdio.h>#include<asse...

2019-07-27 10:10:56 3012 1

原创 网络编程:TCP/UDP协议

TCP协议的特点和编程流程TCP协议(传输控制协议):是一种面向连接的、可靠地、流式服务TCP的编程流程在编程中给定网络中进程地址结构:struct sockaddr_in{ sa_family_t sin_family; short sin_port; //htons,将主机字节序转网络字节序 5000以上 ...

2019-07-26 13:19:00 142

原创 OSI七层模型

OSI开放系统互连参考模型 (Open System Interconnect简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。那么这七层到底是做什么的呢?应用层:提供OSI用户服务,处理应用程序的逻辑,例...

2019-07-26 10:31:49 189

原创 计算机系统、B/S与C/S架构的区别

B/S与C/S架构什么是B/S架构:Browser-Server,浏览器和服务器架构,包含客户端浏览器、web应用服务器、数据库服务器的软件系统,用户只需要一个浏览器就可以访问服务,系统更新时,只需更新服务端,不需要更新浏览器(百度、淘宝等网站)什么是C/S架构:Client-server,客户机和服务器架构,需要安装客户端,通过客户端程序访问应用系统,更新时,既要更新服务端又要更新客...

2019-07-25 19:04:22 867

原创 C语言:内存对齐

struct A{ char a;//1+3 int b;//4};// 8struct B{ char a;//1+1 short b;//2 int c;//4};//8struct C{ int a;//4 char b;//1};//8class D{};//1struct E{ char a; //1 int b; //4 stat...

2019-07-23 20:59:51 389

原创 进程的创建和加载

进程:进程就是运行中的程序,指一组有序指令 + 数据 + 资源的集合进程管理的相关命令:ps:显示进程的信息kill pid:结束进程 kill -stop pid:挂起进程 kill -9 pid:强制结束进程jobs:显示后台和挂起的进程任务 &:在后台运行进程bg: 任务号,将挂起的进程放在后台执行fg: 任务号,将挂起或后台的进程放到前...

2019-07-23 20:37:13 349

原创 红黑树的插入实现过程

红黑树(R_B Tree)它是一种特殊的二叉查找树,红黑树的每个节点存储位表示的节点的颜色可以是红或者黑红黑树几个特点:每个节点的颜色非红即黑 根节点是黑色 每个叶子节点(NIL)是黑色(叶子结点指为空的节点) 如果一个节点是红色,那么它的子节点必须是黑色 从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点红黑树的插入过程如下图:插入的节点默认为红色,当插入节点...

2019-07-21 18:12:23 376

原创 C++:函数的重载

函数重载的定义函数重载是函数一种特殊情况,C++允许在同一作用域中声明同一名称的函数,这些同名函数的形参必须不同//可以重载,因为形参类型不同bool Compare(int a, int b){ return a > b;}bool Compare(double a, double b){ return a > b;}//可以重载,因为形参个数不同boo...

2019-07-21 12:07:01 290

原创 常见的几种排序——冒泡排序和插入排序

冒泡排序思想:冒泡排序的思想比较简单,就是两两数据进行比较,大的往后走,每循环一次就确定一个数的位置,就犹如扔石头,越重的石头落入海底越深,上图中第一次循环8的位置就确定了,所以下一次循环的个数就可以减一具体代码实现:void BubbleSort(int *arr,int len){ int tmp = 0; for(int i = 0;i < le...

2019-07-21 10:21:09 366

原创 常见的几种排序——归并排序

归并思想:开始以gap=1为一个归并段,low1=high1,low2=high2,开辟一个新数组,将小的数字存入新数组,把low1向后挪,low2向后挪,形成两两比较,使两数之间有序,在将gap*2为一个归并段 ,在进行low1与low2比较,low1<low2,就把low1的数据放入新数组,否则就把low2的数据放入新数组,以此循环达到所有数据有序,在归并期间,数据段有三种情况:...

2019-07-20 11:24:25 306

原创 常见的几种排序——快速排序

快速排序思想:以low指向的数据为基准,把high位置所指向的数据与基准进行比较,如果比基准大,high继续向前移动,如果比基准小,就把high指向的数据挪动到low位置,再从low位置开始移动,如果比基准小,low继续向后移动,当low指向的数据比基准大于基准,就把low指向的数据挪动到high的位置,又重新从high位置开始进行比较,high和low进行交替比较,直到low=hig...

2019-07-20 10:21:44 266

原创 Linux I/O多路复用机制

I/O多路复用是为了解决进程或线程阻塞到某个I/O系统调用而出现的技术,使进程或线程不阻塞某个特定的I/O系统调用;I/O多路复用机制包括select、poll、epoll;I/O复用可以监视多个描述符,一旦某个描述符就绪,能够通知程序进行相应的操作;select()它的头文件和函数原型如下:#include<sys/select.h>int select(i...

2019-07-19 23:25:44 518

原创 函数的堆栈调用及虚拟地址空间布局

1、虚拟地址空间布局在Windows操作系统下4G虚拟内存空间是以用户空间:内核空间为2:2分配的,在Linux下是以用户空间:内核空间为3:1分配的;在Linux下的虚拟地址空间分配如下图:从0X 0000 0000地址开始,有128M的保留区,该区域不可读不可写不可访问,存放的是C库的标准库;.text段存放的是指令(局部变量生成指令,其余生成数据),.data存放已初始化且初...

2019-07-18 22:47:52 352

原创 编译、链接、运行原理具体分析

对于一个程序,计算机语言是低级语言,而人利用高级语言与计算机交互,语言不通,则交互就会出现障碍,为了解决这种障碍,我们就需要把人的高级语言翻译成机器语言,在一开始接触计算机时,我们就知道计算机只能理解由0、1序列构成的语言,因此就有了以下语言的翻译过程,我们也称编译运行原理。用高级语言或者汇编语言编写的程序称为源程序,源程序不能直接在计算机上执行;源程序可以说是一个文件,我们须得把该文件转成二...

2019-07-18 16:25:50 209

转载 c/c++:const与static

const:作用(1)修饰变量,说明该变量不可以被改变;(2)修饰指针,分为指向常量的指针和指针常量;(3)常量引用,经常用于形参类型,即避免了拷贝,又避免了函数对值的修改;(4)修饰成员函数,说明该成员函数内不能修改成员变量。class A{private: const int a; // 常对象成员,只能在初始化列表赋值p...

2019-04-12 16:00:49 184

原创 Linux中vi常见命令

1、放大终端,"ctrl"+"shift"+"+"(有的电脑"ctrl"+"+"就可以)2、切换目录,cd~(切换到个人家目录)3、pwd查看当前目录4、ls查看当前目录的文件和子目录ls-a显示所有文件,包括隐藏文件5、清屏,clear,或者ctr+l6、新建文件夹(目录),mkdir文件夹名(目录名),如mkdirsrc7、编辑文件:vi...

2018-10-17 23:16:27 1902

原创 C语言:动态内存

动态内存:动态的创建内存,申请内存空间为变量;存放于堆区,不能通过变量名或数组名引用,只能通过指针引用,在windows中,堆中最大的连续内存块为1.3G左右。头文件#include<stdlib.h>malloc在空闲内存中分配连续内存,约等于2G,分配成功时返回一个指向该内存块的指针即第一个字节地址,有时需要强转,内存不足时返回空指针,不初始化int *p=...

2018-10-17 23:12:41 142

原创 C语言:内存管理

代码段:通常是指用来存放程序执行代码的一块内存区域,内存区域通常属于只读,某些架构也允许代码段可写数据段:通常是指用来存放程序中已初始化的全局变量的一块内存区域,属于静态内存分配堆:堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上,当利用free等函数释放内存时,被释放的内存从堆中被剔...

2018-10-17 22:34:03 144

原创 C语言:const 的用法

const:限定写权限,变成只读(不能做左值)左值:指放在“ = ”符号左边,其他情况均为右值;左值:写权限 右值:读权限例:int main(){ int a; a = 10; int b = a; a++ = 15;//不能做左值,不能被修改}const的用法:1、基本数据类型对于const透明;比如:int const p1 == ...

2018-07-18 19:48:21 225

原创 C语言:字符串的复制、连接和比较大小

字符串的复制void Mystrcpy1(char *des,char *src){ int i; for(i = 0;*(src + i)!='\0';i++) { *(des + i) = *(src + i); } *(des + i) = '\0';}或者void Mystrcpy2(char *des,char *src){ whi...

2018-07-18 19:24:55 1489

原创 C语言:交换函数

1、一般情况下认为交换函数如下程序void Swap_1(int a,int b){ int tmp = int a; a = b; b = tmp;}此时的程序其实是不正确的,因为此时交换的只是变量所赋的值,而所谓的交换函数交换的是变量的值和它的地址,打个比方:小明有一个蓝色的文具盒,里面有一只蓝色的笔,小红有一个红色文具盒,里面有一只红色的笔,所谓的交换函数就...

2018-07-13 22:26:10 2886 1

原创 C语言:指针

int a = 10;int b = 20;int *p = &a;*p = 100;p = &b;*p = 200;1、&a获取a的指针2、指针 == 地址int *p = &a,p为整型变量*p = 100;这里的*和int *p中的*是不一样的,此处为解引用或者称为间接访问符定义时加*表示地址变量,使用时不加*,同类型...

2018-07-13 21:56:37 151

空空如也

空空如也

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

TA关注的人

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