/usr/src/python]> apt-get source python2.7-dbg $ /usr/bin/python2.7-dbg DebugPythonWithGDB.py 1 编辑 GDB 初始化文件 : set debug-file-directory /usr/li

Size: px
Start display at page:

Download "/usr/src/python]> apt-get source python2.7-dbg $ /usr/bin/python2.7-dbg DebugPythonWithGDB.py 1 编辑 GDB 初始化文件 : set debug-file-directory /usr/li"

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

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 information

WWW PHP

WWW 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 information

Microsoft Word - 11.doc

Microsoft Word - 11.doc 除 錯 技 巧 您 將 於 本 章 學 到 以 下 各 項 : 如 何 在 Visual C++ 2010 的 除 錯 工 具 控 制 下 執 行 程 式? 如 何 逐 步 地 執 行 程 式 的 敘 述? 如 何 監 看 或 改 變 程 式 中 的 變 數 值? 如 何 監 看 程 式 中 計 算 式 的 值? 何 謂 Call Stack? 何 謂 診 斷 器 (assertion)? 如 何

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft 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 information

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Spyder 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 information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 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 information

Microsoft Word - 2CA13內文.doc

Microsoft Word - 2CA13內文.doc 006 公 民 - 歷 屆 試 題 全 解 答 案 是 完 全 正 確 的? : 能 源 使 用 愈 多, 除 了 帶 來 經 濟 成 長 外, 相 對 的, 也 會 帶 來 負 面 的 環 保 問 題 我 們 在 發 展 經 濟 的 過 程 中, 若 不 能 兼 顧 環 境 資 源 的 保 育, 將 賠 上 後 代 子 孫 的 生 存 環 境, 這 是 下 列 那 一 種 理 念? 比 較 利 益

More information

1 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

1 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 information

ebook8-30

ebook8-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 information

Natural Language Processing, Topic Modeling, Neural Text Generation and Ali Xiaomi

Natural 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 information

6 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 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 information

51 C 51 isp 10 C PCB C C C C KEIL

51 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 information

