自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mymodian的专栏

因为兴趣,一点一滴,坚持

  • 博客(9)
  • 资源 (10)
  • 论坛 (2)
  • 收藏
  • 关注

原创 c++11 完全公平队列实现

有时我们的服务会从多个其他子服务接收请求,不同类型的请求频率相差比较大,如果采用一个集中的队列,对到来的各个请求排队分发处理,则会出现繁忙的请求占据了队列的大部分,比较闲的请求到达后排在队尾,很长时间才会得到处理机会,出现不必要的延迟加大。这种情况下如果要加强各类型请求的响应及时性,可以采用优先队列,按照请求类型的频率加预计排队时间指定优先级,也可以使用公平队列,公平地处理各个类型的消息。  

2016-12-28 11:10:12 1013

原创 c++11 atomic_flag实现高效的mutex

c++11线程库提供了std::mutex,方便地实现跨平台的互斥锁,提供了std::atomic模板实现原子操作。但标准中没有强制要求std::atomic模板的各种实例化保证提供的操作接口是真正的无锁实现,标准中要求保证是无锁实现的只有std::atomic_flag类,此类没有 lock unlock try_lock接口,只有test_and_set和clear。利用std::atomic

2016-12-18 16:16:04 2606 1

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

用c++11的mutex和condition_variable配合STL的queue可以很方便地实现线程安全的队列,queue用来存取元素,存取元素时用mutex进行全局加锁,存取完成再进行解锁。#include #include #include #include templateclass threadsafe_queue{public: threadsafe_que

2016-12-13 11:53:26 11615 1

原创 c++11实现写优先的读写锁

先直接贴出代码:可以看出用c++11实现读写锁变得非常简洁,在读取量非常大且写入频率很低的时候,通过一个简单的写入线程计数可以避免大量的 cond_w.notify_one();减少读取线程因此发生的切换。

2016-10-12 10:36:48 11113 6

原创 std::async 实现链式调用

c#和java中都有直接提供方法实现异步执行一个任务,并在其执行完成后执行指定的任务。然而c++11却没有直接提供类似的实现。虽然用c++98的泛型和直接使用系统线程也能实现,不过要实现好还是很复杂。现在有了c++11,就可以用其中的 std::async 和 lambda方便地实现了。    在前面的任务执行完成后,可能会返回一个值,也可能不会返回值,后续的任务虽然大部分情况都需要使用到返回

2016-07-24 22:26:45 888 1

原创 C++11 lambda使用注意

c++11开始支持了lambda,在很多地方提供了很大地便利,尤其是在STL中。但在真正弄清楚之前,不要滥用。lambda虽然方便,好用,但也有一些需要注意的地方,使用不当会造成一些奇奇怪怪的错误。其实C++11都是这样,提供了更方便的库,但是都有一些坑,不去了解就大量使用很容易掉坑。    1.lambda的捕捉方式    2.在lambda内部维护一些状态

2016-07-17 22:58:50 3300

原创 c++11 std::async使用注意

std::async,c++11中提供的异步任务高级抽象,包含在 头文件中,能让你方便的实现异步地执行一个任务并在需要地时候获取其结果。和直接使用std::thread 相比,有着一些优势:  1.std::async 返回的future对象,可以方便地等待callable对象执行完成并获取其返回值  2.能从实现库的一些高级功能中获益,比如线程池等,并大大减少异常的产生。当然其使

2016-07-17 21:34:21 11488 5

原创 windows完成端口学习总结(一)

近来仔细学习了windows的5种网络I/O模型,阻塞、选择、异步选择、事件选择都还比较好理解,编写程序也不是很难,但是完成端口模型就比较麻烦了,需要考虑很多的线程间同步问题,诸多异常情况的处理,主动和被动关闭客户端连接问题。经过接近一个来月的思考和实践,终于有了初步的实现方案,其中遇到了许多问题,走了许多的错路,吸取了许多的教训。现总结一下思路,方便以后继续完善和改进。关于一些基本的问题就不

2014-03-22 23:07:20 1279

原创 后缀树的生成——如何做到简单快速(含源码)

最近两个月一直在看JULY的“结构之法 算法之道”,链接:http://blog.csdn.net/v_JULY_v,收获颇多,在此感谢!其中一篇讲到后缀树的,http://blog.csdn.net/v_july_v/article/details/6897097,讲解了后缀树的结构特征、生成方法和一些用处,看了很久,但还是觉得其中的生成方式比较复杂,要具体实现的话,编码难度有点大,很多编程

2013-11-13 21:49:44 2058

带简单哈希表缓存的MFC本地图片查看器

用C++模板实现了一个初级的哈希表缓存,并利用这个缓存实现了快速的查看本地图片。其中用的是IPicture来显示jpg图片。

2013-05-01

IOCP服务器收发、处理数据包的简单框架

这是windows上实现的IOCP接收、处理和发送数据包的一个简单通用的框架,新建一个空项目,全部文件导入进去编译即可(需要win7及以上系统);程序比较简洁,很好理解,希望对初学者有一定的帮助。

2014-02-23

设计模式Lexi C++版

在Gof的设计模式第二章提出了文档编辑器Lexi,可一直未找到C++版本源码,这是我在Visual Studio2013下实现的C++版Lexi,实现了富文本编辑的主要编辑功能,供大家交流、学习。

2015-05-23

完全公平队列的实现

高效的完全公平队列的C++实现。

2017-02-19

摇号算法实现

摇号算法的参考实现

2017-02-19

后缀树生成方式源码

后缀树有很多的生成方式,但很多方式都比较复杂,编码难度大。这是我总结出的一种生成方式,非常好理解,初学者都可以编写出正确的代码,而且生成速度也很快。代码里有方法介绍和详细注释。

2013-11-17

pairing堆的实现参考源码

pairing堆是兼具斐波那契堆的效率和普通二叉堆的简易性的堆结构。这是参考国外资料写的pairing堆的一个参考实现。

2014-02-13

c++写的类c的解释器

用c++写的类C解释器,很多语法和C语言类似。程序实现的很轻巧,执行速度较快。可以简单修改来作为微型语言的解释器。代码中的注释不多,但是程序结构很清楚,非常容易理解,有几个示例代码,直接往exe上托就能执行。

2013-11-27

双端堆的实现,附详细算法说明

用templete实现了双端堆,有清晰的流程说明。

2013-03-14

C++ mysql_api

提供了C++版本的MySQL API封装,自动管理MySQL连接,简化MySQL的读写操作,不必再写一大堆的bind,方便读取数据集。

2018-08-05

IOCP WSASend调用返回WSA_IO_PENDDING且无法获得完成通知,客户端收不到数据

发表于 2014-05-01 最后回复 2014-05-09

图文混排编辑器Lexi实现细节问题

发表于 2012-06-01 最后回复 2014-05-01

空空如也

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

TA关注的人 TA的粉丝

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