皓皓松的博客

欢迎来到 皓皓松博客,敢想!敢做!敢当!

【C++】单例模式之C++实现

单例模式的概念 只允许一个产生一个对象的类 单例模式的实现方法 1.单例类保证全局只有唯一一个自行创建的实例对象 2.单例类提供获取这个唯一实例的接口 单例模式的优缺点 优点 (1)阻止其他度对象实例化自己的副本,保证所有访问唯一性 (2)类控制了实例化的过程,所以可以灵活的更改实例化的过程 缺点...

2017-08-15 11:23:13

阅读数 669

评论数 0

【网络】TCP三次握手建立连接和四次挥手释放链接

TCP协议 TCP报文格式 TCP建立连接的过程  (1)Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。 (2)Server收到数据包后由标志位SYN=1知道Client请求建立连接,...

2017-07-01 16:48:03

阅读数 300

评论数 0

【网络】TCP协议中的四大定时器

前言 在TCP连接中,有四大定时器来维持连接的正常运行,这四个定时器分别是超时重传定时器、坚持定时器、保活定时器以及时间等待计时器 超时重传定时器 所谓超时重传,是TCP之所以可靠的一点。该定时器就是当一个TCP报文发送后,启动该定时器。 如果在规定时间内,没有收到该报文的确认序号,便重新...

2017-07-01 15:47:49

阅读数 303

评论数 0

【C++】内存管理方式

本篇博文旨在介绍C++的内存管理方式,并和C语言中的内存管理方式作出对比;说明了C语言中的malloc/free和C++中的new/delete的区别 C中的内存管理方式 堆上创建空间 栈上创建空间 C语言中常见的几种内存泄漏 C++中的内存管理方式 全局变量、全局静态变量、局部静态变量、...

2017-03-18 22:44:37

阅读数 863

评论数 0

【Git】工作区、暂存区与版本库

本篇博文旨在介绍git的工作区,暂存区和版本库的概念;并说明使用git add、git commit 等指令时,对工作区,暂存区以及版本库分别造成的结果; 对于会使用git的人,git add,git commit,git checkout ,git reset这些指令应该很熟悉了 我们一般使...

2017-03-17 19:40:26

阅读数 4151

评论数 1

【C++】智能指针

本篇博文旨在介绍C++中的智能指针;从为什么引入它开始,分别实现了auto_ptr,scoped_ptr,unique_ptr,shared_ptr等智能指针;介绍了各个智能指针的优缺点以及适用场景;最后用防函数实现了文件指针的管理 智能指针概念 智能指针是一个类,用它的对象管理着申请的内存空...

2017-03-15 21:51:06

阅读数 1023

评论数 0

【数据结构】布隆过滤器——位图扩展

本篇博文,旨在介绍一种可以快速检索元素是否存在的数据结构 --- 布隆过滤器;本文从位图和布隆过滤器的对比,讨论了使用这两种数据结构的不同情况;并介绍了布隆过滤器的几种主要使用场景 布隆过滤器的引入 之前学习了位图,可以快速的判断一个整数是否存在于一个集合中 然而,现实生活中我们用的很多是字符...

2017-02-28 15:19:16

阅读数 690

评论数 0

【数据结构】位图BitMap

给40亿个不重复的无符号整数,没拍过序。给定一个无符号整数,如何可以高效的判断是否存在这些数据中。 直接的想法是,我们将这些的无符号整数存储到内存中,然后用给定的数进行一一比较。 我们分析一下,一个无符号整数是4个字节,40亿* 4个字节,10亿个字节大概就是4个G,40亿个无符号整数就是16...

2017-02-24 21:21:48

阅读数 1233

评论数 0

【数据结构】二叉搜索树

概念及其性质 二叉搜索树的查找 二叉搜索树的插入 二叉搜索树的删除

2017-01-20 09:31:45

阅读数 733

评论数 0

【数据结构】栈的队列的实现

今天,再次实现一下数据结构中的栈和队列 这次我们用的是C++实现栈和队列,用到了C++多态的一种特性:泛型编程--模板 关于模板这个知识点,我们之前讲过,这次就不多说了 Stack.h #pragma once #include using namespace std; #include...