struct Header { 0x00, 不知啥情况 0x data_bytes; 2 tag; 对应 py2exe 参数 zipfile, 以 NUL 字符结尾 如果 zipfile 为 None, 此处只有一 个 \0, 此时 PYTHONSCRIPT 占 0x11(17) 字

struct 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 information

untitled

untitled 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 information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C 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 information

python内存管理

python内存管理 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 information

Microsoft Word - MSP430 Launchpad 指导书.docx

Microsoft 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 information

epub83-1

epub83-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 information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

C语言的应用.PDF

C语言的应用.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

, 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

无类继承.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 information

Go构建日请求千亿微服务最佳实践的副本

Go构建日请求千亿微服务最佳实践的副本 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章修改稿

第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 information

NOWOER.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 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 information

ICD ICD ICD ICD ICD

ICD 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言語入門編『索引』

新・明解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 information

Microsoft PowerPoint - ds-1.ppt [兼容模式]

Microsoft PowerPoint - ds-1.ppt [兼容模式] http://jwc..edu.cn/jxgl/ HomePage/Default.asp 2 说 明 总 学 时 : 72( 学 时 )= 56( 课 时 )+ 16( 实 验 ) 行 课 时 间 : 第 1 ~14 周 周 学 时 : 平 均 每 周 4 学 时 上 机 安 排 待 定 考 试 时 间 : 课 程 束 第 8 11 12 章 的 内 容 为 自 学 内 容 ; 目 录 中 标 有

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python 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 information

chap07.key

chap07.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 information

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

A Preliminary Implementation of Linux Kernel Virus and Process Hiding 邵 俊 儒 翁 健 吉 妍 年 月 日 学 号 学 号 学 号 摘 要 结 合 课 堂 知 识 我 们 设 计 了 一 个 内 核 病 毒 该 病 毒 同 时 具 有 木 马 的 自 动 性 的 隐 蔽 性 和 蠕 虫 的 感 染 能 力 该 病 毒 获 得 权 限 后 会 自 动 将 自 身 加 入 内 核 模 块 中 劫 持 的 系 统 调 用 并 通 过 简 单 的 方 法 实 现 自 身 的

More information

四川省普通高等学校

四川省普通高等学校 四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9

More information

多进程管理副本.key

多进程管理副本.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 information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 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 information

Microsoft Word - PHP7Ch01.docx

Microsoft 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 information

CC213

CC213 : (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 information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

C++ 程式設計

C++ 程式設計 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 information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

2/80 2

2/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 information

1 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

1 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 information

VHDL(Statements) (Sequential Statement) (Concurrent Statement) VHDL (Architecture)VHDL (PROCESS)(Sub-program) 2

VHDL(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 information

AN 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 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 information

e bug 0 x=0 y=5/x 0 Return 4 2

e 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 information

CC213

CC213 : (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 information

mvc

mvc 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

目 录 一 重 要 提 示... 3 二 公 司 主 要 财 务 数 据 和 股 东 变 化... 3 三 重 要 事 项... 8 四 附 录... 15 2 / 28 公 司 代 码 :600549 公 司 简 称 : 厦 门 钨 业 厦 门 钨 业 股 份 有 限 公 司 2015 年 第 三 季 度 报 告 1 / 28 目 录 一 重 要 提 示... 3 二 公 司 主 要 财 务 数 据 和 股 东 变 化... 3 三 重 要 事 项... 8 四 附 录... 15 2 / 28 一 重 要 提 示 1.1 公 司 董 事 会 监 事 会 及 董 事

More information

SDP 1 2 3 4 8 9 10 12 19

SDP 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 information

2013年度西藏自治区教育厅

2013年度西藏自治区教育厅 附 件 3: 西 藏 自 治 区 国 土 资 源 厅 2016 年 度 部 门 预 算 2016 年 3 月 16 日 1 目 录 第 一 部 分 西 藏 自 治 区 国 土 资 源 厅 概 况 一 主 要 职 能 二 部 门 单 位 构 成 第 二 部 分 西 藏 国 土 资 源 厅 2016 年 度 部 门 预 算 表 一 财 政 拨 款 收 支 总 表 二 一 般 公 共 预 算 支 出 表

More information

實用文格式大全.doc

實用文格式大全.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 人 ) 赵 继 福

薛 秦 高 继 宁 宋 明 锁 文 洪 梁 瑞 敏 贾 跃 进 内 蒙 古 自 治 区 (3 人 ) 琪 格 其 图 米 子 良 赵 震 生 辽 宁 省 (8 人 ) 田 素 琴 白 凤 鸣 肖 瑞 崇 黄 恩 申 白 长 川 杨 世 勇 李 敬 林 王 秀 云 吉 林 省 (5 人 ) 赵 继 福 2014 年 全 国 名 老 中 医 药 专 家 传 承 工 作 室 建 设 项 目 专 家 名 单 北 京 市 (5 人 ) 王 文 友 张 志 真 王 应 麟 黄 丽 娟 高 才 达 天 津 市 (5 人 ) 马 融 于 志 强 吴 炳 忠 武 连 仲 张 洪 义 河 北 省 (6 人 ) 韩 志 河 张 士 舜 李 淑 荣 刘 玉 洁 刘 启 泉 高 慧 山 西 省 (6 人 ) 北 京 市

More information

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1.

Oracle 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 information

Microsoft Word - linux命令及建议.doc

Microsoft 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 information

bingdian001.com

bingdian001.com TSM12M TSM12 STM8L152C6, STM8L152R8 MSP430F5325 whym1987@126.com! /******************************************************************************* * : TSM12.c * : * : 2013/10/21 * : TSM12, STM8L f(sysclk)

More information

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

2 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教程 附 录 J:Eclipse 教 程 By Y.Daniel Liang 该 帮 助 文 档 包 括 以 下 内 容 : Eclipse 入 门 选 择 透 视 图 创 建 项 目 创 建 Java 程 序 编 译 和 运 行 Java 程 序 从 命 令 行 运 行 Java Application 在 Eclipse 中 调 试 提 示 : 在 学 习 完 第 一 章 后 使 用 本 教 程 第

More information

How 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

提纲 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 information

Microsoft Word - Learn Objective-C.doc

Microsoft 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 information

PowerPoint 簡報

PowerPoint 簡報 國 家 賠 償 法 概 述 主 講 人 : 宋 恭 良 104.10.12 2015.10.30 1 Q. 老 師 是 否 是 公 務 員? 是 否 適 用 國 賠? 法 務 部 95 年 9 月 14 日 法 律 字 第 0170449 號 函 : 國 家 賠 償 法 第 2 條 第 1 項 規 定 本 法 所 稱 公 務 員 者, 謂 依 法 令 從 事 於 公 務 之 員, 係 採 最 廣 義

More information

<4D6963726F736F667420576F7264202D20AC4FBDBDA4FBB67DA96CAABA2DA743A67EAFC5AAA95FA7B9BD5A5F2E646F63>

<4D6963726F736F667420576F7264202D20AC4FBDBDA4FBB67DA96CAABA2DA743A67EAFC5AAA95FA7B9BD5A5F2E646F63> ( 閱 讀 前 ) 練 習 一 動 動 腦, 猜 一 猜 小 朋 友, 現 在 我 們 要 一 起 來 閱 讀 一 本 很 有 趣 的 書, 書 名 是 是 蝸 牛 開 始 的!, 請 動 動 你 的 腦 袋, 想 像 自 己 是 作 者, 猜 猜 這 本 書 在 說 什 麼 樣 的 故 事 呢? 我 覺 得 這 個 故 事 可 能 的 角 色 有 我 覺 得 這 個 故 事 可 能 發 生 的 地

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft 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 information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

103 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>

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344> 1. 請 問 誰 提 出 積 體 電 路 (IC) 上 可 容 納 的 電 晶 體 數 目, 約 每 隔 24 個 月 (1975 年 更 改 為 18 個 月 ) 便 會 增 加 一 倍, 效 能 也 將 提 升 一 倍, 也 揭 示 了 資 訊 科 技 進 步 的 速 度? (A) 英 特 爾 (Intel) 公 司 創 始 人 戈 登. 摩 爾 (Gordon Moore) (B) 微 軟 (Microsoft)

More information

untitled

untitled 露 年 老 女 兩 留 兩 離 不 不 不 料 車 不 料 來 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 information

E11701

E11701 編 輯 推 薦 無 悔 付 出 的 勇 氣 身 邊 是 不 是 有 這 樣 的 人, 總 將 自 己 的 需 求 放 在 最 後, 為 了 所 愛 的 人 無 怨 無 悔 付 出? 以 前 小 編 總 覺 得 這 樣 的 人 很 偉 大 也 很 傻, 怎 麼 能 將 自 己 的 一 切 全 部 投 入 毫 不 保 留? 或 許 是 因 為 見 到 身 邊 朋 友 為 了 愛 情 義 無 反 顧, 明

More information

秘密

秘密 錯 魂 記 歌 仔 戲 劇 本 劇 情 簡 介 義 明 雅 蓮 夫 妻 膝 下 無 子, 養 育 年 齡 差 距 甚 大 的 小 妹 慧 君, 他 們 都 熱 愛 南 管 音 樂, 而 台 南 城 的 南 管 秋 祭 大 會 將 近, 這 三 人 所 屬 的 館 閣 雅 音 齋 也 正 加 緊 練 習, 希 望 能 在 秋 祭 大 會 中 奪 得 頭 彩 某 日 姑 嫂 兩 人 出 門 行 香, 天

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 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 information

C/C++ - 文件IO

C/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 information

C 1

C 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 information

untitled

untitled 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 information

ebook14-4

ebook14-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 information

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

38 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

電子商業伺服器管理(終極版).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 information

untitled

untitled 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 information

2/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)

2/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

(Microsoft Word - \251I\250D\245D\246W 第 一 週 週 一 呼 求 主 名 ( 一 ) 哀 三 55 耶 和 華 阿, 我 從 極 深 的 坑 裏 呼 求 你 的 名 56 你 曾 聽 見 我 的 聲 音 ; 求 你 不 要 掩 耳 不 聽 我 的 呼 吸, 我 的 呼 籲 賽 十 二 4 上 在 那 日, 你 們 要 說, 當 稱 謝 耶 和 華, 呼 求 祂 的 名! 6 錫 安 的 居 民 哪, 當 揚 聲 歡 呼, 因 為 以 色

More information

untitled

untitled 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 information

untitled

untitled 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 information

int *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++;

int *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 information

B 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 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