10 2014 档案
摘要:很高兴看到阿里云的成立。这意味着阿里已经把对互联网技术的投入提高到了的战略高度。过去经常听工程师抱怨阿里不是一家技术公司。现在再没有理由可以这样抱怨了。但是要实现这个战略,没有技术储备是不行的。招聘和培养工程师显然是目前集团各子公司同时面临的一个令人头痛的难题。由于曾经在硅谷工作过,我常想,为什么硅...
阅读全文
摘要:继续采用 TCP之简单回传(三)的思路,不过由于其转型时,每次读取一个字符都要调用系统函数一次,故其效率较低;本次我们采用系统中一个函数recv实现预读取;int PASCAL FAR recv( SOCKET s, char FAR* buf, int len, int flags);s:一个标识...
阅读全文
摘要:鉴于TCP之简单回传(一) 中所出现的问题,本博文所要采取的一种方法是:服务器端和客户端共同遵守如下约定:接收的字节流中,若遇到'\n',表示一次传送完毕。具体为:客户端把每次欲发送的数据的最后一个字符设置为 '\n';而服务器每次接收时,一个一个字符的从缓冲区中取出一个字符,然后再判断该字符是否为...
阅读全文
摘要:鉴于TCP之简单回传(一) 中所出现的问题,本博文所要采取的一种方法是:客户端:先向服务器传送一个 int32_t 大小的数据,表示随后所要发送数据的真实长度; 服务器:先接收一个int32_t 大小的数据,再接收真实的数据;本程序中所用到的函数都可以在 TCP之函数封装中找到;server服务器端...
阅读全文
摘要:本文所有函数皆是为实现 TCP之简单回传(二) 系列所封装的函数;所有函数皆用C语言实现。函数以及注释如下:头文件://.h#ifndef SYSUTIL_H#define SYSUTIL_H#include #include void nano_sleep(double val); //实现定时作...
阅读全文
摘要:本文介绍Tcp的简单应用:简单的 回传(即客户端发送什么,服务器就转发给客户端什么)。主要包含以下几个函数原型:服务器端://服务器端主要函数原型:int socket(int domain, int type, int protocol);int bind( int sockfd , const ...
阅读全文
摘要:头文件:function模板库:用于替代C语言中的函数指针,它允许用户在目标的实现上有更大的弹性,即目标既可以是普通函数,也可以是函数对象和类的成员函数。注意:function模板类为C++11中的新标准,在编译时注意加上 -std=c++0x 的编译选项,适配器bind的实现:1.bind()函数...
阅读全文
摘要:一、普通函数指针我们先来看一个最简单的函数:void fool(int a){ cout #include using namespace std;void fool(int a){ cout 方式调用(pf->*pFunc2)(123124);这里我们还注意到,上述类中含有一个sta...
阅读全文
摘要:这里我们给出一个使用RTTi的例子;考虑一个类层次,我们希望为它实现 operator==相等操作符:如果两个对象的给定数据成员集合的值相同,则它们就相等。每个派生类可以增加自己的成员,当然,测试相等的时候也要包含这些数据。对于类层次中有两个类型(一个基类,一个派生类),按照一般的方法,我们就需要实...
阅读全文
摘要:类型识别分为两种:一种以编译时类型识别,一种是运行时类型识别;编译时类型识别:static_cast;运行时类型识别(RTTI),C++通过下面连个操作符提供RTTi;1)dynamic_cast操作符,将基类类型的指针或者引用安全地转换为派生类型的指针或者引用;2)typeid操作符,返回指针或者...
阅读全文
摘要:生产者,消费者问题是有关互斥锁(MutexLock)、条件变量(Condition)、线程(Thread)的经典案例;描述的问题可以叙述为 生产者往buffer中投放产品,而消费者则从buffer中消费产品。生产着消费者问题的难点在于:为了缓冲区数据的安全性,一次只允许一个线程进入缓冲区投放或者消费...
阅读全文
摘要:在实现线程的过程中,我们经常会写类似于这样的代码:{ mutex_.lock(); //XXX if(...) 语句; //XXX mutex_.unlock();}虽然这段代码是正常的加锁解锁,但是有时候我们难免会出现一些低级错误,例如把 忘了写...
阅读全文
摘要:本篇我们将讨论线程Thread的封装;一、线程类(Thread):注意:1、线程在默认情况下 是 joinable(可结合状态),需要手工调用 join函数(将其回收),也可以将其设置为detachable(分离状态),线程运行完毕后自动消亡;2、Thread类采用static函数作为 pthrea...
阅读全文
摘要:本博文讨论Linux中的条件变量Condition的封装;条件变量Condition 主要描述的是 线程间 的同步,即协作关系。Linux中的条件变量通常涉及以下几个函数:int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *...
阅读全文
摘要:本文对pthread_mutex_t 进行简易的封装;互斥锁主要用于互斥,描述的是一种竞争关系,主要是一个 一种资源或者代码, 在一段时间内 至多能被一个程序访问。而条件变量主要用于线程间同步, 描述的是一种协作关系。Linux中互斥锁的应用比较简单,通用的有以下几个函数:1 int pthread...
阅读全文
摘要:本博文我们通过三个程序比较统计词频问题的时间复杂度问题(末尾有用时及其分析);问题描述;1)、找一篇文章,将所有单词输入至程序;(The Bible Holy为例)2)、统计出每个单词的数量,即词频问题;3)、增加停用词功能;(遇到此类词,直接略过)(网上搜)4)、分别统计出读取文件并计算词频时间、...
阅读全文
摘要:本篇我们将实现Queue的简单操作;一、Queue版本1;通过本程序,我们可以看到 pop、push 、back、front、size的简单操作的实现;//Queue.hpp#ifndef QUEUE_H_#define QUEUE_H_#include template //默认的类型形参 >cl...
阅读全文
摘要:有array(数组)、smartptr(智能指针)、stack(栈);一、array:1、我们实现了指针访问和下标访问。C++中指针访问常用迭代器来代替。2、这里我们也揭示了 size_type、iterator、[] 、begin()、end()、size()的真实面目;Array.hpp 1 #...
阅读全文

浙公网安备 33010602011771号