自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ferlan的博客

天下大事,必作于细!

  • 博客(19)
  • 收藏
  • 关注

原创 单例模式

什么是单例模式单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。单例模式的实现实现单例模式一般有两种方式:饿汉模式和懒汉模式。饿汉模式我们用一个洗碗的例子来解释饿汉模式和懒汉模式。现在有饿汉和一个脏了的碗,饿汉希望下次想吃饭的时候能直接盛饭吃,所以他就先把碗先洗好,这样随...

2019-01-28 17:37:37 222

原创 半链接,半打开,半关闭

一、半连接1.1 定义      发生在TCP3次握手中。      如果A向B发起TCP请求,B也按照正常情况进行响应了,但是A不进行第3次握手,这就是半连接。1.2 半连接攻击     半连

2019-01-25 09:34:38 1369

原创 tcp,udp特点,比较及 tcp可靠传输的各种机制

(1)TCP协议报头TCP指传输控制协议,其报头格式如下:TCP协议中的六个标志分别是,URG、ACK、PSH、RST、SYN、FIN。1)UGR(紧急):UGR=1表示紧急指针字段有效。它告诉系统此报文段有紧急数据,应当尽快传送。从报文段的开头,到紧急指针指向的地方就是紧急数据。2)ACK(确认):ACK=1时,确认号字段才有效。3)PSH(推送):让对方立即收到响应。与URG的区别...

2019-01-24 20:20:48 1318

原创 网络编程套接字---tcp简单通信程序详解

tcp简单通信程序详解实现步骤服务端:1.创建套接字socket2.绑定地址信息3.开始监听socket4.建立连接成功5-6 与客户端进行数据通信如何判断tcp断开链接?7关闭sockettcp通信程序1.0版本(不能支持多个客户端通信)tcp_server.cpptcp_client.cpp程序的问题解决思路:1.将服务端改成多进程版本:2.多线程版本两个版本的比较本篇博客的目的是用sock...

2019-01-23 16:24:35 1391

原创 从tcp,udp链接角度看send和sendto的区别

ssize_t send(int sockfd, const void *buf, size_t len, int flags);ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);send函数...

2019-01-23 08:51:16 2310

原创 网络编程套接字--udp通信

本片博客使用socket套接字设计一个简单的udp聊天小程序,因为udp比较简单,仅将代码列在此处。另有一篇使用socket套接字完成tcp聊天小程序,将重点讲解,博客地址:正在撰写,随后补上。服务端 udp_server.cpp#include <iostream>#include <unistd.h>#include <sys/types.h>...

2019-01-22 20:42:39 442

原创 linux--守护进程

什么是守护进程守护进程也称精灵进程(Daemon),是运⾏在后台的⼀种特殊进程。它独⽴于控制终端并且周期性地执⾏某种任务或等待处理某些发⽣的事件。守护进程是⼀种很有⽤的进程。 Linux的⼤多数服务器就是⽤守护进程实现的。⽐如, ftp服务器, ssh服务器, Web服务器httpd等。同时,守护进程完成许多系统任务。⽐如,作业规划进程crond等。Linux系统启动时会启动很多系统服务进程,...

2019-01-22 10:00:49 231

原创 线程(二)线程的同步与互斥

线程的同步与互斥生产者与消费者模型线程的互斥互斥量(也叫互斥锁)互斥量使用步骤互斥量接口死锁线程互斥代码演示线程的同步为什么要线程同步?竞态条件条件变量条件变量的定义条件变量的接口条件变量的简单场景为什么要给pthread_cond_wait传互斥量?pthread_cond_wait内部为什么要执行解锁?代码演示生产者与消费者模型在讲同步与互斥之前,我们要来先讲一讲生产者与消费者模型。生产...

2019-01-21 09:55:11 321

原创 linux--进程信号详解

