基础不牢,地动山摇!

C++ 引用计数

C++没有像java那样的垃圾回收机制,但是我们可以实现一个。一种很简单的方式就是使用引用计数。它实际上是一种用对象来管理资源的方式,因为普通的栈上的对象在离开作用域时会调用对应的析构函数,根据这个特性,可以实现用于对指针进行管理的类。 下面以一个对int*指针的管理来说明引用计数是如何实现的。 ...

2015-10-21 11:04:32

阅读数:2366

评论数:0

socket通信之九:使用完成端口实现的一个聊天室

基本上windows平台下的几种IO模型都实现了一遍,还有两个没有实现,但是它们一个需要基于windows消息,一个和重叠IO中的事件通知模型比较类似,并且不能实现真正的异步,所以就不列出来了。 这一篇介绍如何实现一个聊天室。前面介绍的几种模型中除了基本的socket模型和阻塞版本的模型之外都...

2015-09-04 23:08:02

阅读数:3098

评论数:0

socket通信之八:完成端口模型实现的客户/服务器模型

完成端口的详细说明可以参考下面这两篇文章,理论讲的很好。 手把手教你玩转SOCKET模型:完成端口(Completion Port)详解  完成端口(I/O completion)原理 收藏 但是本文的实现和它们还是有点区别。 这里就只列出完成端口服务器端的基本流程了。 ...

2015-09-03 16:10:38

阅读数:1456

评论数:0

socket通信之七:Overlapped I/O 完成例程模型实现的客户/服务器模型

前一篇介绍了重叠IO的一种实现方式即基于事件通知的方式,这一篇介绍另外一种方式,即使用完成例程的方式实现重叠IO,首先声明这种方式比事件通知的方式简单多了。 用完成例程来实现重叠I/O比用事件通知简单得多。在这个模型中,主线程只用不停的接受连接即可;辅助线程判断有没有新的客户端连接被建立...

2015-09-03 14:00:24

阅读数:1284

评论数:0

socket通信之六:Overlapped I/O 事件通知模型实现的客户/服务器模型

1.基于事件通知模型的Overlapped I/O(重叠IO模型) 概括一点说,重叠模型是让应用程序使用重叠数据结构(WSAOVERLAPPED),一次投递一个或多个Winsock I/O请求。针对这些提交的请求,在它们完成之后,应用程序会收到通知,于是就可以通过自己另外的代码来处理这些数据了...

2015-09-02 21:12:42

阅读数:1958

评论数:0

socket通信之五:select多路复用的客户/服务器模型

前面一篇介绍了服务器端使用多线程的方式来处理多个客户端的请求的,但是当客户端数量增多时线程数量会急剧增加,导致消耗大量的资源。 于是就引出了服务器端的一种新的模型。 1. 阻塞与非阻塞 首先介绍几个基本的概念。 阻塞方式( block ),顾名思义,就是...

2015-09-02 14:52:47

阅读数:4317

评论数:1

socket通信之四:多线程版本的客户/服务器模型

上一篇中阻塞版本的客户/服务器模型实现了一个客户端能连续向服务器端发送数据,但是因为服务器端在循环体内会被阻塞,这样其它客户端再连接服务器端时服务器是无法处理的,这就导致了服务器只能处理一个客户端,其它客户端都会等待,直到当前处理的客户端退出,然后就会再有一个客户端和服务器端连接。 这一篇文章介...

2015-09-02 14:51:52

阅读数:1964

评论数:2

socke通信之三:阻塞版本的客户/服务器模型

上一篇中实现出来的客户端只能向服务器端发送一次数据,然后就断开了连接,那么如果需要向服务器端持续发送数据,那么应该怎么做? 一个很直观地想法就是修改客户端的第4步,即发送,接收数据那一步,在基本的客户/服务器模型中我们是直接发送一个字符串给服务器端,现在我们从控制台接收数据将接收到的数据发送给...

2015-09-02 14:50:30

阅读数:805

评论数:0

socket通信之二:实现一个基本的客户/服务器模型

前一篇介绍了TCP/IP协议族和socket的一些基本的知识,这篇文章介绍在windows下如何实现一个使用socket通信的客户和服务器模型。首先还是将基本的流程回顾一下,任何复杂的模型都是从这个基本的模型中衍生出来的,然后介绍一下在windows平台下相关的api。 ...

2015-09-02 14:48:06

阅读数:3354

评论数:1

socket通信之一:TCP/IP模型与socket

