自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树的遍历(前序、中序、后序)

struct TreeNode{ int val; TreeNode* leftchild; TreeNode* rightchild; TreeNode(int x) : val(x), leftchild(NULL), rightchild(NULL) {}};void PreOrder(TreeNode *root) //前序遍历{ if (root == NU...

2019-08-31 17:57:14 262

原创 Linux下git的使用总结

有关git的相关概念工作区:就是你在电脑里能看到的目录,相当于自己创建的目录版本库(Repository):工作区有一个隐藏目录“.git”,这个不算工作区,而是Git的版本库。Git的版本库里有很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。对于任何一个文件,在 Git...

2019-08-07 23:50:45 245

原创 Leetcode 655:输出二叉树

在一个 m*n 的二维字符串数组中输出二叉树,并遵守以下规则:行数m应当等于给定二叉树的高度。列数n应当总是奇数。根节点的值(以字符串格式给出)应当放在可放置的第一行正中间。根节点所在的行与列会将剩余空间划分为两部分(左下部分和右下部分)。你应该将左子树输出在左下部分,右子树输出在右下部分。左下和右下部分应当有相同的大小。即使一个子树为空而另一个非空,你不需要为空的子树输出任何东西...

2019-08-04 23:27:46 472

原创 Linux下的守护进程

什么是守护进程?守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。守护进程的特点:1.守护进程(Daemon)是在后台运行的一种特殊进程,它脱离于终端,从而可避免进程被任何终端所...

2019-08-04 22:20:32 324

原创 进程间通讯的5种方式

什么是进程间通讯?进程间通讯是一种机制,操作系统进程和线程通过它交换数据和消息。IPC 包括本地机制(如 Windows 共享内存)或网络机制(如 Windows 套接字)进程间的通信方式:管道、信号量、消息队列、共享内存、套接字一、管道把一个进程连接到另一个进程的一个数据流称为一个“管道”,通常是用作把一个进程的输出通过管道连接到另一个进程的输入。管道本质上是内核的一块缓存。...

2019-07-31 23:41:16 961

原创 Linux中MySQL语句的基本使用

一、MySQL的介绍1.MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL是一种关系数据库管理系统,关系数据库将...

2019-07-26 22:18:06 947

原创 计算机网络分层及对网络层的简单了解

为什么要对计算机网络分层?因为计算机网络是一个复杂的系统,采用层次化结构的方法来描述它,可以将复杂的网络间题分解为许多比较小的、界线比较清晰简单的部分来处理。也就是把各种特定的功能分离开来,使其实现对其他层次来说是可见的。分层结构使各个层次的设计和测试相对独立OSI 七层模型 :应用层 表示层 会话层 传输层 网络层 数据链路层 物理层TCP/IP体系结构 四层模型:应用层 传输层...

2019-07-26 21:14:49 474

原创 C++ 编译链接过程总结

编译链接分为四个过程 :预编译、编译、汇编、链接预编译: 操作命令: gcc -E main.c -o main.i 1.将所有的#define删除,并把所有的宏进行文本替换 。2.处理所有的预编译指令,例如:#if,#eif,#else,#endif;3.处理#include预编译指令,将包含的头文件插入到预编译指令的位置(注意:头文件的展开是递归展开)4.删...

2019-07-24 19:30:43 292

原创 Leetcode:62题 不同路径(一个机器人位于一个 m x n 网格的左上角 。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角)

题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?用例: 3*2的方格 共3条路径; 7*3的方格 共28条路径。思路:因为机器人每次只能向下或者向右移动一步,所以机器人在走到右下角那...

2019-07-21 18:29:37 8486 1

原创 算法——二分查找(折半查找)

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。使用二分查找的条件:1.必须采用顺序存储结构。2.必须按关键字大小有序排列。通俗一点的说:如果数据是一个数组,那么这个数组必须是有序的思路:二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组...

2019-04-08 21:01:56 470

原创 剑指offer——面试题29:求数组中出现次数超过数组长度一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。方法一:首先把这个数组排序,那么排序之后位于数组中间的数字一定就是那个出现次数超过数组长度一半的数字。时间复杂度为 O(nlogn)C++代码实现:#include<iostr...

2019-03-30 20:41:27 361

原创 Linux下的调试——gdb

