现在位置: 首页 > 编程语言 > 文章
2019年06月08日 编程语言 ⁄ 共 2026字 评论关闭
一说起通配符,大家很快就会想起*和?号,有了通配符,使得表达能力大大增强,很多linux命令都支持这个东西,其实就是glob style pattern. 就连redis的keys命令都支持glob. 我要实现的glob,支持以下特性: 星号*匹配0个或多个任意字符 ?匹配确切的一个任意字符 [characters]匹配任意一个方括号内的字符,比如[abc],要么匹配a,要么匹配b,要么匹配c. [!character]排除方括号内的字符 [character-character],表示2个字符范围内的都可以匹...
阅读全文
端口扫描器原理很简单,无非就是操作socket,能connect就认定这个端口开放着。 import socket def scan(port): s = socket.socket() if s.connect_ex(('localhost', port)) == 0: print port, 'open' s.close() if __name__ == '__main__': map(scan,range(1,65536)) 这样一个最简单的端口扫描器出来了。 等等喂,半天都没反应,那是因为socket是阻塞的,每次连接要等很久才超时。 我们自己给它加上...
阅读全文
2019年06月08日 编程语言 ⁄ 共 827字 评论关闭
很多人把装饰器搞的很复杂,其实本质很简单. 首先,什么是装饰器呢?在代码中发现戴着@xxx帽子的,就是装饰器. 那要怎么自己定义一个装饰器呢? 其实任何一个接收一个参数的callable都可以用来做装饰器,比如函数和类.为方便起见,下面的例子都用函数来说明. def deco(func):return 1 这里,deco就可以做装饰器. @deco def f(args):pass "戴帽"其实就是调用,帽子戴在谁(一个函数定义)头上,就表示将谁作参数来调用,然后赋给一个同名...
阅读全文
2019年06月08日 编程语言 ⁄ 共 979字 评论关闭
示例: d = { "root": { "folder2": { "item2": None, "item1": None }, "folder1": { "subfolder1": { "item2": None, "item1": None }, "subfolder2": { "item3": None } } } } 美观输出是: 观察一下特点: 1.同一level的key左对齐,即indent相同 2.在,号后换行 3.如果value是字典,即嵌套字典,则嵌套字典在下一个level,每一个level的key的indent都不一样 思路分析: 这是个"拼接字符串"问题,元素有""{}:,\n和空格inde...
阅读全文
2019年06月08日 编程语言 ⁄ 共 1044字 评论关闭
带权随机在游戏开发中重度使用,各种抽奖和爆装备等. 运营根据需要来配置各个物品出现的概率. 今天要说的这个带权随机算法思想很简单,就是"把所有物品根据其权重构成一个个区间,权重大的区间大.可以想象成一个饼图.  然后,扔骰子,看落在哪个区间," 举个栗子,有个年终抽奖,物品是iphone/ipad/itouch. 主办方配置的权重是[('iphone', 10), ('ipad', 40), ('itouch', 50)]. 用一行代码即可说明其思想,即random.choice(['iphone']*1...
阅读全文
2019年06月08日 编程语言 ⁄ 共 1496字 评论关闭
在游戏开发的过程中频繁的需要跟时间相关的做处理,而python内置了好多个时间处理库,datetime/date/time/calendar/timedelta等,细节繁多略具迷惑性。很多东西不够便捷直接。 想一下下面这些场景: 2014年六一儿童节那天的时间戳是多少? 2014年六一儿童节那天是星期几? datetime对象转成字符串后面往往带小数点,即微秒,而我存到数据库是不需要微秒的,怎么搞? 从配置中读取、网络中传输、数据库存储获取到的时间信息是...
阅读全文
2019年06月07日 编程语言 ⁄ 共 5575字 评论关闭
Like the idea of working on large scale problems? We’re hiring talented engineers, and would love to chat with you – check it out!     Note: Concurrency, as defined in this article, is the same as it is for The C10k problem: concurrent clients (or sockets). At Urban Airship we recently published a blog post about scaling beyond 500,000 concurrent socket connections. Hitting these numbers was n...
阅读全文
2019年06月07日 编程语言 ⁄ 共 4386字 评论关闭
1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表 void foo(...); void foo(parm_list,...); 2:函数参数的传递原理 函数参数是以数据结构:栈的形式存取,从右至左入栈.eg: 先介绍一下可变参数表的调用形式以及原理: 首先是参数的内存存放格式:参数存放在内存的堆栈段中,在执行函数的时候,从最后一个开始入栈。因此栈底高地址,栈顶低地址,举个例子如下: void func(int x, float y, char z); 那么,...
阅读全文
2019年06月07日 编程语言 ⁄ 共 5698字 评论关闭
 int printf(const char *format,[argument]);   format 参数输出的格式,定义格式为:   %[flags][width][.perc] [F|N|h|l]type   规定数据输出方式,具体如下:   1.type 含义如下:   d 有符号10进制整数   i 有符号10进制整数   o 有符号8进制整数   u 无符号10进制整数   x 无符号的16进制数字,并以小写abcdef表示   X 无符号的16进制数字,并以大写ABCDEF表示   F/f 浮点数   E/e 用科学表示...
阅读全文
2019年06月06日 编程语言 ⁄ 共 5140字 评论关闭
参数处理-Shell传入参数的处理 1. $# 传递到脚本的参数个数 2. $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个 3. 脚本运行的当前进程ID号 4. $! 后台运行的最后一个进程的进程ID号 5. $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数 6. $- 显示shell使用的当前选项,与set命令功能相同 7. $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 变量 含义  $0 脚...
阅读全文