21.2-习题命令分发器、copy和单词统计

真正成熟的人,首先应该是一个懂得克制自己欲望的人。
克制,其实是一种更高级的自律。

所谓“美女都是狠角色”,不是没有道理的。

就我身边的大多数美女而言,她们可以克制住自己不胡吃海喝、不沾辛辣、不熬夜,在别人偷懒的时候,她们坚持运动,每天敷面膜、保养皮肤。

“学霸”也不是不食人间烟火,更不是没有七情六欲,他们不过是比常人更懂得克制自己。

我认识的一位学霸,大学那么多年都觉得他除了学习,简直无欲无求。

谁知等他拿到了心仪企业的offer和研究生的录取通知后,一口气做了两件大事:脱单+一个月的长途旅行。

真正成熟的人,知道自己想要的是什么,更知道自己什么时候该做什么事情,懂得克制自己。

在别人都在玩的时候,努力克制。等拥有了足够的选择权之后,再去放肆。

完善命令分发器,实现函数可以带任意参数(可变参数除外),解析参数并要求用户输入
即解决下面的问题;

思路:可以有2种方式

1、注册的时候,固定死,@reg('py',200,100)
可以认为@reg('py',200,100)和@reg('py',300,100)是不同的函数,可以用partial函数。
2、运行时,在输入cmd的时候,逗号或空格分割,获取参数。
至于函数的验证,以后实现。
一般用户都喜欢使用单纯一个命令如mag,然后直接显示想要的结果,所以采用第一种方式

from functools import partial

def command_dispatcher(defaultfn=lambda :print('Unknown command')):
    # 构建全局字典
    cmd_tb1 = {}
    
    #注册函数
    def reg(cmd,*args,**kwargs):
        def _reg(fn):
            func = partial(fn,*args,**kwargs)
            commands[cmd] = func
            return func
        return _reg

    def default_func():
        print("Unknown command")

    def dispatcher():
        while True:
            cmd = input('>>>').strip()
            # 退出条件
            if cmd == '':
                print('bye')
                return
            cmd_tb1.get(cmd, default_func)()
            
    return reg,dispatcher
        
reg, dispatcher = command_dispatcher()
        
@reg('mag',z=200,y=300,x=100)
@reg('mag1',z=300,y=300,x=300)
def foo1(x,y,z):
    print('magedu',x,y,z)
   
@reg('py',300,b=400)
def foo2(a,b=100):
    print('python',a,b)
#reg('mag', foo1)
#reg('py', foo2)

dispatcher()

练习1: copy文件内容

复制tmp目录下文件1里面的内容到一个新文本中;

filename1 = './tmp/test.txt'
filename2 = './tmp/test1.txt'

f = open(filename1,'w+')
lines = ['abc','123','magedu']
f.writelines('\n'.join(lines))

f.seek(0)
print(f.read())
f.close()

def copy(src,dest):
    with open(src) as f1:
        with open(dest,'w') as f2:
            f2.write(f1.read())
            
copy(filename1,filename2)
----------------------------------------------------------------
abc
123
magedu

总结:
1.只要是文件操作,能用 with 就用 with ;看见open,就想一想要不要用with;

练习2: 单词统计

# 缺省字典
from collections import defaultdict
filename = './sample.txt'
count = 0
d = defaultdict(lambda:0)   # 缺省字典判断
with open(filename,encoding='utf8') as f:
    for line in f:
        print(line)
        count += 1
        #if count == 5:break
            
        words = line.split()
        for word in words:
            d[word] += 1
            
