自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux知识总结目录索引

01. vim编程技巧02. Linux基本命令03. PCB进程控制块04. 进程控制05. 死锁06. 管道07. 消息队列08. 信号量09. 进程信号10. 线程概念及基本操作...

2018-05-23 10:15:12 278

原创 C++知识总结目录索引

01. C++——类和对象02. C++——命名空间&缺省参数03. C++——引用详解04. C++——函数重载详解05. C++——4个默认成员函数详解06. C++——new/delete和new[]/delete[]07. C++ —— 继承08. C++ —— 多态09. C++ —— 经典面试题10. C+...

2018-03-23 16:14:43 763

原创 七大经典排序算法(C语言描述)

  排序算法是算法中非常重要的部分,我们要做的不仅仅写出各种算法代码,更重要的是在解决实际问题时根据每种算法的时间复杂度、空间复杂度以及稳定性选出合适的算法。 PS:排序算法的稳定性   假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是...

2018-03-11 18:26:43 1509

原创 C语言练习题目录索引

练习题001:判断闰年练习题002:判断素数练习题003:打印九九乘法表练习题004:一元二次方程求解练习题005:冒泡排序练习题006:求1-100中数字‘9’出现的次数练习题007:求两个数的最大公因数和最小公倍数练习题008:交换两个数组中的元素练习题009:C语言输出打印一个菱形练...

2018-02-04 09:30:05 1607

原创 《剑指offer》(第二版)题集目录索引

【PS】:后期会把未完成的题目逐一补上01:赋值运算符函数03:数组中重复的数字04:二维数组中的查找05:替换空格06:从尾到头打印链表07:重建二叉树08:二叉树的下一个节点09:用两个栈实现一个队列10:斐波那契数列11:旋转数组的最小数字13:机器人的运动范围...

2018-01-28 19:14:29 2173

原创 事务的隔离级别

