
C++
文章平均质量分 80
maweitao2014
你好2015
展开
-
带参数main函数
int argc,char*argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数实际上,main函数也可以带参数。带参数main函数的定义格式如下:void main(int argc, char *argv[]){... ...}argc和argv是main函数的形式参数。这两个形式参数的类型是系统规定的。如果main函数要原创 2015-07-12 17:25:34 · 613 阅读 · 0 评论 -
创建两个线程模拟火车站两个窗口售票程序
#include #include using namespace std;DWORD WINAPI Fun1(LPVOID lpParameter);DWORD WINAPI Fun2(LPVOID lpParameter);int index = 0;int tickets = 100; HANDLE hMutex;int main(){ HANDLE hThre原创 2015-07-22 14:55:16 · 908 阅读 · 0 评论 -
深入分析Sleep(0)与Sleep(1)的区别
目的:有时候我们想让线程不被调度一定的时间,也就是说让线程睡眠一段时间。API 接口:在 Win32中可以调用 Sleep,SleepEx 和 SwitchToThread 三个API。VOID WINAPI Sleep(DWORD dwMilliseconds);DWORD WINAPI SleepEx(DWORD dwMilliseconds, BOOl转载 2015-07-22 13:16:40 · 394 阅读 · 0 评论 -
C/C++中extern关键字详解
#include#includeusing namespace std;int main(){ string str1,str2,temp; int m,MaxNum=0,Len; cin>>str1>>str2; string::size_type index1; string::size_type index2; for(index1=0;index1!=str1.size转载 2015-08-29 21:31:33 · 367 阅读 · 0 评论 -
内存映射文件实现共享内存
内存映射文件进程间共享内存内存映射文件的另一个功能是在进程间共享数据,它提供了不同进程共享内存的一个有效且简单的方法。后面的许多例子都要用到共享内存。共享内存主要是通过映射机制实现的。Windows 下进程的地址空间在逻辑上是相互隔离的,但在物理上却是重叠的。所谓的重叠是指同一块内存区域可能被多个进程同时使用。当调用CreateFileMapping 创建命名的内存映射文件对象时,转载 2015-09-02 14:32:35 · 1060 阅读 · 0 评论 -
[NoSQL] 海量数据解决思路之Hash算法
一、概述 本文将粗略讲述一下Hash算法的概念特性,里边会结合 分布式系统负载均衡 实例对Hash的一致性做深入探讨。另外,探讨一下Hash算法在海量数据处理方案中的通用性。最后,从源代码出发,具体分析一下Hash算法在MapReduce框架的中的应用。 二、Hash算法 Hash可以通过散列函数将任意长度的输入变成固定长度的输出,也可以将转载 2015-09-05 17:25:31 · 1208 阅读 · 0 评论 -
C#类,类成员访问修饰符
今天想不起C#中类的默认访问修饰符是internal了还以为是public呢,单元测试时候一直是黄色敬告。所以把csdn的东西翻出了(在百度上搜不到的)。当用internal修饰类(c#默认不加修饰符就是internal)可能会出现问题:当你在继承或者是实例化一个internal类的时候你的访问权限不能打破原来internal类的访问限制。例:internal class A{}转载 2015-09-10 15:07:55 · 2186 阅读 · 0 评论 -
多态和虚表
多态多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太现实,所以我们先看如下代码://例程1 #include iostream> using namespace std; class Vehicle { public: Vehicle(float speed,int to转载 2015-09-07 20:20:03 · 421 阅读 · 0 评论 -
几种算法思想
1、递归法所谓递归,就是指如果需要求解当前状态就需要求解其依赖的迁移状态。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。采用递归描述的算法通常有这样的特征:1)为求解规模为N的问题,设法将它分解成规模较小的问题;2)然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样转载 2015-09-13 09:59:27 · 632 阅读 · 0 评论 -
回溯法——八皇后问题
回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。回溯法指导思想——走转载 2015-09-13 18:37:06 · 733 阅读 · 0 评论 -
内存映射文件机制处理大文件
先说结论:使用内存映射文件来处理大文件可以提高效率。 为什么呢?我们先来看看如果不使用内存映射文件的处理流程是怎样的,首先我们得先读出磁盘文件的内容到内存中,然后修改,最后回写到磁盘上。第一步读磁盘文件是要经过一次系统调用的,它首先将文件内容从磁盘拷贝到内核空间的一个缓冲区,然后再将这些数据拷贝到用户空间,实际上是两次数据拷贝。第三步回写也一样也要经过两次数据拷贝。所以我们转载 2015-08-28 22:32:32 · 515 阅读 · 0 评论 -
内存溢出和内存泄漏的区别
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory leak会转载 2015-07-11 15:55:31 · 2785 阅读 · 0 评论 -
线程池的研究及实现
什么是线程池?诸如web服务器、数据库服务器、文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务。构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务。但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创转载 2015-07-21 15:38:29 · 341 阅读 · 0 评论 -
c++的进程和线程【windows】
前几天搞定了C++的多线程编程,今天闲来无事小做总结!【线程的概念】为了了解线程的概念,我们必须先讨论一下进程的概念。 一个进程通常定义为程序的一个实例。在Win32中, 进程占据4GB的地址空间。与它们在MS-DOS和16位Windows操作系统中不同, Win32进程是没有活力的。这就是说,一个Win32进程并不执行什么指令,它只是占据着4GB的地址空间,此空间中有应转载 2015-07-13 15:40:51 · 1461 阅读 · 0 评论 -
C++多线程编程
C++的多线程不同于C语言的多线程,对于我这个从C转向C++的来说更是觉得很难理解;来新公司的这段时间也是一直在思考这方面的事情,近期一直在检查程序中死锁的问题;就总结以下最近对于C++多线程编程的心得吧。 C++的多线程主要体现在两方面,一方面是对于全局数据的线程同步。我们看下面的实例 首先我们封装一个Thread类Thread.h 文件#if转载 2015-07-11 15:30:18 · 526 阅读 · 0 评论 -
C++多线程编程简单实例
C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD SIZE_T dwStackSize,转载 2015-07-13 15:37:55 · 365 阅读 · 0 评论 -
简易C\C++内存池
一个简单C\C++内存池,网址如下:http://www.codeproject.com/Articles/27487/Why-to-use-memory-pool-and-how-to-implement-it,大体思路为:初始化时,分配几十个固定大小的内存块供程序使用,程序需要内存时,直接从内存池中取,释放内存时,内存池回收。该程序的内存分配时这样的,不管分配多大内存,只要内存池中有内存块并且翻译 2015-07-13 15:47:12 · 467 阅读 · 0 评论 -
C++内存管理
C++内存管理[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自转载 2015-07-18 12:32:09 · 440 阅读 · 0 评论 -
内存池链表与大顶堆实现
1. 内存池设计1.1 目的在给定的内存buffer上建立内存管理机制,根据用户需求从该buffer上分配内存或者将已经分配的内存释放回buffer中。1.2 要求尽量减少内存碎片,平均效率高于C语言的malloc和free。1.3 设计思路将buffer分为四部分,第1部分是mem_pool结构体;第2部分是内存映射表;第3部分是内存chunk结构转载 2015-08-11 17:34:52 · 1830 阅读 · 0 评论 -
堆栈的深度理解
接触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据。那么这些变量在内存中是如何存放的呢?程序又是如何使用这些变量的呢?下面就会对此进行深入的讨论。下文中的C语言代码如没有特别声明,默认都使用VC编译的release版。 首先,来了解一下 C 语言的变量是如何在内存分部的。C 语言有全局变量(Global)、本地变量(Local),静态变量(Static)、寄存器变量(Reg转载 2015-07-18 12:12:48 · 2009 阅读 · 0 评论 -
C#线程池ThreadPool
相关概念: 线程池可以看做容纳线程的容器; 一个应用程序最多只能有一个线程池; ThreadPool静态类通过QueueUserWorkItem()方法将工作函数排入线程池; 每排入一个工作函数,就相当于请求创建一个线程; 线程池的作用:线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了转载 2015-08-12 10:44:12 · 17510 阅读 · 0 评论 -
C++实现线程池
本文介绍的线程池采用C++语言,在windows平台下实现。此版本为Version 1.0,以后还会推出功能更完备的后续版本。本着技术分享的精神写作本文同时公布源代码。欢迎大家指出该线程池存在的问题并对当前性能进行讨论。 适用场景: 1.需要大量的线程来完成任务,且完成任务的时间比较短。 2.对性能要求苛刻的应用,比如要求服务转载 2015-08-12 10:52:41 · 476 阅读 · 0 评论 -
最长公共子序列
一个字符串S,去掉零个或者多个元素所剩下的子串称为S的子序列。最长公共子序列就是寻找两个给定序列的子序列,该子序列在两个序列中以相同的顺序出现,但是不必要是连续的。例如序列X=ABCBDAB,Y=BDCABA。序列BCA是X和Y的一个公共子序列,但是不是X和Y的最长公共子序列,子序列BCBA是X和Y的一个LCS,序列BDAB也是。寻找LCS的一种方法是枚举X所有的子序列,然后注意检转载 2015-09-18 13:33:25 · 562 阅读 · 0 评论