print(sorted(d.items(),key=lambda x: x[1],reverse=True)) # key = 选择set中的第2个元素进行排序;
----------------------------------------------------------------------------------
[('the', 124), ('is', 60), ('a', 54), ('path', 52), ('and', 39), ('of', 33), ('if', 32), ('to', 31), ('or', 24), ('Return', 22), ('in', 20), ('an', 18), ('on', 17), ('file', 17), ('for', 16), ('pathname', 15), ('not', 15), ('On', 15), ('be', 14), ('that', 14), ('path.', 14), ('drive', 14), ('are', 13), ('by', 13), ('True', 13), ('The', 12), ('as', 12), ('same', 12), ('all', 11), ('will', 11), ('Windows', 10), ('This', 10), ('returns', 10), ('If', 10), ('it', 10), ('Python', 9), ('version', 9), ('function', 9), ('directory', 9), ('»', 8), ('Unix,', 8), ('paths', 8), ('return', 8), ('symbolic', 8), ('Windows,', 8), ('number', 8), ('can', 7), ('different', 7), ('this', 7), ('from', 7), ('with', 7), ('time', 7), ('|', 6), ('module', 6), ('names', 6), ('may', 6), ('does', 6), ('empty', 6), ('Raise', 6), ('contains', 6), ('Availability:', 6), ('path,', 6), ('component', 6), ('last', 6), ('point', 6), ('mount', 6), ('Windows.', 6), ('see', 5), ('either', 5), ('so', 5), ('Unix', 5), ('use', 5), ('string', 5), ('Note', 5), ('result', 5), ('name', 5), ('always', 5), ('pair', 5), ('returned', 5), ('both', 5), ('absolute', 5), ('empty.', 5), ('Changed', 5), ('directory.', 5), ('up', 5), ('value', 5), ('since', 5), ('into', 5), ('tail', 5), ('previous', 4), ('some', 4), ('objects', 4), ('any', 4), ('also', 4), ('one', 4), ('where', 4), ('relative', 4), ('existing', 4), ('False', 4), ('initial', 4), ('current', 4), ('OSError', 4), ('exist', 4), ('inaccessible.', 4), ('slashes', 4), ('Split', 4), ('head', 4), ('modules', 3), ('(for', 3), ('functions', 3), ('To', 3), ('represent', 3), ('strings', 3), ('should', 3), ('bytes', 3), ('only', 3), ('operating', 3), ('systems', 3), ('have', 3), ('there', 3), ('system', 3), ('basename', 3), ('each', 3), ('refers', 3), ('links.', 3), ('~user', 3), ('replaced', 3), ('environment', 3), ('variable', 3), ('used', 3), ('supported', 3), ('giving', 3), ('seconds', 3), ('epoch', 3), ('(see', 3), ('module).', 3), ('begins', 3), ('file.', 3), ('device', 3), ('letter', 3), ('root', 3), ('UNC', 3), ('3.4:', 3), ('components', 3), ('part', 3), ('converts', 3), ('refer', 3), ('Added', 3), ('support.', 3), ('tail)', 3), ('contain', 3), ('string.', 3), ('Navigation', 2), ('index', 2), ('next', 2), ('3.5.3', 2), ('Documentation', 2), ('Standard', 2), ('Library', 2), ('11.', 2), ('File', 2), ('Directory', 2), ('Access', 2), ('os.path', 2), ('—', 2), ('implements', 2), ('filesystem', 2), ('bytes.', 2), ('character', 2), ('applications', 2), ('arbitrary', 2), ('using', 2), ('standard', 2), ('access', 2), ('Unlike', 2), ('do', 2), ('such', 2), ('when', 2), ('paths.', 2), ('you', 2), ('most', 2), ('platforms,', 2), ('element', 2), ('passing', 2), ('split().', 2), ("('').", 2), ('longest', 2), ('valid', 2), ('New', 2), ('prefix', 2), ('empty,', 2), ('at', 2), ('>>>', 2), ("'/usr/local/lib'])", 2), ('open', 2), ('Returns', 2), ('broken', 2), ('os.stat()', 2), ('now', 2), ('argument', 2), ('~', 2), ('home', 2), ('HOME', 2), ('otherwise', 2), ('looked', 2), ('password', 2), ('An', 2), ('unchanged.', 2), ('variables', 2), ('$name', 2), ('references', 2), ('os.stat_float_times()', 2), ('True,', 2), ('floating', 2), ('number.', 2), ('(like', 2), ('pathname.', 2), ('slash,', 2), ('follows', 2), ('links,', 2), ('islink()', 2), ('true', 2), ('links', 2), ('been', 2), ('whether', 2), ('i-node', 2), ('points', 2), ('other', 2), ('more', 2), ('separator', 2), ('meaning', 2), ('thrown', 2), ('away', 2), ('letter,', 2), ('Normalize', 2), ('forward', 2), ('backward', 2), ('slashes.', 2), ('system).', 2), ('start', 2), ('3.2:', 2), ('everything', 2), ('In', 2), ('cases,', 2), ('+', 2), ('including', 2), ('e.g.', 2), ('"/dir")', 2), ('ext', 2), ('unc', 2), ('(such', 2), ('rest', 2), ('Software', 2), ('11.2.', 1), ('Common', 1), ('manipulations', 1), ('Source', 1), ('code:', 1), ('Lib/posixpath.py', 1), ('POSIX),', 1), ('Lib/ntpath.py', 1), ('NT),', 1), ('Lib/macpath.py', 1), ('Macintosh)', 1), ('--------------------------------------------------------------------------------', 1), ('useful', 1), ('pathnames.', 1), ('read', 1), ('write', 1), ('files', 1), ('open(),', 1), ('accessing', 1), ('os', 1), ('module.', 1), ('parameters', 1), ('passed', 1), ('strings,', 1), ('Applications', 1), ('encouraged', 1), ('(Unicode)', 1), ('strings.', 1), ('Unfortunately,', 1), ('representable', 1), ('need', 1), ('support', 1), ('names.', 1), ('Vice', 1), ('versa,', 1), ('cannot', 1), ('(in', 1), ('mbcs', 1), ('encoding),', 1), ('hence', 1), ('files.', 1), ('unix', 1), ('shell,', 1), ('automatic', 1), ('expansions.', 1), ('Functions', 1), ('expanduser()', 1), ('expandvars()', 1), ('invoked', 1), ('explicitly', 1), ('application', 1), ('desires', 1), ('shell-like', 1), ('expansion.', 1), ('(See', 1), ('glob', 1), ('module.)', 1), ('See', 1), ('pathlib', 1), ('offers', 1), ('high-level', 1), ('objects.', 1), ('All', 1), ('these', 1), ('accept', 1), ('their', 1), ('parameters.', 1), ('object', 1), ('type,', 1), ('returned.', 1), ('Since', 1), ('conventions,', 1), ('several', 1), ('versions', 1), ('library.', 1), ('suitable', 1), ('running', 1), ('on,', 1), ('therefore', 1), ('usable', 1), ('local', 1), ('However,', 1), ('import', 1), ('individual', 1), ('want', 1), ('manipulate', 1), ('formats.', 1), ('They', 1), ('interface:', 1), ('posixpath', 1), ('UNIX-style', 1), ('ntpath', 1), ('macpath', 1), ('old-style', 1), ('MacOS', 1), ('os.path.abspath(path)', 1), ('normalized', 1), ('absolutized', 1), ('equivalent', 1), ('calling', 1), ('normpath()', 1), ('follows:', 1), ('normpath(join(os.getcwd(),', 1), ('path)).', 1), ('os.path.basename(path)', 1), ('base', 1), ('second', 1), ('program;', 1), ("'/foo/bar/'", 1), ("'bar',", 1), ('basename()', 1), ('os.path.commonpath(paths)', 1), ('common', 1), ('sub-path', 1), ('sequence', 1), ('ValueError', 1), ('pathnames,', 1), ('commonprefix(),', 1), ('3.5.', 1), ('os.path.commonprefix(list)', 1), ('(taken', 1), ('character-by-character)', 1), ('list.', 1), ('list', 1), ('invalid', 1), ('because', 1), ('works', 1), ('time.', 1), ('obtain', 1), ('commonpath().', 1), ("os.path.commonprefix(['/usr/lib',", 1), ("'/usr/l'", 1), ("os.path.commonpath(['/usr/lib',", 1), ("'/usr'", 1), ('os.path.dirname(path)', 1), ('first', 1), ('os.path.exists(path)', 1), ('descriptor.', 1), ('permission', 1), ('granted', 1), ('execute', 1), ('requested', 1), ('file,', 1), ('even', 1), ('physically', 1), ('exists.', 1), ('3.3:', 1), ('integer:', 1), ('descriptor,', 1), ('otherwise.', 1), ('os.path.lexists(path)', 1), ('Equivalent', 1), ('exists()', 1), ('platforms', 1), ('lacking', 1), ('os.lstat().', 1), ('os.path.expanduser(path)', 1), ('user‘s', 1), ('set;', 1), ('user’s', 1), ('through', 1), ('built-in', 1), ('pwd.', 1), ('directly', 1), ('USERPROFILE', 1), ('set,', 1), ('combination', 1), ('HOMEPATH', 1), ('HOMEDRIVE', 1), ('used.', 1), ('handled', 1), ('stripping', 1), ('created', 1), ('user', 1), ('derived', 1), ('above.', 1), ('expansion', 1), ('fails', 1), ('begin', 1), ('tilde,', 1), ('os.path.expandvars(path)', 1), ('expanded.', 1), ('Substrings', 1), ('form', 1), ('${name}', 1), ('name.', 1), ('Malformed', 1), ('non-existing', 1), ('left', 1), ('%name%', 1), ('expansions', 1), ('addition', 1), ('${name}.', 1), ('os.path.getatime(path)', 1), ('os.path.getmtime(path)', 1), ('modification', 1), ('os.path.getctime(path)', 1), ('system’s', 1), ('ctime', 1), ('which,', 1), ('Unix)', 1), ('metadata', 1), ('change,', 1), ('and,', 1), ('others', 1), ('Windows),', 1), ('creation', 1), ('os.path.getsize(path)', 1), ('size,', 1), ('bytes,', 1), ('os.path.isabs(path)', 1), ('means', 1), ('(back)slash', 1), ('after', 1), ('chopping', 1), ('off', 1), ('potential', 1), ('letter.', 1), ('os.path.isfile(path)', 1), ('regular', 1), ('isfile()', 1), ('os.path.isdir(path)', 1), ('isdir()', 1), ('os.path.islink(path)', 1), ('entry', 1), ('link.', 1), ('Always', 1), ('runtime.', 1), ('os.path.ismount(path)', 1), ('point:', 1), ('has', 1), ('mounted.', 1), ('POSIX,', 1), ('checks', 1), ('path‘s', 1), ('parent,', 1), ('path/..,', 1), ('than', 1), ('path/..', 1), ('detect', 1), ('POSIX', 1), ('variants.', 1), ('share', 1), ('points,', 1), ('GetVolumePathName', 1), ('called', 1), ('input', 1), ('Support', 1), ('detecting', 1), ('non-root', 1), ('os.path.join(path,', 1), ('*paths)', 1), ('Join', 1), ('intelligently.', 1), ('concatenation', 1), ('members', 1), ('*paths', 1), ('exactly', 1), ('(os.sep)', 1), ('following', 1), ('non-empty', 1), ('except', 1), ('last,', 1), ('end', 1), ('joining', 1), ('continues', 1), ('component.', 1), ('reset', 1), ('(e.g.,', 1), ("r'\\foo')", 1), ('encountered.', 1), ('reset.', 1), ('drive,', 1), ('os.path.join("c:",', 1), ('"foo")', 1), ('represents', 1), ('C:', 1), ('(c:foo),', 1), ('c:\\foo.', 1), ('os.path.normcase(path)', 1), ('case', 1), ('Mac', 1), ('OS', 1), ('X,', 1), ('unchanged;', 1), ('case-insensitive', 1), ('filesystems,', 1), ('lowercase.', 1), ('TypeError', 1), ('type', 1), ('str', 1), ('os.path.normpath(path)', 1), ('collapsing', 1), ('redundant', 1), ('separators', 1), ('up-level', 1), ('A//B,', 1), ('A/B/,', 1), ('A/./B', 1), ('A/foo/../B', 1), ('become', 1), ('A/B.', 1), ('manipulation', 1), ('change', 1), ('normalize', 1), ('case,', 1), ('normcase().', 1), ('os.path.realpath(path)', 1), ('canonical', 1), ('specified', 1), ('filename,', 1), ('eliminating', 1), ('encountered', 1), ('(if', 1), ('they', 1), ('os.path.relpath(path,', 1), ('start=os.curdir)', 1), ('filepath', 1), ('optional', 1), ('computation:', 1), ('accessed', 1), ('confirm', 1), ('existence', 1), ('nature', 1), ('start.', 1), ('defaults', 1), ('os.curdir.', 1), ('os.path.samefile(path1,', 1), ('path2)', 1), ('arguments', 1), ('determined', 1), ('raises', 1), ('exception', 1), ('call', 1), ('fails.', 1), ('uses', 1), ('implementation', 1), ('platforms.', 1), ('os.path.sameopenfile(fp1,', 1), ('fp2)', 1), ('descriptors', 1), ('fp1', 1), ('fp2', 1), ('os.path.samestat(stat1,', 1), ('stat2)', 1), ('stat', 1), ('tuples', 1), ('stat1', 1), ('stat2', 1), ('These', 1), ('structures', 1), ('os.fstat(),', 1), ('os.lstat(),', 1), ('os.stat().', 1), ('underlying', 1), ('comparison', 1), ('samefile()', 1), ('sameopenfile().', 1), ('os.path.split(path)', 1), ('pair,', 1), ('(head,', 1), ('leading', 1), ('that.', 1), ('never', 1), ('slash;', 1), ('ends', 1), ('no', 1), ('slash', 1), ('Trailing', 1), ('stripped', 1), ('unless', 1), ('(one', 1), ('only).', 1), ('join(head,', 1), ('location', 1), ('(but', 1), ('differ).', 1), ('Also', 1), ('dirname()', 1), ('basename().', 1), ('os.path.splitdrive(path)', 1), ('(drive,', 1), ('which', 1), ('specifications,', 1), ('splits', 1), ('drive/UNC', 1), ('sharepoint', 1), ('colon.', 1), ('splitdrive("c:/dir")', 1), ('("c:",', 1), ('host', 1), ('share,', 1), ('but', 1), ('fourth', 1), ('separator.', 1), ('splitdrive("//host/computer/dir")', 1), ('("//host/computer",', 1), ('os.path.splitext(path)', 1), ('(root,', 1), ('ext)', 1), ('==', 1), ('period', 1), ('period.', 1), ('Leading', 1), ('periods', 1), ('ignored;', 1), ("splitext('.cshrc')", 1), ("('.cshrc',", 1), ("'').", 1), ('os.path.splitunc(path)', 1), ('Deprecated', 1), ('3.1:', 1), ('Use', 1), ('splitdrive', 1), ('instead.', 1), ('(unc,', 1), ('rest)', 1), ("r'\\\\host\\mount'),", 1), ('present,', 1), ("r'\\path\\file.ext').", 1), ('For', 1), ('containing', 1), ('letters,', 1), ('os.path.supports_unicode_filenames', 1), ('Unicode', 1), ('(within', 1), ('limitations', 1), ('imposed', 1), ('©', 1), ('Copyright', 1), ('2001-2017,', 1), ('Foundation.', 1), ('Foundation', 1), ('non-profit', 1), ('corporation.', 1), ('Please', 1), ('donate.', 1), ('Last', 1), ('updated', 1), ('Jan', 1), ('16,', 1), ('2017.', 1), ('Found', 1), ('bug?', 1), ('Created', 1), ('Sphinx', 1), ('1.3.1.', 1)]

