上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 58 下一页
  2013年11月12日
摘要: 考虑下面的需求:txt文件每行有一个元素,读取所有的元素,排序输出到另一个文件。 1 import sys 2 print(sys.path[0]+"/aaa.txt") 3 file = open(sys.path[0]+"/aaa.txt") 4 result =[] 5 for line in file: 6 result.append(line) 7 8 result.sort() 9 result.reverse()10 11 print(sys.path[0]+"/bbb.txt")12 target = open(sys 阅读全文
posted @ 2013-11-12 15:20 Andy Niu 阅读(247) 评论(0) 推荐(0)
摘要: 1、os.getcwd():获取当前工作目录,也就是在哪个目录下运行这个程序。举例来说:假设F:\aaa\bbb\ccc目录下有个文件 TestDir.py,打印当前工作目录。进入windows命令行窗口: 在F:\aaa\bbb\ccc运行 python TestDir.py,输出F:\aaa\bbb\ccc 在F:\aaa\bbb运行 python ccc/TestDir.py,输出F:\aaa\bbb 在F:\aaa运行 python bbb/ccc/TestDir.py,输出F:\aaa2、如果我想获取TestDir.py文件所在的目录,怎么办?使用sys.path[0]1 im... 阅读全文
posted @ 2013-11-12 14:28 Andy Niu 阅读(7325) 评论(1) 推荐(2)
摘要: 一、什么是异常处理 一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这些错误,但却无法检查它们何时发生(如果能检测,就可以再用户的代码里处理了,不用留给库去发现)。 Bjarne Stroustrup说:提供异常的基本目的就是为了处理上面的问题。基本思想是:让一个函数在发现了自己无法处理的错误时抛出(throw)一个异常 阅读全文
posted @ 2013-11-12 10:06 Andy Niu 阅读(16745) 评论(1) 推荐(2)
  2013年11月11日
摘要: 1、const_static的使用场景:接收一个const对象,但是想改变对象内容,使用const_static去除对象的常量性,然后可以修改对象。2、dynamic_static的使用场景:从子类向父类转化符合里氏代换,总是安全的。因此dynamic_static的使用场景主要是父类转化为子类,首先转化的结果必须是指针或者引用(指针转化失败返回Null,引用转化错误抛出异常),其次,要转化的对象必须是多态类型,所谓多态类型,也就是类型必须公有继承其他类,或者拥有虚函数(继承或者自定义)。3、reinterpret_cast的使用场景:有一个方法指针FunPtr,(void)(void),有一 阅读全文
posted @ 2013-11-11 20:00 Andy Niu 阅读(430) 评论(0) 推荐(0)
摘要: 1、解决的问题:考虑下面的需求,现在有一个方法Fun,形参是实体A,在方法内调用A的启动方法,A.Start(),实体A可能是电脑,也可能使汽车,也可能使空调,对于每一类实体都要写一个内容相同的方法,这些方法构成过载。有没有更好的办法呢? 模版就是问了解决这个问题,通过使用一个占位符,再调用方法的时候,让编译器自动生成一个方法。2、模版是自动化的过载,是延迟的过载。如何理解? 首先,在调用方法的时候,编译器根据类型实参,自动生成一个过载方法。其次,一般的过载方法是在调用之前,就要写好,而模版是在调用的时候,才自动生成对应的方法。3、模版是编译时多态。对于上面提到的问题,还有一个解决办法,那.. 阅读全文
posted @ 2013-11-11 19:32 Andy Niu 阅读(262) 评论(0) 推荐(0)
  2013年11月10日
摘要: 1、思路不对,编出的代码肯定不对,因此编码之前,一定要现在草稿纸上,根据思路写出伪码。2、快速排序的思路:选一个目标,把数组分成两块,左边一块都比目标小,右边一块都比目标大。对每一块,递归做同样的事情,递归的出口时,左起点大于等于右起点。3、递归的形参表为:数组和排序的区间,排序区间也就是左起点和右起点,QuickSort(int a[], int lhs,int rhs),递归出口:if(lhs>=rhs) return;4、方法1:思路是对排序的区间做一个拷贝,取第一个为目标,从第二个开始,遍历排序区间,比目标小,从前往后。以此放在原数组区间的左边,比目标大,从后向前,一次放在原数组 阅读全文
posted @ 2013-11-10 10:51 Andy Niu 阅读(402) 评论(0) 推荐(0)
  2013年11月8日
摘要: C货币string.Format("{0:C3}", 2)$2.000D十进制string.Format("{0:D3}", 2)002E科学计数法1.20E+0011.20E+001G常规string.Format("{0:G}", 2)2N用分号隔开的数字string.Format("{0:N}", 250000)250,000.00X十六进制string.Format("{0:X000}", 12)Cstring.Format("{0:000.000}", 12.2)0 阅读全文
posted @ 2013-11-08 14:08 Andy Niu 阅读(783) 评论(0) 推荐(0)
  2013年11月7日
摘要: 1、为什么设计static?考虑下面的需求: 在程序运行过程中,在一个范围内,有一个对象大家共享,而且可以多次使用,状态能够保持,对象的生命周期一直持续到程序运行结束。2、静态对象要分配在全局数据区,程序运行期间,不能释放,一直到程序终止。3、静态对象的生命周期是程序的整个运行过程。但是可以限定静态对象的作用域,根据作用域的大小,可分为静态局部对象,静态全局对象。静态局部对象是指方法内的静态对象,静态全局对象是指编译单元里的静态对象。(注意:生命周期是时间概念,作用域是空间概念)4、静态对象只能初始化一次。严格来讲,任何对象都只能初始化一次,而且是在定义的时候。后面再想修改对象的值,只能通过. 阅读全文
posted @ 2013-11-07 20:30 Andy Niu 阅读(1326) 评论(0) 推荐(0)
  2013年11月6日
摘要: 1、程序地址空间,从下到上(下面是低地址,上面是高地址)分别为全局数据区,堆,栈,堆往上增长,栈往下增长。2、程序运行后,还存在一个代码区,代码区放的是可执行代码,索引了一个个的方法,可认为是数据加工厂。3、全局数据区存放:全局数据,文本常量,具名常量,静态全局量,静态局部量。 阅读全文
posted @ 2013-11-06 21:06 Andy Niu 阅读(472) 评论(0) 推荐(0)
摘要: 1、map的实现是使用平衡树,AVL树或者红黑树。2、在无序的情况下,查找为常数时间。有序的时候,查找为对数时间。二叉排序树(BST)就是为了解决这个问题。3、但是,极端情况下,BST的查找效率退化到常数时间,考虑极端不平衡的二叉树,每个节点只有左孩子。4、为了解决上面的问题,就要想办法对BST进行调整,保证查找效率。5、AVL的思路是:每个节点两个孩子节点的高度相差不大于1,这样就保证了BST比较平衡。6、红黑树的思路是:跟和叶子都是黑色,红的两个孩子都是黑色,每条路的黑色个数一样。这样,就保证了最长路径与最短路径的比小于2,也就保证了相对平衡。为什么红黑树可以保证最长路径与最短路径的比小于 阅读全文
posted @ 2013-11-06 20:52 Andy Niu 阅读(632) 评论(0) 推荐(0)
上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 58 下一页