git用法
摘要:装了一个git extensions。在gitignore中已经忽略了.sdf文件,但是.sdf文件还是被上传了。《-----------------是先被上传了,然后再设置的gitignore,由于以被vs打开所以本地文件无法删除,也就无法commit到github1.如何在git extensions中删除github的文件删除sdf文件:解决方法:关掉vs直接删除sdf文件,然后commit就行
阅读全文
智能指针的实现
摘要:智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;调用析构函数时,构造函数减少引..
阅读全文
windows多线程编程速记(一)
摘要:一.几个基本概念1.内核对象内核对象(kernel object)是一个由操作系统内核创建并只能由操作系统内核访问的数据结构。例如:文件映像,IOCP端口,作业对象等。2.句柄由于内核对象的数据结构只能由操作系统内核去访问,所以应用程序不能直接在内存中定位并修改这些对象,只能通过windows api去操作这些对象。在每一个内核对象被创建的时候,我们都可以得到一个唯一标识该内核对象的句柄值(HANDLE)。也就是通过这个句柄,然后调用一些API函数,对这个句柄所标识的内核对象进行访问和修改,这个句柄称为“内核对象句柄”,相当于内核对象的“身份证”。在32位系统中HANDLE为32位,64位系统
阅读全文
信号量
摘要:一、关于信号量1、在信号量中有一个内置的计数值,用于对资源进行计数;同时它通过内置的互斥机制保证在有多个线程试图对计数值进行修改时,在任一时刻只有一个线程对计数值进行修改。2、信号量的两个核心操作是Up操作(提高计数值)和Down操作(降低计数值):1)Down操作:检查信号量的计数值是否大于零1》若大于零,信号量的计数值减一(即用掉了一个信号量计数了),线程继续运行;2》若等于零(也就是线程不能获得所需的信号量了),于是进入睡眠状态。Down操作的原子性保证了一旦一个线程对信号量的操作开始,其他线程就不能访问,知道操作完成或阻塞。2)Up操作用于线程释放对信号量的所有权,提高信号量的计数值。
阅读全文
快速排序
摘要:1.如果待排数组array的大小是0或1则结束递归返回这个数组。2.从数组中选择一项作为基准项,把剩下的元素分成2个不相关的组。比该数据小的数据排列在左边,比该数据大的数据排列在右边。SmallThanPivot = {所有<pivot的元素} LargerThanPivot = {所有>pivot的元素}3.返回重排后的列表,重复前面的过程分别对左边和右边的序列进行快速排序。QuickSort(SmallThanPivot);Pivot;QuickSort(LargerThanPivot);75,70,65,84,98,78,100,93,55,61,81,68 //选取75为基
阅读全文