自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Linux下建立git远程仓库

设置本地Git仓库和GitHub仓库之间的连接: 第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id _rsa.pub这两个文件,如果有,直接跳到下一步。如果没有,创建SSH Key: $ ssh-keygen -t rsa -C...

2018-04-11 23:54:22 1914 2

原创 Linux编译器gcc/g++的使用

库的概念 1.库的定义   本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 2.库的分类   linux 下的库有两种:静态库和共享库(动态库)。 二者的不同点在于代码被载入的时刻不同。 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。   共...

2018-04-01 21:41:51 479 0

原创 深度探究类和对象

【const成员函数】   const成员函数,const修饰的是this指针指向的对象,保证调用这个const成员函数的对象在函数内不被修改。 【内联】 【友元】

2018-03-30 16:32:08 171 0

原创 单链表经典面试题

单链表经典面试题 1.从尾到头打印单链表 2.在无头单链表的一个结点前插入一个结点(不能遍历链表) 3.单链表实现约瑟夫环(JosephCircle) 4.逆置单链表 5.单链表排序(冒泡排序) 6.合并两个有序链表,合并后任然有序 7.查找单链表的中间节点,要求只能遍历一次链表 ...

2018-03-19 11:38:14 258 0

原创 内存池

内存池概念    通常我们用new和malloc来分配内存的话,由于申请的大小不确定,所以频繁的使用时会带来内存碎片和效率降低的问题。为了克服这种问题提出了内存池的概念。内存池是一种内存分配方式。内存池的优点是可以有效的减少内存碎片化,分配内存更加快速,减少内存泄漏等优点。    内存...

2018-08-08 23:55:12 380 0

原创 set与map介绍

pair   pair是一种模板类型,每个pair可以存储两个值,这两个值的类型可以是任何类型的。它定义在#include<utility> 中。 set(集合) map(映射) ...

2018-08-06 23:58:40 92 0

原创 HTTP协议

URL URL:统一资源定位符,它是一种特殊类型的URI,包含了用于查找某个资源的足够的信息。 URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。 URL的一般语法格式为:(带方括号[]的为可选项):   http://hostname[:port][path]  ...

2018-08-04 23:44:50 107 0

原创 红黑树—RBTree

  红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色,可以是Red或Black。通过对任何一条从根到叶子简单路径上的颜色来约束,红黑树保证最长路径不超过最短路径的两倍,因而近似于平衡。 红黑树是满足下面红黑性质的二叉搜索树: 每个节点,不是红色就是黑色的 根节点是黑色的...

2018-07-24 23:48:56 71 0

原创 平衡搜索树—AVLTree

基本实现: #pragma once #include <iostream> #include <assert.h> using namespace std; tem...

2018-07-16 23:54:51 92 0

原创 快速排序—Quick

所用栈相关知识请参考:>数据结构之栈的基本操作< 快速排序基本思想 快速排序是一种划分交换的方法,它采用分治法进行排序。其基本思想是: 先从数列中取出一个数作为基准数 分区过程,将比基准值大的数全放到它的右边,小于或等于它...

2018-07-09 23:47:32 59 0

原创 死锁及其四个必要条件

死锁   死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 产生条件 互斥条件:资源是独占的且排他使用,进程互斥使...

2018-07-08 00:59:33 1669 0

原创 归并排序—Merge

  归并排序是一种基于分治法的一种排序方法。它将要排序的序列分成两个长度相等的子序列,为每一个子序列进行排序,然后再将子序列合并成一个有序的序列。 //////////////////////////////////////////////////////////// //归并排序 //时间复杂...

2018-07-06 23:52:36 91 0

原创 希尔排序—Shell

基本定义:希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 基本思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 代码实现: ...

2018-07-02 23:52:31 52 0

原创 简单排序

简单排序之冒泡排序、选择排序、堆排序、插入排序。 冒泡排序算法的原理如下: 比较相邻的元素,如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来...

2018-06-30 17:02:05 53 0

原创 线索化二叉树

线索化概念 当某节点的左指针为空时,令该指针指向按照某种方式遍历二叉树时得到该节点的前驱结点;当某节点的右指针为空时,令该指针指向按照某种方式遍历二叉树时得到该节点的后继结点。 但是无法区分: 左指针指向的结点是左孩子结点还是前驱结点 右指针指向的结点是右孩子结点还是后继结点 ...

