自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux线程7(manufacturer and consumer)

问题描述:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者之间必须保持同步,即不允许消费者到一个空的缓冲区中取产品,也不允许生产者向一个已经放入产品的缓冲区中再次投放产品。首先假设简单的情况,生产者和消费者只有一个,

2015-09-29 19:19:03 344

原创 const成员函数

const对象只能调用const成员函数:[cpp] view plaincopy#include  using namespace std;  class A    {    public:        void fun()const      {          cout"const 成员函数!"

2015-09-29 14:57:45 259

原创 C++隐式类型转换

C++ primer 中有这么一句话:可以用单个实参来调用的构造函数定义了从形参类型到该类型的一个隐式转换。这么解释:比如有个类A的对象a的成员函数的参数应该是类A的对象,但是把一个别的类型B的对象b传进去了,而且这个对象b的类型恰好是A的单参数构造函数参数类型,这时系统就用这个b自作聪明的创建了一个类A的临时对象c,虽然c和a都是A类型,但是是不同的对象。这种隐式转换有很大风险,可以

2015-09-26 12:47:47 295

原创 不用递归,使用栈实现快速排序(非常好理解)

#include #include using namespace std;void swap(int &a,int &b){ int temp=a; a=b; b=temp;}int partition(int arr[],int startIndex,int endIndex){ int pivot=arr[startIndex]; //枢轴 int to

2015-09-26 09:11:18 1512

原创 VS带参数运行

一般,main函数可以带入口参数,该参数在执行程序时,可以随着命令行输入,比如在linux下./program para这样就可以将参数para传递给程序。但是在windows下的vs开发环境下,直接运行程序,显然没有输入参数的地方,当然也可以在dos下找到.exe执行文件,运行时在加上参数,这样显然有些麻烦。但是vs为我们提供了一个传递参数的地方。

2015-09-25 18:46:04 789

转载 进程与线程

进程概念   进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。   在Mac、Windows NT等采用微内核结构的操作系统中,进程的功

2015-09-23 20:41:41 251

原创 单位长度闭区间包含所有点集

问题描述:设计一个高效算法,对实线上给定的一个点集{x1,x2,...,xn},求一个单位长度闭区间的集合,包含所有给定的点,并要求此集合最小。证明你的算法是正确的。思路:可以先对点集按从小到大的顺序排序,然后从最小的开始,构建单位闭区间,下一个闭区间从没有被前面闭区间覆盖的最小数开始。时间复杂度:O(nlgn)

2015-09-21 15:48:53 2148

原创 0-1背包问题

问题描述:有N件物品和一个容量为W的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 这个问题的特点是:每种物品只有一件,可以选择放或者不放。最优子结构:问题的最优解由相关子问题的最优解组合而成,而这些子问题可以独立求解。关键问题:如何寻找一个最优子结构(子问题)?子问题:DP[i

2015-09-21 15:26:00 264

原创 一个简单的服务器客服端通信

/*client.cpp*/#include #include #include #include #include #include #include #include #include using namespace std;int main(int argc,char *argv[]){ int sockfd; char buffer[1024]; s

2015-09-19 21:56:01 293

原创 <<重载

第一种方式:作为类外部函数 void display(ostream &); //display the string //ostream & operator<<(ostream &); };ostream & operatorvoid w1::CString::display(ostream & out){ out<<store;}ost

2015-09-19 19:54:03 262

原创 TCP/IP三路握手,四分组终止连接

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:

2015-09-18 15:23:38 578

原创 leetcode 18

Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.Note:Element

2015-09-18 10:43:48 272

原创 linux线程6(CSDN论坛上很火的一个讨论贴)

有一个全局变量int sum=0运行两个线程,代码如下:for(int i=1;i<=50;i++) sum=sum+1;问两个线程都运行完后,sum的取值范围。本人虽然运行了n遍,结果都是100,但这是个概率事件,只是100的概率很大。博客中讨论出了多种结果,一些明显不对外,本人列出一些有说服力的结果,旨在理解多线程并发运行机制。第一种:50-100这种

2015-09-16 17:03:21 471

原创 warning: cast to pointer from integer of different size

for(int i=0;i<3;i++) { pthread_create(&tid[i],NULL,threadFun,(void*)i); } 在32位系统下,不警告,在64位系统下就警告。将int i=0;改为long i=0;可以去除警告。

2015-09-16 16:15:06 2666

原创 error: expected unqualified-id before numeric constant

我在程序中有一个:#define size 50结果报错,改为:#define SIZE 50就没问题了,查资料后猜想是因为变量重复定义了,主要是变量与宏定义同名了。

2015-09-16 14:19:09 1607

原创 ISO C++ forbids declaration of ‘Contack’ with no type [-fpermissive]

真实要注意构造函数如果没有和类名相同,包括大小写也要相同,不然报这个错。或者是普通函数没有加返回类型。

2015-09-16 13:17:46 1553

原创 linux线程5(百度知道上一道题)

题目:1+2+3+...+30000,在加的过程中,要使用3个多线程完成,并且全部计算好以后,得出最终的和数。

2015-09-15 14:31:33 299

原创 linux线程4(google面试题)

题目:有四个线程1 2 3 4,线程1的功能就是输出1,线程2的功能就是输出2,以此类推.......现在有四个文件ABCD。初始都为空。现让四个文件呈如下格式:A:1 2 3 4 1 2 ......  B:2 3 4 1 2 3 ......C:3 4 1 2 3 4 ......D:4 1 2 3 4 1 ......请设计程序。

2015-09-15 14:28:56 364

原创 笔试面试细节

预处理器(Preprocessor)  1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)        #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算