for k in d:
    if k.find('path') > -1:    # 查找不到返回 -1 ,
        print(k)
------------------------------------------------------------
os.path
pathname
Lib/posixpath.py
Lib/ntpath.py
Lib/macpath.py
pathnames.
path
pathlib
paths.
posixpath
paths
ntpath
macpath
os.path.abspath(path)
path.
normpath()
normpath(join(os.getcwd(),
path)).
os.path.basename(path)
os.path.commonpath(paths)
sub-path
...............


# 完整代码;
def makekey(s:str):
    chars = set(r"""!'"#./\()[],*-""")
    key = s.lower()
    ret = []
    for i, c in enumerate(key):
        if c in chars:
            ret.append(' ')
        else:
            ret.append(c)
    return ''.join(ret).split()

def makekey1(s:str):
    chars = set(r"""!'"#./\()[],*-""")

    key = s.lower()
    ret = []
    start = 0
    for i, c in enumerate(key):
        if c in chars:
            if start == i: # 如果紧挨着还是特殊字符,start一定等于i
                start += 1 # 加1并continue
                continue
            ret.append(key[start:i])
            start = i + 1 # 加1是跳过这个不需要的特殊字符c
    else:
        if start < len(key): # 小于,说明还有有效的字符,而且一直到末尾
            ret.append(key[start:])
            
    return ret