2018-06-29 17:16:31 68 0

原创 TCP服务器

所需API如下: (1)创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器) int socket(int domain, int type, int protocol); socket()打开⼀个网络通讯端口,如果成功的话就像open()⼀样返回⼀个文件描述符 应⽤程...

2018-06-28 16:44:58 3614 0

原创 UDP服务器

IP地址 IP协议有两个版本,IPv4和IPv6,若没有特殊说明的,默认都是指IPv4 IP地址是在IP协议中,⽤来标识网络中不同主机的地址 对于IPv4来说, IP地址是⼀个4字节, 32位的整数 我们通常也使⽤ “点分⼗进制” 的字符串表⽰IP地址,例如192.168.0.1 ;...

2018-06-24 23:42:44 96 0

原创 GDB多线程调试

GDB多线程调试的基本命令 info threads:显示当前可调试的所有线程,GDB会给每个线程分配一个Id。前面有“ * ”号的表示当前正在调试的线程。 thread Id:切换当前调试的线程为指定线程。 break FileName.cpp:LinuNum thread all...

2018-06-22 18:32:17 132 0

原创 线程同步与互斥

同步互斥概念 互斥:   互斥就是指某一资源同时只能允许一个访问者对其进行访问,具有唯一性和排他性,但是互斥无法限制访问者对资源的访问顺序,即访问是无序的。   对于线程来说,互斥就是说两个线程之间不可以同时运行,他们之间会相互排斥,必须等一个线程运行完毕之后,另一个才能运行。 ...

2018-06-20 17:45:08 488 1

原创 多线程编程

线程基本概念 线程(thread)是操作系统能够进行运算调度的最小单位 线程被包含在进程之中,是进程中的实际运作单位。 一条线程指的是进程中一个单一顺序的控制流 一个进程中可以并发多个线程,每条线程并行执行不同的任务   线程是在进程内部运行的控制流程,多线程的控制流程可以长期共存...

2018-06-16 01:34:28 87 0

原创 单例模式

什么是单例模式   单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的某一个类只有一个实例。即一个类只有一个对象实例。 为什么需要单例模式   有时候我们会遇到一个类只能有一个对象被实例化的情况,这是就需...

2018-06-15 00:07:12 291 0

原创 生产者消费者模型

什么是生产者消费者模型   在实际的开发中,经常会碰到如下场景:某个模块负责生产数据,某个模块负责处理这些数据。产生数据的模块就称为生产者,而处理数据的模块就称为消费者。这个模型还需要一个缓冲区来作为中介,生产者将产生的数据放入缓冲区中,消费者从缓冲区将数据取出并处理。 为什...

2018-06-14 14:49:12 106 1

原创 进程间关系和守护进程

进程组   每个进程除了有⼀个进程ID之外,还属于⼀个进程组。进程组是⼀个或多个进程的集合。通常,它们与同⼀作业相关联,可以接收来⾃同⼀终端的各种信号。每个进程组有⼀个唯⼀的进程组ID。每个进程组都可以有⼀个组⻓进程,组长的pid与pgid相同。组⻓进程可以创建⼀个进程组,创建该组中的进...

2018-06-14 00:48:32 55 0

原创 硬连接与软链接

硬连接   硬连接是指通过索引结点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引结点号(inode index)。在Linux中,多个文件名指向同一个索引节点是存在的。一般这种连接就是硬连接。   硬连接的作用是允许一个文件拥有多...

2018-06-13 18:12:34 112 0

原创 C++知识体系框图

C++知识体系框图: 函数重载:https://blog.csdn.net/adorable_/article/details/79511025 引用与指针:https://blog.csdn.net/adorable_/article/details/79550133 类&am...

2018-06-09 19:26:16 440 0

原创 数据结构知识体系框图

数据结构知识体系框图: 静态顺序表:https://blog.csdn.net/adorable_/article/details/78720919 静态顺序表之二:https://blog.csdn.net/adorable_/article/details/78817630 C++实...

2018-06-08 21:38:52 589 0

原创 Linux系统编程知识体系框图

进程基本概念:https://blog.csdn.net/adorable_/article/details/80035032 Linux环境变量:https://blog.csdn.net/adorable_/article/details/80208432 进程控制:https://blo...

2018-06-07 23:30:17 652 0

原创 Linux进程信号