2016-11-27 16:49:13

阅读数 544

评论数 0

【C++】内联函数和宏的区别

内联函数 //定义 特性 // 内联函数和宏的异同 1、类型检测 内联函数是函数,有参数类型的判断。宏是直接的替换 2、替换时机 内联函数在编译的时候替换 宏在预处理阶段进行替换 3、替换的成功率 宏一旦定义则在预处理阶段一定会替换 内联函数仅仅是对编译器的一个建议 如果编译器觉得该函数不适合成为...

2016-10-13 18:45:06

阅读数 471

评论数 0

【Linux】周期任务crontab

crond和crontab的区别 crond是一个指令,而crontab是一个文件,用于存放指令的文件 crond的概念和crontab是不可分割的。 crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。 该命令从标准输入设备读取指令,并将其存放于“cr...

2017-07-23 10:46:37

阅读数 1265

评论数 0

【Linux】子进程的异步等待方式

SIGCHLD 当子进程退出时,它会向父进程发送SIGCHLD信号,该信号的默认处理方式为忽略,当父进程以阻塞方式等待时,它不能处理自己的工作。 我们自定义一个捕捉信号的函数myhandler #include #include #include #include #include v...

2017-07-22 16:13:05

阅读数 1154

评论数 0

【网络】CRC校验

基本概念 CRC即循环冗余校验码,是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。 循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 基本原理 在...

2017-07-22 15:26:31

阅读数 1208

评论数 0

【Shell】截取字符串

基本概念 在进行脚本编程的过程中,总会遇到截取字符串的问题(就比如从字符串中截取出QQ等信息) 好在,Shell下给了我们一些截取字符串的方法 下面我来依次介绍这几种方法,并用例子进行验证 截取字符串的几种方法 (1)# 号 结果:删除左边字符,保留右边字符 (2)## 号截...

2017-07-15 16:47:18

阅读数 878

评论数 0

【Shell】命令代换

命令代换 基本概念 命令代换的基本思想是,先执行指定的内部指令,然后将其结果替换出来,重新组成新的命令行。 两种命令代换的格式 (1) 反引号 `` #!/bin/bash DATE=`date` echo $DATE (2) $() #!/bin/bash FILE=$(l...

2017-07-15 16:16:37

阅读数 195

评论数 0

【网络】Select服务器的实现

五种I/O模型 Unix下共有五种I/O模型,分别是 (1)阻塞式I/O; (2)非阻塞I/O; (3)I/O复用(select和(e)poll); (4)信号驱动I/O(SIGIO); (5)异步I/O(Posix.1的aio_系列函数); 阻塞I/O模型 应用程序调用一个IO函数,导致应用...

2017-07-14 18:44:59

阅读数 957

评论数 0

【Shell】Shell语法总结以及简易内存条的实现

基本语法 Shell文件的开头 Shell的开头需要写成  #!/bin/bash #!这个符号是表示,让系统去调用后面的的参数来解释执行该文本的程序 除此之外,还有下列可以用的解释器 /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /u...

2017-07-14 17:52:35

阅读数 261

评论数 0

【网络】UDP服务器的实现

UDP服务器实现的基本步骤 (1)利用socket函数创建套接字 (2)服务器用bind进行IP和端口号的绑定 (3)不需要设置监听状态 (4)绑定后直接读写 相关函数 recvfrom 作用 用来数据的接收 头文件 #include #include 函数原型 int recvfrom(int ...

2017-07-11 17:17:48

阅读数 800

评论数 0

【网络】TCP服务器的实现

socket编程基本概念 在TCP/IP协议中,IP地址+端口号标识个唯一的一个进程,“IP地址+端口号”就是socket 在TCP协议中,建立连接需要两个进程各自有一个socket标识符,这两个socket组成的socket pair就标识着唯一的连接 相关概念介绍 网络字节序 首先呢,我们都知...

2017-07-11 11:32:31

阅读数 209

评论数 0

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