2015-09-15 11:57:52 285

原创 linux线程3(笔试题)

题目:编写一个程序,开启3个线程,这3个线程的ID分别为A B C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示。该程序用到POSIX信号量。#include #include #include #include #include pthread_t pidA,pidB,pidC;pthread_attr_t attr;sem_t se

2015-09-15 10:53:49 357

原创 条件变量与互斥锁

一.互斥锁每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。二.条件变量条件变量是利用线程共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待“条件变量的成立”而挂起;另一个线程使“条件成立”(给出条件成立信号)(注意:此处的条件可以是我们取定的标志量,也可以是指针为空等等)。条件变量与互斥量一起使用时,允许线程以无竞争的

2015-09-14 15:35:41 520

原创 linux线程2(简单笔试题)

题目:子线程循环10此,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程又循环100次,如此循环4次,试写出代码。#include #include #include #include pthread_attr_t attr; //属性pthread_mutex_t mutex; //互斥量pthread_cond_t cond;

2015-09-14 12:54:24 303

原创 管道通信(半双工)

#include "unpipc.h"#include #include using namespace std;void client(int,int),server(int,int);int main(int argc,char **argv){ int pipe1[2],pipe2[2]; pid_t childpid; pipe(pipe1); //

2015-09-13 22:59:24 656

转载 unpipc.h下载和编译

http://blog.chinaunix.net/uid-27164517-id-3320677.html1. 编译原书所带例子:  unpv22e.tar.gz 下载地址:http://www.kohala.com/start/unpv22e/unpv22e.tar.gz  2. 解压:   $tar -zxvf unpv22e.tar.gz  3. 编译:  

2015-09-13 21:58:22 1249

原创 linux线程1(一个简单的线程程序)

#include #include #include using namespace std;void *thread(void *threadid){ long tid; tid = (long)threadid; cout<<"Hello World! It's me, thread #"<<tid<<endl; pthread_exit(NULL);}int

2015-09-12 23:21:11 279

转载 信号量 互斥锁 条件变量的区别

信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是说,信号量不

2015-09-09 22:56:52 379

原创 友元类 运算符重载 new结构体数组

1.友元类如果StockManagement类要访问Stock类中私有成员,Stock类可以将StockManagement类声明为自己的友元类,具体实现如下:class Stock{ friend class StockManagement; //define the friend class private: char tag[5]; int cost; lon

2015-09-09 17:02:59 459

原创 一个简单的时间获取程序

客户程序:#include "unp.h"#include "myerror.h"int main(int argc,char **argv){ //如果程序参数格式不正确 if (argc != 2) { err_quit("usage: a.out "); } //创建一个TCP套接字,返回sockfd作为套接字描述符 int sockf

2015-09-02 20:14:52 346

原创 我收藏的blog

http://blog.csdn.net/chlaws/article/category/357361  项目多

2015-09-02 18:50:21 357

原创 C++函数返回多个参数

如果一个函数需要返回多个参数,可以采用以下两种方法:第一种方法是将返回值作为写参数。#include #include using namespace std;void fun(int &a, char &b, string &c){ a = 1; b = 'b'; c = "test";}int main(){ int a; char b; string c;

2015-09-02 10:16:17 6469 1

原创 C++函数指针

函数指针是指向函数的指针变量,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。函数指针有两个用途:调用函数和做函数的参数。int func(int x); /* 声明一个函数 */int (*f) (int x); /* 声明一个函数指

2015-09-02 09:49:44 267

原创 fstream读写二进制文件

先从普通文件读数据,再将数据写到二进制文件,在将数据从二进制文件读出来,显示。中间包括插入数据,删除数据,都是直接对文件操作。涉及内容:标志位清除、读写文件指针重定位等#ifndef HARDWARE_H_#define HARDWARE_H_#include using namespace std;#define fileName "hardware.dat"#

2015-09-02 08:58:34 1349

空空如也

空空如也

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

TA关注的人

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