信号的基本概念   首先,我们可以用kill -l命令查看系统中定义的信号列表:   每个信号都有⼀个编号和⼀个宏定义名称,这些宏定义可以在signal.h中找到,例如其中有定义#define SIGINT 2。编号34以上的是实时信号,34以下的信号是普通信号。而这些信号各自在什...

2018-06-04 18:57:34 996 0

原创 Android小程序之简易QQ界面

要求: (1)与QQ界面控件数目、样式相同 (2)与QQ的图形化界面相同 (3)实现一个简单的点击事件 具体实现: (1)编写程序代码 package com.example.login; import android.app.Activity; import android.os...

2018-05-30 23:43:44 3087 0

原创 Linux进程间通信之信号量篇

信号量(计数器+等待队列)主要⽤于同步和互斥。 进程互斥 由于各进程要求共享资源,⽽且有些资源需要互斥使⽤,因此各进程间竞争使⽤这些资源,进程的这种关系为进程的互斥 系统中某些资源⼀次只允许⼀个进程使⽤,称这样的资源为临界资源或互斥资源。 在进程中涉及到互斥资源的程序段叫临界区 ...

2018-05-27 23:27:33 160 0

原创 Linux进程间通信之共享内存篇

共享内存   共享内存是Lunix系统中最底层的通信机制,也是最快的通信机制。共享内存通过两个或多个进程共享同一块内存区域来实现进程间的通信,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。通常是由一个进程创建一块共享内存区域,然后多个进程可以对其进行访问,一...

2018-05-26 23:45:37 1201 0

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

消息队列 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为是一个类型,接收进程可以独立地接收含有不同类型的数据结构。 我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。 Linux用...

2018-05-24 11:11:47 96 0

原创 Linux进程间通信之命名管道篇

创建命名管道 命名管道可以从命令行上创建 mkfifo filename 命名管道也可以从程序里创建 int mkfifo(const char *filename, mode_t mode); //创建命名管道 int main(){ mkfifo(&a...

2018-05-23 16:33:20 320 0

原创 Linux进程间通信之匿名管道篇

进程间通信   进程间通信(IPC,Interprocess communication)是一组编程接口,让程序员能够协调不同进程,使之能在一个操作系统里同时运行,并相互传递,交换信息。进程间通信的本质就是在不同进程之间传播或交换信息。 进程间通信的目的 1)数据传输:一个进...

2018-05-22 23:17:08 381 0

原创 Linux进程的程序替换

程序替换   假如操作系统正在执行某一个程序,我们可以利用程序替换函数指定一个新的程序,让操作系统去执行我们新指定的程序。也就是这样一种情形下,我们fork一个进程,如果fork成功,子进程会和父进程执行相同的代码,而我们创建子进程是希望子进程执行指定的操作,所以需要执行exec族函数...

2018-05-18 23:50:20 231 0

原创 C++模板实现顺序表+双向链表+栈+队列

Vector.h #pragma once //类名 Vector //类型 Vector<T> template<class T> class Vector { public: Vec...

2018-05-17 15:34:15 98 0

原创 Android小程序之选项菜单的使用

创建选项菜单步骤: (1)覆盖Activity的onCreateOptionsMenu()方法,当第一次打开菜单时该方法被自动调用。 (2)调用Menu的add()方法添加菜单项(MenuItem)。 (3)当菜单项被选择时,覆盖Activity的onOptionsItemSelected(...

2018-05-15 23:08:00 436 0

原创 判定字符串是否按照出栈顺序

所用栈相关知识请参照:>数据结构之栈的基本操作< 基本原理: 实现代码: #include <stdio.h> #include "seqstack.h" int IsStackOrder(char input...

2018-05-14 23:27:42 123 0

原创 Android小程序之个人信息管理系统

要求:使用SQLite实现个人信息管理系统,个人信息包括姓名,年龄,性别以及学历 (1)DBHelper.java代码如下: package com.example.system; import android.content.ContentValues; import android.co...

2018-05-13 23:30:04 4209 4

原创 C++实现简单五子棋游戏

  五子棋是世界智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏,是世界智力运动会竞技项目之一,通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成5子连线者获胜。 规则 (1)对局双方各执一色棋子。 (2)空棋盘开局。 (3)黑先、白后,交替下子,每次只能...

2018-05-12 23:13:10 18837 9

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