自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Guyf的专栏

有问题可以留言讨论

  • 博客(106)
  • 资源 (18)
  • 收藏
  • 关注

原创 nodejs 设计思想杂记四 异步控制流模式

parallelvar tasks = [...];var completed = 0;tasks.forEach(function(task) {task(function() {if(++completed === tasks.length) {finish();}});async的使用 async.series(tasks, [callback])func

2016-07-07 17:15:28 865 1

原创 nodejs 设计思想杂记 三 observer模式

观察者模式:一个对象,当其状态改变时能够通知一系列的观察者。EventEmitter看图说话使用方法:var EventEmitter = require('events').EventEmitter;var eeInstance = new EventEmitter();提供有几个接口:on(event, listener): 对event与linst

2016-07-06 12:55:38 1613

原创 nodejs 单例模式实现

function Logger(name) {if(!(this instanceof Logger)) {return new Logger(name);}this.name = name;};

2016-07-06 00:12:43 3696

原创 nodejs设计思想杂技二 callback 模式

回调。。。。与return回调函数如何替代return的功能?同步的函数function add(a, b) {return a + b;}异步的函数function add(a, b, callback) {callback(a + b);}同步的函数执行后return异步的函数执行完将结果放入callback中同步

2016-07-05 23:03:25 641

原创 nodejs 设计思想杂记一 reactor模式

开始正题,reactor 模式nodejs关于异步的本质,以及隐藏在此模式背后的故事。如单进程单线程的架构、非阻塞IO。最后看下整个nodejs平台。IO很慢,相比于CPU的处理速度来说,在非密集型计算的应用场景下,IO是一个拖慢速度的瓶颈。当然,现在正火的深度学习可以一次跑上几个月。。。。这种计算密集型的应用场景下除外。一个传统的阻塞型io的例子,线程池中每个线程处理

2016-07-05 22:12:08 2504

原创 ns2 的安装

ns2 配置

2016-05-04 20:41:38 791

原创 share_ptr的线程安全读写方式

class T { public: int get() { return t; } void set(int num) { t = num; } T():t(1) {}private: int t; };std::mutex g_mut;std::shared_ptr g_ptr;void func(const std::shared_ptr& pt) { std::coutge

2016-04-13 15:46:42 1742

原创 aop之应用 时间记录器及日志

struct TimeElapsedAspect{ void Before(int i) { m_lastTime = m_t.elapsed(); } void After(int i) { std::cout << "time elapsed: " << m_t.elapsed() - m_lastTime << "ms" <<std::endl; }private:

2015-12-11 11:19:35 747

原创 c++ 面向切面变成 aop 通用模板

#ifndef AOP_h#define AOP_h#define HAS_MEMBER(member)\templatestruct has_member_##member\{\private:\ template static auto Check(int) -> decltype(std::declval().member(std::declval()...), std::tr

2015-12-11 11:17:12 1994

原创 c++11 计时器

#pragma once#includeusing namespace std;using namespace std::chrono;class Timer{public: Timer() : m_begin(high_resolution_clock::now()) {} void reset() { m_begin = high_resolution_clock::now(

2015-12-11 11:12:28 2821

原创 对象池 c++11

#ifndef COBJECTPOOL_H#define COBJECTPOOL_H#include #include #include #include const int maxObjectNum = 10;templateclass ObjectPool { template using Consturctor = std::function(Args...)>;pub

2015-12-10 21:11:17 1146

原创 使用函数包装器的 通用泛化的命令类

//#ifndef COMMCOMMAND_H#define COMMCOMMAND_H#include#includetemplate class CommCommand{private: std::function m_f;public: //接受可调用对象的函数包装器 template::value>::type> void Wrap(F &&f, Args &

2015-12-10 16:57:31 945

原创 std::forward 完美转发

templateinline auto FuncWrapper(Function &&f, Args &&...args){ return f(std::forward(args)...);}void hello(){ std::cout << "hello" << std::endl;}void hello1(std::string x){ std::cout << x

2015-12-10 16:23:01 640

原创 c++ final关键字

final关键字来限制类不能被继承,或者虚函数不能被重写。class A final {virtual void hehe() final;};如此,class A不能被其他类集成,hehe()函数也不能被重写

2015-12-08 14:19:06 2808

原创 c++ weak_ptr

weak_ptr是用来监视shared_ptr的,不会使引用计数增加。 std::shared_ptr t(new int(10)); std::weak_ptrwk(t); if(wk.expired()) std::cout<<"t is expired"<<std::endl; else std::cout

2015-12-08 13:40:26 468

原创 c++ tuple的基本操作

//create tuple std::tuple tp = std::make_tuple(2,2); int a,b; //get the value of tp std::tie(a,b) = tp; std::cout<<a+b<<std::endl; a = 0; //only get one value of tp std::tie(a,std::ignore) = t

2015-12-07 14:43:55 1858

原创 c++ lambda表达式捕获变量参数

[]不捕获任何变量[&]捕获外部作用域中所有变量,并作为引用在函数体重使用[=]捕获外部作用域中所有变量,并作为副本在函数体重使用[=,&foo]捕获外部作用域中所有变量,并作为副本在函数体重使用,对于foo按引用捕获[foo]当作副本捕获foo,不引入其他变量[this]捕获当前类中的this指针,让lambda表达式拥有和当前类成员函数同样的访问权限。如果已经使用了&或者=

2015-12-07 14:16:12 6485

原创 c++ std::bind 基本用法

#include void hello(int a){std::cout<<a<<std::endl;}void call_when(int x,const std::function &f){if(x == 0) f(x);} auto pt = std::bind(hello,std::placeholders::_1); call_when(0,pt);

2015-12-07 13:57:21 738

原创 c++ std::function作为参数传入函数

#include void hello(int a){std::cout<<a<<std::endl;}void call_when(int x,const std::function &f){if(x == 0) f(x);} call_when(0,hello);需要头文件functional,在std::function作为参数使用时,必须加con

2015-12-07 10:26:56 9101

原创 c++ 可调用对象

可调用对象分为如下几种:1 函数指针2 具有Operator()成员函数的类对象3 可被转换为函数指针的类对象4 类成员函数指针函数指针即函数的名字,直接调用即可具有operator成员函数的类对象,如下例所示:class foo{public: void operator()(void) {}};调用时:foo f;f();类的函数指

2015-12-07 10:16:56 550

原创 c++11,for,for each,std::for_each的应用

// cpp11exercise.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include void hello(int a){std::cout<<a<<std::endl;}int _tmain(int argc, _TCHAR* argv[]){ std::vector vv ; vv.

2015-12-04 19:36:22 12821

翻译 软件架构所要考虑的因素

2015-12-02 11:31:44 653

原创 在一个多线程系统中,主进程应该写什么?

在一个多线程的系统中,主线程应该不占资源,而且不应该结束。遵循此原则,在c++的系统中,用c++11的代码实现在主线程中等待主线程被唤醒,且不结束。#include #include std::mutex m_wt; std::unique_lock lk(m_wt); std::condition_variable wt;//在主线程结束之前 wt.wait(lk);

2015-12-02 10:52:13 1051

原创 c++ 并发系统访问 测试 调试方法/策略

如果在单核系统中没有错误,但是在多核系统或多处理器中出错,可能是竞争条件错误或者同步、内存顺序错误。测试实例的应用场景:1、在一个线程自身队列上调用push()或pop()来验证该队列工作基础级别2、在一个空队列上一个线程调用push(),另一个线程调用pop()3、在一个空队列上多个线程调用push()4、在一个满队列上多个线程调用push()5、在一个空队列上多个线程调

2015-12-02 10:32:58 567

原创 c++11,线程池之二--有等待线程池中任务完成功能的线程池

#include #include #include #include #include #include class function_wrapper{ struct impl_base { virtual void call()=0; virtual ~impl_base() {} }; std::unique_ptr i

2015-11-28 19:55:05 1074

原创 c++11 线程池系列之一 所需要的join_threads

class join_threads{std::vector &threads;public: explicit join_threads(std::vector &threads_):threads(threads_){} ~join_threads() { for(unsigned long i = 0 ; i < threads.size();++i) { if(threa

2015-11-28 16:52:19 2018

原创 c++11 线程池系列之一 所需要的thread_safe_queue

templateclass thread_safe_queue{private: mutable std::mutex mut; std::queue> data_queue; std::condition_variable data_con;public: thread_safe_queue(){} thread_safe_queue(thread_safe_queue con

2015-11-28 16:50:59 4057

原创 c++11 线程池系列之一 最简单的线程池

线程池最简单的形式是含有一个固定数量的工作线程来处理任务,典型的数量是std::thread::hardware_concurrency().当有任务要处理时,调用一个函数将任务放到等待队列中。每个工作线程都是从该队列中取出任务,执行完任务后继续从等待队列取出更多的任务来处理。在最简单的情况,没有办法来等待一个任务完成。如需要这样的功能,则需要用户自己维护同步。下面上代码class t

2015-11-28 16:48:59 2866

原创 c++11,std::find的并行化模板化

#include templateIterator parallel_find_inter(Iterator first,Iterator last,MatchType match,std::atomic& done){try{ unsigned long const length = std::distance(first,last); unsigned long const mi

2015-11-28 11:05:38 837

原创 c++11,for_each的并行化,改写模板

template void parallel_for_each(Iterator first,Iterator last,Func f){unsigned long const length = std::distance(first,last);if(!length) return;unsigned long const min_per_thread = 25;if(len

2015-11-28 10:48:35 1212

原创 udp打洞,c++实现,Nat

#pragma once#include // 定义iMessageType的值#define LOGIN 1#define LOGOUT 2#define P2PTRANS 3#define GETALLUSER 4// 服务器端口#define SERVER_PORT 6060// Client登录时向服务器发送的消息struct stLoginMessage{

2015-11-28 10:29:23 2354 1

原创 c++11baohan线程安全的队列

#include "stdafx.h"#include #include #include #include templateclass threadsafe_queue{private: mutable std::mutex mut; std::queue> data_queue; std::condition_variable data_con;public: th

2015-11-27 22:44:24 661

原创 c++11 packaged_task 用法,将任务打包

#include std::mutex m;std::deque> tasks;templatestd::future post_task(Fun f){std::packaged_task task(f);std::future ret = task.get_future();std::lock_guard lk(m);tasks.push_back(std::move(tas

2015-11-27 16:49:34 2194 1

原创 c++11 async 的自带参数使用

class X{public: int foo(int a,std::string const& b){std::cout<<a<<std::endl<<b<<std::endl;return 3;} std::string bar(std::string const& a){std::cout<<a<<std::endl;return a;}}; X x; //在新线程中运行

2015-11-26 21:21:57 1073

原创 c++11使用 async异步函数并传递参数以及auto的使用方法

class X{public: int foo(int a,std::string const& b){std::cout<<a<<std::endl<<b<<std::endl;return 3;} std::string bar(std::string const& a){std::cout<<a<<std::endl;return a;}}; X x; //传入x是传入x的副本

2015-11-26 21:07:51 4749

原创 c++11 async启动异步任务的使用方法

#include std::future theAnswer = std::async(ihello); std::cout<<theAnswer.get()<<std::endl;当调用get()时,线程会阻塞直到异步线程结束。

2015-11-26 20:21:09 1716

原创 c++11future简单使用及介绍

唯一future:std::future此实例是仅有的一个指向其关联事件的实例,类似std::unique_ptr.共享future:std::shared_future多个实例可指向一个事件 。两种future变为就绪状态后无法恢复future本身非线程安全的,需要用户本身实现访问时的线程安全。

2015-11-26 20:13:51 1674

原创 c++11线程安全的队列的类的定义

#include #include #include #include templateclass threadsafe_queue{private: mutable std::mutex mut; std::queue data_queue; std::condition_variable data_con;public: threadsafe_queue(){} t

2015-11-26 16:46:56 1918

原创 c++11condition_variable的wait与lock类型的匹配

wait与std::unique_lock搭配使用,std::lock_guard并不提供与wait搭配使用的灵活性。

2015-11-26 16:22:37 1639

原创 c++11conditon_variable的wait在类中的等待条件

class X{data_con.wait(std::mutext,[this]{return xx;};};

2015-11-26 16:19:01 1699

线程池,c++11,跨平台,支持vs12,g++最新的编译器,高效

c++11写的线程池,应用了c++11的新特性,对线程可接受任意可调用地址,可返回线程执行结果,具体文档见博客:http://blog.csdn.net/ozuoqi/article/details/50084691

2015-12-04

RFC3550_RTP协议中文版

RFC3550_RTP协议中文版

2015-09-22

算法导论试卷

某高校的研究生算法导论期末考试试卷,可以参考一下

2015-01-25

某高校信息检索课件及project及爬虫

某高校信息检索课件及project,很全的

2015-01-25

研究生数据库课件

国内某高校研究生课程,数据库的所有课件及作业project等。不适合入门使用

2015-01-25

某高校研究生课件计算机体系结构 量化研究方法

计算机体系结构 量化研究方法(第四版-英文版) 某高校研究生课件计算机体系结构 量化研究方法 可以参考一下

2015-01-25

计算机体系结构 量化研究方法(第四版-英文版).

计算机体系结构 量化研究方法(第四版-英文版).还有中文版的及答案,欢迎下载

2015-01-25

计算机系统结构——量化研究方法(第四版)答案英文版

计算机系统结构——量化研究方法(第四版)答案英文版.部分有些许错误,自行改正。。

2015-01-25

[中文版][第四版]计算机系统结构:量化研究方法

[中文版][第四版]计算机系统结构:量化研究方法,书本电子版,还有配套的答案在另一个连接里

2015-01-25

某C9高校机器学习的课件,ppt

某C9高校研究生课程的课件,机器学习课件,同考试复习资料共同发布,需要的可以下载

2015-01-25

某高校机器学习复习资料

某高校机器学习的期末考试复习资料,适合研究生阶段的复习及自我测试,有实体及答案

2015-01-25

Transact-SQL语句基础

(1)掌握利用各种数据类型声明局部变量的方法 (2)掌握为局部变量赋值的两种方法 (3)掌握常用系统函数、运算符和表达式的功能和应用 变量的应用 利用Transact-SQL语句声明一个长度为16的nchar型变量bookname,并赋初值为”SQL Server 数据库编程”。 运算符的应用,使用teaching数据库 查询生日在’1989-01-01’之后的学生信息; 3)系统函数的应用 编程计算任意两个日期的时间差,分别输出年,月,日的差值。 (4)编程求50到100之间多有能被3整除的奇数之和。(5)编写程序,根据姓名查询teaching数据库中学生的基本信息和选课信息,学生姓名通过变量输入。对于不存在的学生姓名输入值,打印提示信息。6)编写程序,查询所有学生选修课程的期末成绩和对应等级,如果学生为选修任何课程则输出提示信息。成绩和等级对应关系:final<60:‘不及格’;final>=60:‘及格’; final>=70:‘中’final>=80:‘良’;final>=90:‘优’。外连接使用LEFT JOIN实现。

2014-12-26

机器学习 第四章部分答案

机器学习的作业,第四章,部分答案。可以参考一下

2014-12-26

凸多边形三角划分

算法的project,凸多边形三角划分。 代码c++编写 ,vc6编译。有mfc的画图,也是vc6. 有详细的文档报告。

2014-12-26

rtp实现C 语言

rtp协议的c语言实现demo,有具体的样例,编译后直接执行即可

2014-11-16

信息检索导论答案 introduction to information retrieval

信息检索导论书答案 the answer about the book named introduction to information retrieval

2014-09-16

哈尔滨工业大学计算机研究生课程表

哈工大计算机研究所课表

2014-09-16

建立安卓可以使用的wifi的批处理文件

建立安卓可以使用的wifi的批处理文件,需要在本地网络点击右键,选择共享网络,再运行本批处理文件。默认半夜两点自动关机哦

2014-09-16

空空如也

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

TA关注的人

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