这段时间看了一些网络相关的东西,这里做一个总结吧。参考了很多文章的内容,因为我本身是对着书并且参考网络资源在学习的,在最后会一一列出文章的地址。 这篇文章主要介绍TCP/IP的一些基本知识,后面几篇继续深入一点探究。 本篇主要包括下面这些知识: TCP/IP是什么socket介绍...

2015-09-02 14:44:28

阅读数:4297

评论数:0

定义一个只能在栈上构造对象的类

只能在堆上定义的对象可以通过声明构造函数是私有的,然后提供两个静态的方法,一个方法用来获取堆上的对象,一个用来释放堆上的对象。C++中定义一个不能被继承的类中第二种方法就是通过这种方式声明了一个不能被继承的类,但是这个类的对象就只能位于堆中了。 那么如何一定一个只能在栈上构造的对象? 这个就涉...

2015-08-31 16:33:18

阅读数:1110

评论数:0

火车进站问题

描述 给定一个正整数N代表火车数量,0 知识点 栈 运行时间限制 0M 内存限制 0 输入 有多组测试用例,每一组第一行输入一个正整数N(0 输出 输出以字典序排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行,具体见sample。 ...

2015-08-31 15:20:31

阅读数:1683

评论数:0

C++中定义一个不能被继承的类

一种错误的解法 最开始是从构造函数开始着手(先声明这种方法不能定义一个不能被继承的类,这是一种错误的方法,但是很容易往这方面想),假设存在下面的继承体系: 现在假设B是一个不能被继承的类,那么如果存在B的子类C,那么C的构造过程应该会报错,那么如何能够让B能正常构造而C不能正常构造呢?首先A,...

2015-08-31 10:56:16

阅读数:2573

评论数:1

二叉树遍历的应用(路径和问题,判断是否是二叉搜索树,判断是否是二叉平衡树)

现在越发觉得关于树的问题真是千变万化,随便改一个条件又会是一个新的问题。 问题:一棵二叉树每个节点包含一个整数,请设计一个算法输出所有满足条件的路径:此路径上所有节点之和等于给定值。注意此类路径不要求必须从根节点开始。 如果没有最后一个条件,这道题在leetcode上面过,就是采取先序遍历...

2015-08-25 20:53:22

阅读数:1046

评论数:0

文件扩展名批量修改器

之前在使用SourceInsight查看一些开源项目的源代码时发现了一个很重要的问题,就是有些开源的工程的头文件现在都没有.h的后缀名了。编译器可以包含这些没有扩展名的头文件,但是使用SourceInsight打开这些工程时却没办法包含这些头文件,或者说即使包含了这些头文件在SourceInsig...

2015-08-21 19:26:21

阅读数:920

评论数:0

使用逆波兰式进行表达式求值

中缀表达式及后缀表达式图解中说明了使用逆波兰式进行表达式求值的方法,这里使用C++进行实现。实现和原理讲解有一点不同,需要进一步进行细化。 关于将中缀表达式转换成后后缀表达式的规则: 规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈...

2015-08-13 23:12:39

阅读数:3563

评论数:1

中缀表达式及后缀表达式图解

平常我们见到的四则运算表达式都是中缀表达式,这种表示方法适合人阅读,但是不适合计算机计算,因为乘除号出现在加减号的后面时可能要先计算后面的加减号,加上括号后就更加麻烦了。计算机可以通过逆波兰式来非常方便的实现计算。 计算机实现四则运算主要分两步进行: 将给定的中缀形式的表达式转换成后缀表达式形...

2015-08-13 22:34:58

阅读数:3888

评论数:0

堆和栈

转载自:http://blog.csdn.net/goingup/article/details/618309 堆和栈究竟有什么区别?      主要的区别由以下几点:     1、管理方式不同;     2、空间大小不同;     3、能否产生碎片不同;     4、生长方向不同; ...

2015-08-12 19:39:33

阅读数:411

评论数:0

关于C++内存中字节对齐问题的详细介绍

转载自:http://m.jb51.net/article/36903.htm 本篇文章是对C++内存中字节对齐的问题进行了详细的分析与总结。需要的朋友参考下 一、什么是字节对齐 计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任...

2015-07-13 22:52:50

阅读数:368

评论数:0

string对象操作

标准string对象支持长度可变的字符串操作。使用它需要包含头文件,它位于std命名空间下。1.string对象的定义和初始化string s1; //默认构造函数,s1为空串 string s2(s1); //将s2初始为s1的一个副本 string s3("value");...

2015-06-11 13:26:37

阅读数:523

评论数:0

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