170130

来源:互联网 发布:php mysql防注入 编辑:程序博客网 时间:2024/06/01 08:53
 1625-5 王子昂 总结《2017年1月30日》 【连续第122天总结】
A.python  100%
    windows核心编程 30%
B.  eval()对表达式求值,表达式可以是一个字符串,也可以是compile()创建的代码对象。这是它的第一个参数。第二个和第三个参数可选,类型分别为字典和任意映射对象(字典或实现了__getitem__方法的对象)
     exec接受代码对象或字符串形式的代码。被执行的对象可以只是原始的字符串,也可以是有效的python文件对象。例如f=open("xcount.py") exec f
    第一次导入模块会运行模块最高级的代码(没有缩进的部分)。注意只有属于模块最高级的代码才是全局变量,全局类和全局函数声明。
    如果将代码设定为不要每次导入都执行的话,只需要缩进它,并放入if __name__=="__main__"的内部
    但这不意味着在任何的情况下都应该这样编写代码。在某些情况中,你可能需要显示输出来确定模块输入成功。
    导入模块的副作用是导致最高级代码运行。
    因此提出了一个方法规避导入模块的副作用----通过文件对象,使用exec语句来读取python脚本的内容并执行。
    f=open("xcount.py") 
    exec f 
    f.close()
这三行可以用一个函数来替换:
    execfile("xcount.pt")
 

windows核心编程:
    入口点函数返回后,启动函数将调用C运行库函数exit,向其传递返回值(nMainRetVal)。
exit函数的功能:
    调用_onexit函数调用所注册的任何一个函数
    调用所有全局和静态C++类对象的析构函数
    在DEBUG生成中,如果设置了_CRTDBG_LEAK_CHECK_DF标志,就通过调用_CrtDumpMemoryLeaks函数来生成内存泄露报告
    调用操作系统的ExitProcess函数,向其传入nMainRetVal。这会导致操作系统结束进程并设置退出代码。
    加载到进程地址空间的每一个可执行文件或者DLL文件都被赋予了一个独一无二的实例句柄。可执行文件的实例被方桌WinMain函数的第一个参数hInstanceExe传入。在需要加载资源的函数调用中,一般都要提供此句柄的值。
    这个参数的实际值是一个保存了可执行文件加载内容的内存基地址。
    可以通过GetModuleHandle函数来返回一个句柄或基地址。
    这个函数的参数是一个以0为终止符的字符串,内容是需要查询的可执行文件或DLL文件的名称。如果传入NULL,那么将返回主调进程的可执行文件的基地址。
    系统在创建一个新进程时,会传一个命令行给它。
    命令行的第一个标记(token)是创建新进程的可执行文件的名称。
    C运行库的启动代码开始执行一个GUI应用程序时,会调用Windows函数GetCommandLine来获取进程的完整命令行,忽略第一个标记(即该可执行文件的名称),然后将指向命令行剩余部分的一个指针传给WinMain的pszCmdLine参数。
   理论上可以直接写数据到pszCmdLine参数所指向的内存缓冲区。但一旦修改,就再也不可能还原。因此最好谨慎对待。
    也可以通过GetCommandLine函数获得一个指向命令行内容的指针,但这个指针指向的是同一个缓冲区的地址。
C. 明日计划
    python 正则表达式
    windows核心编程三小节
明天看驯鹿(^ω^)住村民家里
0 0
原创粉丝点击