/usr/src/python]> apt-get source python2.7-dbg $ /usr/bin/python2.7-dbg DebugPythonWithGDB.py 1 编辑 GDB 初始化文件 : set debug-file-directory /usr/li
|
|
- 最 祁
- 5 years ago
- Views:
Transcription
1 用 GDB 调试分析 Python 解释器 安全研究部陈庆 有些 Python 程序无法被 Ctrl-C 打断, 也无法处理 SIGTERM 信号 本文利用 GDB 对 Python 解释器进行调试分析, 找出前述现象的深层次原因 一 令人困惑的现象一段最简演示代码如下 : import sys, os, signal, time, threading def test_0 () : while True : time.sleep( 1 ) def test_1 () : cond = threading.condition() cond.acquire() cond.wait() def on_sigterm ( signum, frame ) : print 'signum = %u' % signum def main ( prog, args ) : print os.getpid() signal.signal( signal.sigterm, on_sigterm ) if 0 == len( args ) or 0 == int( args[0], 0 ) : print 'call test_0()' test_0() else : print 'call test_1()' test_1() print 'Reachless' if ' main ' == name : try : main( os.path.basename( sys.argv[0] ), sys.argv[1:] ) except KeyboardInterrupt : pass 执行 "DebugPythonWithGDB.py 1", 发现 Ctrl-C 无法将其中止, kill 时 SIGTERM 信号句柄未被执行 ( 无 "signum = 15" 输出 ) 这个问题最初是西安研发中心张龙提出的 我研究了一下, 发现这个现象背后的原因比我想像的复杂得多 二 准备调试环境现在新版 GDB 新的 Linux 发行版对调试 Python 已经有了很好的支持, 不需要四处打 Patch 本文在 x86/debian 8.0 上演示 安装调试版本的 Python 解释器 : # aptitude install python2.7-dbg 下载 Python 源码 : 47
2 /usr/src/python]> apt-get source python2.7-dbg $ /usr/bin/python2.7-dbg DebugPythonWithGDB.py 1 编辑 GDB 初始化文件 : set debug-file-directory /usr/lib/debug set directories /usr/src/python/python /modules 查看 "/usr/lib/debug/usr/bin/python2.7-gdb.py", 在其中搜索 "py-", 寻找可以在 (gdb) 提示符下使用的 Python 调试命令 : py-bt 调用栈回溯 py-up py-down 切换栈帧,up 向大数方向移动,down 向小数方向移动 py-list py-list start py-list start, end 显示当前栈帧的源代码 py-locals 显示当前栈帧所有的局部变量 py-print 显示当前栈帧指定的局部变量如果在原生 bt 的显示中看到 "<value optimized out>", 不要使用 "py-*" 系列命令, 否则有可能触发 SIGSEGV 三 调试分析 Python 解释器 call test_1() 利用 SystemTap 查看 Python 解释器此时安装的 C 级信号句柄 : # stap -DMAXACTION= g psig.stp -x $(pgrep -f DebugPythonWithGDB.py) grep TERM TERM caught 0x8216f2d 0 这个信息表示针对 SIGTERM 安装有信号句柄, 其入口在 0x8216f2d, 结尾的 0 对应 sa_flags, 表明没有指定 SA_ RESTART 用 GDB 调试目标进程, 针对 SIGTERM 的信号句柄设置断点, 调整 GDB 对 SIGTERM 的处理方式 : # gdb -q -ex "b *0x8216f2d" -ex "handle SIGTERM nostop print pass" -ex c -p $(pgrep -f DebugPythonWithGDB.py) 从另一个终端向 Python 解释器发送 SIGTERM 信号 : # kill -TERM $(pgrep -f DebugPythonWithGDB.py) GDB 中断点命中 : Program received signal SIGTERM, Terminated. Breakpoint 1, signal_handler (sig_num=15) at../ Modules/signalmodule.c:185 查看调用栈回溯 : (gdb) bt #0 signal_handler (sig_num=15) at../modules 48
3 /signalmodule.c:185 #1 <signal handler called> #2 0xb772dd3c in kernel_vsyscall () #3 0xb76f8df5 in () #4 0x e in PyThread_acquire_lock #5 0x0822e43c in lock_pythread_acquire_lock #6 0x080bc300 in PyCFunction_Call #7 0x08149d0b in call_function #8 0x081454ec in PyEval_EvalFrameEx at../ Python/ceval.c:2679 此时断在 C 级信号句柄中, 让流程回到 sem_wait() 所在 : (gdb) select-frame 3 (gdb) finish 0x e in PyThread_acquire_lock at../python/thread_ pthread.h:324 (gdb) list 319 (void) error; silence unused-but-set-variable warning 320 dprintf(("pythread_acquire_lock(%p, %d) called\n", lock, waitflag)); do 323 if (waitflag) 324 status = fix_status(sem_wait(thelock)); 325 else 326 status = fix_status(sem_trywait(thelock)); 327 while (status == EINTR); Retry if interrupted by a signal 328 (gdb) output waitflag 行有一个可疑的循环, 看看能否跳出循环 : (gdb) b 327 Breakpoint 2 at 0x818719f: file../python/thread_pthread.h, line 327. (gdb) disable 1 (gdb) c Continuing. Breakpoint 2, PyThread_acquire_lock (lock=0x983f8b8, waitflag=1) at../python/thread_pthread.h: while (status == EINTR); Retry if interrupted by a signal (gdb) output status 4 4 就是 EINTR, 表示 sem_wait() 被 SIGTERM 打断, 返回 49
4 EINTR 然后从 327 行继续循环调用 sem_wait() 此时的 C 级调用栈回溯 : (gdb) bt #0 PyThread_acquire_lock at../python/thread_pthread. h:327 #1 0x0822e43c in lock_pythread_acquire_lock #2 0x080bc300 in PyCFunction_Call #3 0x08149d0b in call_function #4 0x081454ec in PyEval_EvalFrameEx at../ Python/ceval.c:2679 此时的 Python 级调用栈回溯 : (gdb) py-bt #4 Frame 0xb747fcf4 waiter.acquire() #8 Frame 0xb73b146c, for file DebugPythonWithGDB. 流程位于 PyEval_EvalFrameEx() 中, 查看 "Python/ceval. c:2679", 在解释执行 PVM 指令的主 switch 中, 具体是 "case CALL_FUNCTION:" 现在我们知道了这里存在死循环或者说无限循环, 但这与 Python 级信号句柄有什么关系?C 级信号句柄与 Python 级信号句柄是如何发生关联的? 四 Python 级信号句柄与延迟调用在 Python 代码中调用 signal.signal() 安装信号句柄时, 实际调用 signal_signal(): static struct * 是否收到信号 signal_handler() 得到执行时将该成员设为 1 py, line 13, in test_1 cond.wait() int tripped; #11 Frame 0xb735f1ac, for file DebugPythonWithGDB. py, line 26, in main test_1() #14 Frame 0xb740f49c, for file DebugPythonWithGDB. py, line 31 main( os.path.basename( sys.argv[0] ), sys.argv[1:] ) * Python 级的信号句柄 PyObject *func; Handlers[NSIG]; static PyObject * signal_signal ( PyObject *self, PyObject *args ) 50
5 signal_handler() 是 Python 解释器自带的通用型 C 级信号句 else func = signal_handler; 柄, 是那种最原始的单形参信号句柄, 不是高大上的三形参信号句柄 所有 Python 级信号句柄只对应这一个 C 级信号句柄, 二者不是同步调用关系, 只是通过 Handlers[] 全局数组存在异步关系 static void signal_handler ( int sig_num ) * PyOS_setsig() 最终调了 C 函数 sigaction() 或 signal() 安装信号句柄 这个封 * 装很简单,sa_flags 保持为 0, 没有指定 SA_ RESTART 调了 * siginterrupt(sig,1), 尽可能打断系统调用, 使之返回 EINTR if ( PyOS_setsig( sig_num, func ) == SIG_ERR ) trip_signal( sig_num ); static void trip_signal ( int sig_num ) * 表示 Python 解释器有空时需要调用这个 Python 级信号句柄 Handlers[sig_num].tripped = 1; old_handler = Handlers[sig_num].func; Handlers[sig_num].tripped = 0; Py_INCREF( obj ); * 设置 Python 级信号句柄 Py_AddPendingCall( checksignals_witharg, NULL ); signal_handler() 真正干的活就是调用 trip_signal(), 后者处理 Handlers[] 全局数组, 通知 Python 解释器有 Python 级未决信号待处理 Py_AddPendingCall() 安排 " 延迟调用 ",Python 解释器会 Handlers[sig_num].func = obj; 择机调用 checksignals_witharg(), 进行 Python 级异步信号处理 51
6 Python 解释器并不会在收到信号时立即调用 Python 级信号句柄 checksignals_witharg() 最终会去调用 PyErr_CheckSignals(), 后者负责调用 Python 级信号句柄 : int PyErr_CheckSignals ( void ) for ( i = 1; i < NSIG; i++ ) if ( Handlers[i].tripped ) Handlers[i].tripped = 0; if ( arglist ) * 调用 Python 级信号句柄 result = PyEval_CallObject( Handlers[i].func, arglist ); 那什么时候由谁来调用 checksignals_witharg() 呢? 这就必须了解 Python 字节码解释执行流程 : PyObject * PyEval_EvalFrameEx ( PyFrameObject *f, int throwflag ) * 解释执行 PVM 指令的主循环 for ( ; ; ) if ( --_Py_Ticker < 0 ) _Py_Ticker = _Py_CheckInterval; if ( pendingcalls_to_do ) * 在此处理 " 延迟调用 " if ( Py_MakePendingCalls() < 0 ) * 臭名昭著的全局解释器锁 52
7 if ( interpreter_lock ) PyThread_release_lock( interpreter_lock ); PyThread_acquire_lock( interpreter_lock, 1 ); * 解释执行 PVM 指令的主 switch READ_TIMESTAMP( inst0 ); switch ( opcode ) 指令, 它会在适当时候调用 Py_MakePendingCalls() 处理 " 延迟调用 ", 如果存在 Python 级未决信号, 就由 Py_MakePendingCalls() 最终调用 checksignals_witharg() 什么是适当时候? 解释执行 PVM 指令的主循环缺省情况下每执行 100 条 PVM 指令就会来处理一下 " 延迟调用 " 每条 PVM 指令可以认为是原子操作 一条 PVM 指令有可能引发 C 函数调用, 后者隶属该条 PVM 指令, 属于同一个最小执行单位 100 这个阈值可以通过 sys.setcheckinterval() 调整 五 Python 级信号句柄失效的原因下面的伪代码解释了原始问题中 Python 级信号句柄失效的本质原因 : C 级信号句柄 ( 只能在主线程中安装 ) 安排 " 延迟调用 ", 暗含全局计数器清零 Python 字节码解释器无限循环 if ( 全局计数器为 0, 表示已经解释执行了 100 条 PVM 指令 ) 计数器恢复最大值 ( 缺省 100) main loop PyEval_EvalFrameEx() 负责解释执行 PVM(Python 虚拟机 ) if ( 存在 " 延迟调用 " ) 主线程处理 " 延迟调用 " 53
8 * 流程需要到这里才有机会执行 on_sigterm() 虽然现在计 Python 级信号句柄就是个摆设, 基本无用, 还是 C 级信号句 * 数据器已经为 0, 但流程永远到不了这里 主线程调用 Python 级信号句柄 柄管事 假设单条 PVM 指令的解释执行流程陷入等待 阻塞 死循 环或死锁, 而某信号到达无法使之摆脱此状态并结束本条 PVM 指 令的解释执行时,Python 级信号句柄永无机会执行, 比如 Ctrl-C 主动释放 GIL, 给其他线程执行的机会 再次申请 GIL 失效 由于臭名昭著的 GIL 的存在,Python 级多线程并不能避免这 种情况发生 假设非主线程解释执行某条 PVM 指令时流程陷入等 待 阻塞 死循环或死锁, 而某信号到达无法使之摆脱此状态并结 束该条 PVM 指令的解释执行, 该线程将无法主动释放 GIL, 主线程 else 将永远挂起 而只有主线程才能处理 " 延迟调用 " 执行 Python 级信号句柄 Python 给 SIGINT 也安装了 Python 级信号句柄, 从而取消了 OS 默认的 Term 行为 本来 SIGINT 的 Python 级信号句柄会抛出 * 流程在此,sem_wait() 在此陷入死锁 SIGTERM 打断系统调用, * sem_wait() 返回 EINTR, 但外层的 PyThread_ acquire_lock() * 封装流程又陷入死循环, 再次调用 sem_wait(), 再次陷入死锁 解释执行 1 条 PVM 指令全局计数器递减 KeyboardInterrupt 异常, 现在没这机会, 所以 Ctrl-C 无法将其中止 SIGINT 的 Python 级信号句柄是 signal.default_int_handler, 这是一个 built-in 函数 如果 Python 源码中针对线程对象调用 join(), 在被等待线程存活期间 ( 终止前 ) 很容易出现 Python 级信号句柄得不到执行的现象, 比如 Ctrl-C 失效 原理同上,join() 在等待, 此时那条 PVM 指令一直没结束 t.join() cond.wait() 最终都在调 PyThread_acquire_lock(), 内里封装 sem_wait() 如果只是 sem_wait() 还没事, 因为有 54
9 EINTR 但外层的 PyThread_acquire_lock() 封装流程特别处理了 EINTR, 在用户态 ( 相比 SA_RESTART) 人工重启 sem_wait(), 局面恶化 如果用 signal.signal() 安装 Python 级信号句柄, 后者只有在 Python 字节码解释执行函数 PyEval_EvalFrameEx() 重获控制权时才有可能被调用, 收到信号时 Python 级信号句柄从来都不是被立即执行, 假设当前 EIP 位于 C 代码中, 比如 built-in 函数或 C 扩展模块,Python 级信号句柄就会被安排 " 延迟调用 ", 当前述 C 代码将控制权交还给 PyEval_EvalFrameEx() 时,Python 级信号句柄得到执行机会 这个过程可能很长, 完全不可预测 如果用 readline() 进入交互模式, 除非你输入点什么并回车, 否则你的 Python 级信号句柄绝对不会得到执行, 因为 readline() 使流程进入 built-in 函数, 直到输入一行内容, 控制权才会交还给 PyEval_ EvalFrameEx() 因为 C 级信号句柄 signal_handler() 总是返回, 而不是 siglongjmp() 之类的, 因此针对同步信号 SIGFPE SIGSEGV 安装 Python 级信号句柄没有任何意义, 该崩还得崩 关于 Python 的信号处理机制, 可以小结成几个问答 : Q: Python 是如何处理信号的, 我安装的信号句柄何时得到执行, 与 C 编程时的情形一样吗? A: Python 解释器自带通用型 C 级信号句柄 signal_handler(), 收到信号时该函数立即得到执行 它将 Handlers[sig_num].tripped 置位, 调 Py_AddPendingCall() 安排 " 延迟调用 " Python 字节码解释执行函数 PyEval_EvalFrameEx() 重获控制权时调 Py_ MakePendingCalls() 处理 " 延迟调用 ",Python 级信号句柄被执行 C 级的信号句柄永远是 signal_handler(), 对于 Python 代码来说, 不可更改 Q: 如果进程正运行在 Python 的 C 扩展模块中, 信号到达时会立即转去执行信号句柄吗? A: 如果问的是 Python 级信号句柄, 答案是, 不会 要等流程离开 C 扩展模块 回到 Python 字节码解释器中时, 才有机会执行 Python 级信号句柄 顺便说一下 Python 程序中 Ctrl-C 失效的最简解决方案 : signal.signal( signal.sigint, signal.sig_dfl ) 这将导致 OS 默认 Term 行为生效 六 常用条件断点执行 built-in 函数 time.sleep() 时断下 : b P y C F u n c t i o n _ C a l l i f ( 0 = = s t r c m p ( P y S t r i n g _ AsString(((PyCFunctionObject *)func)->m_module),"time") && 0==strcmp(((PyCFunctionObject *)func)->m_ml->ml_ name,"sleep")) 执行 Python 函数 on_sigterm() 时断下 : b PyEval_EvalFrameEx if (0==strcmp(PyString_AsString(f- >f_code->co_name),"on_sigterm")) 55
10 执行到第 7 行时断下 : b ceval.c:1100 if (7==PyFrame_ GetLineNumber(f)) 这种方式可以针对任意行设断,"ceval. c:1100" 对应中 PyEval_EvalFrameEx() 中这行代码 : switch ( opcode ) 七 在 GDB 中获取 Python 字节码 $ /usr/bin/python2.7-dbg 假设我们没符号, 拦截 PyCode_New() 并查看形参 code name firstlineno: # gdb -q -ex "b *PyCode_New" -p $(pgrep -f python2.7-dbg) commands 1 silent s e t $ c o d e = * ( u n s i g n e d i n t * ) ($esp+0x14) hexdump $code+0x1c *($code+0x10) s e t $ n a m e = * ( u n s i g n e d i n t * ) ($esp+0x30)+0x1c printf "name=[%s]\n",$name set $firstlineno=*(unsigned int *) ($esp+0x34) printf "firstlineno=[%u]\n",$firstlineno end 在 Python 解释器中定义函数 : def foo () : print( 'Hello World!' ) 断点命中, 相关命令被执行 : B7394E7C d..ghd..s name=[foo] firstlineno=[1] (gdb) c Continuing. B73967C A d..z..d..s name=[<module>] firstlineno=[1] (gdb) " " 这种就是 Python 字节码 这里演示的办法可以对付 co_code 成员被藏起来的那些修改过的 Python 解释器 八 其他在 GDB 中还可以对 Python 源代码进行热 Patch, 主要原理是 PyImport_ ReloadModule() 调用 PyImport_ReloadModule() 时机要选对, 比如 py-bt 显示当前栈帧位于 xxx 中, 就不能立即 reload xxx, 必须 finish 并确保离开 xxx 之后再 reload xxx, 否则必将触发 SIGABRT 所以 _main_ 是不能 reload 的 限于篇幅, 这里不再进行具体演示 九 参考文献 h t t p s : / / w i k i. p y t h o n. o r g / m o i n / DebuggingWithGdb gdb.html signal.html 56
ebook15-10
1 0 10.1 U N I X V 7 4. 3 B S D S V R 3 P O S I X. 1 100 % 10.2 S I G S I G A B RT a b o r t S I G A L R M a l a r m V 7 1 5 S V R 4 4. 3 + B S D 31 < s i g n a l. h > 0 10. 9 k i l l 0 P O S I X. 1 D
More informationWWW PHP
WWW PHP 2003 1 2 function function_name (parameter 1, parameter 2, parameter n ) statement list function_name sin, Sin, SIN parameter 1, parameter 2, parameter n 0 1 1 PHP HTML 3 function strcat ($left,
More informationMicrosoft Word - 11.doc
除 錯 技 巧 您 將 於 本 章 學 到 以 下 各 項 : 如 何 在 Visual C++ 2010 的 除 錯 工 具 控 制 下 執 行 程 式? 如 何 逐 步 地 執 行 程 式 的 敘 述? 如 何 監 看 或 改 變 程 式 中 的 變 數 值? 如 何 監 看 程 式 中 計 算 式 的 值? 何 謂 Call Stack? 何 謂 診 斷 器 (assertion)? 如 何
More informationMicrosoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc
2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.
More informationSpyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp
01 1.6 Spyder Anaconda Spyder Python Spyder Python Spyder Spyder 1.6.1 Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Spyder Python File
More informationSDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基
开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些
More informationMicrosoft Word - 2CA13內文.doc
006 公 民 - 歷 屆 試 題 全 解 答 案 是 完 全 正 確 的? : 能 源 使 用 愈 多, 除 了 帶 來 經 濟 成 長 外, 相 對 的, 也 會 帶 來 負 面 的 環 保 問 題 我 們 在 發 展 經 濟 的 過 程 中, 若 不 能 兼 顧 環 境 資 源 的 保 育, 將 賠 上 後 代 子 孫 的 生 存 環 境, 這 是 下 列 那 一 種 理 念? 比 較 利 益
More information1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File
51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test
More informationebook8-30
3 0 C C C C C C++ C + + C++ GNU C/C++ GNU egcs UNIX shell s h e l l g a w k P e r l U N I X I / O UNIX shell awk P e r l U N I X C C C C C C U N I X 30.1 C C U N I X 70 C C U N I X U N I X U N I X C Dennis
More information創 作 動 機 因 未 成 年 懷 孕 的 案 例 從 國 中 時 期 就 在 身 邊 屢 屢 發 生, 這 意 外 中 的 小 生 命 會 讓 一 個 人 或 說 是 一 對 父 母 的 人 生 產 生 劇 烈 衝 擊, 先 不 談 是 否 成 全 生 命 的 誕 生, 往 往 就 在 社 會 倫
目 錄 創 作 動 機 ------------------2 人 物 介 紹 ------------------3 劇 情 大 綱 ------------------6 劇 本 -----------------7 1 創 作 動 機 因 未 成 年 懷 孕 的 案 例 從 國 中 時 期 就 在 身 邊 屢 屢 發 生, 這 意 外 中 的 小 生 命 會 讓 一 個 人 或 說 是 一 對
More informationNatural Language Processing, Topic Modeling, Neural Text Generation and Ali Xiaomi
并行计算 :Parallel Computing 结构编程算法应用 3.4 Python 并发程序设计 徐悦甡 (Yueshen Xu) ysxu@xidian.edu.cn 软件工程系西安电子科技大学 本节提纲 Python 语言基础 Python 基础语法 Python 面向对象编程 Python 并发程序设计 (Concurrency) Python 多线程机制 Python 中线程的创建 Python
More information6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit
6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128
More information51 C 51 isp 10 C PCB C C C C KEIL
http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom
More informationstruct Header { 0x00, 不知啥情况 0x data_bytes; 2 tag; 对应 py2exe 参数 zipfile, 以 NUL 字符结尾 如果 zipfile 为 None, 此处只有一 个 \0, 此时 PYTHONSCRIPT 占 0x11(17) 字
py2exe 原理剖析 安全研究部陈庆 py2exe 可以将 Python 代码打包成独立可执行的 EXE, 有助于向未安装 Python 运行 环境的用户分发某些小工具 某些恶意软件用 Python 开发, 然后用 py2exe 打包成 EXE 并传播 本文从逆向工程的角度介绍 py2exe 的实现原理, 剖析其生成的 EXE 格式 一 解析 EXE 设有 rom0scan.py, 经 py2exe
More informationuntitled
1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override
More information提问袁小兵:
C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.
More informationC PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha
CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc
More informationpython内存管理
Python 级内存管理 - xiaorui.cc Object-specific allocators [ int ] [ dict ] [ list ]... [ string ] Python core +3 [ Python's object allocator ]
More information概述
OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3
More informationMicrosoft Word - MSP430 Launchpad 指导书.docx
Contents 3... 9... 14 MSP430 LAUNCHPAD 指导书 3 第一部分第一个工程 New Project File > New > CCS Project Project name: ButtonLED Device>Family: MSP430 Variant: MSP430G2553 Project templates and examples : Empty Project
More information全国计算机技术与软件专业技术资格(水平)考试
全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明
More informationepub83-1
C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C
More informationGuava学习之Resources
Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于
More informationC语言的应用.PDF
AVR C 9 1 AVR C IAR C, *.HEX, C,,! C, > 9.1 AVR C MCU,, AVR?! IAR AVR / IAR 32 ALU 1KBytes - 8MBytes (SPM ) 16 MBytes C C *var1, *var2; *var1++ = *--var2; AVR C 9 2 LD R16,-X ST Z+,R16 Auto (local
More information, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1
21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414
More information无类继承.key
无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255
More informationGo构建日请求千亿微服务最佳实践的副本
Go 构建 请求千亿级微服务实践 项超 100+ 700 万 3000 亿 Goroutine & Channel Goroutine Channel Goroutine func gen() chan int { out := make(chan int) go func(){ for i:=0; i
More information第5章修改稿
(Programming Language), ok,, if then else,(), ()() 5.0 5.0.0, (Variable Declaration) var x : T x, T, x,,,, var x : T P = x, x' : T P P, () var x:t P,,, yz, var x : int x:=2. y := x+z = x, x' : int x' =2
More informationNOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p
NOWOER.OM /++ 程师能 评估. 单项选择题 1. 下 描述正确的是 int *p1 = new int[10]; int *p2 = new int[10](); p1 和 p2 申请的空间 的值都是随机值 p1 和 p2 申请的空间 的值都已经初始化 p1 申请的空间 的值是随机值,p2 申请的空间 的值已经初始化 p1 申请的空间 的值已经初始化,p2 申请的空间 的值是随机值 2.
More informationICD ICD ICD ICD ICD
MPLAB ICD2 MPLAB ICD2 PIC MPLAB-IDE V6.0 ICD2 usb PC RS232 MPLAB IDE PC PC 2.0 5.5V LED EEDATA MPLAB ICD2 Microchip MPLAB-IDE v6.0 Windows 95/98 Windows NT Windows 2000 www.elc-mcu.com 1 ICD2...4 1.1 ICD2...4
More information新・明解C言語入門編『索引』
!... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177
More informationMicrosoft PowerPoint - ds-1.ppt [兼容模式]
http://jwc..edu.cn/jxgl/ HomePage/Default.asp 2 说 明 总 学 时 : 72( 学 时 )= 56( 课 时 )+ 16( 实 验 ) 行 课 时 间 : 第 1 ~14 周 周 学 时 : 平 均 每 周 4 学 时 上 机 安 排 待 定 考 试 时 间 : 课 程 束 第 8 11 12 章 的 内 容 为 自 学 内 容 ; 目 录 中 标 有
More informationPython a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2
Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790
More informationchap07.key
#include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,
More informationA Preliminary Implementation of Linux Kernel Virus and Process Hiding
邵 俊 儒 翁 健 吉 妍 年 月 日 学 号 学 号 学 号 摘 要 结 合 课 堂 知 识 我 们 设 计 了 一 个 内 核 病 毒 该 病 毒 同 时 具 有 木 马 的 自 动 性 的 隐 蔽 性 和 蠕 虫 的 感 染 能 力 该 病 毒 获 得 权 限 后 会 自 动 将 自 身 加 入 内 核 模 块 中 劫 持 的 系 统 调 用 并 通 过 简 单 的 方 法 实 现 自 身 的
More information四川省普通高等学校
四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9
More information多进程管理副本.key
美妙的多进程管理 造 个类 gunicorn 的轮 blog: xiaorui.cc github: github.com/rfyiamcool 内容 supervisor vs gunicorn vs uwsgi linux 异步信号 孤 进程 vs 僵 进程 daemon 的实现 prefork 是怎么 回事 打造 个较完善的多进程管理轮 怎么写代码 Master Worker elegance
More information《大话设计模式》第一章
第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜
More informationC++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1
C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,
More informationMicrosoft Word - PHP7Ch01.docx
PHP 01 1-6 PHP PHP HTML HTML PHP CSSJavaScript PHP PHP 1-6-1 PHP HTML PHP HTML 1. Notepad++ \ch01\hello.php 01: 02: 03: 04: 05: PHP 06:
More informationCC213
: (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,
More informationMicrosoft Word - 01.DOC
第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的
More informationC++ 程式設計
C C 料, 數, - 列 串 理 列 main 數串列 什 pointer) 數, 數, 數 數 省 不 不, 數 (1) 數, 不 數 * 料 * 數 int *int_ptr; char *ch_ptr; float *float_ptr; double *double_ptr; 數 (2) int i=3; int *ptr; ptr=&i; 1000 1012 ptr 數, 數 1004
More informationFY.DOC
高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主
More information2/80 2
2/80 2 3/80 3 DSP2400 is a high performance Digital Signal Processor (DSP) designed and developed by author s laboratory. It is designed for multimedia and wireless application. To develop application
More information1 LINUX IDE Emacs gcc gdb Emacs + gcc + gdb IDE Emacs IDE C Emacs Emacs IDE ICE Integrated Computing Environment Emacs Unix Linux Emacs Emacs Emacs Un
Linux C July 27, 2016 Contents 1 Linux IDE 1 2 GCC 3 2.1 hello.c hello.exe........................... 5 2.2............................... 9 2.2.1 -Wall................................ 9 2.2.2 -E..................................
More informationVHDL(Statements) (Sequential Statement) (Concurrent Statement) VHDL (Architecture)VHDL (PROCESS)(Sub-program) 2
VHDL (Statements) VHDL(Statements) (Sequential Statement) (Concurrent Statement) VHDL (Architecture)VHDL (PROCESS)(Sub-program) 2 (Assignment Statement) (Signal Assignment Statement) (Variable Assignment
More informationAN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING
AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING 前言 - Andrew Payne 目录 1 2 Firefly Basics 3 COMPONENT TOOLBOX 目录 4 RESOURCES 致谢
More informatione bug 0 x=0 y=5/x 0 Return 4 2
e 1 4 1 4 4.1 4.2 4.3 4.4 4.5 e 2 4.1 bug 0 x=0 y=5/x 0 Return 4 2 e 3 4 3 e 4 (true) (false) 4 4 e 5 4 5 4.2 1 G= V E V={n1,n2,,n m } E={e1,e2,,e p } e k ={n i,n j }, n i,n j V e 6 4.2 4 6 1 e 3 n 1 e
More informationCC213
: (Ken-Yi Lee), E-mail: feis.tw@gmail.com 177 [P179] (1) - [P181] [P182] (2) - for [P183] (3) - switch [P184] [P187] [P189] [P194] 178 [ ]; : : int var; : int var[3]; var 2293620 var[0] var[1] 2293620
More informationmvc
Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication
More information标题
增幅名列广西第一 增幅名列广西第一 防城港市 2008 ~ 2009 年发展回顾与展望 吴东海 尹晓洲 摘 要: 2008 年防城港市生产总值突破 200 亿元, 达到 212 18 亿元, 增长 20 1%, 增幅名列广西第一 主要经济指标增幅保持在广西前列, 开 放发展成就突出, 各项社会事业全面发展 2009 年, 防城港市将以钢铁 核电两大项目为引领, 以 项目建设攻坚年 为主题, 大力实施产业发展
More information目 录 一 重 要 提 示... 3 二 公 司 主 要 财 务 数 据 和 股 东 变 化... 3 三 重 要 事 项... 8 四 附 录... 15 2 / 28
公 司 代 码 :600549 公 司 简 称 : 厦 门 钨 业 厦 门 钨 业 股 份 有 限 公 司 2015 年 第 三 季 度 报 告 1 / 28 目 录 一 重 要 提 示... 3 二 公 司 主 要 财 务 数 据 和 股 东 变 化... 3 三 重 要 事 项... 8 四 附 录... 15 2 / 28 一 重 要 提 示 1.1 公 司 董 事 会 监 事 会 及 董 事
More informationSDP 1 2 3 4 8 9 10 12 19
SDP SDP 1 2 3 4 8 9 10 12 19 SDP 2 SDP CANBUS 3m/s 48 1 2 N 3 4 5 6 7 8 9 EMC EMC ENS008212 EN618003 10 IP21 SDP 3 1 1 4 2 5 3 P24 103 104 N24 G24 P24 101 102 N24 G24 J2 J3 n P2 P1 P3 J2 J1 J3 1 P2 P1
More information个 小 小 的 乡 下 人 木 匠 的 儿 子, 竟 然 有 这 么 大 的 力 量 其 实 就 是 这 点, 祂 活 出 来 的 那 种 爱, 是 世 界 上 没 有 的 祂 活 出 来 的 爱 是 世 界 上 的 人 都 需 要 的, 但 却 是 人 人 在 这 个 世 界 上 都 得 不 到
人 间 有 真 爱 在 国 庆 假 期 的 时 候, 我 正 在 感 恩 堂 参 加 祷 告 会, 忽 然 一 个 十 多 年 没 有 见 面 的 同 学 打 我 电 话, 说 见 见 我 原 来 他 失 恋 了, 和 他 女 朋 友 吹 了 他 可 能 考 虑 到 我 已 经 结 过 婚, 刚 好 也 在 上 海, 就 想 联 系 我 他 说 他 女 朋 友 把 他 说 得 一 文 不 值, 让
More information2013年度西藏自治区教育厅
附 件 3: 西 藏 自 治 区 国 土 资 源 厅 2016 年 度 部 门 预 算 2016 年 3 月 16 日 1 目 录 第 一 部 分 西 藏 自 治 区 国 土 资 源 厅 概 况 一 主 要 职 能 二 部 门 单 位 构 成 第 二 部 分 西 藏 国 土 资 源 厅 2016 年 度 部 门 预 算 表 一 财 政 拨 款 收 支 总 表 二 一 般 公 共 预 算 支 出 表
More information實用文格式大全.doc
(1 (2 (3 (4 (5 (6 (7 (8 (9 (10 1 ( ( ( ( [ ( ] [ ( ]+ [ ] ( ( 2001 6 2 2 2 2 3 ( ( ( (? (1 (2 (3 (4 ( 2002 ( 1999 ( 2001 6 6 4, 2 4 4 5 ( 1 1 2 1 2 ( ( _ - - x x x _ ( 1999 8 3 1 1 3 1 8 1 xxx 1 1 1 2
More information薛 秦 高 继 宁 宋 明 锁 文 洪 梁 瑞 敏 贾 跃 进 内 蒙 古 自 治 区 (3 人 ) 琪 格 其 图 米 子 良 赵 震 生 辽 宁 省 (8 人 ) 田 素 琴 白 凤 鸣 肖 瑞 崇 黄 恩 申 白 长 川 杨 世 勇 李 敬 林 王 秀 云 吉 林 省 (5 人 ) 赵 继 福
2014 年 全 国 名 老 中 医 药 专 家 传 承 工 作 室 建 设 项 目 专 家 名 单 北 京 市 (5 人 ) 王 文 友 张 志 真 王 应 麟 黄 丽 娟 高 才 达 天 津 市 (5 人 ) 马 融 于 志 强 吴 炳 忠 武 连 仲 张 洪 义 河 北 省 (6 人 ) 韩 志 河 张 士 舜 李 淑 荣 刘 玉 洁 刘 启 泉 高 慧 山 西 省 (6 人 ) 北 京 市
More informationOracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1.
Oracle Solaris Studio 12.2 IDE 2010 9 2 8 9 10 11 13 20 26 28 30 32 33 Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1. "File" > "New
More informationMicrosoft Word - linux命令及建议.doc
Linux 操 作 系 统 命 令 集 1 基 本 命 令 查 看 系 统 信 息 : uname -a 修 改 密 码 : passwd 退 出 : logout(exit) 获 取 帮 助 : man commands 2 文 件 和 目 录 命 令 显 示 当 前 工 作 目 录 : pwd 改 变 所 在 目 录 : cd cd - 切 换 到 上 一 次 使 用 的 目 录 cd 切 换
More information华恒家庭网关方案
LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU
More informationbingdian001.com
TSM12M TSM12 STM8L152C6, STM8L152R8 MSP430F5325 whym1987@126.com! /******************************************************************************* * : TSM12.c * : * : 2013/10/21 * : TSM12, STM8L f(sysclk)
More information2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF
Chapter 2 WF 2.1 WF 2.2 2. XAML 2. 2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF WF WF WF WF EDI API WF Visual Studio Designer 1 2.1 WF Windows Workflow Foundation 2 WF 1 WF Domain-Specific
More information附录J:Eclipse教程
附 录 J:Eclipse 教 程 By Y.Daniel Liang 该 帮 助 文 档 包 括 以 下 内 容 : Eclipse 入 门 选 择 透 视 图 创 建 项 目 创 建 Java 程 序 编 译 和 运 行 Java 程 序 从 命 令 行 运 行 Java Application 在 Eclipse 中 调 试 提 示 : 在 学 习 完 第 一 章 后 使 用 本 教 程 第
More informationHow to Debug Tuxedo Server printf( Input data is: %s, inputstr); fprintf(stdout, Input data is %s, inputstr); fprintf(stderr, Input data is %s, inputstr); printf( Return data is: %s, outputstr); tpreturn(tpsuccess,
More information提纲 1 2 OS Examples for 3
第 4 章 Threads2( 线程 2) 中国科学技术大学计算机学院 October 28, 2009 提纲 1 2 OS Examples for 3 Outline 1 2 OS Examples for 3 Windows XP Threads I An Windows XP application runs as a seperate process, and each process may
More informationMicrosoft Word - Learn Objective-C.doc
Learn Objective C http://cocoadevcentral.com/d/learn_objectivec/ Objective C Objective C Mac C Objective CC C Scott Stevenson [object method]; [object methodwithinput:input]; output = [object methodwithoutput];
More informationPowerPoint 簡報
國 家 賠 償 法 概 述 主 講 人 : 宋 恭 良 104.10.12 2015.10.30 1 Q. 老 師 是 否 是 公 務 員? 是 否 適 用 國 賠? 法 務 部 95 年 9 月 14 日 法 律 字 第 0170449 號 函 : 國 家 賠 償 法 第 2 條 第 1 項 規 定 本 法 所 稱 公 務 員 者, 謂 依 法 令 從 事 於 公 務 之 員, 係 採 最 廣 義
More information<4D6963726F736F667420576F7264202D20AC4FBDBDA4FBB67DA96CAABA2DA743A67EAFC5AAA95FA7B9BD5A5F2E646F63>
( 閱 讀 前 ) 練 習 一 動 動 腦, 猜 一 猜 小 朋 友, 現 在 我 們 要 一 起 來 閱 讀 一 本 很 有 趣 的 書, 書 名 是 是 蝸 牛 開 始 的!, 請 動 動 你 的 腦 袋, 想 像 自 己 是 作 者, 猜 猜 這 本 書 在 說 什 麼 樣 的 故 事 呢? 我 覺 得 這 個 故 事 可 能 的 角 色 有 我 覺 得 這 個 故 事 可 能 發 生 的 地
More informationMicrosoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc
2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.
More informationchp6.ppt
Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行
More information103 2 18 103 3 10 103 4 7 103 3 10 103 4 10 9 4 103 4 17 103 4 19 103 5 2 10 103 5 6 17 103 5 2 103 5 10 103 5 14 http://actweb.ukn.edu.tw/webexam/frmlogin.aspx http://www.admission.ukn.edu.tw/ 103 http://www.admission.ukn.edu.tw
More information<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>
1. 請 問 誰 提 出 積 體 電 路 (IC) 上 可 容 納 的 電 晶 體 數 目, 約 每 隔 24 個 月 (1975 年 更 改 為 18 個 月 ) 便 會 增 加 一 倍, 效 能 也 將 提 升 一 倍, 也 揭 示 了 資 訊 科 技 進 步 的 速 度? (A) 英 特 爾 (Intel) 公 司 創 始 人 戈 登. 摩 爾 (Gordon Moore) (B) 微 軟 (Microsoft)
More informationuntitled
露 年 老 女 兩 留 兩 離 不 不 不 料 車 不 料 來 1. 22 年 讀 律 說 2. 女 20 老 女 麗 3. 45 老 論 4. 林 女 43 見 識 女 5. 45 來 老 6. 女 20 女 7. 劉 女 45 利 說 8. 60 9. 50 良 10. 50 11. 45 12. 45 露 1 13. 老 14. 里 50 兩 L 不 1 : L L 切 2 1 切 泥 留 露
More informationE11701
編 輯 推 薦 無 悔 付 出 的 勇 氣 身 邊 是 不 是 有 這 樣 的 人, 總 將 自 己 的 需 求 放 在 最 後, 為 了 所 愛 的 人 無 怨 無 悔 付 出? 以 前 小 編 總 覺 得 這 樣 的 人 很 偉 大 也 很 傻, 怎 麼 能 將 自 己 的 一 切 全 部 投 入 毫 不 保 留? 或 許 是 因 為 見 到 身 邊 朋 友 為 了 愛 情 義 無 反 顧, 明
More information秘密
錯 魂 記 歌 仔 戲 劇 本 劇 情 簡 介 義 明 雅 蓮 夫 妻 膝 下 無 子, 養 育 年 齡 差 距 甚 大 的 小 妹 慧 君, 他 們 都 熱 愛 南 管 音 樂, 而 台 南 城 的 南 管 秋 祭 大 會 將 近, 這 三 人 所 屬 的 館 閣 雅 音 齋 也 正 加 緊 練 習, 希 望 能 在 秋 祭 大 會 中 奪 得 頭 彩 某 日 姑 嫂 兩 人 出 門 行 香, 天
More informationKubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.
Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes
More informationC/C++ - 文件IO
C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;
More informationC 1
C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=
More information目 录
1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12
More informationuntitled
1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立
More informationebook14-4
4 TINY LL(1) First F o l l o w t o p - d o w n 3 3. 3 backtracking parser predictive parser recursive-descent parsing L L ( 1 ) LL(1) parsing L L ( 1 ) L L ( 1 ) 1 L 2 L 1 L L ( k ) k L L ( 1 ) F i r s
More information38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民
1 08414159 惠 鴻 眼 鏡 行 桃 園 市 中 壢 區 福 德 里 中 華 路 一 段 186 號 1 樓 30,000 獨 資 宋 耀 鴻 105/04/27 府 經 登 字 第 1059003866 號 2 17891110 承 元 冷 氣 空 調 工 程 行 桃 園 市 桃 園 區 中 德 里 國 際 路 1 段 98 巷 50 號 2 樓 之 4 200,000 獨 資 詹 安 平
More information電子商業伺服器管理(終極版).doc
2 3 4 5 Chinese Linux Documentation Project / 6 7 8 9 10 #!/bin/sh # # named This shell script takes care of starting and stopping # named (BIND DNS server). # # Source function library.. /etc/rc.d/init.d/functions
More information, 即 使 是 在 昏 暗 的 灯 光 下, 她 仍 然 可 以 那 么 耀 眼 我 没 有 地 方 去, 你 会 带 着 我 么 杜 晗 像 是 在 嘲 笑 一 般, 嘴 角 的 一 抹 冷 笑 有 着 不 适 合 这 个 年 龄 的 冷 酷 和 无 情, 看 着 江 华 的 眼 神 毫 无 温
爱 情 飞 过 苍 凉 / 作 者 :18758265241 1 红 色 格 子 的 旅 行 箱, 在 湿 漉 漉 地 上 发 出 刺 啦 刺 啦 的 声 音, 那 么 刺 耳, 就 像 是 此 刻 杜 晗 的 里 一 样, 烦 躁 而 不 安 就 这 样 走 出 来 了,18 年 禁 锢 自 己 的 地 方 就 在 身 后, 杜 晗 手 指 关 节 泛 白, 紧 紧 地 拉 着 旅 行 箱, 走
More informationuntitled
4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker
More information2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer)
1/14 IBM Rational Test RealTime IBM, 2004 7 01 50% IBM Rational Test RealTime IBM Rational Test RealTime 1. 50% IBM Rational Test RealTime IBM Rational Test RealTime 2. IBM Rational Test RealTime Test
More information(Microsoft Word - \251I\250D\245D\246W
第 一 週 週 一 呼 求 主 名 ( 一 ) 哀 三 55 耶 和 華 阿, 我 從 極 深 的 坑 裏 呼 求 你 的 名 56 你 曾 聽 見 我 的 聲 音 ; 求 你 不 要 掩 耳 不 聽 我 的 呼 吸, 我 的 呼 籲 賽 十 二 4 上 在 那 日, 你 們 要 說, 當 稱 謝 耶 和 華, 呼 求 祂 的 名! 6 錫 安 的 居 民 哪, 當 揚 聲 歡 呼, 因 為 以 色
More informationuntitled
1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart
More information電腦做什麼事~第七章
Batteries included 1 built-ins #-*- coding: UTF-8 -*- from getpass import getpass data = {"kaiching":"0000"} def hello(name): " ", name, " " name = raw_input(" ") word = getpass(" ") if data.has_key(name):
More informationuntitled
A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (
More information软件测试设计
2004-1 Overview IEEE 2 4 5 6 :6 0:50 0:40 1:40 0:40 0:40 Total: IEEE 270 7 9 RUP 10 11 - 12 - 1 2. 3. / 4. 5. 6. 7. 8. 9. 13 - 14 - 1. / 2. 3. 15 - 16 - 1. / 2. / / 3. / / 4. 17 - 18 20 21 -. 22 - 3-4
More informationint *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;
Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,
More informationB 6 A A N A S A +V B B B +V 2
B 6 A A N A S A +V B B B +V 2 V A A B B 3 C Vcc FT7 B B 1 C 1 V cc C 2 B 2 G G B 3 C 3V cc C B ND ND GND V A A B B C 1 C 3 C 2 C V cc V cc V 220Ωx B 1 B 2 B 3 B GND GND A B A B 1 1 0 0 0 2 0 1 0 0 3 0
More information