自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 【剑指offer】面试题之二叉树系列(一)

1、把二叉树打印成多行 题目描述: 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行 思路: 层序遍历 问题:怎样去确定它的每一层有多少结点 按层次输出二叉树 访问根节点,并将根节点入队。 当队列不空的时候,重复以...

2018-08-14 19:05:51

阅读数 50

评论数 0

原创 str系列库函数的模拟实现

1、模拟实现strlen :字符串求长度 思路:字符串都有结束标志\0,只要遍历这个字符串,知道遇到\0结束,就能轻松的获得字符串的长度了 (1)不创建计数器(递归) int my_strlen1(const char* str) { if ('\0' == *s...

2018-08-14 18:51:54

阅读数 132

评论数 0

原创 rotate_list(旋转链表)

题目描述 Given a list, rotate the list to the right by k places, where k is non-negative. 给定一个链表,将链表向右旋转k个位置,其中k是非负的。 For example: Given1-&...

2018-08-09 19:04:05

阅读数 72

评论数 0

原创 partition-list

题目描述: Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should pres...

2018-08-07 10:56:34

阅读数 45

评论数 0

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

题目描述 输入一个链表,输出该链表中倒数第k个结点。 思路: 定义两个指针:一个pPre,一个pCur,让pPre先走k-1步(这里用for循环来实现pCur不动。当从第k步开始,让两个指针再同时出发(这样两个指针之间的距离始终就是k-1),当pPre走到尾指针...

2018-08-06 21:30:43

阅读数 38

评论数 0

原创 排序之交换排序(快排)

1、冒泡排序:稳定 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元...

2018-08-03 18:06:40

阅读数 141

评论数 0

原创 两个链表的公共结点

题目描述: 输入两个链表,找出它们的第一个公共结点 思路: 如上图所示,两个链表从第一个公共结点开始,后面的所有结点都是重合的,并且不可能再出现分叉 思路一:在第一个链表上顺序遍历每个结点,每遍历一个结点,就在第二个链表上顺序遍历每个结点,直到找到第一个公共结点。...

2018-08-03 16:45:19

阅读数 66

评论数 0

原创 排序之选择排序

二、选择排序 1、选择排序(区间在不断地变小 ) 基本思想: 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 (首先,选出最小的数放在第...

2018-07-23 13:11:52

阅读数 57

评论数 0

原创 排序之插入排序

一、什么是排序 1、概念 排序就是将一组杂乱无章的数据按照一定的规律(升序或者降序)组织起来 2、分类 3、各排序之间的时间复杂度&空间复杂度&稳定性 二、插入排序 1、直接插入排序 基本思想: 当插入第i(i&gt...

2018-07-23 09:18:02

阅读数 469

评论数 1

原创 shell基础之工具(一)

一、sort sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按照ASCII码值进行比较,最后将它们按升序输出(默认情况下都是升序) sort的常见几个选项: (1)sort -r:排序方式改为降序 (2)sort -u:在输出行中去除掉重复行...

2018-07-16 10:58:39

阅读数 53

评论数 0

原创 正则表达式

相信大家都知道见过正则表达式,但什么是正则表达式嘞? 正则表达式就是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过 特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。 正则表达式目前被集成到了各种文本编辑器/文本处理工具当 ...

2018-07-07 15:56:26

阅读数 65

评论数 0

原创 fd与FILE结构体

前言: fopen,fclose,fwrite,fread属于C库当中的函数,为库函数调用。而open,close,write,read这几个函数属于系统提供的借口,称之为系统调用。库函数和系统调用是上下级关系,在库函数中封装了系统调用的函数。(库函数为啥都有的大哥,系统调用就是有一部分的小弟)...

2018-06-08 00:03:04

阅读数 119

评论数 0

原创 【剑指offer】------将字符串中的空格替换

题目描述: 将一行字符串中的空格替换成为%20 eg:hello world 准换成为 hello%20world 题目分析: 方案一: 可以允许开辟新的空间 遍历旧字符串复制,遇到空格就在新字符串上填入“%20” !!! 方案二: 不允许开辟新的空间,只能在原来...

2018-05-26 21:21:58

阅读数 55

评论数 0

原创 表的增删改查(CRUD)

1、增加 语法: insert into table_name[(column[,column...])] values (value [,value...]); 增加进阶: 更新: 主键插入如果重复:(如果重复做更新,如果不重复做插入) insert into t7 ...

2018-05-26 18:29:03

阅读数 1140

评论数 0

原创 多线程------线程的等待与分离

一、线程等待 // 函数原型 #include <pthread.h> int pthread_join(pthread_t thread, void **retval); // 参数 thread:线程ID ...

2018-05-15 20:26:35

阅读数 288

评论数 0

原创 多线程-------线程的同步与互斥

一、什么是互斥量(mutex) 先来看一段代码:操作共享变量会有问题的售票系统 Makefile mypthread.c #include <stdio.h> #include <stdlib.h> #include &l...

2018-05-15 11:20:43

阅读数 85

评论数 0

原创 数据库中表的常见七大约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业 务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。 1、空属性not null:not null 此列属性不允许为空,必须做数据插入 create tab...

2018-05-14 20:15:55

阅读数 8170

评论数 2

原创 数据库中表的基本操作【面试常考点】

1、创建表 // 语法 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) cha...

2018-05-06 20:27:18

阅读数 288

评论数 0

原创 数据库的备份和恢复

一、创建数据库 1、数据库的创建 语法:create database [IF NOT EXISTS] 数据库名; CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [, create_specification] ...

2018-05-05 22:56:25

阅读数 64

评论数 0

原创 多线程------线程的基本概念&创建&终止

一、什么是线程 1、概念 在Linux下进程是承担系统分配资源的基本单位。Linux下的进程称之为轻量级进程。 在一个程序里的一个执行路线就叫做线程。线程就是“一个进程内部的控制序列”(线程是在进程内部运行的)。线程是承担调度的基本单位,一个进程可以有多个线程,它的执...

2018-05-05 10:32:26

阅读数 51

评论数 0

原创 【剑指offer】------查找字符串中第一次只出现一次的字符

题目:查找字符串第一次中只出现一次的字符 方法一:(不建议使用第一种方法) 从头遍历字符串,当遍历到某个字符时,就将其依次和后面的字符相比较,若不相同,则这个字符就是我们要找的字符。该方法的时间复杂度较大为O(n^2) 方法二: 借助数据容器哈希表...

2018-05-02 22:01:15

阅读数 49

评论数 0

原创 死锁概述

一、什么是死锁? 在多任务系统下,当一个或者多个进程等待系统资源,而资源又被进程本身或者其他进程所占用时,就会形成死锁。 由于资源占用是互斥的,当某个资源提出申请资源后,使得有关进程在无外力协助下永远分配不到必须的资源而无法继续运行。 二、死锁产生的四个必要条件 ...

2018-04-23 22:18:40

阅读数 33

评论数 0

原创 并查集-----小米面试题之朋友圈问题

先来看一下题目: 已知有n个人和m个好友关系(存在数字r),如果两个人是直接或者间接的好友(好友的好友的好友……),则认为他们属于同一个朋友圈。请写程序求出这n个人里一共有多少个朋友圈? 例如:n=5,m=3,r={{1,2},{2,3},{4,5}},表示有5个人,1和2是好友,2...

2018-04-19 19:12:36

阅读数 141

评论数 0

原创 Linux进程信号之阻塞信号

前两天写了信号的基本概念以及如何去产生信号,欢迎大家戳博客链接:https://blog.csdn.net/apt1203JN/article/details/79955014 先来了解一下信号的三种状态:* 信号递达(Delivery):实际执行信号的处理动作 * 信号未决(Pending):...

2018-04-18 21:34:53

阅读数 1507

评论数 0

原创 如何测试机器的大小端

一、大小端 1、为啥会有大小端 在计算机系统中以字节为单位,每个地址单位都有一个字节(一个字节8个bit位)。在C语言中,有char(8bit)、short(16bit)、long(32bit,具体看编译器)。对于位数大于8的处理器,不如16位或者32位的处理器,由于寄存器宽度大于一...

2018-04-16 17:49:19

阅读数 306

评论数 0

原创 Linux进程信号之如何产生信号

一、信号概念 在日常生活中,我们经常也会遇见信号,比如“上下课的铃声”、“十字路口的红路灯” 。而在Linux中,信号如同交通信号灯一样,它就是给操作系统或者进程提供某种信息,让操作系统或者进程做出某种对应的反应,就如同十字路口的红路灯显示红灯时,告诉行人此时应该停下…… 让我们来看一下Lin...

2018-04-15 23:20:17

阅读数 130

评论数 0

原创 代码实现一个日期类Date

日期类是C++类学习过程中比较重要的一个类,这次写的日期类主要用来模拟实现(1)日期的加减days(2)两个日期之间相隔的天数(3)判断两个日期时间是否相等(4)比较两个日期之间的大小 日期类实现起来并不复杂,主要难点在于保证日期的有效合理性(比如需要解决每个月的天数不相等的问题,给某一天加上或...

2018-04-13 11:05:00

阅读数 388

评论数 0

原创 遍历二叉树-------递归&非递归

一、什么是树?什么又是二叉树 (1)树的定义 树是一种特殊的数据结构,是由N(N>=0)个节点构成的具有层次关系的集合。每棵树都有一个特殊的结点,就是根结点,根节点没有前驱结点;除过根节点的其余结点被分为若干个互不相交的集合,称之为子树;每个子树的根结点有且仅有一个前驱,可以有...

2018-04-10 21:48:12

阅读数 71

评论数 1

原创 进程间通信之消息队列

一、消息队列? 消息队列是个什么东东嘞?它其实就是有点像我们玩的qq啊微信啊什么的,实现彼此之间的消息互发。目前有两种类型的消息队列:POSIX消息队列和System V消息队列。本篇博客学习的是System V消息队列。下面来简单接收一下消息队列: 消息队列其实就是一个消息的...

2018-04-08 19:49:04

阅读数 44

评论数 0

原创 【牛客杂记】之类型转换

表达式会包含隐式类型转换,它由编译器自动执行,不需要程序员自己介入 *何时发生隐式类型转换* 1.在混合类型的表达式中,操作数会被转换为相同类型 eg: int a ; double b; a>=b; 这时a被转换为double 2.条...

2018-04-07 21:37:46

阅读数 27

评论数 0

原创 进程创建(一)之 fork & vfork

一、进程创建(PCB、虚拟地址空间、页表、数据(映射关系加载好)) 1、fork fork可以从已有的进程中创建出一个新进程也叫作子进程,原来的那个进程就叫做父进程。一般,fork创建出子进程后,子进程一般是和父进程代码实现共享,数据实现写时拷贝的。 进程调用fork,当控制转移到内...

2018-04-07 21:00:49

阅读数 61

评论数 0

原创 打包生成一个静态库&动态库

静态库和动态库之间不同之处就在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大;动态库(共享库)的代码是在可执行程序运行时被载入内存的,在编译过程中仅简单的引用,因此代码体积较小 一、静态库和动态库的定义 1、静态库(.a) 程序在编译链接的时候把...

2018-04-07 16:13:57

阅读数 1799

评论数 0

原创 代码模拟实现僵尸进程&孤儿进程的场景

一、僵尸进程 1、什么是僵尸进程 当子进程退出并且父进程没有等待它(没有使用wait()调用),没有读取到子进程的退出时的返回代码时就会产生僵尸进程。即只要子进程退出,父进程继续运行,但父进程没有读取子进程的状态,此时子进程进入Z状态(僵尸状态)。 下面看一段僵尸进程的例子:(进程维...

2018-04-02 18:37:22

阅读数 69

评论数 0

原创 浅析进程概念以及进程状态

一、进程是什么? 程序:完成特定任务的一系列指令的集合。(官方定义) 进程: (用户角度):程序的一次动态执行过程。 分时系统:时间片轮转 (操作系统角度):进程是操作系统分配资源的基本单位,也是最小单位 进程是怎样被操作系统管理起来? ...

2018-04-01 17:37:01

阅读数 60

评论数 0

原创 进程间通信之管道

进程间通信的本质就是让两个毫不相干的进程去看到同一份资源(操作系统所提供的) 一、管道的定义 管道是比较古老的进程间通信的形式,把从一个进程连接到另一个进程的一个数据流称为一个“管道”。 二、管道的两种方式 1、匿名管道 匿名管道是一种最基础的IPC机制,由pi...

2018-03-30 23:31:11

阅读数 31

评论数 0

原创 浅析堆的基本操作以及堆排序

一、堆的基本介绍 1、堆的概念 堆是一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组的对象。堆满足以下的性质 (1)堆中某个节点的值总是不大于或不小于其父节点的值 (2)堆总是一棵完全二叉树 2、堆的分类 (1)最小堆:任一节点的关...

2018-03-27 21:50:05

阅读数 78

评论数 0

原创 文件标识符(fd)和FILE结构体

前言: fopen,fclose,fwrite,fread属于C库当中的函数,为库函数调用。而open,close,write,read这几个函数属于系统提供的借口,称之为系统调用。库函数和系统调用是上下级关系,在库函数中封装了系统调用的函数。(库函数为啥都有的大哥,系统调用就是有一部...

2018-03-24 22:28:34

阅读数 591

评论数 0

原创 开启虚拟机时提示VMware Workstation cannot connect to the virtual machine.时的解决办法

打开虚拟机的时候,弹出对话框如下图所示: 提示出现上述错误,无法正常启动虚拟机,为什么会出现上述的问题嘞? 解:其实这个是授权服务问题,没有这个服务打开虚拟机软件时会出现相关权限缺失或错误的提示,虚拟机无法启动。 有以下两种解决办法 方法一、以管理员身份运行 方法二、 (1)打...

2018-03-22 19:56:35

阅读数 815

评论数 0

原创 Linux下的部分指令和vim的简单配置

一、Linux下的部分基础指令 1、ls指令:对于目录而言,该命令列出该目录下的所有目录和文件;对于文件而言,将会列出文件名以及其他信息 我们一般常用的有以下几个: ls -l :列出文件的详细信息 ls -a : 列出文件下的所有文件,包括以 . 开头的隐含文件 ls -d :将目录像文...

2018-03-22 18:56:33

阅读数 53

评论数 0

原创 浅析B-树分裂

一、B-树的定义(适合查找的平衡的多叉树。) 一颗M阶(M>2)的B-树,是一颗平衡的M路平衡搜索树,可以是空树或者满足B-树的性质 二、B-树的性质? (1) 根节点至少有两个孩子 (2) 每个非根节点至少有M/2(上取整)个孩子,至多有M个孩子 ...

2018-03-17 17:24:58

阅读数 1306

评论数 0

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