print(makekey('a.b.c'))
print(makekey1('[[[[os.path....join(path,)]]]]'))
#-----------------------------------------------------------------------
['a', 'b', 'c']
['os', 'path', 'join', 'path']


d = {}
with open('./sample.txt', encoding='utf8') as f:
    for line in f:
        words = line.split()
        for wordlist in map(makekey1,words):
            for word in wordlist:
                d[word] = d.get(word,0) + 1

for k,v in sorted(d.items(),key=lambda item: item[1],reverse= True):
    print(k,v)
#--------------------------------------------------
path 138
the 136
is 60
a 59
os 49
if 43
and 40
to 34
on 33
of 33
return 30
windows 25
file 24
or 24
in 24
for 20
an 20
pathname 17
this 17
true 17
drive 17
directory 16
unix 16
not 15
that 15
be 14
by 14
empty 14
3 13
are 13
paths 13


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容

  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sq...
    xuningbo阅读 10,322评论 2 22
  • sqlmap用户手册 说明:本文为转载,对原文中一些明显的拼写错误进行修正,并标注对自己有用的信息。 ======...
    wind_飘阅读 2,054评论 0 5
  • sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功...
    道书简阅读 1,417评论 0 0
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,813评论 0 38
  • 一年里面,我没有最喜欢的季节。 最讨厌的季节是春天。 准确的说,是每年的二三四月份,从未能换下冬衣的时节,到勉强能...
    andPluto阅读 321评论 0 0