雕刻时光

just do it……nothing impossible
随笔 - 547, 文章 - 0, 评论 - 82, 阅读 - 86万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

11 2013 档案

摘要:1.self类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)——这就是self的原理了。观察如下代码: 阅读全文

posted @ 2013-11-30 20:52 huhuuu 阅读(252) 评论(0) 推荐(0) 编辑

摘要:1.人类及动物的学习模式:观察->学习->技能机器学习的模式:data->ML(机器学习)->skill2.那什么是skill:技能是某种表现方法的增进 eg:stackdata->ML->more investment gain3.为什么需要机器学习而不是简单的定义:因为现实中的问题往往比较复杂,不能简单的定义。eg:怎么定义一棵树,只能learn from data.4.碰到问题了,判断是否可以运用机器学习,三个方面来判断: 1):pattern:是否存在一些潜在的模式(表现方法可以增进eg:预测股市) 2):definition:潜在的模式不容易被定义 阅读全文

posted @ 2013-11-30 17:44 huhuuu 阅读(414) 评论(0) 推荐(0) 编辑

摘要:1.函数的动态重载def func(a, b = 5, c = 10): print("a is", a, "and b is", b, "and c is", c) func(3, 7)func(25, c = 24)func(c = 50, a = 100)func(50, c = 100,b=109)这个深深的冲击力我以前的语言观!动态语言果然跟静态语言不一样= =2.函数的返回值def func(a, b = 5, c = 10): print("a is", a, "and b is" 阅读全文

posted @ 2013-11-30 11:15 huhuuu 阅读(397) 评论(0) 推荐(0) 编辑

摘要:C++的特性之一就是多态,多态的特性就是通过虚函数来实现的,而虚函数就是通过一个虚函数表来实现的。 (关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。) #include using namespace std;class Base1 {public: virtual void f() { cout << "Bas 阅读全文

posted @ 2013-11-29 22:32 huhuuu 阅读(414) 评论(0) 推荐(0) 编辑

摘要:可能指针函数与函数指针的概念不是很清楚1.指针函数的概念其实跟普通函数的概率类似,就是一个函数的返回值是个指针类型!#include#includeusing namespace std;int *pointFun(){ int *p=(int *)malloc(sizeof(int)); *p=1; return p;}int main(){ int *ptemp=pointFun(); printf("%d\n",*ptemp);}2.函数指针还是比较有来头的观察以下函数#include#includeusing namespace std;void myfu... 阅读全文

posted @ 2013-11-29 21:55 huhuuu 阅读(1936) 评论(2) 推荐(0) 编辑

摘要:#include#includechar s[123]={"1233232"},str[123];char* strcpy(char *to,char *from){ if(NULL==to||NULL==from) //不检查指针的有效性,说明答题者不注重代码的健壮性。 throw "point error"; //应该以抛出异常来代替返回值,这样可以减轻调用者的负担、使错误不会被忽略、增强程序的可维护性。 int i; for(i=0;from[i]!='\0';++i){//直接使用字面常量(如本例中的0)会减少程序的可维护性 to 阅读全文

posted @ 2013-11-28 22:24 huhuuu 阅读(799) 评论(0) 推荐(0) 编辑

摘要:在现实地图应用中,有个比较常见的问题,比如,你到了一个地方,想查查附近1km内有什么饭店。 这时地图应用就可以马上查询出周围有什么饭店,如果让你设计,你会怎么设计。假设局限在中国的地图上,共有1000000(用N表示)家饭店,每个饭店就2个信息量(经度x与纬度y),你现在到了某个地方(三个信息量,经度x2与纬度x2,还有以你为中心圆的半径 R个单位),假设这些数据在内存中是有序的,并且在小范围内点与点的信息存在邻接表内。 方法一:枚举,这个通过你所在的坐标与N个饭店进行比较,在R范围内的就输出,反之不输出。时间复杂度O(N),当饭店数量很大的时候,搜索速度就会很慢。 方法二:考虑到数... 阅读全文

posted @ 2013-11-27 21:58 huhuuu 阅读(762) 评论(0) 推荐(0) 编辑

摘要:转自http://www.cnblogs.com/coder2012/p/3330311.htmlhttp://blog.sina.com.cn/s/blog_6776884e0100ohvr.html这篇在大体上比较清晰简单的描述了概念,比较通俗易懂B-tree B-tree,B是balance,一般用于数据库的索引。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。而B+tree是B-tree的一个变种,大名鼎鼎的MySQL就普遍使用B+tree实现其索引结构。 那数据库为什么使用这种结构? 一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索.. 阅读全文

posted @ 2013-11-26 10:24 huhuuu 阅读(2545) 评论(0) 推荐(0) 编辑

摘要:一个进程相当于你写了的一个程序正在内存中运行,而这个进程内至少有一个主线程,C++就是main(),还有辅助线程,当然一旦主线程结束了,辅助线程就都结束了,这样就可以比较清晰地理解,进程是资源分配的基本单位,而线程,是共用进程中的资源的,同时操作系统就给了进程一部分内存堆和cpu处理的时间。 下面的函数可以观察两个辅助线程的运行情况 下面的程序有两个辅助线程,没有临界资源#include #include#include#include#include#include#include#include #includeusing namespace std;DWORD WINAPI Fu... 阅读全文

posted @ 2013-11-25 22:32 huhuuu 阅读(412) 评论(0) 推荐(0) 编辑

摘要:1.有一组无序的数,只能两两相邻交换,最少交换几次可以使数组有序 由两两相邻交换考虑到逆序数,这个问题就转化到了逆序数一共有几对。 对于逆序数对数的计算,普通的有O(n*n)的算法,当然可以通过树状数组优化N*log(N)2.有一组无序的数(数字两两不相等:如3 1 1 1就不行),可以任意相互交换,最少交换几次可以使数组有序 问题其实可以转化到选择排序,比如 6 2 1 3 4,第一次将最小的取出放到第一位,如果最小的本来就在第一位,步数就不变,反之加1后交换位置 1 2 6 3 4,后面依次进行 O(n*n)的方法#include#include#includeusing namespac 阅读全文

posted @ 2013-11-25 20:29 huhuuu 阅读(762) 评论(0) 推荐(0) 编辑

摘要:之前写了一篇堆栈的,这里再补充下内存其他的区域1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放 , 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域(BSS)。 - 程序结束后由系统释放 4、文字常量区 — 常量字符串就是放在这里的。 程序结束后由系统释放 阅读全文

posted @ 2013-11-24 16:38 huhuuu 阅读(11282) 评论(2) 推荐(3) 编辑

摘要:先观察一下的代码:#includeint main(){ const int i=1; int y; int *pi=(int*)&i; *pi=2; y=*pi; int tempi; tempi=i; printf("i=%d\n",i); printf("tempi=%d\n",tempi); printf("y=%d\n",y);}输出的是i=1tempi=1y=2观察内存在执行完*pi=2后i被神奇的修改了,但是tempi=i 后 tempi 依旧1这时观察汇编你惊奇地发现,在编译成汇编的时候,temp=i 压根就没 阅读全文

posted @ 2013-11-24 11:14 huhuuu 阅读(1807) 评论(2) 推荐(0) 编辑

摘要:1.动机:前段时间,一直有个疑问,就是编译器是从哪里知道数据的类型的,数据的类型是存在内存里面的么,因为自己调试编译器,发现内存中并没有多余的数据,后来在群上发问,才知道数据在编译成汇编的过程就知道数据的类型了,也就是数据的类型识别时在内存代码区里 观察代码#include#includestruct data{ short a; long b; long long c; float e; double f; double g; bool h; char i;};int main(){ data temp; temp.a... 阅读全文

posted @ 2013-11-24 10:26 huhuuu 阅读(923) 评论(0) 推荐(0) 编辑

摘要:1. 出现字节对齐的动机:cpu的效率,内存的节省 话说第一次碰到字节对齐的时候是在今年六月实习的时候,有一次我在调用一个接口,把数据从那个借口复制过来,但是在那个借口的时候参数是正确的,一旦复制出来以后,参数就出错了,找了好久,后来大牛过来找了找,原来是在接口的时候数据是按一个字节对齐,接受的数据是取消指定对齐,所以就出问题了。 一般在内存充裕的时候我们是取消指定对齐的,因为这可以加快CPU的寻找数据的时间,因为 (比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那 么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就... 阅读全文

posted @ 2013-11-23 19:11 huhuuu 阅读(2123) 评论(0) 推荐(0) 编辑

摘要:一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字常量区 —常量字符串就是放在这里的。 程序结束后... 阅读全文

posted @ 2013-11-23 11:58 huhuuu 阅读(321) 评论(0) 推荐(0) 编辑

摘要:最近写hashtable的实现的时候用模板类的思想,在普通int,long,double类型的时候测试时没问题的,当用到string的时候,一直有问题。 实现的equal函数是比较粗暴的使用两者所有对应内存字节是否相似来比较的。 bool equal(T a,T b){//用内存中字节的方法判断这块内存的对象的值是否相等,这样就不用关心结构内部的数据类型了 char *aCurret,*aEnd,*bCurret; aCurret=(char *)&a; aEnd=aCurret+sizeof(T); bCurret=(cha... 阅读全文

posted @ 2013-11-22 21:56 huhuuu 阅读(2396) 评论(0) 推荐(0) 编辑

摘要:1. 问题提出最近在我们的项目当中,出现了两次与使用string相关的问题。1.1. 问题1:新代码引入的Bug前一段时间有一个老项目来一个新需求,我们新增了一些代码逻辑来处理这个新需求。测试阶段没有问题,但上线之后,偶尔会引起错误的逻辑输出甚至崩溃。这个问题困扰着我们很久。我们对新增代码做周详单元测试和集成测试都没有发现问题,最后只能逼迫我们去看那一大段未修改过原始代码逻辑。该项目中经常会碰到使用string,原始代码中有这样一段逻辑引起了我们的怀疑:1string string_info;2//... 对string_info的赋值操作3char* p = (char*)string_in 阅读全文

posted @ 2013-11-22 21:38 huhuuu 阅读(683) 评论(0) 推荐(0) 编辑

摘要:之前看了侯捷的STL剖析,感觉光看不顶用,还是自己实现一下比较好,之前还打算看数据挖掘机器学习,但现在明白了,我明年3月份就要出去了实习了,而数据挖掘之类的学习,还没人带,而且没个几年积累时间不太可能有收获。 还是好好在学学C++的底层实现,内存管理机制之类的,linux也要重头再学习! 阅读全文

posted @ 2013-11-21 23:16 huhuuu 阅读(245) 评论(0) 推荐(1) 编辑

摘要:主要考虑,字符串中是否有非法字符,字符串是否有溢出控制#includeint myatoi(const char *str){ int sight=1,ret=0,i=0; if(str[i]==' ')i++; int max=(1='0'&&str[i]max){//溢出控制 ret=max;break; } } return ret*sight;}int main(){ printf("%d\n",myatoi("214748.3649"));}View Code 后来仔细想想发现自己的代码弱爆了!改 阅读全文

posted @ 2013-11-20 18:03 huhuuu 阅读(518) 评论(0) 推荐(0) 编辑

摘要:从函数声明上可以看出。malloc 和 new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小。比如:123int *p;p = new int; //返回类型为int* 类型(整数型指针),分配大小为 sizeof(int);或:123int* parr;parr = new int [100]; //返回类型为 int* 类型(整数型指针),分配大小为 sizeof(int) * 100;而 malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针。1234567int* p;p = (int *) malloc (sizeof(int)*12 阅读全文

posted @ 2013-11-19 22:03 huhuuu 阅读(18478) 评论(1) 推荐(5) 编辑

摘要:A gas station has to be built at such a location that the minimum distance between the station and any of the residential housing is as far away as possible.考试的时候这句话意思没有完全理解,悲剧鸟。。。其实就是让你找一个加油站,它到所有房子最短距离为len , 找一个加油站len的距离越大越好加油站最多10个,以这几个加油站为原点,做dijk最短路即可#includeint map[1099][1099];const int MAX=49 阅读全文

posted @ 2013-11-02 20:11 huhuuu 阅读(566) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示