文章目录1. Read uncommitted(读未提交)1.1定义1.2 举例1.3 分析2. Read committed(读提交)2.1 定义2.2 举例2.3 分析3. Repeatable read(重复读)3.1 定义3.2 举例3.3 分析4. Serializable(序列化)4.1 定义4.2 幻读情况举例5. 事务隔离级别与出错情况1. Read uncommitted(读未...

2019-09-18 15:57:28 167

原创 go用smpt包发送邮件, 被抄送收不到邮件bug

今天在写一个比较简单的需求: 发送邮件且支持抄送当时上网搜了一下, 直接用了 smpt 包来发邮件网上介绍发邮件直接加 “Cc” 字段就可以实现抄送功能了, 但当我测试测试时. 结果是现在邮件上正确显示抄送人了,但实际上被抄送人并没有收到邮件, 只有收件人收到了.排查了会发现问题出在 Rcpt 操作上.Rcpt操作用于标识该电子邮件的计划接收人, 可以有多个RCPT行, 表示发送给多人....

2019-01-29 14:56:23 884 4

原创 Linux下执行 git push, pull 等操作免除输入账号、密码

操作步骤:进入到根目录: cd ~创建文件 .git-credentials: touch .git-credentials编辑 .git-credentials : vim .git-credentials输入如下内容:https://账号:密码@github.com// 例如: https://tianzez:12qw34@github.com保存退出vim编辑, 执行:...

2019-01-25 18:27:05 1433

原创 I/O多路转接——select、poll 和 epoll

一、select1. select() 函数(1)参数timeout(2)fd_set结构体(3)函数返回值2. socket就绪条件(1)读就绪(2)写就绪(3)异常就绪3. select的特点4. select的缺点二、poll1. poll()函数(1)参数(2)events和revents(3)返回值2. poll的缺点三、epol...

2018-07-25 16:41:32 262

原创 TCP协议实现qq群聊

一、注意的问题客户端的0号文件描述要设置成非阻塞,这样才能接受其他客户端发的消息。客户端的读写操作也必须设置成非阻塞。对服务端使用setsockopt函数,允许创建多个端口号相同的套接字(解决服务器先关闭而引发TIME_WAIT状态的一系列问题)二、源代码comm.h#ifndef __COMM_H__#define __COMM_H__#define NAM...

2018-07-12 21:05:14 837

原创 利用哈弗曼树实现文件压缩

一、基础知识1. 哈弗曼树  给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。...

2018-07-12 18:35:36 699

原创 IP报文格式详解

4位版本号:指IP协议的版本。通信双方使用的IP协议版本必须一致,对于IPv4来说,就是4。4位首部长度:可表示的最大十进制数是15,注意首部长度字段所表示数的单位是32位字(也就是4字节),所以IP头部最大长度是60字节(最小20字节)。8位区分服务:由3位优先权字段(已弃用),4位TOS字段和1位保留字段(必须置为0)组成。4位TOS分别表示:最小延迟、最大吞吐量、最高可靠性、最小成...

2018-07-11 17:36:12 11566

原创 计算机网络——TCP协议 && 三次握手 && 四次挥手

一、TCP主要特点二、可靠性传输的工作原理1. 停止等待协议三、TCP报文段的首部格式四、三次握手1. 三次握手的具体步骤2. 第三次握手的意义五、四次挥手1. 四次挥手具体步骤2. 为什么 A 在 TIME-WAIT 状态必须等待 2MSL 的时间?3. 解决 TIME_WAIT 状态引起的 bind失败的方法一、TCP主要特点TCP是面...

2018-06-29 22:07:19 448 2

原创 Linux——进程关系和守护进程

Linux知识总结目录索引一、进程组/作业/会话0. 终端1. 进程组2. 作业3. 会话二、守护进程1. 什么是守护进程2. 创建守护进程3. 创建守护进程函数daemon一、进程组/作业/会话0. 终端  在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端 (Controlling Term...

2018-06-27 11:01:25 207

原创 算法 —— 字符串的全排列和组合

一、字符串的全排列 && 递归二、字符串的全排列 && 去重 && 递归三、字符串的全排列 && 去重 && 非递归四、字符串的组合 && 递归一、字符串的全排列 &&a

2018-06-16 16:00:25 765

原创 C++ —— vector容器

C++知识总结目录索引1. resize()2. reserve()3. operator[]4. assign()5. insert()6. erase()7. clear()1. resize()void resize (size_type n, value_type val = value_type());调整数组的容量,接受两个参数。 1. 如果 ...

2018-06-03 15:57:42 334

原创 《剑指offer》面试题61:扑克牌中的顺子

更多剑指offer面试习题请点击:《剑指offer》(第二版)题集目录索引一、题目二、解题思路三、代码实现四、测试代码五、测试结果一、题目  从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。二、解题思路  这里我们可以把五张牌看作一个数组,数组里面有五...

2018-05-23 15:27:59 442

原创 Linux —— 线程互斥

Linux知识总结目录索引本文目录一、互斥锁1. 操作步骤(1)创建锁(2)初始化锁①设置线程的属性(3)上锁 && 解锁(4)销毁互斥锁2. 死锁(1)死锁的两种情况:(2)避免的死锁的原则(3)临界区代码原则3. 互斥锁和信号量的区别4. 线程安全和可重入二、自旋锁1. 操作步骤2. 自旋锁和互斥锁的区别三、读写锁...

2018-05-23 10:39:37 839

原创 Linux —— 线程概念及基本操作

本文转自:https://blog.csdn.net/zhangye3017/article/details/80367223 更多linux知识点:linux目录索引1. 什么是线程  线程是进程执行内部的一个执行分支,在一个进程内部运行的多种执行流;内部本质上是多个线程在同一个地址空间运行;第一个pcb称...

2018-05-23 10:02:23 535

原创 《剑指offer》面试题49:丑数

更多剑指offer面试习题请点击:《剑指offer》(第二版)题集目录索引一、题目二、解法一三、实现代码一四、解法二五、实现代码二六、测试两种方法的性能一、题目  我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做第一个丑数。   二...

2018-05-20 20:47:21 461

原创 《剑指offer》面试题36:将二叉搜索树转换成双向链表

更多剑指offer面试习题请点击:《剑指offer》(第二版)题集目录索引一、题目二、解题思路三、实现代码四、测试代码五、测试结果六、基础代码1. 打印双向链表2. 销毁双向链表3. 创建二叉树节点4. 链接二叉树5. 按中序遍历打印二叉树一、题目  输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树...

2018-05-20 16:40:46 731

原创 C++ —— 模板

C++知识总结目录索引本文目录:一、模板的基本概念1. 什么是模板2. 模板的分类(1)模板函数①书写格式②代码示例③调用规则(2)模板类①书写格式②代码示例三、非类型模板参数四、特化类型萃取五、模板的分离编译一、模板的基本概念1. 什么是模板  模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数...

2018-05-13 15:36:21 280

原创 《剑指offer》面试题25:合并两个排序的链表

更多剑指offer面试习题请点击:《剑指offer》(第二版)题集目录索引1. 题目2. 递归解法3. 非递归解法1. 题目  输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。2. 递归解法ListNode* MergeR(ListNode* pHead1, ListNode* pHead2){ if (pHead1 ...

2018-05-11 17:05:46 189

原创 Linux —— 进程信号

一、信号的基本概念1. 什么是信号2. 哪些情况会产生信号?3. 如何查看信号4. 进程收到信号的三种处理方式:5. 信号的分类二、操作信号1. 注册信号 —— signal()函数2. 给进程发送信号 —— kill()函数3. 给本进程发信号——raise()函数4. 给进程组发信号 —— killpg()函数三、常用的SIGALRM信号1. 闹钟信号 ——...

2018-05-09 16:37:38 259

转载 为什么C++编译器不能支持对模板的分离式编译 ?

本文转自:刘未鹏(pongba),只作为学习使用,如有侵权请告知。  首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32),后者拥有PE(Portable Executable,即windows可执行文件)...

2018-05-09 10:42:47 422 1

原创 八皇后问题 —— 递归回溯算法

1. 题目:  八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 2. 解题思路:创建两个全局变量:一个8*8的int类型数组 int board[8][8]模拟棋盘, 和一个计数器 int su...

2018-05-08 17:27:17 2215 2

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

1. 什么是信号量  信号量的本质是数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。  信号量其实就是一个计数器,它记录着资源的数量。当进行P操作时,消耗资源,信号量减少;当进行V操作时,释放资源,信号量增加。2. 信号量的操作1. semget函...

2018-05-07 10:23:25 149

原创 百马百担问题,有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,编程计算共有多少种驮法。

解题思路: /* * 设大马x匹, 中马y匹, 小马z匹 * 3x + 2y + z/2 = 100 ① * x + y + z = 100; ② * x >= 0; ③ * y >= 0; ④ * z >= 0; && z&1 == 0; ⑤ * 由①②可得: ...

2018-05-03 21:39:17 22370 4

原创 《剑指offer》面试题23:链表中环的入口节点

  更多剑指offer面试习题请点击:《剑指offer》(第二版)题集目录索引1. 题目:  一个链表中包含环,如何找出环的入口结点?例如,在图3.8的链表中,环的入口结点是结点3。 2. 解题思路1:第一步:判断链表是否带环   首先利用快慢指针法,确定链表是否带环。用两个指针pFast和pSlow。开始时两者都指向头结点pHead,然后同时往后走。快指针一次走两...

2018-05-02 10:18:03 182

原创 《剑指offer》面试题22:链表中倒数第k个结点

  更多剑指offer面试习题请点击:《剑指offer》(第二版)题集目录索引1. 题目:  输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。2. 解题思路:  采用快慢指针法,快指针p...

2018-05-01 16:35:59 308

原创 重载、重写和隐藏三者的区别

C++知识总结目录索引1. 重载  重载:同一作用域内被声明的几个具有不同参数列表(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。class A{public: void Swap(int* a, int* b); //overload int Swap(long* a, long* b); //...

2018-04-30 17:16:49 1623

原创 《剑指offer》面试题57:和为s的两个数字(扩展)

更多剑指offer面试习题请点击:《剑指offer》(第二版)题集目录索引题目1:和为s的两个数字  输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。解题思路:   用start和end来做标记,开始时分别标记数组的首、尾元素。比较这两个数之和sum与s的大小,如果sum<s,那么让start++,标...

2018-04-30 12:07:13 204

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

1. 消息队列基本概念1.1 什么是消息队列?  消息队列本质是一个队列(具有先进先出的特性),队列中存放的元素是一个个消息缓存块(message)。 消息缓冲块:   一种自定义数据结构(可以类比链表中的节点),用于存储信息,进程之间通信的方法之一,结构如下: struct msgbuf{ long channel; //通道号 char mtext[100...

2018-04-29 13:18:49 268

原创 C++ —— 经典面试题

C++知识总结目录索引1. 哪些成员函数不能被继承。  C++中,并不是所有的成员函数都能被子类继承,有三类成员函数不能被子类继承,分别是:构造函数(包括拷贝构造)、析构函数、赋值运算符重载函数。1. 构造函数  构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为...

2018-04-29 09:00:20 4616

原创 Linux —— 进程间通信之管道

1. 匿名管道  这里说的管道是指匿名管道(无名管道),是 UNIX 系统IPC最古老的形式。1. 管道的特点:其本质是一个伪文件(实为内核缓冲区)。它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它...

2018-04-25 15:25:27 168

原创 Linux —— 死锁的产生、预防、避免、检测与解除

1. 死锁的基本概念1. 死锁的定义   所谓的死锁是指在多道程序系统中,一组进程中的每个进程都无限期地等待被该组进程中的另一个进程所占有且永远不会被释放的资源,这种现象称系统处于死锁状态,简称死锁。处于死锁状态的进程成为死锁进程。   系统发生死锁会大量浪费系统资源甚至会导致整个系统崩溃。2. 产生死锁的原因  产生死锁的原因主要有两个:一是竞争资源,系统提供的资源有...

2018-04-23 21:26:39 1647

原创 C++——多态

C++知识总结目录索引1. 何为多态  多态一词最初来源于希腊语,意思是具有多种形式或形态的情形,在C++中是指同样的消息被不同类型的对象接收时导致不同的行为,这里讲的消息就是指对象的成员函数的调用,而不同的行为是指不同的实现,也就是调用了不同的函数。简而言之就是“一种接口,多种实现(方法)”。   2. 多态的分类多态可分为静态多态和动态多态,具体的分类情况如下:...

2018-04-23 16:56:14 1588

原创 《剑指offer》面试题24:反转链表

更多剑指offer面试习题请点击:《剑指offer》(第二版)习题目录索引题目:    定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。结点定义如下:typedef struct ListNode{ int m_nValue; struct ListNode* m_pNext;}ListNode;< code >ListNo...

2018-04-20 15:45:22 764

转载 转发:PCB进程控制块

文字转自:https://blog.csdn.net/w_y_x_y/article/details/80016975 想要有顺序地学习Linux,入口在这里哦:Linux:目录索引PCB:进程控制块0.PCB是干什么的? 学了操作系统后,我们都知道操作系统要想管理一个对象,它不是直接进行管理的,...

2018-04-20 15:04:25 290

原创 C++——实现Vector&List

1. Vector< Vector.h >#ifndef __VECTOR_H__#define __VECTOR_H__#include <iostream>#include <stdlib.h>#include <string.h>typedef int DataType;class Vector{public: ...

2018-04-20 13:35:43 223

空空如也

空空如也

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

TA关注的人

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