09 2015 档案
摘要:http://deerchao.net/tutorials/regex/regex.htm#mission
阅读全文
摘要:智能指针在C++11的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方式管理内存,当引用计数为0的时候,自动释放内存,但是由于shared_ptr考虑到了线程安全,所以会存在有较大的性能损失。所以在实时游戏...
阅读全文
摘要:渲染是visit函数来做的,visit是先将不可见的节点和他所有的子节点都跳过,然后再看节点的子节点是否为空,如果为空的话直接看这个节点是否在摄像机可见范围之内,如果在就渲染这个节点,否则什么都不做。如果子节点不为空,就:先将子节点排序,通过zorder排序,如果zorder相同就通过先后加入节点树...
阅读全文
摘要:答案就是:在函数创建对象之前先创建一个自动释放池,因为这个释放池是函数里面的局部变量,所以当函数结束的时候,会调用他的析构函数,而普通的情况是在一帧结束的时候才会调用自动释放池(不是这个,普通的)的析构函数。基于这个背景来分析一下为什么。1.内存峰值过高是为什么? 在cocos2d中因为我们在一帧...
阅读全文
摘要:设想如下场景,这是一个典型的内存合理分配的场景:在一帧内,有若干个函数,每个函数都会创建一系列的精灵,每个精灵都不同,都会占用一定的内存,精灵的总数可能会有1000个,而一个函数只会创建10个精灵这样,创建的精灵只会在这个函数中使用,大致代码如下:for(inti=0;ipush(this);}他向...
阅读全文
摘要:如题
阅读全文
摘要:Cocos2d-x用create创建对象,这个方法已经被引擎封装成一个宏定义了:CREATE_FUNC,下面是这个宏定义的实现:#defineCREATE_FUNC(__TYPE__)\static__TYPE__*create()\{\__TYPE__*pRet=new__TYPE__();\if...
阅读全文
摘要:在函数里面的临时变量也可以定义为一个函数名.变量名,这样就可以通过对象来访问这个变量了,函数使用完之后不会消除。因为函数也是对象,python里面一切皆为对象。
阅读全文
摘要:从文件中读写字符串很容易。数值就要多费点儿周折,因为read ()方法只会返回字符串,应将其传入int()这样的函数,就可以将'123'这样的字符串转换为对应的数值 123。当你想要保存更为复杂的数据类型,例如嵌套的列表和字典,手工解析和序列化它们将变得更复杂。好在用户不是非得自己编写和调试保存复杂...
阅读全文
摘要:到目前为止我们遇到过两种输出值的方法:表达式语句和print语句。(第三个方式是使用文件对象的write()方法;标准输出文件可以引用sys.stdout。详细内容参见库参考手册。Python 有方法将任何值转换为字符串:将它传递给repr()或str()函数。str()函数的用意在于返回人类可读的...
阅读全文
摘要:模块可以包含可执行语句以及函数的定义。这些语句通常用于初始化模块。它们只在第一次导入时执行。只在第一次导入的时候执行,第一次。妈蛋的第一次。。。后面再次导入就不执行了。[1](如果文件以脚本的方式执行,它们也会运行。)每个模块都有自己的私有符号表,模块内定义的所有函数用其作为全局符号表。被导入的模块...
阅读全文
摘要:如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失。因此,如果你想要编写一些更大的程序,最好使用文本编辑器先编写好,然后运行这个文件。这就是所谓的创建脚本。随着你的程序变得越来越长,你可能想要将它分成几个文件,这样更易于维护。你还可能想在几个程序中使用你已经编写好的函数...
阅读全文
摘要:dict()构造函数直接从键-值对序列创建字典:>>>>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]){'sape': 4139, 'jack': 4098, 'guido': 4127}此外,字典推导式式可以用于从任意键和值表达...
阅读全文
摘要:t = 12345, 54321, 'hello!'>>> t[0]12345>>> t(12345, 54321, 'hello!')元组:元组由逗号分割的若干值组成集合:set()。集合中的元素没有顺序且不会重复。集合的基本用途有成员测试和消除重复的条目。集合对象还支持并集、交集、差和对称差等数...
阅读全文
摘要:>>> del a[:]>>> a[]del也可以用于删除整个变量:>>>>>> del a之后再引用名称a将会出错(直到有另一个值被赋给它(a才能被引用))。稍后我们将看到del的其它用途 。
阅读全文
摘要:squares = [x**2 for x in range(10)]相当于squares=map(lambdax:x**2,range(10)),但是更简洁和易读。傻逼才会用最古老的for循环方法去做这样的事情。列表推导式由括号括起来,括号里面包含一个表达式,表达式后面跟着一个for语句,后面还可...
阅读全文
摘要:有三个内置函数与列表一起使用时非常有用:filter()、map()和reduce()。1.filter(function,sequence)返回的序列由function(item)结果为真的元素组成。如果sequence是一个字符串或元组,结果将是相同的类型;否则,结果将始终是一个列表。例如,若要...
阅读全文
摘要:1.list.extend(L)将指定列表中的所有元素附加到另一个列表的末尾;相当于a[len(a):]=L。2.list.pop([i])删除列表中指定位置的元素并返回它。如果未指定索引,a.pop()将删除并返回列表中的最后一个元素。(i两边的方括号表示这个参数是可选的,而不是要你输入方括号。你...
阅读全文
摘要:1.符号表执行一个函数会引入一个用于函数的局部变量的新符号表。更确切地说,函数中的所有的赋值都是将值存储在局部符号表;而变量引用首先查找局部符号表,然后是上层函数的局部符号表,然后是全局符号表,最后是内置名字表。因此,在函数内部全局变量不能直接赋值(除非在一个global语句中命名),虽然可以引用它...
阅读全文
摘要:函数体的第一行可以是一个可选的字符串文本;此字符串是该函数的文档字符串,或称为docstring。(更多关于 docstrings 的内容可以在文档字符串一节中找到。)有工具使用 docstrings 自动生成在线的或可打印的文档,或者让用户在代码中交互浏览;在您编写的代码中包含 docstring...
阅读全文
摘要:循环语句可以有一个else子句;当(for)循环迭代完整个列表或(while)循环条件变为假,而非由break语句终止时,就会执行这个else语句。下面循环搜索质数的代码例示了这一点:>>>>>> for n in range(2, 10):... for x in range(2, n):...
阅读全文
摘要:range()是列表, xrange()是迭代>>> a = ['Mary', 'had', 'a', 'little', 'lamb']>>> for i in range(len(a)):... print i, a[i]...0 Mary1 had2 a3 little4 lamb然而...
阅读全文
摘要:如果要在循环内修改正在迭代的序列(例如,复制所选的项目),建议首先制作副本。迭代序列不会隐式地创建副本。使用切片就可以很容易地做到:>>>>>> for w in words[:]: # Loop over a slice copy of the entire list.... if le...
阅读全文
摘要:13. 交互式输入的编辑和历史记录某些版本的 Python 解释器支持编辑当前的输入行和历史记录,类似于在 Korn shell 和 GNU Bash shell 中看到的功能。这是使用GNU Readline库实现的,它支持 Emacs 风格和 vi 风格的编辑。这个库有它自己的文档,在这里我不就...
阅读全文