一般来说,GDB主要帮忙我们完成下面四个方面的功能:1、启动你的程序,可以按照我们自定义的要求随心所欲的运行程序。2、可让被调试的程序在我们你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时,可以检查此时我们的程序中所发生的事。4、动态的改变我们程序的执行环境。gdb的调试流程:首先编译文件为调试版本,也就是在编译文件指令的末尾加上 -g。调试版的文件仍然是二进...

2019-03-28 21:23:47 223

原创 冒泡排顺序的基本思想(原理)

冒泡排序小是重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。冒泡排序算法的原理如下:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。...

2019-03-19 20:19:52 1330

原创 C/C++排序算法——选择排序

什么是选择排序?选择排序就是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。具体步骤:假设有一个待排序的数组arr,则:第1趟从arr[0]~arr[n-1]中选取最小值,与arr[0]交换;第2趟从arr[1]~arr[n-1]中选取...

2019-03-17 15:31:47 402

原创 C/C++排序算法———快排

快排的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。其本质是分治策略。方法步骤(一般情况):1.先从数列中选第一个数作为基准数。2.然后从后往前找第一个比基准小的数据放在数列的第一个位置,然后从前往后找比基准大的数放在刚才...

2019-03-16 16:59:36 1192

原创 C语言中动态内存的申请和释放

什么是动态内存的申请和释放?当程序运行到需要一个动态分配的变量时,必须向系统申请取得堆中的一块所需大小的存储空间,用于存储该变量。当不再使用该变量时,也就是它的生命结束时,要显式释放它所占用的存储空间,这样系统就能对该堆空间进行再次分配,做到重复使用有限的资源。在C语言中动态内存的申请和释放:1.malloc函数函数原型如下:#include<stdlib.h>voi...

2019-03-16 12:15:47 6221

原创 Linux在I/O复用的系统调用:select、poll、epoll的区别

select与poll的区别:.select 最大监视描述符的数量是1024,而poll没有限制。select/poll、epoll之间的区别:1.向内核传递描述符:select/poll 在每次循环都要把描述符拷贝到内核中,epoll每个描述符只拷贝一次到内核空间。2.在内核中的实现:select/poll 轮询检查每个描述符上有没有就绪事件,而epoll在描述符上设置回...

2019-03-16 11:05:53 282

原创 面试中常遇到的Linux命令总结

1.文 件操作:More :一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比less:和more相似,但是使用more无法向前翻页,只能向后翻,而less可以任意切换head :用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行tail :把某个档案文件的最后几行显示到终端上cat :显示整个文件的内容...

2019-03-15 16:17:20 333

原创 一维数组的定义以及相关问题

1.数组在定义时arr[a],a表示数组的长度,使用时表示下标2.数组在初始化没有赋值的时候都是随机值3.int arr[]={1,2.3.4}; 聚合类型只初始化一部分,其它的值都为04.一维数组数组名在如下情况下表示整个数组:①在定义数组的同一个函数中,sizeof(arr)②在定义数组的同一个函数中,&arr+1其他情况数组名arr都表示数组首元素的地址...

2019-03-03 17:31:52 494

原创 一维数组的相关问题

1.数组在定义时arr[a],a表示数组的长度,使用时表示下标2.数组在初始化没有赋值的时候都是随机值3.int arr[]={1,2.3.4}; 聚合类型只初始化一部分,其它的值都为04.一维数组数组名在如下情况下表示整个数组:①在定义数组的同一个函数中,sizeof(arr)②在定义数组的同一个函数中,&arr+1其他情况数组名arr都表示数组首元素的地址5.数组的...

2018-03-18 17:47:29 571

原创 不使用变量交换两个数的值

不使用变量交换两个数的值,有三种方法,方法一:void Swap(int a,int b){a=a+b; b=a-b; a=a-b; printf("%d,%d",a,b);}int main(){ Swap(10,20);return 0; }方法二:vo...

2018-03-18 16:04:38 1081

原创 将一个整数逆序输出·正序输出它的每一位数字

逆序输出n的每位数字void PrintReverse(int n) //定义一个函数 他的数据类型为整型{if(n < 0){printf("-");n = -n;} //对于负数的整数,改变输出“-”的多少do{printf("%d ",n%10); //当n不等于...

2018-03-11 08:09:57 3133

空空如也

空空如也

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

TA关注的人

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