- 博客(31)
- 资源 (1)
- 收藏
- 关注
转载 Ruby读取二进制文件
贴上一段代码,用Ruby读取BMP图像的,以作备忘。其中,sysread方法中的参数表示读取的字节数。bmp_read_file = File.open("E://test_example//C++.bmp","rb") write_file = File.new("E://test_example//target","wb") while true begin
2015-02-28 17:04:17
1893
转载 排序算法性能与使用场景总结
按平均时间将排序分为四类:(1)平方阶(O(n2))排序 一般称为简单排序,例如直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlgn))排序 如快速、堆和归并排序;(3)O(n1+£)阶排序 £是介于0和1之间的常数,即0(4)线性阶(O(n))排序 如桶、箱和基数排序。各种排序方法比较简单排序中直接插入最好,快速排序最快,当
2014-03-11 21:35:30
1455
原创 什么是回调函数
通常在我们所写的应用程序中,会调用WinAPI函数,在调用传参时,传入一个函数名,也就是一个函数地址,这个函数地址其实就是回调函数的地址。回调函数是我们自己所写,由WinAPI调用。在WinAPI执行时,如果发生某种情况,就会调用我们传入的这个函数。 所谓的回调就体现在:原来是由我们程序员调用别人写好的底层WinAPI函数,现在是由底层WinAPI调用我们所写的函数。
2014-02-19 16:13:00
904
原创 经典线程同步问题(三)
问题:有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空。现要让四个文件呈如下格式:A:1 2 3 4 1 2....B:2 3 4 1 2 3....C:3 4 1 2 3 4....D:4 1 2 3 4 1....请设计程序。#include /*整体思想如下:关键段实现对
2014-02-08 12:06:45
852
原创 经典线程同步问题(二)
问题:编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。解答:在这里我们将题简化为循环打印5遍HANDLE g_eventA;HANDLE g_eventB;HANDLE g_eventC;unsigned int __stdcall threadFun
2014-02-07 11:08:55
779
原创 经典线程同步问题(一)
问题:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。 解答:这里我们讲题简化为 “子线程循环2次,接着主线程循环 4次,接着又回到子线程循环 2次,接着再回到主线程又循环 4 次,如此循环5次,试写出代码”HANDLE g_eventMain;HANDLE g_eventSon;
2014-02-07 09:56:52
806
原创 Python学习笔记[2]
【备注:本文是学习http://blog.youkuaiyun.com/ithomer/article/details/8907268过程中记下的笔记】【EX:所注为代码示例】【Tips:所注为标识,可能是一个小技巧】一、进阶08 异常处理 类似于C++中的异常处理一样 具体过程如下: try -> func() ->except somecase: -> except -> else
2014-01-10 12:18:49
967
原创 C++实现各种基础排序(冒泡、选择、快排、插入、堆排、希尔、归并)
#include "sort.h"/*-----------------交换类排序------------------------------*///冒泡排序bool BubbleSort(int arr[],int len){ if (arr == NULL) { return false; } bool bDone = true; //一个标记,只有当
2014-01-09 17:12:06
977
原创 Python学习笔记[1]
【备注:本文是学习http://blog.youkuaiyun.com/ithomer/article/details/8907268过程中记下的笔记】【EX:所注为代码示例】【Tips:所注为标识,可能是一个小技巧】一.进阶05 循环设计 1.range()的应用 EX:>>> m = [1,2,3,4,5,6] >>> for i in range(0,len(m),
2014-01-09 14:23:57
1734
原创 C++中对Lib及Dll的链接调用
首先介绍静态链接库*.lib的链接Step1.创建一个lib文件//lib.h#ifndef _LIB_H#define _LIB_Hint add(int a = 0,int b = 0);#endif//lib.cpp#include "lib.h"int add(int a,int b){ return a+b;}Step2.在main函数
2014-01-08 18:21:08
2656
原创 TinyXML来操作XML文件(C++)<二>
在上一篇文章《TinyXML来操作XML文件(C++)》我们练习了创建XML、读取XML的方法,在本文中我们继续学习XML文件的增删改操作:包括读取声明、读取某结点文本属性、删去某结点、修改结点属性文本,增加结点操作读取XML声明:void ReadDeclaration(char *FileName,string& version,string& standalone,string& e
2014-01-08 17:34:14
1042
原创 python学习笔记[0]
Python是一个面向对象开发语言,大部分情况下被用来作脚本的开发,所以也有一大部分的人说他是脚本语言Python的优点:高质量 高效率————不用像C C++静态语言一样,进行编译连接,直接可以运行 可移植————适用于各种平台linux windows Mac Unix android等,可直接将这个平台的程序拷贝到另一个平台运行
2014-01-08 16:20:12
1386
原创 TinyXML来操作XML文件(C++)
XML文件 (Extensible Markup Language可扩展标记语言)1) 元标记语言,所谓“元标记”就是用户可自定义,而HTML是预定义的,不允许自定义2) 语义/结构化语言,可描述文档的结构和语义3) 数据交换,因为它是跨平台的,跨系统、跨应用程序,所以就可以将这个数据很方便的将一个数据在两个应用程序间交换4) 结构化数据,可以定
2014-01-03 23:22:01
1032
转载 检测内存泄露
C++程序的复杂性很大一部分在于他的内存管理,没有C#那样的垃圾回收机制,内存管理对初学者来说很困难。经常会出现内存泄露的情况。那么我们写程序如何避免内存泄露呢?首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。本文描述了如何检测内存泄露。最主要的是纯C,C++的程序如何检测内存泄露。现在有很多专业的检测工具,比如比较有名的BoundsCheck,
2014-01-01 16:12:35
753
原创 我的2013总结
在2013年的最后一天来总结我自己,心情是沉重的。说来这一年快也不快,经历了很多事情,角色的转变,居住地的转变,原来觉得很遥远很期待很紧张的一系列事情就这么仿佛看了一部电影的时间就过去了。按时间线来回忆,让这一切种种再回放一遍: -------------------------------------------------------------------------------
2014-01-01 09:47:59
765
原创 默认构造函数
今天看C++Primer时,对它所讲的默认构造函数觉得有些疑惑,尤其是“每一个类必须有一个自己的默认构造函数”,我就郁闷了,如果我定义类的时候都有参数给进传也要写吗? 于是,整理了下默认构函数的事情: Q1.什么是默认构造函数? A1.默认构造函数就是形如构造函数无参数列表或者参数有给定的默认值,在定义对象时,如果没有显式调用某个带参构造函数,就会调用这个默认构
2013-12-28 12:50:30
844
原创 内存池?进程池?线程池?
内存池平常我们使用new、malloc在堆区申请一块内存,但由于每次申请的内存大小不一样就会产生很多内存碎片,造成不好管理与浪费的情况内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。进程池&&线
2013-10-05 22:45:44
5063
转载 核心态与用户态
究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子:1)例子C代码1. voidtestfork(){2. if(0==fork()){3. printf(“createnewprocesssucce
2013-10-05 21:23:44
1282
原创 多线程同步
我们来一起理一理什么是线程、线程与进程的区别、什么是多线程、线程同步又是什么、线程同步的方法 一、什么是线程?在多任务环境下,进程与进程间要不断进行切换,而进程是拥有资源与独立调度的基本单位,所以在晋城不断切换是其所拥有的资源会浪费处理剂时间、空间开销。为了减少处理机空转时间、切换时间与空间开销我们引入了“线程”,以提高CPU的利用率与并发性“线程”是处理机进行调度与处理的基本
2013-10-05 21:02:19
1180
原创 进程同步
进程同步体现在两个方面:①直接制约关系:共享某个临界资源②间接制约关系:各进程、线程间按某个规定的顺序执行;同步机制遵循的准则:1)空闲让进2)忙则等待3)有限等待4)让权等待解决同步问题用到的两种机制:Ⅰ、信号量机制 P V操作1)解决互斥问题 mutex Mutex初值为1 进程A要访问临界资源必须先
2013-10-05 16:23:23
1198
原创 有关数据库范式
数据库范式范式用于规定关系数据库表结构的一种规范,以减小数据的冗余。范式主要有以下几种:BCNF范式∈第三范式∈第二范式∈第一范式它们之间是一个子集关系,满足第二范式必满足第一范式 下面就来仔细说说这些范式:一、 第一范式通俗的说就是数据库中不能表中有表,某一列中不能再嵌套其他列,请看下面这个表结构学号姓名
2013-10-03 17:16:10
754
原创 死锁的产生与处理
死锁 进程间通信已达到资源的共享,既然有限的资源供给多个进程,必然会造成资源的竞争,这种进程间由于竞争资源或者进程间推进顺序不当就会产生死锁。死锁产生的必要条件有四:1)互斥条件:所请求的资源是互斥的2)请求和保持:当A进程请求某资源即使失败也不会释放自己已拥有的资源3)不剥夺条件:A进程在其未执行结束前不得被其他进程剥夺资源4)环路等待条件:发生死锁时,必存在一个环路
2013-10-03 14:50:00
969
原创 进程间通信
进程间通信 何为通信?就是进程间传播交换信息 ?进程通信的目的 答:1)数据的传输:A进程发送数据给B进程 2)共享数据 3)通知事件:A进程通知B进程某事件发生了 4)资源共享:多进程共享同一资源Ex:打印机 5)进程控制进程间通信的主要方法有:管道、共享内存、信号、信号量、套
2013-10-03 13:58:16
955
原创 C++智能指针auto_ptr
C++ auto_ptrC++提供的auto_ptr是一种智能型指针,帮助程序员防止“被异常抛出时发生资源泄露”这个指针要保证无论在何种情况下,只要自己被摧毁,就一定连带释放其所控制的空间该指针要求对象只有一个拥有者,严禁一物二主 注意:std::auto_ptrptr1(new ClassA)是正确对智能指针的初始化std::auto_ptrptr2= newClas
2013-10-01 11:30:43
1012
原创 《程序员面试宝典》中所遇到的疑惑与解答
1.P47 问题5.4float f = 1.0f,为什么在内存中是0x3f80 0000???答:这主要归结于float类型变量的存储符号位阶码位尾数位1823以上表格就是float类型变量在内存中存储结构其中1、8、23代表占了多少位。EX100.0f,在内存中怎么表示呢?step1.将100.f表示为二进制11001
2013-09-30 13:26:12
1410
原创 C++多态
C++里的多态性主要有四种:1)重载多态--------发生于同范围内,函数名相同,参数不同2)包含多态--------“虚函数”实现的多态,发生于派生类与基类3)强制多态--------为完成某功能进行类型的强制转换4)参数多态--------“模板”反映的一种多态 这里我们主要讨论的是包含多态,后面就简称为多态。 多态的表现就是同一个消息会引发不同的行为,实
2013-09-29 22:51:03
1097
原创 苦逼码农学英语
(以下所述均为摘抄,作者微博:@老码农的自留地 )1.一个高端大气、是可遇国际化接轨的码农对应于的要求是熟练掌握英语,而熟练掌握英语的标准是:•阅读:能够直接阅读英文文档,比如《MongoDB: The Definitive Guide》,并且阅读速度和理解程度都能与母语相当;•写作:能够直接编写英文文档、邮件,达到英语母语人士能够无歧义理解的程度,学有余力的同学可以追求逻辑严密和用词严谨;•听说
2013-09-29 11:57:30
1086
原创 Windows中的消息到底是什么??
1.Windows程序是一个多任务交叉进行处理的系统,借助消息传送进行管理,EX:鼠标单击事件、敲击键盘事件为了能统一标示不同外设发出的消息从而方便OS进行处理,windows需要把这些不同的消息转换成统一的格式----即“消息”(Message)2.消息是一个构体,其成员有“欲送达窗口的句柄、消息的代号、携带的参数说明、时间、鼠标点击位置”注意:消息到达的目标地方是窗口而不是程序3.因为在程序运
2013-09-29 11:57:28
987
原创 句柄小悟
句柄是一个32位的整数,用来标识windows内部各个对象在内存物理地址列表的整数索引,相当于指针的指针;因为windows是一个以虚拟内存为基础的操作系统,在这种系统中,经常会在内存与外存中来回变换,因而对象的实际地址也是不断变化的,无法像指针一样,仅通过一个简单地指针,访问到对象;OS为每个应用程序开出一些空间来登记各对象在内存中的地址变化,这个空间的地址是不变的,当对象地址发生变化时,告知该
2013-09-29 11:57:26
713
原创 C++类的内存布局
昨天面试去哪网,考官问了C++类的内存布局,不是很懂,下来赶紧整理整理。 首先纠正一个错误:以前总是觉得类的大小就是sizeof(class A)的大小,直到刚才才明白是错的,我们定义了一个类,只是定义了一个类型,就像int是一样的,难道你要说int的大小的4吗,只能说int 类型的变量占4个字节。以此类推下来,只有当一个类被实例化时才会为该对象分配空间,所以sizeof(classA)
2013-09-29 10:15:07
1062
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人