进程信号详解1.引入信号的概念2.信号的生命周期3.信号的产生4.信号的注册4.1可靠信号与不可靠信号5.信号的注销6.信号的处理6.1 cure-dump1.引入信号的概念信号是软件中断。它给我们提供了一种能够异步处理事件的方法。事实上,进程并不知道信号何时到来。比如,当我们的某一个进程失去控制,而我们想让他终止运行时,通常使用Ctrl+c的方式使进程强制终止,Ctrl+c虽然由硬件产生,...

2019-01-19 19:05:58 416

原创 线程(一)线程概念,优缺点,基本操作

线程什么是线程线程与进程线程的优缺点线程id与进程id关于使用posix线程库的说明线程的创建线程的退出线程的等待与分离什么是线程线程是进程中的一条执行流,也是计算机调度的基本单位。在linux平台下,线程是由进程模拟实现的,故该线程也叫做轻量级进程,且线程被操作系统用pcb描述并管理。线程与进程一个进程中至少有一个线程,也可以有多个线程,多线程是共享同一个进程地址空间的。进程是...

2019-01-19 17:11:15 685

原创 C++智能指针

智能指针什么是智能指针?为什么要有智能指针?auto_ptrunique_ptrshared_ptrshared_ptr引发的线程安全问题:什么是智能指针?为什么要有智能指针?在C++程序里,使用new关键字开辟的内存必须被手动delete掉,不然就会导致内存的泄漏,但是,当程序非常冗长,你能保证自己每一个手动开辟的内存块都释放了吗?在delete之前,倘若程序因为异常跳转后,你还能保证内...

2019-01-17 09:59:53 8065

原创 关联式容器set详解

STL源码剖析---关联式容器set详解什么是setset的迭代器set的常用操作代码测试什么是set上篇博客详细介绍了关联式容器map ,今天我们来了解一下它的姊妹篇–set.set也属于关联式容器.他们俩底层都由红黑树实现,所以set的查询,插入,删除效率都很高,且set内的数据也是有序的(默认升序)。但map的缺点set也有,不能够存储不能比较的数据,且数据不重复。set存储的数据...

2019-01-16 15:09:47 679

原创 STL源码剖析---关联式容器map详解

STL源码剖析---关联式容器map什么是mapmap中存储的键值对map的迭代器map的常用操作总结什么是mapmap是STL中关联式容器的一种,所谓关联式容器,元素是按关键字来保存和访问的,而序列式容器中的元素则是按它们在容器中的位置来顺序保存和访问的。本片博客的主角map中,存储的不是一般的数据,而是一个个的键值对,我们称之为pair,pair键值对由两部分组成:键值key和实值v...

2019-01-16 10:08:02 665

原创 牛客--栈的压入弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:我们直接用例题看,出栈序列为{4,5,3,2,1}。4: 1,2,3...

2019-01-15 11:53:16 343

原创 leetcode--最小栈

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minS...

2019-01-15 09:38:07 370

原创 leetcode--二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4].示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5 和节点 1 的最近公共祖先是节点 3。示例 2:输入: root = [3,5,1...

2019-01-14 20:22:41 778

原创 vector迭代器失效的问题

当你使用vector容器时,如果你进行下面2种中的任意一种操作:vector已满再进行插入操作使用erase()删除数据.就会导致迭代器失效.为什么呢?我们举个列子#include<iostream>#include<vector>#include<list>#include&a

2019-01-13 16:27:49 892 1

转载 C++模板为什么不支持分离编译?

模板为什么不支持分离编译?首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32),后者拥有PE(Portable Exec...

2019-01-13 09:24:34 275

原创 浅析AVL树

什么是AVL树今天我们来讲一讲AVL树,AVL树是二叉搜索树的优化版,又称平衡二叉搜索树,高度平衡树。我们都知道,当一棵二叉搜索树的节点一直单边插入时,这时候它的查找效率趋近于O(n),非常慢。而AVL树的特点是:“AVL树中任何节点的两个子树的高度最大差别为1” ,这样就克服了节点单边存储而导致查找效率低下的问题。如上图,左边是AVL树,右侧为非AVL树,右子树高度减去左子树的高度(...

2019-01-10 16:07:18 1230

空空如也

空空如也

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

TA关注的人

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