自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 保护共享数据

在多线程环境中,读取操作(不管几个线程同时进行)共享数据不会影响到数据的,但是有一个线程或多个线程意图修改数据是,就需要一些机制来保证所有线程都正常工作。 C++中的互斥量C++标准库中提供了std::mutex来创建互斥量,调用其成员函数lock()可以对互斥量上锁,调用成员函数unlock()进行解锁。但是手动调用这两个成员函数会很麻烦,必须记住每次跳出执行流的时候调用unlock

2017-06-22 20:46:10 530

原创 线程管理基础

线程的启动线程在以初始函数(新线程的入口)构造std::thread对象时启动(注意:以无参构造函数构造的std::thread对象并不启动线程) 构造std::thread对象的三种方式使用普通函数构造void do_some_work();std::thread my_thread(do_some_work); 使用函数对象构造class backgro

2017-06-15 01:13:20 433

原创 C++11并发开篇

并发的概念:两个或更多独立的活动同时发生 假并发与真并发:1、任务切换(任务调度):此种方式发生在只有单核心单处理器的老式计算机上。依赖处理器较高的速度不停的在各种任务间切换,以实现”并发”(并不是真正意义上的并发,在任意时刻仅在执行一个任务)2、硬件并发: 此种方式发生在拥有多处理器或多核处理器的计算机上。依靠硬件的支持,能够实现正真意义上的同时执行多个任务 

2017-06-14 01:44:26 279

转载 设计模式六大原则

作者:卡奴达摩设计模式六大原则(1):单一职责原则链接:http://blog.csdn.net/zhengzhb/article/details/7278174定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障

2017-06-12 23:52:24 265

转载 设计模式开篇-不要滥用设计模式

作者:阿修罗一平链接:http://www.cnblogs.com/yiping06993010/archive/2006/10/18/532838.html设计模式总结-不要滥用模式从前年开始接触设计模式,一直都想深入设计模式的精髓,却都因为懒惰,再加上潜质不够(因为每次读完一个模式,都会有新的收获,而不能象金庸小说中的少侠,天资聪慧,绝世武功一遍搞定),还在继续努力着。 最开始读的

2017-06-12 21:46:48 1268

原创 常用的GUN二进制工具集

GNU BinutilsThe GNU Binutils are a collection of binary tools. The main ones are:ld - the GNU linker.as - the GNU assembler.But they also include:addr2line - Converts addresses into file

2017-06-12 00:21:42 762

转载 gcc常用命令选项

作者:Sunnylunch-blog链接:Sunnylunch-blohttp://blog.csdn.net/LF_2016/article/details/55532364gcc这条命令用来将源代码生成可执行程序,下面来看一下gcc的常用选项。 1、无选项编译链接 例:命令:gcc test.c //会默认生成a.out可执行程序 2、-E: 进行预处理

2017-06-11 19:13:28 385

转载 grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)

作者:Alexia(minmin)链接:http://www.cnblogs.com/lanxuezaipiao/p/3452579.html这篇长文历时近两天终于完成了,前两天帮网站翻译一篇文章“为什么GNU grep如此之快?”,里面提及到grep速度快的一个重要原因是使用了Boyer-Moore算法作为字符串搜索算法,兴趣之下就想了解这个算法,发现这个算法一开始还挺难理解的,

2017-06-11 10:57:49 337

转载 内存池技术

链接:https://www.ibm.com/developerworks/cn/linux/l-cn-ppp/index6.html本章首先简单介绍自定义内存池性能优化的原理,然后列举软件开发中常用的内存池的不同类型,并给出具体实现的实例。回页首6.1 自定义内存池性能优化的原理如前所述,读者已经了解到"堆"和"栈"的区别。而在编程实践中,不可避免地要

2017-06-09 22:28:28 241

转载 USB3.0

链接:http://blog.sina.com.cn/s/blog_86f5003c0100zu4h.htmlUSB 2.0已经得到了PC厂商普遍认可,接口更成为了硬件厂商接口必备,看看家里常用的主板就清楚了。 USB2.0的最高传输速率为480Mbps,即60MB/s。不过,大家要注意这是理论传输值,如果几台设备共用一个USB通道,主控制芯片会对每台设备可支配的带宽进行分配、控制。如

2017-06-09 19:04:31 2695

转载 各种内部排序算法复杂度的比较和排序方法的选择

链接:http://blog.chinaunix.net/uid-26565142-id-3126683.html作者:printk1986选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法:  这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡:  复杂度为O(n*n

2017-06-08 21:39:26 457

原创 基数排序

//RadixSort.h#ifndef _RADIXSORT_H_#define _RADIXSORT_H_#include #include #include #include "List\List.h"#define SIZE 15typedef int Element;typedef Element ListType[SIZE];void CreateRan

2017-06-08 20:28:35 257

原创 归并排序

//MergeSort.h#ifndef _MERGESORT_H_#define _MERGESORT_H_#include #include #include #include #define SIZE 15typedef int Element;typedef Element ListType[SIZE];void CreateRandom(ListType L

2017-06-07 21:23:02 275

转载 USB知识

转自:http://blog.csdn.net/newnewman80/article/details/6550341USB的重要关键字:1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点) 2、帧:时间概念,在USB中,一帧就是1

2017-06-07 18:17:26 550

原创 选择排序

//SelectionSort.h#ifndef _SELECTIONSORT_H_#define _SELECTIONSORT_H_#include #include #include #define SIZE 15typedef int Element;typedef Element ListType[SIZE];void CreateRandom(ListType

2017-06-06 20:35:35 242

原创 交换排序

//SwapSort.h#ifndef _SWAPSORT_H_#define _SWAPSORT_H_#include #include #include #define SIZE 15typedef int Element;typedef Element ListType[SIZE];void CreateRandom(ListType List, int n);

2017-06-04 20:19:09 291

原创 插入排序

//InsertSort.h#ifndef _INSERTSORT_H_#define _INSERTSORT_H_#include #include #include #define SIZE 15typedef int Element;typedef Element ListType[SIZE + 1]; //第0个元素用作哨兵或是辅助空间void CreateR

2017-06-04 15:02:50 245

转载 白话经典算法系列之三 希尔排序的实现

作者:MoreWindows链接:http://blog.csdn.net/morewindows/article/details/6668714希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进

2017-06-02 23:14:44 300

转载 插入排序:二路插入

作者:苏叔叔链接:http://blog.csdn.net/zhangxiangdavaid/article/details/27958143?utm_source=tuicool&utm_medium=referral在上一篇博客中:插入排序:直接插入、交换插入、折半插入。提到了三种插入排序的具体实现。不过仍有改进的地方。例如序列 2 1 3,当把1往前插入时,由于1

2017-06-02 08:39:18 358

转载 排序系列 之 折半插入排序算法 —— Java实现

作者:那一季的银杏叶链接:http://www.cnblogs.com/snowcan/p/6244361.html基本思想:  折半插入算法是对直接插入排序算法的改进,排序原理同直接插入算法:  把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素;排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的

2017-06-01 23:53:39 465

转载 白话经典算法系列之二 直接插入排序的三种实现

作者:MoreWindows链接:http://blog.csdn.net/morewindows/article/details/6665714直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 设数组为a[0…n-1]。1.      初始时,a[0]自成1

2017-06-01 21:45:34 233

空空如也

空空如也

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

TA关注的人

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