diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ef8d74e --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +*.md linguist-language=markdown +*.docx linguist-language=markdown +*.doc linguist-language=markdown diff --git "a/C++/\344\270\213/14\347\272\247C++\357\274\210II\357\274\211\350\257\225\345\215\267(A).doc" "b/C++/\344\270\213/14\347\272\247C++\357\274\210II\357\274\211\350\257\225\345\215\267(A).doc" new file mode 100644 index 0000000..e6a69ae Binary files /dev/null and "b/C++/\344\270\213/14\347\272\247C++\357\274\210II\357\274\211\350\257\225\345\215\267(A).doc" differ diff --git "a/C++/\344\270\213/C++ II \347\273\203\344\271\240\351\242\230.doc" "b/C++/\344\270\213/C++ II \347\273\203\344\271\240\351\242\230.doc" new file mode 100644 index 0000000..3e947b0 Binary files /dev/null and "b/C++/\344\270\213/C++ II \347\273\203\344\271\240\351\242\230.doc" differ diff --git "a/C++/\344\270\213/C++(II)\347\273\203\344\271\240\351\242\230 (2).doc" "b/C++/\344\270\213/C++(II)\347\273\203\344\271\240\351\242\230 (2).doc" new file mode 100644 index 0000000..533dc43 Binary files /dev/null and "b/C++/\344\270\213/C++(II)\347\273\203\344\271\240\351\242\230 (2).doc" differ diff --git "a/C++/\344\270\213/C++(II)\347\273\203\344\271\240\351\242\230.doc" "b/C++/\344\270\213/C++(II)\347\273\203\344\271\240\351\242\230.doc" new file mode 100644 index 0000000..3396ab0 Binary files /dev/null and "b/C++/\344\270\213/C++(II)\347\273\203\344\271\240\351\242\230.doc" differ diff --git "a/C++/\344\270\213/\351\253\230\347\250\213\357\274\2102\357\274\211\347\273\203\344\271\240\351\242\230.doc" "b/C++/\344\270\213/\351\253\230\347\250\213\357\274\2102\357\274\211\347\273\203\344\271\240\351\242\230.doc" new file mode 100644 index 0000000..efa242a Binary files /dev/null and "b/C++/\344\270\213/\351\253\230\347\250\213\357\274\2102\357\274\211\347\273\203\344\271\240\351\242\230.doc" differ diff --git "a/JAVA/Java\347\250\213\345\272\217\350\256\276\350\256\241\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\230.md" "b/JAVA/Java\347\250\213\345\272\217\350\256\276\350\256\241\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\230.md" new file mode 100644 index 0000000..c768dda Binary files /dev/null and "b/JAVA/Java\347\250\213\345\272\217\350\256\276\350\256\241\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\230.md" differ diff --git "a/JAVA/Java\347\250\213\345\272\217\350\256\276\350\256\241\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\2302.md" "b/JAVA/Java\347\250\213\345\272\217\350\256\276\350\256\241\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\2302.md" new file mode 100644 index 0000000..f2f8bed Binary files /dev/null and "b/JAVA/Java\347\250\213\345\272\217\350\256\276\350\256\241\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\2302.md" differ diff --git a/README.md b/README.md index 7a525c9..e163776 100644 --- a/README.md +++ b/README.md @@ -11,33 +11,36 @@ 1. 入学英语分班考试✅(Last Updated: 2017-02-23) #### 数理类 -1. 工科数学分析(上/下)✅(Last Updated: 2017-02-24) +1. 工科数学分析(上/下)✅(Last Updated: 2017-06-16) 2. 离散数学✅(Last Updated: 2017-02-24) 3. 线性代数✅(Last Updated: 2017-02-24) -4. 概率论✅(Last Updated: 2017-02-24) -5. 大学物理(上/下)✅(Last Updated: 2017-02-24) +4. 概率论✅(Last Updated: 2017-07-07) +5. 大学物理(上/下)✅(Last Updated: 2017-06-14) +6. 大学物理实验(Last Updated: 2018-10-19) #### 程序设计语言类 -1. C++程序设计(上✅/下❌)(Last Updated: 2017-02-26) +1. C++程序设计(上✅/下✅)(Last Updated: 2017-05-24) 2. Java程序设计✅ #### 计算机科学基础类 1. 计算机科学导论✅(Last Updated: 2017-02-23) 2. 数据库✅(Last Updated: 2017-05-06) -3. 计算机网络✅(Last Updated: 2017-05-06) +3. 计算机网络✅(Last Updated: 2018-06-21) 4. 计算机组成✅(Last Updated: 2017-05-06) 5. 操作系统✅(Last Updated: 2017-05-06) #### 软件工程类 1. 软件需求分析✅(Last Updated: 2017-05-06) -2. 软件测试✅(Last Updated: 2017-05-06) -3. 软件体系架构 ✅(Last Updated: 2017-02-23) +2. 软件测试✅(Last Updated: 2019-6-28) +3. 软件体系架构 ✅(Last Updated: 2018-12-27) +4. 软件项目管理和质量工程(Last Update: 2019-1-2) #### 思想政治类 1. 思修✅(Last Updated: 2017-02-26) 2. 毛概✅(Last Updated: 2017-02-26) 3. 马哲✅(Last Updated: 2017-02-26) 4. 近代史✅(Last Updated: 2017-02-26) +5. 形势与政策(Last Updated: 2019-6-28) #### 其他必修类 1. 工程制图✅(Last Updated: 2017-05-06) @@ -45,5 +48,11 @@ 3. 数字逻辑✅(Last Updated: 2017-05-06) 4. 电子电路✅(Last Updated: 2017-05-06) +#### 方向选修专业课 +1. 物联网系统基础与应用(Last Updated: 2018-12-27) +2. 机器学习(Last Updated: 2018-12-28) +3. 人工智能(Last Updated: 2019-1-2) +4. 智能人机交互技术(Last Updated: 2019-1-2) - +#### 方向无关选修课 +1. 并行程序设计(Last Updated: 2019-6-28) diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/readme.md" "b/\344\272\272\345\267\245\346\231\272\350\203\275/readme.md" new file mode 100644 index 0000000..a6da1ec --- /dev/null +++ "b/\344\272\272\345\267\245\346\231\272\350\203\275/readme.md" @@ -0,0 +1,5 @@ +# ˵ + +ſʹݷѡ޿ΡҵʵͿγģÿԡ2016ĿαGeorge F. Lugerġ˹ܡĽṹͲԡ + +2019-1-2 diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/01-\344\272\224\345\255\220\346\243\213\346\234\272\345\231\250\345\215\232\345\274\210\345\274\225\346\223\216\350\256\276\350\256\241-\345\256\236\351\252\214\350\246\201\346\261\202.doc" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/01-\344\272\224\345\255\220\346\243\213\346\234\272\345\231\250\345\215\232\345\274\210\345\274\225\346\223\216\350\256\276\350\256\241-\345\256\236\351\252\214\350\246\201\346\261\202.doc" new file mode 100644 index 0000000..55686cd Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/01-\344\272\224\345\255\220\346\243\213\346\234\272\345\231\250\345\215\232\345\274\210\345\274\225\346\223\216\350\256\276\350\256\241-\345\256\236\351\252\214\350\246\201\346\261\202.doc" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/02-\344\272\224\345\255\220\346\243\213\346\234\272\345\231\250\345\215\232\345\274\210\345\274\225\346\223\216\350\256\276\350\256\241-\345\256\236\351\252\214\346\212\245\345\221\212\346\250\241\346\235\277.doc" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/02-\344\272\224\345\255\220\346\243\213\346\234\272\345\231\250\345\215\232\345\274\210\345\274\225\346\223\216\350\256\276\350\256\241-\345\256\236\351\252\214\346\212\245\345\221\212\346\250\241\346\235\277.doc" new file mode 100644 index 0000000..256677e Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/02-\344\272\224\345\255\220\346\243\213\346\234\272\345\231\250\345\215\232\345\274\210\345\274\225\346\223\216\350\256\276\350\256\241-\345\256\236\351\252\214\346\212\245\345\221\212\346\250\241\346\235\277.doc" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/03-\345\270\246\347\246\201\346\211\213\344\272\224\345\255\220\346\243\213\345\256\242\346\210\267\347\253\257(\345\257\271\346\210\230\345\271\263\345\217\260).rar" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/03-\345\270\246\347\246\201\346\211\213\344\272\224\345\255\220\346\243\213\345\256\242\346\210\267\347\253\257(\345\257\271\346\210\230\345\271\263\345\217\260).rar" new file mode 100644 index 0000000..b6089b1 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/03-\345\270\246\347\246\201\346\211\213\344\272\224\345\255\220\346\243\213\345\256\242\346\210\267\347\253\257(\345\257\271\346\210\230\345\271\263\345\217\260).rar" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/04-\344\270\244\344\270\252\344\272\224\345\255\220\346\243\213\345\215\232\345\274\210\345\274\225\346\223\216\345\217\257\346\211\247\350\241\214\346\226\207\344\273\266/pbrain-negamax.exe" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/04-\344\270\244\344\270\252\344\272\224\345\255\220\346\243\213\345\215\232\345\274\210\345\274\225\346\223\216\345\217\257\346\211\247\350\241\214\346\226\207\344\273\266/pbrain-negamax.exe" new file mode 100644 index 0000000..5e7fad9 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/04-\344\270\244\344\270\252\344\272\224\345\255\220\346\243\213\345\215\232\345\274\210\345\274\225\346\223\216\345\217\257\346\211\247\350\241\214\346\226\207\344\273\266/pbrain-negamax.exe" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/04-\344\270\244\344\270\252\344\272\224\345\255\220\346\243\213\345\215\232\345\274\210\345\274\225\346\223\216\345\217\257\346\211\247\350\241\214\346\226\207\344\273\266/pbrain-negamax.log" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/04-\344\270\244\344\270\252\344\272\224\345\255\220\346\243\213\345\215\232\345\274\210\345\274\225\346\223\216\345\217\257\346\211\247\350\241\214\346\226\207\344\273\266/pbrain-negamax.log" new file mode 100644 index 0000000..e7f31ac --- /dev/null +++ "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/04-\344\270\244\344\270\252\344\272\224\345\255\220\346\243\213\345\215\232\345\274\210\345\274\225\346\223\216\345\217\257\346\211\247\350\241\214\346\226\207\344\273\266/pbrain-negamax.log" @@ -0,0 +1,1675 @@ +RESTART +DEBUG brain_restart +OK +INFO max_memory 83886080 +INFO timeout_match 300000 +INFO timeout_turn 1000 +INFO game_type 1 +INFO rule 0 +INFO time_left 299926 +INFO folder C:\ProgramData +INFO fb_check 1 +BEGIN +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:0 +DEBUG BestMove:[12,5],0 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[12,5],0 +DEBUG Time use:15,time left:985 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:0 +DEBUG BestMove:[1,11],0 +DEBUG Time use:984,time left:16 +DEBUG brain_my [1,11] +1,11 +INFO time_left 298664 +TURN 4,10 +DEBUG brain_opponents [4 , 10] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:4 +DEBUG BestMove:[4,14],4 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[2,12],0 +DEBUG Time use:266,time left:734 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-2 +DEBUG BestMove:[2,12],-2 +DEBUG Time use:985,time left:15 +DEBUG brain_my [2,12] +2,12 +INFO time_left 297422 +TURN 3,13 +DEBUG brain_opponents [3 , 13] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:8 +DEBUG BestMove:[2,11],8 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[2,10],0 +DEBUG Time use:406,time left:594 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[2,10],-9950 +DEBUG Time use:984,time left:16 +DEBUG brain_my [2,10] +2,10 +DEBUG Depth value:-9950 +DEBUG BestMove:[4,8],-9950 +DEBUG Time use:609,time left:391 +DEBUG brain_my [4,8] +4,8 +INFO time_left 295607 +TURN 3,9 +DEBUG brain_opponents [3 , 9] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[2,11],9950 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[2,11],-9950 +DEBUG Time use:812,time left:188 +DEBUG brain_my [2,11] +2,11 +INFO time_left 294696 +TURN 2,9 +DEBUG brain_opponents [2 , 9] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[2,14],9980 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +INFO time_left 293794 +TURN 2,13 +DEBUG brain_opponents [2 , 13] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[4,11],9950 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[4,11],-9950 +DEBUG Time use:907,time left:93 +DEBUG brain_my [4,11] +4,11 +INFO time_left 292777 +TURN 3,11 +DEBUG brain_opponents [3 , 11] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-8 +DEBUG BestMove:[3,12],-8 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[3,12],-9950 +DEBUG Time use:953,time left:47 +DEBUG brain_my [3,12] +3,12 +INFO time_left 291724 +TURN 5,10 +DEBUG brain_opponents [5 , 10] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[5,14],9950 +DEBUG Time use:15,time left:985 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[7,10],-9950 +DEBUG Time use:922,time left:78 +DEBUG brain_my [7,10] +7,10 +INFO time_left 290698 +TURN 5,11 +DEBUG brain_opponents [5 , 11] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[5,14],9950 +DEBUG Time use:15,time left:985 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[6,12],-9980 +DEBUG Time use:984,time left:16 +DEBUG brain_my [6,12] +6,12 +INFO time_left 289614 +TURN 4,12 +DEBUG brain_opponents [4 , 12] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-14 +DEBUG BestMove:[7,9],-14 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[7,9],-9980 +DEBUG Time use:438,time left:562 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[7,9],-9980 +DEBUG Time use:984,time left:16 +DEBUG brain_my [7,9] +7,9 +INFO time_left 288500 +TURN 2,8 +DEBUG brain_opponents [2 , 8] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-4 +DEBUG BestMove:[1,7],-4 +DEBUG Time use:15,time left:985 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[1,7],-9950 +DEBUG Time use:984,time left:16 +DEBUG brain_my [1,7] +1,7 +INFO time_left 287395 +TURN 5,9 +DEBUG brain_opponents [5 , 9] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[7,12],9950 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +INFO time_left 286339 +TURN 7,11 +DEBUG brain_opponents [7 , 11] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[9,12],9950 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9990 +DEBUG BestMove:[9,12],-9990 +DEBUG Time use:984,time left:16 +DEBUG brain_my [9,12] +9,12 +INFO time_left 285224 +TURN 8,12 +DEBUG brain_opponents [8 , 12] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-9940 +DEBUG BestMove:[9,13],-9940 +DEBUG Time use:15,time left:985 +DEBUG MAX depth:2, +DEBUG Depth value:-9990 +DEBUG BestMove:[9,13],-9990 +DEBUG Time use:562,time left:438 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9990 +DEBUG BestMove:[9,13],-9990 +DEBUG Time use:984,time left:16 +DEBUG brain_my [9,13] +9,13 +INFO time_left 284111 +TURN 4,9 +DEBUG brain_opponents [4 , 9] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-9960 +DEBUG BestMove:[6,9],-9960 +DEBUG Time use:31,time left:969 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9990 +DEBUG BestMove:[3,8],-9990 +DEBUG Time use:984,time left:16 +DEBUG brain_my [3,8] +3,8 +RESTART +DEBUG brain_restart +OK +INFO max_memory 83886080 +INFO timeout_match 300000 +INFO timeout_turn 1000 +INFO game_type 1 +INFO rule 0 +INFO time_left 299897 +INFO folder C:\ProgramData +INFO fb_check 1 +BEGIN +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:0 +DEBUG BestMove:[7,3],0 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[7,3],0 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:0 +DEBUG BestMove:[7,3],0 +DEBUG Time use:985,time left:15 +DEBUG brain_my [7,3] +7,3 +INFO time_left 298792 +TURN 10,6 +DEBUG brain_opponents [10 , 6] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:4 +DEBUG BestMove:[10,3],4 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-6 +DEBUG BestMove:[10,3],-6 +DEBUG Time use:984,time left:16 +DEBUG brain_my [10,3] +10,3 +INFO time_left 297669 +TURN 9,3 +DEBUG brain_opponents [9 , 3] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:8 +DEBUG BestMove:[7,6],8 +DEBUG Time use:15,time left:985 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[7,6],0 +DEBUG Time use:671,time left:329 +DEBUG brain_my [7,6] +7,6 +INFO time_left 296897 +TURN 11,5 +DEBUG brain_opponents [11 , 5] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[8,5],9950 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[8,5],-9950 +DEBUG Time use:906,time left:94 +DEBUG brain_my [8,5] +8,5 +INFO time_left 295881 +TURN 9,4 +DEBUG brain_opponents [9 , 4] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[7,4],9950 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +INFO time_left 294978 +TURN 7,5 +DEBUG brain_opponents [7 , 5] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[10,7],9950 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[10,7],-9950 +DEBUG Time use:844,time left:156 +DEBUG brain_my [10,7] +10,7 +INFO time_left 294039 +TURN 9,6 +DEBUG brain_opponents [9 , 6] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-12 +DEBUG BestMove:[9,7],-12 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[9,5],-9950 +DEBUG Time use:969,time left:31 +DEBUG brain_my [9,5] +9,5 +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[8,8],-9980 +DEBUG Time use:984,time left:16 +DEBUG brain_my [8,8] +8,8 +INFO time_left 291880 +TURN 8,6 +DEBUG brain_opponents [8 , 6] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-30 +DEBUG BestMove:[6,4],-30 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[6,4],-9980 +DEBUG Time use:985,time left:15 +DEBUG brain_my [6,4] +6,4 +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[12,6],-9980 +DEBUG Time use:984,time left:16 +DEBUG brain_my [12,6] +12,6 +INFO time_left 289672 +TURN 12,4 +DEBUG brain_opponents [12 , 4] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-18 +DEBUG BestMove:[13,3],-18 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[13,3],-9980 +DEBUG Time use:422,time left:578 +DEBUG MAX depth:4, +INFO time_left 288629 +TURN 10,8 +DEBUG brain_opponents [10 , 8] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-8 +DEBUG BestMove:[11,9],-8 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[11,9],-9950 +DEBUG Time use:937,time left:63 +DEBUG brain_my [11,9] +11,9 +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[12,7],-9980 +DEBUG Time use:984,time left:16 +DEBUG brain_my [12,7] +12,7 +INFO time_left 286499 +TURN 7,2 +DEBUG brain_opponents [7 , 2] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:0 +DEBUG BestMove:[8,3],0 +DEBUG Time use:15,time left:985 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[8,3],-9950 +DEBUG Time use:984,time left:16 +DEBUG brain_my [8,3] +8,3 +INFO time_left 285397 +TURN 10,4 +DEBUG brain_opponents [10 , 4] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[12,9],9950 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[13,4],-9980 +DEBUG Time use:985,time left:15 +DEBUG brain_my [13,4] +13,4 +INFO time_left 284293 +TURN 11,4 +DEBUG brain_opponents [11 , 4] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-464 +DEBUG BestMove:[8,4],-464 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +RESTART +DEBUG brain_restart +OK +INFO max_memory 83886080 +INFO timeout_match 300000 +INFO timeout_turn 1000 +INFO game_type 1 +INFO rule 0 +INFO time_left 299924 +INFO folder C:\ProgramData +INFO fb_check 1 +BEGIN +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:0 +DEBUG BestMove:[5,13],0 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[5,13],0 +DEBUG Time use:15,time left:985 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:0 +DEBUG BestMove:[14,19],0 +DEBUG Time use:984,time left:16 +DEBUG brain_my [14,19] +14,19 +INFO time_left 298813 +TURN 13,19 +DEBUG brain_opponents [13 , 19] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:0 +DEBUG BestMove:[17,19],0 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[17,19],0 +DEBUG Time use:172,time left:828 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-4 +DEBUG BestMove:[17,19],-4 +DEBUG Time use:984,time left:16 +DEBUG brain_my [17,19] +17,19 +INFO time_left 297683 +TURN 10,19 +DEBUG brain_opponents [10 , 19] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:10 +DEBUG BestMove:[15,19],10 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[15,19],0 +DEBUG Time use:203,time left:797 +DEBUG MAX depth:4, +INFO time_left 286607 +TURN 12,17 +DEBUG brain_opponents [12 , 17] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[13,17],9980 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[13,17],-9980 +DEBUG Time use:985,time left:15 +DEBUG brain_my [13,17] +13,17 +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[9,17],-9980 +DEBUG Time use:985,time left:15 +DEBUG brain_my [9,17] +9,17 +INFO time_left 284382 +TURN 8,18 +DEBUG brain_opponents [8 , 18] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[15,17],9950 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +INFO time_left 283342 +TURN 14,16 +DEBUG brain_opponents [14 , 16] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[12,15],9950 +DEBUG Time use:16,time left:984 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[12,15],-9980 +DEBUG Time use:985,time left:15 +DEBUG brain_my [12,15] +12,15 +INFO time_left 282237 +TURN 10,15 +DEBUG brain_opponents [10 , 15] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,15],9980 +DEBUG Time use:0,time left:1000 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[9,14],-9980 +DEBUG Time use:875,time left:125 +DEBUG brain_my [9,14] +9,14 +INFO time_left 281258 +TURN 13,16 +DEBUG brain_opponents [13 , 16] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,15],9980 +DEBUG Time use:15,time left:985 +DEBUG MAX depth:2, +DEBUG Depth value:-9999 +DEBUG BestMove:[15,15],-9999 +DEBUG Time use:484,time left:516 +DEBUG MAX depth:4, +END +______Process started______ +START 20 +DEBUG brain_init +OK +INFO max_memory 83886080 +INFO timeout_match 300000 +INFO timeout_turn 5000 +INFO game_type 1 +INFO rule 0 +INFO time_left 299500 +INFO folder C:\ProgramData +INFO fb_check 1 +BEGIN +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:0 +DEBUG BestMove:[6,4],0 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[6,4],0 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:0 +DEBUG BestMove:[6,4],0 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [6,4] +6,4 +INFO time_left 294379 +TURN 9,7 +DEBUG brain_opponents [9 , 7] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:4 +DEBUG BestMove:[9,4],4 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[9,4],0 +DEBUG Time use:531,time left:4469 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-4 +DEBUG BestMove:[9,4],-4 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [9,4] +9,4 +INFO time_left 289306 +TURN 8,4 +DEBUG brain_opponents [8 , 4] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:8 +DEBUG BestMove:[9,1],8 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[9,1],0 +DEBUG Time use:672,time left:4328 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[9,1],-9950 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [9,1] +9,1 +INFO time_left 284231 +TURN 10,6 +DEBUG brain_opponents [10 , 6] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[9,3],9950 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[9,3],-9950 +DEBUG Time use:797,time left:4203 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[9,3],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [9,3] +9,3 +INFO time_left 279165 +TURN 9,2 +DEBUG brain_opponents [9 , 2] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[8,2],9950 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[8,2],-9950 +DEBUG Time use:859,time left:4141 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[8,2],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [8,2] +8,2 +INFO time_left 274088 +TURN 7,3 +DEBUG brain_opponents [7 , 3] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[11,5],9950 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[9,5],-9950 +DEBUG Time use:922,time left:4078 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[9,5],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [9,5] +9,5 +INFO time_left 269028 +TURN 11,5 +DEBUG brain_opponents [11 , 5] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-6 +DEBUG BestMove:[12,4],-6 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[12,4],-9980 +DEBUG Time use:1062,time left:3938 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-8 +DEBUG BestMove:[12,4],-8 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [12,4] +12,4 +INFO time_left 263952 +TURN 7,9 +DEBUG brain_opponents [7 , 9] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:4 +DEBUG BestMove:[8,8],4 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-8 +DEBUG BestMove:[8,8],-8 +DEBUG Time use:844,time left:4156 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[8,8],-9950 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [8,8] +8,8 +INFO time_left 258874 +TURN 11,3 +DEBUG brain_opponents [11 , 3] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:16 +DEBUG BestMove:[10,4],16 +DEBUG Time use:15,time left:4985 +DEBUG MAX depth:2, +DEBUG Depth value:-8 +DEBUG BestMove:[11,4],-8 +DEBUG Time use:1875,time left:3125 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-2 +DEBUG BestMove:[11,4],-2 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [11,4] +11,4 +INFO time_left 253801 +TURN 10,4 +DEBUG brain_opponents [10 , 4] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:8 +DEBUG BestMove:[12,1],8 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-6 +DEBUG BestMove:[10,5],-6 +DEBUG Time use:1844,time left:3156 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[10,5],-9950 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [10,5] +10,5 +INFO time_left 248686 +TURN 12,6 +DEBUG brain_opponents [12 , 6] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[13,2],9950 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[14,8],-9950 +DEBUG Time use:2094,time left:2906 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[14,8],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [14,8] +14,8 +INFO time_left 243615 +TURN 11,6 +DEBUG brain_opponents [11 , 6] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[13,2],9950 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[13,6],-9980 +DEBUG Time use:3032,time left:1968 +DEBUG MAX depth:4, +INFO time_left 238614 +TURN 9,6 +DEBUG brain_opponents [9 , 6] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:8 +DEBUG BestMove:[8,6],8 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG Depth value:-10 +DEBUG BestMove:[8,6],-10 +DEBUG Time use:2235,time left:2765 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[8,6],-9950 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [8,6] +8,6 +DEBUG Depth value:-9950 +DEBUG BestMove:[11,9],-9950 +DEBUG Time use:2953,time left:2047 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[11,9],-9950 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [11,9] +11,9 +INFO time_left 228474 +TURN 10,8 +DEBUG brain_opponents [10 , 8] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[12,5],9950 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[13,5],-9980 +DEBUG Time use:3172,time left:1828 +DEBUG brain_my [13,5] +13,5 +INFO time_left 225255 +TURN 9,9 +DEBUG brain_opponents [9 , 9] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-6 +DEBUG BestMove:[8,10],-6 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[8,10],-9980 +DEBUG Time use:1891,time left:3109 +DEBUG MAX depth:4, +INFO time_left 220270 +TURN 8,9 +DEBUG brain_opponents [8 , 9] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[13,8],9950 +DEBUG Time use:32,time left:4968 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[10,9],-9980 +DEBUG Time use:3516,time left:1484 +DEBUG brain_my [10,9] +10,9 +INFO time_left 216708 +TURN 9,10 +DEBUG brain_opponents [9 , 10] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:-6 +DEBUG BestMove:[9,8],-6 +DEBUG Time use:32,time left:4968 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[9,8],-9980 +DEBUG Time use:2063,time left:2937 +DEBUG MAX depth:4, +INFO time_left 211724 +TURN 6,9 +DEBUG brain_opponents [6 , 9] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:4 +DEBUG BestMove:[5,9],4 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[5,9],-9950 +DEBUG Time use:2860,time left:2140 +DEBUG MAX depth:4, +INFO time_left 206738 +TURN 6,8 +DEBUG brain_opponents [6 , 8] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[13,8],9950 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[13,8],-9950 +DEBUG Time use:4203,time left:797 +DEBUG brain_my [13,8] +13,8 +INFO time_left 202477 +TURN 13,7 +DEBUG brain_opponents [13 , 7] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[16,8],9950 +DEBUG Time use:15,time left:4985 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-4 +DEBUG BestMove:[14,6],-4 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [14,6] +14,6 +INFO time_left 193058 +TURN 15,7 +DEBUG brain_opponents [15 , 7] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,8],9980 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[12,7],-9950 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [12,7] +12,7 +INFO time_left 187998 +TURN 10,11 +DEBUG brain_opponents [10 , 11] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,8],9980 +DEBUG Time use:47,time left:4953 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[11,12],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [11,12] +11,12 +INFO time_left 182939 +TURN 7,8 +DEBUG brain_opponents [7 , 8] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,8],9980 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[6,7],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [6,7] +6,7 +INFO time_left 177873 +TURN 8,7 +DEBUG brain_opponents [8 , 7] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,8],9980 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[5,10],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [5,10] +5,10 +INFO time_left 172819 +TURN 10,7 +DEBUG brain_opponents [10 , 7] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,8],9980 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[7,7],-9950 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [7,7] +7,7 +INFO time_left 167752 +TURN 12,9 +DEBUG brain_opponents [12 , 9] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,8],9980 +DEBUG Time use:32,time left:4968 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:8 +DEBUG BestMove:[11,8],8 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [11,8] +11,8 +INFO time_left 162684 +TURN 14,5 +DEBUG brain_opponents [14 , 5] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,8],9980 +DEBUG Time use:47,time left:4953 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:14 +DEBUG BestMove:[11,10],14 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [11,10] +11,10 +INFO time_left 157628 +TURN 11,11 +DEBUG brain_opponents [11 , 11] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,8],9980 +DEBUG Time use:47,time left:4953 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:12 +DEBUG BestMove:[12,11],12 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [12,11] +12,11 +INFO time_left 152542 +TURN 13,12 +DEBUG brain_opponents [13 , 12] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,8],9980 +DEBUG Time use:47,time left:4953 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:14 +DEBUG BestMove:[13,4],14 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [13,4] +13,4 +INFO time_left 147473 +TURN 5,8 +DEBUG brain_opponents [5 , 8] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[15,8],9980 +DEBUG Time use:47,time left:4953 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[15,8],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [15,8] +15,8 +INFO time_left 142413 +TURN 4,8 +DEBUG brain_opponents [4 , 8] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[19,11],9980 +DEBUG Time use:46,time left:4954 +DEBUG MAX depth:2, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[3,13],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [3,13] +3,13 +RESTART +DEBUG brain_restart +OK +INFO max_memory 83886080 +INFO timeout_match 300000 +INFO timeout_turn 5000 +INFO game_type 1 +INFO rule 0 +INFO time_left 299957 +INFO folder C:\ProgramData +INFO fb_check 1 +BEGIN +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:0 +DEBUG BestMove:[14,18],0 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[14,18],0 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:0 +DEBUG BestMove:[14,18],0 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [14,18] +14,18 +INFO time_left 294747 +TURN 11,17 +DEBUG brain_opponents [11 , 17] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:4 +DEBUG BestMove:[17,18],4 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[17,18],0 +DEBUG Time use:312,time left:4688 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-4 +DEBUG BestMove:[17,18],-4 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [17,18] +17,18 +INFO time_left 289637 +TURN 10,18 +DEBUG brain_opponents [10 , 18] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[16,18],9950 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:0 +DEBUG BestMove:[12,16],0 +DEBUG Time use:485,time left:4515 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[12,16],-9950 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [12,16] +12,16 +INFO time_left 284560 +TURN 10,17 +DEBUG brain_opponents [10 , 17] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[16,18],9950 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[16,18],-9950 +DEBUG Time use:500,time left:4500 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[16,18],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [16,18] +16,18 +INFO time_left 279476 +TURN 15,18 +DEBUG brain_opponents [15 , 18] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[13,17],9950 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[13,17],-9950 +DEBUG Time use:516,time left:4484 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[13,17],-9950 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [13,17] +13,17 +INFO time_left 274383 +TURN 11,15 +DEBUG brain_opponents [11 , 15] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:4 +DEBUG BestMove:[14,16],4 +DEBUG Time use:15,time left:4985 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[14,16],-9950 +DEBUG Time use:578,time left:4422 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[14,16],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [14,16] +14,16 +INFO time_left 269290 +TURN 10,16 +DEBUG brain_opponents [10 , 16] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[16,14],9950 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[10,15],-9950 +DEBUG Time use:750,time left:4250 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[10,15],-9950 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [10,15] +10,15 +INFO time_left 264190 +TURN 11,18 +DEBUG brain_opponents [11 , 18] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[16,14],9950 +DEBUG Time use:15,time left:4985 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[11,16],-9950 +DEBUG Time use:718,time left:4282 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[11,16],-9950 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [11,16] +11,16 +INFO time_left 259116 +TURN 13,16 +DEBUG brain_opponents [13 , 16] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[16,14],9950 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[16,14],-9950 +DEBUG Time use:828,time left:4172 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[16,14],-9950 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [16,14] +16,14 +INFO time_left 254011 +TURN 15,15 +DEBUG brain_opponents [15 , 15] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[15,17],9950 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[15,17],-9950 +DEBUG Time use:954,time left:4046 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[15,17],-9950 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [15,17] +15,17 +INFO time_left 248927 +TURN 13,15 +DEBUG brain_opponents [13 , 15] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[17,15],9950 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[14,15],-9950 +DEBUG Time use:1062,time left:3938 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[14,15],-9980 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [14,15] +14,15 +INFO time_left 243843 +TURN 14,17 +DEBUG brain_opponents [14 , 17] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[17,15],9950 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[12,15],-9950 +DEBUG Time use:953,time left:4047 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9980 +DEBUG BestMove:[12,15],-9980 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [12,15] +12,15 +INFO time_left 238754 +TURN 9,18 +DEBUG brain_opponents [9 , 18] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[17,15],9950 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[12,18],-9980 +DEBUG Time use:1016,time left:3984 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9990 +DEBUG BestMove:[12,18],-9990 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [12,18] +12,18 +INFO time_left 233656 +TURN 12,17 +DEBUG brain_opponents [12 , 17] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[17,15],9950 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[17,15],-9980 +DEBUG Time use:1203,time left:3797 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9990 +DEBUG BestMove:[17,15],-9990 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [17,15] +17,15 +INFO time_left 228575 +TURN 9,17 +DEBUG brain_opponents [9 , 17] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9990 +DEBUG BestMove:[16,16],9990 +DEBUG Time use:15,time left:4985 +DEBUG MAX depth:2, +DEBUG Depth value:-9990 +DEBUG BestMove:[8,17],-9990 +DEBUG Time use:890,time left:4110 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9999 +DEBUG BestMove:[8,17],-9999 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [8,17] +8,17 +INFO time_left 223491 +TURN 16,16 +DEBUG brain_opponents [16 , 16] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[18,16],9950 +DEBUG Time use:0,time left:5000 +DEBUG MAX depth:2, +DEBUG Depth value:-9980 +DEBUG BestMove:[12,14],-9980 +DEBUG Time use:1172,time left:3828 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9999 +DEBUG BestMove:[12,14],-9999 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [12,14] +12,14 +INFO time_left 218402 +TURN 12,13 +DEBUG brain_opponents [12 , 13] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[18,16],9950 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG Depth value:-9950 +DEBUG BestMove:[8,18],-9950 +DEBUG Time use:1547,time left:3453 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9950 +DEBUG BestMove:[8,18],-9950 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [8,18] +8,18 +INFO time_left 213318 +TURN 9,16 +DEBUG brain_opponents [9 , 16] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[18,16],9950 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-9990 +DEBUG BestMove:[18,16],-9990 +DEBUG Time use:1531,time left:3469 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9999 +DEBUG BestMove:[18,16],-9999 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [18,16] +18,16 +INFO time_left 208223 +TURN 15,13 +DEBUG brain_opponents [15 , 13] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9950 +DEBUG BestMove:[17,17],9950 +DEBUG Time use:31,time left:4969 +DEBUG MAX depth:2, +DEBUG Depth value:-9990 +DEBUG BestMove:[17,17],-9990 +DEBUG Time use:1625,time left:3375 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9999 +DEBUG BestMove:[17,17],-9999 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [17,17] +17,17 +INFO time_left 203140 +TURN 17,14 +DEBUG brain_opponents [17 , 14] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[19,15],9980 +DEBUG Time use:15,time left:4985 +DEBUG MAX depth:2, +DEBUG Depth value:-9990 +DEBUG BestMove:[19,15],-9990 +DEBUG Time use:1734,time left:3266 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9990 +DEBUG BestMove:[19,15],-9990 +DEBUG Time use:4984,time left:16 +DEBUG brain_my [19,15] +19,15 +INFO time_left 198034 +TURN 15,19 +DEBUG brain_opponents [15 , 19] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9980 +DEBUG BestMove:[17,19],9980 +DEBUG Time use:16,time left:4984 +DEBUG MAX depth:2, +DEBUG Depth value:-9990 +DEBUG BestMove:[17,19],-9990 +DEBUG Time use:1938,time left:3062 +DEBUG MAX depth:4, +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG It's time to terminate +DEBUG Depth value:-9990 +DEBUG BestMove:[17,19],-9990 +DEBUG Time use:4985,time left:15 +DEBUG brain_my [17,19] +17,19 +INFO time_left 192938 +TURN 9,15 +DEBUG brain_opponents [9 , 15] +DEBUG brain_turn +DEBUG MAX depth:1, +DEBUG Depth value:9999 +DEBUG BestMove:[17,16],10 +DEBUG Time use:0,time left:5000 +DEBUG brain_my [17,16] +17,16 +END diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/04-\344\270\244\344\270\252\344\272\224\345\255\220\346\243\213\345\215\232\345\274\210\345\274\225\346\223\216\345\217\257\346\211\247\350\241\214\346\226\207\344\273\266/pbrain-test.exe" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/04-\344\270\244\344\270\252\344\272\224\345\255\220\346\243\213\345\215\232\345\274\210\345\274\225\346\223\216\345\217\257\346\211\247\350\241\214\346\226\207\344\273\266/pbrain-test.exe" new file mode 100644 index 0000000..c9d2fd4 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/04-\344\270\244\344\270\252\344\272\224\345\255\220\346\243\213\345\215\232\345\274\210\345\274\225\346\223\216\345\217\257\346\211\247\350\241\214\346\226\207\344\273\266/pbrain-test.exe" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/05-pbrain-negamax\345\274\225\346\223\216\346\272\220\344\273\243\347\240\201.rar" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/05-pbrain-negamax\345\274\225\346\223\216\346\272\220\344\273\243\347\240\201.rar" new file mode 100644 index 0000000..f9680b3 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/05-pbrain-negamax\345\274\225\346\223\216\346\272\220\344\273\243\347\240\201.rar" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/06-PC\346\270\270\346\210\217\347\274\226\347\250\213(\344\272\272\346\234\272\345\215\232\345\274\210).pdf" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/06-PC\346\270\270\346\210\217\347\274\226\347\250\213(\344\272\272\346\234\272\345\215\232\345\274\210).pdf" new file mode 100644 index 0000000..16391a7 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/06-PC\346\270\270\346\210\217\347\274\226\347\250\213(\344\272\272\346\234\272\345\215\232\345\274\210).pdf" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/07-\344\272\224\345\255\220\346\243\213\345\256\242\346\210\267\347\253\257\347\246\201\346\211\213\350\247\204\345\210\231.pdf" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/07-\344\272\224\345\255\220\346\243\213\345\256\242\346\210\267\347\253\257\347\246\201\346\211\213\350\247\204\345\210\231.pdf" new file mode 100644 index 0000000..d167010 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/07-\344\272\224\345\255\220\346\243\213\345\256\242\346\210\267\347\253\257\347\246\201\346\211\213\350\247\204\345\210\231.pdf" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/08-\344\272\224\345\255\220\346\243\213\351\200\232\347\224\250\345\274\225\346\223\216\345\215\217\350\256\256\350\247\204\350\214\203.pdf" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/08-\344\272\224\345\255\220\346\243\213\351\200\232\347\224\250\345\274\225\346\223\216\345\215\217\350\256\256\350\247\204\350\214\203.pdf" new file mode 100644 index 0000000..221eba0 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/08-\344\272\224\345\255\220\346\243\213\351\200\232\347\224\250\345\274\225\346\223\216\345\215\217\350\256\256\350\247\204\350\214\203.pdf" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/09-\345\207\240\344\270\252\345\205\263\351\224\256\346\225\260\346\215\256\347\273\223\346\236\204\347\232\204\350\257\264\346\230\216.pdf" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/09-\345\207\240\344\270\252\345\205\263\351\224\256\346\225\260\346\215\256\347\273\223\346\236\204\347\232\204\350\257\264\346\230\216.pdf" new file mode 100644 index 0000000..7eb0ebf Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/09-\345\207\240\344\270\252\345\205\263\351\224\256\346\225\260\346\215\256\347\273\223\346\236\204\347\232\204\350\257\264\346\230\216.pdf" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/10-alpha-beta\350\277\207\347\250\213\347\232\204\350\264\237\346\236\201\345\244\247\345\200\274\347\256\200\346\264\201\345\275\242\345\274\217.ppt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/10-alpha-beta\350\277\207\347\250\213\347\232\204\350\264\237\346\236\201\345\244\247\345\200\274\347\256\200\346\264\201\345\275\242\345\274\217.ppt" new file mode 100644 index 0000000..71ac55b Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/1/10-alpha-beta\350\277\207\347\250\213\347\232\204\350\264\237\346\236\201\345\244\247\345\200\274\347\256\200\346\264\201\345\275\242\345\274\217.ppt" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/01-\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\351\201\227\344\274\240\347\256\227\346\263\225\350\256\276\350\256\241-\345\256\236\351\252\214\350\246\201\346\261\202.doc" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/01-\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\351\201\227\344\274\240\347\256\227\346\263\225\350\256\276\350\256\241-\345\256\236\351\252\214\350\246\201\346\261\202.doc" new file mode 100644 index 0000000..6b6f539 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/01-\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\351\201\227\344\274\240\347\256\227\346\263\225\350\256\276\350\256\241-\345\256\236\351\252\214\350\246\201\346\261\202.doc" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/02-\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\351\201\227\344\274\240\347\256\227\346\263\225\350\256\276\350\256\241-\345\256\236\351\252\214\346\212\245\345\221\212\346\250\241\346\235\277.doc" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/02-\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\351\201\227\344\274\240\347\256\227\346\263\225\350\256\276\350\256\241-\345\256\236\351\252\214\346\212\245\345\221\212\346\250\241\346\235\277.doc" new file mode 100644 index 0000000..606e421 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/02-\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\351\201\227\344\274\240\347\256\227\346\263\225\350\256\276\350\256\241-\345\256\236\351\252\214\346\212\245\345\221\212\346\250\241\346\235\277.doc" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/03-TSP\346\265\213\350\257\225\344\276\213\346\225\260\346\215\256berlin52.txt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/03-TSP\346\265\213\350\257\225\344\276\213\346\225\260\346\215\256berlin52.txt" new file mode 100644 index 0000000..8725209 --- /dev/null +++ "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/03-TSP\346\265\213\350\257\225\344\276\213\346\225\260\346\215\256berlin52.txt" @@ -0,0 +1,52 @@ +1 565 575 +2 25 185 +3 345 750 +4 945 685 +5 845 655 +6 880 660 +7 25 230 +8 525 1000 +9 580 1175 +10 650 1130 +11 1605 620 +12 1220 580 +13 1465 200 +14 1530 5 +15 845 680 +16 725 370 +17 145 665 +18 415 635 +19 510 875 +20 560 365 +21 300 465 +22 520 585 +23 480 415 +24 835 625 +25 975 580 +26 1215 245 +27 1320 315 +28 1250 400 +29 660 180 +30 410 250 +31 420 555 +32 575 665 +33 1150 1160 +34 700 580 +35 685 595 +36 685 610 +37 770 610 +38 795 645 +39 720 635 +40 760 650 +41 475 960 +42 95 260 +43 875 920 +44 700 500 +45 555 815 +46 830 485 +47 1170 65 +48 830 610 +49 605 625 +50 595 360 +51 1340 725 +52 1740 245 \ No newline at end of file diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/04-GA\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\346\241\210\344\276\213.ppt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/04-GA\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\346\241\210\344\276\213.ppt" new file mode 100644 index 0000000..7fc0148 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/04-GA\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\346\241\210\344\276\213.ppt" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/05-galibdoc.pdf" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/05-galibdoc.pdf" new file mode 100644 index 0000000..079fd35 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/05-galibdoc.pdf" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/06-GAlib\345\234\250\351\201\227\344\274\240\347\256\227\346\263\225\345\256\236\347\216\260\344\270\255\347\232\204\345\272\224\347\224\250.pdf" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/06-GAlib\345\234\250\351\201\227\344\274\240\347\256\227\346\263\225\345\256\236\347\216\260\344\270\255\347\232\204\345\272\224\347\224\250.pdf" new file mode 100644 index 0000000..507f3dd Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/06-GAlib\345\234\250\351\201\227\344\274\240\347\256\227\346\263\225\345\256\236\347\216\260\344\270\255\347\232\204\345\272\224\347\224\250.pdf" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/07-\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\351\201\227\344\274\240\347\256\227\346\263\225\346\272\220\344\273\243\347\240\201tsp_ga.rar" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/07-\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\351\201\227\344\274\240\347\256\227\346\263\225\346\272\220\344\273\243\347\240\201tsp_ga.rar" new file mode 100644 index 0000000..200f871 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/07-\346\261\202\350\247\243TSP\351\227\256\351\242\230\347\232\204\351\201\227\344\274\240\347\256\227\346\263\225\346\272\220\344\273\243\347\240\201tsp_ga.rar" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/berlin52.txt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/berlin52.txt" new file mode 100644 index 0000000..8725209 --- /dev/null +++ "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/berlin52.txt" @@ -0,0 +1,52 @@ +1 565 575 +2 25 185 +3 345 750 +4 945 685 +5 845 655 +6 880 660 +7 25 230 +8 525 1000 +9 580 1175 +10 650 1130 +11 1605 620 +12 1220 580 +13 1465 200 +14 1530 5 +15 845 680 +16 725 370 +17 145 665 +18 415 635 +19 510 875 +20 560 365 +21 300 465 +22 520 585 +23 480 415 +24 835 625 +25 975 580 +26 1215 245 +27 1320 315 +28 1250 400 +29 660 180 +30 410 250 +31 420 555 +32 575 665 +33 1150 1160 +34 700 580 +35 685 595 +36 685 610 +37 770 610 +38 795 645 +39 720 635 +40 760 650 +41 475 960 +42 95 260 +43 875 920 +44 700 500 +45 555 815 +46 830 485 +47 1170 65 +48 830 610 +49 605 625 +50 595 360 +51 1340 725 +52 1740 245 \ No newline at end of file diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/lin105.txt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/lin105.txt" new file mode 100644 index 0000000..36e27cf --- /dev/null +++ "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/lin105.txt" @@ -0,0 +1,105 @@ +1 63 71 +2 94 71 +3 142 370 +4 173 1276 +5 205 1213 +6 213 69 +7 244 69 +8 276 630 +9 283 732 +10 362 69 +11 394 69 +12 449 370 +13 480 1276 +14 512 1213 +15 528 157 +16 583 630 +17 591 732 +18 638 654 +19 638 496 +20 638 314 +21 638 142 +22 669 142 +23 677 315 +24 677 496 +25 677 654 +26 709 654 +27 709 496 +28 709 315 +29 701 142 +30 764 220 +31 811 189 +32 843 173 +33 858 370 +34 890 1276 +35 921 1213 +36 992 630 +37 1000 732 +38 1197 1276 +39 1228 1213 +40 1276 205 +41 1299 630 +42 1307 732 +43 1362 654 +44 1362 496 +45 1362 291 +46 1425 654 +47 1425 496 +48 1425 291 +49 1417 173 +50 1488 291 +51 1488 496 +52 1488 654 +53 1551 654 +54 1551 496 +55 1551 291 +56 1614 291 +57 1614 496 +58 1614 654 +59 1732 189 +60 1811 1276 +61 1843 1213 +62 1913 630 +63 1921 732 +64 2087 370 +65 2118 1276 +66 2150 1213 +67 2189 205 +68 2220 189 +69 2220 630 +70 2228 732 +71 2244 142 +72 2276 315 +73 2276 496 +74 2276 654 +75 2315 654 +76 2315 496 +77 2315 315 +78 2331 142 +79 2346 315 +80 2346 496 +81 2346 654 +82 2362 142 +83 2402 157 +84 2402 220 +85 2480 142 +86 2496 370 +87 2528 1276 +88 2559 1213 +89 2630 630 +90 2638 732 +91 2756 69 +92 2787 69 +93 2803 370 +94 2835 1276 +95 2866 1213 +96 2906 69 +97 2937 69 +98 2937 630 +99 2945 732 +100 3016 1276 +101 3055 69 +102 3087 69 +103 606 220 +104 1165 370 +105 1780 370 \ No newline at end of file diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/pr76.txt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/pr76.txt" new file mode 100644 index 0000000..17c2c05 --- /dev/null +++ "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/pr76.txt" @@ -0,0 +1,76 @@ +1 3600 2300 +2 3100 3300 +3 4700 5750 +4 5400 5750 +5 5608 7103 +6 4493 7102 +7 3600 6950 +8 3100 7250 +9 4700 8450 +10 5400 8450 +11 5610 10053 +12 4492 10052 +13 3600 10800 +14 3100 10950 +15 4700 11650 +16 5400 11650 +17 6650 10800 +18 7300 10950 +19 7300 7250 +20 6650 6950 +21 7300 3300 +22 6650 2300 +23 5400 1600 +24 8350 2300 +25 7850 3300 +26 9450 5750 +27 10150 5750 +28 10358 7103 +29 9243 7102 +30 8350 6950 +31 7850 7250 +32 9450 8450 +33 10150 8450 +34 10360 10053 +35 9242 10052 +36 8350 10800 +37 7850 10950 +38 9450 11650 +39 10150 11650 +40 11400 10800 +41 12050 10950 +42 12050 7250 +43 11400 6950 +44 12050 3300 +45 11400 2300 +46 10150 1600 +47 13100 2300 +48 12600 3300 +49 14200 5750 +50 14900 5750 +51 15108 7103 +52 13993 7102 +53 13100 6950 +54 12600 7250 +55 14200 8450 +56 14900 8450 +57 15110 10053 +58 13992 10052 +59 13100 10800 +60 12600 10950 +61 14200 11650 +62 14900 11650 +63 16150 10800 +64 16800 10950 +65 16800 7250 +66 16150 6950 +67 16800 3300 +68 16150 2300 +69 14900 1600 +70 19800 800 +71 19800 10000 +72 19800 11900 +73 19800 12200 +74 200 12200 +75 200 1100 +76 200 800 \ No newline at end of file diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/rat99.txt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/rat99.txt" new file mode 100644 index 0000000..5d20651 --- /dev/null +++ "b/\344\272\272\345\267\245\346\231\272\350\203\275/\345\256\236\351\252\214/2/4\344\270\252TSP\346\265\213\350\257\225\344\276\213/rat99.txt" @@ -0,0 +1,99 @@ + 1 6 4 + 2 15 15 + 3 24 18 + 4 33 12 + 5 48 12 + 6 57 14 + 7 67 10 + 8 77 10 + 9 86 15 + 10 6 21 + 11 17 26 + 12 23 25 + 13 32 35 + 14 43 23 + 15 55 35 + 16 65 36 + 17 78 39 + 18 87 35 + 19 3 53 + 20 12 44 + 21 28 53 + 22 33 49 + 23 47 46 + 24 55 52 + 25 64 50 + 26 71 57 + 27 87 57 + 28 4 72 + 29 15 78 + 30 22 70 + 31 34 71 + 32 42 79 + 33 54 77 + 34 66 79 + 35 78 67 + 36 87 73 + 37 7 81 + 38 17 95 + 39 26 98 + 40 32 97 + 41 43 88 + 42 57 89 + 43 64 85 + 44 78 83 + 45 83 98 + 46 5 109 + 47 13 111 + 48 25 102 + 49 38 119 + 50 46 107 + 51 58 110 + 52 67 110 + 53 74 113 + 54 88 110 + 55 2 124 + 56 17 134 + 57 23 129 + 58 36 131 + 59 42 137 + 60 53 123 + 61 63 135 + 62 72 134 + 63 87 129 + 64 2 146 + 65 16 147 + 66 25 153 + 67 38 155 + 68 42 158 + 69 57 154 + 70 66 151 + 71 73 151 + 72 86 149 + 73 5 177 + 74 13 162 + 75 25 169 + 76 35 177 + 77 46 172 + 78 54 166 + 79 65 174 + 80 73 161 + 81 86 162 + 82 2 195 + 83 14 196 + 84 28 189 + 85 38 187 + 86 46 195 + 87 57 194 + 88 63 188 + 89 77 193 + 90 85 194 + 91 8 211 + 92 12 217 + 93 22 210 + 94 34 216 + 95 47 203 + 96 58 213 + 97 66 206 + 98 78 210 + 99 85 204 \ No newline at end of file diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec00-About course.ppt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec00-About course.ppt" new file mode 100644 index 0000000..3612909 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec00-About course.ppt" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec01-Introduction.ppt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec01-Introduction.ppt" new file mode 100644 index 0000000..7f0e347 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec01-Introduction.ppt" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec02-Structures and Strategies For State Space Search.ppt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec02-Structures and Strategies For State Space Search.ppt" new file mode 100644 index 0000000..f4332c5 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec02-Structures and Strategies For State Space Search.ppt" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec03-Heuristic Search.ppt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec03-Heuristic Search.ppt" new file mode 100644 index 0000000..8fb8d4d Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec03-Heuristic Search.ppt" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec04-Using Heuristics in Games.ppt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec04-Using Heuristics in Games.ppt" new file mode 100644 index 0000000..c93e73f Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec04-Using Heuristics in Games.ppt" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec05-Genetic algorithms.ppt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec05-Genetic algorithms.ppt" new file mode 100644 index 0000000..94db5e9 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec05-Genetic algorithms.ppt" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec06-Artificial neural networks-BP\347\256\227\346\263\225\345\255\246\344\271\240\350\247\204\345\210\231\347\232\204\346\216\250\345\257\274\350\277\207\347\250\213.ppt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec06-Artificial neural networks-BP\347\256\227\346\263\225\345\255\246\344\271\240\350\247\204\345\210\231\347\232\204\346\216\250\345\257\274\350\277\207\347\250\213.ppt" new file mode 100644 index 0000000..f57bfc7 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec06-Artificial neural networks-BP\347\256\227\346\263\225\345\255\246\344\271\240\350\247\204\345\210\231\347\232\204\346\216\250\345\257\274\350\277\207\347\250\213.ppt" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec06-Artificial neural networks.ppt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec06-Artificial neural networks.ppt" new file mode 100644 index 0000000..6b86275 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\344\273\266_\350\265\204\346\226\231/lec06-Artificial neural networks.ppt" differ diff --git "a/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\347\250\213\350\256\272\346\226\207\350\246\201\346\261\202-\344\272\272\345\267\245\346\231\272\350\203\275-2018.ppt" "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\347\250\213\350\256\272\346\226\207\350\246\201\346\261\202-\344\272\272\345\267\245\346\231\272\350\203\275-2018.ppt" new file mode 100644 index 0000000..2e24167 Binary files /dev/null and "b/\344\272\272\345\267\245\346\231\272\350\203\275/\350\257\276\347\250\213\350\256\272\346\226\207\350\246\201\346\261\202-\344\272\272\345\267\245\346\231\272\350\203\275-2018.ppt" differ diff --git "a/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\212/2016\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210\344\270\212\357\274\211\346\234\237\344\270\255\347\273\203\344\271\240\351\242\230.pdf" "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\212/2016\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210\344\270\212\357\274\211\346\234\237\344\270\255\347\273\203\344\271\240\351\242\230.pdf" new file mode 100644 index 0000000..29e76e0 Binary files /dev/null and "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\212/2016\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210\344\270\212\357\274\211\346\234\237\344\270\255\347\273\203\344\271\240\351\242\230.pdf" differ diff --git "a/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\212/2016\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210\344\270\212\357\274\211\346\234\237\344\270\255\347\273\203\344\271\240\351\242\230\347\255\224\346\241\210.pdf" "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\212/2016\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210\344\270\212\357\274\211\346\234\237\344\270\255\347\273\203\344\271\240\351\242\230\347\255\224\346\241\210.pdf" new file mode 100644 index 0000000..30b9df4 Binary files /dev/null and "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\212/2016\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210\344\270\212\357\274\211\346\234\237\344\270\255\347\273\203\344\271\240\351\242\230\347\255\224\346\241\210.pdf" differ diff --git "a/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2011\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211A\345\215\267\350\257\225\345\215\267\350\247\204\350\214\203\346\250\241\347\211\210.doc" "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2011\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211A\345\215\267\350\257\225\345\215\267\350\247\204\350\214\203\346\250\241\347\211\210.doc" new file mode 100644 index 0000000..0fd6be1 Binary files /dev/null and "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2011\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211A\345\215\267\350\257\225\345\215\267\350\247\204\350\214\203\346\250\241\347\211\210.doc" differ diff --git "a/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2011\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210II\357\274\211\346\234\237\346\234\253\350\257\225\345\215\267\350\247\243\347\255\224\357\274\210A\345\215\267\357\274\211.doc" "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2011\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210II\357\274\211\346\234\237\346\234\253\350\257\225\345\215\267\350\247\243\347\255\224\357\274\210A\345\215\267\357\274\211.doc" new file mode 100644 index 0000000..eb893e6 Binary files /dev/null and "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2011\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210II\357\274\211\346\234\237\346\234\253\350\257\225\345\215\267\350\247\243\347\255\224\357\274\210A\345\215\267\357\274\211.doc" differ diff --git "a/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2012\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211A\345\215\267\350\257\225\345\215\267\350\247\204\350\214\203\346\250\241\347\211\210.doc" "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2012\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211A\345\215\267\350\257\225\345\215\267\350\247\204\350\214\203\346\250\241\347\211\210.doc" new file mode 100644 index 0000000..12297e5 Binary files /dev/null and "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2012\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211A\345\215\267\350\257\225\345\215\267\350\247\204\350\214\203\346\250\241\347\211\210.doc" differ diff --git "a/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2012\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211\346\234\237\346\234\253\350\257\225\345\215\267\350\247\243\347\255\224\357\274\210A\345\215\267\357\274\211.doc" "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2012\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211\346\234\237\346\234\253\350\257\225\345\215\267\350\247\243\347\255\224\357\274\210A\345\215\267\357\274\211.doc" new file mode 100644 index 0000000..af641d8 Binary files /dev/null and "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2012\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211\346\234\237\346\234\253\350\257\225\345\215\267\350\247\243\347\255\224\357\274\210A\345\215\267\357\274\211.doc" differ diff --git "a/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2013\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211A\345\215\267\350\257\225\345\215\267\350\247\204\350\214\203\346\250\241\347\211\210.doc" "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2013\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211A\345\215\267\350\257\225\345\215\267\350\247\204\350\214\203\346\250\241\347\211\210.doc" new file mode 100644 index 0000000..0247946 Binary files /dev/null and "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2013\345\244\247\345\255\246\347\211\251\347\220\206\357\274\2102\357\274\211A\345\215\267\350\257\225\345\215\267\350\247\204\350\214\203\346\250\241\347\211\210.doc" differ diff --git "a/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2013\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210II\357\274\211\346\234\237\346\234\253\350\257\225\345\215\267\350\247\243\347\255\224\357\274\210A\345\215\267\357\274\211.doc" "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2013\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210II\357\274\211\346\234\237\346\234\253\350\257\225\345\215\267\350\247\243\347\255\224\357\274\210A\345\215\267\357\274\211.doc" new file mode 100644 index 0000000..03620d9 Binary files /dev/null and "b/\345\244\247\345\255\246\347\211\251\347\220\206/\344\270\213/2013\347\272\247\345\244\247\345\255\246\347\211\251\347\220\206\357\274\210II\357\274\211\346\234\237\346\234\253\350\257\225\345\215\267\350\247\243\347\255\224\357\274\210A\345\215\267\357\274\211.doc" differ diff --git "a/\345\244\247\345\255\246\347\211\251\347\220\206\345\256\236\351\252\214/\345\256\236\351\252\214\346\225\260\346\215\256\345\244\204\347\220\206.zip" "b/\345\244\247\345\255\246\347\211\251\347\220\206\345\256\236\351\252\214/\345\256\236\351\252\214\346\225\260\346\215\256\345\244\204\347\220\206.zip" new file mode 100644 index 0000000..0b8d39b Binary files /dev/null and "b/\345\244\247\345\255\246\347\211\251\347\220\206\345\256\236\351\252\214/\345\256\236\351\252\214\346\225\260\346\215\256\345\244\204\347\220\206.zip" differ diff --git "a/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2016\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(A\345\215\267).doc" "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2016\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(A\345\215\267).doc" new file mode 100644 index 0000000..3a12acd Binary files /dev/null and "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2016\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(A\345\215\267).doc" differ diff --git "a/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2016\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(B\345\215\267).doc" "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2016\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(B\345\215\267).doc" new file mode 100644 index 0000000..29e5c47 Binary files /dev/null and "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2016\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(B\345\215\267).doc" differ diff --git "a/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2017\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(A\345\215\267) \350\247\243\347\255\224.pdf" "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2017\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(A\345\215\267) \350\247\243\347\255\224.pdf" new file mode 100644 index 0000000..9554598 Binary files /dev/null and "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2017\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(A\345\215\267) \350\247\243\347\255\224.pdf" differ diff --git "a/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2017\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(A\345\215\267).doc" "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2017\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(A\345\215\267).doc" new file mode 100644 index 0000000..fe634bd Binary files /dev/null and "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\212/2017\347\272\247\350\275\257\344\273\266\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\344\270\212 \346\234\237\346\234\253\350\200\203\350\257\225\351\242\230(A\345\215\267).doc" differ diff --git "a/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/2015-2016\345\255\246\345\271\264\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\346\234\237\346\234\253\350\200\203\350\257\225\343\200\212\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\343\200\213\344\270\213 \350\257\225\345\215\267(A).doc" "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/2015-2016\345\255\246\345\271\264\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\346\234\237\346\234\253\350\200\203\350\257\225\343\200\212\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\343\200\213\344\270\213 \350\257\225\345\215\267(A).doc" new file mode 100644 index 0000000..23c4c3b Binary files /dev/null and "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/2015-2016\345\255\246\345\271\264\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\346\234\237\346\234\253\350\200\203\350\257\225\343\200\212\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\343\200\213\344\270\213 \350\257\225\345\215\267(A).doc" differ diff --git "a/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/2015-2016\345\255\246\345\271\264\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\346\234\237\346\234\253\350\200\203\350\257\225\343\200\212\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\343\200\213\344\270\213 \350\257\225\345\215\267(B).doc" "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/2015-2016\345\255\246\345\271\264\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\346\234\237\346\234\253\350\200\203\350\257\225\343\200\212\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\343\200\213\344\270\213 \350\257\225\345\215\267(B).doc" new file mode 100644 index 0000000..749d914 Binary files /dev/null and "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/2015-2016\345\255\246\345\271\264\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\346\234\237\346\234\253\350\200\203\350\257\225\343\200\212\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220\343\200\213\344\270\213 \350\257\225\345\215\267(B).doc" differ diff --git "a/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\2202016_2017_2_A.doc" "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\2202016_2017_2_A.doc" new file mode 100644 index 0000000..03551af Binary files /dev/null and "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\2202016_2017_2_A.doc" differ diff --git "a/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\2202016_2017_2_B \350\247\243\347\255\224.pdf" "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\2202016_2017_2_B \350\247\243\347\255\224.pdf" new file mode 100644 index 0000000..e08ab91 Binary files /dev/null and "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\2202016_2017_2_B \350\247\243\347\255\224.pdf" differ diff --git "a/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\2202016_2017_2_B.doc" "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\2202016_2017_2_B.doc" new file mode 100644 index 0000000..9bf04b1 Binary files /dev/null and "b/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\220/\344\270\213/\345\267\245\347\247\221\346\225\260\345\255\246\345\210\206\346\236\2202016_2017_2_B.doc" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a1)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a1)(1).pdf" new file mode 100644 index 0000000..d58ee0f Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a1)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a1).pdf" new file mode 100644 index 0000000..d58ee0f Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a2)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a2)(1).pdf" new file mode 100644 index 0000000..6b2048a Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a2)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a2).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a2).pdf" new file mode 100644 index 0000000..6b2048a Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (a2).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t1)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t1)(1).pdf" new file mode 100644 index 0000000..a17edfe Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t1)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t1).pdf" new file mode 100644 index 0000000..a17edfe Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t2)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t2)(1).pdf" new file mode 100644 index 0000000..7b5828d Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t2)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t2).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t2).pdf" new file mode 100644 index 0000000..7b5828d Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2004/2004\347\247\213\350\257\225\351\242\230(\347\273\210\357\274\211 Model (t2).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (1)(1).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (1)(1).jpg" new file mode 100644 index 0000000..0556a8a Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (1)(1).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (1).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (1).jpg" new file mode 100644 index 0000000..0556a8a Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (1).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (2)(1).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (2)(1).jpg" new file mode 100644 index 0000000..936e4c3 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (2)(1).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (2).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (2).jpg" new file mode 100644 index 0000000..936e4c3 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (2).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (3)(1).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (3)(1).jpg" new file mode 100644 index 0000000..18b1153 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (3)(1).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (3).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (3).jpg" new file mode 100644 index 0000000..18b1153 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2005/2005\347\255\224\346\241\210 (3).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \346\227\240\347\255\224\346\241\210(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \346\227\240\347\255\224\346\241\210(1).pdf" new file mode 100644 index 0000000..539f0eb Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \346\227\240\347\255\224\346\241\210(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \346\227\240\347\255\224\346\241\210.pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \346\227\240\347\255\224\346\241\210.pdf" new file mode 100644 index 0000000..539f0eb Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \346\227\240\347\255\224\346\241\210.pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (1)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (1)(1).pdf" new file mode 100644 index 0000000..03f026c Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (1)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (1).pdf" new file mode 100644 index 0000000..03f026c Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (2)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (2)(1).pdf" new file mode 100644 index 0000000..6c5bb91 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (2)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (2).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (2).pdf" new file mode 100644 index 0000000..6c5bb91 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07 1\345\215\267 \347\255\224\346\241\210 (2).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07(1).pdf" new file mode 100644 index 0000000..b386614 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07.pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07.pdf" new file mode 100644 index 0000000..b386614 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/07.pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (1)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (1)(1).pdf" new file mode 100644 index 0000000..38d18b0 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (1)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (1).pdf" new file mode 100644 index 0000000..38d18b0 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (2)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (2)(1).pdf" new file mode 100644 index 0000000..ac262f8 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (2)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (2).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (2).pdf" new file mode 100644 index 0000000..ac262f8 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\347\255\224\346\241\210 (2).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\350\257\225\345\215\267(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\350\257\225\345\215\267(1).pdf" new file mode 100644 index 0000000..60b4134 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\350\257\225\345\215\267(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\350\257\225\345\215\267.pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\350\257\225\345\215\267.pdf" new file mode 100644 index 0000000..60b4134 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/2007\350\257\225\345\215\267.pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/\347\224\265\347\261\273\350\257\225\345\215\267(A)(1).dwg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/\347\224\265\347\261\273\350\257\225\345\215\267(A)(1).dwg" new file mode 100644 index 0000000..ef7cd86 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/\347\224\265\347\261\273\350\257\225\345\215\267(A)(1).dwg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/\347\224\265\347\261\273\350\257\225\345\215\267(A).dwg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/\347\224\265\347\261\273\350\257\225\345\215\267(A).dwg" new file mode 100644 index 0000000..ef7cd86 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2007/\347\224\265\347\261\273\350\257\225\345\215\267(A).dwg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08.6\350\257\225\345\215\267(A)\347\255\224\346\241\210\345\217\212\350\257\204\345\210\206\346\240\207\345\207\206(1).dwg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08.6\350\257\225\345\215\267(A)\347\255\224\346\241\210\345\217\212\350\257\204\345\210\206\346\240\207\345\207\206(1).dwg" new file mode 100644 index 0000000..531f0e7 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08.6\350\257\225\345\215\267(A)\347\255\224\346\241\210\345\217\212\350\257\204\345\210\206\346\240\207\345\207\206(1).dwg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08.6\350\257\225\345\215\267(A)\347\255\224\346\241\210\345\217\212\350\257\204\345\210\206\346\240\207\345\207\206.dwg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08.6\350\257\225\345\215\267(A)\347\255\224\346\241\210\345\217\212\350\257\204\345\210\206\346\240\207\345\207\206.dwg" new file mode 100644 index 0000000..531f0e7 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08.6\350\257\225\345\215\267(A)\347\255\224\346\241\210\345\217\212\350\257\204\345\210\206\346\240\207\345\207\206.dwg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08\345\271\264\347\224\265\347\261\273\345\267\245\347\250\213\345\210\266\345\233\276A(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08\345\271\264\347\224\265\347\261\273\345\267\245\347\250\213\345\210\266\345\233\276A(1).pdf" new file mode 100644 index 0000000..3da2489 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08\345\271\264\347\224\265\347\261\273\345\267\245\347\250\213\345\210\266\345\233\276A(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08\345\271\264\347\224\265\347\261\273\345\267\245\347\250\213\345\210\266\345\233\276A.pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08\345\271\264\347\224\265\347\261\273\345\267\245\347\250\213\345\210\266\345\233\276A.pdf" new file mode 100644 index 0000000..3da2489 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/08\345\271\264\347\224\265\347\261\273\345\267\245\347\250\213\345\210\266\345\233\276A.pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267A2(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267A2(1).pdf" new file mode 100644 index 0000000..b8393c7 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267A2(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267A2.pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267A2.pdf" new file mode 100644 index 0000000..b8393c7 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267A2.pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a3(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a3(1).pdf" new file mode 100644 index 0000000..eefae4d Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a3(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a3.pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a3.pdf" new file mode 100644 index 0000000..eefae4d Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008-\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a3.pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a1(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a1(1).pdf" new file mode 100644 index 0000000..1ec7295 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a1(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a1.pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a1.pdf" new file mode 100644 index 0000000..1ec7295 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2008/2008\345\244\247\344\270\200\345\267\245\347\250\213\345\210\266\345\233\2761\345\215\267a1.pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143608(1).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143608(1).jpg" new file mode 100644 index 0000000..3dacf0c Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143608(1).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143608.jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143608.jpg" new file mode 100644 index 0000000..3dacf0c Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143608.jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143639(1).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143639(1).jpg" new file mode 100644 index 0000000..02c895a Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143639(1).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143639.jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143639.jpg" new file mode 100644 index 0000000..02c895a Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143639.jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143655(1).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143655(1).jpg" new file mode 100644 index 0000000..8c785e1 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143655(1).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143655.jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143655.jpg" new file mode 100644 index 0000000..8c785e1 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143655.jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143727(1).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143727(1).jpg" new file mode 100644 index 0000000..7a651b0 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143727(1).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143727.jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143727.jpg" new file mode 100644 index 0000000..7a651b0 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143727.jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143750(1).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143750(1).jpg" new file mode 100644 index 0000000..70fbbe0 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143750(1).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143750.jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143750.jpg" new file mode 100644 index 0000000..70fbbe0 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143750.jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143823(1).jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143823(1).jpg" new file mode 100644 index 0000000..db33b27 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143823(1).jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143823.jpg" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143823.jpg" new file mode 100644 index 0000000..db33b27 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\345\217\246\344\270\200\345\215\267/IMG_20130708_143823.jpg" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (1)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (1)(1).pdf" new file mode 100644 index 0000000..6f3f8a3 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (1)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (1).pdf" new file mode 100644 index 0000000..6f3f8a3 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (2)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (2)(1).pdf" new file mode 100644 index 0000000..ac4a841 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (2)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (2).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (2).pdf" new file mode 100644 index 0000000..ac4a841 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\347\255\224\346\241\210 (2).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (1)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (1)(1).pdf" new file mode 100644 index 0000000..59a2713 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (1)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (1).pdf" new file mode 100644 index 0000000..59a2713 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (2)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (2)(1).pdf" new file mode 100644 index 0000000..c817825 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (2)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (2).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (2).pdf" new file mode 100644 index 0000000..c817825 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2010/2010\350\257\225\351\242\230 (2).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1)(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1)(1).pdf" new file mode 100644 index 0000000..c5cb67c Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1)(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1).pdf" new file mode 100644 index 0000000..c5cb67c Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1)\347\255\224\346\241\210(1).pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1)\347\255\224\346\241\210(1).pdf" new file mode 100644 index 0000000..b9b12c0 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1)\347\255\224\346\241\210(1).pdf" differ diff --git "a/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1)\347\255\224\346\241\210.pdf" "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1)\347\255\224\346\241\210.pdf" new file mode 100644 index 0000000..b9b12c0 Binary files /dev/null and "b/\345\267\245\347\250\213\345\210\266\345\233\276/\345\267\245\347\250\213\345\210\266\345\233\276\345\276\200\345\271\264\350\200\203\351\242\230/2012/\350\257\225\351\242\230(1)\347\255\224\346\241\210.pdf" differ diff --git "a/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/99_\345\244\232\346\240\270\350\275\257\344\273\266\350\256\276\350\256\241\345\256\236\351\252\214_2019\346\234\254\347\247\221.docx" "b/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/99_\345\244\232\346\240\270\350\275\257\344\273\266\350\256\276\350\256\241\345\256\236\351\252\214_2019\346\234\254\347\247\221.docx" new file mode 100644 index 0000000..74f5b33 Binary files /dev/null and "b/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/99_\345\244\232\346\240\270\350\275\257\344\273\266\350\256\276\350\256\241\345\256\236\351\252\214_2019\346\234\254\347\247\221.docx" differ diff --git "a/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/readme.md" "b/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/readme.md" new file mode 100644 index 0000000..d532a4f --- /dev/null +++ "b/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/readme.md" @@ -0,0 +1,5 @@ +# ˵ + +ſҪʵ顣ճɼʵдȫͬѧеԼʵ鱨2016ĿαPeter S. Pachecoġгơ + +2016-6-28 diff --git "a/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/\347\244\272\344\276\213\344\273\243\347\240\201.7z" "b/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/\347\244\272\344\276\213\344\273\243\347\240\201.7z" new file mode 100644 index 0000000..c4c8355 Binary files /dev/null and "b/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/\347\244\272\344\276\213\344\273\243\347\240\201.7z" differ diff --git "a/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/\351\223\276\346\216\245\347\254\224\350\256\260.docx" "b/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/\351\223\276\346\216\245\347\254\224\350\256\260.docx" new file mode 100644 index 0000000..db1ca44 Binary files /dev/null and "b/\345\271\266\350\241\214\347\250\213\345\272\217\350\256\276\350\256\241/\351\223\276\346\216\245\347\254\224\350\256\260.docx" differ diff --git "a/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/JP31AA8FTUSPUALOC%[1GWD.jpg" "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/JP31AA8FTUSPUALOC%[1GWD.jpg" new file mode 100644 index 0000000..51141db Binary files /dev/null and "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/JP31AA8FTUSPUALOC%[1GWD.jpg" differ diff --git "a/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/readme.md" "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/readme.md" new file mode 100644 index 0000000..42d174d --- /dev/null +++ "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/readme.md" @@ -0,0 +1,4 @@ +# 说明 +这门课需要观看网课和多次写课程论文。2016级的课本为所在学期的《时事报告·大学生版》杂志。 + +2019-6-28 diff --git "a/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\342\200\234\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226\342\200\235\350\257\276\347\250\213\350\256\272\346\226\207\347\232\204\346\240\274\345\274\217\350\246\201\346\261\202\344\270\216\350\257\204\345\210\206\346\240\207\345\207\206.docx" "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\342\200\234\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226\342\200\235\350\257\276\347\250\213\350\256\272\346\226\207\347\232\204\346\240\274\345\274\217\350\246\201\346\261\202\344\270\216\350\257\204\345\210\206\346\240\207\345\207\206.docx" new file mode 100644 index 0000000..8bf2606 Binary files /dev/null and "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\342\200\234\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226\342\200\235\350\257\276\347\250\213\350\256\272\346\226\207\347\232\204\346\240\274\345\274\217\350\246\201\346\261\202\344\270\216\350\257\204\345\210\206\346\240\207\345\207\206.docx" differ diff --git "a/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\343\200\212\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226\343\200\213\350\257\276\345\274\200\350\257\276\351\200\232\347\237\245\357\274\2102018-09\357\274\211.doc" "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\343\200\212\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226\343\200\213\350\257\276\345\274\200\350\257\276\351\200\232\347\237\245\357\274\2102018-09\357\274\211.doc" new file mode 100644 index 0000000..336b551 Binary files /dev/null and "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\343\200\212\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226\343\200\213\350\257\276\345\274\200\350\257\276\351\200\232\347\237\245\357\274\2102018-09\357\274\211.doc" differ diff --git "a/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\344\270\255\347\276\216\350\264\270\346\230\223\346\221\251\346\223\246\350\276\250\346\236\220.pptx" "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\344\270\255\347\276\216\350\264\270\346\230\223\346\221\251\346\223\246\350\276\250\346\236\220.pptx" new file mode 100644 index 0000000..9856e5a Binary files /dev/null and "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\344\270\255\347\276\216\350\264\270\346\230\223\346\221\251\346\223\246\350\276\250\346\236\220.pptx" differ diff --git "a/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\344\271\241\346\235\221\346\214\257\345\205\264\347\232\204\346\227\266\344\273\243\346\204\217\344\271\211\344\270\216\350\247\204\345\210\222\350\223\235\345\233\276.pptx" "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\344\271\241\346\235\221\346\214\257\345\205\264\347\232\204\346\227\266\344\273\243\346\204\217\344\271\211\344\270\216\350\247\204\345\210\222\350\223\235\345\233\276.pptx" new file mode 100644 index 0000000..e88f4a4 Binary files /dev/null and "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\344\271\241\346\235\221\346\214\257\345\205\264\347\232\204\346\227\266\344\273\243\346\204\217\344\271\211\344\270\216\350\247\204\345\210\222\350\223\235\345\233\276.pptx" differ diff --git "a/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\345\255\246\345\240\202\344\272\2213.apk" "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\345\255\246\345\240\202\344\272\2213.apk" new file mode 100644 index 0000000..b3e5e7b Binary files /dev/null and "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\345\255\246\345\240\202\344\272\2213.apk" differ diff --git "a/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\345\255\246\345\240\202\344\272\221\357\274\210\346\211\213\346\234\272\347\253\257\357\274\211.pdf" "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\345\255\246\345\240\202\344\272\221\357\274\210\346\211\213\346\234\272\347\253\257\357\274\211.pdf" new file mode 100644 index 0000000..2f545b6 Binary files /dev/null and "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\345\255\246\345\240\202\344\272\221\357\274\210\346\211\213\346\234\272\347\253\257\357\274\211.pdf" differ diff --git "a/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\345\274\230\346\211\254\345\256\252\346\263\225\347\262\276\347\245\236\357\274\214\345\245\213\345\212\233\346\216\250\350\277\233\345\205\250\351\235\242\344\276\235\346\263\225\346\262\273\345\233\275.pptx" "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\345\274\230\346\211\254\345\256\252\346\263\225\347\262\276\347\245\236\357\274\214\345\245\213\345\212\233\346\216\250\350\277\233\345\205\250\351\235\242\344\276\235\346\263\225\346\262\273\345\233\275.pptx" new file mode 100644 index 0000000..82183f2 Binary files /dev/null and "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\345\274\230\346\211\254\345\256\252\346\263\225\347\262\276\347\245\236\357\274\214\345\245\213\345\212\233\346\216\250\350\277\233\345\205\250\351\235\242\344\276\235\346\263\225\346\262\273\345\233\275.pptx" differ diff --git "a/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\347\273\264\346\231\256\344\275\234\344\270\232\347\256\241\347\220\206\347\263\273\347\273\237\346\223\215\344\275\234\346\211\213\345\206\214\357\274\210\345\255\246\347\224\237\347\211\210\357\274\211.docx" "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\347\273\264\346\231\256\344\275\234\344\270\232\347\256\241\347\220\206\347\263\273\347\273\237\346\223\215\344\275\234\346\211\213\345\206\214\357\274\210\345\255\246\347\224\237\347\211\210\357\274\211.docx" new file mode 100644 index 0000000..afa3b41 Binary files /dev/null and "b/\345\275\242\345\212\277\344\270\216\346\224\277\347\255\226/\347\273\264\346\231\256\344\275\234\344\270\232\347\256\241\347\220\206\347\263\273\347\273\237\346\223\215\344\275\234\346\211\213\345\206\214\357\274\210\345\255\246\347\224\237\347\211\210\357\274\211.docx" differ diff --git "a/\346\200\235\344\277\256/readme.md" "b/\346\200\235\344\277\256/readme.md" new file mode 100644 index 0000000..41e56f2 --- /dev/null +++ "b/\346\200\235\344\277\256/readme.md" @@ -0,0 +1,3 @@ +# 说明 + +这门课开卷考试(2016级)。 diff --git "a/\346\223\215\344\275\234\347\263\273\347\273\237/\346\223\215\344\275\234\347\263\273\347\273\237\347\273\274\345\220\210\351\242\230\347\237\245\350\257\206\347\202\271\347\254\224\350\256\260.docx" "b/\346\223\215\344\275\234\347\263\273\347\273\237/\346\223\215\344\275\234\347\263\273\347\273\237\347\273\274\345\220\210\351\242\230\347\237\245\350\257\206\347\202\271\347\254\224\350\256\260.docx" new file mode 100644 index 0000000..0c36222 Binary files /dev/null and "b/\346\223\215\344\275\234\347\263\273\347\273\237/\346\223\215\344\275\234\347\263\273\347\273\237\347\273\274\345\220\210\351\242\230\347\237\245\350\257\206\347\202\271\347\254\224\350\256\260.docx" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/08\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267b\351\207\215\350\200\203\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/08\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267b\351\207\215\350\200\203\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..fd4cdd5 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/08\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267b\351\207\215\350\200\203\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/09\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\345\244\247\344\275\234\344\270\232.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/09\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\345\244\247\344\275\234\344\270\232.doc" new file mode 100644 index 0000000..a09ad62 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/09\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\345\244\247\344\275\234\344\270\232.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/09\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\345\244\247\344\275\234\344\270\232.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204/09\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\345\244\247\344\275\234\344\270\232.md" new file mode 100644 index 0000000..4707ee7 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/09\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\345\244\247\344\275\234\344\270\232.md" @@ -0,0 +1,63 @@ +## ݽṹҵ +###鷽ʽ +* չʾĵʵϰ棩ֹϻгʵʱԼIJԴ룬Чش⣬ʵϰݵĹ淶ԺͳʵԣʵʹԼЧɼÿСʾС⡢شʱΪ7ӡ +ҵϽ棺 +* 涨ǰڲɼȡҵԿγ̰Ϊλ¼Ͻ56һţ34һţ̷ϱǩע༶ÿҵ̴򿪺ΪѹļÿѹļΪСżС鳤ڣijΪ鳤ĵС63ϽҵļΪ090603.zip.rarѹĿ¼ӦٰԴ롢ļʵ鱨ĵ +* ʵ鱨ṹݣ +1. дreadmeļУСԱϢѧš༶ԼԵķֹֹģģĵ +2. ķѡõݽṹѡɡѡȱ㡣 +3. ģĹɼܡ⼼ɵ˵ϵͳģͼ +4. нͼʱմۣ +5. ʽ˵ʹ÷IJͼʵ +6. ĵĿƻ飨ݰֽ⣬䣬ʱƻύɹָ꣬װԼƻпͽ취ȣ˵顢ĵҪ˵顢ݿ˵飨ʹõݿĿģ鿪˵顢ϵͳĵԱȱҪĵ + +**ᳫʹCASEߣUMḶCASEʹúõĿӵ÷֣ṩͼͼȣ** + +### ҵĿѡһ +1. һĻ༭ijҪб༭Ļܺͼ򵥵IJĻ༭ҪȫĻƶԽַ롢롢дɾַƶɾ̣˳̵ȹܡ + +2. һտ˶Ʊϵͳտ˶ƱҵѯߡƱԤͰƱȡÿ漰ϢУյվšɻšգڼԱƱѶƱĿͻƱλȼ123ԼȺ油ĿͻƱȫݿֻڴУϵͳʵֵIJ͹£ +a) ѯߣÿյվϢšɻšڼУһ캽ںƱ +b) а충Ʊҵ񣺸ݿͻҪ󣨺šƱѯúƱƱΪͻƱλţԱƱڶƱѯʿͻҪҪɵǼŶӺ򲹣 +c) аƱҵ񣺸ݿͻṩڡࣩΪͻƱȻѯúǷŶӺ򲹣ѯڵһĿͻƱҪΪƱѯŶӺ򲹵Ŀͻ + +**ѡݡͻƱҪʱϵͳͻṩͬһĿĵص** + +3. ijУͼҪһͼϢϵͳͼԱôϵͳ¼ʹͼ顢ߺͳϢעһͼжߣһ߿Աд౾ͼ飩洢Ϣͼšͼߺššִܿ +ҵ +1)һвɱ⡢桢ġ͹黹ȡ + i.ɱ⣺¹һ飬ȷ֮ǼǵͼĿȥУֻܿӡ + ii. 棺ijޱֵͼĿע + iii. ģһִ㣬һǼǽߵͼ֤ź͹黹ޣıִ + iv. 黹עԽߵĵǼǣıִ +2)ѯͼϢ + i.ѯΪݽṹͼ顣 + ii.ѯСдͼ顣 + iii.ѯСеҵ硱ͼ顣 + iv.ĸϲѯСдġɡеҵ硱ͼ顣 + +4. һʾġҹꡱɫɫͷ׵ƮƮشεˮȦȦ΢ +**Ҫ** +1)Ŀгλá̵Ŀɼ̶ȡˮλáɫˮȦȣȷġ +2)㰴Եʹ״̬ͬʱʾĻϡ +**ʵʾ** +1)ÿĴڿɷΪ׶ΣˮȦȦ΢Ҫһ¼洢زǰ״̬һ״̬ĸʱ̡ +2)ͼ״̬ +½Ŀɼ̶ӦǶ϶ϡɼȦȦˮӦʧ +3)ÿ㷢ʱ¼Ԥһķʱ䡣 +4)һʵĽṹǰڵ㣬ʹϵͳʱÿ״̬һˮȦȫʧʹӽṹɾȥ + +**ѡ⣬ֻṩҪндϸĵȻٽʵ鱨ݵ׫дͬʱϵͳơҪ󿪷ɵϵͳ߱»ܡ** + +5. ѧԺʵҹϵͳ +ܰʵ豸ʵԱȡ +6. ҩҩƷϢϵͳ +ܰҩƷĽ +7. нͨ滮ϵͳ +ܰԼ·IJѯ¡ +8. ϵͳ +ܰ嵥Լ嵥շ·״̬ʱȲѯ޸IJ +9. ҵշѹ +ܰҵϢ͡¥㡢šҵϢͷ嵥շĿȡշʱȣ +10. Ƶϵͳ +ܰסޡͷ񡢵ε diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2001\347\272\247\345\217\214\350\257\255\347\217\255\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\351\242\230.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2001\347\272\247\345\217\214\350\257\255\347\217\255\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\351\242\230.doc" new file mode 100644 index 0000000..ee04d04 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2001\347\272\247\345\217\214\350\257\255\347\217\255\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\351\242\230.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2001\347\272\247\345\217\214\350\257\255\347\217\255\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\351\242\230.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2001\347\272\247\345\217\214\350\257\255\347\217\255\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\351\242\230.md" new file mode 100644 index 0000000..10aaa5c --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/2001\347\272\247\345\217\214\350\257\255\347\217\255\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\351\242\230.md" @@ -0,0 +1,120 @@ +# Data Structure + +## Final Exam + +Class ____________ Name ____________ No. ________ Score ________ + +###1. Select the correct choice. (10 scores) + +**(3) For sequential search,** + + (A) The best, average, and worst cases are asymptotically the same. + + (B) The best case is asymptotically better than the average and worst cases. + + (C) The best and average cases are asymptotically better than the worst case. + + (D) The best case is asymptotically better than the average case, and the average case is + asymptotically better than the worst case. + +**(4) We use the parent pointer representation for general trees to solve which problem?** + + (A) Shortest paths (B) General tree traversal? + + (C) Equivalence classes (D) Exact-match query + +**(5) The most effective way to reduce the time required by a disk-based program is to:** + + (A) Improve the basic operations. (B) Minimize the number of disk accesses. + + (C) Eliminate the recursive calls. (D) Reduce main memory use. + +**(6) If a data element requires 4 bytes and a pointer requires 4 bytes, then an orthogonal list representation will be more space efficient than a standard array representation when the fraction of non-zero elements is less than about:** + + (A) 75% (B) 25% (C) 15% ?(D) 5% + +**(7) The buddy method creates which form of fragmentation?** + + (A) Internal (B) External (C) Both a and b (D) None of all above. + +**(8) Tree indexing methods are meant to overcome what deficiency in hashing?** + + (A) Inability to handle range queries. (B) Inability to handle updates. + + (C) Inability to handle large data sets. (D) None of all above. + +**(9) The most important advantage of a 2-3 tree over a BST is that:** + + (A) The 2-3 tree has fewer nodes. (B) The 2-3 tree has a higher branching factor. + + (C) The 2-3 tree is height balanced. (D) None of all above. + +**(10) Which best characterizes the performance of the splay tree?** + + (A) All operations require O(log n) time. + + (B) m operations require a total of O(m log n) time for m > n. + + (C) All operations require O(n) time. (D) None of all above. + +### 2. Determine for the following code fragments in the average case. Assume that all variables are of type int. (9 scores) + +**(1)** +``` +sum=0; + +for (i=0; i<3; i++) + +for (j=0; j + +bool search ( BinNode* subroot, Key K); +``` +(10 scores) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2003answer.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2003answer.doc" new file mode 100644 index 0000000..34a1334 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2003answer.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2003answer.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2003answer.md" new file mode 100644 index 0000000..585f919 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/2003answer.md" @@ -0,0 +1,41 @@ +1. CBBBA DBABA +2. (1) (!L1.remove(temp)) L1.next(); L1.insert(temp); + (2) int i = (l+r)/2; r = i; return i; l = i; return l + (3)߶ȣn=0,1ʱΪnnڻ2ʱΪ2 + ߸߶ȣ n + +3. +![](https://upload-images.jianshu.io/upload_images/15206312-c41aa4a15bcdec25.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) +4. +![](https://upload-images.jianshu.io/upload_images/15206312-83b0eaa51b0b11ad.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) +5. +| A | B | C | D | E | F | G | H | +|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:| +| 0110 | 10 | 0000 | 0111 | 001 | 010 | 11 | 0001 | +4 * 5 + 2 * 25 + 4 * 3 + 4 * 6 + 3 * 10 + 3 * 11 + 2 * 36 + 4 * 4 = 257, 257 / 100 = 2.57 +![](https://upload-images.jianshu.io/upload_images/15206312-370197aca31337d3.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) +
+6. 72 6 57 88 60 42 83 73 48 85 +48 6 57 42 60 88 83 73 72 85 +6 42 57 48 60 72 73 85 88 83 +6 42 48 57 60 72 73 85 83 88 +6 42 48 57 60 72 73 83 85 88 +
+7. The first question is How many tracks are required by the file? +A track holds **144\*0.5K = 72K**. Thus, the file requires **5** tracks. +The time to read a track is seek time to the +**track + latency time + (interleaf factor rotation time).** +Average seek time is defined to be 80 ms. Latency time is **0.5 \* 16.7**ms, +and track rotation time is **16.7** ms for a total time to read the first track of +**80 + 4.5 * 16.7 155 ms.** +Seek time for the remaining four tracks is defined to be **20** ms (since they are +adjacent), with identical latency and read times. +Thus, the total file read time is +**155 + 4(20 + 4.5 * 16.7) 536 ms** +8. + ![](https://upload-images.jianshu.io/upload_images/15206312-e1bb0c3a64940de8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + +9. H1(22)=0, H1(41)=2 H1(53)=5 H1(46)=6 H1(30)=2 H1(13)=6 H1(1)=3 H1(67)=3 H2(30)=1 H2(13)=2 H2(1)=8 H2(67)=10 + +220, 412, 535, 466, 303, 138, 110, 671 + diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2003\347\272\247ds\350\257\225\351\242\230.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2003\347\272\247ds\350\257\225\351\242\230.doc" new file mode 100644 index 0000000..d826108 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2003\347\272\247ds\350\257\225\351\242\230.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2003\347\272\247ds\350\257\225\351\242\230.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2003\347\272\247ds\350\257\225\351\242\230.md" new file mode 100644 index 0000000..2658a04 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/2003\347\272\247ds\350\257\225\351\242\230.md" @@ -0,0 +1,156 @@ +# Data Structure + +## Final Exam + +Class ____________ Name ____________ No. ___________ Score ________ + +### 1. Select the correct choice. ?(20 scores) + +**(1) An algorithm must be or do all of the following EXCEPT:** + + (A) Correct (B) Composed of concrete steps (C) Ambiguous (D) Terminate + +**(2) Pick the growth rate that corresponds to the most efficient algorithm as n gets large:** + + (A) 5n (B) 20 log n (C) 2n2 (D) 2n + +**(3) Which statement is not true among the following four :** + + (A) The number of leaves in a non-empty full binary tree is one more than the number of + internal nodes. + + (B) The number of empty subtrees in a non-empty binary tree is equal to the number of nodes in + the tree. + + (C) A cluster is the smallest unit of allocation for a file, so all files are a multiple of the + cluster size. + + (D) The number of 3-node binary trees in different shape is 5. + +**(4) The most effective way to reduce the time required by a disk-based program is to:** + + (A) Improve the basic operations. (B) Minimize the number of disk accesses. + + (C) Eliminate the recursive calls. (D) Reduce main memory use. + +**(5) Tree indexing methods are meant to overcome what deficiency in hashing?** + + (A) Inability to handle range queries. (B) Inability to handle updates. + + (C) Inability to handle large data sets. (D) None of all above. + +**(6) When a pointer requires 4 bytes and a data element requires 12 bytes, the linked list implementation requires less space than the array-based list implementation when the array would be:** + + (A) less than 1/3 full. (B) less than 2/3 full. + + (C) less than half full. (D) less than 3/4 full. + +**(7) Which of the following is a true statement: + + (A) In a BST, the left child of any node is less than the right child, and in a heap, the left + child of any node is less than the right child. + + (B) In a BST, the left child of any node is less than the right child, but in a heap, the left + child of any node could be less than or greater than the right child. + + (C) In a BST, the left child of any node could be less or greater than the right child, but in a + heap, the left child of any node must be less than the right child. + + (D) In both a BST and a heap, the left child of any node could be either less than or greater than + the right child. + +**(8)Which is the realization of a data type as a software component:** + + (A) An abstract data type (B) A real data type (C) A type (D) A data structure + +**(9)Assume that we have eight records, with key values A to H, and that they are initially placed in alphabetical order. Now, consider the result of applying the following access pattern: F D F G E G F A D F G E, if the list is organized by the move-to-front heuristic, then the final list will be** + + (A) F G D E A B C H (B) E G F D A B C H? + + (C) A B F D G E C H (D) F D G E A B C H + +**(10)Given an array as A[m][n]. Supposed that *A*[0][0]is located at 644(10) and *A*[2][2]is stored at 676(10), and every element occupies one space. (10) means that the number is presented in decimals. Then the element *A*[3][3](10) is at position:** + + (A) 692 (B) 695 (C) 650 (D) 708 + +###2. Fill the blank with correct C++ codes: (10 scores) + +**(1) Using the C++ abstract class declaration for a list, write a function to interchange the first two elements in the right partition of a list:** + +``` +// Interchange the order of current and next elements + +void switch(List L1) { + + Elem temp; + + if ______________________ cout<<"ERROR"; + + ____________; + + ____________; + +} +``` + +**(2) Given an array storing integers ordered by value, modify the binary search routines to return the position of the first integer with the greatest value less than K when K itself does not appear in the array. Return ERROR if the least value in the array is greater than K:** + +``` +// Return position of greatest element <= K + +int newbinary(int array[], int n, int K) { + +??int l = -1; + + int r = n; // l and r beyond array bounds + + while (l+1 != r) { // Stop when l and r meet + + __________________________; // Look at middle of subarray + + if (K < array[i]) _________; // In left half + + if (K == array[i]) _________; // Found it + + if (K > array[i]) _________ // In right half + + } + + // Search value not in array + + __________; // l at first value less than K + + // l=-1, no value less than K + +} +``` + +**(3) In the trees with n nodesthe height of the shortest trees is_____________, and the height of the highest trees is ______________(suppose that the height of an one-node tree is 1)** + +### 3. Show the min-heap that results from running buildheap on the following values stored in an array: 4, 2, 5, 8, 3, 6, 10, 14. (10 scores) +








+ +### 4. A certain binary tree has the preorder enumeration as ABECDFGHIJ and the inorder enumeration as EBCDAFHIGJ. Try to draw the binary tree. ( 10 scores) +








+ +### 5. Build the Huffman coding tree and determine the codes for the following set of letters and weights: +| A | B | C | D | E | F | G | H | +|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:| +| 5 | 25 | 3 | 6 | 10 | 11 | 36 | 4 | +What is the expected length in bits of a message containing *n* characters for this frequency distribution? ?????????????????????(10 scores) +








+ +### 6. Trace by hand the situation of the array (int a[] = {72,6,57,88,60,42,83,73,48, 85}) using Quicksort algorithm. The pivot is 60 in the first pass, the second is 6 and 73, the third is 57 and 88 and so on till the algorithm is finished. (10 scores) +








+ +### 7. Assume a rather old disk drive is configured as follows. The total storage is approximately 675M divided among 15 surfaces. Each surface has 612 tracks; there are 144 sectors/track, 512 byte/sector, and 16 sectors/cluster. The interleaving factor is four. The disk turns at 3600rmp. The track-to-track seek time is 20 ms, and the average seek time is 80 ms. Now how long does it take to read all of the data in a 360 KB file on the disk? Assume that the first track of the file is randomly placed on the disk and the entire file lies on adjacent tracks, and the file completely fills each track on which it is found. A seek must be performed each time the I/O reader moves to a new track. Show your calculations. (10 scores) +








+ +### 8. You are given a series of records whose keys are integers. The records arrive in the following order: C, S, D, T, A, M, P, I, B, W, N, G, U, R, K, E, H, O, L, J. Show the 2-3 tree that results from inserting these records. (10 scores) +








+ +### 9\. Using closed hashing, with double hashing to resolve collisions, insert the following keys into a hash table of eleven slots (the slots are numbered 0 through 10). The hash functions to be used are H1 and H2, defined below. You should show the hash table after all eight keys have been inserted. Be sure to indicate how you are using H1 and H2 to do the hashing. + +H1(*k*) = 3*k* mod 11 ??????????????????H2(*k*) = 7*k* mod 10+1 + +Keys: 22, 41, 53, 46, 30, 13, 1, 67. (10 scores) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2004\346\225\260\346\215\256\347\273\223\346\236\204A\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\346\225\260\346\215\256\347\273\223\346\236\204A\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..9dccf6d Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\346\225\260\346\215\256\347\273\223\346\236\204A\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2004\346\225\260\346\215\256\347\273\223\346\236\204B\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\346\225\260\346\215\256\347\273\223\346\236\204B\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..9956594 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\346\225\260\346\215\256\347\273\223\346\236\204B\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230.doc" new file mode 100644 index 0000000..dc83e20 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230.md" new file mode 100644 index 0000000..0c9e742 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230.md" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230A\345\215\267.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230A\345\215\267.doc" new file mode 100644 index 0000000..cebdf74 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230A\345\215\267.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230A\345\215\267.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230A\345\215\267.md" new file mode 100644 index 0000000..47deca6 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230A\345\215\267.md" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230B\345\215\267.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230B\345\215\267.doc" new file mode 100644 index 0000000..8f8b0d2 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2004\347\272\247ds\350\257\225\351\242\230B\345\215\267.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2005\347\272\247\343\200\212\346\225\260\346\215\256\347\273\223\346\236\204\343\200\213\350\257\225\351\242\230A\345\215\267.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2005\347\272\247\343\200\212\346\225\260\346\215\256\347\273\223\346\236\204\343\200\213\350\257\225\351\242\230A\345\215\267.doc" new file mode 100644 index 0000000..d4a5034 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2005\347\272\247\343\200\212\346\225\260\346\215\256\347\273\223\346\236\204\343\200\213\350\257\225\351\242\230A\345\215\267.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2005\347\272\247\343\200\212\346\225\260\346\215\256\347\273\223\346\236\204\343\200\213\350\257\225\351\242\230B\345\215\267.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2005\347\272\247\343\200\212\346\225\260\346\215\256\347\273\223\346\236\204\343\200\213\350\257\225\351\242\230B\345\215\267.doc" new file mode 100644 index 0000000..0f6b035 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2005\347\272\247\343\200\212\346\225\260\346\215\256\347\273\223\346\236\204\343\200\213\350\257\225\351\242\230B\345\215\267.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204A\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204A\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..3af409c Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204A\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204B\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204B\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..3dd561a Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204B\345\215\267\346\240\207\345\207\206\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\345\244\247\344\275\234\344\270\232.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\345\244\247\344\275\234\344\270\232.doc" new file mode 100644 index 0000000..d41534e Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\345\244\247\344\275\234\344\270\232.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" new file mode 100644 index 0000000..1440243 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" new file mode 100644 index 0000000..113892c Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2006\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" new file mode 100644 index 0000000..a149728 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" new file mode 100644 index 0000000..79295ed Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\215\267\344\270\212\344\272\244\347\211\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\215\267\344\270\212\344\272\244\347\211\210.doc" new file mode 100644 index 0000000..50141ed Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\215\267\344\270\212\344\272\244\347\211\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\350\241\245\350\200\203.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\350\241\245\350\200\203.doc" new file mode 100644 index 0000000..f83c8b4 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2007\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\350\241\245\350\200\203.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2008\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2008\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..8ed5167 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2008\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2008\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267b\345\217\212\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2008\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267b\345\217\212\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..bffd4fc Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2008\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267b\345\217\212\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2008\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267b\351\207\215\350\200\203.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2008\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267b\351\207\215\350\200\203.doc" new file mode 100644 index 0000000..a916374 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2008\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267b\351\207\215\350\200\203.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2009\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2009\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..672e063 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2009\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2009\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2009\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" new file mode 100644 index 0000000..d9bef8d Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2009\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2009\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\217\212\347\255\224\346\241\210(1).doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2009\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\217\212\347\255\224\346\241\210(1).doc" new file mode 100644 index 0000000..f4bc12c Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2009\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\217\212\347\255\224\346\241\210(1).doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2010\346\225\260\346\215\256\347\273\223\346\236\204A\345\217\202\350\200\203\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\346\225\260\346\215\256\347\273\223\346\236\204A\345\217\202\350\200\203\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..bfceedf Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\346\225\260\346\215\256\347\273\223\346\236\204A\345\217\202\350\200\203\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" new file mode 100644 index 0000000..68c5abc Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..6bf19e2 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.docx" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.docx" new file mode 100644 index 0000000..857c0ca Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.docx" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\217\212\347\255\224\346\241\210-\351\273\204\346\225\217.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\217\212\347\255\224\346\241\210-\351\273\204\346\225\217.doc" new file mode 100644 index 0000000..3151d7a Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\217\212\347\255\224\346\241\210-\351\273\204\346\225\217.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267\347\255\224\351\242\230\347\272\270A.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267\347\255\224\351\242\230\347\272\270A.doc" new file mode 100644 index 0000000..e0d312f Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267\347\255\224\351\242\230\347\272\270A.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267\347\255\224\351\242\230\347\272\270B.docx" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267\347\255\224\351\242\230\347\272\270B.docx" new file mode 100644 index 0000000..08ac93e Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2010\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267\347\255\224\351\242\230\347\272\270B.docx" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" new file mode 100644 index 0000000..42d2d49 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..4064b67 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\347\255\224\346\241\210 .doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\347\255\224\346\241\210 .doc" new file mode 100644 index 0000000..8b7019d Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\347\255\224\346\241\210 .doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B \347\255\224\346\241\210.docx" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B \347\255\224\346\241\210.docx" new file mode 100644 index 0000000..f2a8fb6 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B \347\255\224\346\241\210.docx" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" new file mode 100644 index 0000000..c27ffa9 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2011\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2012\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2012\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..52e1822 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2012\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2015\347\272\247\345\256\236\351\252\214\346\212\245\345\221\212\344\273\273\345\212\241\344\271\246.docx" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2015\347\272\247\345\256\236\351\252\214\346\212\245\345\221\212\344\273\273\345\212\241\344\271\246.docx" new file mode 100644 index 0000000..4c9e760 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2015\347\272\247\345\256\236\351\252\214\346\212\245\345\221\212\344\273\273\345\212\241\344\271\246.docx" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2015\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2015\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" new file mode 100644 index 0000000..8908858 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2015\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2015\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2015\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" new file mode 100644 index 0000000..4ad1cce Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2015\347\272\247\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" new file mode 100644 index 0000000..149c891 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..02fc333 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267A\345\217\212\347\255\224\346\241\210.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.docx" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.docx" new file mode 100644 index 0000000..4301f39 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B.docx" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\217\212\347\255\224\346\241\210 (2).docx" "b/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\217\212\347\255\224\346\241\210 (2).docx" new file mode 100644 index 0000000..6d92e08 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/2016\346\225\260\346\215\256\347\273\223\346\236\204\350\257\225\345\215\267B\345\217\212\347\255\224\346\241\210 (2).docx" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/answerA.docx" "b/\346\225\260\346\215\256\347\273\223\346\236\204/answerA.docx" new file mode 100644 index 0000000..15c5327 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/answerA.docx" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/dsaa16-questions.docx" "b/\346\225\260\346\215\256\347\273\223\346\236\204/dsaa16-questions.docx" new file mode 100644 index 0000000..e7db8c4 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/dsaa16-questions.docx" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/\345\217\202\350\200\203\347\255\224\346\241\210A.docx" "b/\346\225\260\346\215\256\347\273\223\346\236\204/\345\217\202\350\200\203\347\255\224\346\241\210A.docx" new file mode 100644 index 0000000..adedfc4 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/\345\217\202\350\200\203\347\255\224\346\241\210A.docx" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225\350\257\225\345\215\267B -JIN.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225\350\257\225\345\215\267B -JIN.doc" new file mode 100644 index 0000000..354c51d Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225\350\257\225\345\215\267B -JIN.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/\346\234\237\344\270\255\346\265\213\350\257\225\350\257\225\351\242\230.doc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/\346\234\237\344\270\255\346\265\213\350\257\225\350\257\225\351\242\230.doc" new file mode 100644 index 0000000..0f94331 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/\346\234\237\344\270\255\346\265\213\350\257\225\350\257\225\351\242\230.doc" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/\350\257\225\345\215\267B.docx" "b/\346\225\260\346\215\256\347\273\223\346\236\204/\350\257\225\345\215\267B.docx" new file mode 100644 index 0000000..214e3cc Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/\350\257\225\345\215\267B.docx" differ diff --git "a/\346\231\272\350\203\275\344\272\272\346\234\272\344\272\244\344\272\222\346\212\200\346\234\257/readme.md" "b/\346\231\272\350\203\275\344\272\272\346\234\272\344\272\244\344\272\222\346\212\200\346\234\257/readme.md" new file mode 100644 index 0000000..dbf44a5 --- /dev/null +++ "b/\346\231\272\350\203\275\344\272\272\346\234\272\344\272\244\344\272\222\346\212\200\346\234\257/readme.md" @@ -0,0 +1,5 @@ +# ˵ + +ſѡ޿ΣÿԡſεǹνһûĽġ2016αBen ShneidermanġûơЧ˻ԣ棩 + +2019-1-2 diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/2018\345\271\264\346\234\272\345\231\250\345\255\246\344\271\240\345\244\247\351\242\230\345\267\262\345\207\272\350\200\203\347\202\271.txt" "b/\346\234\272\345\231\250\345\255\246\344\271\240/2018\345\271\264\346\234\272\345\231\250\345\255\246\344\271\240\345\244\247\351\242\230\345\267\262\345\207\272\350\200\203\347\202\271.txt" new file mode 100644 index 0000000..b95d742 --- /dev/null +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240/2018\345\271\264\346\234\272\345\231\250\345\255\246\344\271\240\345\244\247\351\242\230\345\267\262\345\207\272\350\200\203\347\202\271.txt" @@ -0,0 +1,11 @@ +2018ѧϰѳ + +ʱ䣺2018-12-27 + +ϡ +ƶ +ͼ +֧ +ʵƼҪĸʵӡ̣Ϊʲô + +ע⣬ֻÿһ㷨IJ͹ʽҪ㷨Ĺʽõġ diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/2018\345\271\264\350\200\203\345\211\215\347\255\224\347\226\221.txt" "b/\346\234\272\345\231\250\345\255\246\344\271\240/2018\345\271\264\350\200\203\345\211\215\347\255\224\347\226\221.txt" new file mode 100644 index 0000000..1f43c3f --- /dev/null +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240/2018\345\271\264\350\200\203\345\211\215\347\255\224\347\226\221.txt" @@ -0,0 +1,6 @@ +2018꿼ǰ + +2018-12-24 + +ĿȫӢ⣬Ͱѡ⡢⡢ж⡢Լһ⡣ +55ҡ diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/readme.md" "b/\346\234\272\345\231\250\345\255\246\344\271\240/readme.md" new file mode 100644 index 0000000..90151ef --- /dev/null +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240/readme.md" @@ -0,0 +1,6 @@ +# 说明 + +这门课是智能软件方向和大数据方向的选修课,要考试和做实验。 +课本是周志华的《机器学习》,由清华大学出版社出版,但考试内容主要还是看老师的课件。 + +2018-12-27 diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/sourcec-code-for-adaboost.zip" "b/\346\234\272\345\231\250\345\255\246\344\271\240/sourcec-code-for-adaboost.zip" new file mode 100644 index 0000000..8f63aaf Binary files /dev/null and "b/\346\234\272\345\231\250\345\255\246\344\271\240/sourcec-code-for-adaboost.zip" differ diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/\344\275\225\345\215\232\351\237\254\350\200\203\350\257\225\345\206\205\345\256\271\347\254\224\350\256\260.jpg" "b/\346\234\272\345\231\250\345\255\246\344\271\240/\344\275\225\345\215\232\351\237\254\350\200\203\350\257\225\345\206\205\345\256\271\347\254\224\350\256\260.jpg" new file mode 100644 index 0000000..748dc8a Binary files /dev/null and "b/\346\234\272\345\231\250\345\255\246\344\271\240/\344\275\225\345\215\232\351\237\254\350\200\203\350\257\225\345\206\205\345\256\271\347\254\224\350\256\260.jpg" differ diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/\345\256\236\351\252\214\351\223\276\346\216\245.docx" "b/\346\234\272\345\231\250\345\255\246\344\271\240/\345\256\236\351\252\214\351\223\276\346\216\245.docx" new file mode 100644 index 0000000..f97c1db Binary files /dev/null and "b/\346\234\272\345\231\250\345\255\246\344\271\240/\345\256\236\351\252\214\351\223\276\346\216\245.docx" differ diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\345\244\215\344\271\240\345\275\222\347\272\263.docx" "b/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\345\244\215\344\271\240\345\275\222\347\272\263.docx" new file mode 100644 index 0000000..307667c Binary files /dev/null and "b/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\345\244\215\344\271\240\345\275\222\347\272\263.docx" differ diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\345\244\215\344\271\240\347\254\224\350\256\260.docx" "b/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\345\244\215\344\271\240\347\254\224\350\256\260.docx" new file mode 100644 index 0000000..5f68b51 Binary files /dev/null and "b/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\345\244\215\344\271\240\347\254\224\350\256\260.docx" differ diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\347\237\245\350\257\206\347\202\271.txt" "b/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\347\237\245\350\257\206\347\202\271.txt" new file mode 100644 index 0000000..88f1075 --- /dev/null +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\347\237\245\350\257\206\347\202\271.txt" @@ -0,0 +1,81 @@ +ѧϰ֪ʶ + +1.֪ʶ + +ԵʣMarginalization +Ҷ˹ +Ҷ˹ +ܶ +Ȼ +Ϣ + +2.Իعݶ½ +ʧ +ģͣy=T(w)x+b +С˷ó⣨ʽ⣩ +ݶ½ + +3.Էࡢ֧ݶ㷨 +Էࣩࣨ +֧ + +Ҷʧ +ݶ½Gradient Descent +ݶ½Stochastic GD +Сݶ½Mini-batch SGD +⣨One vs Rest, One vs One +޻ͼ +ż⣨Dual Problem + +4.߼ع͹һָع +ʧ + +Ȼ + +Ȼʧ +һָ +Large-Margin Softmax Loss +һָʧ +A-Softmax Loss + +5.֤ +Ƿ +ƫ-Ȩ(Bias-Variance Tradeoff) +֤ + + +6.ɷ +ѧϰ + +ϢءȺϢ +Bagging +ɭ +AdaBoost +ݶGBDT + +7.PCA +޼ලѧϰ + +ɿɷ˹ +kֵ㷨Lloyd㷨 +۲ξࣨHierarchical Agglomerative Clustering, AGNES +ά +ɷַPCA + +8.Ƽϵͳ +ڼЭͬˣMemory-based Collaborative Filtering +ģ͵ЭͬˣModel-based CF +ӷֽ⣨Matrix Factorization +С˷ALS +ƽMean Absolute Error + +9.ͼ + +˹˲Gaussian Filter + +10.ѧϰ + +磨CNN + + +򴫲 diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\350\213\261\346\226\207\347\217\255\346\225\231\345\255\246\345\244\247\347\272\262v-Aug31.docx" "b/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\350\213\261\346\226\207\347\217\255\346\225\231\345\255\246\345\244\247\347\272\262v-Aug31.docx" new file mode 100644 index 0000000..b5133cd Binary files /dev/null and "b/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\350\213\261\346\226\207\347\217\255\346\225\231\345\255\246\345\244\247\347\272\262v-Aug31.docx" differ diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\350\256\272\346\226\207\345\270\270\347\224\250\345\215\225\350\257\215.xlsx" "b/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\350\256\272\346\226\207\345\270\270\347\224\250\345\215\225\350\257\215.xlsx" new file mode 100644 index 0000000..e480583 Binary files /dev/null and "b/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240\350\256\272\346\226\207\345\270\270\347\224\250\345\215\225\350\257\215.xlsx" differ diff --git "a/\346\246\202\347\216\207\350\256\272/2013\346\230\245A\345\215\267\347\255\224\346\241\210.docx" "b/\346\246\202\347\216\207\350\256\272/2013\346\230\245A\345\215\267\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..ddc680e Binary files /dev/null and "b/\346\246\202\347\216\207\350\256\272/2013\346\230\245A\345\215\267\347\255\224\346\241\210.docx" differ diff --git "a/\346\246\202\347\216\207\350\256\272/2014\346\230\245A\345\215\267\347\255\224\346\241\210.docx" "b/\346\246\202\347\216\207\350\256\272/2014\346\230\245A\345\215\267\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..3a113a8 Binary files /dev/null and "b/\346\246\202\347\216\207\350\256\272/2014\346\230\245A\345\215\267\347\255\224\346\241\210.docx" differ diff --git "a/\346\246\202\347\216\207\350\256\272/2015\346\230\245A\345\215\267\347\255\224\346\241\210.docx" "b/\346\246\202\347\216\207\350\256\272/2015\346\230\245A\345\215\267\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..f7bf44a Binary files /dev/null and "b/\346\246\202\347\216\207\350\256\272/2015\346\230\245A\345\215\267\347\255\224\346\241\210.docx" differ diff --git "a/\346\246\202\347\216\207\350\256\272/2016\346\230\245\345\255\243A\345\215\267\347\255\224\346\241\210.docx" "b/\346\246\202\347\216\207\350\256\272/2016\346\230\245\345\255\243A\345\215\267\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..0c2cd40 Binary files /dev/null and "b/\346\246\202\347\216\207\350\256\272/2016\346\230\245\345\255\243A\345\215\267\347\255\224\346\241\210.docx" differ diff --git "a/\347\211\251\350\201\224\347\275\221\347\263\273\347\273\237\345\237\272\347\241\200\344\270\216\345\272\224\347\224\250/README.md" "b/\347\211\251\350\201\224\347\275\221\347\263\273\347\273\237\345\237\272\347\241\200\344\270\216\345\272\224\347\224\250/README.md" new file mode 100644 index 0000000..6269e21 --- /dev/null +++ "b/\347\211\251\350\201\224\347\275\221\347\263\273\347\273\237\345\237\272\347\241\200\344\270\216\345\272\224\347\224\250/README.md" @@ -0,0 +1,7 @@ +# 说明 + +本课程是物联网方向的选修课。 +这门课不用考试,只要做4个实验和1个课程设计。 +实验是关于片上网络的,使用[popnet](https://github.com/oxalica/popnet.git)完成。 + +2019-12-19 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/readme.md" new file mode 100644 index 0000000..c48bba0 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/readme.md" @@ -0,0 +1,22 @@ +# 资料目录列表 + +## 公共必修课 +1. 自然辩证法概论(最后更新:2021-1-5) +2. 中国特色社会主义理论与实践研究(最后更新:2021-1-5) +3. 论文写作与学术规范(最后更新:2021-7-6) +4. 工程伦理(最后更新:2021-7-6) + +## 专业基础课 +1. 系统分析与设计(最后更新:2020-12-9) +2. 敏捷项目管理(最后更新:2021-1-5) +3. 并行与分布式计算(最后更新:2021-5-10) +4. 软件定义网络(最后更新:2021-6-9) +5. 高级操作系统(最后更新:2021-6-10) +6. 云计算技术(最后更新:2021-6-10) + +## 专业选修课 +1. 数据挖掘(最后更新:2021-5-7) +2. 区块链技术(最后更新:2021-9-15) + +## 公共选修课 +1. 沟通心理学(最后更新:2021-7-6) diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2020-2021\345\255\246\345\271\264\344\270\212\345\255\246\346\234\237\345\210\244\346\226\255\351\242\230\347\255\224\346\241\210.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2020-2021\345\255\246\345\271\264\344\270\212\345\255\246\346\234\237\345\210\244\346\226\255\351\242\230\347\255\224\346\241\210.jpg" new file mode 100644 index 0000000..eb2dbe8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2020-2021\345\255\246\345\271\264\344\270\212\345\255\246\346\234\237\345\210\244\346\226\255\351\242\230\347\255\224\346\241\210.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2020\345\271\264\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266\345\244\215\344\271\240\347\254\224\350\256\260 v2.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2020\345\271\264\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266\345\244\215\344\271\240\347\254\224\350\256\260 v2.docx" new file mode 100644 index 0000000..ded2cca Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2020\345\271\264\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266\345\244\215\344\271\240\347\254\224\350\256\260 v2.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2020\345\271\264\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266\345\244\215\344\271\240\347\254\224\350\256\260 v2.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2020\345\271\264\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266\345\244\215\344\271\240\347\254\224\350\256\260 v2.pdf" new file mode 100644 index 0000000..f41aa6d Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2020\345\271\264\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266\345\244\215\344\271\240\347\254\224\350\256\260 v2.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2021.1\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2021.1\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201.docx" new file mode 100644 index 0000000..3fba705 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2021.1\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2021.1\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201\357\274\210\347\255\224\346\241\210\357\274\211.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2021.1\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201\357\274\210\347\255\224\346\241\210\357\274\211.pdf" new file mode 100644 index 0000000..dec2094 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/2021.1\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201\357\274\210\347\255\224\346\241\210\357\274\211.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/readme.md" new file mode 100644 index 0000000..e21fc4f --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/readme.md" @@ -0,0 +1,5 @@ +# 说明 + +这门课需要做展示和考试。课本是高等教育出版社的《中国特色社会主义理论与实践研究(2018年版)》。 + +2021-1-5 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\345\216\206\345\271\264\345\215\267\357\274\210\346\227\240\347\255\224\346\241\210\357\274\211.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\345\216\206\345\271\264\345\215\267\357\274\210\346\227\240\347\255\224\346\241\210\357\274\211.docx" new file mode 100644 index 0000000..23d21b8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\345\216\206\345\271\264\345\215\267\357\274\210\346\227\240\347\255\224\346\241\210\357\274\211.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/2017.12\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201\357\274\210\345\205\250\346\227\245\345\210\266\347\241\225\345\243\253\357\274\211.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/2017.12\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201\357\274\210\345\205\250\346\227\245\345\210\266\347\241\225\345\243\253\357\274\211.docx" new file mode 100644 index 0000000..46685b5 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/2017.12\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201\357\274\210\345\205\250\346\227\245\345\210\266\347\241\225\345\243\253\357\274\211.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/2017\344\270\255\347\211\271\345\244\215\344\271\240\350\265\204\346\226\231-1\347\217\255.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/2017\344\270\255\347\211\271\345\244\215\344\271\240\350\265\204\346\226\231-1\347\217\255.docx" new file mode 100644 index 0000000..9ea7fc1 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/2017\344\270\255\347\211\271\345\244\215\344\271\240\350\265\204\346\226\231-1\347\217\255.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/2017\344\270\255\347\211\271\345\244\215\344\271\240\350\265\204\346\226\231-2\347\217\255.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/2017\344\270\255\347\211\271\345\244\215\344\271\240\350\265\204\346\226\231-2\347\217\255.docx" new file mode 100644 index 0000000..ef94bc5 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/2017\344\270\255\347\211\271\345\244\215\344\271\240\350\265\204\346\226\231-2\347\217\255.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/\346\226\260\344\274\2402017.12\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201(1)(2).docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/\346\226\260\344\274\2402017.12\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201(1)(2).docx" new file mode 100644 index 0000000..f9b4e91 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/\346\226\260\344\274\2402017.12\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201(1)(2).docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/\346\263\225\345\255\246\351\231\242\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201\357\274\210\351\231\204\347\255\224\346\241\210\347\211\210\357\274\211.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/\346\263\225\345\255\246\351\231\242\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201\357\274\210\351\231\204\347\255\224\346\241\210\347\211\210\357\274\211.docx" new file mode 100644 index 0000000..5142847 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/\346\263\225\345\255\246\351\231\242\344\270\255\347\211\271\345\244\215\344\271\240\346\217\220\350\246\201\357\274\210\351\231\204\347\255\224\346\241\210\347\211\210\357\274\211.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/\347\273\217\350\264\270\344\270\255\347\211\271\351\207\215\347\202\271.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/\347\273\217\350\264\270\344\270\255\347\211\271\351\207\215\347\202\271.docx" new file mode 100644 index 0000000..87b2205 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\216\213\347\216\211\351\276\231/\347\273\217\350\264\270\344\270\255\347\211\271\351\207\215\347\202\271.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\274\251\345\207\217.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\274\251\345\207\217.docx" new file mode 100644 index 0000000..cab683b Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\344\270\255\347\211\271\347\274\251\345\207\217.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\347\237\263\346\234\233\345\215\216\345\275\222\347\272\263.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\347\237\263\346\234\233\345\215\216\345\275\222\347\272\263.png" new file mode 100644 index 0000000..05b67c2 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\347\237\263\346\234\233\345\215\216\345\275\222\347\272\263.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\347\255\224\351\242\230\350\246\201\346\261\202.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\347\255\224\351\242\230\350\246\201\346\261\202.png" new file mode 100644 index 0000000..10c8677 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\270\255\345\233\275\347\211\271\350\211\262\347\244\276\344\274\232\344\270\273\344\271\211\347\220\206\350\256\272\344\270\216\345\256\236\350\267\265\347\240\224\347\251\266/\347\255\224\351\242\230\350\246\201\346\261\202.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/2021\345\271\264\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257\345\244\215\344\271\240\345\275\222\347\272\263 v7.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/2021\345\271\264\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257\345\244\215\344\271\240\345\275\222\347\272\263 v7.docx" new file mode 100644 index 0000000..d7052dc Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/2021\345\271\264\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257\345\244\215\344\271\240\345\275\222\347\272\263 v7.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/2021\345\271\264\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257\345\244\215\344\271\240\345\275\222\347\272\263 v7.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/2021\345\271\264\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257\345\244\215\344\271\240\345\275\222\347\272\263 v7.pdf" new file mode 100644 index 0000000..6af84b4 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/2021\345\271\264\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257\345\244\215\344\271\240\345\275\222\347\272\263 v7.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/2021\345\271\264\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257\350\257\225\345\215\267\350\257\255\350\250\200\345\222\214\351\242\230\345\236\213.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/2021\345\271\264\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257\350\257\225\345\215\267\350\257\255\350\250\200\345\222\214\351\242\230\345\236\213.txt" new file mode 100644 index 0000000..0ce0ece --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/2021\345\271\264\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257\350\257\225\345\215\267\350\257\255\350\250\200\345\222\214\351\242\230\345\236\213.txt" @@ -0,0 +1,4 @@ +2021年云计算技术试卷语言和题型 + +语言:中文 +题型:选择题、简答题和计算复习题 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/20\345\271\2646\346\234\210\350\200\203\351\242\230\345\233\236\345\277\206.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/20\345\271\2646\346\234\210\350\200\203\351\242\230\345\233\236\345\277\206.txt" new file mode 100644 index 0000000..84fcfbf --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/20\345\271\2646\346\234\210\350\200\203\351\242\230\345\233\236\345\277\206.txt" @@ -0,0 +1,15 @@ +选择题:简单 10*3' + +简答题:20'=5*4' +1、水平拓展。垂直拓展的区别。 +2、判断是主动还是被动故障转移。 +3、判断是内置还是外置。 +4、云使用监控代理机制。 +5、弹性磁盘供给架构的流程。 + +计算分析题:50' +1、(1)虚拟监控器与VIM的功能,以及其不同。(2)简述影响虚拟机迁移的因素,并说明如何改善。 +2、GFS相关(1)写文件(同步机制:锁),流程(2)Master与slave的作用(3)容错机制 +3、MapReduce相关(1)Map,partition,Reduce作用(2) 任务滞后如何处理(3)局部性和公平性的权衡,设计调度方法 +4、列调度 EFT table +5、6元fat tree \ No newline at end of file diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/HDFS\345\206\231\346\223\215\344\275\234\347\232\204\350\277\207\347\250\213.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/HDFS\345\206\231\346\223\215\344\275\234\347\232\204\350\277\207\347\250\213.txt" new file mode 100644 index 0000000..6dc1975 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/HDFS\345\206\231\346\223\215\344\275\234\347\232\204\350\277\207\347\250\213.txt" @@ -0,0 +1,10 @@ +HDFS写操作的过程 + +(1)应用写入文件系统。 +(2)客户机写入缓冲区,直到接收到64K的块。 +(3)客户机通知名称节点(NameNode)它想写一个新的块。 +(4)名称节点返回3个供写入的数据节点(DataNode)的名单。 +(5)客户机发送块到第一个数据节点并通知其他两个副本(replica)的数据节点。 +(6)第一个数据节点写入块并将其发送到第二个数据节点。第二个数据节点写入块并把它发给最后一个数据节点。 +(7)每个数据节点在完成写入后向客户机报告。 +(8)客户机在这3个数据节点报告完成写入后向名称节点确认写操作。 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/IMG_20210309_143102.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/IMG_20210309_143102.jpg" new file mode 100644 index 0000000..432465c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/IMG_20210309_143102.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/Marche Fun\303\250bre-Chopin.aac" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/Marche Fun\303\250bre-Chopin.aac" new file mode 100644 index 0000000..452b5e0 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/Marche Fun\303\250bre-Chopin.aac" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/readme.md" new file mode 100644 index 0000000..1d0016a --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/readme.md" @@ -0,0 +1,5 @@ +# 说明 + +这门课要考试。 + +2021-6-10 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\344\272\221\346\234\215\345\212\241\350\200\203\347\202\271.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\344\272\221\346\234\215\345\212\241\350\200\203\347\202\271.docx" new file mode 100644 index 0000000..52d3eb9 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\344\272\221\346\234\215\345\212\241\350\200\203\347\202\271.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\345\244\215\344\271\240.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\345\244\215\344\271\240.docx" new file mode 100644 index 0000000..707c023 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\345\244\215\344\271\240.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\345\244\215\344\271\240\346\217\220\347\272\262.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\345\244\215\344\271\240\346\217\220\347\272\262.pdf" new file mode 100644 index 0000000..7012c38 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\345\244\215\344\271\240\346\217\220\347\272\262.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\346\217\220\347\272\262\350\207\252\345\267\261.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\346\217\220\347\272\262\350\207\252\345\267\261.docx" new file mode 100644 index 0000000..d9842fa Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\344\272\221\350\256\241\347\256\227\346\212\200\346\234\257/\346\217\220\347\272\262\350\207\252\345\267\261.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/readme.md" new file mode 100644 index 0000000..634b3ea --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/readme.md" @@ -0,0 +1,7 @@ +# 说明 + +这门课需要开放性考试和作报告。开放性考试是指老师放假前发布题目,假期作答后,将回答发送到老师的邮箱。 + +备注:这位老师治学严谨。 + +2021-9-15 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\211\215\346\262\277\347\237\245\350\257\206\350\200\203\346\240\270\351\203\250\345\210\206.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\211\215\346\262\277\347\237\245\350\257\206\350\200\203\346\240\270\351\203\250\345\210\206.docx" new file mode 100644 index 0000000..14d33e3 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\211\215\346\262\277\347\237\245\350\257\206\350\200\203\346\240\270\351\203\250\345\210\206.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\214\272\345\235\227\351\223\276\345\217\202\350\200\203\346\226\207\347\214\256\344\270\216\350\265\204\346\226\231.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\214\272\345\235\227\351\223\276\345\217\202\350\200\203\346\226\207\347\214\256\344\270\216\350\265\204\346\226\231.docx" new file mode 100644 index 0000000..d552199 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\214\272\345\235\227\351\223\276\345\217\202\350\200\203\346\226\207\347\214\256\344\270\216\350\265\204\346\226\231.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\214\272\345\235\227\351\223\276\350\257\276\347\250\213\350\200\203\346\240\270\345\256\211\346\216\222.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\214\272\345\235\227\351\223\276\350\257\276\347\250\213\350\200\203\346\240\270\345\256\211\346\216\222.docx" new file mode 100644 index 0000000..0907a1c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\214\272\345\235\227\351\223\276\350\257\276\347\250\213\350\200\203\346\240\270\345\256\211\346\216\222.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\237\272\347\241\200\347\237\245\350\257\206\350\257\225\345\215\267.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\237\272\347\241\200\347\237\245\350\257\206\350\257\225\345\215\267.docx" new file mode 100644 index 0000000..39eab46 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\214\272\345\235\227\351\223\276\346\212\200\346\234\257/\345\237\272\347\241\200\347\237\245\350\257\206\350\257\225\345\215\267.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/2021\345\271\264\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\345\275\222\347\272\263.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/2021\345\271\264\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\345\275\222\347\272\263.docx" new file mode 100644 index 0000000..c6e41d5 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/2021\345\271\264\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\345\275\222\347\272\263.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/2021\345\271\264\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\345\275\222\347\272\263.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/2021\345\271\264\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\345\275\222\347\272\263.pdf" new file mode 100644 index 0000000..e6e3d87 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/2021\345\271\264\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\345\275\222\347\272\263.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/2021\345\271\264\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231\357\274\210\347\273\274\345\220\210\357\274\211 v3.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/2021\345\271\264\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231\357\274\210\347\273\274\345\220\210\357\274\211 v3.docx" new file mode 100644 index 0000000..c7e65eb Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/2021\345\271\264\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231\357\274\210\347\273\274\345\220\210\357\274\211 v3.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/readme.md" new file mode 100644 index 0000000..9b22d88 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/readme.md" @@ -0,0 +1,5 @@ +# 说明 + +这门课要上网课(含网上的作业)、分组作报告和考试。 + +2021-7-6 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\351\200\211\344\277\256\345\267\245\347\250\213\344\274\246\347\220\206\345\255\246\345\244\215\344\271\240\350\265\204\346\226\231-59d7fc8877c66137ee06eff9aef8941ea76e4bfa.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\351\200\211\344\277\256\345\267\245\347\250\213\344\274\246\347\220\206\345\255\246\345\244\215\344\271\240\350\265\204\346\226\231-59d7fc8877c66137ee06eff9aef8941ea76e4bfa.docx" new file mode 100644 index 0000000..a5f354a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\351\200\211\344\277\256\345\267\245\347\250\213\344\274\246\347\220\206\345\255\246\345\244\215\344\271\240\350\265\204\346\226\231-59d7fc8877c66137ee06eff9aef8941ea76e4bfa.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\344\274\246\347\220\206\344\271\240\351\242\230\347\255\224\346\241\210\351\223\276\346\216\245.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\344\274\246\347\220\206\344\271\240\351\242\230\347\255\224\346\241\210\351\223\276\346\216\245.docx" new file mode 100644 index 0000000..a676cc8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\344\274\246\347\220\206\344\271\240\351\242\230\347\255\224\346\241\210\351\223\276\346\216\245.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\346\235\220\346\226\231\351\223\276\346\216\245.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\346\235\220\346\226\231\351\223\276\346\216\245.docx" new file mode 100644 index 0000000..f6cecf8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\346\235\220\346\226\231\351\223\276\346\216\245.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\2312.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\2312.pdf" new file mode 100644 index 0000000..681c2a7 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\2312.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231.docx" new file mode 100644 index 0000000..81175c4 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231\357\274\2102021\346\230\245\357\274\211(1)(2).docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231\357\274\2102021\346\230\245\357\274\211(1)(2).docx" new file mode 100644 index 0000000..e2f78da Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231\357\274\2102021\346\230\245\357\274\211(1)(2).docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231\357\274\2102021\346\230\245\357\274\211(1).docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231\357\274\2102021\346\230\245\357\274\211(1).docx" new file mode 100644 index 0000000..caa22e8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\345\267\245\347\250\213\347\241\225\345\243\253\345\267\245\347\250\213\344\274\246\347\220\206\345\244\215\344\271\240\350\265\204\346\226\231\357\274\2102021\346\230\245\357\274\211(1).docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\346\235\220\346\226\231\351\242\230\347\232\204\350\241\245\345\205\205\347\255\224\346\241\210.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\346\235\220\346\226\231\351\242\230\347\232\204\350\241\245\345\205\205\347\255\224\346\241\210.txt" new file mode 100644 index 0000000..149264c --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\346\235\220\346\226\231\351\242\230\347\232\204\350\241\245\345\205\205\347\255\224\346\241\210.txt" @@ -0,0 +1,52 @@ +材料题的补充答案 + +第7章材料题 + +张光斗和黄万里是清华大学的知名教授,都是中国水利行业的大师。 +张光斗院士“一直胸怀祖国,热爱人民,情系山河,为我国的江河治理和水资源的开发利用栉风沐雨、殚精竭虑,建立了卓越功绩”,“钟爱教育事业,在长期的教学生涯中,默默耕耘,传道授业,诲人不倦,为祖国的水利水电事业培养了众多优秀人才,做出了重要贡献”,其“品德风范山高水长,令人景仰!”。(摘自胡锦涛致张光斗95岁寿辰贺信) +黄万里教授不仅学识渊博,更被誉为“中国知识分子的良心”, 在那个万马齐喑的年代,“真正做到了俯仰无愧于天地”,其高贵品格赢得了万千群众发自内心的崇敬。但由于遭受了不公正的待遇,黄万里教授失去了参与中国诸多重大水利工程建设的机会。 +请广泛查阅资料,对比张光斗、黄万里两位水利大师不同的辉煌人生。水利从业者在实践中可能面对哪些伦理困境?该做出怎样的价值选择? + +答: +水利工程涉及社会伦理、经济伦理、发展伦理、生态伦理等多种伦理问题。 社会伦理层面政府处于主导地位,政府行政意愿对于水利工程建设影响巨大。政府是水利工程主导者和决策者,是促进水利行业发展的积极因素,在强力推动工程建设中,技术论证和环境评估有可能被弱化,缺乏与公众进行相互理解沟通的有效措施,从而引发公众的邻避情绪。从发展和生态伦理层面,水利工程活动与自然、环境间有着复杂的关系。由于水利工程或多或少影响河流生态系统,问题可能几十年后显现。 水利工程师需刻苦钻研业务,提升专业素养;强化职业规范,忠实履行职责,确保工程安全;尊重生态环境,顺应自然,践行可持续发展。水利工程师在实践中应不断提升自我,努力实现多重角色下的伦理统一。与其他行业相比,水利工程师与自然山水的接触更为密切,因此,水利工程师更应珍惜自然界的一山一水,一草一木,充分重视水利工程对自然环境产生的不利影响,努力做到工程、人与自然和谐相处。同时政府相关部门也要认清环境和发展之间的矛盾,权衡利异。 + +第10章材料题 + +社会主义核心价值观是当代全体中国人民共同的思想文化基础和价值追求,也是指导当代中国大数据公共治理实践的核心价值。请结合参与大数据公共治理体系的各种角色和公共治理的事前、事中、事后等不同阶段,对大数据公共治理中遇到的典型伦理困境、伦理决策应秉持的价值准则、困境的破解方法等进行分析和讨论,从而深化对社会主义核心价值观的理解和践行能力。 + +答: +大数据技术带来的伦理问题主要包括以下几方面:一是隐私泄露问题。大数据技术具有随时随地保真性记录、永久性保存、还原性画像等强大功能。个人的身份信息、行为信息、位置信息甚至信仰、观念、情感与社交关系等隐私信息,都可能被记录、保存、呈现。在现代社会,人们几乎无时无刻不暴露在智能设备面前,时时刻刻在产生数据并被记录。如果任由网络平台运营商收集、存储、兜售用户数据,个人隐私将无从谈起。二是信息安全问题。个人所产生的数据包括主动产生的数据和被动留下的数据,其删除权、存储权、使用权、知情权等本属于个人可以自主的权利,但在很多情况下难以保障安全。一些信息技术本身就存在安全漏洞,可能导致数据泄露、伪造、失真等问题,影响信息安全。此外,大数据使用的失范与误导,如大数据使用的权责问题、相关信息产品的社会责任问题以及高科技犯罪活动等,也是信息安全问题衍生的伦理问题。三是数据鸿沟问题。一部分人能够较好占有并利用大数据资源,而另一部分人则难以占有和利用大数据资源,造成数据鸿沟。数据鸿沟会产生信息红利分配不公问题,加剧群体差异和社会矛盾。 + +第12章材料题 + +假如制药企业雇主指使工程技术人员在药物研发数据上弄虚作假,或有意隐瞒不利信息,那些诚信正直的人就会感到左右为难:要么拒绝,要么违心地听从雇主的安排。如果你碰到这种情况,你会如何分析和解决此类难题。 + +答: +生物医药工程技术人员面临的潜在的道德困境主要是当两种道德义务需要同时遵守但又无法同时履行时,出现的两难困境,如医生在做一项有利于患者的手术时同时又尊重患者充分知情后的拒绝接受的自主选择时会面临道德困境,技术人员在雇主指使下在药物研发数据上弄虚作假或有意隐瞒不利信息时同自己诚信的道德观和职业伦理要求相冲突时。应对之策是要区分初始义务和实际义务,要充分权衡各种方案的利弊,做到两害相权取其轻。 + +第13章材料题 + +江苏南通六建建设集团有限公司承建施工的“迪拜双塔”工程在众多工程中脱颖而出获得境外工程鲁班奖。迪拜双塔工程是南通六建于2005年年初取得阿联酋无限级经营资格后首个签约总承包的工程项目。该工程总建筑面积6.6万平方米,为两幢钢筋砼框筒结构的超高层建筑,总建筑层数34层,地面以上总高度为116米,科技含量极高。 +为了实现开门红效应,公司决心将迪拜双塔工程打造成展示铁军风采的标杆工程,抽调精兵强将,精心组织,科学管理,克服施工条件恶劣、市场红火材料供应不及时以及不同文化背景下形成的固有观念的磨擦和碰撞等诸多困难,对每道工序、每个环节、每个节点严把关,保证一次成优,应用了大体积砼裂缝控制技术等十多项创新工艺,解决施工难题,把工程难点建设成工程亮点,全力打造综合创优精品工程。南通六建以质量优、服务佳赢得了外国业主的一致好评。随着经济全球化的发展,以及技术创新能力的增强,工程实践面临的机遇和挑战也在增加,那么在全球化的大背景下工程活动应考虑的因素有哪些以及如何开展工程活动,谈谈你的看法。 + +答: +因素:文化背景、规则制度等。这是因为工程实践活动具有多样性,风险性和复杂性,同时不同的伦理思想会产生不同的伦理价值诉求,并不存在统一的、普遍适用的伦理准则,相应的具体实践中面对的伦理选择也是复杂多样的,常常会面临诸如电车难题的伦理困境,因此在面对具体的伦理问题是需要实践主体结合各类工程不同的特点与要求,选择恰当的伦理原则并进行权宜、变通,相对合理化的解决伦理问题。 +开展方法: +①培养工程实践主体的伦理意识。 +②利用伦理原则、底线原则与相关具体情境相结合的方式化解工程实践中的伦理问题。 +③遇到难以抉择的伦理问题是需多方听取意见。 +④根据工程实践中遇到的伦理问题,及时修正相关伦理准则和规范。 +⑤逐步建立遵守工程伦理准则的相关保障制度。 + +你是一家大型建筑工程公司的总工程师。目前,你所在的公司正承担着一项国际工程,你负责该工程整体的技术管理工作。在该工程实施过程中,你发现,东道国对工程的要求与本土国的要求大相径庭。本土国一般是按甲方要求实施,更关注工程的工期与成本。而东道国不片面追求工期与成本,他们在选择材料时,会评估厂家标准与他们的标准哪个更高,哪个标准高就按哪个来。并且,在施工过程中,该国特别强调材料的质量、工艺的完善,强调追本溯源,质量管理体系等。这些对你产生了很大的触动。你内心认同东道国的理念与做法,但工程的工期与成本压力又非常大,你陷入了两难,你该怎么做? + +答: +最好的方法是在签订施工合同的时候,和甲方明确约定建筑材料价格风险的承担范围,例如可以约定建筑材料价格涨跌幅度在5%以内由自己承担亏损或收益,5%以外由甲方承担亏损或收益。 + + 第92届奥斯卡金像奖最佳纪录长片奖获奖影片《美国工厂》(American Factory,2019),记录了中国福耀玻璃投资美国俄亥俄州代顿工厂的全过程,突出反映了中美企业管理的差异以及跨文化的冲突。2017年6月12日,《纽约时报》刊文,报道了福耀车间里出现的跨国文化冲突。有员工质疑该公司是否真的想按照美式监督和美国标准来经营,全美汽车工人联合会(United Automobile Workers,UAW)对福耀发起了工会维权运动。曹德旺则明确表示,如果工会成立的话,宁可关掉福耀美国工厂。因为美国式工会没有希望,它是代顿工厂的前身通用汽车破产的根源所在。 +请结合这一案例,谈谈我国制造业企业在“走出去”过程中应该如何更好地应用跨文化的工程伦理规范? + +答: +福耀玻璃投资美国工厂,引发关于制度的文化冲突,体现的是中美两国制度、思想等的区别。这说明不同国家地区的人有着不同的思想,这就要求有一种统筹性的、根本性的和全人类共同认可的伦理道德,来约束不同文化背景下的人。因此,应做到: +1.了解国外的文化背景和相关制度,并权衡利弊,如果实在不能接受,如曹德旺所说,则选择放弃,不能违背当地的底线。 +2.积极地将中国独有的、优秀的工程伦理规范及其成果展示至国外,作为一种文化输出,以寻求双赢。 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\350\200\201\345\270\210\346\217\220\351\206\222.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\350\200\201\345\270\210\346\217\220\351\206\222.txt" new file mode 100644 index 0000000..a8c996f --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\267\245\347\250\213\344\274\246\347\220\206/\350\200\201\345\270\210\346\217\220\351\206\222.txt" @@ -0,0 +1,5 @@ +老师提醒 + +这学期期末考试为闭卷考试。期末考试试题由选择题、简答题和材料分析题3类题构成。选择题和简答题的复习资料见word文档(群文件)。材料分析题要注重体现出对案例的分析(比如不同利益相关方的利益冲突,一个人不同的角色下的不同责任冲突等)。 + +2021-6-17 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/2021\345\271\264\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\345\275\222\347\272\263 v3.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/2021\345\271\264\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\345\275\222\347\272\263 v3.docx" new file mode 100644 index 0000000..ac5dc7c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/2021\345\271\264\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\345\275\222\347\272\263 v3.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/2021\345\271\264\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\345\275\222\347\272\263 v3.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/2021\345\271\264\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\345\275\222\347\272\263 v3.pdf" new file mode 100644 index 0000000..6b6165b Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/2021\345\271\264\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\345\275\222\347\272\263 v3.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/2021\345\271\264\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\350\200\203\347\202\271.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/2021\345\271\264\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\350\200\203\347\202\271.txt" new file mode 100644 index 0000000..e7838dd --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/2021\345\271\264\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\350\200\203\347\202\271.txt" @@ -0,0 +1,10 @@ +2021年并行与分布式计算考点 + +选填题:存储器体系带宽常识、组相联、网络拓扑等 +简答题(解释、说明、定义):JVM垃圾回收机制、多线程CPU、GFS(HDFS)、MapReduce中任务的独立性(即一个任务失败,其他任务不受影响) +分析题:CPU流水线及转发机制、MPI的API +计算题:JVM背景下选择最优编译方式、并行程序设计的任务图 + +注:分支预测和缓存一致性没考。 + +2021-5-10 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/99_\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227_2021.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/99_\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227_2021.docx" new file mode 100644 index 0000000..f74f8fd Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/99_\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227_2021.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/IMG_20210412_162910.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/IMG_20210412_162910.jpg" new file mode 100644 index 0000000..04a5067 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/IMG_20210412_162910.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/ZKM\347\275\221\347\273\234\346\213\223\346\211\221\346\200\273\347\273\223.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/ZKM\347\275\221\347\273\234\346\213\223\346\211\221\346\200\273\347\273\223.jpg" new file mode 100644 index 0000000..04fad1e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/ZKM\347\275\221\347\273\234\346\213\223\346\211\221\346\200\273\347\273\223.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/readme.md" new file mode 100644 index 0000000..83a37f3 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/readme.md" @@ -0,0 +1,5 @@ +# 说明 + +这门课要做小组实验、写论文和考试。 + +2021-5-7 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\350\200\203\350\257\225\347\232\204\350\200\201\345\270\210\346\217\220\351\206\222.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\350\200\203\350\257\225\347\232\204\350\200\201\345\270\210\346\217\220\351\206\222.txt" new file mode 100644 index 0000000..395054e --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227\350\200\203\350\257\225\347\232\204\350\200\201\345\270\210\346\217\220\351\206\222.txt" @@ -0,0 +1,11 @@ +并行与分布式计算考试的老师提醒 + +主要是简答题,少量名词解释和计算题 +劳动节假期后考试 +建议带计算器 + +关于考试的一些问题: +A: 我感觉不同版本的Hadoop API变化较大。请问Hadoop的API要考吗?若要考,考哪个版本的? +陈虎老师 :如果要考API,我会在试卷上列出来。 +A: 请问如果考MPI,是不是也会列出来? +陈虎老师:简单的就不列了。 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/\345\271\266\350\241\214\357\274\210\350\213\217\357\274\211.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/\345\271\266\350\241\214\357\274\210\350\213\217\357\274\211.docx" new file mode 100644 index 0000000..1066f99 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\345\271\266\350\241\214\344\270\216\345\210\206\345\270\203\345\274\217\350\256\241\347\256\227/\345\271\266\350\241\214\357\274\210\350\213\217\357\274\211.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/2019\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246 \346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\351\242\230.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/2019\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246 \346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\351\242\230.doc" new file mode 100644 index 0000000..d190a1e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/2019\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246 \346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\351\242\230.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/2020\345\271\264\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\345\244\247\347\272\262.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/2020\345\271\264\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\345\244\247\347\272\262.txt" new file mode 100644 index 0000000..671eaae --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/2020\345\271\264\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\345\244\247\347\272\262.txt" @@ -0,0 +1,37 @@ +2020年敏捷项目管理复习大纲 + +①敏捷项目管理概述 + 了解项目的属性,传统项目管理的主要概念 + 敏捷开发的背景 + 敏捷开发的宣言 + Scrum敏捷开发的框架 + Scrum角色,团队及特质 + Scrum工件,仪式及特点 + +②Scrum敏捷工作实践 + 愿景声明 + 产品路线图,创建的步骤,优先级估算方法 + 用户故事,产品待办任务Product Backlog + 敏捷冲刺的概念、要素和角色,每日例会 + 冲刺计划,冲刺待办任务Sprint Backlog + 燃尽图的概念 + 任务板(看板)的表示 + 冲刺开发的三个主要活动,任务完成的定义 + 敏捷工程实践:结对编程、持续集成、TDD + 冲刺中Scrum主管的任务,障碍 + 冲刺评审会议 + 冲刺回顾会议 + 发布冲刺的工作:内部准备和外部准备 + +③在企业中实施敏捷 + 企业组织中实施敏捷的步骤 + 实现敏捷转型的系统工程 + 如何组织实施敏捷 + +④其他敏捷项目管理开发框架 + 掌握不同的敏捷开发框架 + 敏捷度量和敏捷原则 + Scrum Of Scrums + 敏捷项目管理需要的传统项目管理的知识领域 + 敏捷项目管理的关键测量指标 + 敏捷项目管理的十大好处 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/readme.md" new file mode 100644 index 0000000..68a996c --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/readme.md" @@ -0,0 +1,5 @@ +# 说明 + +这门课需要做个人作业、小组作业和考试。 + +2020-1-5 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/\345\244\215\344\271\240\346\217\220\347\272\2622017\347\255\224\346\241\210.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/\345\244\215\344\271\240\346\217\220\347\272\2622017\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..4a2acb3 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/\345\244\215\344\271\240\346\217\220\347\272\2622017\347\255\224\346\241\210.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206--\345\244\215\344\271\240\346\217\220\347\272\2622017 (1).docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206--\345\244\215\344\271\240\346\217\220\347\272\2622017 (1).docx" new file mode 100644 index 0000000..3d8240c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206--\345\244\215\344\271\240\346\217\220\347\272\2622017 (1).docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\346\217\220\347\272\262\345\217\212\347\255\224\346\241\210.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\346\217\220\347\272\262\345\217\212\347\255\224\346\241\210.pdf" new file mode 100644 index 0000000..50b5c47 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206/\346\225\217\346\215\267\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\346\217\220\347\272\262\345\217\212\347\255\224\346\241\210.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\260\346\215\256\346\214\226\346\216\230/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\260\346\215\256\346\214\226\346\216\230/readme.md" new file mode 100644 index 0000000..05c0c77 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\225\260\346\215\256\346\214\226\346\216\230/readme.md" @@ -0,0 +1,7 @@ +# 说明 + +这门课需要参加比赛、讲论文和写论文。 + +参加的比赛是当年的CCF大数据与计算智能大赛;讲论文是从当年的KDD会议中选一篇论文放幻灯片做报告;写论文就是写关于前面比赛的论文。 + +2021-5-7 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\344\275\234\344\270\232\347\255\224\346\241\210.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\344\275\234\344\270\232\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..fef0d73 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\344\275\234\344\270\232\347\255\224\346\241\210.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\345\244\215\344\271\240\345\275\222\347\272\263.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\345\244\215\344\271\240\345\275\222\347\272\263.docx" new file mode 100644 index 0000000..4bc5b1e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\345\244\215\344\271\240\345\275\222\347\272\263.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\345\244\215\344\271\240\345\275\222\347\272\263.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\345\244\215\344\271\240\345\275\222\347\272\263.pdf" new file mode 100644 index 0000000..2b3c01b Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\345\244\215\344\271\240\345\275\222\347\272\263.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\350\200\203\350\257\225.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\350\200\203\350\257\225.png" new file mode 100644 index 0000000..1f0a6f9 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/2021\345\271\264\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\350\200\203\350\257\225.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/readme.md" new file mode 100644 index 0000000..8662003 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/readme.md" @@ -0,0 +1,5 @@ +# 说明 + +这门课要上网课(包括网上的作业和考试)、做分组报告和开卷考试。 + +2021-7-6 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\345\244\215\344\271\240\346\235\220\346\226\231\351\223\276\346\216\245.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\345\244\215\344\271\240\346\235\220\346\226\231\351\223\276\346\216\245.docx" new file mode 100644 index 0000000..b0595f7 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\345\244\215\344\271\240\346\235\220\346\226\231\351\223\276\346\216\245.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246(\345\223\210\345\260\224\346\273\250\345\267\245\344\270\232\345\244\247\345\255\246)\347\255\224\346\241\210\346\234\211\347\255\224\346\241\210.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246(\345\223\210\345\260\224\346\273\250\345\267\245\344\270\232\345\244\247\345\255\246)\347\255\224\346\241\210\346\234\211\347\255\224\346\241\210.pdf" new file mode 100644 index 0000000..c9f5353 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246(\345\223\210\345\260\224\346\273\250\345\267\245\344\270\232\345\244\247\345\255\246)\347\255\224\346\241\210\346\234\211\347\255\224\346\241\210.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246_\345\223\210\345\267\245\345\244\247_\350\243\264\347\247\213\345\256\207_\345\205\250\351\203\250\345\270\246\345\244\215\344\271\240\351\242\230.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246_\345\223\210\345\267\245\345\244\247_\350\243\264\347\247\213\345\256\207_\345\205\250\351\203\250\345\270\246\345\244\215\344\271\240\351\242\230.pdf" new file mode 100644 index 0000000..0292e6c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246_\345\223\210\345\267\245\345\244\247_\350\243\264\347\247\213\345\256\207_\345\205\250\351\203\250\345\270\246\345\244\215\344\271\240\351\242\230.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\344\275\234\344\270\232.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\344\275\234\344\270\232.pdf" new file mode 100644 index 0000000..6844919 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\344\275\234\344\270\232.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\346\205\225\350\257\276\344\271\240\351\242\230\345\217\212\347\255\224\346\241\210.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\346\205\225\350\257\276\344\271\240\351\242\230\345\217\212\347\255\224\346\241\210.pdf" new file mode 100644 index 0000000..303737d Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\346\205\225\350\257\276\344\271\240\351\242\230\345\217\212\347\255\224\346\241\210.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\346\225\231\345\255\246\344\272\213\345\256\2342021-\345\255\246\347\224\237.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\346\225\231\345\255\246\344\272\213\345\256\2342021-\345\255\246\347\224\237.docx" new file mode 100644 index 0000000..4b9cf46 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\346\225\231\345\255\246\344\272\213\345\256\2342021-\345\255\246\347\224\237.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\347\232\204\347\254\224\350\256\260.doc \346\226\207\346\241\243\345\205\250\346\226\207\351\242\204\350\247\210.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\347\232\204\347\254\224\350\256\260.doc \346\226\207\346\241\243\345\205\250\346\226\207\351\242\204\350\247\210.pdf" new file mode 100644 index 0000000..a052ca0 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\347\232\204\347\254\224\350\256\260.doc \346\226\207\346\241\243\345\205\250\346\226\207\351\242\204\350\247\210.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\347\254\224\350\256\260.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\347\254\224\350\256\260.pdf" new file mode 100644 index 0000000..4d1e148 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\347\254\224\350\256\260.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\350\257\276\345\220\216\344\271\240\351\242\230.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\350\257\276\345\220\216\344\271\240\351\242\230.docx" new file mode 100644 index 0000000..859a31e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246\350\257\276\345\220\216\344\271\240\351\242\230.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\347\254\254\345\205\255\350\256\262\344\275\234\344\270\232.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\347\254\254\345\205\255\350\256\262\344\275\234\344\270\232.pdf" new file mode 100644 index 0000000..74f26af Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\347\254\254\345\205\255\350\256\262\344\275\234\344\270\232.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\350\200\203\350\257\225\346\223\215\344\275\234\346\265\201\347\250\213.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\350\200\203\350\257\225\346\223\215\344\275\234\346\265\201\347\250\213.pdf" new file mode 100644 index 0000000..95dc734 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\346\262\237\351\200\232\345\277\203\347\220\206\345\255\246/\350\200\203\350\257\225\346\223\215\344\275\234\346\265\201\347\250\213.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/2019\345\271\264UML\345\241\253\347\251\272\351\242\230\347\256\200\347\255\224\351\242\230.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/2019\345\271\264UML\345\241\253\347\251\272\351\242\230\347\256\200\347\255\224\351\242\230.docx" new file mode 100644 index 0000000..ba2af70 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/2019\345\271\264UML\345\241\253\347\251\272\351\242\230\347\256\200\347\255\224\351\242\230.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/FAQs.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/FAQs.doc" new file mode 100644 index 0000000..4295215 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/FAQs.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/P2P\347\202\271\346\222\255.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/P2P\347\202\271\346\222\255.docx" new file mode 100644 index 0000000..08e9e69 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/P2P\347\202\271\346\222\255.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\345\210\206\346\236\220\345\222\214\350\256\276\350\256\241/\347\224\250\344\276\213\345\256\236\347\216\260\350\247\204\347\272\246.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\345\210\206\346\236\220\345\222\214\350\256\276\350\256\241/\347\224\250\344\276\213\345\256\236\347\216\260\350\247\204\347\272\246.doc" new file mode 100644 index 0000000..a66339e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\345\210\206\346\236\220\345\222\214\350\256\276\350\256\241/\347\224\250\344\276\213\345\256\236\347\216\260\350\247\204\347\272\246.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\345\210\206\346\236\220\345\222\214\350\256\276\350\256\241/\350\275\257\344\273\266\346\236\266\346\236\204\346\226\207\346\241\243.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\345\210\206\346\236\220\345\222\214\350\256\276\350\256\241/\350\275\257\344\273\266\346\236\266\346\236\204\346\226\207\346\241\243.doc" new file mode 100644 index 0000000..aa0c2a0 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\345\210\206\346\236\220\345\222\214\350\256\276\350\256\241/\350\275\257\344\273\266\346\236\266\346\236\204\346\226\207\346\241\243.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\345\211\215\346\231\257\346\226\207\346\241\243.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\345\211\215\346\231\257\346\226\207\346\241\243.doc" new file mode 100644 index 0000000..6d1d2be Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\345\211\215\346\231\257\346\226\207\346\241\243.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\347\224\250\344\276\213\350\247\204\347\272\246\346\250\241\346\235\277.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\347\224\250\344\276\213\350\247\204\347\272\246\346\250\241\346\235\277.doc" new file mode 100644 index 0000000..384e376 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\347\224\250\344\276\213\350\247\204\347\272\246\346\250\241\346\235\277.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\350\241\245\345\205\205\350\247\204\347\272\246.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\350\241\245\345\205\205\350\247\204\347\272\246.doc" new file mode 100644 index 0000000..160ad0d Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\350\241\245\345\205\205\350\247\204\347\272\246.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\350\257\215\346\261\207\350\241\250.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\350\257\215\346\261\207\350\241\250.doc" new file mode 100644 index 0000000..20dee37 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\350\257\215\346\261\207\350\241\250.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\350\275\257\344\273\266\351\234\200\346\261\202\350\247\204\347\272\246.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\350\275\257\344\273\266\351\234\200\346\261\202\350\247\204\347\272\246.doc" new file mode 100644 index 0000000..c6ee4e6 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\346\226\207\346\241\243\346\250\241\346\235\277/\351\234\200\346\261\202/\350\275\257\344\273\266\351\234\200\346\261\202\350\247\204\347\272\246.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\350\257\276\347\250\213\351\241\271\347\233\256\345\256\236\350\267\265\350\246\201\346\261\202.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\350\257\276\347\250\213\351\241\271\347\233\256\345\256\236\350\267\265\350\246\201\346\261\202.doc" new file mode 100644 index 0000000..bc2963a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/UML/\345\244\247\344\275\234\344\270\232/\350\257\276\347\250\213\351\241\271\347\233\256\345\256\236\350\267\265\350\246\201\346\261\202.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/readme.md" new file mode 100644 index 0000000..664bfba --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/readme.md" @@ -0,0 +1,4 @@ +# 说明 +这门课需要做作业和考试。 + +2020-12-9 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\210\206\345\270\203\345\274\217\346\236\266\346\236\204.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\210\206\345\270\203\345\274\217\346\236\266\346\236\204.docx" new file mode 100644 index 0000000..564074f Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\210\206\345\270\203\345\274\217\346\236\266\346\236\204.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\211\215\350\276\210\347\232\204\345\244\215\344\271\240\350\265\204\346\226\231.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\211\215\350\276\210\347\232\204\345\244\215\344\271\240\350\265\204\346\226\231.doc" new file mode 100644 index 0000000..b913059 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\211\215\350\276\210\347\232\204\345\244\215\344\271\240\350\265\204\346\226\231.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240.ppt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240.ppt" new file mode 100644 index 0000000..3d343cc Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240.ppt" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\346\200\273\347\273\223.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\346\200\273\347\273\223.docx" new file mode 100644 index 0000000..661fbec Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\346\200\273\347\273\223.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\350\214\203\345\233\264hxy/UML.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\350\214\203\345\233\264hxy/UML.png" new file mode 100644 index 0000000..d856b3b Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\350\214\203\345\233\264hxy/UML.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\350\214\203\345\233\264hxy/\347\263\273\347\273\237\345\210\206\346\236\220\345\220\204\347\247\215\345\233\276.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\350\214\203\345\233\264hxy/\347\263\273\347\273\237\345\210\206\346\236\220\345\220\204\347\247\215\345\233\276.doc" new file mode 100644 index 0000000..aa6d262 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\350\214\203\345\233\264hxy/\347\263\273\347\273\237\345\210\206\346\236\220\345\220\204\347\247\215\345\233\276.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\350\214\203\345\233\264hxy/\347\263\273\347\273\237\350\256\276\350\256\241\344\270\216\345\210\206\346\236\220\345\244\215\344\271\240\350\214\203\345\233\264.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\350\214\203\345\233\264hxy/\347\263\273\347\273\237\350\256\276\350\256\241\344\270\216\345\210\206\346\236\220\345\244\215\344\271\240\350\214\203\345\233\264.docx" new file mode 100644 index 0000000..baa4e06 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\350\214\203\345\233\264hxy/\347\263\273\347\273\237\350\256\276\350\256\241\344\270\216\345\210\206\346\236\220\345\244\215\344\271\240\350\214\203\345\233\264.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\351\242\230(1).doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\351\242\230(1).doc" new file mode 100644 index 0000000..7f77ff2 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\351\242\230(1).doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\351\242\230.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\351\242\230.doc" new file mode 100644 index 0000000..7b671df Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\215\344\271\240\351\242\230.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\247PPT\351\227\256\351\242\230\346\225\264\347\220\206.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\247PPT\351\227\256\351\242\230\346\225\264\347\220\206.docx" new file mode 100644 index 0000000..146961a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\244\247PPT\351\227\256\351\242\230\346\225\264\347\220\206.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2005\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_A\345\215\267.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2005\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_A\345\215\267.doc" new file mode 100644 index 0000000..be195f9 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2005\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_A\345\215\267.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2005\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_B\345\215\267.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2005\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_B\345\215\267.doc" new file mode 100644 index 0000000..403e58c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2005\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_B\345\215\267.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2006\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_A\345\215\267.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2006\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_A\345\215\267.doc" new file mode 100644 index 0000000..388c3aa Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2006\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_A\345\215\267.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2006\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_B\345\215\267.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2006\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_B\345\215\267.doc" new file mode 100644 index 0000000..e8ed3bf Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2006\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213\350\257\225\345\215\267_B\345\215\267.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2007\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213_A\345\215\267.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2007\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213_A\345\215\267.doc" new file mode 100644 index 0000000..1a2972e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2007\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213_A\345\215\267.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2007\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213_B\345\215\267.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2007\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213_B\345\215\267.doc" new file mode 100644 index 0000000..48b2d6c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2007\347\272\247\343\200\212\350\275\257\344\273\266\351\234\200\346\261\202\345\210\206\346\236\220\343\200\201\350\256\276\350\256\241\344\270\216\345\273\272\346\250\241\343\200\213_B\345\215\267.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010 (1).JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010 (1).JPG" new file mode 100644 index 0000000..f103535 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010 (1).JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010 (2).JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010 (2).JPG" new file mode 100644 index 0000000..8aaa9ea Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010 (2).JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010 (3).JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010 (3).JPG" new file mode 100644 index 0000000..33e5f81 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010 (3).JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010-OOSAD-A.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010-OOSAD-A.doc" new file mode 100644 index 0000000..60c85c7 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010-OOSAD-A.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010-OOSAD-A[1].doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010-OOSAD-A[1].doc" new file mode 100644 index 0000000..7d28eef Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\345\276\200\345\271\264\350\257\225\345\215\267/2010-OOSAD-A[1].doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\346\211\221\345\205\213\347\211\214\351\242\230\347\233\256.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\346\211\221\345\205\213\347\211\214\351\242\230\347\233\256.docx" new file mode 100644 index 0000000..54f4d62 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\346\211\221\345\205\213\347\211\214\351\242\230\347\233\256.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/Client.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/Client.png" new file mode 100644 index 0000000..590221b Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/Client.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/activity.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/activity.png" new file mode 100644 index 0000000..0221085 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/activity.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/domain_model.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/domain_model.png" new file mode 100644 index 0000000..e6024f5 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/domain_model.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/multi-arch.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/multi-arch.png" new file mode 100644 index 0000000..7383191 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/multi-arch.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/port.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/port.png" new file mode 100644 index 0000000..0278d33 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/port.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\344\270\232\345\212\241\346\250\241\345\236\213.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\344\270\232\345\212\241\346\250\241\345\236\213.jpg" new file mode 100644 index 0000000..e463d56 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\344\270\232\345\212\241\346\250\241\345\236\213.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\344\272\244\346\230\223.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\344\272\244\346\230\223.png" new file mode 100644 index 0000000..a04d912 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\344\272\244\346\230\223.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\344\272\247\345\223\201\347\224\237\346\210\220.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\344\272\247\345\223\201\347\224\237\346\210\220.png" new file mode 100644 index 0000000..470125d Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\344\272\247\345\223\201\347\224\237\346\210\220.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\237\237\346\250\241\345\236\2132.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\237\237\346\250\241\345\236\2132.png" new file mode 100644 index 0000000..7c503cb Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\237\237\346\250\241\345\236\2132.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\237\237\346\250\241\345\236\2133.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\237\237\346\250\241\345\236\2133.jpg" new file mode 100644 index 0000000..bc21896 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\237\237\346\250\241\345\236\2133.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\256\241\346\211\271\347\255\226\347\225\245.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\256\241\346\211\271\347\255\226\347\225\245.png" new file mode 100644 index 0000000..93d3b3a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\256\241\346\211\271\347\255\226\347\225\245.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\274\200\345\217\221\351\203\250.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\274\200\345\217\221\351\203\250.png" new file mode 100644 index 0000000..8e738be Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\345\274\200\345\217\221\351\203\250.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\346\212\225\350\265\204.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\346\212\225\350\265\204.png" new file mode 100644 index 0000000..cd833ac Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\346\212\225\350\265\204.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\346\264\273\345\212\250\345\233\276-\351\243\216\351\231\251\346\216\247\345\210\266.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\346\264\273\345\212\250\345\233\276-\351\243\216\351\231\251\346\216\247\345\210\266.png" new file mode 100644 index 0000000..50b6fc8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\346\264\273\345\212\250\345\233\276-\351\243\216\351\231\251\346\216\247\345\210\266.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\224\237\346\210\220\347\255\226\347\225\245.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\224\237\346\210\220\347\255\226\347\225\245.png" new file mode 100644 index 0000000..e44c299 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\224\237\346\210\220\347\255\226\347\225\245.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\240\224\347\251\266\345\221\230.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\240\224\347\251\266\345\221\230.png" new file mode 100644 index 0000000..07880bb Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\240\224\347\251\266\345\221\230.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\261\273\345\233\2762.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\261\273\345\233\2762.png" new file mode 100644 index 0000000..da26dbe Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\261\273\345\233\2762.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\263\273\347\273\237\345\210\206\346\236\220\344\275\234\344\270\232.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\263\273\347\273\237\345\210\206\346\236\220\344\275\234\344\270\232.docx" new file mode 100644 index 0000000..ecec1cc Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\263\273\347\273\237\345\210\206\346\236\220\344\275\234\344\270\232.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\263\273\347\273\237\346\250\241\345\236\213.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\263\273\347\273\237\346\250\241\345\236\213.jpg" new file mode 100644 index 0000000..e463d56 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\347\263\273\347\273\237\346\250\241\345\236\213.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\350\277\220\350\220\245\347\255\226\347\225\245.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\350\277\220\350\220\245\347\255\226\347\225\245.png" new file mode 100644 index 0000000..f47c853 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\350\277\220\350\220\245\347\255\226\347\225\245.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\351\243\216\346\216\247.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\351\243\216\346\216\247.png" new file mode 100644 index 0000000..1801c57 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/GigZuoYe/\351\243\216\346\216\247.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/finished/OO-UML test.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/finished/OO-UML test.doc" new file mode 100644 index 0000000..94d65a1 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/finished/OO-UML test.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/finished/myreview.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/finished/myreview.doc" new file mode 100644 index 0000000..10f90ec Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220/\347\263\273\347\273\237\345\210\206\346\236\220/finished/myreview.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\345\273\272\346\250\241\345\244\215\344\271\240.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\345\273\272\346\250\241\345\244\215\344\271\240.docx" new file mode 100644 index 0000000..f37be34 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\345\273\272\346\250\241\345\244\215\344\271\240.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241\345\275\222\347\272\263\357\274\210IBM DEV475\351\203\250\345\210\206\357\274\211 v6.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241\345\275\222\347\272\263\357\274\210IBM DEV475\351\203\250\345\210\206\357\274\211 v6.docx" new file mode 100644 index 0000000..c436854 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241\345\275\222\347\272\263\357\274\210IBM DEV475\351\203\250\345\210\206\357\274\211 v6.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241\345\275\222\347\272\263\357\274\210IBM DEV475\351\203\250\345\210\206\357\274\211 v6.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241\345\275\222\347\272\263\357\274\210IBM DEV475\351\203\250\345\210\206\357\274\211 v6.pdf" new file mode 100644 index 0000000..1d5c091 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241\345\275\222\347\272\263\357\274\210IBM DEV475\351\203\250\345\210\206\357\274\211 v6.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2201.JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2201.JPG" new file mode 100644 index 0000000..e9d16fe Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2201.JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2202.JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2202.JPG" new file mode 100644 index 0000000..994a260 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2202.JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2203.JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2203.JPG" new file mode 100644 index 0000000..1f33725 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2203.JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2204.JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2204.JPG" new file mode 100644 index 0000000..0207cc1 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\347\263\273\347\273\237\345\210\206\346\236\2204.JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\351\234\200\346\261\202\345\210\206\346\236\2201.JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\351\234\200\346\261\202\345\210\206\346\236\2201.JPG" new file mode 100644 index 0000000..f103535 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\351\234\200\346\261\202\345\210\206\346\236\2201.JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\351\234\200\346\261\202\345\210\206\346\236\2202.JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\351\234\200\346\261\202\345\210\206\346\236\2202.JPG" new file mode 100644 index 0000000..8aaa9ea Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\351\234\200\346\261\202\345\210\206\346\236\2202.JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\351\234\200\346\261\202\345\210\206\346\236\2203.JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\351\234\200\346\261\202\345\210\206\346\236\2203.JPG" new file mode 100644 index 0000000..33e5f81 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\347\263\273\347\273\237\345\210\206\346\236\220\347\255\224\346\241\210\357\274\210\346\227\240\350\257\225\345\215\267\357\274\211/\351\234\200\346\261\202\345\210\206\346\236\2203.JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\350\275\257\344\273\266\351\234\200\346\261\202\350\200\203\347\202\271\346\200\273\347\273\223.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\350\275\257\344\273\266\351\234\200\346\261\202\350\200\203\347\202\271\346\200\273\347\273\223.txt" new file mode 100644 index 0000000..b3b1148 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\347\263\273\347\273\237\345\210\206\346\236\220\344\270\216\350\256\276\350\256\241/\350\275\257\344\273\266\351\234\200\346\261\202\350\200\203\347\202\271\346\200\273\347\273\223.txt" @@ -0,0 +1,53 @@ +ܽ: + +ģʼǣԳɼռܳɼ60% + +һͣ + +1ѡ⣨2ÿ15RUP֪ʶ罨ģUML diagram󹤳̡UML building blockȷ + +2⣨425֣֮ǰ˵ֻ3ʱRUP21ÿҪ100֣ij4֮Ͳʣһʲôڸij4ʦ˵Ҫ㼴ɡP.SΪ˶÷֣ҾȥĻһҪϣܶдд㡣 + +һǿRUPάͼ4ˮƽ׶+10ͼڿμ߲οܳ⡣ + +пܻῼƵĿǣRUPʵΪʲôRUPٲȡ + +3⣨5չ15֣ͼ+״̬ͼdzͼ+ʱͼͼϸڵĶͼðŴʲô˼бʲô˼ȵƵġ + +4⣨30֣һproblem statementȻĿstatementֳ4Сʿ顣 + +١10֣ͼϵ߼ϵ + +ڡ10֣ʵ࣬ʵͼص֮ĹϵҪԺͷ + +ۡ5֣ࡢࡢҪij + +ܡ5֣ʱͼ + +עݣȫӢʦȫӢ𣬴װ֣ʵڱﲻģʵģԸ + +ϰοϣʦĵӰ桶UMLûָϡĵڶ֡UMLοֲᡷοķ⣩IBM475ȡ + + + + +漰һЩ֪ʶҪ㣺 + +ࡢӿڡչơΪϡۺϣϵ̬ͼϵͳͼӿڵϵ״̬ͼͼIBM475еġΡķ䡢ϵչ4+1view + + +Ͽʦᵽ֪ʶɢҵıʼҲңʱޣйͼûлˡЩ©ߴϣҸһܻнģΣܻµIJ䣬ʦϢΪ׼ʦ˵ῼһЩҪ͸֪ʶ㡣 + + + + +P.Sʦ˵ǻѧôôԣûΧסҪԷΧ֪ʶҪ֮ģʣοΣҿ΢µȣһΧʦܲ׳ϡ + + +ϣοĴӵܣ뿼ԲΪףҿúóɼлл + +ο֪ʶ㸲ȫ棬̣󹤳̣RUP,UMLģķƷݹ㷺׷ֲΪܺܺõؿѧϰڱſγϵ֪ʶˮƽˮƽԵķڿԵĹûгִѧ罻֮ǣڿĿ͹ԷӦüǿԸֹƽȵԭ + +ðѧԱԳɼһ㣬ԭϿҪӦҵڿý⣬òá⣬ſγ漰ݺܶ࣬ѧϰʱ޴֣Ҳиһԭ + + diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/12\346\234\2101\346\227\245 \344\270\213\345\215\2105\347\202\27116\345\210\206.aac" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/12\346\234\2101\346\227\245 \344\270\213\345\215\2105\347\202\27116\345\210\206.aac" new file mode 100644 index 0000000..9dc37fa Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/12\346\234\2101\346\227\245 \344\270\213\345\215\2105\347\202\27116\345\210\206.aac" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/2017\345\271\2641\346\234\210\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\234\237\346\234\253\350\200\203\350\257\225\345\205\250\347\272\247\347\273\237\350\200\203\350\257\225\345\215\267\347\234\237\351\242\230.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/2017\345\271\2641\346\234\210\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\234\237\346\234\253\350\200\203\350\257\225\345\205\250\347\272\247\347\273\237\350\200\203\350\257\225\345\215\267\347\234\237\351\242\230.docx" new file mode 100644 index 0000000..303bf77 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/2017\345\271\2641\346\234\210\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\234\237\346\234\253\350\200\203\350\257\225\345\205\250\347\272\247\347\273\237\350\200\203\350\257\225\345\215\267\347\234\237\351\242\230.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/2020\345\271\264\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\347\254\224\350\256\260 v5.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/2020\345\271\264\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\347\254\224\350\256\260 v5.docx" new file mode 100644 index 0000000..fd0ac3b Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/2020\345\271\264\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\347\254\224\350\256\260 v5.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/2020\345\271\264\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\347\254\224\350\256\260 v5.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/2020\345\271\264\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\347\254\224\350\256\260 v5.pdf" new file mode 100644 index 0000000..5ba9b1a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/2020\345\271\264\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\347\254\224\350\256\260 v5.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/p3-p7.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/p3-p7.docx" new file mode 100644 index 0000000..620de62 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/p3-p7.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/readme.md" new file mode 100644 index 0000000..f3a1f94 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/readme.md" @@ -0,0 +1,5 @@ +# 说明 + +这门课需要闭卷考试。课本是吴国林的《自然辩证法概论》,由清华大学出版社出版。 + +2021-1-5 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\350\200\203\350\257\225\347\234\237\351\242\230.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\350\200\203\350\257\225\347\234\237\351\242\230.pdf" new file mode 100644 index 0000000..4dd9bbe Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\350\200\203\350\257\225\347\234\237\351\242\230.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\350\200\203\350\257\225\347\237\245\350\257\206\345\244\247\345\205\250.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\350\200\203\350\257\225\347\237\245\350\257\206\345\244\247\345\205\250.doc" new file mode 100644 index 0000000..d364a02 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\350\200\203\350\257\225\347\237\245\350\257\206\345\244\247\345\205\250.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\275\225\351\237\263-007.aac" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\275\225\351\237\263-007.aac" new file mode 100644 index 0000000..0d4cb72 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\275\225\351\237\263-007.aac" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\277\203\345\276\227\347\254\254\344\272\224\351\203\250\345\210\206.pptx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\277\203\345\276\227\347\254\254\344\272\224\351\203\250\345\210\206.pptx" new file mode 100644 index 0000000..9503416 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\345\277\203\345\276\227\347\254\254\344\272\224\351\203\250\345\210\206.pptx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\277\273\350\257\221\347\254\254\344\272\224\351\203\250\345\210\206.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\277\273\350\257\221\347\254\254\344\272\224\351\203\250\345\210\206.docx" new file mode 100644 index 0000000..0cccbb6 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\277\273\350\257\221\347\254\254\344\272\224\351\203\250\345\210\206.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\200\203\347\202\271\347\254\224\350\256\260.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\200\203\347\202\271\347\254\224\350\256\260.txt" new file mode 100644 index 0000000..fddf71d --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\200\203\347\202\271\347\254\224\350\256\260.txt" @@ -0,0 +1,11 @@ +考点笔记 + +考试题目:分为是非题和材料题。 +是非题判断错但答到点也给分。 +材料题回答的得分点要清晰,逻辑清晰。 + +内容:自然观、科学观 + +参考书:课本 + +试卷为统一出题。 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\346\234\200\345\205\250\346\225\264\347\220\206.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\346\234\200\345\205\250\346\225\264\347\220\206.pdf" new file mode 100644 index 0000000..7807c6e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\346\234\200\345\205\250\346\225\264\347\220\206.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/1\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225-LC.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/1\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225-LC.docx" new file mode 100644 index 0000000..3f47a38 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/1\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225-LC.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/2017\345\271\2641\346\234\210\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\234\237\346\234\253\350\200\203\350\257\225\345\205\250\347\272\247\347\273\237\350\200\203\350\257\225\345\215\267\347\234\237\351\242\230.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/2017\345\271\2641\346\234\210\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\234\237\346\234\253\350\200\203\350\257\225\345\205\250\347\272\247\347\273\237\350\200\203\350\257\225\345\215\267\347\234\237\351\242\230.docx" new file mode 100644 index 0000000..303bf77 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/2017\345\271\2641\346\234\210\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\234\237\346\234\253\350\200\203\350\257\225\345\205\250\347\272\247\347\273\237\350\200\203\350\257\225\345\215\267\347\234\237\351\242\230.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/2018\347\272\247\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\350\200\203\350\257\225\350\214\203\345\233\264\345\217\202\350\200\203\347\255\224\346\241\210\346\226\260\346\231\272\346\225\264\347\220\206.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/2018\347\272\247\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\350\200\203\350\257\225\350\214\203\345\233\264\345\217\202\350\200\203\347\255\224\346\241\210\346\226\260\346\231\272\346\225\264\347\220\206.pdf" new file mode 100644 index 0000000..c9f8300 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/2018\347\272\247\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\350\200\203\350\257\225\350\214\203\345\233\264\345\217\202\350\200\203\347\255\224\346\241\210\346\226\260\346\231\272\346\225\264\347\220\206.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\247\221\345\255\246\350\247\202.ppt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\247\221\345\255\246\350\247\202.ppt" new file mode 100644 index 0000000..bcb797b Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\247\221\345\255\246\350\247\202.ppt" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\254\2541\347\257\207 \350\207\252\347\204\266\350\247\202.ppt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\254\2541\347\257\207 \350\207\252\347\204\266\350\247\202.ppt" new file mode 100644 index 0000000..9fad4e0 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\254\2541\347\257\207 \350\207\252\347\204\266\350\247\202.ppt" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\254\2542\347\257\207 \347\247\221\345\255\246\350\247\202\344\270\216\347\247\221\345\255\246\346\226\271\346\263\225\350\256\272.ppt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\254\2542\347\257\207 \347\247\221\345\255\246\350\247\202\344\270\216\347\247\221\345\255\246\346\226\271\346\263\225\350\256\272.ppt" new file mode 100644 index 0000000..70b5bd5 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\254\2542\347\257\207 \347\247\221\345\255\246\350\247\202\344\270\216\347\247\221\345\255\246\346\226\271\346\263\225\350\256\272.ppt" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\254\2543\347\257\207 \347\247\221\345\255\246\346\212\200\346\234\257\344\270\216\347\244\276\344\274\232\350\256\272.ppt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\254\2543\347\257\207 \347\247\221\345\255\246\346\212\200\346\234\257\344\270\216\347\244\276\344\274\232\350\256\272.ppt" new file mode 100644 index 0000000..dbd11a7 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\254\2543\347\257\207 \347\247\221\345\255\246\346\212\200\346\234\257\344\270\216\347\244\276\344\274\232\350\256\272.ppt" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\273\252\350\256\272.ppt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\273\252\350\256\272.ppt" new file mode 100644 index 0000000..08ac11d Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\347\273\252\350\256\272.ppt" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\351\207\215\347\202\271.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\351\207\215\347\202\271.docx" new file mode 100644 index 0000000..b1ebd00 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\351\207\215\347\202\271.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271.doc" new file mode 100644 index 0000000..f680898 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\350\257\276\347\250\213\350\200\203\350\257\225\347\233\270\345\205\263\350\257\264\346\230\216.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\350\257\276\347\250\213\350\200\203\350\257\225\347\233\270\345\205\263\350\257\264\346\230\216.docx" new file mode 100644 index 0000000..e464de7 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\344\270\273\350\246\201\345\244\215\344\271\240\345\206\205\345\256\271/\350\257\276\347\250\213\350\200\203\350\257\225\347\233\270\345\205\263\350\257\264\346\230\216.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\350\200\203\350\257\225\347\234\237\351\242\230.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\350\200\203\350\257\225\347\234\237\351\242\230.pdf" new file mode 100644 index 0000000..4dd9bbe Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\250\350\257\201\346\263\225\350\200\203\350\257\225\347\234\237\351\242\230.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\350\200\203\350\257\225\347\237\245\350\257\206\345\244\247\345\205\250.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\350\200\203\350\257\225\347\237\245\350\257\206\345\244\247\345\205\250.doc" new file mode 100644 index 0000000..d364a02 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\350\200\203\350\257\225\347\237\245\350\257\206\345\244\247\345\205\250.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\205\250\346\227\245\345\210\266\350\257\225\345\215\267A.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\205\250\346\227\245\345\210\266\350\257\225\345\215\267A.doc" new file mode 100644 index 0000000..082ec94 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\205\250\346\227\245\345\210\266\350\257\225\345\215\267A.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\244\215\344\271\240(\351\200\202\345\220\210\347\224\250\344\272\216\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\200\203\350\257\225-).docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\244\215\344\271\240(\351\200\202\345\220\210\347\224\250\344\272\216\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\200\203\350\257\225-).docx" new file mode 100644 index 0000000..67915d2 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\244\215\344\271\240(\351\200\202\345\220\210\347\224\250\344\272\216\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\200\203\350\257\225-).docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271.doc" new file mode 100644 index 0000000..f32e836 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271\347\255\224\346\241\210---\350\207\252\345\267\261\346\225\264\347\220\206\347\211\210.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271\347\255\224\346\241\210---\350\207\252\345\267\261\346\225\264\347\220\206\347\211\210.docx" new file mode 100644 index 0000000..03f575a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271\347\255\224\346\241\210---\350\207\252\345\267\261\346\225\264\347\220\206\347\211\210.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225 \345\244\215\344\271\240\350\265\204\346\226\231.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225 \345\244\215\344\271\240\350\265\204\346\226\231.docx" new file mode 100644 index 0000000..46cb24e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225 \345\244\215\344\271\240\350\265\204\346\226\231.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\205\250\346\227\245\345\210\266\350\257\225\345\215\267A.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\205\250\346\227\245\345\210\266\350\257\225\345\215\267A.doc" new file mode 100644 index 0000000..082ec94 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\205\250\346\227\245\345\210\266\350\257\225\345\215\267A.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\346\200\235\350\200\203\351\242\230.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\346\200\235\350\200\203\351\242\230.docx" new file mode 100644 index 0000000..0e75098 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\346\200\235\350\200\203\351\242\230.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2541\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217/\345\244\270\345\205\213.pptx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2541\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217/\345\244\270\345\205\213.pptx" new file mode 100644 index 0000000..5b1a23b Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2541\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217/\345\244\270\345\205\213.pptx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2541\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217/\347\254\254\344\270\200\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217.pptx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2541\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217/\347\254\254\344\270\200\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217.pptx" new file mode 100644 index 0000000..5515aa2 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2541\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217/\347\254\254\344\270\200\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217.pptx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2541\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217/\347\263\273\347\273\237\346\200\235\346\203\263\347\232\204\345\217\221\345\261\225.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2541\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217/\347\263\273\347\273\237\346\200\235\346\203\263\347\232\204\345\217\221\345\261\225.docx" new file mode 100644 index 0000000..d141d9a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2541\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\345\255\230\345\234\250\346\226\271\345\274\217/\347\263\273\347\273\237\346\200\235\346\203\263\347\232\204\345\217\221\345\261\225.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2542\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\346\274\224\345\214\226/\347\254\254\344\272\214\347\253\240 \350\207\252\347\204\266\347\232\204\346\274\224\345\214\226.pptx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2542\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\346\274\224\345\214\226/\347\254\254\344\272\214\347\253\240 \350\207\252\347\204\266\347\232\204\346\274\224\345\214\226.pptx" new file mode 100644 index 0000000..847c770 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2542\347\253\240 \350\207\252\347\204\266\347\225\214\347\232\204\346\274\224\345\214\226/\347\254\254\344\272\214\347\253\240 \350\207\252\347\204\266\347\232\204\346\274\224\345\214\226.pptx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/2010\345\271\264\344\270\255\345\233\275\347\216\257\345\242\203\347\212\266\345\206\265\345\205\254\346\212\245.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/2010\345\271\264\344\270\255\345\233\275\347\216\257\345\242\203\347\212\266\345\206\265\345\205\254\346\212\245.pdf" new file mode 100644 index 0000000..2476c43 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/2010\345\271\264\344\270\255\345\233\275\347\216\257\345\242\203\347\212\266\345\206\265\345\205\254\346\212\245.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/Earth_flag_PD.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/Earth_flag_PD.jpg" new file mode 100644 index 0000000..d4d71f4 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/Earth_flag_PD.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\254\351\203\275\350\256\256\345\256\232\344\271\246.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\254\351\203\275\350\256\256\345\256\232\344\271\246.jpg" new file mode 100644 index 0000000..f9a183d Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\254\351\203\275\350\256\256\345\256\232\344\271\246.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\254\351\203\275\350\256\256\345\256\232\344\271\246\351\231\220\345\210\266\346\270\251\345\256\244\346\260\224\344\275\223\346\216\222\346\224\276.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\254\351\203\275\350\256\256\345\256\232\344\271\246\351\231\220\345\210\266\346\270\251\345\256\244\346\260\224\344\275\223\346\216\222\346\224\276.jpg" new file mode 100644 index 0000000..5d9a83a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\254\351\203\275\350\256\256\345\256\232\344\271\246\351\231\220\345\210\266\346\270\251\345\256\244\346\260\224\344\275\223\346\216\222\346\224\276.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2300.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2300.jpg" new file mode 100644 index 0000000..58964d8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2300.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2301.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2301.jpg" new file mode 100644 index 0000000..926239b Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2301.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2302.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2302.jpg" new file mode 100644 index 0000000..55eab1e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2302.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2303.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2303.jpg" new file mode 100644 index 0000000..cba4b28 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2303.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2304.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2304.jpg" new file mode 100644 index 0000000..17bde4c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\344\272\272\345\217\243\351\227\256\351\242\2304.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\210\200\350\200\225\347\201\253\347\247\215.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\210\200\350\200\225\347\201\253\347\247\215.jpg" new file mode 100644 index 0000000..9bbd01f Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\210\200\350\200\225\347\201\253\347\247\215.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\210\200\350\200\225\347\201\253\347\247\2151.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\210\200\350\200\225\347\201\253\347\247\2151.jpg" new file mode 100644 index 0000000..6833189 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\210\200\350\200\225\347\201\253\347\247\2151.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\214\227\344\272\254\346\262\231\345\260\230\346\232\264.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\214\227\344\272\254\346\262\231\345\260\230\346\232\264.jpg" new file mode 100644 index 0000000..1de0d9f Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\214\227\344\272\254\346\262\231\345\260\230\346\232\264.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\220\204\347\247\215\347\251\272\346\260\224\346\261\241\346\237\223.bmp" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\220\204\347\247\215\347\251\272\346\260\224\346\261\241\346\237\223.bmp" new file mode 100644 index 0000000..ad47608 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\220\204\347\247\215\347\251\272\346\260\224\346\261\241\346\237\223.bmp" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\234\237\345\234\260\345\271\262\346\227\261.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\234\237\345\234\260\345\271\262\346\227\261.jpg" new file mode 100644 index 0000000..f5d826a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\234\237\345\234\260\345\271\262\346\227\261.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\236\203\345\234\276\345\234\272.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\236\203\345\234\276\345\234\272.jpg" new file mode 100644 index 0000000..f30cd6f Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\236\203\345\234\276\345\234\272.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\236\203\345\234\276\345\234\2722.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\236\203\345\234\276\345\234\2722.jpg" new file mode 100644 index 0000000..88d97e2 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\236\203\345\234\276\345\234\2722.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\271\262\350\243\202\347\232\204\346\262\263\351\201\223.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\271\262\350\243\202\347\232\204\346\262\263\351\201\223.jpg" new file mode 100644 index 0000000..bc4d01b Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\345\271\262\350\243\202\347\232\204\346\262\263\351\201\223.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\221\207\347\257\256\357\274\237.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\221\207\347\257\256\357\274\237.jpg" new file mode 100644 index 0000000..edca6e9 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\221\207\347\257\256\357\274\237.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\234\211\346\234\272\346\261\241\346\237\223.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\234\211\346\234\272\346\261\241\346\237\223.jpg" new file mode 100644 index 0000000..8b201ef Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\234\211\346\234\272\346\261\241\346\237\223.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\260\264.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\260\264.jpg" new file mode 100644 index 0000000..b319a1a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\260\264.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\260\264\346\272\220.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\260\264\346\272\220.jpg" new file mode 100644 index 0000000..390a82c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\260\264\346\272\220.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\231\345\260\230\346\232\2641.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\231\345\260\230\346\232\2641.jpg" new file mode 100644 index 0000000..db492b1 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\231\345\260\230\346\232\2641.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\231\345\260\230\346\232\2642.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\231\345\260\230\346\232\2642.jpg" new file mode 100644 index 0000000..2a04f64 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\231\345\260\230\346\232\2642.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\231\345\260\230\346\232\2643.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\231\345\260\230\346\232\2643.jpg" new file mode 100644 index 0000000..9df1f65 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\231\345\260\230\346\232\2643.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\263\346\265\201.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\263\346\265\201.jpg" new file mode 100644 index 0000000..79ef67f Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\262\263\346\265\201.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\270\251\345\256\244\346\225\210\345\272\224.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\270\251\345\256\244\346\225\210\345\272\224.jpg" new file mode 100644 index 0000000..54167f3 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\270\251\345\256\244\346\225\210\345\272\224.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\270\251\345\256\244\346\225\210\345\272\2240.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\270\251\345\256\244\346\225\210\345\272\2240.jpg" new file mode 100644 index 0000000..0884523 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\270\251\345\256\244\346\225\210\345\272\2240.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\270\251\345\256\244\346\225\210\345\272\2241.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\270\251\345\256\244\346\225\210\345\272\2241.jpg" new file mode 100644 index 0000000..0a36049 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\346\270\251\345\256\244\346\225\210\345\272\2241.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\347\224\237\346\264\273\347\232\204\347\251\272\351\227\264.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\347\224\237\346\264\273\347\232\204\347\251\272\351\227\264.jpg" new file mode 100644 index 0000000..9dfc761 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\347\224\237\346\264\273\347\232\204\347\251\272\351\227\264.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\347\273\277\346\260\264.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\347\273\277\346\260\264.jpg" new file mode 100644 index 0000000..65cf45b Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\347\273\277\346\260\264.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\207\255\346\260\247\345\261\202\347\251\272\346\264\236.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\207\255\346\260\247\345\261\202\347\251\272\346\264\236.jpg" new file mode 100644 index 0000000..02c08db Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\207\255\346\260\247\345\261\202\347\251\272\346\264\236.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\212\202\346\227\245\350\277\207\345\220\216.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\212\202\346\227\245\350\277\207\345\220\216.jpg" new file mode 100644 index 0000000..9401f33 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\212\202\346\227\245\350\277\207\345\220\216.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\215\222\346\274\240\345\214\226.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\215\222\346\274\240\345\214\226.jpg" new file mode 100644 index 0000000..773ae7d Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\215\222\346\274\240\345\214\226.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\222\270\346\261\275\346\234\272.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\222\270\346\261\275\346\234\272.jpg" new file mode 100644 index 0000000..91b7b24 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\222\270\346\261\275\346\234\272.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\266\205\347\224\237\346\270\270\345\207\273\351\230\237.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\266\205\347\224\237\346\270\270\345\207\273\351\230\237.jpg" new file mode 100644 index 0000000..345ed4d Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\350\266\205\347\224\237\346\270\270\345\207\273\351\230\237.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\351\222\242\347\255\213\346\243\256\346\236\227.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\351\222\242\347\255\213\346\243\256\346\236\227.jpg" new file mode 100644 index 0000000..f4e73d2 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\344\270\216\350\207\252\347\204\266\345\233\276\347\211\207/\351\222\242\347\255\213\346\243\256\346\236\227.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\345\217\243\345\217\215\350\275\254.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\345\217\243\345\217\215\350\275\254.jpg" new file mode 100644 index 0000000..346313e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\344\272\272\345\217\243\345\217\215\350\275\254.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\345\215\201\345\244\247\345\215\261\346\234\272.7z" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\345\215\201\345\244\247\345\215\261\346\234\272.7z" new file mode 100644 index 0000000..b296bc2 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\345\215\201\345\244\247\345\215\261\346\234\272.7z" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\347\254\254\344\270\211\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266.pptx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\347\254\254\344\270\211\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266.pptx" new file mode 100644 index 0000000..37faaf8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\347\254\254\344\270\211\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266.pptx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\350\200\201\351\276\204\345\214\226.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\350\200\201\351\276\204\345\214\226.jpg" new file mode 100644 index 0000000..cecccae Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\350\200\201\351\276\204\345\214\226.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\350\277\207\345\216\273\344\272\224\345\271\264.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\350\277\207\345\216\273\344\272\224\345\271\264.jpg" new file mode 100644 index 0000000..171baa7 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\350\277\207\345\216\273\344\272\224\345\271\264.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\351\207\215\351\207\221\345\261\236\346\261\241\346\237\223.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\351\207\215\351\207\221\345\261\236\346\261\241\346\237\223.doc" new file mode 100644 index 0000000..55e02d5 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\200\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\350\207\252\347\204\266\350\247\202/\347\254\2543\347\253\240 \344\272\272\344\270\216\350\207\252\347\204\266/\351\207\215\351\207\221\345\261\236\346\261\241\346\237\223.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272.ppt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272.ppt" new file mode 100644 index 0000000..c7cf142 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272.ppt" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\350\241\214\346\230\237\345\201\207\350\257\264.7z" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\350\241\214\346\230\237\345\201\207\350\257\264.7z" new file mode 100644 index 0000000..5e8cb06 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\350\241\214\346\230\237\345\201\207\350\257\264.7z" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\350\266\205\345\205\211\351\200\237.JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\350\266\205\345\205\211\351\200\237.JPG" new file mode 100644 index 0000000..6f5a216 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\350\266\205\345\205\211\351\200\237.JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\350\266\205\345\205\211\351\200\2371.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\350\266\205\345\205\211\351\200\2371.jpg" new file mode 100644 index 0000000..ca0487c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\350\266\205\345\205\211\351\200\2371.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\351\273\221\346\264\236.JPG" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\351\273\221\346\264\236.JPG" new file mode 100644 index 0000000..96b15a5 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\270\203\347\253\240 \347\247\221\345\255\246\345\201\207\350\257\264\344\270\216\347\247\221\345\255\246\347\220\206\350\256\272/\351\273\221\346\264\236.JPG" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\344\270\226\347\225\21414\344\270\252\350\221\227\345\220\215\345\256\236\351\252\214\345\256\244.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\344\270\226\347\225\21414\344\270\252\350\221\227\345\220\215\345\256\236\351\252\214\345\256\244.docx" new file mode 100644 index 0000000..ff571f1 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\344\270\226\347\225\21414\344\270\252\350\221\227\345\220\215\345\256\236\351\252\214\345\256\244.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\215\241\346\226\207\350\277\252\350\256\270\345\256\236\351\252\214\345\256\244.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\215\241\346\226\207\350\277\252\350\256\270\345\256\236\351\252\214\345\256\244.docx" new file mode 100644 index 0000000..92576a6 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\215\241\346\226\207\350\277\252\350\256\270\345\256\236\351\252\214\345\256\244.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\215\241\346\226\207\350\277\252\350\256\270\350\257\225\351\252\214.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\215\241\346\226\207\350\277\252\350\256\270\350\257\225\351\252\214.jpg" new file mode 100644 index 0000000..a6e85ae Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\215\241\346\226\207\350\277\252\350\256\270\350\257\225\351\252\214.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\216\206\345\261\212\350\257\272\350\264\235\345\260\224\347\211\251\347\220\206\345\255\246\346\210\220\346\236\234.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\216\206\345\261\212\350\257\272\350\264\235\345\260\224\347\211\251\347\220\206\345\255\246\346\210\220\346\236\234.docx" new file mode 100644 index 0000000..b94a8d2 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\216\206\345\261\212\350\257\272\350\264\235\345\260\224\347\211\251\347\220\206\345\255\246\346\210\220\346\236\234.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\233\275\345\256\266\345\256\236\351\252\214\345\256\244.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\233\275\345\256\266\345\256\236\351\252\214\345\256\244.docx" new file mode 100644 index 0000000..dc767c8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\233\275\345\256\266\345\256\236\351\252\214\345\256\244.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\270\214\346\240\274\346\226\257\347\262\222\345\255\220.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\270\214\346\240\274\346\226\257\347\262\222\345\255\220.docx" new file mode 100644 index 0000000..715d0c9 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\345\270\214\346\240\274\346\226\257\347\262\222\345\255\220.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\347\247\221\345\255\246\350\277\233\345\261\225.7z" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\347\247\221\345\255\246\350\277\233\345\261\225.7z" new file mode 100644 index 0000000..734ed0a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\347\247\221\345\255\246\350\277\233\345\261\225.7z" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\344\272\213\345\256\236.ppt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\344\272\213\345\256\236.ppt" new file mode 100644 index 0000000..e397db0 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\344\272\213\345\256\236.ppt" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\350\257\272\350\264\235\345\260\224\345\245\226\347\224\237\347\211\251\345\214\273\345\255\246\347\261\273\346\210\220\346\236\234.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\350\257\272\350\264\235\345\260\224\345\245\226\347\224\237\347\211\251\345\214\273\345\255\246\347\261\273\346\210\220\346\236\234.docx" new file mode 100644 index 0000000..ee341dc Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\350\257\272\350\264\235\345\260\224\345\245\226\347\224\237\347\211\251\345\214\273\345\255\246\347\261\273\346\210\220\346\236\234.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\350\257\272\350\264\235\345\260\224\345\245\226\347\247\221\345\255\246\346\210\220\346\236\234.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\350\257\272\350\264\235\345\260\224\345\245\226\347\247\221\345\255\246\346\210\220\346\236\234.docx" new file mode 100644 index 0000000..34efde7 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\344\272\224\347\253\240 \347\247\221\345\255\246\350\247\202\345\257\237\345\222\214\350\257\225\351\252\214/\350\257\272\350\264\235\345\260\224\345\245\226\347\247\221\345\255\246\346\210\220\346\236\234.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\345\205\255\347\253\240 \347\247\221\345\255\246\345\217\221\347\216\260\347\232\204\351\200\273\350\276\221\346\226\271\346\263\225/\347\254\254\345\205\255\347\253\240 \347\247\221\345\255\246\345\217\221\347\216\260\347\232\204\351\200\273\350\276\221\346\226\271\346\263\225.ppt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\345\205\255\347\253\240 \347\247\221\345\255\246\345\217\221\347\216\260\347\232\204\351\200\273\350\276\221\346\226\271\346\263\225/\347\254\254\345\205\255\347\253\240 \347\247\221\345\255\246\345\217\221\347\216\260\347\232\204\351\200\273\350\276\221\346\226\271\346\263\225.ppt" new file mode 100644 index 0000000..e1fa4b1 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\270\211\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\346\226\271\346\263\225\350\256\272/\347\254\254\345\205\255\347\253\240 \347\247\221\345\255\246\345\217\221\347\216\260\347\232\204\351\200\273\350\276\221\346\226\271\346\263\225/\347\254\254\345\205\255\347\253\240 \347\247\221\345\255\246\345\217\221\347\216\260\347\232\204\351\200\273\350\276\221\346\226\271\346\263\225.ppt" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\272\214\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\350\247\202/\347\254\254\345\233\233\347\253\240 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\350\247\202.ppt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\272\214\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\350\247\202/\347\254\254\345\233\233\347\253\240 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\350\247\202.ppt" new file mode 100644 index 0000000..4b7fea2 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\344\272\214\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\350\247\202/\347\254\254\345\233\233\347\253\240 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\350\247\202.ppt" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\345\233\233\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\347\244\276\344\274\232\350\256\272/\351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\347\244\276\344\274\232\350\256\272.pptx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\345\233\233\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\347\244\276\344\274\232\350\256\272/\351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\347\244\276\344\274\232\350\256\272.pptx" new file mode 100644 index 0000000..bce12cf Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\254\254\345\233\233\347\257\207 \351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\347\244\276\344\274\232\350\256\272/\351\251\254\345\205\213\346\200\235\344\270\273\344\271\211\347\247\221\345\255\246\346\212\200\346\234\257\347\244\276\344\274\232\350\256\272.pptx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\347\273\252\350\256\272.pptx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\347\273\252\350\256\272.pptx" new file mode 100644 index 0000000..ba9cb84 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\347\273\252\350\256\272.pptx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\256\272\343\200\212\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\343\200\213.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\256\272\343\200\212\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\343\200\213.txt" new file mode 100644 index 0000000..0dede83 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\256\272\343\200\212\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\343\200\213.txt" @@ -0,0 +1,66 @@ + ۶˹Ȼ֤ + + +ԭվѧԺѧо199012£1988°дһƪָ塶Ȼ֤ķ˼һֵһµдԭƻ֣һ֡Ȼ֤۵ķ˼ڶ֡йȻ֤ҵķ˼ʱǨαδɵָ״̬ + + + + + +ʮ¸ɹ֮󣬶˹˹оԺԺŵǰ֯˼Ͷ˹Ÿิƹڵ¹ŵ˶˹һָɵδǹȻ硢Ȼѧѧûܱ⣬д18731883䣬ⲿ18731883Ȼѧָ塷պΪ֪ġȻ֤ + +ڡȻ֤һѧľ޴Ӱ죬бҪⲿδоа֤д̡עȫݡ׷ѰĿԼȷǰᡣȥҹȻ֤ǰ˴ע⣬ĶԴЩ + + + +ͼ + +ڶ˹18731883Ȼѧָ塷δʣⲿĿۣ˵²ͬ༭Ϊָѡȡ˲ͬơZW(1μڣʲôȻ֤?Ȼ֤о19864ڡZW)һֹ۵ΪȻ֤ĿڱȻ緢չһɣһΪڸȻѧ۲ΪȻ˼άձɵı֤ZW(μȻ֤Ϳѧѧо֪ʶ1982棬2835ҳZW)˵Ȼ緢չһɾDZ֤Ȼ֤ĿȻѧ۳ɹȻı֤ô˼ûʲôһ֮ǰһֹ۵˼ǣڱ֤Ȼѧ֮仹һȻ緢չһɣбڱ֤бȻѧʾĹɣȻ֤ĿΪҳһɣô϶ΪǶ˹˵ͼڡۡУ˹дһÿһſѧҪҪŪԼ֪ʶϵеĵλϵκĿѧǶˡZW(ѡ365ҳZW)ڡѶ͹ۡУһд죬ǶȻоĽֻDZ֤ؼϵп죬ͿƳһʱġȻϵʱ򣬵ϵı֤ʣʹȻѧҵܹζѧѵͷΥǵ־òܵʱȻѧձˣκʹͼǶģһ˲ZW(ѡ4242ҳZW)˹Ϊ֤ķζѧȻѾʷȻģȻһѧԶɥʧ˴ڵʷݣұñ֤˼άȥʵ֤ѧпȻ˵רŲ֤ĹɺͷǸҪ飬ڡȻ֤У˹ﲻдֲ֤ᣬֻ֤ĹȻʵڵķչĹɣȻѧҲЧġˣDzؿɼڲϵZW(Ȼ֤°ָ198410£ͬZW)ˣһֹ۵˼ǡȻ֤ͨȻѧʵ֤Ĺɺͷ룬дһڱ֤Ľ̿飬ȻҲDzԵġ + +ġ۶˹ġȻ֤һָ˹һʼͰԼġȻ֤ΪǸʱȫȻѧɹһܽᣬZW(۶˹ġȻ֤1980棬77ҳZW)ΪǶ˹дȻ֤һͼ + +Դ֤һ㡣 + +ȿ׷ѧ۷ľԵӰ죬Ҳ˵ԴӶ˹ŵ׷ѧʽӦʲôӣ֮빹˼δԭڡѶ͹ۡĵһУ˹еط˺ڸѧ֮дȻ˽⵽(Ի˽˵ûһ˱Ⱥڸ˶ǰ)ѧ޷ǾҪһѧֻȫǰķչвɵ飬ĩȫѧҲսˡǾͰ;ﲻҶÿҲǴﲻġƲһߣʵ֤ѧñ֤˼άЩɹи;ȥ׷ԴﵽZW(ѡ4215ҳZW)˹ʹϵһѧǡϵʱԵĶΪϵ˵ľҪ˷һìܵҪZW(ͬϡZW)˹ΪDzܵģϵϢ˺ڸڸı֤˼άȥͬʷʱ˻ʱáѧһпѧ֮ϵѧ˵ڸϵѧƵʽȫѧϵûˡ˱֤˼άʽԼȻġʷĺ;ڲʧIJϹֹ˶ź͸ıŵĹѧһпѧڶԼڽʾϵת̵˶ɣǺڸѧļ̳ߵŲZW(ѡ37ҳZW)˼ʵҲģڡڸѧСУѾָ¹ʵҪѧġɵĴ󲢲Ҫ󣬶ڽҪ󡱣ΪDzʵʵѧͲѧZW(ѡ37ҳZW)Լжû㽨һѧϵǰѴӺڸѧȳı֤õʱķ֮Уڶʱʵ֮ʵֱ֤ͳѧʵɡ硱򡰸ı硱ѧ˹ⷽ˼һµģ׷˼һʵͬѧ + +һɻڶ˹ԵʱȻѧչ͹ơ˹Ϊ19Ȼѧľ޴ر֣ʹȻΪһڴҪ֮Ѿ˽˵ϵ̵ֹϵչǰ(°31ҳ)ѧӴȷʵ֪ʶϣÿһоϵͳغϵЩϼıҪͼֱΪɱġ(°45ҳ)ˣ˹ǿҵĸоһʷʹУȻѧٿȫʽۺϴӶԽϵͳʽһȻʷչͼʱѾˣǴ1830֮ġϺڸʱͽŵı֤˼룬ȴܲġȻѧȻѧδʾĵطġϵδ֪ʵϵ벹ȱٵʵôʵĿհסZW(ѡ4242ҳZW)ڣڴķ治ҪˣǣȻѧҳФ֮⣬֤˹еʷϡ + +Ϊ˹ġȻ֤ҪԵʱȻ֪ʶٿȫʽۺϣҪ˼ʱۡñ֤ʱñ֤ȥȻȻѧԶ˹Űһ쳣޴쳣ҪḶ́DZۡҪҪöZW(1976107˼˵ڶ˹æджֵ˵Ǹ޴ΪòΪ˶ͣдҪ1871725ն˹ġάµųԼġȻ֤ǡһƪ޴Ķ1879626ն˹°»˹̹ΪȻ֤˶ȼƪ־ϵҪһЩȵȣɲμȻ֤°йظ¼ZW)Ϊˣ˹8ʱѧȻѧ֪ʶ׼ZW(ѡ351ҳZW)ʾѧ̬ȡ + +߱㹻֪ʶȻѧ桰൱ɺͰա(°333ҳ)֮󣬶˹ۺ?ҪۺϾҪһϵͳۺָ˼룬򵥵вûָ˼룬DZһֳ¾ɵ˼룬ɵȻ۵Ĺ̶ʣṩ˰ȫȻѧΪһԸĻİٿȫɻǴеذһȻѧһֲУͬʱʥźɺڸɵĵ¹Ȼѧ(°11ҳ)ǣۺϵijԶ⣬ϵ˳кͺڸΪɵı֤תDzģתɣȻȻġһ˶ʽǴһ˶ʽзչһЩʽķӳֲͬĿѧҲһһв(°150ҳ)ڵⲻڱ֤ȻǷʣҪȻȻѧȥҳ֤ϵ + +Զ˹˵Ȼг˱֤һȻǰᣬ1958714˼˼ѺڸġȻѧȥΪоѧͱȽϽѧ˵Һ֪ЩͷǷһҲûԤʣҪдһȻѧĩ۾ݻ˷һжϸϸǺڸĴڣԼķչǾڸḶֱ́ɵлϸзչΪֹʹͷӺڸеܸ˵һѧи໥ϵڱȽѧڸϵеʵķԾһ׶ҲǷdzʺϵġЩڸȻѧԶ˹Ӱ죬ڸı֤ǶԵʱȻѧΪٿȫʽۺϵָ˼͹߷ֻڸȻѧͬ˹ϣĴȻ籾мȻѧɹȥֱ֤ǵϵڸԹᴩȫ̵ķΧǾԹԹչȻı̡֤˹ΪԷǺڸΨĸԴӦDZ֤ķչҪһһԹ֮塢ߣ1873530ն˹˼ڵһα˶ʽȻѧҪ˼룬˶ʽ໥תȻձ鷢ͬʱҲȻѧһһŹɵݣˣ˶ʽΪȻ̵֤ķԴڸľԹǼǡġҵˡ˶ʽķ룬Ȼ֤һдſԿʼˣʵϣдҲǴ1873510տʼġ + +ڡۡ(д1885)˹ʵѾdzȷزдȻ֤һͼϵͳزÿжɡZW(ѡ353ҳZW)Ȼҳ֤ĹɲȻԲĹ֮ǰԶҶѧȻѧʱϸҲȷֶ˵ܵķûκλɵĶǣȻ磬ͬı֤˶۸ӵı仯зáЩɺڸȫأصʽģȥǵʽǵȫԺձϰرǵĿġZW(ͬϵ352ҳZW) + +˹ûüһ޴ۺϹԼѾԤϵģҲȻѧĽʹҵĹľ󲿷ֻȫΪġZW(ͬϵ53ҳZW)죬ǹֵȥ˹˹ԾȻѧۺϹѾûжˣǣ֧˹ȥۺϵЩ˼룬ȴȻнһоıҪΪЩ˼ڽйѧ绹Ӱ죬ѧ߻Щ˼µȻѧǰµۺϺ͸ԣ˹ڡȻ֤һӵĻ˼Ÿ־õоشʵ塣 + +һ棬˹ۺϹʵں̶ܴԶذȻб֤Ϊǰһ㣬ۺڶ˹ǰѸȻѧ֪ʶҪᴩȴЩ֪ʶзֱ֤͹۴ڵ֤ݣٴӱ֤չĹ۵Ǵˣ˹ǿҪȻȻѧȥֱ֤Ϊ˶Ա֤˼άɵᣬȥ˽Щʵı֤ʣͿԱȽ׵شﵽʶԣ첢֧Ŷ˹дⱾĻ˼롪֤ԡȻѧ̬ȵȵȣŸҪ塣Ȼ֤ۺ̶ܴǡȻ֤һǰᣬǶԵʱȻѧٿȫʽۺϵݣȻһ棬Ȼ֤Ҳ㷺ۺϹ̱ + + + +ǰ + +Ӷ˹дܼƻݰԿȫԤƷ֣һǵۣᴩȫһЩ˼룬ȻѧʷѧʷѾ֤սζѧ֤ĻҪɣſѧڡ˶ʽϵϵת˼Ϊȫһ߼ʷͳһɳһ㵽˳չԭ򡣵ڶģֱʱĸſѧ֮ı֤ϵ˹ͬⷨٿȫɽ֪ʶеҲԿ׵µ׵µֻΪ˰Ž̲ĺͽѧ͵ַƽһſѧȫ֮󲻽һſѧһȷ˼뱻ѧؿɺ˵˵(150ҳ)ȽƳڸܴӸſѧпϵڵתһҪ᳹ʷϿ֤ζѧıȻԵ˼룬ñ֤˼άʽȻѧ֪ʶȻѧеһĪչ⣬˶غת˼ָȻѧķչǸ¼Ȼѧζѧ˼άʽԼȻɼֲʷӹȻתΪᣬȻĹɣʹ˼ϵơ + +IJ֣˹˵Ҫյ򼸺ޱ߼ʵģҾУȻѧҲ˾ڵıУЩʹȫʱڴ˵ˣҲѸٲʧZW(ѡ353ҳZW)˼ȥ֮󣬶˹ʵϾûʱһԣĵݳƪ֮⣬۵ͲҲûжر֮෴۲ȴ˷dzḻ˼롣 + +¼֣ʵǶ˹Ϊ˴ʱһЩʵȥģڵʱŵķ˼˼УһЩȻѧΪ壬ѧѧѧеĻеΨȵȣЩѧӰΪͺ˼壬ЩȻѧ˼ȫDZҪġڶ˹дȻ֤˶ӿ׷׵Ʒdz˸ˣһ棬ϵ˼˼뵽˶߽ͷ֯ɹ˶ϵĻң£轫˼ϵͳʹ˶ܼ˵ļԽܣΪۻָ˼룬ͬʱҪȷָ˼ɫɫ˼ͽޣַָ˼۵Ĵкԣ֤˼ΨһȷĿѧۣܱ֤ѾĹ˶˼Ϊָ졢ķչȻ֤ƻеĸ¼֣ۡԼġѶ͹ۡij̶ֳϷĿġ + +ϵͳ˼ۣɫɫķ˼˼Ҫʹ˹ԽԽӽڸΪڸ֤걸(ֻ˴Ľ)֤ϵ֤ȿΪ֤ĹֿΪеѾ(½)ĺڸı֤Ϊϵͳۺи˼ǰᣬǷӳڡȻ֤ۡ͡Ѷ͹ۡҪеһܵ + +˼Ͷ˹ʱѧһʵ̬ԾѧУͨѧķʽ˼֣̽ʵʵ־ѧеԭʵЩԭ֮󣬾ѧͱˣ˼ʵѧ塣 + +ǣڶһ۵Ҫ֮󣬶˹ʶڱʱһֺ˼ȫҪģ˵˼ȥ֪ʶӶѧǸʵ֤ѧ飬ô˼ѧˣͳѧûбȡֻСķΧĴ󲿷ֿøʵ֤ѧһÿһſѧҪҪŪԼ֪ʶϵеĵλϵκѧǶˡǣȫѧлԾɶڵģֻй˼άɵѧ˵ʽ߼ͱ֤һжصȻʷʵ֤ѧȥˡZW(ͬϵ365ҳZW) + +ڡȻ֤ĵһȫȻ֤ѧ۵ĸ棬һ֤ΪȻ˼άձõĹɣҲһȻãڶ֤Ϊһ߷ۣڿѧоҲõģ֤ѧΪעϵͷչDZһоѧ֪ʶ̬ȻѧӦ֤ѧѧϰͻ;ЩʵϾǡȻ֤һǰᣬǿ԰ܽѳΪҷdzϤ˼룬˹ǴԴΪǰᣬȻѧиۺϣ + +(1)֤ȻѧĶ缴ȻձڵĿ͹۹ + +(2)֤ǿѧоձЧΨһȷķ + +(3)ȻѧұԾѧϰ֤ѧDzܲܳͷ + + ΪǰҪǶǰз˼ΪֻϱñΪ㱻ͷӣûб濼죬ʵϣȫȻ֤۵ijɰܵʧϵǰ֮ϡҲΪʲô˹Ҫغ㶨ɱغתɲô壬ֻҪǿڶ˹˶˶ʽһȻѧĶתĻȻ˶ʽתǷϱ֤ģôΪ˱֤ʵֶغתԭDzԶˡ˹Դķ̬ȣȫڵ۲ַǰᣬDzȥϸԾоۣڷ˼ǰᣬӦǿԵġ +...ˢ֤X +Ѷ΢һͨ΢QQռѺ΢»΢ֻ΢ֻ촫ķ΢΢QQѸƽ̨... (133)bShare \ No newline at end of file diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/UFO.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/UFO.jpg" new file mode 100644 index 0000000..158fc7c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/UFO.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277a.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277a.jpg" new file mode 100644 index 0000000..135801e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277a.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277b.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277b.jpg" new file mode 100644 index 0000000..f44fc95 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277b.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277c.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277c.jpg" new file mode 100644 index 0000000..fc9358f Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277c.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277d.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277d.jpg" new file mode 100644 index 0000000..91be659 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\346\211\213\347\250\277d.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\347\233\264\345\215\207\346\234\272.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\347\233\264\345\215\207\346\234\272.jpg" new file mode 100644 index 0000000..0b90a3a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\347\233\264\345\215\207\346\234\272.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\350\276\276\350\212\254\345\245\207\344\274\240\345\245\207.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\350\276\276\350\212\254\345\245\207\344\274\240\345\245\207.jpg" new file mode 100644 index 0000000..b4d0267 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\350\276\276\350\212\254\345\245\207\344\274\240\345\245\207.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\350\276\276\350\212\254\345\245\207\347\232\204\345\267\250\345\274\251\350\275\246.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\350\276\276\350\212\254\345\245\207\347\232\204\345\267\250\345\274\251\350\275\246.jpg" new file mode 100644 index 0000000..1df4c76 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\350\276\276\350\212\254\345\245\207\347\232\204\345\267\250\345\274\251\350\275\246.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\350\276\276\350\212\254\345\245\207\347\232\204\346\273\221\347\277\224\346\234\272.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\350\276\276\350\212\254\345\245\207\347\232\204\346\273\221\347\277\224\346\234\272.jpg" new file mode 100644 index 0000000..f913854 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\350\276\276\350\212\254\345\245\207\347\232\204\346\273\221\347\277\224\346\234\272.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\351\275\277\350\275\256\344\274\240\350\276\223\345\241\224.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\351\275\277\350\275\256\344\274\240\350\276\223\345\241\224.jpg" new file mode 100644 index 0000000..655eb25 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\347\273\252\350\256\272 \350\207\252\347\204\266\350\247\202\344\270\216\347\247\221\345\255\246/\350\276\276\350\212\254\345\245\207/\351\275\277\350\275\256\344\274\240\350\276\223\345\241\224.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225.docx" new file mode 100644 index 0000000..0e1534a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\257\225\345\215\267.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\257\225\345\215\267.png" new file mode 100644 index 0000000..e40a4da Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\257\225\345\215\267.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\351\207\215\347\202\271.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\351\207\215\347\202\271.docx" new file mode 100644 index 0000000..b247894 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\351\207\215\347\202\271.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\350\200\203\347\202\271\346\263\225\346\225\264\347\220\206.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\350\200\203\347\202\271\346\263\225\346\225\264\347\220\206.docx" new file mode 100644 index 0000000..cc5a2f5 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225/\350\207\252\347\204\266\350\276\251\350\257\201\350\200\203\347\202\271\346\263\225\346\225\264\347\220\206.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\205\250\346\227\245\345\210\266\350\257\225\345\215\267A.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\205\250\346\227\245\345\210\266\350\257\225\345\215\267A.doc" new file mode 100644 index 0000000..082ec94 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\205\250\346\227\245\345\210\266\350\257\225\345\215\267A.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\244\215\344\271\240(\351\200\202\345\220\210\347\224\250\344\272\216\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\200\203\350\257\225-).docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\244\215\344\271\240(\351\200\202\345\220\210\347\224\250\344\272\216\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\200\203\350\257\225-).docx" new file mode 100644 index 0000000..67915d2 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\345\244\215\344\271\240(\351\200\202\345\220\210\347\224\250\344\272\216\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\350\200\203\350\257\225-).docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271 (2).doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271 (2).doc" new file mode 100644 index 0000000..f32e836 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271 (2).doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271 2018.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271 2018.doc" new file mode 100644 index 0000000..5b275ca Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271 2018.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271-2018 V2.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271-2018 V2.doc" new file mode 100644 index 0000000..db7e008 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271-2018 V2.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271-2018.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271-2018.doc" new file mode 100644 index 0000000..e634cbe Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271-2018.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271.doc" new file mode 100644 index 0000000..f680898 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271\347\255\224\346\241\210---\350\207\252\345\267\261\346\225\264\347\220\206\347\211\210.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271\347\255\224\346\241\210---\350\207\252\345\267\261\346\225\264\347\220\206\347\211\210.docx" new file mode 100644 index 0000000..03f575a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\345\244\215\344\271\240\351\207\215\347\202\271\347\255\224\346\241\210---\350\207\252\345\267\261\346\225\264\347\220\206\347\211\210.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\350\200\203\347\202\271\346\200\273\347\273\223.doc" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\350\200\203\347\202\271\346\200\273\347\273\223.doc" new file mode 100644 index 0000000..4713519 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272\350\200\203\347\202\271\346\200\273\347\273\223.doc" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\210\222\346\234\215\344\272\206.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\210\222\346\234\215\344\272\206.docx" new file mode 100644 index 0000000..30e5cae Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\210\222\346\234\215\344\272\206.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\257\276\347\250\213\350\200\203\350\257\225\347\233\270\345\205\263\350\257\264\346\230\216.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\257\276\347\250\213\350\200\203\350\257\225\347\233\270\345\205\263\350\257\264\346\230\216.docx" new file mode 100644 index 0000000..42a119d Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\257\276\347\250\213\350\200\203\350\257\225\347\233\270\345\205\263\350\257\264\346\230\216.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\257\276\347\250\213\350\200\203\350\257\225\347\233\270\345\205\263\350\257\264\346\230\2162020\345\256\214\346\225\264\347\211\210.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\257\276\347\250\213\350\200\203\350\257\225\347\233\270\345\205\263\350\257\264\346\230\2162020\345\256\214\346\225\264\347\211\210.docx" new file mode 100644 index 0000000..250fe3e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\207\252\347\204\266\350\276\251\350\257\201\346\263\225\346\246\202\350\256\272/\350\257\276\347\250\213\350\200\203\350\257\225\347\233\270\345\205\263\350\257\264\346\230\2162020\345\256\214\346\225\264\347\211\210.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/2021\345\271\264\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\345\244\215\344\271\240\345\275\222\347\272\263 v3.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/2021\345\271\264\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\345\244\215\344\271\240\345\275\222\347\272\263 v3.docx" new file mode 100644 index 0000000..bce2d15 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/2021\345\271\264\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\345\244\215\344\271\240\345\275\222\347\272\263 v3.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/2021\345\271\264\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\345\244\215\344\271\240\345\275\222\347\272\263 v3.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/2021\345\271\264\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\345\244\215\344\271\240\345\275\222\347\272\263 v3.pdf" new file mode 100644 index 0000000..d15eaab Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/2021\345\271\264\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\345\244\215\344\271\240\345\275\222\347\272\263 v3.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/2021\345\271\264\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\350\200\203\350\257\225\351\242\230\345\236\213.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/2021\345\271\264\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\350\200\203\350\257\225\351\242\230\345\236\213.txt" new file mode 100644 index 0000000..a1f1414 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/2021\345\271\264\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\350\200\203\350\257\225\351\242\230\345\236\213.txt" @@ -0,0 +1,5 @@ +2021年论文写作与学术规范考试题型 + +大概十一二道简答题 + +2021-6-22 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/readme.md" new file mode 100644 index 0000000..095c475 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/readme.md" @@ -0,0 +1,5 @@ +# 说明 + +这门课要上网课(含网上的作业和考试)和考试。 + +2021-7-6 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\345\246\202\344\275\225\345\206\231\345\245\275\347\247\221\347\240\224\350\256\272\346\226\207\350\256\250\350\256\272\351\242\230\347\232\204\350\241\245\345\205\205\347\255\224\346\241\210.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\345\246\202\344\275\225\345\206\231\345\245\275\347\247\221\347\240\224\350\256\272\346\226\207\350\256\250\350\256\272\351\242\230\347\232\204\350\241\245\345\205\205\347\255\224\346\241\210.txt" new file mode 100644 index 0000000..4cb24ba --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\345\246\202\344\275\225\345\206\231\345\245\275\347\247\221\347\240\224\350\256\272\346\226\207\350\256\250\350\256\272\351\242\230\347\232\204\350\241\245\345\205\205\347\255\224\346\241\210.txt" @@ -0,0 +1,6 @@ +如何写好科研论文讨论题的补充答案 + +讨论5. 除了老师建议的三个list之外,你还会在阅读过程中建立哪些其他list,或者保留哪些笔记? + +答: +我会着重做笔记的地方有:1)论文主要解决的问题;2)论文的贡献点;3)论文所在的具体领域,该领域中存在的主要挑战;4)论文提出的方法/模型细节;5)实验方法及结果。 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\345\246\202\344\275\225\345\206\231\345\245\275\347\247\221\347\240\224\350\256\272\346\226\207\350\257\276\345\220\216\344\271\240\351\242\230.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\345\246\202\344\275\225\345\206\231\345\245\275\347\247\221\347\240\224\350\256\272\346\226\207\350\257\276\345\220\216\344\271\240\351\242\230.docx" new file mode 100644 index 0000000..be8a308 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\345\246\202\344\275\225\345\206\231\345\245\275\347\247\221\347\240\224\350\256\272\346\226\207\350\257\276\345\220\216\344\271\240\351\242\230.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\345\255\246\346\234\257\350\256\272\346\226\207\357\274\210\346\200\273\357\274\211.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\345\255\246\346\234\257\350\256\272\346\226\207\357\274\210\346\200\273\357\274\211.docx" new file mode 100644 index 0000000..5271336 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\345\255\246\346\234\257\350\256\272\346\226\207\357\274\210\346\200\273\357\274\211.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\347\247\221\347\240\224\344\274\246\347\220\206\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\346\234\237\346\234\253\350\200\203\350\257\2252\347\255\224\346\241\210.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\347\247\221\347\240\224\344\274\246\347\220\206\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\346\234\237\346\234\253\350\200\203\350\257\2252\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..dc7494e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\347\247\221\347\240\224\344\274\246\347\220\206\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\346\234\237\346\234\253\350\200\203\350\257\2252\347\255\224\346\241\210.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\347\247\221\347\240\224\344\274\246\347\220\206\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\350\257\276\345\220\216\344\271\240\351\242\230\347\255\224\346\241\210.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\347\247\221\347\240\224\344\274\246\347\220\206\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\350\257\276\345\220\216\344\271\240\351\242\230\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..7f75726 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\347\247\221\347\240\224\344\274\246\347\220\206\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203\350\257\276\345\220\216\344\271\240\351\242\230\347\255\224\346\241\210.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\350\256\272\346\226\207\345\206\231\344\275\234(1).pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\350\256\272\346\226\207\345\206\231\344\275\234(1).pdf" new file mode 100644 index 0000000..8fd374e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\256\272\346\226\207\345\206\231\344\275\234\344\270\216\345\255\246\346\234\257\350\247\204\350\214\203/\350\256\272\346\226\207\345\206\231\344\275\234(1).pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\345\244\215\344\271\240\347\254\224\350\256\260 v5.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\345\244\215\344\271\240\347\254\224\350\256\260 v5.docx" new file mode 100644 index 0000000..8129465 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\345\244\215\344\271\240\347\254\224\350\256\260 v5.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\345\244\215\344\271\240\347\254\224\350\256\260 v5.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\345\244\215\344\271\240\347\254\224\350\256\260 v5.pdf" new file mode 100644 index 0000000..2ecd59a Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\345\244\215\344\271\240\347\254\224\350\256\260 v5.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\350\200\203\350\257\225\351\242\230\345\236\213.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\350\200\203\350\257\225\351\242\230\345\236\213.txt" new file mode 100644 index 0000000..e4ee1c9 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\350\200\203\350\257\225\351\242\230\345\236\213.txt" @@ -0,0 +1,3 @@ +2021年软件定义网络考试题型 + +考试题型:单选、多选、判断、简答。 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\350\257\276\344\270\212\344\271\240\351\242\230.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\350\257\276\344\270\212\344\271\240\351\242\230.docx" new file mode 100644 index 0000000..1123c89 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/2021\345\271\264\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234\350\257\276\344\270\212\344\271\240\351\242\230.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/SDN\346\200\273\347\273\223A.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/SDN\346\200\273\347\273\223A.docx" new file mode 100644 index 0000000..0d7d636 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/SDN\346\200\273\347\273\223A.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/SDN\346\200\273\347\273\223B.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/SDN\346\200\273\347\273\223B.docx" new file mode 100644 index 0000000..c88f0cb Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/SDN\346\200\273\347\273\223B.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/YRR\347\254\224\350\256\260.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/YRR\347\254\224\350\256\260.docx" new file mode 100644 index 0000000..fa4c966 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/YRR\347\254\224\350\256\260.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/YRR\347\274\251\345\206\231\347\256\200\350\256\260.png" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/YRR\347\274\251\345\206\231\347\256\200\350\256\260.png" new file mode 100644 index 0000000..aea9c36 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/YRR\347\274\251\345\206\231\347\256\200\350\256\260.png" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/readme.md" new file mode 100644 index 0000000..d5efa89 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/readme.md" @@ -0,0 +1,5 @@ +# 说明 + +这门课需要做实验和考试。 + +2021-6-9 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234-\350\275\257\344\273\266\345\255\246\351\231\242-2021-\345\244\215\344\271\240\346\217\220\347\272\262.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234-\350\275\257\344\273\266\345\255\246\351\231\242-2021-\345\244\215\344\271\240\346\217\220\347\272\262.docx" new file mode 100644 index 0000000..a5626ac Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234/\350\275\257\344\273\266\345\256\232\344\271\211\347\275\221\347\273\234-\350\275\257\344\273\266\345\255\246\351\231\242-2021-\345\244\215\344\271\240\346\217\220\347\272\262.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/1_UNIX2017\350\257\225\345\215\267\345\217\212\345\217\202\350\200\203\347\255\224\346\241\210(1).docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/1_UNIX2017\350\257\225\345\215\267\345\217\212\345\217\202\350\200\203\347\255\224\346\241\210(1).docx" new file mode 100644 index 0000000..3fd32c8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/1_UNIX2017\350\257\225\345\215\267\345\217\212\345\217\202\350\200\203\347\255\224\346\241\210(1).docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2011\345\271\264unix\350\257\225\345\215\267.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2011\345\271\264unix\350\257\225\345\215\267.docx" new file mode 100644 index 0000000..c7d5fe5 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2011\345\271\264unix\350\257\225\345\215\267.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2013\345\271\264\350\257\225\345\215\267/QQ\345\233\276\347\211\20720131205105616.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2013\345\271\264\350\257\225\345\215\267/QQ\345\233\276\347\211\20720131205105616.jpg" new file mode 100644 index 0000000..43254db Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2013\345\271\264\350\257\225\345\215\267/QQ\345\233\276\347\211\20720131205105616.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2013\345\271\264\350\257\225\345\215\267/QQ\345\233\276\347\211\20720131205105646.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2013\345\271\264\350\257\225\345\215\267/QQ\345\233\276\347\211\20720131205105646.jpg" new file mode 100644 index 0000000..25256c6 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2013\345\271\264\350\257\225\345\215\267/QQ\345\233\276\347\211\20720131205105646.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2016\345\271\264UNIX\350\257\225\345\215\267(1).docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2016\345\271\264UNIX\350\257\225\345\215\267(1).docx" new file mode 100644 index 0000000..6929611 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2016\345\271\264UNIX\350\257\225\345\215\267(1).docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/1/8.1.c" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/1/8.1.c" new file mode 100644 index 0000000..6c0843e --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/1/8.1.c" @@ -0,0 +1,34 @@ +//Program 8.1: fork() + +/* +运行命令: +./8.1 +./8.1 > temp.out +cat temp.out +以上运行结果不同,猜测是因为输出为文件时没有清空缓冲区,导致fork时把缓冲区的数据复制了。 +*/ + +#include +#include"apue.h" + +int glob = 6;/* external variable in initialized data */ +char buf[] = "a write to stdout\n"; +int main(void) { + int var;/* automatic variable on the stack */ + pid_t pid; + var = 88; + if (write(STDOUT_FILENO, buf, sizeof(buf)-1) != sizeof(buf)-1) + err_sys("write error"); + printf("before fork\n");/* we don't flush stdout */ + //添加了清空缓冲区的操作后运行结果一致 + //fflush(stdout); + if ( (pid = fork()) < 0)err_sys("fork error"); + else if (pid == 0) {/* child */ + glob++;/* modify variables */ + var++; + } else + sleep(2);/* parent */ + printf("pid = %d, glob = %d, var = %d\n", getpid(), glob, var); + //exit(0) + _exit(0); +} diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/1/IMG_20210323_120336.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/1/IMG_20210323_120336.jpg" new file mode 100644 index 0000000..1f48dd1 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/1/IMG_20210323_120336.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/1/file_io.c" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/1/file_io.c" new file mode 100644 index 0000000..7f8ea8e --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/1/file_io.c" @@ -0,0 +1,37 @@ +//复制文件 +//编译命令:gcc -std=c17 -Ofast file_io.c -o file_io +//运行命令示例:./file_io 1 bazelisk bazelisk.bak + +//参考 +//https://baike.baidu.com/item/fread +//https://blog.csdn.net/rikeyone/article/details/95970499 + +#include +#include + +int main(int argc,char*argv[]) +{ + if(argc!=4){ + printf("wrong number of args\n"); + return 1; + } + size_t buffersize=atol(argv[1]); + void*buffer=malloc(buffersize); + char*inbuf=malloc(buffersize); + char*outbuf=malloc(buffersize); + FILE*inFile=fopen(argv[2],"rb"); + FILE*outFile=fopen(argv[3],"wb"); + setvbuf(inFile,inbuf,_IOFBF,buffersize); + setvbuf(outFile,outbuf,_IOFBF,buffersize); + size_t s=buffersize; + while(s==buffersize){ + s=fread(buffer,1,buffersize,inFile); + fwrite(buffer,s,1,outFile); + } + fclose(inFile); + fclose(outFile); + free(buffer); + free(inbuf); + free(outbuf); + return 0; +} diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/2/homework2.c" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/2/homework2.c" new file mode 100644 index 0000000..eaaa757 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/2/homework2.c" @@ -0,0 +1,26 @@ +//第2次课堂作业 + +//启动线程计算2*N + +#include +#include + +void*calculate(void*ptr_n) +{ + printf("%d\n",2*(*(int*)ptr_n)); + return NULL; +} + +int main() +{ + int n; + pthread_t th; + while(scanf("%d",&n)!=EOF){ + if(pthread_create(&th,NULL,calculate,&n)!=0){ + printf("pthread error\n"); + return 1; + } + pthread_join(th,NULL); + } + return 0; +} diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/2/\345\276\256\344\277\241\345\233\276\347\211\207_20210406205234.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/2/\345\276\256\344\277\241\345\233\276\347\211\207_20210406205234.jpg" new file mode 100644 index 0000000..f74e7c9 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/2/\345\276\256\344\277\241\345\233\276\347\211\207_20210406205234.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/3/IMG_20210413_115105.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/3/IMG_20210413_115105.jpg" new file mode 100644 index 0000000..0daab1c Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/3/IMG_20210413_115105.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/3/client.c" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/3/client.c" new file mode 100644 index 0000000..1f49082 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/3/client.c" @@ -0,0 +1,86 @@ +//高级操作系统作业3 + +//TCP客户端(测试用) + +//gcc -std=gnu17 -pthread client.c -o client + +//参考 https://blog.csdn.net/earbao/article/details/16114943 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int err=0; + +int processError(int fd) +{ + err=errno; + close(fd); + return -1; +} +int mylink(struct sockaddr*saddr,size_t saddr_len) +{ + int skt=socket(saddr->sa_family,SOCK_STREAM,IPPROTO_TCP); + if(skt<0)return processError(skt); + if(connect(skt,saddr,saddr_len)<0)return processError(skt); + return skt; +} + +int linkByIp(const char*ip,uint16_t port) +{ + struct sockaddr_in addr={.sin_family=AF_INET,.sin_port=htons(port)}; + /* memset(&addr,0,sizeof(addr)); + addr.sin_family=AF_INET; + addr.sin_port=htons(port); */ + if(inet_pton(AF_INET,ip,&addr.sin_addr)!=1)return -1; + return mylink((struct sockaddr*)&addr,sizeof(addr)); +} + +int linkByName(const char*name,uint16_t port) +{ + struct addrinfo sinfo={.ai_flags=AI_ADDRCONFIG,.ai_family=AF_INET,.ai_socktype=SOCK_STREAM}; + struct addrinfo*rinfo=NULL; + /* memset(&sinfo,0,sizeof(sinfo)); + sinfo.ai_flags=AI_ADDRCONFIG; + sinfo.ai_family=AF_INET; + sinfo.ai_socktype=SOCK_STREAM; */ + int e=getaddrinfo(name,NULL,&sinfo,&rinfo); + if(e!=0){ + printf("%s\n",gai_strerror(e)); + return -1; + } + ((struct sockaddr_in*)(rinfo->ai_addr))->sin_port=htons(port); + int s=mylink(rinfo->ai_addr,rinfo->ai_addrlen); + freeaddrinfo(rinfo); + return s; +} + +void request(int skt) +{ + const char HELLO_MSG[]="Hello, server!\n"; + const size_t BUF_SIZE=1024; + char buf[BUF_SIZE]; + send(skt,HELLO_MSG,sizeof(HELLO_MSG),0); + recv(skt,buf,BUF_SIZE,0); + printf("Receive from server: %s\n",buf); + close(skt); +} + +int main() +{ + const char HOST[]="localhost"; + const uint16_t PORT=2333; + int s=linkByName(HOST,PORT); + if(s<0){ + printf("network error: %s\n",strerror(err)); + return 1; + } + request(s); + return 0; +} diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/3/homework3.c" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/3/homework3.c" new file mode 100644 index 0000000..9a5c644 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\344\275\234\344\270\232/3/homework3.c" @@ -0,0 +1,99 @@ +//高级操作系统作业3 +//多进程TCP服务器 + +//gcc -std=c17 -pthread homework3.c -o homework3 + +//参考 +//https://www.cnblogs.com/Lune-Qiu/p/9426961.html +//https://baike.baidu.com/item/%E5%83%B5%E5%B0%B8%E8%BF%9B%E7%A8%8B + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const int WAITING_COUNT=20; +const uint16_t PORT=2333; + +int fd; +int err=0; + +void processError() +{ + err=errno; + close(fd); + fd=-1; +} +void init(uint16_t port) +{ + struct sockaddr_in addr={.sin_family=AF_INET,.sin_port=htons(port),.sin_addr.s_addr=htonl(INADDR_ANY)}; + /* memset(&addr,0,sizeof(addr)); + addr.sin_family=AF_INET; + addr.sin_port=htons(port); + addr.sin_addr.s_addr=htonl(INADDR_ANY); */ + fd=socket(addr.sin_family,SOCK_STREAM,IPPROTO_TCP); + if(fd<0)processError(); + if(bind(fd,(struct sockaddr*)&addr,sizeof(addr))<0)processError(); + if(listen(fd,WAITING_COUNT)<0)processError(); +} + +int getLink() +{ + return accept(fd,NULL,NULL); +} + +void treat(int skt) +{ + //处理连入的客户机 + const char HELLO_MSG[]="Hello, client!\n"; + const size_t BUF_SIZE=1024; + char buf[BUF_SIZE]; + size_t rsize=send(skt,HELLO_MSG,sizeof(HELLO_MSG),0); + size_t wsize=recv(skt,buf,BUF_SIZE,0); + printf("Receive from client: %s\n",buf); + close(skt); +} + +int serve() +{ + int s; + pid_t p; + init(PORT); + if(fd<0){ + printf("network error\n"); + return 1; + } + for(s=getLink();s>=0;s=getLink()){ + p=fork(); + if(p<0){ + printf("fork error\n"); + return 2; + }else if(p==0){ + treat(s); + return 0; + } + } + close(fd); + return 0; +} + +int main() +{ + signal(SIGCHLD,SIG_IGN); + return serve(); + /* pid_t chld=fork(); + if(chld<0){ + printf("fork error\n"); + return 2; + }else if(chld==0){ + return serve(); + } + getchar(); + kill(chld,SIGTERM); + return 0; */ +} diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237\347\232\204\350\200\203\350\257\225\351\242\230\345\236\213\345\222\214\346\227\266\351\227\264.txt" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237\347\232\204\350\200\203\350\257\225\351\242\230\345\236\213\345\222\214\346\227\266\351\227\264.txt" new file mode 100644 index 0000000..3253905 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237\347\232\204\350\200\203\350\257\225\351\242\230\345\236\213\345\222\214\346\227\266\351\227\264.txt" @@ -0,0 +1,3 @@ +考试题型和时间: +1 闭卷题(分数50分,时间60分钟):简单题,程序填空题和阅读器 +2 开卷题(分数50分,时间90分钟):编程题 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237\347\237\245\350\257\206\347\202\271.docx" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237\347\237\245\350\257\206\347\202\271.docx" new file mode 100644 index 0000000..d6ab54d Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/2021\345\271\264\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237\347\237\245\350\257\206\347\202\271.docx" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\217.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\217.jpg" new file mode 100644 index 0000000..4a3ea21 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\217.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170001.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170001.jpg" new file mode 100644 index 0000000..b894dad Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170001.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170002.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170002.jpg" new file mode 100644 index 0000000..4b691b2 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170002.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170003.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170003.jpg" new file mode 100644 index 0000000..32d17b3 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170003.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170004.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170004.jpg" new file mode 100644 index 0000000..9a052ff Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170004.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170005.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170005.jpg" new file mode 100644 index 0000000..7521882 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170005.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170006.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170006.jpg" new file mode 100644 index 0000000..7a52fab Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170006.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170007.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170007.jpg" new file mode 100644 index 0000000..26cd4d8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170007.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170008.pdf" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170008.pdf" new file mode 100644 index 0000000..d6fa8dc Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/HPSCANS/\346\211\253\346\217\2170008.pdf" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/readme.md" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/readme.md" new file mode 100644 index 0000000..344a8a3 --- /dev/null +++ "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/readme.md" @@ -0,0 +1,5 @@ +# 说明 + +这门课有课堂作业、实验和考试(包括开卷和闭卷部分)。 + +2021-6-10 diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/1.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/1.jpg" new file mode 100644 index 0000000..4ca9a5e Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/1.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/2.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/2.jpg" new file mode 100644 index 0000000..94a92ed Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/2.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/3.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/3.jpg" new file mode 100644 index 0000000..7c71972 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/3.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/4.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/4.jpg" new file mode 100644 index 0000000..e2d1562 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/4.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/5.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/5.jpg" new file mode 100644 index 0000000..aacece1 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/5.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/6.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/6.jpg" new file mode 100644 index 0000000..bd2b8ee Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/6.jpg" differ diff --git "a/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/7.jpg" "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/7.jpg" new file mode 100644 index 0000000..69312f8 Binary files /dev/null and "b/\347\240\224\347\251\266\347\224\237\350\257\276\347\250\213/\351\253\230\347\272\247\346\223\215\344\275\234\347\263\273\347\273\237/\346\265\201\344\274\240\350\265\204\346\226\231/7.jpg" differ diff --git "a/\347\246\273\346\225\243\346\225\260\345\255\246/2013\347\246\273\346\225\243\346\225\260\345\255\246B\345\215\267.doc" "b/\347\246\273\346\225\243\346\225\260\345\255\246/2013\347\246\273\346\225\243\346\225\260\345\255\246B\345\215\267.doc" new file mode 100644 index 0000000..ef1d4ec Binary files /dev/null and "b/\347\246\273\346\225\243\346\225\260\345\255\246/2013\347\246\273\346\225\243\346\225\260\345\255\246B\345\215\267.doc" differ diff --git "a/\347\246\273\346\225\243\346\225\260\345\255\246/2013\347\246\273\346\225\243\346\225\260\345\255\246B\345\215\267\347\255\224\346\241\210.docx" "b/\347\246\273\346\225\243\346\225\260\345\255\246/2013\347\246\273\346\225\243\346\225\260\345\255\246B\345\215\267\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..e58aa51 Binary files /dev/null and "b/\347\246\273\346\225\243\346\225\260\345\255\246/2013\347\246\273\346\225\243\346\225\260\345\255\246B\345\215\267\347\255\224\346\241\210.docx" differ diff --git "a/\347\246\273\346\225\243\346\225\260\345\255\246/\347\246\273\346\225\243\346\225\260\345\255\246\344\271\240\351\242\230\351\233\206(\345\215\201\344\272\224\345\245\227).doc" "b/\347\246\273\346\225\243\346\225\260\345\255\246/\347\246\273\346\225\243\346\225\260\345\255\246\344\271\240\351\242\230\351\233\206(\345\215\201\344\272\224\345\245\227).doc" new file mode 100644 index 0000000..49dd04c Binary files /dev/null and "b/\347\246\273\346\225\243\346\225\260\345\255\246/\347\246\273\346\225\243\346\225\260\345\255\246\344\271\240\351\242\230\351\233\206(\345\215\201\344\272\224\345\245\227).doc" differ diff --git "a/\347\246\273\346\225\243\346\225\260\345\255\246/\347\246\273\346\225\243\346\225\260\345\255\246\344\271\240\351\242\230\351\233\206\351\224\246.pdf" "b/\347\246\273\346\225\243\346\225\260\345\255\246/\347\246\273\346\225\243\346\225\260\345\255\246\344\271\240\351\242\230\351\233\206\351\224\246.pdf" new file mode 100644 index 0000000..a5a100b Binary files /dev/null and "b/\347\246\273\346\225\243\346\225\260\345\255\246/\347\246\273\346\225\243\346\225\260\345\255\246\344\271\240\351\242\230\351\233\206\351\224\246.pdf" differ diff --git "a/\347\246\273\346\225\243\346\225\260\345\255\246/\347\246\273\346\225\243\346\225\260\345\255\246\345\215\225\351\241\271\351\200\211\346\213\251\351\242\230\344\271\240\351\242\230(\346\234\211\347\255\224\346\241\210)\351\233\206.doc" "b/\347\246\273\346\225\243\346\225\260\345\255\246/\347\246\273\346\225\243\346\225\260\345\255\246\345\215\225\351\241\271\351\200\211\346\213\251\351\242\230\344\271\240\351\242\230(\346\234\211\347\255\224\346\241\210)\351\233\206.doc" new file mode 100644 index 0000000..4f29704 Binary files /dev/null and "b/\347\246\273\346\225\243\346\225\260\345\255\246/\347\246\273\346\225\243\346\225\260\345\255\246\345\215\225\351\241\271\351\200\211\346\213\251\351\242\230\344\271\240\351\242\230(\346\234\211\347\255\224\346\241\210)\351\233\206.doc" differ diff --git "a/\347\246\273\346\225\243\346\225\260\345\255\246/\347\255\224\346\241\210of\346\234\237\346\234\253\350\257\225\345\215\267.ppt" "b/\347\246\273\346\225\243\346\225\260\345\255\246/\347\255\224\346\241\210of\346\234\237\346\234\253\350\257\225\345\215\267.ppt" index d885a8f..08e5f51 100755 Binary files "a/\347\246\273\346\225\243\346\225\260\345\255\246/\347\255\224\346\241\210of\346\234\237\346\234\253\350\257\225\345\215\267.ppt" and "b/\347\246\273\346\225\243\346\225\260\345\255\246/\347\255\224\346\241\210of\346\234\237\346\234\253\350\257\225\345\215\267.ppt" differ diff --git "a/\347\272\277\346\200\247\344\273\243\346\225\260/2011\345\271\264\347\272\277\346\200\247\344\273\243\346\225\260\350\257\225\345\215\267\345\217\212\347\255\224\346\241\210.doc" "b/\347\272\277\346\200\247\344\273\243\346\225\260/2011\345\271\264\347\272\277\346\200\247\344\273\243\346\225\260\350\257\225\345\215\267\345\217\212\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..de08d9e Binary files /dev/null and "b/\347\272\277\346\200\247\344\273\243\346\225\260/2011\345\271\264\347\272\277\346\200\247\344\273\243\346\225\260\350\257\225\345\215\267\345\217\212\347\255\224\346\241\210.doc" differ diff --git "a/\347\272\277\346\200\247\344\273\243\346\225\260/2012\347\255\224\346\241\210\347\272\277\346\200\247\344\273\243\346\225\260\344\270\216\345\207\240\344\275\225\350\257\225\345\215\267\344\270\2122012A\347\255\224\346\241\210.doc" "b/\347\272\277\346\200\247\344\273\243\346\225\260/2012\347\255\224\346\241\210\347\272\277\346\200\247\344\273\243\346\225\260\344\270\216\345\207\240\344\275\225\350\257\225\345\215\267\344\270\2122012A\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..545c847 Binary files /dev/null and "b/\347\272\277\346\200\247\344\273\243\346\225\260/2012\347\255\224\346\241\210\347\272\277\346\200\247\344\273\243\346\225\260\344\270\216\345\207\240\344\275\225\350\257\225\345\215\267\344\270\2122012A\347\255\224\346\241\210.doc" differ diff --git "a/\347\272\277\346\200\247\344\273\243\346\225\260/2013\345\270\246\347\255\224\346\241\210Aa\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\347\272\277\346\200\247\344\273\243\346\225\260\344\270\216\345\207\240\344\275\225\350\257\225\345\215\267\344\270\2122013Aa.doc" "b/\347\272\277\346\200\247\344\273\243\346\225\260/2013\345\270\246\347\255\224\346\241\210Aa\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\347\272\277\346\200\247\344\273\243\346\225\260\344\270\216\345\207\240\344\275\225\350\257\225\345\215\267\344\270\2122013Aa.doc" new file mode 100644 index 0000000..60ebb4c Binary files /dev/null and "b/\347\272\277\346\200\247\344\273\243\346\225\260/2013\345\270\246\347\255\224\346\241\210Aa\345\215\216\345\215\227\347\220\206\345\267\245\345\244\247\345\255\246\347\272\277\346\200\247\344\273\243\346\225\260\344\270\216\345\207\240\344\275\225\350\257\225\345\215\267\344\270\2122013Aa.doc" differ diff --git "a/\347\272\277\346\200\247\344\273\243\346\225\260/2014\347\272\277\346\200\247\344\273\243\346\225\260\346\234\237\346\234\253\350\257\225\345\215\267.pdf" "b/\347\272\277\346\200\247\344\273\243\346\225\260/2014\347\272\277\346\200\247\344\273\243\346\225\260\346\234\237\346\234\253\350\257\225\345\215\267.pdf" new file mode 100644 index 0000000..e6baaeb Binary files /dev/null and "b/\347\272\277\346\200\247\344\273\243\346\225\260/2014\347\272\277\346\200\247\344\273\243\346\225\260\346\234\237\346\234\253\350\257\225\345\215\267.pdf" differ diff --git "a/\347\272\277\346\200\247\344\273\243\346\225\260/2015\347\272\277\346\200\247\344\273\243\346\225\260\344\270\216\350\247\243\346\236\220\345\207\240\344\275\225.pdf" "b/\347\272\277\346\200\247\344\273\243\346\225\260/2015\347\272\277\346\200\247\344\273\243\346\225\260\344\270\216\350\247\243\346\236\220\345\207\240\344\275\225.pdf" new file mode 100644 index 0000000..3f1cf5b Binary files /dev/null and "b/\347\272\277\346\200\247\344\273\243\346\225\260/2015\347\272\277\346\200\247\344\273\243\346\225\260\344\270\216\350\247\243\346\236\220\345\207\240\344\275\225.pdf" differ diff --git "a/\347\272\277\346\200\247\344\273\243\346\225\260/2016-2017\345\271\264\345\272\246\347\254\254\344\270\200\345\255\246\346\234\237\347\272\277\346\200\247\344\273\243\346\225\260\346\234\237\346\234\253\345\215\267A\347\255\224\346\241\210.pdf" "b/\347\272\277\346\200\247\344\273\243\346\225\260/2016-2017\345\271\264\345\272\246\347\254\254\344\270\200\345\255\246\346\234\237\347\272\277\346\200\247\344\273\243\346\225\260\346\234\237\346\234\253\345\215\267A\347\255\224\346\241\210.pdf" new file mode 100644 index 0000000..b0bf08a Binary files /dev/null and "b/\347\272\277\346\200\247\344\273\243\346\225\260/2016-2017\345\271\264\345\272\246\347\254\254\344\270\200\345\255\246\346\234\237\347\272\277\346\200\247\344\273\243\346\225\260\346\234\237\346\234\253\345\215\267A\347\255\224\346\241\210.pdf" differ diff --git "a/\347\272\277\346\200\247\344\273\243\346\225\260/2017-2018.pdf" "b/\347\272\277\346\200\247\344\273\243\346\225\260/2017-2018.pdf" new file mode 100644 index 0000000..4c377cc Binary files /dev/null and "b/\347\272\277\346\200\247\344\273\243\346\225\260/2017-2018.pdf" differ diff --git "a/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/2013\345\271\264\350\275\257\351\231\242\346\234\272\347\273\204\350\200\203\350\257\225.md" "b/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/2013\345\271\264\350\275\257\351\231\242\346\234\272\347\273\204\350\200\203\350\257\225.md" new file mode 100644 index 0000000..c924c0f --- /dev/null +++ "b/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/2013\345\271\264\350\275\257\351\231\242\346\234\272\347\273\204\350\200\203\350\257\225.md" @@ -0,0 +1,60 @@ +## һѡ +1. The second generation computers is ? +2. Half adder,input is xy, output is s , what is s? +3. Seek time + rotational latency + transfer time is what? +4. ڴ is 8k words of 32-bit each,С addressable memory unit is 8-bit bytes , ڴַҪbit +5. ȡйOpcode instruction addressĵ +6. ȡйhit rate ĵ +7. ȡйcontrol store ĵ +8. ж +9. Hazardķ +10. RISC +11. About pipelininghazard , branch penalty , implement pipeline +12. In memory-mapped I/O system use _____ to differentiate memory (?) and I/O devices +13. In an interrupt process , the usage of saving PC +14. The required control signals are determined by +15. CICS: the conditional branch uses Relative addressing location:0x0100,offset 0x0010,what is the next instruction? + +## +1. What is the difference between a subroutine and an interrupt service routine? +2. Booths Algorithm + 11010010 + X 01101111 +(1)How many bits will be need to store the product? +(2)How many addition and subtractions will be performed? +3. ȱof hardwired and micro-programmed:control +4. Point on the dependent instructions,Can we eliminate the data dependencies using forwarding if not ,what should we do? Draw a diagram to show the pipelined execution of the 4 +Add R3R1#100 +Or R4R5R6 +Load R2R3 +Subtract R9R2#30 + +## +1. static memory chips :128k X 8 bit (total 4 chips) and 512k X 4bit (total 2 chips) implement a 512k X 16 bit memory ,draw the figure of the memory organization. + + + +2. 16-bit format scale factor: 6-bit , e-31 exponent + 0 : 0 + 63:infinity + Mantissa 9 bit + -0.5625 + +21 + Add A= 0100001 111111110 + B=0011111 001010101 + +3. instruction length :10 bit,operand address :4 bit, need 3 two-address instructions, 15 one , 16 zero . How design instruction format + +4. Give the sequence of steps need to fetch and execute the instructions on 5-stage RISC + SUB R1 R2 R3 (32bit operand) + +5. Byte-addressable + Virtual address space : 4Gb , Main memory size : 16Mb , Cache size : 256 kb , Page size : + 64kb, MM to c + 4 way set associative HD to MM: full associative + (1)how many sets int cache memory + (2)how log is the tag filed of the cache + (3)virtual Address : 0B45DA12 (hex), Ӧҳ physical ҳ 3E(hex) + What is its physical address under such mapping + Which set can this address found in the cache + Which byte does this address point to out if the 128 bytes in a block diff --git "a/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220.md" "b/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220.md" new file mode 100644 index 0000000..b6d25c9 --- /dev/null +++ "b/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220.md" @@ -0,0 +1,92 @@ +## һ. ѡ +###### 1. In register indirect addressing mode , the operand is in the ______ + A. general-purpose B. memory location C.instruction D. + +###### 2. the capacity of a kind of SRAM chip is 8k*16, so , the address lines and data lines of this chip are ______ respectively. + A.8,16 B.13,16 C.13,4 D,8,4 + +###### 3. By ______ technique , a main memory black can be placed into only one possible cache block position. + A. Direct-mapping B. associative-mapping + C. full associative-mapping D.set associative-mapping + +###### 4. about benefit of virtual memory is not true? + A. Provide large address space B.relieve progremmers from barden of overlags + C.reslove internal fragmentation D.simplify relocation + +###### 5. A hard disk with 5 double-sided platters has 2048 tracks/platter , how many movable heads does it have? + A. 5 B.10 C.2048*5 D.2048*10 + +###### 6. The range of an 8-bit signed 2s complement integer is + A. -256~+256 B. -256~+255 C. -128~+128 D. -128~+127 + +###### 7. 1001010 and 01110111 , to be multiplied using a multiplier that uses Booths ~~ , How many additions will be performend by the Booths ~~multiplier . + A. 6 B. 4 C. 2 D. 8 +###### 8. The cause of overflow in signed addition . + A. If there is a carry out of the least significant bit + B. Most results in a positive result . + C. Adding two negative numbers + D. If the magnitude of the result is smaller than the magnitude of the smaller added. + +###### 9. The range and accuracy of floating-point numbers depend on ---- respectively. + A. The size of exponent and the representation of mantissa. + B. The size of mantissa and the representation of exponent. + C. The size of exponent and the representation of mantissa. + D. The size of mantissa and the representation of exponent + +###### 10. Branch instruction is at location 2000and the offset of the instruction is 46then the branch target address is ----- + A. 2046 B. 2048 C. 2050 D. 2002 + +###### 11. Use -----to differentiate memory location and I/O devices + A. Different address B. address buses + C. instruction D. control signals + +###### 12. Interput system is implement by --- + A. H B. S C. H S D. No + +###### 13. The device that is allowed to initiate data transfers on the bus at any given time is called ---- + A. Bus transceiver B. slave C. receiver D. master + +###### 14. Use to prevent branch hazard + A. Bypassing B. forwarding C. duplication of resources D. Freeze or Flnsh + +## . +###### 1. An interrupt is serviced by a prediefined interrupt service routine(ISR) The user desires that the device is serviced by a user defined ISR instead ###### of the predefined ISR. What steps should the user take? + +###### 2. Under what circumstances do page fault occur?Describe the actions take by the operating system when a page fault occurs. + +###### 3.Using 32-bit IEEEE 754 single precision floating point format ,show the representation of -11/16 + +###### 4.point out which instructions are dependent?Can we eliminate the data dependencies using bypassing(Note:LD means Load in~~~ ST Store in~~~~) +###### LD R7R8 +###### SUB R10,R11,R12 +###### MVL R13,R7,R11 +###### ST (R9),R13 +###### ADD R13,R2,R1 +###### LD R5,(R6) +###### SUB R3,R4,R5 + + + +## . + +1. two types of static memory chips: 128k *8 bit(total 8 chips) 512k * 8 bit (total 8 chips) +Use these memory chips to implement a 512k *32 bit memory. +Draw the figure of the memory organization. + +2. A given processor has 32 registers , uses 16-bit immediate , and has 142 instructions in its instruction set . In a given program , 20 percent of the instruction take one input register and have one output register ; 30 percent have two input registers and one output register; 25 percent , have one input register , one output . and take an immediate input as well , the remaining 25 percent have one immediate input and one output register . +For each of the four types of instructions , how many bits are required; +( the instructions be a multiple of 8 bits in length ) + +3. The non-restoring division algorithm perform the operations A/B on the unsigned numbers A=1000 and B=11. Write the computation processs in a computer machine . + +4. part of the microinstruction sequence corresponding to one of the machine instructions of a microinstruction computer . +Microinstruction B is followed by C , D , F or I . +Depending on bits IR6 , IR5 , and IR4 of the machine instruction register. +Give implementation . Microinstruction sequencing is accomplished by means of a micropromram counter . Braning is achieved by microinstructions of the form : Branch to X ,OR . +Where X is a base bit-ORing of bits IR4, IR5 , IR6 with the apprioriate bits with X. + +5. A byte-address computer has a small data cache capable of holding eight 32-bit words . +Each cache block consists of two 32-bit words . When a given program is executed , the processor read . data ~~~~hex add 200 , 204 , 208 , 20C , 2F4 , 2F0 , 200 , 204 , 218 , 21C , 24C , 2F4 . +This pattern is repeated four times . +Assume the cache is initially empty . +Show the contents of the cache at the end of each pass through the loop for a two-way set associative cache that uses the LRU replacement algorithem , and compute the hit rate . diff --git "a/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220\344\270\216\344\275\223\347\263\273\347\273\223\346\236\204A\345\215\2672011.md" "b/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220\344\270\216\344\275\223\347\263\273\347\273\223\346\236\204A\345\215\2672011.md" new file mode 100644 index 0000000..483dc49 Binary files /dev/null and "b/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220\344\270\216\344\275\223\347\263\273\347\273\223\346\236\204A\345\215\2672011.md" differ diff --git "a/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220\344\270\216\344\275\223\347\263\273\347\273\223\346\236\204B\345\215\2672011(\346\234\200\347\273\210\347\211\210).md" "b/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220\344\270\216\344\275\223\347\263\273\347\273\223\346\236\204B\345\215\2672011(\346\234\200\347\273\210\347\211\210).md" new file mode 100644 index 0000000..8ae2469 --- /dev/null +++ "b/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220\344\270\216\344\275\223\347\263\273\347\273\223\346\236\204B\345\215\2672011(\346\234\200\347\273\210\347\211\210).md" @@ -0,0 +1,137 @@ +## I. ѡ⣨2 points each + +##### For each question in this section, choose 1 answer. Choose the best answer. + +**1. Interrupt system is implemented by ______.** + + A. only hardware B. only software ?????? + + C. both hardware and software D. none of the above????? + +**2. In a ?bus, all devices derive timing information from a common clock line.** + + A. system B. asynchronous C. internal D. synchronous + +**3. In carry-lookahead adder, the expression ______?is called the generate function Gi for stage i.** + + A. xi+yi B. xiyi + C. xiyi D.xiyici + +**4. ______?has/have internal fragmentation problem.** + + A. Paging B. Segmentation with paging + C. Segmentation D. Segmentation and segmentation with paging + +**5. Assume that the capacity of a kind of SRAM chip is 32K32, so the sum of address lines and data lines of this chip is______.** + + A. 47 B. 64 C. 46 D. 74 + +**6. The time to complete a read or write operation on a disk can be divided into two parts: the seek time and the ______.** + + A. transfer time B. access time C. sector time D. rotational delay time + +**7. In DMA transfers, the data transfer unit between memory and I/O devices is ______.** + + A. byte B. word C. block of data D. bit + +**8. Microprogram sequencing can be implemented by ______.** + + A. PC B. control store C. PC D. SRAM + +**9. The 32-bit value 0x30a79847 is stored to the location 0x1000. If the system is little-endian, the value of the byte ?is stored in address 0x1002.** + + A. 0xa7 B. 0x47 C. 0x98 D. 0x30 + +**10. Which of the following is *not* the constituent of the I/O devices *interface circuit*?** + + A. instruction register B. data register C. status register D. address decoder + +**11. Which one of the following is not used to prevent data hazards?** + + A. Bypassing B. Forwarding C. Stall D. Freeze or Flush + +**12. Addressing memory by giving a register (explicit or implicit) plus a ?constant offset as effective address is called ______.** + + A. direct addressing B. register addressing + C. indexed addressing D. immediate addressing + +**13. In IEEE 754 floating point number standard, instead of the signed exponent, E, the value actually stored in the exponent field is an unsigned integer ______.** + + A. E=E+255 B. E=E+127 C. E=E+256 D. E=E+128 + +**14. In a computer with a microprogrammable control unit the period of the clock is determined by ______.** + + A. the delay of the control memory. + B. the delay of the main memory. + C. the delay of the ALU. + D. the sum of two of the above delays. + +**15. In memory-mapped I/O system, we use ______?to differentiate memory locations and I/O devices.** + + A. different addresses B. different address buses + C. different instructions D. different control signals + +## II.(5 points each) + +1. In a carry-lookahead adder, each bit-slice of the adder must use inputs ai, bi and ci to produce generate function gi, propagate function pi, and sum output si. A proposal has been made to replace the standard definition of the propagate function: pi=ai+bi with a version that uses the *exclusive-or* function: pi=aibi.The carry function is now implemented in the carry-lookahead unit as before: ci+1=gi+pi*ci. +(1) Will the modified propagate function work properly in the calculation of carry signals by the carry lookahead unit? Why or why not? +(2) What advantage would there be in using the exclusive-or version of the propagate signal? + +***Solution:*** + +2. For a write operation in a cache memory system, what is the difference between write back and write through? + +***Solution:*** + +3. What are the advantages and disadvantages of hardwired and microprogrammed control? + +***Solution:*** + +4. What is the difference between a subroutine and an interrupt-service routine? + +***Solution:*** + +## III.ۺ⣨10 points each + +1. Using sequential multiplication algorithm, perform the operations AB on the 4-bit unsigned numbers A= 1011 and B= 1101\. Write the computation processes in a computer machine. + +***Solution:*** + +2. Consider the two-dimensional array A: +int A[][] = new int[100][100]; +Where A[0][0] is at location 200, in a paged memory system with pages of size 200\. A small process is in page 0 (locations 0 to 199) for manipulating the matrix; thus, every instruction fetch will be from page 0. +Suppose that the elements of the array are stored in row order in the virtual memory. For three page frames, how many page faults are generated by the following array-initialization loops, using LRU replacement, and assuming page frame 1 has the process in it, and the other two are initially empty? +(1) +``` + for (int j = 0; j < 100; j++) + for (int i = 0; i < 100; i++) + A[i][j] = 0; +``` + +(2) + + for (int i = 0; i < 100; j++) + for (int j = 0; j < 100; i++) + A[i][j] = 0; + +***Solution:*** + +3. Assume that a computers instruction length is 8-bit. Suppose the designers need 3 instructions with two 3-bit operands, 2 instructions with one 4-bit operand and 4 instructions with one 3-bit operand. How should we design the instruction format? + +***Solution:*** + +4. A logic circuit is needed to implement the priority network shown like figure below. The network handles three interrupt request lines. When a request is received on line INTRi, the network generates an acknowledgement on line INTAi. If more than one request is received, only the highest-priority request is acknowledged, where the ordering of priority is: priority of INTR1 > priority of INTR2 > priority of INTR3. + +![](https://upload-images.jianshu.io/upload_images/15206312-3462d45ca837079f.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + +(1) Give a truth table for each of the outputs INTA1, INTA2, and INTA3. + +(2) Give logic expressions of INTA1, INTA2, INTA3 and a logic circuit for implementing this priority network. + +***Solution:*** + +5. The following figure gives part of the microinstruction sequence corresponding to one of the machine instructions of a microprogrammed computer. Microinstruction B is followed by C, E, F, or I, depending on bits b6 and b5 of the machine instruction register. Assume that a field in each microinstruction specifies the address of the next microinstruction, which has bit-ORing capability. Please give the possible implementation. + +![](https://upload-images.jianshu.io/upload_images/15206312-07d89f5e646766d6.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + +***Solution:*** diff --git "a/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220\344\270\216\344\275\223\347\263\273\347\273\223\346\236\204B\345\215\267\347\255\224\346\241\2102011(\346\234\200\347\273\210\347\211\210).md" "b/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220\344\270\216\344\275\223\347\263\273\347\273\223\346\236\204B\345\215\267\347\255\224\346\241\2102011(\346\234\200\347\273\210\347\211\210).md" new file mode 100644 index 0000000..e157991 --- /dev/null +++ "b/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220/\350\256\241\347\256\227\346\234\272\347\273\204\346\210\220\344\270\216\344\275\223\347\263\273\347\273\223\346\236\204B\345\215\267\347\255\224\346\241\2102011(\346\234\200\347\273\210\347\211\210).md" @@ -0,0 +1,86 @@ +## һѡ⣨ÿ2֣30֣ + +| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | +|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| +| C | D | C | A | A | D | C | C | A | A | +| **11** | **12** | **13** | **14** | **15** | | | | | | +| D | C | B | D | A | | | | | | + +## + +#### 1. Solution: + +(1) The only difference in pi is that it will not be high when ai and bi are both high. However, in this case ci+1 will be 1 anyway because gi will be 1, so the carry is not affected by the change. Yes, it will work. + +(2) The advantage is that pi can now also be used to help compute the sum of each bit (recall si=aibici). This can be a substantial savings for a 32-bit adder. + +#### 2. Solution: + + **Write through**: The cache location and the main memory location are updated simultaneously. It can keep cache and main memory consistent at the same time. But all writes require main memory access, and it will slow down the system. + + **Write back**: Update only the cache location and to mark it as updated with a dirty or modified bit. When the block containing the marked word is to be removed from the cache, update the main memory location of the word. Its faster than write-through, because time is not spent accessing main memory, and writes to multiple words within a block require only one write to the main-memory. But portions of main memory are invalid, and extra bit is needed in cache to indicate which block has been modified. + +#### 3. Solution: + +The main advantage of hardwired control is fast operation. The disadvantages include: higher cost, inflexibility when changes or additions are to be made, and longer time required to design and implement such units. + +Microprogrammed control is characterized by low cost and high flexibility. Lower speed of operation becomes a problem in high-performance computers. + +#### 4. Solution: + +A subroutine is called by a program instruction to perform a function needed by the calling program. + +An interrupt-service routine is initiated by an event such as an input operation or a hardware error. The function it performs may not be at all related to the program being executed at the time of interruption. Hence, it must not affect any of the data or status information relating to that program. + +## ۺ + +#### 1. Solution: + +![pic5.PNG](https://upload-images.jianshu.io/upload_images/15206312-9f9f177026843498.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +#### 2. Solution: +(1) 50 (2) 5000 + +#### 3. Solution: +00 aaa bbb +01 aaa bbb +10 aaa bbb +11 - expansion +1100 aaaa +1101 aaaa +1110 - expansion +1111 - expansion +11100 aaa +11101 aaa +11110 aaa +11111 aaa +Conclusion: +00 - 10 3 instructions +1100 - 1101 2 instructions +11100 - 11111 4 instructions + +#### 4. +(1) +| INTR1 | INTR2 | INTR3 | INTA1 | INTA2 | INTA3 | +|:---:|:---:|:---:|:---:|:---:|:---:| +| 0 | 0 | 0 | 0 | 0 | 0 | +| 0 | 0 | 1 | 0 | 0 | 1 | +| 0 | 1 | 0 | 0 | 1 | 0 | +| 0 | 1 | 1 | 0 | 1 | 0 | +| 1 | 0 | 0 | 1 | 0 | 0 | +| 1 | 0 | 1 | 1 | 0 | 0 | +| 1 | 1 | 0 | 1 | 0 | 0 | +| 1 | 1 | 1 | 1 | 0 | 0 | + +(2) +INTA1 = INTR1 +INTA2 = INTR2 * !INTR1 +INTA3 = INTR3 * !INTR2 * INTR1 + +#### 5. Solution: + +![](https://upload-images.jianshu.io/upload_images/15206312-1e72420c3935f8ce.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + + diff --git "a/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/2010\345\271\264\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234\350\257\225\345\215\267B_\345\220\253\347\255\224\346\241\210.doc" "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/2010\345\271\264\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234\350\257\225\345\215\267B_\345\220\253\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..2865a4d Binary files /dev/null and "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/2010\345\271\264\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234\350\257\225\345\215\267B_\345\220\253\347\255\224\346\241\210.doc" differ diff --git "a/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/2011\345\271\264\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234\350\257\225\345\215\267A_\347\255\224\346\241\210.doc" "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/2011\345\271\264\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234\350\257\225\345\215\267A_\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..727a2be Binary files /dev/null and "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/2011\345\271\264\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234\350\257\225\345\215\267A_\347\255\224\346\241\210.doc" differ diff --git "a/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\345\215\216\345\215\227\347\220\206\345\267\245\350\275\257\344\273\266\345\255\246\351\231\2422015\346\234\237\346\234\253\350\200\203\350\257\225-\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234B\345\215\267.doc" "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\345\215\216\345\215\227\347\220\206\345\267\245\350\275\257\344\273\266\345\255\246\351\231\2422015\346\234\237\346\234\253\350\200\203\350\257\225-\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234B\345\215\267.doc" new file mode 100644 index 0000000..d9abf19 Binary files /dev/null and "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\345\215\216\345\215\227\347\220\206\345\267\245\350\275\257\344\273\266\345\255\246\351\231\2422015\346\234\237\346\234\253\350\200\203\350\257\225-\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234B\345\215\267.doc" differ diff --git "a/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\347\275\221\347\273\234\350\257\225\351\242\2302007A\347\255\224\346\241\210.doc" "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\347\275\221\347\273\234\350\257\225\351\242\2302007A\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..cb568ac Binary files /dev/null and "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\347\275\221\347\273\234\350\257\225\351\242\2302007A\347\255\224\346\241\210.doc" differ diff --git "a/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\347\275\221\347\273\234\350\257\225\351\242\2302007\347\255\224\346\241\210(B).doc" "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\347\275\221\347\273\234\350\257\225\351\242\2302007\347\255\224\346\241\210(B).doc" new file mode 100644 index 0000000..9ef4d5a Binary files /dev/null and "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\347\275\221\347\273\234\350\257\225\351\242\2302007\347\255\224\346\241\210(B).doc" differ diff --git "a/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\350\257\225\345\215\2671.pdf" "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\350\257\225\345\215\2671.pdf" new file mode 100644 index 0000000..f47b808 Binary files /dev/null and "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\350\257\225\345\215\2671.pdf" differ diff --git "a/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\350\257\225\345\215\2671\347\255\224\346\241\210.pdf" "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\350\257\225\345\215\2671\347\255\224\346\241\210.pdf" new file mode 100644 index 0000000..95979ea Binary files /dev/null and "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\350\257\225\345\215\2671\347\255\224\346\241\210.pdf" differ diff --git "a/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\350\257\225\345\215\2673_\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234_A.pdf" "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\350\257\225\345\215\2673_\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234_A.pdf" new file mode 100644 index 0000000..299e36d Binary files /dev/null and "b/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\350\257\225\345\215\2673_\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234_A.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/2012\345\271\264\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\345\244\247\347\272\262[\346\272\220\350\207\252\345\270\210\345\205\204\345\270\256\345\270\256].pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/2012\345\271\264\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\345\244\247\347\272\262[\346\272\220\350\207\252\345\270\210\345\205\204\345\270\256\345\270\256].pdf" new file mode 100644 index 0000000..3eccaba Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/2012\345\271\264\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\345\244\247\347\272\262[\346\272\220\350\207\252\345\270\210\345\205\204\345\270\256\345\270\256].pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/2018\345\271\264\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\347\254\224\350\256\260\357\274\210\347\254\254\344\272\214\347\211\210\357\274\211.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/2018\345\271\264\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\347\254\224\350\256\260\357\274\210\347\254\254\344\272\214\347\211\210\357\274\211.docx" new file mode 100644 index 0000000..9074531 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/2018\345\271\264\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\347\254\224\350\256\260\357\274\210\347\254\254\344\272\214\347\211\210\357\274\211.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/2018\345\271\264\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\347\254\224\350\256\260\357\274\210\347\254\254\344\272\214\347\211\210\357\274\211.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/2018\345\271\264\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\347\254\224\350\256\260\357\274\210\347\254\254\344\272\214\347\211\210\357\274\211.pdf" new file mode 100644 index 0000000..17948a4 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/2018\345\271\264\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\347\254\224\350\256\260\357\274\210\347\254\254\344\272\214\347\211\210\357\274\211.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/ATAM\346\236\266\346\236\204\350\257\204\344\274\260\346\226\271\346\263\225.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/ATAM\346\236\266\346\236\204\350\257\204\344\274\260\346\226\271\346\263\225.pdf" new file mode 100644 index 0000000..7bd84a9 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/ATAM\346\236\266\346\236\204\350\257\204\344\274\260\346\226\271\346\263\225.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/IMG_20181221_201526_HDR.jpg" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/IMG_20181221_201526_HDR.jpg" new file mode 100644 index 0000000..96acf72 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/IMG_20181221_201526_HDR.jpg" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/review.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/review.docx" new file mode 100644 index 0000000..74ed69c Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/review.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\343\200\212\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\343\200\213\350\257\225\345\215\267B - \345\211\257\346\234\254.doc" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\343\200\212\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\343\200\213\350\257\225\345\215\267B - \345\211\257\346\234\254.doc" new file mode 100644 index 0000000..6200736 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\343\200\212\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\343\200\213\350\257\225\345\215\267B - \345\211\257\346\234\254.doc" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\343\200\212\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\343\200\213\350\257\225\345\215\267B.doc" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\343\200\212\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\343\200\213\350\257\225\345\215\267B.doc" new file mode 100644 index 0000000..27e573a Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\343\200\212\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\343\200\213\350\257\225\345\215\267B.doc" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\345\211\215\344\270\200\346\231\232.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\345\211\215\344\270\200\346\231\232.docx" new file mode 100644 index 0000000..316328f Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\345\211\215\344\270\200\346\231\232.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\345\244\215\344\271\240\346\217\220\347\272\262\344\271\213\350\256\276\350\256\241\346\250\241\345\274\217\346\200\273\347\273\223.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\345\244\215\344\271\240\346\217\220\347\272\262\344\271\213\350\256\276\350\256\241\346\250\241\345\274\217\346\200\273\347\273\223.pdf" new file mode 100644 index 0000000..f2aa33c Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\345\244\215\344\271\240\346\217\220\347\272\262\344\271\213\350\256\276\350\256\241\346\250\241\345\274\217\346\200\273\347\273\223.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\346\225\264\347\220\206\345\244\247\345\256\266\347\232\204\350\257\276\345\220\216\344\275\234\344\270\232\347\255\224\346\241\210.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\346\225\264\347\220\206\345\244\247\345\256\266\347\232\204\350\257\276\345\220\216\344\275\234\344\270\232\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..5c37c18 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\346\225\264\347\220\206\345\244\247\345\256\266\347\232\204\350\257\276\345\220\216\344\275\234\344\270\232\347\255\224\346\241\210.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\346\236\266\346\236\204\345\244\215\344\271\240\346\217\220\347\272\262.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\346\236\266\346\236\204\345\244\215\344\271\240\346\217\220\347\272\262.docx" new file mode 100644 index 0000000..e44ce53 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\346\236\266\346\236\204\345\244\215\344\271\240\346\217\220\347\272\262.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\346\236\266\346\236\204\346\234\200\347\273\210\347\211\210\345\244\215\344\271\240\346\217\220\347\272\262\345\212\240\344\276\213\351\242\230\347\255\224\346\241\210.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\346\236\266\346\236\204\346\234\200\347\273\210\347\211\210\345\244\215\344\271\240\346\217\220\347\272\262\345\212\240\344\276\213\351\242\230\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..6729c95 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\346\236\266\346\236\204\346\234\200\347\273\210\347\211\210\345\244\215\344\271\240\346\217\220\347\272\262\345\212\240\344\276\213\351\242\230\347\255\224\346\241\210.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\347\237\263\346\234\233\345\215\216\346\217\220\347\272\262.png" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\347\237\263\346\234\233\345\215\216\346\217\220\347\272\262.png" new file mode 100644 index 0000000..3368d02 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\347\237\263\346\234\233\345\215\216\346\217\220\347\272\262.png" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 1.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 1.pptx" new file mode 100644 index 0000000..22ebb57 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 1.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 10.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 10.pptx" new file mode 100644 index 0000000..570b6a6 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 10.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 11.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 11.pptx" new file mode 100644 index 0000000..f42d52a Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 11.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 12.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 12.pptx" new file mode 100644 index 0000000..de4d219 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 12.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 13.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 13.pptx" new file mode 100644 index 0000000..e3b2e31 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 13.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 14.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 14.pptx" new file mode 100644 index 0000000..065b1d7 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 14.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 15.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 15.pptx" new file mode 100644 index 0000000..72c098d Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 15.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 16.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 16.pptx" new file mode 100644 index 0000000..6e925d7 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 16.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 17.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 17.pptx" new file mode 100644 index 0000000..34d2366 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 17.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 18.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 18.pptx" new file mode 100644 index 0000000..c4da7f4 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 18.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 19.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 19.pptx" new file mode 100644 index 0000000..d6c40a8 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 19.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 2.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 2.pptx" new file mode 100644 index 0000000..2f3222a Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 2.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 20.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 20.pptx" new file mode 100644 index 0000000..8e455aa Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 20.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 21.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 21.pptx" new file mode 100644 index 0000000..abbf0cf Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 21.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 22.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 22.pptx" new file mode 100644 index 0000000..c8d6c8c Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 22.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 23.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 23.pptx" new file mode 100644 index 0000000..f276c92 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 23.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 24.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 24.pptx" new file mode 100644 index 0000000..d5dd295 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 24.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 25.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 25.pptx" new file mode 100644 index 0000000..fa6298c Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 25.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 26.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 26.pptx" new file mode 100644 index 0000000..201fc6f Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 26.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 27.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 27.pptx" new file mode 100644 index 0000000..e42254b Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 27.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 28.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 28.pptx" new file mode 100644 index 0000000..6867ebd Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 28.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 3.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 3.pptx" new file mode 100644 index 0000000..e0720fc Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 3.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 4.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 4.pptx" new file mode 100644 index 0000000..306b62c Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 4.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 5.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 5.pptx" new file mode 100644 index 0000000..ad624a0 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 5.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 6.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 6.pptx" new file mode 100644 index 0000000..0e40bb5 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 6.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 7.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 7.pptx" new file mode 100644 index 0000000..5ca10ec Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 7.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 8.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 8.pptx" new file mode 100644 index 0000000..3b8b1ee Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 8.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 9.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 9.pptx" new file mode 100644 index 0000000..a60ffa9 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Bass_PPTs_9780133153125_REV_01092013/Chapter 9.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 1.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 1.pdf" new file mode 100644 index 0000000..503d8a6 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 1.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 13-14.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 13-14.pdf" new file mode 100644 index 0000000..d6b2dc2 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 13-14.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 15-17,19,21.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 15-17,19,21.pdf" new file mode 100644 index 0000000..4bb6f01 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 15-17,19,21.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 2-5.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 2-5.pdf" new file mode 100644 index 0000000..0d7425b Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 2-5.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 25.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 25.pdf" new file mode 100644 index 0000000..f95b66a Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 25.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 26.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 26.pdf" new file mode 100644 index 0000000..7fa2d59 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 26.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 6-8.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 6-8.pdf" new file mode 100644 index 0000000..4832d52 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 6-8.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 9-12.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 9-12.pdf" new file mode 100644 index 0000000..d761662 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Chapter 9-12.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Performance Modeling and Partitioning in MCC 2017.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Performance Modeling and Partitioning in MCC 2017.pdf" new file mode 100644 index 0000000..6caf3cb Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Performance Modeling and Partitioning in MCC 2017.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Project Assignment.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Project Assignment.pdf" new file mode 100644 index 0000000..0fd6610 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/Project Assignment.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/\345\244\215\344\271\240\346\217\220\347\272\262.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/\345\244\215\344\271\240\346\217\220\347\272\262.pdf" new file mode 100644 index 0000000..0d9f844 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\257\276\344\273\266/\345\244\215\344\271\240\346\217\220\347\272\262.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/sa-qa.txt" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/sa-qa.txt" new file mode 100644 index 0000000..d76e6d9 --- /dev/null +++ "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/sa-qa.txt" @@ -0,0 +1,106 @@ +ѡ +All of the following roles are stakeholder except: + +All of the following are important system attributes except: attractivity + +Which of the following are elements of a SA: All + +Which of the following is not a precondition for architectural review? finished design + +ATAM outputs include: + +Which of the following role will not played by the ATAM Evaluation Team? + +Context menu can be supported by which model? + + +What is The Architecture Business Cycle (ABC)? +ABC is cycle of influences, from the environment to the architecture and back to the environment + +List 5 architecture patterns/styles. + +How is an architectural pattern/style determined. +a set of component types +a set of connector types/interaction mechanisms +a topological layout of these components +a set of constraints on topology and behavior +һԪͣݴ洢ѧ +ָ໥ϵԪص˲֡ +һƣܵʽеĹǴתʽתΪԪأ +һ齻ƣ̵á¼ߡڰ壩ȷԪؽͨ˽Э + +Bass et al's classify all architecture structures into 3 main categories, what are them? + +List 5 architecture structures according to Bass et al. + +What is a quality attribute scenario? +a means to characterize system quality attributes, consists of 6 parts: +stimulus source +stimulus +environment +artifacts affected +system response +measurement of response +A unified way to express quality requirements + +How do you consider that functionality and quality attributes are orthogonal? + +Discuss the benefits of architectural reviews. + +When can architectural reviews begin? + +What is brainstorming? + +Explain risk points in architectural decision. + +Explain non-risk points in architectural decision. + +Explain sensitivity points in architectural decision. + +Explain trade-off points in architectural decision. + +List ATAM steps. + +What is a utility tree? + +broker vs SOA + + +How do the environment influences designs? +Stakeholder with different, sometimes conflicting concerns; +Business Environment and Organizational Structure (organizational structure, resources, assets, business strategies); +The Architect's Background and Experience + +How do Architecture Design Change the Business Environment? +They affect the structure of the organization. +They affect the business goals of the organization. +They affect customer requirements for new products. +They affect how future architectures are designed. + +What is availability? what tactics can be taken to used for availability? + +What is ADD? describe the steps to carry out ADD. +ATAMһֽйۺϷATAMܵһ׳ķ +ڸ÷УĿߺҪزһ׼ȷбԳķʽ +˵ʵÿȳصĹܾߡ +Ȼ󣬰ЩȷΪзվ߻޷վߣҵκδĵط + +ATAM4׶Σ +ڵ0׶Σϵ׼ȷϸڣԱʱ䣬ص㣻Сȡϲг˽ +1׶Σ׶Σ߲룬С鿪ʼϢռʱԼ1ܡ12жڣСһԷʽʽ˽⹹ܡ +2׶Σ׶Σڲ룬Լ2졣 +3׶Σ׶Σձ棬ܽ᣻1ܡ +׶εIJ裺 +1ATAMı߱ATAMʹ̣˽ɫ֡ +2ҵı߽ϵͳҵҪܡƣκصļúƣҵĿġҪڡصȡ +3ܵıϯʦܹСܹܣơģʽȡ +4ԹܷзࡣС֪ϢԹܷзࡣ +5ЧЧϸϢΪÿһ磨ߣУǰΪҪȣΪʵ׶ȣصڣߣߣij˴̼߱ӦҪؾͿˡ +6ܷСҪʦָ֧óùܷյ㡢Ȩ㡢е㡣 +һжڣ2׶οʼʱڿʼ룻ȻҪһATAMĽܣʹ˽еijɹ +7۲ȷȼ۲ȼ˽㷺ڵ뷨ù̿ܲµijʹáƱͶƱȷÿȼ˴ʵѶȡ +8ܷµĸȼijʦ͹ôġ +9ܽչʾý + +How to create a skeletal system? + diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\343\200\212\350\275\257\344\273\266\346\236\266\346\236\204\343\200\213\345\276\200\345\271\264\347\273\274\345\220\210\351\242\230.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\343\200\212\350\275\257\344\273\266\346\236\266\346\236\204\343\200\213\345\276\200\345\271\264\347\273\274\345\220\210\351\242\230.docx" new file mode 100644 index 0000000..4c59294 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\343\200\212\350\275\257\344\273\266\346\236\266\346\236\204\343\200\213\345\276\200\345\271\264\347\273\274\345\220\210\351\242\230.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\215\227\345\223\245\350\200\203\350\257\225\345\244\247\351\242\230.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\215\227\345\223\245\350\200\203\350\257\225\345\244\247\351\242\230.docx" new file mode 100644 index 0000000..485a2c3 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\215\227\345\223\245\350\200\203\350\257\225\345\244\247\351\242\230.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\217\202\350\200\203\347\255\224\346\241\210/\350\257\225\345\215\267B.doc" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\217\202\350\200\203\347\255\224\346\241\210/\350\257\225\345\215\267B.doc" new file mode 100644 index 0000000..f01c399 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\217\202\350\200\203\347\255\224\346\241\210/\350\257\225\345\215\267B.doc" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\217\202\350\200\203\347\255\224\346\241\210/\350\257\225\345\215\267B2.doc" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\217\202\350\200\203\347\255\224\346\241\210/\350\257\225\345\215\267B2.doc" new file mode 100644 index 0000000..8bf4127 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\217\202\350\200\203\347\255\224\346\241\210/\350\257\225\345\215\267B2.doc" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\217\202\350\200\203\347\255\224\346\241\210/\350\257\225\345\215\267B3.doc" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\217\202\350\200\203\347\255\224\346\241\210/\350\257\225\345\215\267B3.doc" new file mode 100644 index 0000000..967fb22 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\345\217\202\350\200\203\347\255\224\346\241\210/\350\257\225\345\215\267B3.doc" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\346\236\266\346\236\204\345\244\215\344\271\240\351\227\256\351\242\230.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\346\236\266\346\236\204\345\244\215\344\271\240\351\227\256\351\242\230.docx" new file mode 100644 index 0000000..da942b2 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/En/\346\236\266\346\236\204\345\244\215\344\271\240\351\227\256\351\242\230.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\215\227\345\223\245\345\244\215\344\271\240\350\257\276.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\215\227\345\223\245\345\244\215\344\271\240\350\257\276.docx" new file mode 100644 index 0000000..f27a5bd Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\215\227\345\223\245\345\244\215\344\271\240\350\257\276.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\215\227\345\223\245\345\244\215\344\271\240\350\257\2762.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\215\227\345\223\245\345\244\215\344\271\240\350\257\2762.docx" new file mode 100644 index 0000000..8d6d4d8 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\215\227\345\223\245\345\244\215\344\271\240\350\257\2762.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\244\215\344\271\240 2017.txt" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\244\215\344\271\240 2017.txt" new file mode 100644 index 0000000..0f3dd19 --- /dev/null +++ "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\244\215\344\271\240 2017.txt" @@ -0,0 +1,111 @@ +Chapter 1. What is Software Architecture? +⣺ϵṹܹĶ塢ܹģʽĸ +գϵͳļṹÿṹԪؼ֮ĹϵʲôÿṹЩĽṹصʲô +˽⣺ṹͼʲôϵõĽṹһЩ鷨 + +Chapter 2. Why is Software Architecture Important? +⣺13ɡ + +Chapter 3. The Many Contexts of Software Architecture +⣺Ŀڡҵܹʦְҵеϵṹܹ뻷໥Ӱ졣 +˽⣺ڡ + +Chapter 4. Understanding Quality Attributes +˽⣺ϵͳĹ󡣹ϵͳܹĹϵĹϵϵͳԼ +⣺ϵͳսĸ +գԳĸ;Ƶ7־ߡ + +Chapter 5. Availability +⣺Ը +˽⣺Թʽһ㳡 +գս嵥 + +Chapter 6. Interoperability +⣺Ը +˽⣺һ㳡 +գս嵥 + +Chapter 7. Modifiability +⣺޸Ը +˽⣺޸һ㳡 +գ޸ս޸嵥 + +Chapter 8. Performance +⣺ܸ +˽⣺ܹʽһ㳡 +գս嵥 + +Chapter 9. Security +⣺ȫԸ +˽⣺ȫһ㳡 +գȫսȫ嵥 + +Chapter 10. Testability +⣺ɲԸ +˽⣺ɲһ㳡 +գɲսɲ嵥 + +Chapter 11. Usability +⣺Ը +˽⣺һ㳡 +գս嵥 + +Chapter 12. Other Quality Attributes +˽⣺ɱԡֲԡɷֲԡԡɲԡƶԡɼԡƲȫԡܹԡҵԡϵͳԡISO/IEC FCD 25010 Ʒ׼ +⣺δδ֪ԡ + +Chapter 13. Patterns and Tactics +˽⣺ܹģʽܹ񣩵ĸ +գģʽģʽMVCģʽܵ-ģʽCSģʽP2PģʽSOAģʽģʽģʽMap-Reduceģʽ༶ģʽ +⣺ģʽսĹϵ + +Chapter 14. Quality Attribute Modeling and Analysis +˽⣺ģ͡ģ͵ijȡ +˽⣺˼ʵ顣Էԭ͡ģ档ʵ顣 + +Chapter 15. Architectures in Agile Projects +˽⣺ݿ˼׼ +⣺ݿ۵㡣 +˽⣺ݿܹ൵ݿܹݻ + +Chapter 16. Architecture and Requirements +⣺ASRASRļֻȡQAW +˽⣺ҵĿ곡 +⣺PALM +գЧ + +Chapter 17. Designing an Architecture +⣺Generate and TestܹƵļ鷨ʼսᡣ +գADD + + +Chapter 18. Documenting Software Architectures +⣺ܹ൵Ҫԡܹĵ;ߡ +˽⣺ѡͼб൵ +գζͼб൵ͼĵģ档ܹĵժҪϢζϵͳΪб൵ζԽб൵ + +Chapter 19. Architecture, Implementation, and Testing +⣺ʵܹһԡ +գܹǶ롣ܷģ淽ֹܹʴ +˽⣺ܹʦڲеĽɫ + +Chapter 20. Architecture Reconstruction and Conformance +˽⣺ܹعıĿġ +⣺ܹعĽ׶Ρÿ׶εķ + +Chapter 21. Architecture Evaluation +˽⣺ܹ3ʽص㡣ܹ +գATAMĿġԱ衢õķۡ + +Chapter 26. Architectures for the Cloud +˽⣺Ƽص㡢Ҫơ +գƼµԡ + + +ѡ⣨30% + +⣨30% +ܹ +⣨40% +Ծ⣬Գսܹģʽ + diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\244\215\344\271\2402017(En).txt" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\244\215\344\271\2402017(En).txt" new file mode 100644 index 0000000..cabf1fb --- /dev/null +++ "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\345\244\215\344\271\2402017(En).txt" @@ -0,0 +1,66 @@ +Chapter 1. The Architecture Business Cycle +1.1 Where Do Architectures Come From? +1.2 Software Processes and the Architecture Business Cycle +1.3 What Makes a "Good" Architecture? + +Chapter 2. What Is Software Architecture? +2.1 What Software Architecture Is and What It Isn't +2.4 Why Is Software Architecture Important? +2.5 Architectural Structures and Views + + +Chapter 4. Understanding Quality Attributes +4.1 Functionality and Architecture +4.2 Architecture and Quality Attributes +4.3 System Quality Attributes +4.4 Quality Attribute Scenarios in Practice +4.6 Business Qualities +4.7 Architecture Qualities + +Chapter 5. Achieving Qualities +5.1 Introducing Tactics +5.2 Availability Tactics +5.3 Modifiability Tactics +5.4 Performance Tactics +5.5 Security Tactics +5.6 Testability Tactics +5.7 Usability Tactics +5.8 Relationship of Tactics to Architectural Patterns +5.9 Architectural Patterns and Styles + + +Chapter 7. Designing the Architecture +7.1 Architecture in the Life Cycle +7.2 Designing the Architecture +7.3 Forming the Team Structure +7.4 Creating a Skeletal System + + +Chapter 11. The ATAM: A Comprehensive Method for Architecture Evaluation +11.1 Participants in the ATAM +11.2 Outputs of the ATAM +11.3 Phases of the ATAM + + +Chapter 14. Software Product Lines: Re-using Architectural Assets +14.1 Overview +14.2 What Makes Software Product Lines Work? +14.3 Scoping +14.4 Architectures for Product Lines + +ϰݣ + +ϵṹABC +ϵṹص㣭/ءΡֿ/ڰ +ϵṹͼ +ϵṹԼսص㣡 +ϵṹƵADD +ϵṹ䳣÷ATAM +Ʒ + + +ѡ⣨30% +⣨30% +⣨40% + + diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/1.jpg" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/1.jpg" new file mode 100644 index 0000000..b3530ea Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/1.jpg" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/2.jpg" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/2.jpg" new file mode 100644 index 0000000..87008fe Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/2.jpg" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/SA\350\200\203\347\202\271\357\274\210\345\205\250\357\274\211.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/SA\350\200\203\347\202\271\357\274\210\345\205\250\357\274\211.docx" new file mode 100644 index 0000000..01413c5 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/SA\350\200\203\347\202\271\357\274\210\345\205\250\357\274\211.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/sa\345\244\215\344\271\240.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/sa\345\244\215\344\271\240.docx" new file mode 100644 index 0000000..60db2da Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/sa\345\244\215\344\271\240.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\345\211\215\344\270\200\346\231\232.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\345\211\215\344\270\200\346\231\232.docx" new file mode 100644 index 0000000..316328f Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\345\211\215\344\270\200\346\231\232.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\345\244\215\344\271\2402015(\351\231\204\347\255\224\346\241\210).txt" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\345\244\215\344\271\2402015(\351\231\204\347\255\224\346\241\210).txt" new file mode 100644 index 0000000..87e0d66 --- /dev/null +++ "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\345\244\215\344\271\2402015(\351\231\204\347\255\224\346\241\210).txt" @@ -0,0 +1,229 @@ +Chapter 1. What is Software Architecture? +⣺ϵṹܹĶ塢ܹģʽĸ +գϵͳļṹÿṹԪؼ֮ĹϵʲôÿṹЩĽṹصʲô +˽⣺ṹͼʲôϵõĽṹһЩ鷨 + +Chapter 2. Why is Software Architecture Important? +⣺13ɡ + +Chapter 3. The Many Contexts of Software Architecture +⣺Ŀڡҵܹʦְҵеϵṹܹ뻷໥Ӱ졣 +˽⣺ڡ + +Chapter 4. Understanding Quality Attributes +˽⣺ϵͳĹ󡣹ϵͳܹĹϵĹϵϵͳԼ +⣺ϵͳսĸ +գԳĸ;Ƶ7־ߡ + +Գa common form to specify all quality attribute requirements.It has six parts:stimulus,stimulus source,response,response measure,environment,artifact +example general scenario for availability: +stimulus source:internal,external. +stimulus:crash,incorrect response +artifact:processors,communication channels +environment:normal,degraded operation +response:record,notify,be unavailable +response measure:repaire time +Ƶ7־ߣ +1.allocation of responsibilities +2.coordination model +3.data model +4.management of resources +5.mapping among architectural elements +6.binding time decisions +7.choice of technology + +Chapter 5. Availability +⣺Ը +˽⣺Թʽһ㳡 +գս嵥 + +ս +1.Detect faults +ping/echo,heartbeat, + + +Chapter 6. Interoperability +⣺Ը +˽⣺һ㳡 +գս嵥 + +Chapter 7. Modifiability +⣺޸Ը +˽⣺޸һ㳡 +գ޸ս޸嵥 + +޸ս +1.reduce size of a module +2.increase cohesion +3.reduce coupling(encapusulate,use an intermediary,restrict dependencies,refactor,abstract common service) +4.defer binding + +Chapter 8. Performance +⣺ܸ +˽⣺ܹʽһ㳡 +գս嵥 + +ս +1.control resource demand(manage sampling rate,limit event response,prioritize events,reduce overhead,bound execution times,increase resource efficiency) +2.manage resources(increase resources,introduce concurrency,maintain multiple copies of computations,maintain multiple copies of data,bound queue sizes ,schedule resources) + + +Chapter 9. Security +⣺ȫԸ +˽⣺ȫһ㳡 +գȫսȫ嵥 + +ȫԼ +1.detect attacks +(detect intrusion,detect service denial,verify message intergrity,detect message delay) +2.resist attacks +(identify actors,authenticate actors,authorize actors,limit access,limit exposure,separate entities,change default settings) +3.react to attacks +(revoke access,lock computer,inform actors) +4.recover from attacks +(see availability+audit) + +Chapter 10. Testability +⣺ɲԸ +˽⣺ɲһ㳡 +գɲսɲ嵥 + +ɲս +1.control and observe system state +(spcialized interfaces,record/playback,localize state storage,abstract data sources,sandbox,executable assertions) +2.limit complexity +(limit structural complexity,limit non-determinism) + +Chapter 11. Usability +⣺Ը +˽⣺һ㳡 +գս嵥 + +ս +1.support user initiative +(cancel,undo,pause/resume,aggregate) +2.support system initiative +(maintain task model,maintain system model,maintain user model) +ؼ/䣺 +usability comprises the following areas: +1.learning a system features +2.using a system efficiently +3.minimizing the impact of errors +4.adapting the system to user needs +5.increasing confidence and satisfaction + +Chapter 12. Other Quality Attributes +˽⣺ɱԡֲԡɷֲԡԡɲԡƶԡɼԡƲȫԡܹԡҵԡϵͳԡISO/IEC FCD 25010 Ʒ׼ +⣺δδ֪ԡ + +Chapter 13. Patterns and Tactics +˽⣺ܹģʽܹ񣩵ĸ +գģʽģʽMVCģʽܵ-ģʽCSģʽP2PģʽSOAģʽģʽģʽMap-Reduceģʽ༶ģʽ +⣺ģʽսĹϵ + +Chapter 14. Quality Attribute Modeling and Analysis +˽⣺ģ͡ģ͵ijȡ +˽⣺˼ʵ顣Էԭ͡ģ档ʵ顣 + +Chapter 15. Architectures in Agile Projects +˽⣺ݿ˼׼ +⣺ݿ۵㡣 +˽⣺ݿܹ൵ݿܹݻ + + + +Chapter 16. Architecture and Requirements +⣺ASRASRļֻȡQAW +˽⣺ҵĿ곡 +⣺PALM +գЧ + + + +Chapter 17. Designing an Architecture +⣺Generate and TestܹƵļ鷨ʼսᡣ +գADD + + + +Chapter 18. Documenting Software Architectures +⣺ܹ൵Ҫԡܹĵ;ߡ +˽⣺ѡͼб൵ +գζͼб൵ͼĵģ档ܹĵժҪϢζϵͳΪб൵ζԽб൵ + + + +Chapter 19. Architecture, Implementation, and Testing +⣺ʵܹһԡ +գܹǶ롣ܷģ淽ֹܹʴ +˽⣺ܹʦڲеĽɫ + +ܹǶ룺 +1.ܹǴʵֵͼ +1.1 ʵ֪߱ʵֵּܹ +1.2 ʵ߿ͨڴнעԼܹб൵ +1.3 Ŀ涨ô߲ԶѼܹʹϵ + +2.ܷ +1.ijһض֯һЩõ༯ +2.Աʹÿṩķ + +3.ģ巽 +ģdzԱṩصӦýӿڵĴ뼯 +ô +1.֤ƵΪ +2.ģֻҪһdebug +3.ӵIJԱɺ󽻸ȽϲԱ + +4.ֹܹʴ +1.ùǿܹԼ +2.ʴʱĵΪڣʣ²ָ +3.źĵʹͬʱ + +רҽɫ +1.test planning +2.test development +3.test interpretation +4.test harness creation + +Chapter 20. Architecture Reconstruction and Conformance +˽⣺ܹعıĿġ +⣺ܹعĽ׶Ρÿ׶εķ + +ܹعĽ׶Σ +1.Raw view extraction +2.database construction +3.view fusion +4.anrchitecture analysis + +Chapter 21. Architecture Evaluation +˽⣺ܹ3ʽص㡣ܹ +գATAMĿġԱ衢õķۡ + +Ŀģ +ATAM has been user for over a decade to evaluate software architectures in domians ranging from automotive to financial to defense. + +Ա +the evaluation team +project decision makers +architecture stakeholders + +裺 +1.present the ATAM +2.present business drivers +3.present architecture +4.identify architectural approaches +5.generate QA utility tree +6.analyze architectural approaches +7.brainstorm scenarios +8.analyze architectural approaches +9.present results + + + + +ѡ⣨30% +⣨30% +⣨40% + + diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\345\244\215\344\271\240\346\217\220\347\272\262\344\271\213\350\256\276\350\256\241\346\250\241\345\274\217\346\200\273\347\273\223.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\345\244\215\344\271\240\346\217\220\347\272\262\344\271\213\350\256\276\350\256\241\346\250\241\345\274\217\346\200\273\347\273\223.pdf" new file mode 100644 index 0000000..f2aa33c Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\345\244\215\344\271\240\346\217\220\347\272\262\344\271\213\350\256\276\350\256\241\346\250\241\345\274\217\346\200\273\347\273\223.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\346\236\266\346\236\204\345\244\215\344\271\240.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\346\236\266\346\236\204\345\244\215\344\271\240.docx" new file mode 100644 index 0000000..5ed6e6c Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\346\236\266\346\236\204\345\244\215\344\271\240.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\346\236\266\346\236\204\351\207\215\347\202\271.txt" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\346\236\266\346\236\204\351\207\215\347\202\271.txt" new file mode 100644 index 0000000..837de70 --- /dev/null +++ "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\346\236\266\346\236\204\351\207\215\347\202\271.txt" @@ -0,0 +1,23 @@ +1、心跳,shadow,spare(配件),voting,属于availability战术的是? +2、409页,一个表,她是ATM,output输出,ATM的输出是,步骤,输入,阶段?具体的表,具体的问题,架构决策?书里有场景的说明,从硬件故障里边,检测到故障恢复的场景。正常操作情况下,CPU出问题,可以加上时间,1年365天,持续的续航时间,6个9,定义这个场景。这样说明场景 +-》架构决策:软件体系结构架构决策的集合,非风险点,风险点,敏感点,权衡点,举例说明。 +-》例子,识别是availability。 +公有云平台的例子 +举例P2P的模式 +代理模式,黑板系统举个例子 +自然源是什么,模式 +画图,画成包图,部署图,类图等 +3、heartbeat是属于什么?recover +4、效用树,每个叶节点,场景标注优先级,这些质量属性场景当中,先执行哪一个? +5、架构决策点有哪些,架构决策分类?第7条技术选择是最难的。如何紧跟技术潮流?77页必考 +6、service是属于三种架构模式中的哪一个? +7、架构模式:211页,ERC,元素,关系,约束。broke元素,设计模式 +8、互操作性必考,可测试性必考。 +9、28章,27章不考 +10、26章云架构概念问题解答 +11、24章,22章不考 +12、21章重点考 +13、19章了解,只复习一二节,会考,20章重构了解,18章必考,17章重点,16章重点,15章(架构和敏捷,sweetspot:280页)14章必考,13章重点(参考清华大学课件,给个系统的例子,指出哪种架构风格;架构风格举例;架构风格解决方案,架构组成部分,每个组件的职责)12章必考架构只是单纯的满足单个质量属性,是没用的。设计就是找到各个质量属性的平衡点。 +14、13页图3.3涉众,以下不属于涉众的(利益攸关者) +15.选择题10题30分,问答题一条5分,6条30分,最后一题,四个小题,40分 + 16、UIS拒绝服务攻击,会影响哪种质量属性 \ No newline at end of file diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\347\253\240\350\212\202\346\217\220\347\272\262.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\347\253\240\350\212\202\346\217\220\347\272\262.docx" new file mode 100644 index 0000000..b23aa1b Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\347\253\240\350\212\202\346\217\220\347\272\262.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240.docx" new file mode 100644 index 0000000..df8d84f Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\351\207\215\347\202\271\345\244\215\344\271\240.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\351\207\215\347\202\271\345\244\215\344\271\240.docx" new file mode 100644 index 0000000..c4467ec Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\351\207\215\347\202\271\345\244\215\344\271\240.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\351\253\230\347\272\247\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\346\217\220\347\272\262\357\274\210\345\205\250\346\227\245\345\210\266\357\274\211(1).doc" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\351\253\230\347\272\247\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\346\217\220\347\272\262\357\274\210\345\205\250\346\227\245\345\210\266\357\274\211(1).doc" new file mode 100644 index 0000000..5481047 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\234\211\347\251\272\345\206\215\347\234\213\357\274\210=\351\261\274\351\276\231\346\267\267\346\235\202\357\274\211/\351\253\230\347\272\247\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\346\217\220\347\272\262\357\274\210\345\205\250\346\227\245\345\210\266\357\274\211(1).doc" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\236\227\345\215\232\345\244\215\344\271\240\346\214\207\345\214\2272.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\236\227\345\215\232\345\244\215\344\271\240\346\214\207\345\214\2272.docx" new file mode 100644 index 0000000..af62ffc Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\236\227\345\215\232\345\244\215\344\271\240\346\214\207\345\214\2272.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\236\266\346\236\204\345\244\215\344\271\240 2017.txt" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\236\266\346\236\204\345\244\215\344\271\240 2017.txt" new file mode 100644 index 0000000..0f3dd19 --- /dev/null +++ "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\236\266\346\236\204\345\244\215\344\271\240 2017.txt" @@ -0,0 +1,111 @@ +Chapter 1. What is Software Architecture? +⣺ϵṹܹĶ塢ܹģʽĸ +գϵͳļṹÿṹԪؼ֮ĹϵʲôÿṹЩĽṹصʲô +˽⣺ṹͼʲôϵõĽṹһЩ鷨 + +Chapter 2. Why is Software Architecture Important? +⣺13ɡ + +Chapter 3. The Many Contexts of Software Architecture +⣺Ŀڡҵܹʦְҵеϵṹܹ뻷໥Ӱ졣 +˽⣺ڡ + +Chapter 4. Understanding Quality Attributes +˽⣺ϵͳĹ󡣹ϵͳܹĹϵĹϵϵͳԼ +⣺ϵͳսĸ +գԳĸ;Ƶ7־ߡ + +Chapter 5. Availability +⣺Ը +˽⣺Թʽһ㳡 +գս嵥 + +Chapter 6. Interoperability +⣺Ը +˽⣺һ㳡 +գս嵥 + +Chapter 7. Modifiability +⣺޸Ը +˽⣺޸һ㳡 +գ޸ս޸嵥 + +Chapter 8. Performance +⣺ܸ +˽⣺ܹʽһ㳡 +գս嵥 + +Chapter 9. Security +⣺ȫԸ +˽⣺ȫһ㳡 +գȫսȫ嵥 + +Chapter 10. Testability +⣺ɲԸ +˽⣺ɲһ㳡 +գɲսɲ嵥 + +Chapter 11. Usability +⣺Ը +˽⣺һ㳡 +գս嵥 + +Chapter 12. Other Quality Attributes +˽⣺ɱԡֲԡɷֲԡԡɲԡƶԡɼԡƲȫԡܹԡҵԡϵͳԡISO/IEC FCD 25010 Ʒ׼ +⣺δδ֪ԡ + +Chapter 13. Patterns and Tactics +˽⣺ܹģʽܹ񣩵ĸ +գģʽģʽMVCģʽܵ-ģʽCSģʽP2PģʽSOAģʽģʽģʽMap-Reduceģʽ༶ģʽ +⣺ģʽսĹϵ + +Chapter 14. Quality Attribute Modeling and Analysis +˽⣺ģ͡ģ͵ijȡ +˽⣺˼ʵ顣Էԭ͡ģ档ʵ顣 + +Chapter 15. Architectures in Agile Projects +˽⣺ݿ˼׼ +⣺ݿ۵㡣 +˽⣺ݿܹ൵ݿܹݻ + +Chapter 16. Architecture and Requirements +⣺ASRASRļֻȡQAW +˽⣺ҵĿ곡 +⣺PALM +գЧ + +Chapter 17. Designing an Architecture +⣺Generate and TestܹƵļ鷨ʼսᡣ +գADD + + +Chapter 18. Documenting Software Architectures +⣺ܹ൵Ҫԡܹĵ;ߡ +˽⣺ѡͼб൵ +գζͼб൵ͼĵģ档ܹĵժҪϢζϵͳΪб൵ζԽб൵ + +Chapter 19. Architecture, Implementation, and Testing +⣺ʵܹһԡ +գܹǶ롣ܷģ淽ֹܹʴ +˽⣺ܹʦڲеĽɫ + +Chapter 20. Architecture Reconstruction and Conformance +˽⣺ܹعıĿġ +⣺ܹعĽ׶Ρÿ׶εķ + +Chapter 21. Architecture Evaluation +˽⣺ܹ3ʽص㡣ܹ +գATAMĿġԱ衢õķۡ + +Chapter 26. Architectures for the Cloud +˽⣺Ƽص㡢Ҫơ +գƼµԡ + + +ѡ⣨30% + +⣨30% +ܹ +⣨40% +Ծ⣬Գսܹģʽ + diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\236\266\346\236\204\346\234\200\347\273\210\347\211\210\345\244\215\344\271\240\346\217\220\347\272\262\345\212\240\344\276\213\351\242\230\347\255\224\346\241\210.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\236\266\346\236\204\346\234\200\347\273\210\347\211\210\345\244\215\344\271\240\346\217\220\347\272\262\345\212\240\344\276\213\351\242\230\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..6729c95 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\346\236\266\346\236\204\346\234\200\347\273\210\347\211\210\345\244\215\344\271\240\346\217\220\347\272\262\345\212\240\344\276\213\351\242\230\347\255\224\346\241\210.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\350\275\257\344\273\266\346\236\266\346\236\204.one" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\350\275\257\344\273\266\346\236\266\346\236\204.one" new file mode 100644 index 0000000..a2a6fd4 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204/\345\244\215\344\271\240/\350\275\257\344\273\266\346\236\266\346\236\204.one" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\346\200\273\347\273\223.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\346\200\273\347\273\223.docx" new file mode 100644 index 0000000..1ceb7d7 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\346\200\273\347\273\223.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\346\217\220\347\272\262\346\200\273\347\273\223.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\346\217\220\347\272\262\346\200\273\347\273\223.docx" new file mode 100644 index 0000000..39ac94c Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\346\217\220\347\272\262\346\200\273\347\273\223.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240.pdf" new file mode 100644 index 0000000..86fbe85 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/7\344\270\252\350\264\250\351\207\217\345\261\236\346\200\247\345\234\272\346\231\257\357\274\232.docx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/7\344\270\252\350\264\250\351\207\217\345\261\236\346\200\247\345\234\272\346\231\257\357\274\232.docx" new file mode 100644 index 0000000..fed6ba7 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/7\344\270\252\350\264\250\351\207\217\345\261\236\346\200\247\345\234\272\346\231\257\357\274\232.docx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\344\272\247\345\223\201\347\272\277.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\344\272\247\345\223\201\347\272\277.xmind" new file mode 100644 index 0000000..58dbb09 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\344\272\247\345\223\201\347\272\277.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\346\274\224\347\244\272\346\226\207\347\250\2771.pptx" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\346\274\224\347\244\272\346\226\207\347\250\2771.pptx" new file mode 100644 index 0000000..3f9db82 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\346\274\224\347\244\272\346\226\207\347\250\2771.pptx" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25412\347\253\240\357\274\215X\350\264\250\351\207\217\345\261\236\346\200\247.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25412\347\253\240\357\274\215X\350\264\250\351\207\217\345\261\236\346\200\247.xmind" new file mode 100644 index 0000000..c900c16 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25412\347\253\240\357\274\215X\350\264\250\351\207\217\345\261\236\346\200\247.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25413\347\253\240\357\274\215\346\236\266\346\236\204\347\255\226\347\225\245\345\222\214\346\250\241\345\274\217.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25413\347\253\240\357\274\215\346\236\266\346\236\204\347\255\226\347\225\245\345\222\214\346\250\241\345\274\217.xmind" new file mode 100644 index 0000000..39c2a29 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25413\347\253\240\357\274\215\346\236\266\346\236\204\347\255\226\347\225\245\345\222\214\346\250\241\345\274\217.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25415\347\253\240 \346\225\217\346\215\267\351\241\271\347\233\256\344\270\255\347\232\204\350\275\257\344\273\266\346\236\266\346\236\204.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25415\347\253\240 \346\225\217\346\215\267\351\241\271\347\233\256\344\270\255\347\232\204\350\275\257\344\273\266\346\236\266\346\236\204.xmind" new file mode 100644 index 0000000..7311a23 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25415\347\253\240 \346\225\217\346\215\267\351\241\271\347\233\256\344\270\255\347\232\204\350\275\257\344\273\266\346\236\266\346\236\204.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25416\347\253\240 \346\236\266\346\236\204\345\222\214\351\234\200\346\261\202.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25416\347\253\240 \346\236\266\346\236\204\345\222\214\351\234\200\346\261\202.xmind" new file mode 100644 index 0000000..b62f0fb Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25416\347\253\240 \346\236\266\346\236\204\345\222\214\351\234\200\346\261\202.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25417\347\253\240 \350\256\276\350\256\241\346\236\266\346\236\204.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25417\347\253\240 \350\256\276\350\256\241\346\236\266\346\236\204.xmind" new file mode 100644 index 0000000..fa7af79 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25417\347\253\240 \350\256\276\350\256\241\346\236\266\346\236\204.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25419\347\253\240 \346\236\266\346\236\204\343\200\201\345\256\236\347\216\260\344\270\216\346\265\213\350\257\225.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25419\347\253\240 \346\236\266\346\236\204\343\200\201\345\256\236\347\216\260\344\270\216\346\265\213\350\257\225.xmind" new file mode 100644 index 0000000..d440f74 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25419\347\253\240 \346\236\266\346\236\204\343\200\201\345\256\236\347\216\260\344\270\216\346\265\213\350\257\225.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25420\347\253\240 \350\275\257\344\273\266\351\207\215\346\236\204\345\222\214\344\270\200\350\207\264\346\200\247.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25420\347\253\240 \350\275\257\344\273\266\351\207\215\346\236\204\345\222\214\344\270\200\350\207\264\346\200\247.xmind" new file mode 100644 index 0000000..c6b22ab Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25420\347\253\240 \350\275\257\344\273\266\351\207\215\346\236\204\345\222\214\344\270\200\350\207\264\346\200\247.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25421\347\253\240 \346\236\266\346\236\204\350\257\204\344\274\260 Architecture Evaluation.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25421\347\253\240 \346\236\266\346\236\204\350\257\204\344\274\260 Architecture Evaluation.xmind" new file mode 100644 index 0000000..ddc1f40 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\25421\347\253\240 \346\236\266\346\236\204\350\257\204\344\274\260 Architecture Evaluation.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\254\344\270\200\347\253\240.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\254\344\270\200\347\253\240.xmind" new file mode 100644 index 0000000..72ace01 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\347\254\254\344\270\200\347\253\240.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240\347\255\226\347\225\245\347\254\254\344\272\214\347\211\210.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240\347\255\226\347\225\245\347\254\254\344\272\214\347\211\210.xmind" new file mode 100644 index 0000000..f586114 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240\347\255\226\347\225\245\347\254\254\344\272\214\347\211\210.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240\351\207\215\347\202\271.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240\351\207\215\347\202\271.xmind" new file mode 100644 index 0000000..5981694 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240\351\207\215\347\202\271.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\347\254\254\344\270\211\347\253\240.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\347\254\254\344\270\211\347\253\240.xmind" new file mode 100644 index 0000000..f034cd5 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\347\254\254\344\270\211\347\253\240.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\347\254\254\344\272\214\347\253\240.xmind" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\347\254\254\344\272\214\347\253\240.xmind" new file mode 100644 index 0000000..7bf423e Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\244\215\344\271\240_\351\233\267\346\230\266/\350\275\257\344\273\266\346\236\266\346\236\204\347\254\254\344\272\214\347\253\240.xmind" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\270\210\345\272\224\350\257\245\347\237\245\351\201\223\347\232\20497\344\273\266\344\272\213.pdf" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\270\210\345\272\224\350\257\245\347\237\245\351\201\223\347\232\20497\344\273\266\344\272\213.pdf" new file mode 100644 index 0000000..bf7d68d Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\350\275\257\344\273\266\346\236\266\346\236\204\345\270\210\345\272\224\350\257\245\347\237\245\351\201\223\347\232\20497\344\273\266\344\272\213.pdf" differ diff --git "a/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\351\253\230\347\272\247\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\346\217\220\347\272\262\357\274\210\345\205\250\346\227\245\345\210\266\357\274\211(1).doc" "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\351\253\230\347\272\247\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\346\217\220\347\272\262\357\274\210\345\205\250\346\227\245\345\210\266\357\274\211(1).doc" new file mode 100644 index 0000000..5481047 Binary files /dev/null and "b/\350\275\257\344\273\266\344\275\223\347\263\273\346\236\266\346\236\204/\351\253\230\347\272\247\350\275\257\344\273\266\344\275\223\347\263\273\347\273\223\346\236\204\345\244\215\344\271\240\346\217\220\347\272\262\357\274\210\345\205\250\346\227\245\345\210\266\357\274\211(1).doc" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/readme.md" "b/\350\275\257\344\273\266\346\265\213\350\257\225/readme.md" new file mode 100644 index 0000000..d63c19b Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/readme.md" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\344\275\234\344\270\2321\347\255\224.docx" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\344\275\234\344\270\2321\347\255\224.docx" new file mode 100644 index 0000000..550b3a3 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\344\275\234\344\270\2321\347\255\224.docx" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\344\275\234\344\270\2322\347\255\224.docx" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\344\275\234\344\270\2322\347\255\224.docx" new file mode 100644 index 0000000..f032dd5 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\344\275\234\344\270\2322\347\255\224.docx" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\344\275\234\344\270\2323\347\255\224 v2.docx" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\344\275\234\344\270\2323\347\255\224 v2.docx" new file mode 100644 index 0000000..70998a2 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\344\275\234\344\270\2323\347\255\224 v2.docx" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\347\231\275\347\233\222\346\265\213\350\257\225\344\275\234\344\270\232-2019.txt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\347\231\275\347\233\222\346\265\213\350\257\225\344\275\234\344\270\232-2019.txt" new file mode 100644 index 0000000..183e8b8 --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\347\231\275\347\233\222\346\265\213\350\257\225\344\275\234\344\270\232-2019.txt" @@ -0,0 +1,20 @@ +׺вҵ-2019 + +scanf("%d %d",&x, &y); +if (y < 0 and x>0) + pow = -y; +else + pow = y; +z = 1.0; +while (pow != 0) { + z = z * x; + pow = pow - 1; +} +if (y < 0 and z>0) + z = 1.0 / z; +printf ("%f",z); + +жǷ·ɲơ +Ҫ󻭳ͼͿͼ + +ֹڣ2019-4-12 diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\351\273\221\347\233\222\346\265\213\350\257\225-\345\210\244\345\256\232\350\241\250\346\265\213\350\257\225.txt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\351\273\221\347\233\222\346\265\213\350\257\225-\345\210\244\345\256\232\350\241\250\346\265\213\350\257\225.txt" new file mode 100644 index 0000000..b885e62 --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\351\273\221\347\233\222\346\265\213\350\257\225-\345\210\244\345\256\232\350\241\250\346\265\213\350\257\225.txt" @@ -0,0 +1,7 @@ +ںв-ж + +Գ +һ3ֵһε3ߵijֵҪӡϢ˵һΡǵġǵȱߵġ + жͼɸóIJơ + +ֹڣ2019-3-28 diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\351\273\221\347\233\222\346\265\213\350\257\225\344\275\234\344\270\232-\345\234\272\346\231\257\346\263\225\346\265\213\350\257\225.txt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\351\273\221\347\233\222\346\265\213\350\257\225\344\275\234\344\270\232-\345\234\272\346\231\257\346\263\225\346\265\213\350\257\225.txt" new file mode 100644 index 0000000..ba348ec --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\344\275\234\344\270\232/\351\273\221\347\233\222\346\265\213\350\257\225\344\275\234\344\270\232-\345\234\272\346\231\257\346\263\225\346\265\213\350\257\225.txt" @@ -0,0 +1,5 @@ +黑盒测试作业-场景法测试 + +用场景法完成ATM的取款功能的测试用例设计。 + +截止日期:2019-4-1 diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/1.loadrunner\346\274\224\347\244\272\350\247\206\351\242\221.avi" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/1.loadrunner\346\274\224\347\244\272\350\247\206\351\242\221.avi" new file mode 100644 index 0000000..818d3f1 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/1.loadrunner\346\274\224\347\244\272\350\247\206\351\242\221.avi" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/1.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\345\210\235\346\255\245\346\200\247\350\203\275\346\265\213\350\257\225.doc" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/1.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\345\210\235\346\255\245\346\200\247\350\203\275\346\265\213\350\257\225.doc" new file mode 100644 index 0000000..1ff59ed Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/1.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\345\210\235\346\255\245\346\200\247\350\203\275\346\265\213\350\257\225.doc" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/2.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\345\212\237\350\203\275\346\265\213\350\257\225201803.doc" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/2.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\345\212\237\350\203\275\346\265\213\350\257\225201803.doc" new file mode 100644 index 0000000..f0914ab Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/2.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\345\212\237\350\203\275\346\265\213\350\257\225201803.doc" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/3.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\345\215\225\345\205\203\346\265\213\350\257\225\345\256\236\351\252\214\346\214\207\345\257\274160418.doc" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/3.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\345\215\225\345\205\203\346\265\213\350\257\225\345\256\236\351\252\214\346\214\207\345\257\274160418.doc" new file mode 100644 index 0000000..53a90d7 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/3.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\345\215\225\345\205\203\346\265\213\350\257\225\345\256\236\351\252\214\346\214\207\345\257\274160418.doc" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/4.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\347\250\263\345\256\232\346\200\247\345\222\214\347\240\264\345\235\217\346\200\247\345\216\213\345\212\233\346\265\213\350\257\225-2018.doc" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/4.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\347\250\263\345\256\232\346\200\247\345\222\214\347\240\264\345\235\217\346\200\247\345\216\213\345\212\233\346\265\213\350\257\225-2018.doc" new file mode 100644 index 0000000..2542e56 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/4.\350\275\257\344\273\266\346\265\213\350\257\225\350\257\276\347\250\213\345\256\236\351\252\214\342\200\224\342\200\224\347\250\263\345\256\232\346\200\247\345\222\214\347\240\264\345\235\217\346\200\247\345\216\213\345\212\233\346\265\213\350\257\225-2018.doc" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/BigDecimal.java" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/BigDecimal.java" new file mode 100644 index 0000000..8221e23 --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/BigDecimal.java" @@ -0,0 +1,5254 @@ +/* + * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +/* + * Portions Copyright IBM Corporation, 2001. All Rights Reserved. + */ + +package ut.math; + +import java.util.Arrays; +import static java.math.BigInteger.LONG_MASK; + +/** + * Immutable, arbitrary-precision signed decimal numbers. A + * {@code BigDecimal} consists of an arbitrary precision integer + * unscaled value and a 32-bit integer scale. If zero + * or positive, the scale is the number of digits to the right of the + * decimal point. If negative, the unscaled value of the number is + * multiplied by ten to the power of the negation of the scale. The + * value of the number represented by the {@code BigDecimal} is + * therefore (unscaledValue × 10-scale). + * + *

The {@code BigDecimal} class provides operations for + * arithmetic, scale manipulation, rounding, comparison, hashing, and + * format conversion. The {@link #toString} method provides a + * canonical representation of a {@code BigDecimal}. + * + *

The {@code BigDecimal} class gives its user complete control + * over rounding behavior. If no rounding mode is specified and the + * exact result cannot be represented, an exception is thrown; + * otherwise, calculations can be carried out to a chosen precision + * and rounding mode by supplying an appropriate {@link MathContext} + * object to the operation. In either case, eight rounding + * modes are provided for the control of rounding. Using the + * integer fields in this class (such as {@link #ROUND_HALF_UP}) to + * represent rounding mode is largely obsolete; the enumeration values + * of the {@code RoundingMode} {@code enum}, (such as {@link + * RoundingMode#HALF_UP}) should be used instead. + * + *

When a {@code MathContext} object is supplied with a precision + * setting of 0 (for example, {@link MathContext#UNLIMITED}), + * arithmetic operations are exact, as are the arithmetic methods + * which take no {@code MathContext} object. (This is the only + * behavior that was supported in releases prior to 5.) As a + * corollary of computing the exact result, the rounding mode setting + * of a {@code MathContext} object with a precision setting of 0 is + * not used and thus irrelevant. In the case of divide, the exact + * quotient could have an infinitely long decimal expansion; for + * example, 1 divided by 3. If the quotient has a nonterminating + * decimal expansion and the operation is specified to return an exact + * result, an {@code ArithmeticException} is thrown. Otherwise, the + * exact result of the division is returned, as done for other + * operations. + * + *

When the precision setting is not 0, the rules of + * {@code BigDecimal} arithmetic are broadly compatible with selected + * modes of operation of the arithmetic defined in ANSI X3.274-1996 + * and ANSI X3.274-1996/AM 1-2000 (section 7.4). Unlike those + * standards, {@code BigDecimal} includes many rounding modes, which + * were mandatory for division in {@code BigDecimal} releases prior + * to 5. Any conflicts between these ANSI standards and the + * {@code BigDecimal} specification are resolved in favor of + * {@code BigDecimal}. + * + *

Since the same numerical value can have different + * representations (with different scales), the rules of arithmetic + * and rounding must specify both the numerical result and the scale + * used in the result's representation. + * + * + *

In general the rounding modes and precision setting determine + * how operations return results with a limited number of digits when + * the exact result has more digits (perhaps infinitely many in the + * case of division) than the number of digits returned. + * + * First, the + * total number of digits to return is specified by the + * {@code MathContext}'s {@code precision} setting; this determines + * the result's precision. The digit count starts from the + * leftmost nonzero digit of the exact result. The rounding mode + * determines how any discarded trailing digits affect the returned + * result. + * + *

For all arithmetic operators , the operation is carried out as + * though an exact intermediate result were first calculated and then + * rounded to the number of digits specified by the precision setting + * (if necessary), using the selected rounding mode. If the exact + * result is not returned, some digit positions of the exact result + * are discarded. When rounding increases the magnitude of the + * returned result, it is possible for a new digit position to be + * created by a carry propagating to a leading {@literal "9"} digit. + * For example, rounding the value 999.9 to three digits rounding up + * would be numerically equal to one thousand, represented as + * 100×101. In such cases, the new {@literal "1"} is + * the leading digit position of the returned result. + * + *

Besides a logical exact result, each arithmetic operation has a + * preferred scale for representing a result. The preferred + * scale for each operation is listed in the table below. + * + * + * + * + * + * + * + * + *
Preferred Scales for Results of Arithmetic Operations + *
OperationPreferred Scale of Result
Addmax(addend.scale(), augend.scale())
Subtractmax(minuend.scale(), subtrahend.scale())
Multiplymultiplier.scale() + multiplicand.scale()
Dividedividend.scale() - divisor.scale()
+ * + * These scales are the ones used by the methods which return exact + * arithmetic results; except that an exact divide may have to use a + * larger scale since the exact result may have more digits. For + * example, {@code 1/32} is {@code 0.03125}. + * + *

Before rounding, the scale of the logical exact intermediate + * result is the preferred scale for that operation. If the exact + * numerical result cannot be represented in {@code precision} + * digits, rounding selects the set of digits to return and the scale + * of the result is reduced from the scale of the intermediate result + * to the least scale which can represent the {@code precision} + * digits actually returned. If the exact result can be represented + * with at most {@code precision} digits, the representation + * of the result with the scale closest to the preferred scale is + * returned. In particular, an exactly representable quotient may be + * represented in fewer than {@code precision} digits by removing + * trailing zeros and decreasing the scale. For example, rounding to + * three digits using the {@linkplain RoundingMode#FLOOR floor} + * rounding mode,
+ * + * {@code 19/100 = 0.19 // integer=19, scale=2}
+ * + * but
+ * + * {@code 21/110 = 0.190 // integer=190, scale=3}
+ * + *

Note that for add, subtract, and multiply, the reduction in + * scale will equal the number of digit positions of the exact result + * which are discarded. If the rounding causes a carry propagation to + * create a new high-order digit position, an additional digit of the + * result is discarded than when no new digit position is created. + * + *

Other methods may have slightly different rounding semantics. + * For example, the result of the {@code pow} method using the + * {@linkplain #pow(int, MathContext) specified algorithm} can + * occasionally differ from the rounded mathematical result by more + * than one unit in the last place, one {@linkplain #ulp() ulp}. + * + *

Two types of operations are provided for manipulating the scale + * of a {@code BigDecimal}: scaling/rounding operations and decimal + * point motion operations. Scaling/rounding operations ({@link + * #setScale setScale} and {@link #round round}) return a + * {@code BigDecimal} whose value is approximately (or exactly) equal + * to that of the operand, but whose scale or precision is the + * specified value; that is, they increase or decrease the precision + * of the stored number with minimal effect on its value. Decimal + * point motion operations ({@link #movePointLeft movePointLeft} and + * {@link #movePointRight movePointRight}) return a + * {@code BigDecimal} created from the operand by moving the decimal + * point a specified distance in the specified direction. + * + *

For the sake of brevity and clarity, pseudo-code is used + * throughout the descriptions of {@code BigDecimal} methods. The + * pseudo-code expression {@code (i + j)} is shorthand for "a + * {@code BigDecimal} whose value is that of the {@code BigDecimal} + * {@code i} added to that of the {@code BigDecimal} + * {@code j}." The pseudo-code expression {@code (i == j)} is + * shorthand for "{@code true} if and only if the + * {@code BigDecimal} {@code i} represents the same value as the + * {@code BigDecimal} {@code j}." Other pseudo-code expressions + * are interpreted similarly. Square brackets are used to represent + * the particular {@code BigInteger} and scale pair defining a + * {@code BigDecimal} value; for example [19, 2] is the + * {@code BigDecimal} numerically equal to 0.19 having a scale of 2. + * + *

Note: care should be exercised if {@code BigDecimal} objects + * are used as keys in a {@link java.util.SortedMap SortedMap} or + * elements in a {@link java.util.SortedSet SortedSet} since + * {@code BigDecimal}'s natural ordering is inconsistent + * with equals. See {@link Comparable}, {@link + * java.util.SortedMap} or {@link java.util.SortedSet} for more + * information. + * + *

All methods and constructors for this class throw + * {@code NullPointerException} when passed a {@code null} object + * reference for any input parameter. + * + * @see BigInteger + * @see MathContext + * @see RoundingMode + * @see java.util.SortedMap + * @see java.util.SortedSet + * @author Josh Bloch + * @author Mike Cowlishaw + * @author Joseph D. Darcy + * @author Sergey V. Kuksenko + */ +public class BigDecimal extends Number implements Comparable { + /** + * The unscaled value of this BigDecimal, as returned by {@link + * #unscaledValue}. + * + * @serial + * @see #unscaledValue + */ + private final BigInteger intVal; + + /** + * The scale of this BigDecimal, as returned by {@link #scale}. + * + * @serial + * @see #scale + */ + private final int scale; // Note: this may have any value, so + // calculations must be done in longs + + /** + * The number of decimal digits in this BigDecimal, or 0 if the + * number of digits are not known (lookaside information). If + * nonzero, the value is guaranteed correct. Use the precision() + * method to obtain and set the value if it might be 0. This + * field is mutable until set nonzero. + * + * @since 1.5 + */ + private transient int precision; + + /** + * Used to store the canonical string representation, if computed. + */ + private transient String stringCache; + + /** + * Sentinel value for {@link #intCompact} indicating the + * significand information is only available from {@code intVal}. + */ + static final long INFLATED = Long.MIN_VALUE; + + private static final BigInteger INFLATED_BIGINT = BigInteger.valueOf(INFLATED); + + /** + * If the absolute value of the significand of this BigDecimal is + * less than or equal to {@code Long.MAX_VALUE}, the value can be + * compactly stored in this field and used in computations. + */ + private final transient long intCompact; + + // All 18-digit base ten strings fit into a long; not all 19-digit + // strings will + private static final int MAX_COMPACT_DIGITS = 18; + + /* Appease the serialization gods */ + private static final long serialVersionUID = 6108874887143696463L; + + private static final ThreadLocal + threadLocalStringBuilderHelper = new ThreadLocal() { + @Override + protected StringBuilderHelper initialValue() { + return new StringBuilderHelper(); + } + }; + + // Cache of common small BigDecimal values. + private static final BigDecimal zeroThroughTen[] = { + new BigDecimal(BigInteger.ZERO, 0, 0, 1), + new BigDecimal(BigInteger.ONE, 1, 0, 1), + new BigDecimal(BigInteger.valueOf(2), 2, 0, 1), + new BigDecimal(BigInteger.valueOf(3), 3, 0, 1), + new BigDecimal(BigInteger.valueOf(4), 4, 0, 1), + new BigDecimal(BigInteger.valueOf(5), 5, 0, 1), + new BigDecimal(BigInteger.valueOf(6), 6, 0, 1), + new BigDecimal(BigInteger.valueOf(7), 7, 0, 1), + new BigDecimal(BigInteger.valueOf(8), 8, 0, 1), + new BigDecimal(BigInteger.valueOf(9), 9, 0, 1), + new BigDecimal(BigInteger.TEN, 10, 0, 2), + }; + + // Cache of zero scaled by 0 - 15 + private static final BigDecimal[] ZERO_SCALED_BY = { + zeroThroughTen[0], + new BigDecimal(BigInteger.ZERO, 0, 1, 1), + new BigDecimal(BigInteger.ZERO, 0, 2, 1), + new BigDecimal(BigInteger.ZERO, 0, 3, 1), + new BigDecimal(BigInteger.ZERO, 0, 4, 1), + new BigDecimal(BigInteger.ZERO, 0, 5, 1), + new BigDecimal(BigInteger.ZERO, 0, 6, 1), + new BigDecimal(BigInteger.ZERO, 0, 7, 1), + new BigDecimal(BigInteger.ZERO, 0, 8, 1), + new BigDecimal(BigInteger.ZERO, 0, 9, 1), + new BigDecimal(BigInteger.ZERO, 0, 10, 1), + new BigDecimal(BigInteger.ZERO, 0, 11, 1), + new BigDecimal(BigInteger.ZERO, 0, 12, 1), + new BigDecimal(BigInteger.ZERO, 0, 13, 1), + new BigDecimal(BigInteger.ZERO, 0, 14, 1), + new BigDecimal(BigInteger.ZERO, 0, 15, 1), + }; + + // Half of Long.MIN_VALUE & Long.MAX_VALUE. + private static final long HALF_LONG_MAX_VALUE = Long.MAX_VALUE / 2; + private static final long HALF_LONG_MIN_VALUE = Long.MIN_VALUE / 2; + + // Constants + /** + * The value 0, with a scale of 0. + * + * @since 1.5 + */ + public static final BigDecimal ZERO = + zeroThroughTen[0]; + + /** + * The value 1, with a scale of 0. + * + * @since 1.5 + */ + public static final BigDecimal ONE = + zeroThroughTen[1]; + + /** + * The value 10, with a scale of 0. + * + * @since 1.5 + */ + public static final BigDecimal TEN = + zeroThroughTen[10]; + + // Constructors + + /** + * Trusted package private constructor. + * Trusted simply means if val is INFLATED, intVal could not be null and + * if intVal is null, val could not be INFLATED. + */ + BigDecimal(BigInteger intVal, long val, int scale, int prec) { + this.scale = scale; + this.precision = prec; + this.intCompact = val; + this.intVal = intVal; + } + + /** + * Translates a character array representation of a + * {@code BigDecimal} into a {@code BigDecimal}, accepting the + * same sequence of characters as the {@link #BigDecimal(String)} + * constructor, while allowing a sub-array to be specified. + * + *

Note that if the sequence of characters is already available + * within a character array, using this constructor is faster than + * converting the {@code char} array to string and using the + * {@code BigDecimal(String)} constructor . + * + * @param in {@code char} array that is the source of characters. + * @param offset first character in the array to inspect. + * @param len number of characters to consider. + * @throws NumberFormatException if {@code in} is not a valid + * representation of a {@code BigDecimal} or the defined subarray + * is not wholly within {@code in}. + * @since 1.5 + */ + public BigDecimal(char[] in, int offset, int len) { + this(in,offset,len,MathContext.UNLIMITED); + } + + /** + * Translates a character array representation of a + * {@code BigDecimal} into a {@code BigDecimal}, accepting the + * same sequence of characters as the {@link #BigDecimal(String)} + * constructor, while allowing a sub-array to be specified and + * with rounding according to the context settings. + * + *

Note that if the sequence of characters is already available + * within a character array, using this constructor is faster than + * converting the {@code char} array to string and using the + * {@code BigDecimal(String)} constructor . + * + * @param in {@code char} array that is the source of characters. + * @param offset first character in the array to inspect. + * @param len number of characters to consider.. + * @param mc the context to use. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @throws NumberFormatException if {@code in} is not a valid + * representation of a {@code BigDecimal} or the defined subarray + * is not wholly within {@code in}. + * @since 1.5 + */ + public BigDecimal(char[] in, int offset, int len, MathContext mc) { + // protect against huge length. + if (offset + len > in.length || offset < 0) + throw new NumberFormatException("Bad offset or len arguments for char[] input."); + // This is the primary string to BigDecimal constructor; all + // incoming strings end up here; it uses explicit (inline) + // parsing for speed and generates at most one intermediate + // (temporary) object (a char[] array) for non-compact case. + + // Use locals for all fields values until completion + int prec = 0; // record precision value + int scl = 0; // record scale value + long rs = 0; // the compact value in long + BigInteger rb = null; // the inflated value in BigInteger + // use array bounds checking to handle too-long, len == 0, + // bad offset, etc. + try { + // handle the sign + boolean isneg = false; // assume positive + if (in[offset] == '-') { + isneg = true; // leading minus means negative + offset++; + len--; + } else if (in[offset] == '+') { // leading + allowed + offset++; + len--; + } + + // should now be at numeric part of the significand + boolean dot = false; // true when there is a '.' + long exp = 0; // exponent + char c; // current character + boolean isCompact = (len <= MAX_COMPACT_DIGITS); + // integer significand array & idx is the index to it. The array + // is ONLY used when we can't use a compact representation. + int idx = 0; + if (isCompact) { + // First compact case, we need not to preserve the character + // and we can just compute the value in place. + for (; len > 0; offset++, len--) { + c = in[offset]; + if ((c == '0')) { // have zero + if (prec == 0) + prec = 1; + else if (rs != 0) { + rs *= 10; + ++prec; + } // else digit is a redundant leading zero + if (dot) + ++scl; + } else if ((c >= '1' && c <= '9')) { // have digit + int digit = c - '0'; + if (prec != 1 || rs != 0) + ++prec; // prec unchanged if preceded by 0s + rs = rs * 10 + digit; + if (dot) + ++scl; + } else if (c == '.') { // have dot + // have dot + if (dot) // two dots + throw new NumberFormatException(); + dot = true; + } else if (Character.isDigit(c)) { // slow path + int digit = Character.digit(c, 10); + if (digit == 0) { + if (prec == 0) + prec = 1; + else if (rs != 0) { + rs *= 10; + ++prec; + } // else digit is a redundant leading zero + } else { + if (prec != 1 || rs != 0) + ++prec; // prec unchanged if preceded by 0s + rs = rs * 10 + digit; + } + if (dot) + ++scl; + } else if ((c == 'e') || (c == 'E')) { + exp = parseExp(in, offset, len); + // Next test is required for backwards compatibility + if ((int) exp != exp) // overflow + throw new NumberFormatException(); + break; // [saves a test] + } else { + throw new NumberFormatException(); + } + } + if (prec == 0) // no digits found + throw new NumberFormatException(); + // Adjust scale if exp is not zero. + if (exp != 0) { // had significant exponent + scl = adjustScale(scl, exp); + } + rs = isneg ? -rs : rs; + int mcp = mc.precision; + int drop = prec - mcp; // prec has range [1, MAX_INT], mcp has range [0, MAX_INT]; + // therefore, this subtract cannot overflow + if (mcp > 0 && drop > 0) { // do rounding + while (drop > 0) { + scl = checkScaleNonZero((long) scl - drop); + rs = divideAndRound(rs, LONG_TEN_POWERS_TABLE[drop], mc.roundingMode.oldMode); + prec = longDigitLength(rs); + drop = prec - mcp; + } + } + } else { + char coeff[] = new char[len]; + for (; len > 0; offset++, len--) { + c = in[offset]; + // have digit + if ((c >= '0' && c <= '9') || Character.isDigit(c)) { + // First compact case, we need not to preserve the character + // and we can just compute the value in place. + if (c == '0' || Character.digit(c, 10) == 0) { + if (prec == 0) { + coeff[idx] = c; + prec = 1; + } else if (idx != 0) { + coeff[idx++] = c; + ++prec; + } // else c must be a redundant leading zero + } else { + if (prec != 1 || idx != 0) + ++prec; // prec unchanged if preceded by 0s + coeff[idx++] = c; + } + if (dot) + ++scl; + continue; + } + // have dot + if (c == '.') { + // have dot + if (dot) // two dots + throw new NumberFormatException(); + dot = true; + continue; + } + // exponent expected + if ((c != 'e') && (c != 'E')) + throw new NumberFormatException(); + exp = parseExp(in, offset, len); + // Next test is required for backwards compatibility + if ((int) exp != exp) // overflow + throw new NumberFormatException(); + break; // [saves a test] + } + // here when no characters left + if (prec == 0) // no digits found + throw new NumberFormatException(); + // Adjust scale if exp is not zero. + if (exp != 0) { // had significant exponent + scl = adjustScale(scl, exp); + } + // Remove leading zeros from precision (digits count) + rb = new BigInteger(coeff, isneg ? -1 : 1, prec); + rs = compactValFor(rb); + int mcp = mc.precision; + if (mcp > 0 && (prec > mcp)) { + if (rs == INFLATED) { + int drop = prec - mcp; + while (drop > 0) { + scl = checkScaleNonZero((long) scl - drop); + rb = divideAndRoundByTenPow(rb, drop, mc.roundingMode.oldMode); + rs = compactValFor(rb); + if (rs != INFLATED) { + prec = longDigitLength(rs); + break; + } + prec = bigDigitLength(rb); + drop = prec - mcp; + } + } + if (rs != INFLATED) { + int drop = prec - mcp; + while (drop > 0) { + scl = checkScaleNonZero((long) scl - drop); + rs = divideAndRound(rs, LONG_TEN_POWERS_TABLE[drop], mc.roundingMode.oldMode); + prec = longDigitLength(rs); + drop = prec - mcp; + } + rb = null; + } + } + } + } catch (ArrayIndexOutOfBoundsException e) { + throw new NumberFormatException(); + } catch (NegativeArraySizeException e) { + throw new NumberFormatException(); + } + this.scale = scl; + this.precision = prec; + this.intCompact = rs; + this.intVal = rb; + } + + private int adjustScale(int scl, long exp) { + long adjustedScale = scl - exp; + if (adjustedScale > Integer.MAX_VALUE || adjustedScale < Integer.MIN_VALUE) + throw new NumberFormatException("Scale out of range."); + scl = (int) adjustedScale; + return scl; + } + + /* + * parse exponent + */ + private static long parseExp(char[] in, int offset, int len){ + long exp = 0; + offset++; + char c = in[offset]; + len--; + boolean negexp = (c == '-'); + // optional sign + if (negexp || c == '+') { + offset++; + c = in[offset]; + len--; + } + if (len <= 0) // no exponent digits + throw new NumberFormatException(); + // skip leading zeros in the exponent + while (len > 10 && (c=='0' || (Character.digit(c, 10) == 0))) { + offset++; + c = in[offset]; + len--; + } + if (len > 10) // too many nonzero exponent digits + throw new NumberFormatException(); + // c now holds first digit of exponent + for (;; len--) { + int v; + if (c >= '0' && c <= '9') { + v = c - '0'; + } else { + v = Character.digit(c, 10); + if (v < 0) // not a digit + throw new NumberFormatException(); + } + exp = exp * 10 + v; + if (len == 1) + break; // that was final character + offset++; + c = in[offset]; + } + if (negexp) // apply sign + exp = -exp; + return exp; + } + + /** + * Translates a character array representation of a + * {@code BigDecimal} into a {@code BigDecimal}, accepting the + * same sequence of characters as the {@link #BigDecimal(String)} + * constructor. + * + *

Note that if the sequence of characters is already available + * as a character array, using this constructor is faster than + * converting the {@code char} array to string and using the + * {@code BigDecimal(String)} constructor . + * + * @param in {@code char} array that is the source of characters. + * @throws NumberFormatException if {@code in} is not a valid + * representation of a {@code BigDecimal}. + * @since 1.5 + */ + public BigDecimal(char[] in) { + this(in, 0, in.length); + } + + /** + * Translates a character array representation of a + * {@code BigDecimal} into a {@code BigDecimal}, accepting the + * same sequence of characters as the {@link #BigDecimal(String)} + * constructor and with rounding according to the context + * settings. + * + *

Note that if the sequence of characters is already available + * as a character array, using this constructor is faster than + * converting the {@code char} array to string and using the + * {@code BigDecimal(String)} constructor . + * + * @param in {@code char} array that is the source of characters. + * @param mc the context to use. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @throws NumberFormatException if {@code in} is not a valid + * representation of a {@code BigDecimal}. + * @since 1.5 + */ + public BigDecimal(char[] in, MathContext mc) { + this(in, 0, in.length, mc); + } + + /** + * Translates the string representation of a {@code BigDecimal} + * into a {@code BigDecimal}. The string representation consists + * of an optional sign, {@code '+'} ( '\u002B') or + * {@code '-'} ('\u002D'), followed by a sequence of + * zero or more decimal digits ("the integer"), optionally + * followed by a fraction, optionally followed by an exponent. + * + *

The fraction consists of a decimal point followed by zero + * or more decimal digits. The string must contain at least one + * digit in either the integer or the fraction. The number formed + * by the sign, the integer and the fraction is referred to as the + * significand. + * + *

The exponent consists of the character {@code 'e'} + * ('\u0065') or {@code 'E'} ('\u0045') + * followed by one or more decimal digits. The value of the + * exponent must lie between -{@link Integer#MAX_VALUE} ({@link + * Integer#MIN_VALUE}+1) and {@link Integer#MAX_VALUE}, inclusive. + * + *

More formally, the strings this constructor accepts are + * described by the following grammar: + *

+ *
+ *
BigDecimalString: + *
Signopt Significand Exponentopt + *
Sign: + *
{@code +} + *
{@code -} + *
Significand: + *
IntegerPart {@code .} FractionPartopt + *
{@code .} FractionPart + *
IntegerPart + *
IntegerPart: + *
Digits + *
FractionPart: + *
Digits + *
Exponent: + *
ExponentIndicator SignedInteger + *
ExponentIndicator: + *
{@code e} + *
{@code E} + *
SignedInteger: + *
Signopt Digits + *
Digits: + *
Digit + *
Digits Digit + *
Digit: + *
any character for which {@link Character#isDigit} + * returns {@code true}, including 0, 1, 2 ... + *
+ *
+ * + *

The scale of the returned {@code BigDecimal} will be the + * number of digits in the fraction, or zero if the string + * contains no decimal point, subject to adjustment for any + * exponent; if the string contains an exponent, the exponent is + * subtracted from the scale. The value of the resulting scale + * must lie between {@code Integer.MIN_VALUE} and + * {@code Integer.MAX_VALUE}, inclusive. + * + *

The character-to-digit mapping is provided by {@link + * java.lang.Character#digit} set to convert to radix 10. The + * String may not contain any extraneous characters (whitespace, + * for example). + * + *

Examples:
+ * The value of the returned {@code BigDecimal} is equal to + * significand × 10 exponent. + * For each string on the left, the resulting representation + * [{@code BigInteger}, {@code scale}] is shown on the right. + *

+     * "0"            [0,0]
+     * "0.00"         [0,2]
+     * "123"          [123,0]
+     * "-123"         [-123,0]
+     * "1.23E3"       [123,-1]
+     * "1.23E+3"      [123,-1]
+     * "12.3E+7"      [123,-6]
+     * "12.0"         [120,1]
+     * "12.3"         [123,1]
+     * "0.00123"      [123,5]
+     * "-1.23E-12"    [-123,14]
+     * "1234.5E-4"    [12345,5]
+     * "0E+7"         [0,-7]
+     * "-0"           [0,0]
+     * 
+ * + *

Note: For values other than {@code float} and + * {@code double} NaN and ±Infinity, this constructor is + * compatible with the values returned by {@link Float#toString} + * and {@link Double#toString}. This is generally the preferred + * way to convert a {@code float} or {@code double} into a + * BigDecimal, as it doesn't suffer from the unpredictability of + * the {@link #BigDecimal(double)} constructor. + * + * @param val String representation of {@code BigDecimal}. + * + * @throws NumberFormatException if {@code val} is not a valid + * representation of a {@code BigDecimal}. + */ + public BigDecimal(String val) { + this(val.toCharArray(), 0, val.length()); + } + + /** + * Translates the string representation of a {@code BigDecimal} + * into a {@code BigDecimal}, accepting the same strings as the + * {@link #BigDecimal(String)} constructor, with rounding + * according to the context settings. + * + * @param val string representation of a {@code BigDecimal}. + * @param mc the context to use. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @throws NumberFormatException if {@code val} is not a valid + * representation of a BigDecimal. + * @since 1.5 + */ + public BigDecimal(String val, MathContext mc) { + this(val.toCharArray(), 0, val.length(), mc); + } + + /** + * Translates a {@code double} into a {@code BigDecimal} which + * is the exact decimal representation of the {@code double}'s + * binary floating-point value. The scale of the returned + * {@code BigDecimal} is the smallest value such that + * (10scale × val) is an integer. + *

+ * Notes: + *

    + *
  1. + * The results of this constructor can be somewhat unpredictable. + * One might assume that writing {@code new BigDecimal(0.1)} in + * Java creates a {@code BigDecimal} which is exactly equal to + * 0.1 (an unscaled value of 1, with a scale of 1), but it is + * actually equal to + * 0.1000000000000000055511151231257827021181583404541015625. + * This is because 0.1 cannot be represented exactly as a + * {@code double} (or, for that matter, as a binary fraction of + * any finite length). Thus, the value that is being passed + * in to the constructor is not exactly equal to 0.1, + * appearances notwithstanding. + * + *
  2. + * The {@code String} constructor, on the other hand, is + * perfectly predictable: writing {@code new BigDecimal("0.1")} + * creates a {@code BigDecimal} which is exactly equal to + * 0.1, as one would expect. Therefore, it is generally + * recommended that the {@linkplain #BigDecimal(String) + * String constructor} be used in preference to this one. + * + *
  3. + * When a {@code double} must be used as a source for a + * {@code BigDecimal}, note that this constructor provides an + * exact conversion; it does not give the same result as + * converting the {@code double} to a {@code String} using the + * {@link Double#toString(double)} method and then using the + * {@link #BigDecimal(String)} constructor. To get that result, + * use the {@code static} {@link #valueOf(double)} method. + *
+ * + * @param val {@code double} value to be converted to + * {@code BigDecimal}. + * @throws NumberFormatException if {@code val} is infinite or NaN. + */ + public BigDecimal(double val) { + this(val,MathContext.UNLIMITED); + } + + /** + * Translates a {@code double} into a {@code BigDecimal}, with + * rounding according to the context settings. The scale of the + * {@code BigDecimal} is the smallest value such that + * (10scale × val) is an integer. + * + *

The results of this constructor can be somewhat unpredictable + * and its use is generally not recommended; see the notes under + * the {@link #BigDecimal(double)} constructor. + * + * @param val {@code double} value to be converted to + * {@code BigDecimal}. + * @param mc the context to use. + * @throws ArithmeticException if the result is inexact but the + * RoundingMode is UNNECESSARY. + * @throws NumberFormatException if {@code val} is infinite or NaN. + * @since 1.5 + */ + public BigDecimal(double val, MathContext mc) { + if (Double.isInfinite(val) || Double.isNaN(val)) + throw new NumberFormatException("Infinite or NaN"); + // Translate the double into sign, exponent and significand, according + // to the formulae in JLS, Section 20.10.22. + long valBits = Double.doubleToLongBits(val); + int sign = ((valBits >> 63) == 0 ? 1 : -1); + int exponent = (int) ((valBits >> 52) & 0x7ffL); + long significand = (exponent == 0 + ? (valBits & ((1L << 52) - 1)) << 1 + : (valBits & ((1L << 52) - 1)) | (1L << 52)); + exponent -= 1075; + // At this point, val == sign * significand * 2**exponent. + + /* + * Special case zero to supress nonterminating normalization and bogus + * scale calculation. + */ + if (significand == 0) { + this.intVal = BigInteger.ZERO; + this.scale = 0; + this.intCompact = 0; + this.precision = 1; + return; + } + // Normalize + while ((significand & 1) == 0) { // i.e., significand is even + significand >>= 1; + exponent++; + } + int scale = 0; + // Calculate intVal and scale + BigInteger intVal; + long compactVal = sign * significand; + if (exponent == 0) { + intVal = (compactVal == INFLATED) ? INFLATED_BIGINT : null; + } else { + if (exponent < 0) { + intVal = BigInteger.valueOf(5).pow(-exponent).multiply(compactVal); + scale = -exponent; + } else { // (exponent > 0) + intVal = BigInteger.valueOf(2).pow(exponent).multiply(compactVal); + } + compactVal = compactValFor(intVal); + } + int prec = 0; + int mcp = mc.precision; + if (mcp > 0) { // do rounding + int mode = mc.roundingMode.oldMode; + int drop; + if (compactVal == INFLATED) { + prec = bigDigitLength(intVal); + drop = prec - mcp; + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + intVal = divideAndRoundByTenPow(intVal, drop, mode); + compactVal = compactValFor(intVal); + if (compactVal != INFLATED) { + break; + } + prec = bigDigitLength(intVal); + drop = prec - mcp; + } + } + if (compactVal != INFLATED) { + prec = longDigitLength(compactVal); + drop = prec - mcp; + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + compactVal = divideAndRound(compactVal, LONG_TEN_POWERS_TABLE[drop], mc.roundingMode.oldMode); + prec = longDigitLength(compactVal); + drop = prec - mcp; + } + intVal = null; + } + } + this.intVal = intVal; + this.intCompact = compactVal; + this.scale = scale; + this.precision = prec; + } + + /** + * Translates a {@code BigInteger} into a {@code BigDecimal}. + * The scale of the {@code BigDecimal} is zero. + * + * @param val {@code BigInteger} value to be converted to + * {@code BigDecimal}. + */ + public BigDecimal(BigInteger val) { + scale = 0; + intVal = val; + intCompact = compactValFor(val); + } + + /** + * Translates a {@code BigInteger} into a {@code BigDecimal} + * rounding according to the context settings. The scale of the + * {@code BigDecimal} is zero. + * + * @param val {@code BigInteger} value to be converted to + * {@code BigDecimal}. + * @param mc the context to use. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @since 1.5 + */ + public BigDecimal(BigInteger val, MathContext mc) { + this(val,0,mc); + } + + /** + * Translates a {@code BigInteger} unscaled value and an + * {@code int} scale into a {@code BigDecimal}. The value of + * the {@code BigDecimal} is + * (unscaledVal × 10-scale). + * + * @param unscaledVal unscaled value of the {@code BigDecimal}. + * @param scale scale of the {@code BigDecimal}. + */ + public BigDecimal(BigInteger unscaledVal, int scale) { + // Negative scales are now allowed + this.intVal = unscaledVal; + this.intCompact = compactValFor(unscaledVal); + this.scale = scale; + } + + /** + * Translates a {@code BigInteger} unscaled value and an + * {@code int} scale into a {@code BigDecimal}, with rounding + * according to the context settings. The value of the + * {@code BigDecimal} is (unscaledVal × + * 10-scale), rounded according to the + * {@code precision} and rounding mode settings. + * + * @param unscaledVal unscaled value of the {@code BigDecimal}. + * @param scale scale of the {@code BigDecimal}. + * @param mc the context to use. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @since 1.5 + */ + public BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) { + long compactVal = compactValFor(unscaledVal); + int mcp = mc.precision; + int prec = 0; + if (mcp > 0) { // do rounding + int mode = mc.roundingMode.oldMode; + if (compactVal == INFLATED) { + prec = bigDigitLength(unscaledVal); + int drop = prec - mcp; + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + unscaledVal = divideAndRoundByTenPow(unscaledVal, drop, mode); + compactVal = compactValFor(unscaledVal); + if (compactVal != INFLATED) { + break; + } + prec = bigDigitLength(unscaledVal); + drop = prec - mcp; + } + } + if (compactVal != INFLATED) { + prec = longDigitLength(compactVal); + int drop = prec - mcp; // drop can't be more than 18 + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + compactVal = divideAndRound(compactVal, LONG_TEN_POWERS_TABLE[drop], mode); + prec = longDigitLength(compactVal); + drop = prec - mcp; + } + unscaledVal = null; + } + } + this.intVal = unscaledVal; + this.intCompact = compactVal; + this.scale = scale; + this.precision = prec; + } + + /** + * Translates an {@code int} into a {@code BigDecimal}. The + * scale of the {@code BigDecimal} is zero. + * + * @param val {@code int} value to be converted to + * {@code BigDecimal}. + * @since 1.5 + */ + public BigDecimal(int val) { + this.intCompact = val; + this.scale = 0; + this.intVal = null; + } + + /** + * Translates an {@code int} into a {@code BigDecimal}, with + * rounding according to the context settings. The scale of the + * {@code BigDecimal}, before any rounding, is zero. + * + * @param val {@code int} value to be converted to {@code BigDecimal}. + * @param mc the context to use. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @since 1.5 + */ + public BigDecimal(int val, MathContext mc) { + int mcp = mc.precision; + long compactVal = val; + int scale = 0; + int prec = 0; + if (mcp > 0) { // do rounding + prec = longDigitLength(compactVal); + int drop = prec - mcp; // drop can't be more than 18 + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + compactVal = divideAndRound(compactVal, LONG_TEN_POWERS_TABLE[drop], mc.roundingMode.oldMode); + prec = longDigitLength(compactVal); + drop = prec - mcp; + } + } + this.intVal = null; + this.intCompact = compactVal; + this.scale = scale; + this.precision = prec; + } + + /** + * Translates a {@code long} into a {@code BigDecimal}. The + * scale of the {@code BigDecimal} is zero. + * + * @param val {@code long} value to be converted to {@code BigDecimal}. + * @since 1.5 + */ + public BigDecimal(long val) { + this.intCompact = val; + this.intVal = (val == INFLATED) ? INFLATED_BIGINT : null; + this.scale = 0; + } + + /** + * Translates a {@code long} into a {@code BigDecimal}, with + * rounding according to the context settings. The scale of the + * {@code BigDecimal}, before any rounding, is zero. + * + * @param val {@code long} value to be converted to {@code BigDecimal}. + * @param mc the context to use. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @since 1.5 + */ + public BigDecimal(long val, MathContext mc) { + int mcp = mc.precision; + int mode = mc.roundingMode.oldMode; + int prec = 0; + int scale = 0; + BigInteger intVal = (val == INFLATED) ? INFLATED_BIGINT : null; + if (mcp > 0) { // do rounding + if (val == INFLATED) { + prec = 19; + int drop = prec - mcp; + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + intVal = divideAndRoundByTenPow(intVal, drop, mode); + val = compactValFor(intVal); + if (val != INFLATED) { + break; + } + prec = bigDigitLength(intVal); + drop = prec - mcp; + } + } + if (val != INFLATED) { + prec = longDigitLength(val); + int drop = prec - mcp; + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + val = divideAndRound(val, LONG_TEN_POWERS_TABLE[drop], mc.roundingMode.oldMode); + prec = longDigitLength(val); + drop = prec - mcp; + } + intVal = null; + } + } + this.intVal = intVal; + this.intCompact = val; + this.scale = scale; + this.precision = prec; + } + + // Static Factory Methods + + /** + * Translates a {@code long} unscaled value and an + * {@code int} scale into a {@code BigDecimal}. This + * {@literal "static factory method"} is provided in preference to + * a ({@code long}, {@code int}) constructor because it + * allows for reuse of frequently used {@code BigDecimal} values.. + * + * @param unscaledVal unscaled value of the {@code BigDecimal}. + * @param scale scale of the {@code BigDecimal}. + * @return a {@code BigDecimal} whose value is + * (unscaledVal × 10-scale). + */ + public static BigDecimal valueOf(long unscaledVal, int scale) { + if (scale == 0) + return valueOf(unscaledVal); + else if (unscaledVal == 0) { + return zeroValueOf(scale); + } + return new BigDecimal(unscaledVal == INFLATED ? + INFLATED_BIGINT : null, + unscaledVal, scale, 0); + } + + /** + * Translates a {@code long} value into a {@code BigDecimal} + * with a scale of zero. This {@literal "static factory method"} + * is provided in preference to a ({@code long}) constructor + * because it allows for reuse of frequently used + * {@code BigDecimal} values. + * + * @param val value of the {@code BigDecimal}. + * @return a {@code BigDecimal} whose value is {@code val}. + */ + public static BigDecimal valueOf(long val) { + if (val >= 0 && val < zeroThroughTen.length) + return zeroThroughTen[(int)val]; + else if (val != INFLATED) + return new BigDecimal(null, val, 0, 0); + return new BigDecimal(INFLATED_BIGINT, val, 0, 0); + } + + static BigDecimal valueOf(long unscaledVal, int scale, int prec) { + if (scale == 0 && unscaledVal >= 0 && unscaledVal < zeroThroughTen.length) { + return zeroThroughTen[(int) unscaledVal]; + } else if (unscaledVal == 0) { + return zeroValueOf(scale); + } + return new BigDecimal(unscaledVal == INFLATED ? INFLATED_BIGINT : null, + unscaledVal, scale, prec); + } + + static BigDecimal valueOf(BigInteger intVal, int scale, int prec) { + long val = compactValFor(intVal); + if (val == 0) { + return zeroValueOf(scale); + } else if (scale == 0 && val >= 0 && val < zeroThroughTen.length) { + return zeroThroughTen[(int) val]; + } + return new BigDecimal(intVal, val, scale, prec); + } + + static BigDecimal zeroValueOf(int scale) { + if (scale >= 0 && scale < ZERO_SCALED_BY.length) + return ZERO_SCALED_BY[scale]; + else + return new BigDecimal(BigInteger.ZERO, 0, scale, 1); + } + + /** + * Translates a {@code double} into a {@code BigDecimal}, using + * the {@code double}'s canonical string representation provided + * by the {@link Double#toString(double)} method. + * + *

Note: This is generally the preferred way to convert + * a {@code double} (or {@code float}) into a + * {@code BigDecimal}, as the value returned is equal to that + * resulting from constructing a {@code BigDecimal} from the + * result of using {@link Double#toString(double)}. + * + * @param val {@code double} to convert to a {@code BigDecimal}. + * @return a {@code BigDecimal} whose value is equal to or approximately + * equal to the value of {@code val}. + * @throws NumberFormatException if {@code val} is infinite or NaN. + * @since 1.5 + */ + public static BigDecimal valueOf(double val) { + // Reminder: a zero double returns '0.0', so we cannot fastpath + // to use the constant ZERO. This might be important enough to + // justify a factory approach, a cache, or a few private + // constants, later. + return new BigDecimal(Double.toString(val)); + } + + // Arithmetic Operations + /** + * Returns a {@code BigDecimal} whose value is {@code (this + + * augend)}, and whose scale is {@code max(this.scale(), + * augend.scale())}. + * + * @param augend value to be added to this {@code BigDecimal}. + * @return {@code this + augend} + */ + public BigDecimal add(BigDecimal augend) { + if (this.intCompact != INFLATED) { + if ((augend.intCompact != INFLATED)) { + return add(this.intCompact, this.scale, augend.intCompact, augend.scale); + } else { + return add(this.intCompact, this.scale, augend.intVal, augend.scale); + } + } else { + if ((augend.intCompact != INFLATED)) { + return add(augend.intCompact, augend.scale, this.intVal, this.scale); + } else { + return add(this.intVal, this.scale, augend.intVal, augend.scale); + } + } + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (this + augend)}, + * with rounding according to the context settings. + * + * If either number is zero and the precision setting is nonzero then + * the other number, rounded if necessary, is used as the result. + * + * @param augend value to be added to this {@code BigDecimal}. + * @param mc the context to use. + * @return {@code this + augend}, rounded as necessary. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @since 1.5 + */ + public BigDecimal add(BigDecimal augend, MathContext mc) { + if (mc.precision == 0) + return add(augend); + BigDecimal lhs = this; + + // If either number is zero then the other number, rounded and + // scaled if necessary, is used as the result. + { + boolean lhsIsZero = lhs.signum() == 0; + boolean augendIsZero = augend.signum() == 0; + + if (lhsIsZero || augendIsZero) { + int preferredScale = Math.max(lhs.scale(), augend.scale()); + BigDecimal result; + + if (lhsIsZero && augendIsZero) + return zeroValueOf(preferredScale); + result = lhsIsZero ? doRound(augend, mc) : doRound(lhs, mc); + + if (result.scale() == preferredScale) + return result; + else if (result.scale() > preferredScale) { + return stripZerosToMatchScale(result.intVal, result.intCompact, result.scale, preferredScale); + } else { // result.scale < preferredScale + int precisionDiff = mc.precision - result.precision(); + int scaleDiff = preferredScale - result.scale(); + + if (precisionDiff >= scaleDiff) + return result.setScale(preferredScale); // can achieve target scale + else + return result.setScale(result.scale() + precisionDiff); + } + } + } + + long padding = (long) lhs.scale - augend.scale; + if (padding != 0) { // scales differ; alignment needed + BigDecimal arg[] = preAlign(lhs, augend, padding, mc); + matchScale(arg); + lhs = arg[0]; + augend = arg[1]; + } + return doRound(lhs.inflated().add(augend.inflated()), lhs.scale, mc); + } + + /** + * Returns an array of length two, the sum of whose entries is + * equal to the rounded sum of the {@code BigDecimal} arguments. + * + *

If the digit positions of the arguments have a sufficient + * gap between them, the value smaller in magnitude can be + * condensed into a {@literal "sticky bit"} and the end result will + * round the same way if the precision of the final + * result does not include the high order digit of the small + * magnitude operand. + * + *

Note that while strictly speaking this is an optimization, + * it makes a much wider range of additions practical. + * + *

This corresponds to a pre-shift operation in a fixed + * precision floating-point adder; this method is complicated by + * variable precision of the result as determined by the + * MathContext. A more nuanced operation could implement a + * {@literal "right shift"} on the smaller magnitude operand so + * that the number of digits of the smaller operand could be + * reduced even though the significands partially overlapped. + */ + private BigDecimal[] preAlign(BigDecimal lhs, BigDecimal augend, long padding, MathContext mc) { + assert padding != 0; + BigDecimal big; + BigDecimal small; + + if (padding < 0) { // lhs is big; augend is small + big = lhs; + small = augend; + } else { // lhs is small; augend is big + big = augend; + small = lhs; + } + + /* + * This is the estimated scale of an ulp of the result; it assumes that + * the result doesn't have a carry-out on a true add (e.g. 999 + 1 => + * 1000) or any subtractive cancellation on borrowing (e.g. 100 - 1.2 => + * 98.8) + */ + long estResultUlpScale = (long) big.scale - big.precision() + mc.precision; + + /* + * The low-order digit position of big is big.scale(). This + * is true regardless of whether big has a positive or + * negative scale. The high-order digit position of small is + * small.scale - (small.precision() - 1). To do the full + * condensation, the digit positions of big and small must be + * disjoint *and* the digit positions of small should not be + * directly visible in the result. + */ + long smallHighDigitPos = (long) small.scale - small.precision() + 1; + if (smallHighDigitPos > big.scale + 2 && // big and small disjoint + smallHighDigitPos > estResultUlpScale + 2) { // small digits not visible + small = BigDecimal.valueOf(small.signum(), this.checkScale(Math.max(big.scale, estResultUlpScale) + 3)); + } + + // Since addition is symmetric, preserving input order in + // returned operands doesn't matter + BigDecimal[] result = {big, small}; + return result; + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (this - + * subtrahend)}, and whose scale is {@code max(this.scale(), + * subtrahend.scale())}. + * + * @param subtrahend value to be subtracted from this {@code BigDecimal}. + * @return {@code this - subtrahend} + */ + public BigDecimal subtract(BigDecimal subtrahend) { + if (this.intCompact != INFLATED) { + if ((subtrahend.intCompact != INFLATED)) { + return add(this.intCompact, this.scale, -subtrahend.intCompact, subtrahend.scale); + } else { + return add(this.intCompact, this.scale, subtrahend.intVal.negate(), subtrahend.scale); + } + } else { + if ((subtrahend.intCompact != INFLATED)) { + // Pair of subtrahend values given before pair of + // values from this BigDecimal to avoid need for + // method overloading on the specialized add method + return add(-subtrahend.intCompact, subtrahend.scale, this.intVal, this.scale); + } else { + return add(this.intVal, this.scale, subtrahend.intVal.negate(), subtrahend.scale); + } + } + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (this - subtrahend)}, + * with rounding according to the context settings. + * + * If {@code subtrahend} is zero then this, rounded if necessary, is used as the + * result. If this is zero then the result is {@code subtrahend.negate(mc)}. + * + * @param subtrahend value to be subtracted from this {@code BigDecimal}. + * @param mc the context to use. + * @return {@code this - subtrahend}, rounded as necessary. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @since 1.5 + */ + public BigDecimal subtract(BigDecimal subtrahend, MathContext mc) { + if (mc.precision == 0) + return subtract(subtrahend); + // share the special rounding code in add() + return add(subtrahend.negate(), mc); + } + + /** + * Returns a {@code BigDecimal} whose value is (this × + * multiplicand), and whose scale is {@code (this.scale() + + * multiplicand.scale())}. + * + * @param multiplicand value to be multiplied by this {@code BigDecimal}. + * @return {@code this * multiplicand} + */ + public BigDecimal multiply(BigDecimal multiplicand) { + int productScale = checkScale((long) scale + multiplicand.scale); + if (this.intCompact != INFLATED) { + if ((multiplicand.intCompact != INFLATED)) { + return multiply(this.intCompact, multiplicand.intCompact, productScale); + } else { + return multiply(this.intCompact, multiplicand.intVal, productScale); + } + } else { + if ((multiplicand.intCompact != INFLATED)) { + return multiply(multiplicand.intCompact, this.intVal, productScale); + } else { + return multiply(this.intVal, multiplicand.intVal, productScale); + } + } + } + + /** + * Returns a {@code BigDecimal} whose value is (this × + * multiplicand), with rounding according to the context settings. + * + * @param multiplicand value to be multiplied by this {@code BigDecimal}. + * @param mc the context to use. + * @return {@code this * multiplicand}, rounded as necessary. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @since 1.5 + */ + public BigDecimal multiply(BigDecimal multiplicand, MathContext mc) { + if (mc.precision == 0) + return multiply(multiplicand); + int productScale = checkScale((long) scale + multiplicand.scale); + if (this.intCompact != INFLATED) { + if ((multiplicand.intCompact != INFLATED)) { + return multiplyAndRound(this.intCompact, multiplicand.intCompact, productScale, mc); + } else { + return multiplyAndRound(this.intCompact, multiplicand.intVal, productScale, mc); + } + } else { + if ((multiplicand.intCompact != INFLATED)) { + return multiplyAndRound(multiplicand.intCompact, this.intVal, productScale, mc); + } else { + return multiplyAndRound(this.intVal, multiplicand.intVal, productScale, mc); + } + } + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (this / + * divisor)}, and whose scale is as specified. If rounding must + * be performed to generate a result with the specified scale, the + * specified rounding mode is applied. + * + *

The new {@link #divide(BigDecimal, int, RoundingMode)} method + * should be used in preference to this legacy method. + * + * @param divisor value by which this {@code BigDecimal} is to be divided. + * @param scale scale of the {@code BigDecimal} quotient to be returned. + * @param roundingMode rounding mode to apply. + * @return {@code this / divisor} + * @throws ArithmeticException if {@code divisor} is zero, + * {@code roundingMode==ROUND_UNNECESSARY} and + * the specified scale is insufficient to represent the result + * of the division exactly. + * @throws IllegalArgumentException if {@code roundingMode} does not + * represent a valid rounding mode. + * @see #ROUND_UP + * @see #ROUND_DOWN + * @see #ROUND_CEILING + * @see #ROUND_FLOOR + * @see #ROUND_HALF_UP + * @see #ROUND_HALF_DOWN + * @see #ROUND_HALF_EVEN + * @see #ROUND_UNNECESSARY + */ + public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) { + if (roundingMode < ROUND_UP || roundingMode > ROUND_UNNECESSARY) + throw new IllegalArgumentException("Invalid rounding mode"); + if (this.intCompact != INFLATED) { + if ((divisor.intCompact != INFLATED)) { + return divide(this.intCompact, this.scale, divisor.intCompact, divisor.scale, scale, roundingMode); + } else { + return divide(this.intCompact, this.scale, divisor.intVal, divisor.scale, scale, roundingMode); + } + } else { + if ((divisor.intCompact != INFLATED)) { + return divide(this.intVal, this.scale, divisor.intCompact, divisor.scale, scale, roundingMode); + } else { + return divide(this.intVal, this.scale, divisor.intVal, divisor.scale, scale, roundingMode); + } + } + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (this / + * divisor)}, and whose scale is as specified. If rounding must + * be performed to generate a result with the specified scale, the + * specified rounding mode is applied. + * + * @param divisor value by which this {@code BigDecimal} is to be divided. + * @param scale scale of the {@code BigDecimal} quotient to be returned. + * @param roundingMode rounding mode to apply. + * @return {@code this / divisor} + * @throws ArithmeticException if {@code divisor} is zero, + * {@code roundingMode==RoundingMode.UNNECESSARY} and + * the specified scale is insufficient to represent the result + * of the division exactly. + * @since 1.5 + */ + public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode) { + return divide(divisor, scale, roundingMode.oldMode); + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (this / + * divisor)}, and whose scale is {@code this.scale()}. If + * rounding must be performed to generate a result with the given + * scale, the specified rounding mode is applied. + * + *

The new {@link #divide(BigDecimal, RoundingMode)} method + * should be used in preference to this legacy method. + * + * @param divisor value by which this {@code BigDecimal} is to be divided. + * @param roundingMode rounding mode to apply. + * @return {@code this / divisor} + * @throws ArithmeticException if {@code divisor==0}, or + * {@code roundingMode==ROUND_UNNECESSARY} and + * {@code this.scale()} is insufficient to represent the result + * of the division exactly. + * @throws IllegalArgumentException if {@code roundingMode} does not + * represent a valid rounding mode. + * @see #ROUND_UP + * @see #ROUND_DOWN + * @see #ROUND_CEILING + * @see #ROUND_FLOOR + * @see #ROUND_HALF_UP + * @see #ROUND_HALF_DOWN + * @see #ROUND_HALF_EVEN + * @see #ROUND_UNNECESSARY + */ + public BigDecimal divide(BigDecimal divisor, int roundingMode) { + return this.divide(divisor, scale, roundingMode); + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (this / + * divisor)}, and whose scale is {@code this.scale()}. If + * rounding must be performed to generate a result with the given + * scale, the specified rounding mode is applied. + * + * @param divisor value by which this {@code BigDecimal} is to be divided. + * @param roundingMode rounding mode to apply. + * @return {@code this / divisor} + * @throws ArithmeticException if {@code divisor==0}, or + * {@code roundingMode==RoundingMode.UNNECESSARY} and + * {@code this.scale()} is insufficient to represent the result + * of the division exactly. + * @since 1.5 + */ + public BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode) { + return this.divide(divisor, scale, roundingMode.oldMode); + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (this / + * divisor)}, and whose preferred scale is {@code (this.scale() - + * divisor.scale())}; if the exact quotient cannot be + * represented (because it has a non-terminating decimal + * expansion) an {@code ArithmeticException} is thrown. + * + * @param divisor value by which this {@code BigDecimal} is to be divided. + * @throws ArithmeticException if the exact quotient does not have a + * terminating decimal expansion + * @return {@code this / divisor} + * @since 1.5 + * @author Joseph D. Darcy + */ + public BigDecimal divide(BigDecimal divisor) { + /* + * Handle zero cases first. + */ + if (divisor.signum() == 0) { // x/0 + if (this.signum() == 0) // 0/0 + throw new ArithmeticException("Division undefined"); // NaN + throw new ArithmeticException("Division by zero"); + } + + // Calculate preferred scale + int preferredScale = saturateLong((long) this.scale - divisor.scale); + + if (this.signum() == 0) // 0/y + return zeroValueOf(preferredScale); + else { + /* + * If the quotient this/divisor has a terminating decimal + * expansion, the expansion can have no more than + * (a.precision() + ceil(10*b.precision)/3) digits. + * Therefore, create a MathContext object with this + * precision and do a divide with the UNNECESSARY rounding + * mode. + */ + MathContext mc = new MathContext( (int)Math.min(this.precision() + + (long)Math.ceil(10.0*divisor.precision()/3.0), + Integer.MAX_VALUE), + RoundingMode.UNNECESSARY); + BigDecimal quotient; + try { + quotient = this.divide(divisor, mc); + } catch (ArithmeticException e) { + throw new ArithmeticException("Non-terminating decimal expansion; " + + "no exact representable decimal result."); + } + + int quotientScale = quotient.scale(); + + // divide(BigDecimal, mc) tries to adjust the quotient to + // the desired one by removing trailing zeros; since the + // exact divide method does not have an explicit digit + // limit, we can add zeros too. + if (preferredScale > quotientScale) + return quotient.setScale(preferredScale, ROUND_UNNECESSARY); + + return quotient; + } + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (this / + * divisor)}, with rounding according to the context settings. + * + * @param divisor value by which this {@code BigDecimal} is to be divided. + * @param mc the context to use. + * @return {@code this / divisor}, rounded as necessary. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY} or + * {@code mc.precision == 0} and the quotient has a + * non-terminating decimal expansion. + * @since 1.5 + */ + public BigDecimal divide(BigDecimal divisor, MathContext mc) { + int mcp = mc.precision; + if (mcp == 0) + return divide(divisor); + + BigDecimal dividend = this; + long preferredScale = (long)dividend.scale - divisor.scale; + // Now calculate the answer. We use the existing + // divide-and-round method, but as this rounds to scale we have + // to normalize the values here to achieve the desired result. + // For x/y we first handle y=0 and x=0, and then normalize x and + // y to give x' and y' with the following constraints: + // (a) 0.1 <= x' < 1 + // (b) x' <= y' < 10*x' + // Dividing x'/y' with the required scale set to mc.precision then + // will give a result in the range 0.1 to 1 rounded to exactly + // the right number of digits (except in the case of a result of + // 1.000... which can arise when x=y, or when rounding overflows + // The 1.000... case will reduce properly to 1. + if (divisor.signum() == 0) { // x/0 + if (dividend.signum() == 0) // 0/0 + throw new ArithmeticException("Division undefined"); // NaN + throw new ArithmeticException("Division by zero"); + } + if (dividend.signum() == 0) // 0/y + return zeroValueOf(saturateLong(preferredScale)); + int xscale = dividend.precision(); + int yscale = divisor.precision(); + if(dividend.intCompact!=INFLATED) { + if(divisor.intCompact!=INFLATED) { + return divide(dividend.intCompact, xscale, divisor.intCompact, yscale, preferredScale, mc); + } else { + return divide(dividend.intCompact, xscale, divisor.intVal, yscale, preferredScale, mc); + } + } else { + if(divisor.intCompact!=INFLATED) { + return divide(dividend.intVal, xscale, divisor.intCompact, yscale, preferredScale, mc); + } else { + return divide(dividend.intVal, xscale, divisor.intVal, yscale, preferredScale, mc); + } + } + } + + /** + * Returns a {@code BigDecimal} whose value is the integer part + * of the quotient {@code (this / divisor)} rounded down. The + * preferred scale of the result is {@code (this.scale() - + * divisor.scale())}. + * + * @param divisor value by which this {@code BigDecimal} is to be divided. + * @return The integer part of {@code this / divisor}. + * @throws ArithmeticException if {@code divisor==0} + * @since 1.5 + */ + public BigDecimal divideToIntegralValue(BigDecimal divisor) { + // Calculate preferred scale + int preferredScale = saturateLong((long) this.scale - divisor.scale); + if (this.compareMagnitude(divisor) < 0) { + // much faster when this << divisor + return zeroValueOf(preferredScale); + } + + if (this.signum() == 0 && divisor.signum() != 0) + return this.setScale(preferredScale, ROUND_UNNECESSARY); + + // Perform a divide with enough digits to round to a correct + // integer value; then remove any fractional digits + + int maxDigits = (int)Math.min(this.precision() + + (long)Math.ceil(10.0*divisor.precision()/3.0) + + Math.abs((long)this.scale() - divisor.scale()) + 2, + Integer.MAX_VALUE); + BigDecimal quotient = this.divide(divisor, new MathContext(maxDigits, + RoundingMode.DOWN)); + if (quotient.scale > 0) { + quotient = quotient.setScale(0, RoundingMode.DOWN); + quotient = stripZerosToMatchScale(quotient.intVal, quotient.intCompact, quotient.scale, preferredScale); + } + + if (quotient.scale < preferredScale) { + // pad with zeros if necessary + quotient = quotient.setScale(preferredScale, ROUND_UNNECESSARY); + } + + return quotient; + } + + /** + * Returns a {@code BigDecimal} whose value is the integer part + * of {@code (this / divisor)}. Since the integer part of the + * exact quotient does not depend on the rounding mode, the + * rounding mode does not affect the values returned by this + * method. The preferred scale of the result is + * {@code (this.scale() - divisor.scale())}. An + * {@code ArithmeticException} is thrown if the integer part of + * the exact quotient needs more than {@code mc.precision} + * digits. + * + * @param divisor value by which this {@code BigDecimal} is to be divided. + * @param mc the context to use. + * @return The integer part of {@code this / divisor}. + * @throws ArithmeticException if {@code divisor==0} + * @throws ArithmeticException if {@code mc.precision} {@literal >} 0 and the result + * requires a precision of more than {@code mc.precision} digits. + * @since 1.5 + * @author Joseph D. Darcy + */ + public BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc) { + if (mc.precision == 0 || // exact result + (this.compareMagnitude(divisor) < 0)) // zero result + return divideToIntegralValue(divisor); + + // Calculate preferred scale + int preferredScale = saturateLong((long)this.scale - divisor.scale); + + /* + * Perform a normal divide to mc.precision digits. If the + * remainder has absolute value less than the divisor, the + * integer portion of the quotient fits into mc.precision + * digits. Next, remove any fractional digits from the + * quotient and adjust the scale to the preferred value. + */ + BigDecimal result = this.divide(divisor, new MathContext(mc.precision, RoundingMode.DOWN)); + + if (result.scale() < 0) { + /* + * Result is an integer. See if quotient represents the + * full integer portion of the exact quotient; if it does, + * the computed remainder will be less than the divisor. + */ + BigDecimal product = result.multiply(divisor); + // If the quotient is the full integer value, + // |dividend-product| < |divisor|. + if (this.subtract(product).compareMagnitude(divisor) >= 0) { + throw new ArithmeticException("Division impossible"); + } + } else if (result.scale() > 0) { + /* + * Integer portion of quotient will fit into precision + * digits; recompute quotient to scale 0 to avoid double + * rounding and then try to adjust, if necessary. + */ + result = result.setScale(0, RoundingMode.DOWN); + } + // else result.scale() == 0; + + int precisionDiff; + if ((preferredScale > result.scale()) && + (precisionDiff = mc.precision - result.precision()) > 0) { + return result.setScale(result.scale() + + Math.min(precisionDiff, preferredScale - result.scale) ); + } else { + return stripZerosToMatchScale(result.intVal,result.intCompact,result.scale,preferredScale); + } + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (this % divisor)}. + * + *

The remainder is given by + * {@code this.subtract(this.divideToIntegralValue(divisor).multiply(divisor))}. + * Note that this is not the modulo operation (the result can be + * negative). + * + * @param divisor value by which this {@code BigDecimal} is to be divided. + * @return {@code this % divisor}. + * @throws ArithmeticException if {@code divisor==0} + * @since 1.5 + */ + public BigDecimal remainder(BigDecimal divisor) { + BigDecimal divrem[] = this.divideAndRemainder(divisor); + return divrem[1]; + } + + + /** + * Returns a {@code BigDecimal} whose value is {@code (this % + * divisor)}, with rounding according to the context settings. + * The {@code MathContext} settings affect the implicit divide + * used to compute the remainder. The remainder computation + * itself is by definition exact. Therefore, the remainder may + * contain more than {@code mc.getPrecision()} digits. + * + *

The remainder is given by + * {@code this.subtract(this.divideToIntegralValue(divisor, + * mc).multiply(divisor))}. Note that this is not the modulo + * operation (the result can be negative). + * + * @param divisor value by which this {@code BigDecimal} is to be divided. + * @param mc the context to use. + * @return {@code this % divisor}, rounded as necessary. + * @throws ArithmeticException if {@code divisor==0} + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}, or {@code mc.precision} + * {@literal >} 0 and the result of {@code this.divideToIntgralValue(divisor)} would + * require a precision of more than {@code mc.precision} digits. + * @see #divideToIntegralValue(java.math.BigDecimal, java.math.MathContext) + * @since 1.5 + */ + public BigDecimal remainder(BigDecimal divisor, MathContext mc) { + BigDecimal divrem[] = this.divideAndRemainder(divisor, mc); + return divrem[1]; + } + + /** + * Returns a two-element {@code BigDecimal} array containing the + * result of {@code divideToIntegralValue} followed by the result of + * {@code remainder} on the two operands. + * + *

Note that if both the integer quotient and remainder are + * needed, this method is faster than using the + * {@code divideToIntegralValue} and {@code remainder} methods + * separately because the division need only be carried out once. + * + * @param divisor value by which this {@code BigDecimal} is to be divided, + * and the remainder computed. + * @return a two element {@code BigDecimal} array: the quotient + * (the result of {@code divideToIntegralValue}) is the initial element + * and the remainder is the final element. + * @throws ArithmeticException if {@code divisor==0} + * @see #divideToIntegralValue(java.math.BigDecimal, java.math.MathContext) + * @see #remainder(java.math.BigDecimal, java.math.MathContext) + * @since 1.5 + */ + public BigDecimal[] divideAndRemainder(BigDecimal divisor) { + // we use the identity x = i * y + r to determine r + BigDecimal[] result = new BigDecimal[2]; + + result[0] = this.divideToIntegralValue(divisor); + result[1] = this.subtract(result[0].multiply(divisor)); + return result; + } + + /** + * Returns a two-element {@code BigDecimal} array containing the + * result of {@code divideToIntegralValue} followed by the result of + * {@code remainder} on the two operands calculated with rounding + * according to the context settings. + * + *

Note that if both the integer quotient and remainder are + * needed, this method is faster than using the + * {@code divideToIntegralValue} and {@code remainder} methods + * separately because the division need only be carried out once. + * + * @param divisor value by which this {@code BigDecimal} is to be divided, + * and the remainder computed. + * @param mc the context to use. + * @return a two element {@code BigDecimal} array: the quotient + * (the result of {@code divideToIntegralValue}) is the + * initial element and the remainder is the final element. + * @throws ArithmeticException if {@code divisor==0} + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}, or {@code mc.precision} + * {@literal >} 0 and the result of {@code this.divideToIntgralValue(divisor)} would + * require a precision of more than {@code mc.precision} digits. + * @see #divideToIntegralValue(java.math.BigDecimal, java.math.MathContext) + * @see #remainder(java.math.BigDecimal, java.math.MathContext) + * @since 1.5 + */ + public BigDecimal[] divideAndRemainder(BigDecimal divisor, MathContext mc) { + if (mc.precision == 0) + return divideAndRemainder(divisor); + + BigDecimal[] result = new BigDecimal[2]; + BigDecimal lhs = this; + + result[0] = lhs.divideToIntegralValue(divisor, mc); + result[1] = lhs.subtract(result[0].multiply(divisor)); + return result; + } + + /** + * Returns a {@code BigDecimal} whose value is + * (thisn), The power is computed exactly, to + * unlimited precision. + * + *

The parameter {@code n} must be in the range 0 through + * 999999999, inclusive. {@code ZERO.pow(0)} returns {@link + * #ONE}. + * + * Note that future releases may expand the allowable exponent + * range of this method. + * + * @param n power to raise this {@code BigDecimal} to. + * @return thisn + * @throws ArithmeticException if {@code n} is out of range. + * @since 1.5 + */ + public BigDecimal pow(int n) { + if (n < 0 || n > 999999999) + throw new ArithmeticException("Invalid operation"); + // No need to calculate pow(n) if result will over/underflow. + // Don't attempt to support "supernormal" numbers. + int newScale = checkScale((long)scale * n); + return new BigDecimal(this.inflated().pow(n), newScale); + } + + + /** + * Returns a {@code BigDecimal} whose value is + * (thisn). The current implementation uses + * the core algorithm defined in ANSI standard X3.274-1996 with + * rounding according to the context settings. In general, the + * returned numerical value is within two ulps of the exact + * numerical value for the chosen precision. Note that future + * releases may use a different algorithm with a decreased + * allowable error bound and increased allowable exponent range. + * + *

The X3.274-1996 algorithm is: + * + *

    + *
  • An {@code ArithmeticException} exception is thrown if + *
      + *
    • {@code abs(n) > 999999999} + *
    • {@code mc.precision == 0} and {@code n < 0} + *
    • {@code mc.precision > 0} and {@code n} has more than + * {@code mc.precision} decimal digits + *
    + * + *
  • if {@code n} is zero, {@link #ONE} is returned even if + * {@code this} is zero, otherwise + *
      + *
    • if {@code n} is positive, the result is calculated via + * the repeated squaring technique into a single accumulator. + * The individual multiplications with the accumulator use the + * same math context settings as in {@code mc} except for a + * precision increased to {@code mc.precision + elength + 1} + * where {@code elength} is the number of decimal digits in + * {@code n}. + * + *
    • if {@code n} is negative, the result is calculated as if + * {@code n} were positive; this value is then divided into one + * using the working precision specified above. + * + *
    • The final value from either the positive or negative case + * is then rounded to the destination precision. + *
    + *
+ * + * @param n power to raise this {@code BigDecimal} to. + * @param mc the context to use. + * @return thisn using the ANSI standard X3.274-1996 + * algorithm + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}, or {@code n} is out + * of range. + * @since 1.5 + */ + public BigDecimal pow(int n, MathContext mc) { + if (mc.precision == 0) + return pow(n); + if (n < -999999999 || n > 999999999) + throw new ArithmeticException("Invalid operation"); + if (n == 0) + return ONE; // x**0 == 1 in X3.274 + BigDecimal lhs = this; + MathContext workmc = mc; // working settings + int mag = Math.abs(n); // magnitude of n + if (mc.precision > 0) { + int elength = longDigitLength(mag); // length of n in digits + if (elength > mc.precision) // X3.274 rule + throw new ArithmeticException("Invalid operation"); + workmc = new MathContext(mc.precision + elength + 1, + mc.roundingMode); + } + // ready to carry out power calculation... + BigDecimal acc = ONE; // accumulator + boolean seenbit = false; // set once we've seen a 1-bit + for (int i=1;;i++) { // for each bit [top bit ignored] + mag += mag; // shift left 1 bit + if (mag < 0) { // top bit is set + seenbit = true; // OK, we're off + acc = acc.multiply(lhs, workmc); // acc=acc*x + } + if (i == 31) + break; // that was the last bit + if (seenbit) + acc=acc.multiply(acc, workmc); // acc=acc*acc [square] + // else (!seenbit) no point in squaring ONE + } + // if negative n, calculate the reciprocal using working precision + if (n < 0) // [hence mc.precision>0] + acc=ONE.divide(acc, workmc); + // round to final precision and strip zeros + return doRound(acc, mc); + } + + /** + * Returns a {@code BigDecimal} whose value is the absolute value + * of this {@code BigDecimal}, and whose scale is + * {@code this.scale()}. + * + * @return {@code abs(this)} + */ + public BigDecimal abs() { + return (signum() < 0 ? negate() : this); + } + + /** + * Returns a {@code BigDecimal} whose value is the absolute value + * of this {@code BigDecimal}, with rounding according to the + * context settings. + * + * @param mc the context to use. + * @return {@code abs(this)}, rounded as necessary. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @since 1.5 + */ + public BigDecimal abs(MathContext mc) { + return (signum() < 0 ? negate(mc) : plus(mc)); + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (-this)}, + * and whose scale is {@code this.scale()}. + * + * @return {@code -this}. + */ + public BigDecimal negate() { + if (intCompact == INFLATED) { + return new BigDecimal(intVal.negate(), INFLATED, scale, precision); + } else { + return valueOf(-intCompact, scale, precision); + } + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (-this)}, + * with rounding according to the context settings. + * + * @param mc the context to use. + * @return {@code -this}, rounded as necessary. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @since 1.5 + */ + public BigDecimal negate(MathContext mc) { + return negate().plus(mc); + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (+this)}, and whose + * scale is {@code this.scale()}. + * + *

This method, which simply returns this {@code BigDecimal} + * is included for symmetry with the unary minus method {@link + * #negate()}. + * + * @return {@code this}. + * @see #negate() + * @since 1.5 + */ + public BigDecimal plus() { + return this; + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (+this)}, + * with rounding according to the context settings. + * + *

The effect of this method is identical to that of the {@link + * #round(MathContext)} method. + * + * @param mc the context to use. + * @return {@code this}, rounded as necessary. A zero result will + * have a scale of 0. + * @throws ArithmeticException if the result is inexact but the + * rounding mode is {@code UNNECESSARY}. + * @see #round(MathContext) + * @since 1.5 + */ + public BigDecimal plus(MathContext mc) { + if (mc.precision == 0) // no rounding please + return this; + return doRound(this, mc); + } + + /** + * Returns the signum function of this {@code BigDecimal}. + * + * @return -1, 0, or 1 as the value of this {@code BigDecimal} + * is negative, zero, or positive. + */ + public int signum() { + return (intCompact != INFLATED)? + Long.signum(intCompact): + intVal.signum(); + } + + /** + * Returns the scale of this {@code BigDecimal}. If zero + * or positive, the scale is the number of digits to the right of + * the decimal point. If negative, the unscaled value of the + * number is multiplied by ten to the power of the negation of the + * scale. For example, a scale of {@code -3} means the unscaled + * value is multiplied by 1000. + * + * @return the scale of this {@code BigDecimal}. + */ + public int scale() { + return scale; + } + + /** + * Returns the precision of this {@code BigDecimal}. (The + * precision is the number of digits in the unscaled value.) + * + *

The precision of a zero value is 1. + * + * @return the precision of this {@code BigDecimal}. + * @since 1.5 + */ + public int precision() { + int result = precision; + if (result == 0) { + long s = intCompact; + if (s != INFLATED) + result = longDigitLength(s); + else + result = bigDigitLength(intVal); + precision = result; + } + return result; + } + + + /** + * Returns a {@code BigInteger} whose value is the unscaled + * value of this {@code BigDecimal}. (Computes (this * + * 10this.scale()).) + * + * @return the unscaled value of this {@code BigDecimal}. + * @since 1.2 + */ + public BigInteger unscaledValue() { + return this.inflated(); + } + + // Rounding Modes + + /** + * Rounding mode to round away from zero. Always increments the + * digit prior to a nonzero discarded fraction. Note that this rounding + * mode never decreases the magnitude of the calculated value. + */ + public final static int ROUND_UP = 0; + + /** + * Rounding mode to round towards zero. Never increments the digit + * prior to a discarded fraction (i.e., truncates). Note that this + * rounding mode never increases the magnitude of the calculated value. + */ + public final static int ROUND_DOWN = 1; + + /** + * Rounding mode to round towards positive infinity. If the + * {@code BigDecimal} is positive, behaves as for + * {@code ROUND_UP}; if negative, behaves as for + * {@code ROUND_DOWN}. Note that this rounding mode never + * decreases the calculated value. + */ + public final static int ROUND_CEILING = 2; + + /** + * Rounding mode to round towards negative infinity. If the + * {@code BigDecimal} is positive, behave as for + * {@code ROUND_DOWN}; if negative, behave as for + * {@code ROUND_UP}. Note that this rounding mode never + * increases the calculated value. + */ + public final static int ROUND_FLOOR = 3; + + /** + * Rounding mode to round towards {@literal "nearest neighbor"} + * unless both neighbors are equidistant, in which case round up. + * Behaves as for {@code ROUND_UP} if the discarded fraction is + * ≥ 0.5; otherwise, behaves as for {@code ROUND_DOWN}. Note + * that this is the rounding mode that most of us were taught in + * grade school. + */ + public final static int ROUND_HALF_UP = 4; + + /** + * Rounding mode to round towards {@literal "nearest neighbor"} + * unless both neighbors are equidistant, in which case round + * down. Behaves as for {@code ROUND_UP} if the discarded + * fraction is {@literal >} 0.5; otherwise, behaves as for + * {@code ROUND_DOWN}. + */ + public final static int ROUND_HALF_DOWN = 5; + + /** + * Rounding mode to round towards the {@literal "nearest neighbor"} + * unless both neighbors are equidistant, in which case, round + * towards the even neighbor. Behaves as for + * {@code ROUND_HALF_UP} if the digit to the left of the + * discarded fraction is odd; behaves as for + * {@code ROUND_HALF_DOWN} if it's even. Note that this is the + * rounding mode that minimizes cumulative error when applied + * repeatedly over a sequence of calculations. + */ + public final static int ROUND_HALF_EVEN = 6; + + /** + * Rounding mode to assert that the requested operation has an exact + * result, hence no rounding is necessary. If this rounding mode is + * specified on an operation that yields an inexact result, an + * {@code ArithmeticException} is thrown. + */ + public final static int ROUND_UNNECESSARY = 7; + + + // Scaling/Rounding Operations + + /** + * Returns a {@code BigDecimal} rounded according to the + * {@code MathContext} settings. If the precision setting is 0 then + * no rounding takes place. + * + *

The effect of this method is identical to that of the + * {@link #plus(MathContext)} method. + * + * @param mc the context to use. + * @return a {@code BigDecimal} rounded according to the + * {@code MathContext} settings. + * @throws ArithmeticException if the rounding mode is + * {@code UNNECESSARY} and the + * {@code BigDecimal} operation would require rounding. + * @see #plus(MathContext) + * @since 1.5 + */ + public BigDecimal round(MathContext mc) { + return plus(mc); + } + + /** + * Returns a {@code BigDecimal} whose scale is the specified + * value, and whose unscaled value is determined by multiplying or + * dividing this {@code BigDecimal}'s unscaled value by the + * appropriate power of ten to maintain its overall value. If the + * scale is reduced by the operation, the unscaled value must be + * divided (rather than multiplied), and the value may be changed; + * in this case, the specified rounding mode is applied to the + * division. + * + *

Note that since BigDecimal objects are immutable, calls of + * this method do not result in the original object being + * modified, contrary to the usual convention of having methods + * named setX mutate field {@code X}. + * Instead, {@code setScale} returns an object with the proper + * scale; the returned object may or may not be newly allocated. + * + * @param newScale scale of the {@code BigDecimal} value to be returned. + * @param roundingMode The rounding mode to apply. + * @return a {@code BigDecimal} whose scale is the specified value, + * and whose unscaled value is determined by multiplying or + * dividing this {@code BigDecimal}'s unscaled value by the + * appropriate power of ten to maintain its overall value. + * @throws ArithmeticException if {@code roundingMode==UNNECESSARY} + * and the specified scaling operation would require + * rounding. + * @see RoundingMode + * @since 1.5 + */ + public BigDecimal setScale(int newScale, RoundingMode roundingMode) { + return setScale(newScale, roundingMode.oldMode); + } + + /** + * Returns a {@code BigDecimal} whose scale is the specified + * value, and whose unscaled value is determined by multiplying or + * dividing this {@code BigDecimal}'s unscaled value by the + * appropriate power of ten to maintain its overall value. If the + * scale is reduced by the operation, the unscaled value must be + * divided (rather than multiplied), and the value may be changed; + * in this case, the specified rounding mode is applied to the + * division. + * + *

Note that since BigDecimal objects are immutable, calls of + * this method do not result in the original object being + * modified, contrary to the usual convention of having methods + * named setX mutate field {@code X}. + * Instead, {@code setScale} returns an object with the proper + * scale; the returned object may or may not be newly allocated. + * + *

The new {@link #setScale(int, RoundingMode)} method should + * be used in preference to this legacy method. + * + * @param newScale scale of the {@code BigDecimal} value to be returned. + * @param roundingMode The rounding mode to apply. + * @return a {@code BigDecimal} whose scale is the specified value, + * and whose unscaled value is determined by multiplying or + * dividing this {@code BigDecimal}'s unscaled value by the + * appropriate power of ten to maintain its overall value. + * @throws ArithmeticException if {@code roundingMode==ROUND_UNNECESSARY} + * and the specified scaling operation would require + * rounding. + * @throws IllegalArgumentException if {@code roundingMode} does not + * represent a valid rounding mode. + * @see #ROUND_UP + * @see #ROUND_DOWN + * @see #ROUND_CEILING + * @see #ROUND_FLOOR + * @see #ROUND_HALF_UP + * @see #ROUND_HALF_DOWN + * @see #ROUND_HALF_EVEN + * @see #ROUND_UNNECESSARY + */ + public BigDecimal setScale(int newScale, int roundingMode) { + if (roundingMode < ROUND_UP || roundingMode > ROUND_UNNECESSARY) + throw new IllegalArgumentException("Invalid rounding mode"); + + int oldScale = this.scale; + if (newScale == oldScale) // easy case + return this; + if (this.signum() == 0) // zero can have any scale + return zeroValueOf(newScale); + if(this.intCompact!=INFLATED) { + long rs = this.intCompact; + if (newScale > oldScale) { + int raise = checkScale((long) newScale - oldScale); + if ((rs = longMultiplyPowerTen(rs, raise)) != INFLATED) { + return valueOf(rs,newScale); + } + BigInteger rb = bigMultiplyPowerTen(raise); + return new BigDecimal(rb, INFLATED, newScale, (precision > 0) ? precision + raise : 0); + } else { + // newScale < oldScale -- drop some digits + // Can't predict the precision due to the effect of rounding. + int drop = checkScale((long) oldScale - newScale); + if (drop < LONG_TEN_POWERS_TABLE.length) { + return divideAndRound(rs, LONG_TEN_POWERS_TABLE[drop], newScale, roundingMode, newScale); + } else { + return divideAndRound(this.inflated(), bigTenToThe(drop), newScale, roundingMode, newScale); + } + } + } else { + if (newScale > oldScale) { + int raise = checkScale((long) newScale - oldScale); + BigInteger rb = bigMultiplyPowerTen(this.intVal,raise); + return new BigDecimal(rb, INFLATED, newScale, (precision > 0) ? precision + raise : 0); + } else { + // newScale < oldScale -- drop some digits + // Can't predict the precision due to the effect of rounding. + int drop = checkScale((long) oldScale - newScale); + if (drop < LONG_TEN_POWERS_TABLE.length) + return divideAndRound(this.intVal, LONG_TEN_POWERS_TABLE[drop], newScale, roundingMode, + newScale); + else + return divideAndRound(this.intVal, bigTenToThe(drop), newScale, roundingMode, newScale); + } + } + } + + /** + * Returns a {@code BigDecimal} whose scale is the specified + * value, and whose value is numerically equal to this + * {@code BigDecimal}'s. Throws an {@code ArithmeticException} + * if this is not possible. + * + *

This call is typically used to increase the scale, in which + * case it is guaranteed that there exists a {@code BigDecimal} + * of the specified scale and the correct value. The call can + * also be used to reduce the scale if the caller knows that the + * {@code BigDecimal} has sufficiently many zeros at the end of + * its fractional part (i.e., factors of ten in its integer value) + * to allow for the rescaling without changing its value. + * + *

This method returns the same result as the two-argument + * versions of {@code setScale}, but saves the caller the trouble + * of specifying a rounding mode in cases where it is irrelevant. + * + *

Note that since {@code BigDecimal} objects are immutable, + * calls of this method do not result in the original + * object being modified, contrary to the usual convention of + * having methods named setX mutate field + * {@code X}. Instead, {@code setScale} returns an + * object with the proper scale; the returned object may or may + * not be newly allocated. + * + * @param newScale scale of the {@code BigDecimal} value to be returned. + * @return a {@code BigDecimal} whose scale is the specified value, and + * whose unscaled value is determined by multiplying or dividing + * this {@code BigDecimal}'s unscaled value by the appropriate + * power of ten to maintain its overall value. + * @throws ArithmeticException if the specified scaling operation would + * require rounding. + * @see #setScale(int, int) + * @see #setScale(int, RoundingMode) + */ + public BigDecimal setScale(int newScale) { + return setScale(newScale, ROUND_UNNECESSARY); + } + + // Decimal Point Motion Operations + + /** + * Returns a {@code BigDecimal} which is equivalent to this one + * with the decimal point moved {@code n} places to the left. If + * {@code n} is non-negative, the call merely adds {@code n} to + * the scale. If {@code n} is negative, the call is equivalent + * to {@code movePointRight(-n)}. The {@code BigDecimal} + * returned by this call has value (this × + * 10-n) and scale {@code max(this.scale()+n, + * 0)}. + * + * @param n number of places to move the decimal point to the left. + * @return a {@code BigDecimal} which is equivalent to this one with the + * decimal point moved {@code n} places to the left. + * @throws ArithmeticException if scale overflows. + */ + public BigDecimal movePointLeft(int n) { + // Cannot use movePointRight(-n) in case of n==Integer.MIN_VALUE + int newScale = checkScale((long)scale + n); + BigDecimal num = new BigDecimal(intVal, intCompact, newScale, 0); + return num.scale < 0 ? num.setScale(0, ROUND_UNNECESSARY) : num; + } + + /** + * Returns a {@code BigDecimal} which is equivalent to this one + * with the decimal point moved {@code n} places to the right. + * If {@code n} is non-negative, the call merely subtracts + * {@code n} from the scale. If {@code n} is negative, the call + * is equivalent to {@code movePointLeft(-n)}. The + * {@code BigDecimal} returned by this call has value (this + * × 10n) and scale {@code max(this.scale()-n, + * 0)}. + * + * @param n number of places to move the decimal point to the right. + * @return a {@code BigDecimal} which is equivalent to this one + * with the decimal point moved {@code n} places to the right. + * @throws ArithmeticException if scale overflows. + */ + public BigDecimal movePointRight(int n) { + // Cannot use movePointLeft(-n) in case of n==Integer.MIN_VALUE + int newScale = checkScale((long)scale - n); + BigDecimal num = new BigDecimal(intVal, intCompact, newScale, 0); + return num.scale < 0 ? num.setScale(0, ROUND_UNNECESSARY) : num; + } + + /** + * Returns a BigDecimal whose numerical value is equal to + * ({@code this} * 10n). The scale of + * the result is {@code (this.scale() - n)}. + * + * @param n the exponent power of ten to scale by + * @return a BigDecimal whose numerical value is equal to + * ({@code this} * 10n) + * @throws ArithmeticException if the scale would be + * outside the range of a 32-bit integer. + * + * @since 1.5 + */ + public BigDecimal scaleByPowerOfTen(int n) { + return new BigDecimal(intVal, intCompact, + checkScale((long)scale - n), precision); + } + + /** + * Returns a {@code BigDecimal} which is numerically equal to + * this one but with any trailing zeros removed from the + * representation. For example, stripping the trailing zeros from + * the {@code BigDecimal} value {@code 600.0}, which has + * [{@code BigInteger}, {@code scale}] components equals to + * [6000, 1], yields {@code 6E2} with [{@code BigInteger}, + * {@code scale}] components equals to [6, -2]. If + * this BigDecimal is numerically equal to zero, then + * {@code BigDecimal.ZERO} is returned. + * + * @return a numerically equal {@code BigDecimal} with any + * trailing zeros removed. + * @since 1.5 + */ + public BigDecimal stripTrailingZeros() { + if (intCompact == 0 || (intVal != null && intVal.signum() == 0)) { + return BigDecimal.ZERO; + } else if (intCompact != INFLATED) { + return createAndStripZerosToMatchScale(intCompact, scale, Long.MIN_VALUE); + } else { + return createAndStripZerosToMatchScale(intVal, scale, Long.MIN_VALUE); + } + } + + // Comparison Operations + + /** + * Compares this {@code BigDecimal} with the specified + * {@code BigDecimal}. Two {@code BigDecimal} objects that are + * equal in value but have a different scale (like 2.0 and 2.00) + * are considered equal by this method. This method is provided + * in preference to individual methods for each of the six boolean + * comparison operators ({@literal <}, ==, + * {@literal >}, {@literal >=}, !=, {@literal <=}). The + * suggested idiom for performing these comparisons is: + * {@code (x.compareTo(y)} <op> {@code 0)}, where + * <op> is one of the six comparison operators. + * + * @param val {@code BigDecimal} to which this {@code BigDecimal} is + * to be compared. + * @return -1, 0, or 1 as this {@code BigDecimal} is numerically + * less than, equal to, or greater than {@code val}. + */ + public int compareTo(BigDecimal val) { + // Quick path for equal scale and non-inflated case. + if (scale == val.scale) { + long xs = intCompact; + long ys = val.intCompact; + if (xs != INFLATED && ys != INFLATED) + return xs != ys ? ((xs > ys) ? 1 : -1) : 0; + } + int xsign = this.signum(); + int ysign = val.signum(); + if (xsign != ysign) + return (xsign > ysign) ? 1 : -1; + if (xsign == 0) + return 0; + int cmp = compareMagnitude(val); + return (xsign > 0) ? cmp : -cmp; + } + + /** + * Version of compareTo that ignores sign. + */ + private int compareMagnitude(BigDecimal val) { + // Match scales, avoid unnecessary inflation + long ys = val.intCompact; + long xs = this.intCompact; + if (xs == 0) + return (ys == 0) ? 0 : -1; + if (ys == 0) + return 1; + + long sdiff = (long)this.scale - val.scale; + if (sdiff != 0) { + // Avoid matching scales if the (adjusted) exponents differ + long xae = (long)this.precision() - this.scale; // [-1] + long yae = (long)val.precision() - val.scale; // [-1] + if (xae < yae) + return -1; + if (xae > yae) + return 1; + BigInteger rb = null; + if (sdiff < 0) { + // The cases sdiff <= Integer.MIN_VALUE intentionally fall through. + if ( sdiff > Integer.MIN_VALUE && + (xs == INFLATED || + (xs = longMultiplyPowerTen(xs, (int)-sdiff)) == INFLATED) && + ys == INFLATED) { + rb = bigMultiplyPowerTen((int)-sdiff); + return rb.compareMagnitude(val.intVal); + } + } else { // sdiff > 0 + // The cases sdiff > Integer.MAX_VALUE intentionally fall through. + if ( sdiff <= Integer.MAX_VALUE && + (ys == INFLATED || + (ys = longMultiplyPowerTen(ys, (int)sdiff)) == INFLATED) && + xs == INFLATED) { + rb = val.bigMultiplyPowerTen((int)sdiff); + return this.intVal.compareMagnitude(rb); + } + } + } + if (xs != INFLATED) + return (ys != INFLATED) ? longCompareMagnitude(xs, ys) : -1; + else if (ys != INFLATED) + return 1; + else + return this.intVal.compareMagnitude(val.intVal); + } + + /** + * Compares this {@code BigDecimal} with the specified + * {@code Object} for equality. Unlike {@link + * #compareTo(BigDecimal) compareTo}, this method considers two + * {@code BigDecimal} objects equal only if they are equal in + * value and scale (thus 2.0 is not equal to 2.00 when compared by + * this method). + * + * @param x {@code Object} to which this {@code BigDecimal} is + * to be compared. + * @return {@code true} if and only if the specified {@code Object} is a + * {@code BigDecimal} whose value and scale are equal to this + * {@code BigDecimal}'s. + * @see #compareTo(java.math.BigDecimal) + * @see #hashCode + */ + @Override + public boolean equals(Object x) { + if (!(x instanceof BigDecimal)) + return false; + BigDecimal xDec = (BigDecimal) x; + if (x == this) + return true; + if (scale != xDec.scale) + return false; + long s = this.intCompact; + long xs = xDec.intCompact; + if (s != INFLATED) { + if (xs == INFLATED) + xs = compactValFor(xDec.intVal); + return xs == s; + } else if (xs != INFLATED) + return xs == compactValFor(this.intVal); + + return this.inflated().equals(xDec.inflated()); + } + + /** + * Returns the minimum of this {@code BigDecimal} and + * {@code val}. + * + * @param val value with which the minimum is to be computed. + * @return the {@code BigDecimal} whose value is the lesser of this + * {@code BigDecimal} and {@code val}. If they are equal, + * as defined by the {@link #compareTo(BigDecimal) compareTo} + * method, {@code this} is returned. + * @see #compareTo(java.math.BigDecimal) + */ + public BigDecimal min(BigDecimal val) { + return (compareTo(val) <= 0 ? this : val); + } + + /** + * Returns the maximum of this {@code BigDecimal} and {@code val}. + * + * @param val value with which the maximum is to be computed. + * @return the {@code BigDecimal} whose value is the greater of this + * {@code BigDecimal} and {@code val}. If they are equal, + * as defined by the {@link #compareTo(BigDecimal) compareTo} + * method, {@code this} is returned. + * @see #compareTo(java.math.BigDecimal) + */ + public BigDecimal max(BigDecimal val) { + return (compareTo(val) >= 0 ? this : val); + } + + // Hash Function + + /** + * Returns the hash code for this {@code BigDecimal}. Note that + * two {@code BigDecimal} objects that are numerically equal but + * differ in scale (like 2.0 and 2.00) will generally not + * have the same hash code. + * + * @return hash code for this {@code BigDecimal}. + * @see #equals(Object) + */ + @Override + public int hashCode() { + if (intCompact != INFLATED) { + long val2 = (intCompact < 0)? -intCompact : intCompact; + int temp = (int)( ((int)(val2 >>> 32)) * 31 + + (val2 & LONG_MASK)); + return 31*((intCompact < 0) ?-temp:temp) + scale; + } else + return 31*intVal.hashCode() + scale; + } + + // Format Converters + + /** + * Returns the string representation of this {@code BigDecimal}, + * using scientific notation if an exponent is needed. + * + *

A standard canonical string form of the {@code BigDecimal} + * is created as though by the following steps: first, the + * absolute value of the unscaled value of the {@code BigDecimal} + * is converted to a string in base ten using the characters + * {@code '0'} through {@code '9'} with no leading zeros (except + * if its value is zero, in which case a single {@code '0'} + * character is used). + * + *

Next, an adjusted exponent is calculated; this is the + * negated scale, plus the number of characters in the converted + * unscaled value, less one. That is, + * {@code -scale+(ulength-1)}, where {@code ulength} is the + * length of the absolute value of the unscaled value in decimal + * digits (its precision). + * + *

If the scale is greater than or equal to zero and the + * adjusted exponent is greater than or equal to {@code -6}, the + * number will be converted to a character form without using + * exponential notation. In this case, if the scale is zero then + * no decimal point is added and if the scale is positive a + * decimal point will be inserted with the scale specifying the + * number of characters to the right of the decimal point. + * {@code '0'} characters are added to the left of the converted + * unscaled value as necessary. If no character precedes the + * decimal point after this insertion then a conventional + * {@code '0'} character is prefixed. + * + *

Otherwise (that is, if the scale is negative, or the + * adjusted exponent is less than {@code -6}), the number will be + * converted to a character form using exponential notation. In + * this case, if the converted {@code BigInteger} has more than + * one digit a decimal point is inserted after the first digit. + * An exponent in character form is then suffixed to the converted + * unscaled value (perhaps with inserted decimal point); this + * comprises the letter {@code 'E'} followed immediately by the + * adjusted exponent converted to a character form. The latter is + * in base ten, using the characters {@code '0'} through + * {@code '9'} with no leading zeros, and is always prefixed by a + * sign character {@code '-'} ('\u002D') if the + * adjusted exponent is negative, {@code '+'} + * ('\u002B') otherwise). + * + *

Finally, the entire string is prefixed by a minus sign + * character {@code '-'} ('\u002D') if the unscaled + * value is less than zero. No sign character is prefixed if the + * unscaled value is zero or positive. + * + *

Examples: + *

For each representation [unscaled value, scale] + * on the left, the resulting string is shown on the right. + *

+     * [123,0]      "123"
+     * [-123,0]     "-123"
+     * [123,-1]     "1.23E+3"
+     * [123,-3]     "1.23E+5"
+     * [123,1]      "12.3"
+     * [123,5]      "0.00123"
+     * [123,10]     "1.23E-8"
+     * [-123,12]    "-1.23E-10"
+     * 
+ * + * Notes: + *
    + * + *
  1. There is a one-to-one mapping between the distinguishable + * {@code BigDecimal} values and the result of this conversion. + * That is, every distinguishable {@code BigDecimal} value + * (unscaled value and scale) has a unique string representation + * as a result of using {@code toString}. If that string + * representation is converted back to a {@code BigDecimal} using + * the {@link #BigDecimal(String)} constructor, then the original + * value will be recovered. + * + *
  2. The string produced for a given number is always the same; + * it is not affected by locale. This means that it can be used + * as a canonical string representation for exchanging decimal + * data, or as a key for a Hashtable, etc. Locale-sensitive + * number formatting and parsing is handled by the {@link + * java.text.NumberFormat} class and its subclasses. + * + *
  3. The {@link #toEngineeringString} method may be used for + * presenting numbers with exponents in engineering notation, and the + * {@link #setScale(int,RoundingMode) setScale} method may be used for + * rounding a {@code BigDecimal} so it has a known number of digits after + * the decimal point. + * + *
  4. The digit-to-character mapping provided by + * {@code Character.forDigit} is used. + * + *
+ * + * @return string representation of this {@code BigDecimal}. + * @see Character#forDigit + * @see #BigDecimal(java.lang.String) + */ + @Override + public String toString() { + String sc = stringCache; + if (sc == null) + stringCache = sc = layoutChars(true); + return sc; + } + + /** + * Returns a string representation of this {@code BigDecimal}, + * using engineering notation if an exponent is needed. + * + *

Returns a string that represents the {@code BigDecimal} as + * described in the {@link #toString()} method, except that if + * exponential notation is used, the power of ten is adjusted to + * be a multiple of three (engineering notation) such that the + * integer part of nonzero values will be in the range 1 through + * 999. If exponential notation is used for zero values, a + * decimal point and one or two fractional zero digits are used so + * that the scale of the zero value is preserved. Note that + * unlike the output of {@link #toString()}, the output of this + * method is not guaranteed to recover the same [integer, + * scale] pair of this {@code BigDecimal} if the output string is + * converting back to a {@code BigDecimal} using the {@linkplain + * #BigDecimal(String) string constructor}. The result of this method meets + * the weaker constraint of always producing a numerically equal + * result from applying the string constructor to the method's output. + * + * @return string representation of this {@code BigDecimal}, using + * engineering notation if an exponent is needed. + * @since 1.5 + */ + public String toEngineeringString() { + return layoutChars(false); + } + + /** + * Returns a string representation of this {@code BigDecimal} + * without an exponent field. For values with a positive scale, + * the number of digits to the right of the decimal point is used + * to indicate scale. For values with a zero or negative scale, + * the resulting string is generated as if the value were + * converted to a numerically equal value with zero scale and as + * if all the trailing zeros of the zero scale value were present + * in the result. + * + * The entire string is prefixed by a minus sign character '-' + * ('\u002D') if the unscaled value is less than + * zero. No sign character is prefixed if the unscaled value is + * zero or positive. + * + * Note that if the result of this method is passed to the + * {@linkplain #BigDecimal(String) string constructor}, only the + * numerical value of this {@code BigDecimal} will necessarily be + * recovered; the representation of the new {@code BigDecimal} + * may have a different scale. In particular, if this + * {@code BigDecimal} has a negative scale, the string resulting + * from this method will have a scale of zero when processed by + * the string constructor. + * + * (This method behaves analogously to the {@code toString} + * method in 1.4 and earlier releases.) + * + * @return a string representation of this {@code BigDecimal} + * without an exponent field. + * @since 1.5 + * @see #toString() + * @see #toEngineeringString() + */ + public String toPlainString() { + if(scale==0) { + if(intCompact!=INFLATED) { + return Long.toString(intCompact); + } else { + return intVal.toString(); + } + } + if(this.scale<0) { // No decimal point + if(signum()==0) { + return "0"; + } + int tailingZeros = checkScaleNonZero((-(long)scale)); + StringBuilder buf; + if(intCompact!=INFLATED) { + buf = new StringBuilder(20+tailingZeros); + buf.append(intCompact); + } else { + String str = intVal.toString(); + buf = new StringBuilder(str.length()+tailingZeros); + buf.append(str); + } + for (int i = 0; i < tailingZeros; i++) + buf.append('0'); + return buf.toString(); + } + String str ; + if(intCompact!=INFLATED) { + str = Long.toString(Math.abs(intCompact)); + } else { + str = intVal.abs().toString(); + } + return getValueString(signum(), str, scale); + } + + /* Returns a digit.digit string */ + private String getValueString(int signum, String intString, int scale) { + /* Insert decimal point */ + StringBuilder buf; + int insertionPoint = intString.length() - scale; + if (insertionPoint == 0) { /* Point goes right before intVal */ + return (signum<0 ? "-0." : "0.") + intString; + } else if (insertionPoint > 0) { /* Point goes inside intVal */ + buf = new StringBuilder(intString); + buf.insert(insertionPoint, '.'); + if (signum < 0) + buf.insert(0, '-'); + } else { /* We must insert zeros between point and intVal */ + buf = new StringBuilder(3-insertionPoint + intString.length()); + buf.append(signum<0 ? "-0." : "0."); + for (int i=0; i<-insertionPoint; i++) + buf.append('0'); + buf.append(intString); + } + return buf.toString(); + } + + /** + * Converts this {@code BigDecimal} to a {@code BigInteger}. + * This conversion is analogous to the + * narrowing primitive conversion from {@code double} to + * {@code long} as defined in section 5.1.3 of + * The Java™ Language Specification: + * any fractional part of this + * {@code BigDecimal} will be discarded. Note that this + * conversion can lose information about the precision of the + * {@code BigDecimal} value. + *

+ * To have an exception thrown if the conversion is inexact (in + * other words if a nonzero fractional part is discarded), use the + * {@link #toBigIntegerExact()} method. + * + * @return this {@code BigDecimal} converted to a {@code BigInteger}. + */ + public BigInteger toBigInteger() { + // force to an integer, quietly + return this.setScale(0, ROUND_DOWN).inflated(); + } + + /** + * Converts this {@code BigDecimal} to a {@code BigInteger}, + * checking for lost information. An exception is thrown if this + * {@code BigDecimal} has a nonzero fractional part. + * + * @return this {@code BigDecimal} converted to a {@code BigInteger}. + * @throws ArithmeticException if {@code this} has a nonzero + * fractional part. + * @since 1.5 + */ + public BigInteger toBigIntegerExact() { + // round to an integer, with Exception if decimal part non-0 + return this.setScale(0, ROUND_UNNECESSARY).inflated(); + } + + /** + * Converts this {@code BigDecimal} to a {@code long}. + * This conversion is analogous to the + * narrowing primitive conversion from {@code double} to + * {@code short} as defined in section 5.1.3 of + * The Java™ Language Specification: + * any fractional part of this + * {@code BigDecimal} will be discarded, and if the resulting + * "{@code BigInteger}" is too big to fit in a + * {@code long}, only the low-order 64 bits are returned. + * Note that this conversion can lose information about the + * overall magnitude and precision of this {@code BigDecimal} value as well + * as return a result with the opposite sign. + * + * @return this {@code BigDecimal} converted to a {@code long}. + */ + public long longValue(){ + return (intCompact != INFLATED && scale == 0) ? + intCompact: + toBigInteger().longValue(); + } + + /** + * Converts this {@code BigDecimal} to a {@code long}, checking + * for lost information. If this {@code BigDecimal} has a + * nonzero fractional part or is out of the possible range for a + * {@code long} result then an {@code ArithmeticException} is + * thrown. + * + * @return this {@code BigDecimal} converted to a {@code long}. + * @throws ArithmeticException if {@code this} has a nonzero + * fractional part, or will not fit in a {@code long}. + * @since 1.5 + */ + public long longValueExact() { + if (intCompact != INFLATED && scale == 0) + return intCompact; + // If more than 19 digits in integer part it cannot possibly fit + if ((precision() - scale) > 19) // [OK for negative scale too] + throw new java.lang.ArithmeticException("Overflow"); + // Fastpath zero and < 1.0 numbers (the latter can be very slow + // to round if very small) + if (this.signum() == 0) + return 0; + if ((this.precision() - this.scale) <= 0) + throw new ArithmeticException("Rounding necessary"); + // round to an integer, with Exception if decimal part non-0 + BigDecimal num = this.setScale(0, ROUND_UNNECESSARY); + if (num.precision() >= 19) // need to check carefully + LongOverflow.check(num); + return num.inflated().longValue(); + } + + private static class LongOverflow { + /** BigInteger equal to Long.MIN_VALUE. */ + private static final BigInteger LONGMIN = BigInteger.valueOf(Long.MIN_VALUE); + + /** BigInteger equal to Long.MAX_VALUE. */ + private static final BigInteger LONGMAX = BigInteger.valueOf(Long.MAX_VALUE); + + public static void check(BigDecimal num) { + BigInteger intVal = num.inflated(); + if (intVal.compareTo(LONGMIN) < 0 || + intVal.compareTo(LONGMAX) > 0) + throw new java.lang.ArithmeticException("Overflow"); + } + } + + /** + * Converts this {@code BigDecimal} to an {@code int}. + * This conversion is analogous to the + * narrowing primitive conversion from {@code double} to + * {@code short} as defined in section 5.1.3 of + * The Java™ Language Specification: + * any fractional part of this + * {@code BigDecimal} will be discarded, and if the resulting + * "{@code BigInteger}" is too big to fit in an + * {@code int}, only the low-order 32 bits are returned. + * Note that this conversion can lose information about the + * overall magnitude and precision of this {@code BigDecimal} + * value as well as return a result with the opposite sign. + * + * @return this {@code BigDecimal} converted to an {@code int}. + */ + public int intValue() { + return (intCompact != INFLATED && scale == 0) ? + (int)intCompact : + toBigInteger().intValue(); + } + + /** + * Converts this {@code BigDecimal} to an {@code int}, checking + * for lost information. If this {@code BigDecimal} has a + * nonzero fractional part or is out of the possible range for an + * {@code int} result then an {@code ArithmeticException} is + * thrown. + * + * @return this {@code BigDecimal} converted to an {@code int}. + * @throws ArithmeticException if {@code this} has a nonzero + * fractional part, or will not fit in an {@code int}. + * @since 1.5 + */ + public int intValueExact() { + long num; + num = this.longValueExact(); // will check decimal part + if ((int)num != num) + throw new java.lang.ArithmeticException("Overflow"); + return (int)num; + } + + /** + * Converts this {@code BigDecimal} to a {@code short}, checking + * for lost information. If this {@code BigDecimal} has a + * nonzero fractional part or is out of the possible range for a + * {@code short} result then an {@code ArithmeticException} is + * thrown. + * + * @return this {@code BigDecimal} converted to a {@code short}. + * @throws ArithmeticException if {@code this} has a nonzero + * fractional part, or will not fit in a {@code short}. + * @since 1.5 + */ + public short shortValueExact() { + long num; + num = this.longValueExact(); // will check decimal part + if ((short)num != num) + throw new java.lang.ArithmeticException("Overflow"); + return (short)num; + } + + /** + * Converts this {@code BigDecimal} to a {@code byte}, checking + * for lost information. If this {@code BigDecimal} has a + * nonzero fractional part or is out of the possible range for a + * {@code byte} result then an {@code ArithmeticException} is + * thrown. + * + * @return this {@code BigDecimal} converted to a {@code byte}. + * @throws ArithmeticException if {@code this} has a nonzero + * fractional part, or will not fit in a {@code byte}. + * @since 1.5 + */ + public byte byteValueExact() { + long num; + num = this.longValueExact(); // will check decimal part + if ((byte)num != num) + throw new java.lang.ArithmeticException("Overflow"); + return (byte)num; + } + + /** + * Converts this {@code BigDecimal} to a {@code float}. + * This conversion is similar to the + * narrowing primitive conversion from {@code double} to + * {@code float} as defined in section 5.1.3 of + * The Java™ Language Specification: + * if this {@code BigDecimal} has too great a + * magnitude to represent as a {@code float}, it will be + * converted to {@link Float#NEGATIVE_INFINITY} or {@link + * Float#POSITIVE_INFINITY} as appropriate. Note that even when + * the return value is finite, this conversion can lose + * information about the precision of the {@code BigDecimal} + * value. + * + * @return this {@code BigDecimal} converted to a {@code float}. + */ + public float floatValue(){ + if(intCompact != INFLATED) { + if (scale == 0) { + return (float)intCompact; + } else { + /* + * If both intCompact and the scale can be exactly + * represented as float values, perform a single float + * multiply or divide to compute the (properly + * rounded) result. + */ + if (Math.abs(intCompact) < 1L<<22 ) { + // Don't have too guard against + // Math.abs(MIN_VALUE) because of outer check + // against INFLATED. + if (scale > 0 && scale < float10pow.length) { + return (float)intCompact / float10pow[scale]; + } else if (scale < 0 && scale > -float10pow.length) { + return (float)intCompact * float10pow[-scale]; + } + } + } + } + // Somewhat inefficient, but guaranteed to work. + return Float.parseFloat(this.toString()); + } + + /** + * Converts this {@code BigDecimal} to a {@code double}. + * This conversion is similar to the + * narrowing primitive conversion from {@code double} to + * {@code float} as defined in section 5.1.3 of + * The Java™ Language Specification: + * if this {@code BigDecimal} has too great a + * magnitude represent as a {@code double}, it will be + * converted to {@link Double#NEGATIVE_INFINITY} or {@link + * Double#POSITIVE_INFINITY} as appropriate. Note that even when + * the return value is finite, this conversion can lose + * information about the precision of the {@code BigDecimal} + * value. + * + * @return this {@code BigDecimal} converted to a {@code double}. + */ + public double doubleValue(){ + if(intCompact != INFLATED) { + if (scale == 0) { + return (double)intCompact; + } else { + /* + * If both intCompact and the scale can be exactly + * represented as double values, perform a single + * double multiply or divide to compute the (properly + * rounded) result. + */ + if (Math.abs(intCompact) < 1L<<52 ) { + // Don't have too guard against + // Math.abs(MIN_VALUE) because of outer check + // against INFLATED. + if (scale > 0 && scale < double10pow.length) { + return (double)intCompact / double10pow[scale]; + } else if (scale < 0 && scale > -double10pow.length) { + return (double)intCompact * double10pow[-scale]; + } + } + } + } + // Somewhat inefficient, but guaranteed to work. + return Double.parseDouble(this.toString()); + } + + /** + * Powers of 10 which can be represented exactly in {@code + * double}. + */ + private static final double double10pow[] = { + 1.0e0, 1.0e1, 1.0e2, 1.0e3, 1.0e4, 1.0e5, + 1.0e6, 1.0e7, 1.0e8, 1.0e9, 1.0e10, 1.0e11, + 1.0e12, 1.0e13, 1.0e14, 1.0e15, 1.0e16, 1.0e17, + 1.0e18, 1.0e19, 1.0e20, 1.0e21, 1.0e22 + }; + + /** + * Powers of 10 which can be represented exactly in {@code + * float}. + */ + private static final float float10pow[] = { + 1.0e0f, 1.0e1f, 1.0e2f, 1.0e3f, 1.0e4f, 1.0e5f, + 1.0e6f, 1.0e7f, 1.0e8f, 1.0e9f, 1.0e10f + }; + + /** + * Returns the size of an ulp, a unit in the last place, of this + * {@code BigDecimal}. An ulp of a nonzero {@code BigDecimal} + * value is the positive distance between this value and the + * {@code BigDecimal} value next larger in magnitude with the + * same number of digits. An ulp of a zero value is numerically + * equal to 1 with the scale of {@code this}. The result is + * stored with the same scale as {@code this} so the result + * for zero and nonzero values is equal to {@code [1, + * this.scale()]}. + * + * @return the size of an ulp of {@code this} + * @since 1.5 + */ + public BigDecimal ulp() { + return BigDecimal.valueOf(1, this.scale(), 1); + } + + // Private class to build a string representation for BigDecimal object. + // "StringBuilderHelper" is constructed as a thread local variable so it is + // thread safe. The StringBuilder field acts as a buffer to hold the temporary + // representation of BigDecimal. The cmpCharArray holds all the characters for + // the compact representation of BigDecimal (except for '-' sign' if it is + // negative) if its intCompact field is not INFLATED. It is shared by all + // calls to toString() and its variants in that particular thread. + static class StringBuilderHelper { + final StringBuilder sb; // Placeholder for BigDecimal string + final char[] cmpCharArray; // character array to place the intCompact + + StringBuilderHelper() { + sb = new StringBuilder(); + // All non negative longs can be made to fit into 19 character array. + cmpCharArray = new char[19]; + } + + // Accessors. + StringBuilder getStringBuilder() { + sb.setLength(0); + return sb; + } + + char[] getCompactCharArray() { + return cmpCharArray; + } + + /** + * Places characters representing the intCompact in {@code long} into + * cmpCharArray and returns the offset to the array where the + * representation starts. + * + * @param intCompact the number to put into the cmpCharArray. + * @return offset to the array where the representation starts. + * Note: intCompact must be greater or equal to zero. + */ + int putIntCompact(long intCompact) { + assert intCompact >= 0; + + long q; + int r; + // since we start from the least significant digit, charPos points to + // the last character in cmpCharArray. + int charPos = cmpCharArray.length; + + // Get 2 digits/iteration using longs until quotient fits into an int + while (intCompact > Integer.MAX_VALUE) { + q = intCompact / 100; + r = (int)(intCompact - q * 100); + intCompact = q; + cmpCharArray[--charPos] = DIGIT_ONES[r]; + cmpCharArray[--charPos] = DIGIT_TENS[r]; + } + + // Get 2 digits/iteration using ints when i2 >= 100 + int q2; + int i2 = (int)intCompact; + while (i2 >= 100) { + q2 = i2 / 100; + r = i2 - q2 * 100; + i2 = q2; + cmpCharArray[--charPos] = DIGIT_ONES[r]; + cmpCharArray[--charPos] = DIGIT_TENS[r]; + } + + cmpCharArray[--charPos] = DIGIT_ONES[i2]; + if (i2 >= 10) + cmpCharArray[--charPos] = DIGIT_TENS[i2]; + + return charPos; + } + + final static char[] DIGIT_TENS = { + '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', + '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', + '2', '2', '2', '2', '2', '2', '2', '2', '2', '2', + '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', + '4', '4', '4', '4', '4', '4', '4', '4', '4', '4', + '5', '5', '5', '5', '5', '5', '5', '5', '5', '5', + '6', '6', '6', '6', '6', '6', '6', '6', '6', '6', + '7', '7', '7', '7', '7', '7', '7', '7', '7', '7', + '8', '8', '8', '8', '8', '8', '8', '8', '8', '8', + '9', '9', '9', '9', '9', '9', '9', '9', '9', '9', + }; + + final static char[] DIGIT_ONES = { + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }; + } + + /** + * Lay out this {@code BigDecimal} into a {@code char[]} array. + * The Java 1.2 equivalent to this was called {@code getValueString}. + * + * @param sci {@code true} for Scientific exponential notation; + * {@code false} for Engineering + * @return string with canonical string representation of this + * {@code BigDecimal} + */ + private String layoutChars(boolean sci) { + if (scale == 0) // zero scale is trivial + return (intCompact != INFLATED) ? + Long.toString(intCompact): + intVal.toString(); + if (scale == 2 && + intCompact >= 0 && intCompact < Integer.MAX_VALUE) { + // currency fast path + int lowInt = (int)intCompact % 100; + int highInt = (int)intCompact / 100; + return (Integer.toString(highInt) + '.' + + StringBuilderHelper.DIGIT_TENS[lowInt] + + StringBuilderHelper.DIGIT_ONES[lowInt]) ; + } + + StringBuilderHelper sbHelper = threadLocalStringBuilderHelper.get(); + char[] coeff; + int offset; // offset is the starting index for coeff array + // Get the significand as an absolute value + if (intCompact != INFLATED) { + offset = sbHelper.putIntCompact(Math.abs(intCompact)); + coeff = sbHelper.getCompactCharArray(); + } else { + offset = 0; + coeff = intVal.abs().toString().toCharArray(); + } + + // Construct a buffer, with sufficient capacity for all cases. + // If E-notation is needed, length will be: +1 if negative, +1 + // if '.' needed, +2 for "E+", + up to 10 for adjusted exponent. + // Otherwise it could have +1 if negative, plus leading "0.00000" + StringBuilder buf = sbHelper.getStringBuilder(); + if (signum() < 0) // prefix '-' if negative + buf.append('-'); + int coeffLen = coeff.length - offset; + long adjusted = -(long)scale + (coeffLen -1); + if ((scale >= 0) && (adjusted >= -6)) { // plain number + int pad = scale - coeffLen; // count of padding zeros + if (pad >= 0) { // 0.xxx form + buf.append('0'); + buf.append('.'); + for (; pad>0; pad--) { + buf.append('0'); + } + buf.append(coeff, offset, coeffLen); + } else { // xx.xx form + buf.append(coeff, offset, -pad); + buf.append('.'); + buf.append(coeff, -pad + offset, scale); + } + } else { // E-notation is needed + if (sci) { // Scientific notation + buf.append(coeff[offset]); // first character + if (coeffLen > 1) { // more to come + buf.append('.'); + buf.append(coeff, offset + 1, coeffLen - 1); + } + } else { // Engineering notation + int sig = (int)(adjusted % 3); + if (sig < 0) + sig += 3; // [adjusted was negative] + adjusted -= sig; // now a multiple of 3 + sig++; + if (signum() == 0) { + switch (sig) { + case 1: + buf.append('0'); // exponent is a multiple of three + break; + case 2: + buf.append("0.00"); + adjusted += 3; + break; + case 3: + buf.append("0.0"); + adjusted += 3; + break; + default: + throw new AssertionError("Unexpected sig value " + sig); + } + } else if (sig >= coeffLen) { // significand all in integer + buf.append(coeff, offset, coeffLen); + // may need some zeros, too + for (int i = sig - coeffLen; i > 0; i--) + buf.append('0'); + } else { // xx.xxE form + buf.append(coeff, offset, sig); + buf.append('.'); + buf.append(coeff, offset + sig, coeffLen - sig); + } + } + if (adjusted != 0) { // [!sci could have made 0] + buf.append('E'); + if (adjusted > 0) // force sign for positive + buf.append('+'); + buf.append(adjusted); + } + } + return buf.toString(); + } + + /** + * Return 10 to the power n, as a {@code BigInteger}. + * + * @param n the power of ten to be returned (>=0) + * @return a {@code BigInteger} with the value (10n) + */ + private static BigInteger bigTenToThe(int n) { + if (n < 0) + return BigInteger.ZERO; + + if (n < BIG_TEN_POWERS_TABLE_MAX) { + BigInteger[] pows = BIG_TEN_POWERS_TABLE; + if (n < pows.length) + return pows[n]; + else + return expandBigIntegerTenPowers(n); + } + + return BigInteger.TEN.pow(n); + } + + /** + * Expand the BIG_TEN_POWERS_TABLE array to contain at least 10**n. + * + * @param n the power of ten to be returned (>=0) + * @return a {@code BigDecimal} with the value (10n) and + * in the meantime, the BIG_TEN_POWERS_TABLE array gets + * expanded to the size greater than n. + */ + private static BigInteger expandBigIntegerTenPowers(int n) { + synchronized(BigDecimal.class) { + BigInteger[] pows = BIG_TEN_POWERS_TABLE; + int curLen = pows.length; + // The following comparison and the above synchronized statement is + // to prevent multiple threads from expanding the same array. + if (curLen <= n) { + int newLen = curLen << 1; + while (newLen <= n) + newLen <<= 1; + pows = Arrays.copyOf(pows, newLen); + for (int i = curLen; i < newLen; i++) + pows[i] = pows[i - 1].multiply(BigInteger.TEN); + // Based on the following facts: + // 1. pows is a private local varible; + // 2. the following store is a volatile store. + // the newly created array elements can be safely published. + BIG_TEN_POWERS_TABLE = pows; + } + return pows[n]; + } + } + + private static final long[] LONG_TEN_POWERS_TABLE = { + 1, // 0 / 10^0 + 10, // 1 / 10^1 + 100, // 2 / 10^2 + 1000, // 3 / 10^3 + 10000, // 4 / 10^4 + 100000, // 5 / 10^5 + 1000000, // 6 / 10^6 + 10000000, // 7 / 10^7 + 100000000, // 8 / 10^8 + 1000000000, // 9 / 10^9 + 10000000000L, // 10 / 10^10 + 100000000000L, // 11 / 10^11 + 1000000000000L, // 12 / 10^12 + 10000000000000L, // 13 / 10^13 + 100000000000000L, // 14 / 10^14 + 1000000000000000L, // 15 / 10^15 + 10000000000000000L, // 16 / 10^16 + 100000000000000000L, // 17 / 10^17 + 1000000000000000000L // 18 / 10^18 + }; + + private static volatile BigInteger BIG_TEN_POWERS_TABLE[] = { + BigInteger.ONE, + BigInteger.valueOf(10), + BigInteger.valueOf(100), + BigInteger.valueOf(1000), + BigInteger.valueOf(10000), + BigInteger.valueOf(100000), + BigInteger.valueOf(1000000), + BigInteger.valueOf(10000000), + BigInteger.valueOf(100000000), + BigInteger.valueOf(1000000000), + BigInteger.valueOf(10000000000L), + BigInteger.valueOf(100000000000L), + BigInteger.valueOf(1000000000000L), + BigInteger.valueOf(10000000000000L), + BigInteger.valueOf(100000000000000L), + BigInteger.valueOf(1000000000000000L), + BigInteger.valueOf(10000000000000000L), + BigInteger.valueOf(100000000000000000L), + BigInteger.valueOf(1000000000000000000L) + }; + + private static final int BIG_TEN_POWERS_TABLE_INITLEN = + BIG_TEN_POWERS_TABLE.length; + private static final int BIG_TEN_POWERS_TABLE_MAX = + 16 * BIG_TEN_POWERS_TABLE_INITLEN; + + private static final long THRESHOLDS_TABLE[] = { + Long.MAX_VALUE, // 0 + Long.MAX_VALUE/10L, // 1 + Long.MAX_VALUE/100L, // 2 + Long.MAX_VALUE/1000L, // 3 + Long.MAX_VALUE/10000L, // 4 + Long.MAX_VALUE/100000L, // 5 + Long.MAX_VALUE/1000000L, // 6 + Long.MAX_VALUE/10000000L, // 7 + Long.MAX_VALUE/100000000L, // 8 + Long.MAX_VALUE/1000000000L, // 9 + Long.MAX_VALUE/10000000000L, // 10 + Long.MAX_VALUE/100000000000L, // 11 + Long.MAX_VALUE/1000000000000L, // 12 + Long.MAX_VALUE/10000000000000L, // 13 + Long.MAX_VALUE/100000000000000L, // 14 + Long.MAX_VALUE/1000000000000000L, // 15 + Long.MAX_VALUE/10000000000000000L, // 16 + Long.MAX_VALUE/100000000000000000L, // 17 + Long.MAX_VALUE/1000000000000000000L // 18 + }; + + /** + * Compute val * 10 ^ n; return this product if it is + * representable as a long, INFLATED otherwise. + */ + private static long longMultiplyPowerTen(long val, int n) { + if (val == 0 || n <= 0) + return val; + long[] tab = LONG_TEN_POWERS_TABLE; + long[] bounds = THRESHOLDS_TABLE; + if (n < tab.length && n < bounds.length) { + long tenpower = tab[n]; + if (val == 1) + return tenpower; + if (Math.abs(val) <= bounds[n]) + return val * tenpower; + } + return INFLATED; + } + + /** + * Compute this * 10 ^ n. + * Needed mainly to allow special casing to trap zero value + */ + private BigInteger bigMultiplyPowerTen(int n) { + if (n <= 0) + return this.inflated(); + + if (intCompact != INFLATED) + return bigTenToThe(n).multiply(intCompact); + else + return intVal.multiply(bigTenToThe(n)); + } + + /** + * Returns appropriate BigInteger from intVal field if intVal is + * null, i.e. the compact representation is in use. + */ + private BigInteger inflated() { + if (intVal == null) { + return BigInteger.valueOf(intCompact); + } + return intVal; + } + + /** + * Match the scales of two {@code BigDecimal}s to align their + * least significant digits. + * + *

If the scales of val[0] and val[1] differ, rescale + * (non-destructively) the lower-scaled {@code BigDecimal} so + * they match. That is, the lower-scaled reference will be + * replaced by a reference to a new object with the same scale as + * the other {@code BigDecimal}. + * + * @param val array of two elements referring to the two + * {@code BigDecimal}s to be aligned. + */ + private static void matchScale(BigDecimal[] val) { + if (val[0].scale == val[1].scale) { + return; + } else if (val[0].scale < val[1].scale) { + val[0] = val[0].setScale(val[1].scale, ROUND_UNNECESSARY); + } else if (val[1].scale < val[0].scale) { + val[1] = val[1].setScale(val[0].scale, ROUND_UNNECESSARY); + } + } + + private static class UnsafeHolder { + private static final sun.misc.Unsafe unsafe; + private static final long intCompactOffset; + private static final long intValOffset; + static { + try { + unsafe = sun.misc.Unsafe.getUnsafe(); + intCompactOffset = unsafe.objectFieldOffset + (BigDecimal.class.getDeclaredField("intCompact")); + intValOffset = unsafe.objectFieldOffset + (BigDecimal.class.getDeclaredField("intVal")); + } catch (Exception ex) { + throw new ExceptionInInitializerError(ex); + } + } + static void setIntCompactVolatile(BigDecimal bd, long val) { + unsafe.putLongVolatile(bd, intCompactOffset, val); + } + + static void setIntValVolatile(BigDecimal bd, BigInteger val) { + unsafe.putObjectVolatile(bd, intValOffset, val); + } + } + + /** + * Reconstitute the {@code BigDecimal} instance from a stream (that is, + * deserialize it). + * + * @param s the stream being read. + */ + private void readObject(java.io.ObjectInputStream s) + throws java.io.IOException, ClassNotFoundException { + // Read in all fields + s.defaultReadObject(); + // validate possibly bad fields + if (intVal == null) { + String message = "BigDecimal: null intVal in stream"; + throw new java.io.StreamCorruptedException(message); + // [all values of scale are now allowed] + } + UnsafeHolder.setIntCompactVolatile(this, compactValFor(intVal)); + } + + /** + * Serialize this {@code BigDecimal} to the stream in question + * + * @param s the stream to serialize to. + */ + private void writeObject(java.io.ObjectOutputStream s) + throws java.io.IOException { + // Must inflate to maintain compatible serial form. + if (this.intVal == null) + UnsafeHolder.setIntValVolatile(this, BigInteger.valueOf(this.intCompact)); + // Could reset intVal back to null if it has to be set. + s.defaultWriteObject(); + } + + /** + * Returns the length of the absolute value of a {@code long}, in decimal + * digits. + * + * @param x the {@code long} + * @return the length of the unscaled value, in deciaml digits. + */ + static int longDigitLength(long x) { + /* + * As described in "Bit Twiddling Hacks" by Sean Anderson, + * (http://graphics.stanford.edu/~seander/bithacks.html) + * integer log 10 of x is within 1 of (1233/4096)* (1 + + * integer log 2 of x). The fraction 1233/4096 approximates + * log10(2). So we first do a version of log2 (a variant of + * Long class with pre-checks and opposite directionality) and + * then scale and check against powers table. This is a little + * simpler in present context than the version in Hacker's + * Delight sec 11-4. Adding one to bit length allows comparing + * downward from the LONG_TEN_POWERS_TABLE that we need + * anyway. + */ + assert x != BigDecimal.INFLATED; + if (x < 0) + x = -x; + if (x < 10) // must screen for 0, might as well 10 + return 1; + int r = ((64 - Long.numberOfLeadingZeros(x) + 1) * 1233) >>> 12; + long[] tab = LONG_TEN_POWERS_TABLE; + // if r >= length, must have max possible digits for long + return (r >= tab.length || x < tab[r]) ? r : r + 1; + } + + /** + * Returns the length of the absolute value of a BigInteger, in + * decimal digits. + * + * @param b the BigInteger + * @return the length of the unscaled value, in decimal digits + */ + private static int bigDigitLength(BigInteger b) { + /* + * Same idea as the long version, but we need a better + * approximation of log10(2). Using 646456993/2^31 + * is accurate up to max possible reported bitLength. + */ + if (b.signum == 0) + return 1; + int r = (int)((((long)b.bitLength() + 1) * 646456993) >>> 31); + return b.compareMagnitude(bigTenToThe(r)) < 0? r : r+1; + } + + /** + * Check a scale for Underflow or Overflow. If this BigDecimal is + * nonzero, throw an exception if the scale is outof range. If this + * is zero, saturate the scale to the extreme value of the right + * sign if the scale is out of range. + * + * @param val The new scale. + * @throws ArithmeticException (overflow or underflow) if the new + * scale is out of range. + * @return validated scale as an int. + */ + private int checkScale(long val) { + int asInt = (int)val; + if (asInt != val) { + asInt = val>Integer.MAX_VALUE ? Integer.MAX_VALUE : Integer.MIN_VALUE; + BigInteger b; + if (intCompact != 0 && + ((b = intVal) == null || b.signum() != 0)) + throw new ArithmeticException(asInt>0 ? "Underflow":"Overflow"); + } + return asInt; + } + + /** + * Returns the compact value for given {@code BigInteger}, or + * INFLATED if too big. Relies on internal representation of + * {@code BigInteger}. + */ + private static long compactValFor(BigInteger b) { + int[] m = b.mag; + int len = m.length; + if (len == 0) + return 0; + int d = m[0]; + if (len > 2 || (len == 2 && d < 0)) + return INFLATED; + + long u = (len == 2)? + (((long) m[1] & LONG_MASK) + (((long)d) << 32)) : + (((long)d) & LONG_MASK); + return (b.signum < 0)? -u : u; + } + + private static int longCompareMagnitude(long x, long y) { + if (x < 0) + x = -x; + if (y < 0) + y = -y; + return (x < y) ? -1 : ((x == y) ? 0 : 1); + } + + private static int saturateLong(long s) { + int i = (int)s; + return (s == i) ? i : (s < 0 ? Integer.MIN_VALUE : Integer.MAX_VALUE); + } + + /* + * Internal printing routine + */ + private static void print(String name, BigDecimal bd) { + System.err.format("%s:\tintCompact %d\tintVal %d\tscale %d\tprecision %d%n", + name, + bd.intCompact, + bd.intVal, + bd.scale, + bd.precision); + } + + /** + * Check internal invariants of this BigDecimal. These invariants + * include: + * + *

    + * + *
  • The object must be initialized; either intCompact must not be + * INFLATED or intVal is non-null. Both of these conditions may + * be true. + * + *
  • If both intCompact and intVal and set, their values must be + * consistent. + * + *
  • If precision is nonzero, it must have the right value. + *
+ * + * Note: Since this is an audit method, we are not supposed to change the + * state of this BigDecimal object. + */ + private BigDecimal audit() { + if (intCompact == INFLATED) { + if (intVal == null) { + print("audit", this); + throw new AssertionError("null intVal"); + } + // Check precision + if (precision > 0 && precision != bigDigitLength(intVal)) { + print("audit", this); + throw new AssertionError("precision mismatch"); + } + } else { + if (intVal != null) { + long val = intVal.longValue(); + if (val != intCompact) { + print("audit", this); + throw new AssertionError("Inconsistent state, intCompact=" + + intCompact + "\t intVal=" + val); + } + } + // Check precision + if (precision > 0 && precision != longDigitLength(intCompact)) { + print("audit", this); + throw new AssertionError("precision mismatch"); + } + } + return this; + } + + /* the same as checkScale where value!=0 */ + private static int checkScaleNonZero(long val) { + int asInt = (int)val; + if (asInt != val) { + throw new ArithmeticException(asInt>0 ? "Underflow":"Overflow"); + } + return asInt; + } + + private static int checkScale(long intCompact, long val) { + int asInt = (int)val; + if (asInt != val) { + asInt = val>Integer.MAX_VALUE ? Integer.MAX_VALUE : Integer.MIN_VALUE; + if (intCompact != 0) + throw new ArithmeticException(asInt>0 ? "Underflow":"Overflow"); + } + return asInt; + } + + private static int checkScale(BigInteger intVal, long val) { + int asInt = (int)val; + if (asInt != val) { + asInt = val>Integer.MAX_VALUE ? Integer.MAX_VALUE : Integer.MIN_VALUE; + if (intVal.signum() != 0) + throw new ArithmeticException(asInt>0 ? "Underflow":"Overflow"); + } + return asInt; + } + + /** + * Returns a {@code BigDecimal} rounded according to the MathContext + * settings; + * If rounding is needed a new {@code BigDecimal} is created and returned. + * + * @param val the value to be rounded + * @param mc the context to use. + * @return a {@code BigDecimal} rounded according to the MathContext + * settings. May return {@code value}, if no rounding needed. + * @throws ArithmeticException if the rounding mode is + * {@code RoundingMode.UNNECESSARY} and the + * result is inexact. + */ + private static BigDecimal doRound(BigDecimal val, MathContext mc) { + int mcp = mc.precision; + boolean wasDivided = false; + if (mcp > 0) { + BigInteger intVal = val.intVal; + long compactVal = val.intCompact; + int scale = val.scale; + int prec = val.precision(); + int mode = mc.roundingMode.oldMode; + int drop; + if (compactVal == INFLATED) { + drop = prec - mcp; + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + intVal = divideAndRoundByTenPow(intVal, drop, mode); + wasDivided = true; + compactVal = compactValFor(intVal); + if (compactVal != INFLATED) { + prec = longDigitLength(compactVal); + break; + } + prec = bigDigitLength(intVal); + drop = prec - mcp; + } + } + if (compactVal != INFLATED) { + drop = prec - mcp; // drop can't be more than 18 + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + compactVal = divideAndRound(compactVal, LONG_TEN_POWERS_TABLE[drop], mc.roundingMode.oldMode); + wasDivided = true; + prec = longDigitLength(compactVal); + drop = prec - mcp; + intVal = null; + } + } + return wasDivided ? new BigDecimal(intVal,compactVal,scale,prec) : val; + } + return val; + } + + /* + * Returns a {@code BigDecimal} created from {@code long} value with + * given scale rounded according to the MathContext settings + */ + private static BigDecimal doRound(long compactVal, int scale, MathContext mc) { + int mcp = mc.precision; + if (mcp > 0 && mcp < 19) { + int prec = longDigitLength(compactVal); + int drop = prec - mcp; // drop can't be more than 18 + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + compactVal = divideAndRound(compactVal, LONG_TEN_POWERS_TABLE[drop], mc.roundingMode.oldMode); + prec = longDigitLength(compactVal); + drop = prec - mcp; + } + return valueOf(compactVal, scale, prec); + } + return valueOf(compactVal, scale); + } + + /* + * Returns a {@code BigDecimal} created from {@code BigInteger} value with + * given scale rounded according to the MathContext settings + */ + private static BigDecimal doRound(BigInteger intVal, int scale, MathContext mc) { + int mcp = mc.precision; + int prec = 0; + if (mcp > 0) { + long compactVal = compactValFor(intVal); + int mode = mc.roundingMode.oldMode; + int drop; + if (compactVal == INFLATED) { + prec = bigDigitLength(intVal); + drop = prec - mcp; + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + intVal = divideAndRoundByTenPow(intVal, drop, mode); + compactVal = compactValFor(intVal); + if (compactVal != INFLATED) { + break; + } + prec = bigDigitLength(intVal); + drop = prec - mcp; + } + } + if (compactVal != INFLATED) { + prec = longDigitLength(compactVal); + drop = prec - mcp; // drop can't be more than 18 + while (drop > 0) { + scale = checkScaleNonZero((long) scale - drop); + compactVal = divideAndRound(compactVal, LONG_TEN_POWERS_TABLE[drop], mc.roundingMode.oldMode); + prec = longDigitLength(compactVal); + drop = prec - mcp; + } + return valueOf(compactVal,scale,prec); + } + } + return new BigDecimal(intVal,INFLATED,scale,prec); + } + + /* + * Divides {@code BigInteger} value by ten power. + */ + private static BigInteger divideAndRoundByTenPow(BigInteger intVal, int tenPow, int roundingMode) { + if (tenPow < LONG_TEN_POWERS_TABLE.length) + intVal = divideAndRound(intVal, LONG_TEN_POWERS_TABLE[tenPow], roundingMode); + else + intVal = divideAndRound(intVal, bigTenToThe(tenPow), roundingMode); + return intVal; + } + + /** + * Internally used for division operation for division {@code long} by + * {@code long}. + * The returned {@code BigDecimal} object is the quotient whose scale is set + * to the passed in scale. If the remainder is not zero, it will be rounded + * based on the passed in roundingMode. Also, if the remainder is zero and + * the last parameter, i.e. preferredScale is NOT equal to scale, the + * trailing zeros of the result is stripped to match the preferredScale. + */ + private static BigDecimal divideAndRound(long ldividend, long ldivisor, int scale, int roundingMode, + int preferredScale) { + + int qsign; // quotient sign + long q = ldividend / ldivisor; // store quotient in long + if (roundingMode == ROUND_DOWN && scale == preferredScale) + return valueOf(q, scale); + long r = ldividend % ldivisor; // store remainder in long + qsign = ((ldividend < 0) == (ldivisor < 0)) ? 1 : -1; + if (r != 0) { + boolean increment = needIncrement(ldivisor, roundingMode, qsign, q, r); + return valueOf((increment ? q + qsign : q), scale); + } else { + if (preferredScale != scale) + return createAndStripZerosToMatchScale(q, scale, preferredScale); + else + return valueOf(q, scale); + } + } + + /** + * Divides {@code long} by {@code long} and do rounding based on the + * passed in roundingMode. + */ + private static long divideAndRound(long ldividend, long ldivisor, int roundingMode) { + int qsign; // quotient sign + long q = ldividend / ldivisor; // store quotient in long + if (roundingMode == ROUND_DOWN) + return q; + long r = ldividend % ldivisor; // store remainder in long + qsign = ((ldividend < 0) == (ldivisor < 0)) ? 1 : -1; + if (r != 0) { + boolean increment = needIncrement(ldivisor, roundingMode, qsign, q, r); + return increment ? q + qsign : q; + } else { + return q; + } + } + + /** + * Shared logic of need increment computation. + */ + private static boolean commonNeedIncrement(int roundingMode, int qsign, + int cmpFracHalf, boolean oddQuot) { + switch(roundingMode) { + case ROUND_UNNECESSARY: + throw new ArithmeticException("Rounding necessary"); + + case ROUND_UP: // Away from zero + return true; + + case ROUND_DOWN: // Towards zero + return false; + + case ROUND_CEILING: // Towards +infinity + return qsign > 0; + + case ROUND_FLOOR: // Towards -infinity + return qsign < 0; + + default: // Some kind of half-way rounding + assert roundingMode >= ROUND_HALF_UP && + roundingMode <= ROUND_HALF_EVEN: "Unexpected rounding mode" + RoundingMode.valueOf(roundingMode); + + if (cmpFracHalf < 0 ) // We're closer to higher digit + return false; + else if (cmpFracHalf > 0 ) // We're closer to lower digit + return true; + else { // half-way + assert cmpFracHalf == 0; + + switch(roundingMode) { + case ROUND_HALF_DOWN: + return false; + + case ROUND_HALF_UP: + return true; + + case ROUND_HALF_EVEN: + return oddQuot; + + default: + throw new AssertionError("Unexpected rounding mode" + roundingMode); + } + } + } + } + + /** + * Tests if quotient has to be incremented according the roundingMode + */ + private static boolean needIncrement(long ldivisor, int roundingMode, + int qsign, long q, long r) { + assert r != 0L; + + int cmpFracHalf; + if (r <= HALF_LONG_MIN_VALUE || r > HALF_LONG_MAX_VALUE) { + cmpFracHalf = 1; // 2 * r can't fit into long + } else { + cmpFracHalf = longCompareMagnitude(2 * r, ldivisor); + } + + return commonNeedIncrement(roundingMode, qsign, cmpFracHalf, (q & 1L) != 0L); + } + + /** + * Divides {@code BigInteger} value by {@code long} value and + * do rounding based on the passed in roundingMode. + */ + private static BigInteger divideAndRound(BigInteger bdividend, long ldivisor, int roundingMode) { + boolean isRemainderZero; // record remainder is zero or not + int qsign; // quotient sign + long r = 0; // store quotient & remainder in long + MutableBigInteger mq = null; // store quotient + // Descend into mutables for faster remainder checks + MutableBigInteger mdividend = new MutableBigInteger(bdividend.mag); + mq = new MutableBigInteger(); + r = mdividend.divide(ldivisor, mq); + isRemainderZero = (r == 0); + qsign = (ldivisor < 0) ? -bdividend.signum : bdividend.signum; + if (!isRemainderZero) { + if(needIncrement(ldivisor, roundingMode, qsign, mq, r)) { + mq.add(MutableBigInteger.ONE); + } + } + return mq.toBigInteger(qsign); + } + + /** + * Internally used for division operation for division {@code BigInteger} + * by {@code long}. + * The returned {@code BigDecimal} object is the quotient whose scale is set + * to the passed in scale. If the remainder is not zero, it will be rounded + * based on the passed in roundingMode. Also, if the remainder is zero and + * the last parameter, i.e. preferredScale is NOT equal to scale, the + * trailing zeros of the result is stripped to match the preferredScale. + */ + private static BigDecimal divideAndRound(BigInteger bdividend, + long ldivisor, int scale, int roundingMode, int preferredScale) { + boolean isRemainderZero; // record remainder is zero or not + int qsign; // quotient sign + long r = 0; // store quotient & remainder in long + MutableBigInteger mq = null; // store quotient + // Descend into mutables for faster remainder checks + MutableBigInteger mdividend = new MutableBigInteger(bdividend.mag); + mq = new MutableBigInteger(); + r = mdividend.divide(ldivisor, mq); + isRemainderZero = (r == 0); + qsign = (ldivisor < 0) ? -bdividend.signum : bdividend.signum; + if (!isRemainderZero) { + if(needIncrement(ldivisor, roundingMode, qsign, mq, r)) { + mq.add(MutableBigInteger.ONE); + } + return mq.toBigDecimal(qsign, scale); + } else { + if (preferredScale != scale) { + long compactVal = mq.toCompactValue(qsign); + if(compactVal!=INFLATED) { + return createAndStripZerosToMatchScale(compactVal, scale, preferredScale); + } + BigInteger intVal = mq.toBigInteger(qsign); + return createAndStripZerosToMatchScale(intVal,scale, preferredScale); + } else { + return mq.toBigDecimal(qsign, scale); + } + } + } + + /** + * Tests if quotient has to be incremented according the roundingMode + */ + private static boolean needIncrement(long ldivisor, int roundingMode, + int qsign, MutableBigInteger mq, long r) { + assert r != 0L; + + int cmpFracHalf; + if (r <= HALF_LONG_MIN_VALUE || r > HALF_LONG_MAX_VALUE) { + cmpFracHalf = 1; // 2 * r can't fit into long + } else { + cmpFracHalf = longCompareMagnitude(2 * r, ldivisor); + } + + return commonNeedIncrement(roundingMode, qsign, cmpFracHalf, mq.isOdd()); + } + + /** + * Divides {@code BigInteger} value by {@code BigInteger} value and + * do rounding based on the passed in roundingMode. + */ + private static BigInteger divideAndRound(BigInteger bdividend, BigInteger bdivisor, int roundingMode) { + boolean isRemainderZero; // record remainder is zero or not + int qsign; // quotient sign + // Descend into mutables for faster remainder checks + MutableBigInteger mdividend = new MutableBigInteger(bdividend.mag); + MutableBigInteger mq = new MutableBigInteger(); + MutableBigInteger mdivisor = new MutableBigInteger(bdivisor.mag); + MutableBigInteger mr = mdividend.divide(mdivisor, mq); + isRemainderZero = mr.isZero(); + qsign = (bdividend.signum != bdivisor.signum) ? -1 : 1; + if (!isRemainderZero) { + if (needIncrement(mdivisor, roundingMode, qsign, mq, mr)) { + mq.add(MutableBigInteger.ONE); + } + } + return mq.toBigInteger(qsign); + } + + /** + * Internally used for division operation for division {@code BigInteger} + * by {@code BigInteger}. + * The returned {@code BigDecimal} object is the quotient whose scale is set + * to the passed in scale. If the remainder is not zero, it will be rounded + * based on the passed in roundingMode. Also, if the remainder is zero and + * the last parameter, i.e. preferredScale is NOT equal to scale, the + * trailing zeros of the result is stripped to match the preferredScale. + */ + private static BigDecimal divideAndRound(BigInteger bdividend, BigInteger bdivisor, int scale, int roundingMode, + int preferredScale) { + boolean isRemainderZero; // record remainder is zero or not + int qsign; // quotient sign + // Descend into mutables for faster remainder checks + MutableBigInteger mdividend = new MutableBigInteger(bdividend.mag); + MutableBigInteger mq = new MutableBigInteger(); + MutableBigInteger mdivisor = new MutableBigInteger(bdivisor.mag); + MutableBigInteger mr = mdividend.divide(mdivisor, mq); + isRemainderZero = mr.isZero(); + qsign = (bdividend.signum != bdivisor.signum) ? -1 : 1; + if (!isRemainderZero) { + if (needIncrement(mdivisor, roundingMode, qsign, mq, mr)) { + mq.add(MutableBigInteger.ONE); + } + return mq.toBigDecimal(qsign, scale); + } else { + if (preferredScale != scale) { + long compactVal = mq.toCompactValue(qsign); + if (compactVal != INFLATED) { + return createAndStripZerosToMatchScale(compactVal, scale, preferredScale); + } + BigInteger intVal = mq.toBigInteger(qsign); + return createAndStripZerosToMatchScale(intVal, scale, preferredScale); + } else { + return mq.toBigDecimal(qsign, scale); + } + } + } + + /** + * Tests if quotient has to be incremented according the roundingMode + */ + private static boolean needIncrement(MutableBigInteger mdivisor, int roundingMode, + int qsign, MutableBigInteger mq, MutableBigInteger mr) { + assert !mr.isZero(); + int cmpFracHalf = mr.compareHalf(mdivisor); + return commonNeedIncrement(roundingMode, qsign, cmpFracHalf, mq.isOdd()); + } + + /** + * Remove insignificant trailing zeros from this + * {@code BigInteger} value until the preferred scale is reached or no + * more zeros can be removed. If the preferred scale is less than + * Integer.MIN_VALUE, all the trailing zeros will be removed. + * + * @return new {@code BigDecimal} with a scale possibly reduced + * to be closed to the preferred scale. + */ + private static BigDecimal createAndStripZerosToMatchScale(BigInteger intVal, int scale, long preferredScale) { + BigInteger qr[]; // quotient-remainder pair + while (intVal.compareMagnitude(BigInteger.TEN) >= 0 + && scale > preferredScale) { + if (intVal.testBit(0)) + break; // odd number cannot end in 0 + qr = intVal.divideAndRemainder(BigInteger.TEN); + if (qr[1].signum() != 0) + break; // non-0 remainder + intVal = qr[0]; + scale = checkScale(intVal,(long) scale - 1); // could Overflow + } + return valueOf(intVal, scale, 0); + } + + /** + * Remove insignificant trailing zeros from this + * {@code long} value until the preferred scale is reached or no + * more zeros can be removed. If the preferred scale is less than + * Integer.MIN_VALUE, all the trailing zeros will be removed. + * + * @return new {@code BigDecimal} with a scale possibly reduced + * to be closed to the preferred scale. + */ + private static BigDecimal createAndStripZerosToMatchScale(long compactVal, int scale, long preferredScale) { + while (Math.abs(compactVal) >= 10L && scale > preferredScale) { + if ((compactVal & 1L) != 0L) + break; // odd number cannot end in 0 + long r = compactVal % 10L; + if (r != 0L) + break; // non-0 remainder + compactVal /= 10; + scale = checkScale(compactVal, (long) scale - 1); // could Overflow + } + return valueOf(compactVal, scale); + } + + private static BigDecimal stripZerosToMatchScale(BigInteger intVal, long intCompact, int scale, int preferredScale) { + if(intCompact!=INFLATED) { + return createAndStripZerosToMatchScale(intCompact, scale, preferredScale); + } else { + return createAndStripZerosToMatchScale(intVal==null ? INFLATED_BIGINT : intVal, + scale, preferredScale); + } + } + + /* + * returns INFLATED if oveflow + */ + private static long add(long xs, long ys){ + long sum = xs + ys; + // See "Hacker's Delight" section 2-12 for explanation of + // the overflow test. + if ( (((sum ^ xs) & (sum ^ ys))) >= 0L) { // not overflowed + return sum; + } + return INFLATED; + } + + private static BigDecimal add(long xs, long ys, int scale){ + long sum = add(xs, ys); + if (sum!=INFLATED) + return BigDecimal.valueOf(sum, scale); + return new BigDecimal(BigInteger.valueOf(xs).add(ys), scale); + } + + private static BigDecimal add(final long xs, int scale1, final long ys, int scale2) { + long sdiff = (long) scale1 - scale2; + if (sdiff == 0) { + return add(xs, ys, scale1); + } else if (sdiff < 0) { + int raise = checkScale(xs,-sdiff); + long scaledX = longMultiplyPowerTen(xs, raise); + if (scaledX != INFLATED) { + return add(scaledX, ys, scale2); + } else { + BigInteger bigsum = bigMultiplyPowerTen(xs,raise).add(ys); + return ((xs^ys)>=0) ? // same sign test + new BigDecimal(bigsum, INFLATED, scale2, 0) + : valueOf(bigsum, scale2, 0); + } + } else { + int raise = checkScale(ys,sdiff); + long scaledY = longMultiplyPowerTen(ys, raise); + if (scaledY != INFLATED) { + return add(xs, scaledY, scale1); + } else { + BigInteger bigsum = bigMultiplyPowerTen(ys,raise).add(xs); + return ((xs^ys)>=0) ? + new BigDecimal(bigsum, INFLATED, scale1, 0) + : valueOf(bigsum, scale1, 0); + } + } + } + + private static BigDecimal add(final long xs, int scale1, BigInteger snd, int scale2) { + int rscale = scale1; + long sdiff = (long)rscale - scale2; + boolean sameSigns = (Long.signum(xs) == snd.signum); + BigInteger sum; + if (sdiff < 0) { + int raise = checkScale(xs,-sdiff); + rscale = scale2; + long scaledX = longMultiplyPowerTen(xs, raise); + if (scaledX == INFLATED) { + sum = snd.add(bigMultiplyPowerTen(xs,raise)); + } else { + sum = snd.add(scaledX); + } + } else { //if (sdiff > 0) { + int raise = checkScale(snd,sdiff); + snd = bigMultiplyPowerTen(snd,raise); + sum = snd.add(xs); + } + return (sameSigns) ? + new BigDecimal(sum, INFLATED, rscale, 0) : + valueOf(sum, rscale, 0); + } + + private static BigDecimal add(BigInteger fst, int scale1, BigInteger snd, int scale2) { + int rscale = scale1; + long sdiff = (long)rscale - scale2; + if (sdiff != 0) { + if (sdiff < 0) { + int raise = checkScale(fst,-sdiff); + rscale = scale2; + fst = bigMultiplyPowerTen(fst,raise); + } else { + int raise = checkScale(snd,sdiff); + snd = bigMultiplyPowerTen(snd,raise); + } + } + BigInteger sum = fst.add(snd); + return (fst.signum == snd.signum) ? + new BigDecimal(sum, INFLATED, rscale, 0) : + valueOf(sum, rscale, 0); + } + + private static BigInteger bigMultiplyPowerTen(long value, int n) { + if (n <= 0) + return BigInteger.valueOf(value); + return bigTenToThe(n).multiply(value); + } + + private static BigInteger bigMultiplyPowerTen(BigInteger value, int n) { + if (n <= 0) + return value; + if(n=0 + long scaledX = (xraise==0) ? xs : + longMultiplyPowerTen(xs, xraise); // can't overflow here! + BigDecimal quotient; + + int cmp = longCompareMagnitude(scaledX, ys); + if(cmp > 0) { // satisfy constraint (b) + yscale -= 1; // [that is, divisor *= 10] + int scl = checkScaleNonZero(preferredScale + yscale - xscale + mcp); + if (checkScaleNonZero((long) mcp + yscale - xscale) > 0) { + // assert newScale >= xscale + int raise = checkScaleNonZero((long) mcp + yscale - xscale); + long scaledXs; + if ((scaledXs = longMultiplyPowerTen(xs, raise)) == INFLATED) { + quotient = null; + if((mcp-1) >=0 && (mcp-1)= yscale + if (newScale == yscale) { // easy case + quotient = divideAndRound(xs, ys, scl, roundingMode,checkScaleNonZero(preferredScale)); + } else { + int raise = checkScaleNonZero((long) newScale - yscale); + long scaledYs; + if ((scaledYs = longMultiplyPowerTen(ys, raise)) == INFLATED) { + BigInteger rb = bigMultiplyPowerTen(ys,raise); + quotient = divideAndRound(BigInteger.valueOf(xs), + rb, scl, roundingMode,checkScaleNonZero(preferredScale)); + } else { + quotient = divideAndRound(xs, scaledYs, scl, roundingMode,checkScaleNonZero(preferredScale)); + } + } + } + } else { + // abs(scaledX) <= abs(ys) + // result is "scaledX * 10^msp / ys" + int scl = checkScaleNonZero(preferredScale + yscale - xscale + mcp); + if(cmp==0) { + // abs(scaleX)== abs(ys) => result will be scaled 10^mcp + correct sign + quotient = roundedTenPower(((scaledX < 0) == (ys < 0)) ? 1 : -1, mcp, scl, checkScaleNonZero(preferredScale)); + } else { + // abs(scaledX) < abs(ys) + long scaledXs; + if ((scaledXs = longMultiplyPowerTen(scaledX, mcp)) == INFLATED) { + quotient = null; + if(mcp 0) {// satisfy constraint (b) + yscale -= 1; // [that is, divisor *= 10] + } + int roundingMode = mc.roundingMode.oldMode; + // In order to find out whether the divide generates the exact result, + // we avoid calling the above divide method. 'quotient' holds the + // return BigDecimal object whose scale will be set to 'scl'. + int scl = checkScaleNonZero(preferredScale + yscale - xscale + mcp); + BigDecimal quotient; + if (checkScaleNonZero((long) mcp + yscale - xscale) > 0) { + int raise = checkScaleNonZero((long) mcp + yscale - xscale); + long scaledXs; + if ((scaledXs = longMultiplyPowerTen(xs, raise)) == INFLATED) { + BigInteger rb = bigMultiplyPowerTen(xs,raise); + quotient = divideAndRound(rb, ys, scl, roundingMode, checkScaleNonZero(preferredScale)); + } else { + quotient = divideAndRound(scaledXs, ys, scl, roundingMode, checkScaleNonZero(preferredScale)); + } + } else { + int newScale = checkScaleNonZero((long) xscale - mcp); + // assert newScale >= yscale + if (newScale == yscale) { // easy case + quotient = divideAndRound(xs, ys, scl, roundingMode,checkScaleNonZero(preferredScale)); + } else { + int raise = checkScaleNonZero((long) newScale - yscale); + long scaledYs; + if ((scaledYs = longMultiplyPowerTen(ys, raise)) == INFLATED) { + BigInteger rb = bigMultiplyPowerTen(ys,raise); + quotient = divideAndRound(BigInteger.valueOf(xs), + rb, scl, roundingMode,checkScaleNonZero(preferredScale)); + } else { + quotient = divideAndRound(xs, scaledYs, scl, roundingMode,checkScaleNonZero(preferredScale)); + } + } + } + // doRound, here, only affects 1000000000 case. + return doRound(quotient,mc); + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (xs / + * ys)}, with rounding according to the context settings. + */ + private static BigDecimal divide(BigInteger xs, int xscale, long ys, int yscale, long preferredScale, MathContext mc) { + // Normalize dividend & divisor so that both fall into [0.1, 0.999...] + if ((-compareMagnitudeNormalized(ys, yscale, xs, xscale)) > 0) {// satisfy constraint (b) + yscale -= 1; // [that is, divisor *= 10] + } + int mcp = mc.precision; + int roundingMode = mc.roundingMode.oldMode; + + // In order to find out whether the divide generates the exact result, + // we avoid calling the above divide method. 'quotient' holds the + // return BigDecimal object whose scale will be set to 'scl'. + BigDecimal quotient; + int scl = checkScaleNonZero(preferredScale + yscale - xscale + mcp); + if (checkScaleNonZero((long) mcp + yscale - xscale) > 0) { + int raise = checkScaleNonZero((long) mcp + yscale - xscale); + BigInteger rb = bigMultiplyPowerTen(xs,raise); + quotient = divideAndRound(rb, ys, scl, roundingMode, checkScaleNonZero(preferredScale)); + } else { + int newScale = checkScaleNonZero((long) xscale - mcp); + // assert newScale >= yscale + if (newScale == yscale) { // easy case + quotient = divideAndRound(xs, ys, scl, roundingMode,checkScaleNonZero(preferredScale)); + } else { + int raise = checkScaleNonZero((long) newScale - yscale); + long scaledYs; + if ((scaledYs = longMultiplyPowerTen(ys, raise)) == INFLATED) { + BigInteger rb = bigMultiplyPowerTen(ys,raise); + quotient = divideAndRound(xs, rb, scl, roundingMode,checkScaleNonZero(preferredScale)); + } else { + quotient = divideAndRound(xs, scaledYs, scl, roundingMode,checkScaleNonZero(preferredScale)); + } + } + } + // doRound, here, only affects 1000000000 case. + return doRound(quotient, mc); + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (xs / + * ys)}, with rounding according to the context settings. + */ + private static BigDecimal divide(long xs, int xscale, BigInteger ys, int yscale, long preferredScale, MathContext mc) { + // Normalize dividend & divisor so that both fall into [0.1, 0.999...] + if (compareMagnitudeNormalized(xs, xscale, ys, yscale) > 0) {// satisfy constraint (b) + yscale -= 1; // [that is, divisor *= 10] + } + int mcp = mc.precision; + int roundingMode = mc.roundingMode.oldMode; + + // In order to find out whether the divide generates the exact result, + // we avoid calling the above divide method. 'quotient' holds the + // return BigDecimal object whose scale will be set to 'scl'. + BigDecimal quotient; + int scl = checkScaleNonZero(preferredScale + yscale - xscale + mcp); + if (checkScaleNonZero((long) mcp + yscale - xscale) > 0) { + int raise = checkScaleNonZero((long) mcp + yscale - xscale); + BigInteger rb = bigMultiplyPowerTen(xs,raise); + quotient = divideAndRound(rb, ys, scl, roundingMode, checkScaleNonZero(preferredScale)); + } else { + int newScale = checkScaleNonZero((long) xscale - mcp); + int raise = checkScaleNonZero((long) newScale - yscale); + BigInteger rb = bigMultiplyPowerTen(ys,raise); + quotient = divideAndRound(BigInteger.valueOf(xs), rb, scl, roundingMode,checkScaleNonZero(preferredScale)); + } + // doRound, here, only affects 1000000000 case. + return doRound(quotient, mc); + } + + /** + * Returns a {@code BigDecimal} whose value is {@code (xs / + * ys)}, with rounding according to the context settings. + */ + private static BigDecimal divide(BigInteger xs, int xscale, BigInteger ys, int yscale, long preferredScale, MathContext mc) { + // Normalize dividend & divisor so that both fall into [0.1, 0.999...] + if (compareMagnitudeNormalized(xs, xscale, ys, yscale) > 0) {// satisfy constraint (b) + yscale -= 1; // [that is, divisor *= 10] + } + int mcp = mc.precision; + int roundingMode = mc.roundingMode.oldMode; + + // In order to find out whether the divide generates the exact result, + // we avoid calling the above divide method. 'quotient' holds the + // return BigDecimal object whose scale will be set to 'scl'. + BigDecimal quotient; + int scl = checkScaleNonZero(preferredScale + yscale - xscale + mcp); + if (checkScaleNonZero((long) mcp + yscale - xscale) > 0) { + int raise = checkScaleNonZero((long) mcp + yscale - xscale); + BigInteger rb = bigMultiplyPowerTen(xs,raise); + quotient = divideAndRound(rb, ys, scl, roundingMode, checkScaleNonZero(preferredScale)); + } else { + int newScale = checkScaleNonZero((long) xscale - mcp); + int raise = checkScaleNonZero((long) newScale - yscale); + BigInteger rb = bigMultiplyPowerTen(ys,raise); + quotient = divideAndRound(xs, rb, scl, roundingMode,checkScaleNonZero(preferredScale)); + } + // doRound, here, only affects 1000000000 case. + return doRound(quotient, mc); + } + + /* + * performs divideAndRound for (dividend0*dividend1, divisor) + * returns null if quotient can't fit into long value; + */ + private static BigDecimal multiplyDivideAndRound(long dividend0, long dividend1, long divisor, int scale, int roundingMode, + int preferredScale) { + int qsign = Long.signum(dividend0)*Long.signum(dividend1)*Long.signum(divisor); + dividend0 = Math.abs(dividend0); + dividend1 = Math.abs(dividend1); + divisor = Math.abs(divisor); + // multiply dividend0 * dividend1 + long d0_hi = dividend0 >>> 32; + long d0_lo = dividend0 & LONG_MASK; + long d1_hi = dividend1 >>> 32; + long d1_lo = dividend1 & LONG_MASK; + long product = d0_lo * d1_lo; + long d0 = product & LONG_MASK; + long d1 = product >>> 32; + product = d0_hi * d1_lo + d1; + d1 = product & LONG_MASK; + long d2 = product >>> 32; + product = d0_lo * d1_hi + d1; + d1 = product & LONG_MASK; + d2 += product >>> 32; + long d3 = d2>>>32; + d2 &= LONG_MASK; + product = d0_hi*d1_hi + d2; + d2 = product & LONG_MASK; + d3 = ((product>>>32) + d3) & LONG_MASK; + final long dividendHi = make64(d3,d2); + final long dividendLo = make64(d1,d0); + // divide + return divideAndRound128(dividendHi, dividendLo, divisor, qsign, scale, roundingMode, preferredScale); + } + + private static final long DIV_NUM_BASE = (1L<<32); // Number base (32 bits). + + /* + * divideAndRound 128-bit value by long divisor. + * returns null if quotient can't fit into long value; + * Specialized version of Knuth's division + */ + private static BigDecimal divideAndRound128(final long dividendHi, final long dividendLo, long divisor, int sign, + int scale, int roundingMode, int preferredScale) { + if (dividendHi >= divisor) { + return null; + } + + final int shift = Long.numberOfLeadingZeros(divisor); + divisor <<= shift; + + final long v1 = divisor >>> 32; + final long v0 = divisor & LONG_MASK; + + long tmp = dividendLo << shift; + long u1 = tmp >>> 32; + long u0 = tmp & LONG_MASK; + + tmp = (dividendHi << shift) | (dividendLo >>> 64 - shift); + long u2 = tmp & LONG_MASK; + long q1, r_tmp; + if (v1 == 1) { + q1 = tmp; + r_tmp = 0; + } else if (tmp >= 0) { + q1 = tmp / v1; + r_tmp = tmp - q1 * v1; + } else { + long[] rq = divRemNegativeLong(tmp, v1); + q1 = rq[1]; + r_tmp = rq[0]; + } + + while(q1 >= DIV_NUM_BASE || unsignedLongCompare(q1*v0, make64(r_tmp, u1))) { + q1--; + r_tmp += v1; + if (r_tmp >= DIV_NUM_BASE) + break; + } + + tmp = mulsub(u2,u1,v1,v0,q1); + u1 = tmp & LONG_MASK; + long q0; + if (v1 == 1) { + q0 = tmp; + r_tmp = 0; + } else if (tmp >= 0) { + q0 = tmp / v1; + r_tmp = tmp - q0 * v1; + } else { + long[] rq = divRemNegativeLong(tmp, v1); + q0 = rq[1]; + r_tmp = rq[0]; + } + + while(q0 >= DIV_NUM_BASE || unsignedLongCompare(q0*v0,make64(r_tmp,u0))) { + q0--; + r_tmp += v1; + if (r_tmp >= DIV_NUM_BASE) + break; + } + + if((int)q1 < 0) { + // result (which is positive and unsigned here) + // can't fit into long due to sign bit is used for value + MutableBigInteger mq = new MutableBigInteger(new int[]{(int)q1, (int)q0}); + if (roundingMode == ROUND_DOWN && scale == preferredScale) { + return mq.toBigDecimal(sign, scale); + } + long r = mulsub(u1, u0, v1, v0, q0) >>> shift; + if (r != 0) { + if(needIncrement(divisor >>> shift, roundingMode, sign, mq, r)){ + mq.add(MutableBigInteger.ONE); + } + return mq.toBigDecimal(sign, scale); + } else { + if (preferredScale != scale) { + BigInteger intVal = mq.toBigInteger(sign); + return createAndStripZerosToMatchScale(intVal,scale, preferredScale); + } else { + return mq.toBigDecimal(sign, scale); + } + } + } + + long q = make64(q1,q0); + q*=sign; + + if (roundingMode == ROUND_DOWN && scale == preferredScale) + return valueOf(q, scale); + + long r = mulsub(u1, u0, v1, v0, q0) >>> shift; + if (r != 0) { + boolean increment = needIncrement(divisor >>> shift, roundingMode, sign, q, r); + return valueOf((increment ? q + sign : q), scale); + } else { + if (preferredScale != scale) { + return createAndStripZerosToMatchScale(q, scale, preferredScale); + } else { + return valueOf(q, scale); + } + } + } + + /* + * calculate divideAndRound for ldividend*10^raise / divisor + * when abs(dividend)==abs(divisor); + */ + private static BigDecimal roundedTenPower(int qsign, int raise, int scale, int preferredScale) { + if (scale > preferredScale) { + int diff = scale - preferredScale; + if(diff < raise) { + return scaledTenPow(raise - diff, qsign, preferredScale); + } else { + return valueOf(qsign,scale-raise); + } + } else { + return scaledTenPow(raise, qsign, scale); + } + } + + static BigDecimal scaledTenPow(int n, int sign, int scale) { + if (n < LONG_TEN_POWERS_TABLE.length) + return valueOf(sign*LONG_TEN_POWERS_TABLE[n],scale); + else { + BigInteger unscaledVal = bigTenToThe(n); + if(sign==-1) { + unscaledVal = unscaledVal.negate(); + } + return new BigDecimal(unscaledVal, INFLATED, scale, n+1); + } + } + + /** + * Calculate the quotient and remainder of dividing a negative long by + * another long. + * + * @param n the numerator; must be negative + * @param d the denominator; must not be unity + * @return a two-element {@long} array with the remainder and quotient in + * the initial and final elements, respectively + */ + private static long[] divRemNegativeLong(long n, long d) { + assert n < 0 : "Non-negative numerator " + n; + assert d != 1 : "Unity denominator"; + + // Approximate the quotient and remainder + long q = (n >>> 1) / (d >>> 1); + long r = n - q * d; + + // Correct the approximation + while (r < 0) { + r += d; + q--; + } + while (r >= d) { + r -= d; + q++; + } + + // n - q*d == r && 0 <= r < d, hence we're done. + return new long[] {r, q}; + } + + private static long make64(long hi, long lo) { + return hi<<32 | lo; + } + + private static long mulsub(long u1, long u0, final long v1, final long v0, long q0) { + long tmp = u0 - q0*v0; + return make64(u1 + (tmp>>>32) - q0*v1,tmp & LONG_MASK); + } + + private static boolean unsignedLongCompare(long one, long two) { + return (one+Long.MIN_VALUE) > (two+Long.MIN_VALUE); + } + + private static boolean unsignedLongCompareEq(long one, long two) { + return (one+Long.MIN_VALUE) >= (two+Long.MIN_VALUE); + } + + + // Compare Normalize dividend & divisor so that both fall into [0.1, 0.999...] + private static int compareMagnitudeNormalized(long xs, int xscale, long ys, int yscale) { + // assert xs!=0 && ys!=0 + int sdiff = xscale - yscale; + if (sdiff != 0) { + if (sdiff < 0) { + xs = longMultiplyPowerTen(xs, -sdiff); + } else { // sdiff > 0 + ys = longMultiplyPowerTen(ys, sdiff); + } + } + if (xs != INFLATED) + return (ys != INFLATED) ? longCompareMagnitude(xs, ys) : -1; + else + return 1; + } + + // Compare Normalize dividend & divisor so that both fall into [0.1, 0.999...] + private static int compareMagnitudeNormalized(long xs, int xscale, BigInteger ys, int yscale) { + // assert "ys can't be represented as long" + if (xs == 0) + return -1; + int sdiff = xscale - yscale; + if (sdiff < 0) { + if (longMultiplyPowerTen(xs, -sdiff) == INFLATED ) { + return bigMultiplyPowerTen(xs, -sdiff).compareMagnitude(ys); + } + } + return -1; + } + + // Compare Normalize dividend & divisor so that both fall into [0.1, 0.999...] + private static int compareMagnitudeNormalized(BigInteger xs, int xscale, BigInteger ys, int yscale) { + int sdiff = xscale - yscale; + if (sdiff < 0) { + return bigMultiplyPowerTen(xs, -sdiff).compareMagnitude(ys); + } else { // sdiff >= 0 + return xs.compareMagnitude(bigMultiplyPowerTen(ys, sdiff)); + } + } + + private static long multiply(long x, long y){ + long product = x * y; + long ax = Math.abs(x); + long ay = Math.abs(y); + if (((ax | ay) >>> 31 == 0) || (y == 0) || (product / y == x)){ + return product; + } + return INFLATED; + } + + private static BigDecimal multiply(long x, long y, int scale) { + long product = multiply(x, y); + if(product!=INFLATED) { + return valueOf(product,scale); + } + return new BigDecimal(BigInteger.valueOf(x).multiply(y),INFLATED,scale,0); + } + + private static BigDecimal multiply(long x, BigInteger y, int scale) { + if(x==0) { + return zeroValueOf(scale); + } + return new BigDecimal(y.multiply(x),INFLATED,scale,0); + } + + private static BigDecimal multiply(BigInteger x, BigInteger y, int scale) { + return new BigDecimal(x.multiply(y),INFLATED,scale,0); + } + + /** + * Multiplies two long values and rounds according {@code MathContext} + */ + private static BigDecimal multiplyAndRound(long x, long y, int scale, MathContext mc) { + long product = multiply(x, y); + if(product!=INFLATED) { + return doRound(product, scale, mc); + } + // attempt to do it in 128 bits + int rsign = 1; + if(x < 0) { + x = -x; + rsign = -1; + } + if(y < 0) { + y = -y; + rsign *= -1; + } + // multiply dividend0 * dividend1 + long m0_hi = x >>> 32; + long m0_lo = x & LONG_MASK; + long m1_hi = y >>> 32; + long m1_lo = y & LONG_MASK; + product = m0_lo * m1_lo; + long m0 = product & LONG_MASK; + long m1 = product >>> 32; + product = m0_hi * m1_lo + m1; + m1 = product & LONG_MASK; + long m2 = product >>> 32; + product = m0_lo * m1_hi + m1; + m1 = product & LONG_MASK; + m2 += product >>> 32; + long m3 = m2>>>32; + m2 &= LONG_MASK; + product = m0_hi*m1_hi + m2; + m2 = product & LONG_MASK; + m3 = ((product>>>32) + m3) & LONG_MASK; + final long mHi = make64(m3,m2); + final long mLo = make64(m1,m0); + BigDecimal res = doRound128(mHi, mLo, rsign, scale, mc); + if(res!=null) { + return res; + } + res = new BigDecimal(BigInteger.valueOf(x).multiply(y*rsign), INFLATED, scale, 0); + return doRound(res,mc); + } + + private static BigDecimal multiplyAndRound(long x, BigInteger y, int scale, MathContext mc) { + if(x==0) { + return zeroValueOf(scale); + } + return doRound(y.multiply(x), scale, mc); + } + + private static BigDecimal multiplyAndRound(BigInteger x, BigInteger y, int scale, MathContext mc) { + return doRound(x.multiply(y), scale, mc); + } + + /** + * rounds 128-bit value according {@code MathContext} + * returns null if result can't be repsented as compact BigDecimal. + */ + private static BigDecimal doRound128(long hi, long lo, int sign, int scale, MathContext mc) { + int mcp = mc.precision; + int drop; + BigDecimal res = null; + if(((drop = precision(hi, lo) - mcp) > 0)&&(drop=0) { + return longDigitLength(lo); + } + return (unsignedLongCompareEq(lo, LONGLONG_TEN_POWERS_TABLE[0][1])) ? 20 : 19; + // 0x8AC7230489E80000L = unsigned 2^19 + } + int r = ((128 - Long.numberOfLeadingZeros(hi) + 1) * 1233) >>> 12; + int idx = r-19; + return (idx >= LONGLONG_TEN_POWERS_TABLE.length || longLongCompareMagnitude(hi, lo, + LONGLONG_TEN_POWERS_TABLE[idx][0], LONGLONG_TEN_POWERS_TABLE[idx][1])) ? r : r + 1; + } + + /* + * returns true if 128 bit number is less then + * hi0 & hi1 should be non-negative + */ + private static boolean longLongCompareMagnitude(long hi0, long lo0, long hi1, long lo1) { + if(hi0!=hi1) { + return hi0 dividendScale) { + int newScale = scale + divisorScale; + int raise = newScale - dividendScale; + if(raise dividendScale) { + int newScale = scale + divisorScale; + int raise = newScale - dividendScale; + BigInteger scaledDividend = bigMultiplyPowerTen(dividend, raise); + return divideAndRound(scaledDividend, divisor, scale, roundingMode, scale); + } else { + int newScale = checkScale(divisor,(long)dividendScale - scale); + int raise = newScale - divisorScale; + if(raise dividendScale) { + int newScale = scale + divisorScale; + int raise = newScale - dividendScale; + BigInteger scaledDividend = bigMultiplyPowerTen(dividend, raise); + return divideAndRound(scaledDividend, divisor, scale, roundingMode, scale); + } else { + int newScale = checkScale(divisor,(long)dividendScale - scale); + int raise = newScale - divisorScale; + BigInteger scaledDivisor = bigMultiplyPowerTen(divisor, raise); + return divideAndRound(BigInteger.valueOf(dividend), scaledDivisor, scale, roundingMode, scale); + } + } + + private static BigDecimal divide(BigInteger dividend, int dividendScale, BigInteger divisor, int divisorScale, int scale, int roundingMode) { + if (checkScale(dividend,(long)scale + divisorScale) > dividendScale) { + int newScale = scale + divisorScale; + int raise = newScale - dividendScale; + BigInteger scaledDividend = bigMultiplyPowerTen(dividend, raise); + return divideAndRound(scaledDividend, divisor, scale, roundingMode, scale); + } else { + int newScale = checkScale(divisor,(long)dividendScale - scale); + int raise = newScale - divisorScale; + BigInteger scaledDivisor = bigMultiplyPowerTen(divisor, raise); + return divideAndRound(dividend, scaledDivisor, scale, roundingMode, scale); + } + } + +} diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/BigInteger.java" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/BigInteger.java" new file mode 100644 index 0000000..e974466 --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/BigInteger.java" @@ -0,0 +1,4446 @@ +/* + * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +/* + * Portions Copyright (c) 1995 Colin Plumb. All rights reserved. + */ + +package ut.math; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.ObjectStreamField; +import java.util.Arrays; +import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; +import sun.misc.DoubleConsts; +import sun.misc.FloatConsts; + +/** + * Immutable arbitrary-precision integers. All operations behave as if + * BigIntegers were represented in two's-complement notation (like Java's + * primitive integer types). BigInteger provides analogues to all of Java's + * primitive integer operators, and all relevant methods from java.lang.Math. + * Additionally, BigInteger provides operations for modular arithmetic, GCD + * calculation, primality testing, prime generation, bit manipulation, + * and a few other miscellaneous operations. + * + *

Semantics of arithmetic operations exactly mimic those of Java's integer + * arithmetic operators, as defined in The Java Language Specification. + * For example, division by zero throws an {@code ArithmeticException}, and + * division of a negative by a positive yields a negative (or zero) remainder. + * All of the details in the Spec concerning overflow are ignored, as + * BigIntegers are made as large as necessary to accommodate the results of an + * operation. + * + *

Semantics of shift operations extend those of Java's shift operators + * to allow for negative shift distances. A right-shift with a negative + * shift distance results in a left shift, and vice-versa. The unsigned + * right shift operator ({@code >>>}) is omitted, as this operation makes + * little sense in combination with the "infinite word size" abstraction + * provided by this class. + * + *

Semantics of bitwise logical operations exactly mimic those of Java's + * bitwise integer operators. The binary operators ({@code and}, + * {@code or}, {@code xor}) implicitly perform sign extension on the shorter + * of the two operands prior to performing the operation. + * + *

Comparison operations perform signed integer comparisons, analogous to + * those performed by Java's relational and equality operators. + * + *

Modular arithmetic operations are provided to compute residues, perform + * exponentiation, and compute multiplicative inverses. These methods always + * return a non-negative result, between {@code 0} and {@code (modulus - 1)}, + * inclusive. + * + *

Bit operations operate on a single bit of the two's-complement + * representation of their operand. If necessary, the operand is sign- + * extended so that it contains the designated bit. None of the single-bit + * operations can produce a BigInteger with a different sign from the + * BigInteger being operated on, as they affect only a single bit, and the + * "infinite word size" abstraction provided by this class ensures that there + * are infinitely many "virtual sign bits" preceding each BigInteger. + * + *

For the sake of brevity and clarity, pseudo-code is used throughout the + * descriptions of BigInteger methods. The pseudo-code expression + * {@code (i + j)} is shorthand for "a BigInteger whose value is + * that of the BigInteger {@code i} plus that of the BigInteger {@code j}." + * The pseudo-code expression {@code (i == j)} is shorthand for + * "{@code true} if and only if the BigInteger {@code i} represents the same + * value as the BigInteger {@code j}." Other pseudo-code expressions are + * interpreted similarly. + * + *

All methods and constructors in this class throw + * {@code NullPointerException} when passed + * a null object reference for any input parameter. + * + * BigInteger must support values in the range + * -2{@code Integer.MAX_VALUE} (exclusive) to + * +2{@code Integer.MAX_VALUE} (exclusive) + * and may support values outside of that range. + * + * The range of probable prime values is limited and may be less than + * the full supported positive range of {@code BigInteger}. + * The range must be at least 1 to 2500000000. + * + * @implNote + * BigInteger constructors and operations throw {@code ArithmeticException} when + * the result is out of the supported range of + * -2{@code Integer.MAX_VALUE} (exclusive) to + * +2{@code Integer.MAX_VALUE} (exclusive). + * + * @see BigDecimal + * @author Josh Bloch + * @author Michael McCloskey + * @author Alan Eliasen + * @author Timothy Buktu + * @since JDK1.1 + */ + +public class BigInteger extends Number implements Comparable { + /** + * The signum of this BigInteger: -1 for negative, 0 for zero, or + * 1 for positive. Note that the BigInteger zero must have + * a signum of 0. This is necessary to ensures that there is exactly one + * representation for each BigInteger value. + * + * @serial + */ + final int signum; + + /** + * The magnitude of this BigInteger, in big-endian order: the + * zeroth element of this array is the most-significant int of the + * magnitude. The magnitude must be "minimal" in that the most-significant + * int ({@code mag[0]}) must be non-zero. This is necessary to + * ensure that there is exactly one representation for each BigInteger + * value. Note that this implies that the BigInteger zero has a + * zero-length mag array. + */ + final int[] mag; + + // These "redundant fields" are initialized with recognizable nonsense + // values, and cached the first time they are needed (or never, if they + // aren't needed). + + /** + * One plus the bitCount of this BigInteger. Zeros means unitialized. + * + * @serial + * @see #bitCount + * @deprecated Deprecated since logical value is offset from stored + * value and correction factor is applied in accessor method. + */ + @Deprecated + private int bitCount; + + /** + * One plus the bitLength of this BigInteger. Zeros means unitialized. + * (either value is acceptable). + * + * @serial + * @see #bitLength() + * @deprecated Deprecated since logical value is offset from stored + * value and correction factor is applied in accessor method. + */ + @Deprecated + private int bitLength; + + /** + * Two plus the lowest set bit of this BigInteger, as returned by + * getLowestSetBit(). + * + * @serial + * @see #getLowestSetBit + * @deprecated Deprecated since logical value is offset from stored + * value and correction factor is applied in accessor method. + */ + @Deprecated + private int lowestSetBit; + + /** + * Two plus the index of the lowest-order int in the magnitude of this + * BigInteger that contains a nonzero int, or -2 (either value is acceptable). + * The least significant int has int-number 0, the next int in order of + * increasing significance has int-number 1, and so forth. + * @deprecated Deprecated since logical value is offset from stored + * value and correction factor is applied in accessor method. + */ + @Deprecated + private int firstNonzeroIntNum; + + /** + * This mask is used to obtain the value of an int as if it were unsigned. + */ + final static long LONG_MASK = 0xffffffffL; + + /** + * This constant limits {@code mag.length} of BigIntegers to the supported + * range. + */ + private static final int MAX_MAG_LENGTH = Integer.MAX_VALUE / Integer.SIZE + 1; // (1 << 26) + + /** + * Bit lengths larger than this constant can cause overflow in searchLen + * calculation and in BitSieve.singleSearch method. + */ + private static final int PRIME_SEARCH_BIT_LENGTH_LIMIT = 500000000; + + /** + * The threshold value for using Karatsuba multiplication. If the number + * of ints in both mag arrays are greater than this number, then + * Karatsuba multiplication will be used. This value is found + * experimentally to work well. + */ + private static final int KARATSUBA_THRESHOLD = 80; + + /** + * The threshold value for using 3-way Toom-Cook multiplication. + * If the number of ints in each mag array is greater than the + * Karatsuba threshold, and the number of ints in at least one of + * the mag arrays is greater than this threshold, then Toom-Cook + * multiplication will be used. + */ + private static final int TOOM_COOK_THRESHOLD = 240; + + /** + * The threshold value for using Karatsuba squaring. If the number + * of ints in the number are larger than this value, + * Karatsuba squaring will be used. This value is found + * experimentally to work well. + */ + private static final int KARATSUBA_SQUARE_THRESHOLD = 128; + + /** + * The threshold value for using Toom-Cook squaring. If the number + * of ints in the number are larger than this value, + * Toom-Cook squaring will be used. This value is found + * experimentally to work well. + */ + private static final int TOOM_COOK_SQUARE_THRESHOLD = 216; + + /** + * The threshold value for using Burnikel-Ziegler division. If the number + * of ints in the divisor are larger than this value, Burnikel-Ziegler + * division may be used. This value is found experimentally to work well. + */ + static final int BURNIKEL_ZIEGLER_THRESHOLD = 80; + + /** + * The offset value for using Burnikel-Ziegler division. If the number + * of ints in the divisor exceeds the Burnikel-Ziegler threshold, and the + * number of ints in the dividend is greater than the number of ints in the + * divisor plus this value, Burnikel-Ziegler division will be used. This + * value is found experimentally to work well. + */ + static final int BURNIKEL_ZIEGLER_OFFSET = 40; + + /** + * The threshold value for using Schoenhage recursive base conversion. If + * the number of ints in the number are larger than this value, + * the Schoenhage algorithm will be used. In practice, it appears that the + * Schoenhage routine is faster for any threshold down to 2, and is + * relatively flat for thresholds between 2-25, so this choice may be + * varied within this range for very small effect. + */ + private static final int SCHOENHAGE_BASE_CONVERSION_THRESHOLD = 20; + + /** + * The threshold value for using squaring code to perform multiplication + * of a {@code BigInteger} instance by itself. If the number of ints in + * the number are larger than this value, {@code multiply(this)} will + * return {@code square()}. + */ + private static final int MULTIPLY_SQUARE_THRESHOLD = 20; + + // Constructors + + /** + * Translates a byte array containing the two's-complement binary + * representation of a BigInteger into a BigInteger. The input array is + * assumed to be in big-endian byte-order: the most significant + * byte is in the zeroth element. + * + * @param val big-endian two's-complement binary representation of + * BigInteger. + * @throws NumberFormatException {@code val} is zero bytes long. + */ + public BigInteger(byte[] val) { + if (val.length == 0) + throw new NumberFormatException("Zero length BigInteger"); + + if (val[0] < 0) { + mag = makePositive(val); + signum = -1; + } else { + mag = stripLeadingZeroBytes(val); + signum = (mag.length == 0 ? 0 : 1); + } + if (mag.length >= MAX_MAG_LENGTH) { + checkRange(); + } + } + + /** + * This private constructor translates an int array containing the + * two's-complement binary representation of a BigInteger into a + * BigInteger. The input array is assumed to be in big-endian + * int-order: the most significant int is in the zeroth element. + */ + private BigInteger(int[] val) { + if (val.length == 0) + throw new NumberFormatException("Zero length BigInteger"); + + if (val[0] < 0) { + mag = makePositive(val); + signum = -1; + } else { + mag = trustedStripLeadingZeroInts(val); + signum = (mag.length == 0 ? 0 : 1); + } + if (mag.length >= MAX_MAG_LENGTH) { + checkRange(); + } + } + + /** + * Translates the sign-magnitude representation of a BigInteger into a + * BigInteger. The sign is represented as an integer signum value: -1 for + * negative, 0 for zero, or 1 for positive. The magnitude is a byte array + * in big-endian byte-order: the most significant byte is in the + * zeroth element. A zero-length magnitude array is permissible, and will + * result in a BigInteger value of 0, whether signum is -1, 0 or 1. + * + * @param signum signum of the number (-1 for negative, 0 for zero, 1 + * for positive). + * @param magnitude big-endian binary representation of the magnitude of + * the number. + * @throws NumberFormatException {@code signum} is not one of the three + * legal values (-1, 0, and 1), or {@code signum} is 0 and + * {@code magnitude} contains one or more non-zero bytes. + */ + public BigInteger(int signum, byte[] magnitude) { + this.mag = stripLeadingZeroBytes(magnitude); + + if (signum < -1 || signum > 1) + throw(new NumberFormatException("Invalid signum value")); + + if (this.mag.length == 0) { + this.signum = 0; + } else { + if (signum == 0) + throw(new NumberFormatException("signum-magnitude mismatch")); + this.signum = signum; + } + if (mag.length >= MAX_MAG_LENGTH) { + checkRange(); + } + } + + /** + * A constructor for internal use that translates the sign-magnitude + * representation of a BigInteger into a BigInteger. It checks the + * arguments and copies the magnitude so this constructor would be + * safe for external use. + */ + private BigInteger(int signum, int[] magnitude) { + this.mag = stripLeadingZeroInts(magnitude); + + if (signum < -1 || signum > 1) + throw(new NumberFormatException("Invalid signum value")); + + if (this.mag.length == 0) { + this.signum = 0; + } else { + if (signum == 0) + throw(new NumberFormatException("signum-magnitude mismatch")); + this.signum = signum; + } + if (mag.length >= MAX_MAG_LENGTH) { + checkRange(); + } + } + + /** + * Translates the String representation of a BigInteger in the + * specified radix into a BigInteger. The String representation + * consists of an optional minus or plus sign followed by a + * sequence of one or more digits in the specified radix. The + * character-to-digit mapping is provided by {@code + * Character.digit}. The String may not contain any extraneous + * characters (whitespace, for example). + * + * @param val String representation of BigInteger. + * @param radix radix to be used in interpreting {@code val}. + * @throws NumberFormatException {@code val} is not a valid representation + * of a BigInteger in the specified radix, or {@code radix} is + * outside the range from {@link Character#MIN_RADIX} to + * {@link Character#MAX_RADIX}, inclusive. + * @see Character#digit + */ + public BigInteger(String val, int radix) { + int cursor = 0, numDigits; + final int len = val.length(); + + if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX) + throw new NumberFormatException("Radix out of range"); + if (len == 0) + throw new NumberFormatException("Zero length BigInteger"); + + // Check for at most one leading sign + int sign = 1; + int index1 = val.lastIndexOf('-'); + int index2 = val.lastIndexOf('+'); + if (index1 >= 0) { + if (index1 != 0 || index2 >= 0) { + throw new NumberFormatException("Illegal embedded sign character"); + } + sign = -1; + cursor = 1; + } else if (index2 >= 0) { + if (index2 != 0) { + throw new NumberFormatException("Illegal embedded sign character"); + } + cursor = 1; + } + if (cursor == len) + throw new NumberFormatException("Zero length BigInteger"); + + // Skip leading zeros and compute number of digits in magnitude + while (cursor < len && + Character.digit(val.charAt(cursor), radix) == 0) { + cursor++; + } + + if (cursor == len) { + signum = 0; + mag = ZERO.mag; + return; + } + + numDigits = len - cursor; + signum = sign; + + // Pre-allocate array of expected size. May be too large but can + // never be too small. Typically exact. + long numBits = ((numDigits * bitsPerDigit[radix]) >>> 10) + 1; + if (numBits + 31 >= (1L << 32)) { + reportOverflow(); + } + int numWords = (int) (numBits + 31) >>> 5; + int[] magnitude = new int[numWords]; + + // Process first (potentially short) digit group + int firstGroupLen = numDigits % digitsPerInt[radix]; + if (firstGroupLen == 0) + firstGroupLen = digitsPerInt[radix]; + String group = val.substring(cursor, cursor += firstGroupLen); + magnitude[numWords - 1] = Integer.parseInt(group, radix); + if (magnitude[numWords - 1] < 0) + throw new NumberFormatException("Illegal digit"); + + // Process remaining digit groups + int superRadix = intRadix[radix]; + int groupVal = 0; + while (cursor < len) { + group = val.substring(cursor, cursor += digitsPerInt[radix]); + groupVal = Integer.parseInt(group, radix); + if (groupVal < 0) + throw new NumberFormatException("Illegal digit"); + destructiveMulAdd(magnitude, superRadix, groupVal); + } + // Required for cases where the array was overallocated. + mag = trustedStripLeadingZeroInts(magnitude); + if (mag.length >= MAX_MAG_LENGTH) { + checkRange(); + } + } + + /* + * Constructs a new BigInteger using a char array with radix=10. + * Sign is precalculated outside and not allowed in the val. + */ + BigInteger(char[] val, int sign, int len) { + int cursor = 0, numDigits; + + // Skip leading zeros and compute number of digits in magnitude + while (cursor < len && Character.digit(val[cursor], 10) == 0) { + cursor++; + } + if (cursor == len) { + signum = 0; + mag = ZERO.mag; + return; + } + + numDigits = len - cursor; + signum = sign; + // Pre-allocate array of expected size + int numWords; + if (len < 10) { + numWords = 1; + } else { + long numBits = ((numDigits * bitsPerDigit[10]) >>> 10) + 1; + if (numBits + 31 >= (1L << 32)) { + reportOverflow(); + } + numWords = (int) (numBits + 31) >>> 5; + } + int[] magnitude = new int[numWords]; + + // Process first (potentially short) digit group + int firstGroupLen = numDigits % digitsPerInt[10]; + if (firstGroupLen == 0) + firstGroupLen = digitsPerInt[10]; + magnitude[numWords - 1] = parseInt(val, cursor, cursor += firstGroupLen); + + // Process remaining digit groups + while (cursor < len) { + int groupVal = parseInt(val, cursor, cursor += digitsPerInt[10]); + destructiveMulAdd(magnitude, intRadix[10], groupVal); + } + mag = trustedStripLeadingZeroInts(magnitude); + if (mag.length >= MAX_MAG_LENGTH) { + checkRange(); + } + } + + // Create an integer with the digits between the two indexes + // Assumes start < end. The result may be negative, but it + // is to be treated as an unsigned value. + private int parseInt(char[] source, int start, int end) { + int result = Character.digit(source[start++], 10); + if (result == -1) + throw new NumberFormatException(new String(source)); + + for (int index = start; index < end; index++) { + int nextVal = Character.digit(source[index], 10); + if (nextVal == -1) + throw new NumberFormatException(new String(source)); + result = 10*result + nextVal; + } + + return result; + } + + // bitsPerDigit in the given radix times 1024 + // Rounded up to avoid underallocation. + private static long bitsPerDigit[] = { 0, 0, + 1024, 1624, 2048, 2378, 2648, 2875, 3072, 3247, 3402, 3543, 3672, + 3790, 3899, 4001, 4096, 4186, 4271, 4350, 4426, 4498, 4567, 4633, + 4696, 4756, 4814, 4870, 4923, 4975, 5025, 5074, 5120, 5166, 5210, + 5253, 5295}; + + // Multiply x array times word y in place, and add word z + private static void destructiveMulAdd(int[] x, int y, int z) { + // Perform the multiplication word by word + long ylong = y & LONG_MASK; + long zlong = z & LONG_MASK; + int len = x.length; + + long product = 0; + long carry = 0; + for (int i = len-1; i >= 0; i--) { + product = ylong * (x[i] & LONG_MASK) + carry; + x[i] = (int)product; + carry = product >>> 32; + } + + // Perform the addition + long sum = (x[len-1] & LONG_MASK) + zlong; + x[len-1] = (int)sum; + carry = sum >>> 32; + for (int i = len-2; i >= 0; i--) { + sum = (x[i] & LONG_MASK) + carry; + x[i] = (int)sum; + carry = sum >>> 32; + } + } + + /** + * Translates the decimal String representation of a BigInteger into a + * BigInteger. The String representation consists of an optional minus + * sign followed by a sequence of one or more decimal digits. The + * character-to-digit mapping is provided by {@code Character.digit}. + * The String may not contain any extraneous characters (whitespace, for + * example). + * + * @param val decimal String representation of BigInteger. + * @throws NumberFormatException {@code val} is not a valid representation + * of a BigInteger. + * @see Character#digit + */ + public BigInteger(String val) { + this(val, 10); + } + + /** + * Constructs a randomly generated BigInteger, uniformly distributed over + * the range 0 to (2{@code numBits} - 1), inclusive. + * The uniformity of the distribution assumes that a fair source of random + * bits is provided in {@code rnd}. Note that this constructor always + * constructs a non-negative BigInteger. + * + * @param numBits maximum bitLength of the new BigInteger. + * @param rnd source of randomness to be used in computing the new + * BigInteger. + * @throws IllegalArgumentException {@code numBits} is negative. + * @see #bitLength() + */ + public BigInteger(int numBits, Random rnd) { + this(1, randomBits(numBits, rnd)); + } + + private static byte[] randomBits(int numBits, Random rnd) { + if (numBits < 0) + throw new IllegalArgumentException("numBits must be non-negative"); + int numBytes = (int)(((long)numBits+7)/8); // avoid overflow + byte[] randomBits = new byte[numBytes]; + + // Generate random bytes and mask out any excess bits + if (numBytes > 0) { + rnd.nextBytes(randomBits); + int excessBits = 8*numBytes - numBits; + randomBits[0] &= (1 << (8-excessBits)) - 1; + } + return randomBits; + } + + /** + * Constructs a randomly generated positive BigInteger that is probably + * prime, with the specified bitLength. + * + *

It is recommended that the {@link #probablePrime probablePrime} + * method be used in preference to this constructor unless there + * is a compelling need to specify a certainty. + * + * @param bitLength bitLength of the returned BigInteger. + * @param certainty a measure of the uncertainty that the caller is + * willing to tolerate. The probability that the new BigInteger + * represents a prime number will exceed + * (1 - 1/2{@code certainty}). The execution time of + * this constructor is proportional to the value of this parameter. + * @param rnd source of random bits used to select candidates to be + * tested for primality. + * @throws ArithmeticException {@code bitLength < 2} or {@code bitLength} is too large. + * @see #bitLength() + */ + public BigInteger(int bitLength, int certainty, Random rnd) { + BigInteger prime; + + if (bitLength < 2) + throw new ArithmeticException("bitLength < 2"); + prime = (bitLength < SMALL_PRIME_THRESHOLD + ? smallPrime(bitLength, certainty, rnd) + : largePrime(bitLength, certainty, rnd)); + signum = 1; + mag = prime.mag; + } + + // Minimum size in bits that the requested prime number has + // before we use the large prime number generating algorithms. + // The cutoff of 95 was chosen empirically for best performance. + private static final int SMALL_PRIME_THRESHOLD = 95; + + // Certainty required to meet the spec of probablePrime + private static final int DEFAULT_PRIME_CERTAINTY = 100; + + /** + * Returns a positive BigInteger that is probably prime, with the + * specified bitLength. The probability that a BigInteger returned + * by this method is composite does not exceed 2-100. + * + * @param bitLength bitLength of the returned BigInteger. + * @param rnd source of random bits used to select candidates to be + * tested for primality. + * @return a BigInteger of {@code bitLength} bits that is probably prime + * @throws ArithmeticException {@code bitLength < 2} or {@code bitLength} is too large. + * @see #bitLength() + * @since 1.4 + */ + public static BigInteger probablePrime(int bitLength, Random rnd) { + if (bitLength < 2) + throw new ArithmeticException("bitLength < 2"); + + return (bitLength < SMALL_PRIME_THRESHOLD ? + smallPrime(bitLength, DEFAULT_PRIME_CERTAINTY, rnd) : + largePrime(bitLength, DEFAULT_PRIME_CERTAINTY, rnd)); + } + + /** + * Find a random number of the specified bitLength that is probably prime. + * This method is used for smaller primes, its performance degrades on + * larger bitlengths. + * + * This method assumes bitLength > 1. + */ + private static BigInteger smallPrime(int bitLength, int certainty, Random rnd) { + int magLen = (bitLength + 31) >>> 5; + int temp[] = new int[magLen]; + int highBit = 1 << ((bitLength+31) & 0x1f); // High bit of high int + int highMask = (highBit << 1) - 1; // Bits to keep in high int + + while (true) { + // Construct a candidate + for (int i=0; i < magLen; i++) + temp[i] = rnd.nextInt(); + temp[0] = (temp[0] & highMask) | highBit; // Ensure exact length + if (bitLength > 2) + temp[magLen-1] |= 1; // Make odd if bitlen > 2 + + BigInteger p = new BigInteger(temp, 1); + + // Do cheap "pre-test" if applicable + if (bitLength > 6) { + long r = p.remainder(SMALL_PRIME_PRODUCT).longValue(); + if ((r%3==0) || (r%5==0) || (r%7==0) || (r%11==0) || + (r%13==0) || (r%17==0) || (r%19==0) || (r%23==0) || + (r%29==0) || (r%31==0) || (r%37==0) || (r%41==0)) + continue; // Candidate is composite; try another + } + + // All candidates of bitLength 2 and 3 are prime by this point + if (bitLength < 4) + return p; + + // Do expensive test if we survive pre-test (or it's inapplicable) + if (p.primeToCertainty(certainty, rnd)) + return p; + } + } + + private static final BigInteger SMALL_PRIME_PRODUCT + = valueOf(3L*5*7*11*13*17*19*23*29*31*37*41); + + /** + * Find a random number of the specified bitLength that is probably prime. + * This method is more appropriate for larger bitlengths since it uses + * a sieve to eliminate most composites before using a more expensive + * test. + */ + private static BigInteger largePrime(int bitLength, int certainty, Random rnd) { + BigInteger p; + p = new BigInteger(bitLength, rnd).setBit(bitLength-1); + p.mag[p.mag.length-1] &= 0xfffffffe; + + // Use a sieve length likely to contain the next prime number + int searchLen = getPrimeSearchLen(bitLength); + BitSieve searchSieve = new BitSieve(p, searchLen); + BigInteger candidate = searchSieve.retrieve(p, certainty, rnd); + + while ((candidate == null) || (candidate.bitLength() != bitLength)) { + p = p.add(BigInteger.valueOf(2*searchLen)); + if (p.bitLength() != bitLength) + p = new BigInteger(bitLength, rnd).setBit(bitLength-1); + p.mag[p.mag.length-1] &= 0xfffffffe; + searchSieve = new BitSieve(p, searchLen); + candidate = searchSieve.retrieve(p, certainty, rnd); + } + return candidate; + } + + /** + * Returns the first integer greater than this {@code BigInteger} that + * is probably prime. The probability that the number returned by this + * method is composite does not exceed 2-100. This method will + * never skip over a prime when searching: if it returns {@code p}, there + * is no prime {@code q} such that {@code this < q < p}. + * + * @return the first integer greater than this {@code BigInteger} that + * is probably prime. + * @throws ArithmeticException {@code this < 0} or {@code this} is too large. + * @since 1.5 + */ + public BigInteger nextProbablePrime() { + if (this.signum < 0) + throw new ArithmeticException("start < 0: " + this); + + // Handle trivial cases + if ((this.signum == 0) || this.equals(ONE)) + return TWO; + + BigInteger result = this.add(ONE); + + // Fastpath for small numbers + if (result.bitLength() < SMALL_PRIME_THRESHOLD) { + + // Ensure an odd number + if (!result.testBit(0)) + result = result.add(ONE); + + while (true) { + // Do cheap "pre-test" if applicable + if (result.bitLength() > 6) { + long r = result.remainder(SMALL_PRIME_PRODUCT).longValue(); + if ((r%3==0) || (r%5==0) || (r%7==0) || (r%11==0) || + (r%13==0) || (r%17==0) || (r%19==0) || (r%23==0) || + (r%29==0) || (r%31==0) || (r%37==0) || (r%41==0)) { + result = result.add(TWO); + continue; // Candidate is composite; try another + } + } + + // All candidates of bitLength 2 and 3 are prime by this point + if (result.bitLength() < 4) + return result; + + // The expensive test + if (result.primeToCertainty(DEFAULT_PRIME_CERTAINTY, null)) + return result; + + result = result.add(TWO); + } + } + + // Start at previous even number + if (result.testBit(0)) + result = result.subtract(ONE); + + // Looking for the next large prime + int searchLen = getPrimeSearchLen(result.bitLength()); + + while (true) { + BitSieve searchSieve = new BitSieve(result, searchLen); + BigInteger candidate = searchSieve.retrieve(result, + DEFAULT_PRIME_CERTAINTY, null); + if (candidate != null) + return candidate; + result = result.add(BigInteger.valueOf(2 * searchLen)); + } + } + + private static int getPrimeSearchLen(int bitLength) { + if (bitLength > PRIME_SEARCH_BIT_LENGTH_LIMIT + 1) { + throw new ArithmeticException("Prime search implementation restriction on bitLength"); + } + return bitLength / 20 * 64; + } + + /** + * Returns {@code true} if this BigInteger is probably prime, + * {@code false} if it's definitely composite. + * + * This method assumes bitLength > 2. + * + * @param certainty a measure of the uncertainty that the caller is + * willing to tolerate: if the call returns {@code true} + * the probability that this BigInteger is prime exceeds + * {@code (1 - 1/2certainty)}. The execution time of + * this method is proportional to the value of this parameter. + * @return {@code true} if this BigInteger is probably prime, + * {@code false} if it's definitely composite. + */ + boolean primeToCertainty(int certainty, Random random) { + int rounds = 0; + int n = (Math.min(certainty, Integer.MAX_VALUE-1)+1)/2; + + // The relationship between the certainty and the number of rounds + // we perform is given in the draft standard ANSI X9.80, "PRIME + // NUMBER GENERATION, PRIMALITY TESTING, AND PRIMALITY CERTIFICATES". + int sizeInBits = this.bitLength(); + if (sizeInBits < 100) { + rounds = 50; + rounds = n < rounds ? n : rounds; + return passesMillerRabin(rounds, random); + } + + if (sizeInBits < 256) { + rounds = 27; + } else if (sizeInBits < 512) { + rounds = 15; + } else if (sizeInBits < 768) { + rounds = 8; + } else if (sizeInBits < 1024) { + rounds = 4; + } else { + rounds = 2; + } + rounds = n < rounds ? n : rounds; + + return passesMillerRabin(rounds, random) && passesLucasLehmer(); + } + + /** + * Returns true iff this BigInteger is a Lucas-Lehmer probable prime. + * + * The following assumptions are made: + * This BigInteger is a positive, odd number. + */ + private boolean passesLucasLehmer() { + BigInteger thisPlusOne = this.add(ONE); + + // Step 1 + int d = 5; + while (jacobiSymbol(d, this) != -1) { + // 5, -7, 9, -11, ... + d = (d < 0) ? Math.abs(d)+2 : -(d+2); + } + + // Step 2 + BigInteger u = lucasLehmerSequence(d, thisPlusOne, this); + + // Step 3 + return u.mod(this).equals(ZERO); + } + + /** + * Computes Jacobi(p,n). + * Assumes n positive, odd, n>=3. + */ + private static int jacobiSymbol(int p, BigInteger n) { + if (p == 0) + return 0; + + // Algorithm and comments adapted from Colin Plumb's C library. + int j = 1; + int u = n.mag[n.mag.length-1]; + + // Make p positive + if (p < 0) { + p = -p; + int n8 = u & 7; + if ((n8 == 3) || (n8 == 7)) + j = -j; // 3 (011) or 7 (111) mod 8 + } + + // Get rid of factors of 2 in p + while ((p & 3) == 0) + p >>= 2; + if ((p & 1) == 0) { + p >>= 1; + if (((u ^ (u>>1)) & 2) != 0) + j = -j; // 3 (011) or 5 (101) mod 8 + } + if (p == 1) + return j; + // Then, apply quadratic reciprocity + if ((p & u & 2) != 0) // p = u = 3 (mod 4)? + j = -j; + // And reduce u mod p + u = n.mod(BigInteger.valueOf(p)).intValue(); + + // Now compute Jacobi(u,p), u < p + while (u != 0) { + while ((u & 3) == 0) + u >>= 2; + if ((u & 1) == 0) { + u >>= 1; + if (((p ^ (p>>1)) & 2) != 0) + j = -j; // 3 (011) or 5 (101) mod 8 + } + if (u == 1) + return j; + // Now both u and p are odd, so use quadratic reciprocity + assert (u < p); + int t = u; u = p; p = t; + if ((u & p & 2) != 0) // u = p = 3 (mod 4)? + j = -j; + // Now u >= p, so it can be reduced + u %= p; + } + return 0; + } + + private static BigInteger lucasLehmerSequence(int z, BigInteger k, BigInteger n) { + BigInteger d = BigInteger.valueOf(z); + BigInteger u = ONE; BigInteger u2; + BigInteger v = ONE; BigInteger v2; + + for (int i=k.bitLength()-2; i >= 0; i--) { + u2 = u.multiply(v).mod(n); + + v2 = v.square().add(d.multiply(u.square())).mod(n); + if (v2.testBit(0)) + v2 = v2.subtract(n); + + v2 = v2.shiftRight(1); + + u = u2; v = v2; + if (k.testBit(i)) { + u2 = u.add(v).mod(n); + if (u2.testBit(0)) + u2 = u2.subtract(n); + + u2 = u2.shiftRight(1); + v2 = v.add(d.multiply(u)).mod(n); + if (v2.testBit(0)) + v2 = v2.subtract(n); + v2 = v2.shiftRight(1); + + u = u2; v = v2; + } + } + return u; + } + + /** + * Returns true iff this BigInteger passes the specified number of + * Miller-Rabin tests. This test is taken from the DSA spec (NIST FIPS + * 186-2). + * + * The following assumptions are made: + * This BigInteger is a positive, odd number greater than 2. + * iterations<=50. + */ + private boolean passesMillerRabin(int iterations, Random rnd) { + // Find a and m such that m is odd and this == 1 + 2**a * m + BigInteger thisMinusOne = this.subtract(ONE); + BigInteger m = thisMinusOne; + int a = m.getLowestSetBit(); + m = m.shiftRight(a); + + // Do the tests + if (rnd == null) { + rnd = ThreadLocalRandom.current(); + } + for (int i=0; i < iterations; i++) { + // Generate a uniform random on (1, this) + BigInteger b; + do { + b = new BigInteger(this.bitLength(), rnd); + } while (b.compareTo(ONE) <= 0 || b.compareTo(this) >= 0); + + int j = 0; + BigInteger z = b.modPow(m, this); + while (!((j == 0 && z.equals(ONE)) || z.equals(thisMinusOne))) { + if (j > 0 && z.equals(ONE) || ++j == a) + return false; + z = z.modPow(TWO, this); + } + } + return true; + } + + /** + * This internal constructor differs from its public cousin + * with the arguments reversed in two ways: it assumes that its + * arguments are correct, and it doesn't copy the magnitude array. + */ + BigInteger(int[] magnitude, int signum) { + this.signum = (magnitude.length == 0 ? 0 : signum); + this.mag = magnitude; + if (mag.length >= MAX_MAG_LENGTH) { + checkRange(); + } + } + + /** + * This private constructor is for internal use and assumes that its + * arguments are correct. + */ + private BigInteger(byte[] magnitude, int signum) { + this.signum = (magnitude.length == 0 ? 0 : signum); + this.mag = stripLeadingZeroBytes(magnitude); + if (mag.length >= MAX_MAG_LENGTH) { + checkRange(); + } + } + + /** + * Throws an {@code ArithmeticException} if the {@code BigInteger} would be + * out of the supported range. + * + * @throws ArithmeticException if {@code this} exceeds the supported range. + */ + private void checkRange() { + if (mag.length > MAX_MAG_LENGTH || mag.length == MAX_MAG_LENGTH && mag[0] < 0) { + reportOverflow(); + } + } + + private static void reportOverflow() { + throw new ArithmeticException("BigInteger would overflow supported range"); + } + + //Static Factory Methods + + /** + * Returns a BigInteger whose value is equal to that of the + * specified {@code long}. This "static factory method" is + * provided in preference to a ({@code long}) constructor + * because it allows for reuse of frequently used BigIntegers. + * + * @param val value of the BigInteger to return. + * @return a BigInteger with the specified value. + */ + public static BigInteger valueOf(long val) { + // If -MAX_CONSTANT < val < MAX_CONSTANT, return stashed constant + if (val == 0) + return ZERO; + if (val > 0 && val <= MAX_CONSTANT) + return posConst[(int) val]; + else if (val < 0 && val >= -MAX_CONSTANT) + return negConst[(int) -val]; + + return new BigInteger(val); + } + + /** + * Constructs a BigInteger with the specified value, which may not be zero. + */ + private BigInteger(long val) { + if (val < 0) { + val = -val; + signum = -1; + } else { + signum = 1; + } + + int highWord = (int)(val >>> 32); + if (highWord == 0) { + mag = new int[1]; + mag[0] = (int)val; + } else { + mag = new int[2]; + mag[0] = highWord; + mag[1] = (int)val; + } + } + + /** + * Returns a BigInteger with the given two's complement representation. + * Assumes that the input array will not be modified (the returned + * BigInteger will reference the input array if feasible). + */ + private static BigInteger valueOf(int val[]) { + return (val[0] > 0 ? new BigInteger(val, 1) : new BigInteger(val)); + } + + // Constants + + /** + * Initialize static constant array when class is loaded. + */ + private final static int MAX_CONSTANT = 16; + private static BigInteger posConst[] = new BigInteger[MAX_CONSTANT+1]; + private static BigInteger negConst[] = new BigInteger[MAX_CONSTANT+1]; + + /** + * The cache of powers of each radix. This allows us to not have to + * recalculate powers of radix^(2^n) more than once. This speeds + * Schoenhage recursive base conversion significantly. + */ + private static volatile BigInteger[][] powerCache; + + /** The cache of logarithms of radices for base conversion. */ + private static final double[] logCache; + + /** The natural log of 2. This is used in computing cache indices. */ + private static final double LOG_TWO = Math.log(2.0); + + static { + for (int i = 1; i <= MAX_CONSTANT; i++) { + int[] magnitude = new int[1]; + magnitude[0] = i; + posConst[i] = new BigInteger(magnitude, 1); + negConst[i] = new BigInteger(magnitude, -1); + } + + /* + * Initialize the cache of radix^(2^x) values used for base conversion + * with just the very first value. Additional values will be created + * on demand. + */ + powerCache = new BigInteger[Character.MAX_RADIX+1][]; + logCache = new double[Character.MAX_RADIX+1]; + + for (int i=Character.MIN_RADIX; i <= Character.MAX_RADIX; i++) { + powerCache[i] = new BigInteger[] { BigInteger.valueOf(i) }; + logCache[i] = Math.log(i); + } + } + + /** + * The BigInteger constant zero. + * + * @since 1.2 + */ + public static final BigInteger ZERO = new BigInteger(new int[0], 0); + + /** + * The BigInteger constant one. + * + * @since 1.2 + */ + public static final BigInteger ONE = valueOf(1); + + /** + * The BigInteger constant two. (Not exported.) + */ + private static final BigInteger TWO = valueOf(2); + + /** + * The BigInteger constant -1. (Not exported.) + */ + private static final BigInteger NEGATIVE_ONE = valueOf(-1); + + /** + * The BigInteger constant ten. + * + * @since 1.5 + */ + public static final BigInteger TEN = valueOf(10); + + // Arithmetic Operations + + /** + * Returns a BigInteger whose value is {@code (this + val)}. + * + * @param val value to be added to this BigInteger. + * @return {@code this + val} + */ + public BigInteger add(BigInteger val) { + if (val.signum == 0) + return this; + if (signum == 0) + return val; + if (val.signum == signum) + return new BigInteger(add(mag, val.mag), signum); + + int cmp = compareMagnitude(val); + if (cmp == 0) + return ZERO; + int[] resultMag = (cmp > 0 ? subtract(mag, val.mag) + : subtract(val.mag, mag)); + resultMag = trustedStripLeadingZeroInts(resultMag); + + return new BigInteger(resultMag, cmp == signum ? 1 : -1); + } + + /** + * Package private methods used by BigDecimal code to add a BigInteger + * with a long. Assumes val is not equal to INFLATED. + */ + BigInteger add(long val) { + if (val == 0) + return this; + if (signum == 0) + return valueOf(val); + if (Long.signum(val) == signum) + return new BigInteger(add(mag, Math.abs(val)), signum); + int cmp = compareMagnitude(val); + if (cmp == 0) + return ZERO; + int[] resultMag = (cmp > 0 ? subtract(mag, Math.abs(val)) : subtract(Math.abs(val), mag)); + resultMag = trustedStripLeadingZeroInts(resultMag); + return new BigInteger(resultMag, cmp == signum ? 1 : -1); + } + + /** + * Adds the contents of the int array x and long value val. This + * method allocates a new int array to hold the answer and returns + * a reference to that array. Assumes x.length > 0 and val is + * non-negative + */ + private static int[] add(int[] x, long val) { + int[] y; + long sum = 0; + int xIndex = x.length; + int[] result; + int highWord = (int)(val >>> 32); + if (highWord == 0) { + result = new int[xIndex]; + sum = (x[--xIndex] & LONG_MASK) + val; + result[xIndex] = (int)sum; + } else { + if (xIndex == 1) { + result = new int[2]; + sum = val + (x[0] & LONG_MASK); + result[1] = (int)sum; + result[0] = (int)(sum >>> 32); + return result; + } else { + result = new int[xIndex]; + sum = (x[--xIndex] & LONG_MASK) + (val & LONG_MASK); + result[xIndex] = (int)sum; + sum = (x[--xIndex] & LONG_MASK) + (highWord & LONG_MASK) + (sum >>> 32); + result[xIndex] = (int)sum; + } + } + // Copy remainder of longer number while carry propagation is required + boolean carry = (sum >>> 32 != 0); + while (xIndex > 0 && carry) + carry = ((result[--xIndex] = x[xIndex] + 1) == 0); + // Copy remainder of longer number + while (xIndex > 0) + result[--xIndex] = x[xIndex]; + // Grow result if necessary + if (carry) { + int bigger[] = new int[result.length + 1]; + System.arraycopy(result, 0, bigger, 1, result.length); + bigger[0] = 0x01; + return bigger; + } + return result; + } + + /** + * Adds the contents of the int arrays x and y. This method allocates + * a new int array to hold the answer and returns a reference to that + * array. + */ + private static int[] add(int[] x, int[] y) { + // If x is shorter, swap the two arrays + if (x.length < y.length) { + int[] tmp = x; + x = y; + y = tmp; + } + + int xIndex = x.length; + int yIndex = y.length; + int result[] = new int[xIndex]; + long sum = 0; + if (yIndex == 1) { + sum = (x[--xIndex] & LONG_MASK) + (y[0] & LONG_MASK) ; + result[xIndex] = (int)sum; + } else { + // Add common parts of both numbers + while (yIndex > 0) { + sum = (x[--xIndex] & LONG_MASK) + + (y[--yIndex] & LONG_MASK) + (sum >>> 32); + result[xIndex] = (int)sum; + } + } + // Copy remainder of longer number while carry propagation is required + boolean carry = (sum >>> 32 != 0); + while (xIndex > 0 && carry) + carry = ((result[--xIndex] = x[xIndex] + 1) == 0); + + // Copy remainder of longer number + while (xIndex > 0) + result[--xIndex] = x[xIndex]; + + // Grow result if necessary + if (carry) { + int bigger[] = new int[result.length + 1]; + System.arraycopy(result, 0, bigger, 1, result.length); + bigger[0] = 0x01; + return bigger; + } + return result; + } + + private static int[] subtract(long val, int[] little) { + int highWord = (int)(val >>> 32); + if (highWord == 0) { + int result[] = new int[1]; + result[0] = (int)(val - (little[0] & LONG_MASK)); + return result; + } else { + int result[] = new int[2]; + if (little.length == 1) { + long difference = ((int)val & LONG_MASK) - (little[0] & LONG_MASK); + result[1] = (int)difference; + // Subtract remainder of longer number while borrow propagates + boolean borrow = (difference >> 32 != 0); + if (borrow) { + result[0] = highWord - 1; + } else { // Copy remainder of longer number + result[0] = highWord; + } + return result; + } else { // little.length == 2 + long difference = ((int)val & LONG_MASK) - (little[1] & LONG_MASK); + result[1] = (int)difference; + difference = (highWord & LONG_MASK) - (little[0] & LONG_MASK) + (difference >> 32); + result[0] = (int)difference; + return result; + } + } + } + + /** + * Subtracts the contents of the second argument (val) from the + * first (big). The first int array (big) must represent a larger number + * than the second. This method allocates the space necessary to hold the + * answer. + * assumes val >= 0 + */ + private static int[] subtract(int[] big, long val) { + int highWord = (int)(val >>> 32); + int bigIndex = big.length; + int result[] = new int[bigIndex]; + long difference = 0; + + if (highWord == 0) { + difference = (big[--bigIndex] & LONG_MASK) - val; + result[bigIndex] = (int)difference; + } else { + difference = (big[--bigIndex] & LONG_MASK) - (val & LONG_MASK); + result[bigIndex] = (int)difference; + difference = (big[--bigIndex] & LONG_MASK) - (highWord & LONG_MASK) + (difference >> 32); + result[bigIndex] = (int)difference; + } + + // Subtract remainder of longer number while borrow propagates + boolean borrow = (difference >> 32 != 0); + while (bigIndex > 0 && borrow) + borrow = ((result[--bigIndex] = big[bigIndex] - 1) == -1); + + // Copy remainder of longer number + while (bigIndex > 0) + result[--bigIndex] = big[bigIndex]; + + return result; + } + + /** + * Returns a BigInteger whose value is {@code (this - val)}. + * + * @param val value to be subtracted from this BigInteger. + * @return {@code this - val} + */ + public BigInteger subtract(BigInteger val) { + if (val.signum == 0) + return this; + if (signum == 0) + return val.negate(); + if (val.signum != signum) + return new BigInteger(add(mag, val.mag), signum); + + int cmp = compareMagnitude(val); + if (cmp == 0) + return ZERO; + int[] resultMag = (cmp > 0 ? subtract(mag, val.mag) + : subtract(val.mag, mag)); + resultMag = trustedStripLeadingZeroInts(resultMag); + return new BigInteger(resultMag, cmp == signum ? 1 : -1); + } + + /** + * Subtracts the contents of the second int arrays (little) from the + * first (big). The first int array (big) must represent a larger number + * than the second. This method allocates the space necessary to hold the + * answer. + */ + private static int[] subtract(int[] big, int[] little) { + int bigIndex = big.length; + int result[] = new int[bigIndex]; + int littleIndex = little.length; + long difference = 0; + + // Subtract common parts of both numbers + while (littleIndex > 0) { + difference = (big[--bigIndex] & LONG_MASK) - + (little[--littleIndex] & LONG_MASK) + + (difference >> 32); + result[bigIndex] = (int)difference; + } + + // Subtract remainder of longer number while borrow propagates + boolean borrow = (difference >> 32 != 0); + while (bigIndex > 0 && borrow) + borrow = ((result[--bigIndex] = big[bigIndex] - 1) == -1); + + // Copy remainder of longer number + while (bigIndex > 0) + result[--bigIndex] = big[bigIndex]; + + return result; + } + + /** + * Returns a BigInteger whose value is {@code (this * val)}. + * + * @implNote An implementation may offer better algorithmic + * performance when {@code val == this}. + * + * @param val value to be multiplied by this BigInteger. + * @return {@code this * val} + */ + public BigInteger multiply(BigInteger val) { + if (val.signum == 0 || signum == 0) + return ZERO; + + int xlen = mag.length; + + if (val == this && xlen > MULTIPLY_SQUARE_THRESHOLD) { + return square(); + } + + int ylen = val.mag.length; + + if ((xlen < KARATSUBA_THRESHOLD) || (ylen < KARATSUBA_THRESHOLD)) { + int resultSign = signum == val.signum ? 1 : -1; + if (val.mag.length == 1) { + return multiplyByInt(mag,val.mag[0], resultSign); + } + if (mag.length == 1) { + return multiplyByInt(val.mag,mag[0], resultSign); + } + int[] result = multiplyToLen(mag, xlen, + val.mag, ylen, null); + result = trustedStripLeadingZeroInts(result); + return new BigInteger(result, resultSign); + } else { + if ((xlen < TOOM_COOK_THRESHOLD) && (ylen < TOOM_COOK_THRESHOLD)) { + return multiplyKaratsuba(this, val); + } else { + return multiplyToomCook3(this, val); + } + } + } + + private static BigInteger multiplyByInt(int[] x, int y, int sign) { + if (Integer.bitCount(y) == 1) { + return new BigInteger(shiftLeft(x,Integer.numberOfTrailingZeros(y)), sign); + } + int xlen = x.length; + int[] rmag = new int[xlen + 1]; + long carry = 0; + long yl = y & LONG_MASK; + int rstart = rmag.length - 1; + for (int i = xlen - 1; i >= 0; i--) { + long product = (x[i] & LONG_MASK) * yl + carry; + rmag[rstart--] = (int)product; + carry = product >>> 32; + } + if (carry == 0L) { + rmag = java.util.Arrays.copyOfRange(rmag, 1, rmag.length); + } else { + rmag[rstart] = (int)carry; + } + return new BigInteger(rmag, sign); + } + + /** + * Package private methods used by BigDecimal code to multiply a BigInteger + * with a long. Assumes v is not equal to INFLATED. + */ + BigInteger multiply(long v) { + if (v == 0 || signum == 0) + return ZERO; + if (v == BigDecimal.INFLATED) + return multiply(BigInteger.valueOf(v)); + int rsign = (v > 0 ? signum : -signum); + if (v < 0) + v = -v; + long dh = v >>> 32; // higher order bits + long dl = v & LONG_MASK; // lower order bits + + int xlen = mag.length; + int[] value = mag; + int[] rmag = (dh == 0L) ? (new int[xlen + 1]) : (new int[xlen + 2]); + long carry = 0; + int rstart = rmag.length - 1; + for (int i = xlen - 1; i >= 0; i--) { + long product = (value[i] & LONG_MASK) * dl + carry; + rmag[rstart--] = (int)product; + carry = product >>> 32; + } + rmag[rstart] = (int)carry; + if (dh != 0L) { + carry = 0; + rstart = rmag.length - 2; + for (int i = xlen - 1; i >= 0; i--) { + long product = (value[i] & LONG_MASK) * dh + + (rmag[rstart] & LONG_MASK) + carry; + rmag[rstart--] = (int)product; + carry = product >>> 32; + } + rmag[0] = (int)carry; + } + if (carry == 0L) + rmag = java.util.Arrays.copyOfRange(rmag, 1, rmag.length); + return new BigInteger(rmag, rsign); + } + + /** + * Multiplies int arrays x and y to the specified lengths and places + * the result into z. There will be no leading zeros in the resultant array. + */ + private int[] multiplyToLen(int[] x, int xlen, int[] y, int ylen, int[] z) { + int xstart = xlen - 1; + int ystart = ylen - 1; + + if (z == null || z.length < (xlen+ ylen)) + z = new int[xlen+ylen]; + + long carry = 0; + for (int j=ystart, k=ystart+1+xstart; j >= 0; j--, k--) { + long product = (y[j] & LONG_MASK) * + (x[xstart] & LONG_MASK) + carry; + z[k] = (int)product; + carry = product >>> 32; + } + z[xstart] = (int)carry; + + for (int i = xstart-1; i >= 0; i--) { + carry = 0; + for (int j=ystart, k=ystart+1+i; j >= 0; j--, k--) { + long product = (y[j] & LONG_MASK) * + (x[i] & LONG_MASK) + + (z[k] & LONG_MASK) + carry; + z[k] = (int)product; + carry = product >>> 32; + } + z[i] = (int)carry; + } + return z; + } + + /** + * Multiplies two BigIntegers using the Karatsuba multiplication + * algorithm. This is a recursive divide-and-conquer algorithm which is + * more efficient for large numbers than what is commonly called the + * "grade-school" algorithm used in multiplyToLen. If the numbers to be + * multiplied have length n, the "grade-school" algorithm has an + * asymptotic complexity of O(n^2). In contrast, the Karatsuba algorithm + * has complexity of O(n^(log2(3))), or O(n^1.585). It achieves this + * increased performance by doing 3 multiplies instead of 4 when + * evaluating the product. As it has some overhead, should be used when + * both numbers are larger than a certain threshold (found + * experimentally). + * + * See: http://en.wikipedia.org/wiki/Karatsuba_algorithm + */ + private static BigInteger multiplyKaratsuba(BigInteger x, BigInteger y) { + int xlen = x.mag.length; + int ylen = y.mag.length; + + // The number of ints in each half of the number. + int half = (Math.max(xlen, ylen)+1) / 2; + + // xl and yl are the lower halves of x and y respectively, + // xh and yh are the upper halves. + BigInteger xl = x.getLower(half); + BigInteger xh = x.getUpper(half); + BigInteger yl = y.getLower(half); + BigInteger yh = y.getUpper(half); + + BigInteger p1 = xh.multiply(yh); // p1 = xh*yh + BigInteger p2 = xl.multiply(yl); // p2 = xl*yl + + // p3=(xh+xl)*(yh+yl) + BigInteger p3 = xh.add(xl).multiply(yh.add(yl)); + + // result = p1 * 2^(32*2*half) + (p3 - p1 - p2) * 2^(32*half) + p2 + BigInteger result = p1.shiftLeft(32*half).add(p3.subtract(p1).subtract(p2)).shiftLeft(32*half).add(p2); + + if (x.signum != y.signum) { + return result.negate(); + } else { + return result; + } + } + + /** + * Multiplies two BigIntegers using a 3-way Toom-Cook multiplication + * algorithm. This is a recursive divide-and-conquer algorithm which is + * more efficient for large numbers than what is commonly called the + * "grade-school" algorithm used in multiplyToLen. If the numbers to be + * multiplied have length n, the "grade-school" algorithm has an + * asymptotic complexity of O(n^2). In contrast, 3-way Toom-Cook has a + * complexity of about O(n^1.465). It achieves this increased asymptotic + * performance by breaking each number into three parts and by doing 5 + * multiplies instead of 9 when evaluating the product. Due to overhead + * (additions, shifts, and one division) in the Toom-Cook algorithm, it + * should only be used when both numbers are larger than a certain + * threshold (found experimentally). This threshold is generally larger + * than that for Karatsuba multiplication, so this algorithm is generally + * only used when numbers become significantly larger. + * + * The algorithm used is the "optimal" 3-way Toom-Cook algorithm outlined + * by Marco Bodrato. + * + * See: http://bodrato.it/toom-cook/ + * http://bodrato.it/papers/#WAIFI2007 + * + * "Towards Optimal Toom-Cook Multiplication for Univariate and + * Multivariate Polynomials in Characteristic 2 and 0." by Marco BODRATO; + * In C.Carlet and B.Sunar, Eds., "WAIFI'07 proceedings", p. 116-133, + * LNCS #4547. Springer, Madrid, Spain, June 21-22, 2007. + * + */ + private static BigInteger multiplyToomCook3(BigInteger a, BigInteger b) { + int alen = a.mag.length; + int blen = b.mag.length; + + int largest = Math.max(alen, blen); + + // k is the size (in ints) of the lower-order slices. + int k = (largest+2)/3; // Equal to ceil(largest/3) + + // r is the size (in ints) of the highest-order slice. + int r = largest - 2*k; + + // Obtain slices of the numbers. a2 and b2 are the most significant + // bits of the numbers a and b, and a0 and b0 the least significant. + BigInteger a0, a1, a2, b0, b1, b2; + a2 = a.getToomSlice(k, r, 0, largest); + a1 = a.getToomSlice(k, r, 1, largest); + a0 = a.getToomSlice(k, r, 2, largest); + b2 = b.getToomSlice(k, r, 0, largest); + b1 = b.getToomSlice(k, r, 1, largest); + b0 = b.getToomSlice(k, r, 2, largest); + + BigInteger v0, v1, v2, vm1, vinf, t1, t2, tm1, da1, db1; + + v0 = a0.multiply(b0); + da1 = a2.add(a0); + db1 = b2.add(b0); + vm1 = da1.subtract(a1).multiply(db1.subtract(b1)); + da1 = da1.add(a1); + db1 = db1.add(b1); + v1 = da1.multiply(db1); + v2 = da1.add(a2).shiftLeft(1).subtract(a0).multiply( + db1.add(b2).shiftLeft(1).subtract(b0)); + vinf = a2.multiply(b2); + + // The algorithm requires two divisions by 2 and one by 3. + // All divisions are known to be exact, that is, they do not produce + // remainders, and all results are positive. The divisions by 2 are + // implemented as right shifts which are relatively efficient, leaving + // only an exact division by 3, which is done by a specialized + // linear-time algorithm. + t2 = v2.subtract(vm1).exactDivideBy3(); + tm1 = v1.subtract(vm1).shiftRight(1); + t1 = v1.subtract(v0); + t2 = t2.subtract(t1).shiftRight(1); + t1 = t1.subtract(tm1).subtract(vinf); + t2 = t2.subtract(vinf.shiftLeft(1)); + tm1 = tm1.subtract(t2); + + // Number of bits to shift left. + int ss = k*32; + + BigInteger result = vinf.shiftLeft(ss).add(t2).shiftLeft(ss).add(t1).shiftLeft(ss).add(tm1).shiftLeft(ss).add(v0); + + if (a.signum != b.signum) { + return result.negate(); + } else { + return result; + } + } + + + /** + * Returns a slice of a BigInteger for use in Toom-Cook multiplication. + * + * @param lowerSize The size of the lower-order bit slices. + * @param upperSize The size of the higher-order bit slices. + * @param slice The index of which slice is requested, which must be a + * number from 0 to size-1. Slice 0 is the highest-order bits, and slice + * size-1 are the lowest-order bits. Slice 0 may be of different size than + * the other slices. + * @param fullsize The size of the larger integer array, used to align + * slices to the appropriate position when multiplying different-sized + * numbers. + */ + private BigInteger getToomSlice(int lowerSize, int upperSize, int slice, + int fullsize) { + int start, end, sliceSize, len, offset; + + len = mag.length; + offset = fullsize - len; + + if (slice == 0) { + start = 0 - offset; + end = upperSize - 1 - offset; + } else { + start = upperSize + (slice-1)*lowerSize - offset; + end = start + lowerSize - 1; + } + + if (start < 0) { + start = 0; + } + if (end < 0) { + return ZERO; + } + + sliceSize = (end-start) + 1; + + if (sliceSize <= 0) { + return ZERO; + } + + // While performing Toom-Cook, all slices are positive and + // the sign is adjusted when the final number is composed. + if (start == 0 && sliceSize >= len) { + return this.abs(); + } + + int intSlice[] = new int[sliceSize]; + System.arraycopy(mag, start, intSlice, 0, sliceSize); + + return new BigInteger(trustedStripLeadingZeroInts(intSlice), 1); + } + + /** + * Does an exact division (that is, the remainder is known to be zero) + * of the specified number by 3. This is used in Toom-Cook + * multiplication. This is an efficient algorithm that runs in linear + * time. If the argument is not exactly divisible by 3, results are + * undefined. Note that this is expected to be called with positive + * arguments only. + */ + private BigInteger exactDivideBy3() { + int len = mag.length; + int[] result = new int[len]; + long x, w, q, borrow; + borrow = 0L; + for (int i=len-1; i >= 0; i--) { + x = (mag[i] & LONG_MASK); + w = x - borrow; + if (borrow > x) { // Did we make the number go negative? + borrow = 1L; + } else { + borrow = 0L; + } + + // 0xAAAAAAAB is the modular inverse of 3 (mod 2^32). Thus, + // the effect of this is to divide by 3 (mod 2^32). + // This is much faster than division on most architectures. + q = (w * 0xAAAAAAABL) & LONG_MASK; + result[i] = (int) q; + + // Now check the borrow. The second check can of course be + // eliminated if the first fails. + if (q >= 0x55555556L) { + borrow++; + if (q >= 0xAAAAAAABL) + borrow++; + } + } + result = trustedStripLeadingZeroInts(result); + return new BigInteger(result, signum); + } + + /** + * Returns a new BigInteger representing n lower ints of the number. + * This is used by Karatsuba multiplication and Karatsuba squaring. + */ + private BigInteger getLower(int n) { + int len = mag.length; + + if (len <= n) { + return abs(); + } + + int lowerInts[] = new int[n]; + System.arraycopy(mag, len-n, lowerInts, 0, n); + + return new BigInteger(trustedStripLeadingZeroInts(lowerInts), 1); + } + + /** + * Returns a new BigInteger representing mag.length-n upper + * ints of the number. This is used by Karatsuba multiplication and + * Karatsuba squaring. + */ + private BigInteger getUpper(int n) { + int len = mag.length; + + if (len <= n) { + return ZERO; + } + + int upperLen = len - n; + int upperInts[] = new int[upperLen]; + System.arraycopy(mag, 0, upperInts, 0, upperLen); + + return new BigInteger(trustedStripLeadingZeroInts(upperInts), 1); + } + + // Squaring + + /** + * Returns a BigInteger whose value is {@code (this2)}. + * + * @return {@code this2} + */ + private BigInteger square() { + if (signum == 0) { + return ZERO; + } + int len = mag.length; + + if (len < KARATSUBA_SQUARE_THRESHOLD) { + int[] z = squareToLen(mag, len, null); + return new BigInteger(trustedStripLeadingZeroInts(z), 1); + } else { + if (len < TOOM_COOK_SQUARE_THRESHOLD) { + return squareKaratsuba(); + } else { + return squareToomCook3(); + } + } + } + + /** + * Squares the contents of the int array x. The result is placed into the + * int array z. The contents of x are not changed. + */ + private static final int[] squareToLen(int[] x, int len, int[] z) { + /* + * The algorithm used here is adapted from Colin Plumb's C library. + * Technique: Consider the partial products in the multiplication + * of "abcde" by itself: + * + * a b c d e + * * a b c d e + * ================== + * ae be ce de ee + * ad bd cd dd de + * ac bc cc cd ce + * ab bb bc bd be + * aa ab ac ad ae + * + * Note that everything above the main diagonal: + * ae be ce de = (abcd) * e + * ad bd cd = (abc) * d + * ac bc = (ab) * c + * ab = (a) * b + * + * is a copy of everything below the main diagonal: + * de + * cd ce + * bc bd be + * ab ac ad ae + * + * Thus, the sum is 2 * (off the diagonal) + diagonal. + * + * This is accumulated beginning with the diagonal (which + * consist of the squares of the digits of the input), which is then + * divided by two, the off-diagonal added, and multiplied by two + * again. The low bit is simply a copy of the low bit of the + * input, so it doesn't need special care. + */ + int zlen = len << 1; + if (z == null || z.length < zlen) + z = new int[zlen]; + + // Store the squares, right shifted one bit (i.e., divided by 2) + int lastProductLowWord = 0; + for (int j=0, i=0; j < len; j++) { + long piece = (x[j] & LONG_MASK); + long product = piece * piece; + z[i++] = (lastProductLowWord << 31) | (int)(product >>> 33); + z[i++] = (int)(product >>> 1); + lastProductLowWord = (int)product; + } + + // Add in off-diagonal sums + for (int i=len, offset=1; i > 0; i--, offset+=2) { + int t = x[i-1]; + t = mulAdd(z, x, offset, i-1, t); + addOne(z, offset-1, i, t); + } + + // Shift back up and set low bit + primitiveLeftShift(z, zlen, 1); + z[zlen-1] |= x[len-1] & 1; + + return z; + } + + /** + * Squares a BigInteger using the Karatsuba squaring algorithm. It should + * be used when both numbers are larger than a certain threshold (found + * experimentally). It is a recursive divide-and-conquer algorithm that + * has better asymptotic performance than the algorithm used in + * squareToLen. + */ + private BigInteger squareKaratsuba() { + int half = (mag.length+1) / 2; + + BigInteger xl = getLower(half); + BigInteger xh = getUpper(half); + + BigInteger xhs = xh.square(); // xhs = xh^2 + BigInteger xls = xl.square(); // xls = xl^2 + + // xh^2 << 64 + (((xl+xh)^2 - (xh^2 + xl^2)) << 32) + xl^2 + return xhs.shiftLeft(half*32).add(xl.add(xh).square().subtract(xhs.add(xls))).shiftLeft(half*32).add(xls); + } + + /** + * Squares a BigInteger using the 3-way Toom-Cook squaring algorithm. It + * should be used when both numbers are larger than a certain threshold + * (found experimentally). It is a recursive divide-and-conquer algorithm + * that has better asymptotic performance than the algorithm used in + * squareToLen or squareKaratsuba. + */ + private BigInteger squareToomCook3() { + int len = mag.length; + + // k is the size (in ints) of the lower-order slices. + int k = (len+2)/3; // Equal to ceil(largest/3) + + // r is the size (in ints) of the highest-order slice. + int r = len - 2*k; + + // Obtain slices of the numbers. a2 is the most significant + // bits of the number, and a0 the least significant. + BigInteger a0, a1, a2; + a2 = getToomSlice(k, r, 0, len); + a1 = getToomSlice(k, r, 1, len); + a0 = getToomSlice(k, r, 2, len); + BigInteger v0, v1, v2, vm1, vinf, t1, t2, tm1, da1; + + v0 = a0.square(); + da1 = a2.add(a0); + vm1 = da1.subtract(a1).square(); + da1 = da1.add(a1); + v1 = da1.square(); + vinf = a2.square(); + v2 = da1.add(a2).shiftLeft(1).subtract(a0).square(); + + // The algorithm requires two divisions by 2 and one by 3. + // All divisions are known to be exact, that is, they do not produce + // remainders, and all results are positive. The divisions by 2 are + // implemented as right shifts which are relatively efficient, leaving + // only a division by 3. + // The division by 3 is done by an optimized algorithm for this case. + t2 = v2.subtract(vm1).exactDivideBy3(); + tm1 = v1.subtract(vm1).shiftRight(1); + t1 = v1.subtract(v0); + t2 = t2.subtract(t1).shiftRight(1); + t1 = t1.subtract(tm1).subtract(vinf); + t2 = t2.subtract(vinf.shiftLeft(1)); + tm1 = tm1.subtract(t2); + + // Number of bits to shift left. + int ss = k*32; + + return vinf.shiftLeft(ss).add(t2).shiftLeft(ss).add(t1).shiftLeft(ss).add(tm1).shiftLeft(ss).add(v0); + } + + // Division + + /** + * Returns a BigInteger whose value is {@code (this / val)}. + * + * @param val value by which this BigInteger is to be divided. + * @return {@code this / val} + * @throws ArithmeticException if {@code val} is zero. + */ + public BigInteger divide(BigInteger val) { + if (val.mag.length < BURNIKEL_ZIEGLER_THRESHOLD || + mag.length - val.mag.length < BURNIKEL_ZIEGLER_OFFSET) { + return divideKnuth(val); + } else { + return divideBurnikelZiegler(val); + } + } + + /** + * Returns a BigInteger whose value is {@code (this / val)} using an O(n^2) algorithm from Knuth. + * + * @param val value by which this BigInteger is to be divided. + * @return {@code this / val} + * @throws ArithmeticException if {@code val} is zero. + * @see MutableBigInteger#divideKnuth(MutableBigInteger, MutableBigInteger, boolean) + */ + private BigInteger divideKnuth(BigInteger val) { + MutableBigInteger q = new MutableBigInteger(), + a = new MutableBigInteger(this.mag), + b = new MutableBigInteger(val.mag); + + a.divideKnuth(b, q, false); + return q.toBigInteger(this.signum * val.signum); + } + + /** + * Returns an array of two BigIntegers containing {@code (this / val)} + * followed by {@code (this % val)}. + * + * @param val value by which this BigInteger is to be divided, and the + * remainder computed. + * @return an array of two BigIntegers: the quotient {@code (this / val)} + * is the initial element, and the remainder {@code (this % val)} + * is the final element. + * @throws ArithmeticException if {@code val} is zero. + */ + public BigInteger[] divideAndRemainder(BigInteger val) { + if (val.mag.length < BURNIKEL_ZIEGLER_THRESHOLD || + mag.length - val.mag.length < BURNIKEL_ZIEGLER_OFFSET) { + return divideAndRemainderKnuth(val); + } else { + return divideAndRemainderBurnikelZiegler(val); + } + } + + /** Long division */ + private BigInteger[] divideAndRemainderKnuth(BigInteger val) { + BigInteger[] result = new BigInteger[2]; + MutableBigInteger q = new MutableBigInteger(), + a = new MutableBigInteger(this.mag), + b = new MutableBigInteger(val.mag); + MutableBigInteger r = a.divideKnuth(b, q); + result[0] = q.toBigInteger(this.signum == val.signum ? 1 : -1); + result[1] = r.toBigInteger(this.signum); + return result; + } + + /** + * Returns a BigInteger whose value is {@code (this % val)}. + * + * @param val value by which this BigInteger is to be divided, and the + * remainder computed. + * @return {@code this % val} + * @throws ArithmeticException if {@code val} is zero. + */ + public BigInteger remainder(BigInteger val) { + if (val.mag.length < BURNIKEL_ZIEGLER_THRESHOLD || + mag.length - val.mag.length < BURNIKEL_ZIEGLER_OFFSET) { + return remainderKnuth(val); + } else { + return remainderBurnikelZiegler(val); + } + } + + /** Long division */ + private BigInteger remainderKnuth(BigInteger val) { + MutableBigInteger q = new MutableBigInteger(), + a = new MutableBigInteger(this.mag), + b = new MutableBigInteger(val.mag); + + return a.divideKnuth(b, q).toBigInteger(this.signum); + } + + /** + * Calculates {@code this / val} using the Burnikel-Ziegler algorithm. + * @param val the divisor + * @return {@code this / val} + */ + private BigInteger divideBurnikelZiegler(BigInteger val) { + return divideAndRemainderBurnikelZiegler(val)[0]; + } + + /** + * Calculates {@code this % val} using the Burnikel-Ziegler algorithm. + * @param val the divisor + * @return {@code this % val} + */ + private BigInteger remainderBurnikelZiegler(BigInteger val) { + return divideAndRemainderBurnikelZiegler(val)[1]; + } + + /** + * Computes {@code this / val} and {@code this % val} using the + * Burnikel-Ziegler algorithm. + * @param val the divisor + * @return an array containing the quotient and remainder + */ + private BigInteger[] divideAndRemainderBurnikelZiegler(BigInteger val) { + MutableBigInteger q = new MutableBigInteger(); + MutableBigInteger r = new MutableBigInteger(this).divideAndRemainderBurnikelZiegler(new MutableBigInteger(val), q); + BigInteger qBigInt = q.isZero() ? ZERO : q.toBigInteger(signum*val.signum); + BigInteger rBigInt = r.isZero() ? ZERO : r.toBigInteger(signum); + return new BigInteger[] {qBigInt, rBigInt}; + } + + /** + * Returns a BigInteger whose value is (thisexponent). + * Note that {@code exponent} is an integer rather than a BigInteger. + * + * @param exponent exponent to which this BigInteger is to be raised. + * @return thisexponent + * @throws ArithmeticException {@code exponent} is negative. (This would + * cause the operation to yield a non-integer value.) + */ + public BigInteger pow(int exponent) { + if (exponent < 0) { + throw new ArithmeticException("Negative exponent"); + } + if (signum == 0) { + return (exponent == 0 ? ONE : this); + } + + BigInteger partToSquare = this.abs(); + + // Factor out powers of two from the base, as the exponentiation of + // these can be done by left shifts only. + // The remaining part can then be exponentiated faster. The + // powers of two will be multiplied back at the end. + int powersOfTwo = partToSquare.getLowestSetBit(); + long bitsToShift = (long)powersOfTwo * exponent; + if (bitsToShift > Integer.MAX_VALUE) { + reportOverflow(); + } + + int remainingBits; + + // Factor the powers of two out quickly by shifting right, if needed. + if (powersOfTwo > 0) { + partToSquare = partToSquare.shiftRight(powersOfTwo); + remainingBits = partToSquare.bitLength(); + if (remainingBits == 1) { // Nothing left but +/- 1? + if (signum < 0 && (exponent&1) == 1) { + return NEGATIVE_ONE.shiftLeft(powersOfTwo*exponent); + } else { + return ONE.shiftLeft(powersOfTwo*exponent); + } + } + } else { + remainingBits = partToSquare.bitLength(); + if (remainingBits == 1) { // Nothing left but +/- 1? + if (signum < 0 && (exponent&1) == 1) { + return NEGATIVE_ONE; + } else { + return ONE; + } + } + } + + // This is a quick way to approximate the size of the result, + // similar to doing log2[n] * exponent. This will give an upper bound + // of how big the result can be, and which algorithm to use. + long scaleFactor = (long)remainingBits * exponent; + + // Use slightly different algorithms for small and large operands. + // See if the result will safely fit into a long. (Largest 2^63-1) + if (partToSquare.mag.length == 1 && scaleFactor <= 62) { + // Small number algorithm. Everything fits into a long. + int newSign = (signum <0 && (exponent&1) == 1 ? -1 : 1); + long result = 1; + long baseToPow2 = partToSquare.mag[0] & LONG_MASK; + + int workingExponent = exponent; + + // Perform exponentiation using repeated squaring trick + while (workingExponent != 0) { + if ((workingExponent & 1) == 1) { + result = result * baseToPow2; + } + + if ((workingExponent >>>= 1) != 0) { + baseToPow2 = baseToPow2 * baseToPow2; + } + } + + // Multiply back the powers of two (quickly, by shifting left) + if (powersOfTwo > 0) { + if (bitsToShift + scaleFactor <= 62) { // Fits in long? + return valueOf((result << bitsToShift) * newSign); + } else { + return valueOf(result*newSign).shiftLeft((int) bitsToShift); + } + } + else { + return valueOf(result*newSign); + } + } else { + // Large number algorithm. This is basically identical to + // the algorithm above, but calls multiply() and square() + // which may use more efficient algorithms for large numbers. + BigInteger answer = ONE; + + int workingExponent = exponent; + // Perform exponentiation using repeated squaring trick + while (workingExponent != 0) { + if ((workingExponent & 1) == 1) { + answer = answer.multiply(partToSquare); + } + + if ((workingExponent >>>= 1) != 0) { + partToSquare = partToSquare.square(); + } + } + // Multiply back the (exponentiated) powers of two (quickly, + // by shifting left) + if (powersOfTwo > 0) { + answer = answer.shiftLeft(powersOfTwo*exponent); + } + + if (signum < 0 && (exponent&1) == 1) { + return answer.negate(); + } else { + return answer; + } + } + } + + /** + * Returns a BigInteger whose value is the greatest common divisor of + * {@code abs(this)} and {@code abs(val)}. Returns 0 if + * {@code this == 0 && val == 0}. + * + * @param val value with which the GCD is to be computed. + * @return {@code GCD(abs(this), abs(val))} + */ + public BigInteger gcd(BigInteger val) { + if (val.signum == 0) + return this.abs(); + else if (this.signum == 0) + return val.abs(); + + MutableBigInteger a = new MutableBigInteger(this); + MutableBigInteger b = new MutableBigInteger(val); + + MutableBigInteger result = a.hybridGCD(b); + + return result.toBigInteger(1); + } + + /** + * Package private method to return bit length for an integer. + */ + static int bitLengthForInt(int n) { + return 32 - Integer.numberOfLeadingZeros(n); + } + + /** + * Left shift int array a up to len by n bits. Returns the array that + * results from the shift since space may have to be reallocated. + */ + private static int[] leftShift(int[] a, int len, int n) { + int nInts = n >>> 5; + int nBits = n&0x1F; + int bitsInHighWord = bitLengthForInt(a[0]); + + // If shift can be done without recopy, do so + if (n <= (32-bitsInHighWord)) { + primitiveLeftShift(a, len, nBits); + return a; + } else { // Array must be resized + if (nBits <= (32-bitsInHighWord)) { + int result[] = new int[nInts+len]; + System.arraycopy(a, 0, result, 0, len); + primitiveLeftShift(result, result.length, nBits); + return result; + } else { + int result[] = new int[nInts+len+1]; + System.arraycopy(a, 0, result, 0, len); + primitiveRightShift(result, result.length, 32 - nBits); + return result; + } + } + } + + // shifts a up to len right n bits assumes no leading zeros, 0 0; i--) { + int b = c; + c = a[i-1]; + a[i] = (c << n2) | (b >>> n); + } + a[0] >>>= n; + } + + // shifts a up to len left n bits assumes no leading zeros, 0<=n<32 + static void primitiveLeftShift(int[] a, int len, int n) { + if (len == 0 || n == 0) + return; + + int n2 = 32 - n; + for (int i=0, c=a[i], m=i+len-1; i < m; i++) { + int b = c; + c = a[i+1]; + a[i] = (b << n) | (c >>> n2); + } + a[len-1] <<= n; + } + + /** + * Calculate bitlength of contents of the first len elements an int array, + * assuming there are no leading zero ints. + */ + private static int bitLength(int[] val, int len) { + if (len == 0) + return 0; + return ((len - 1) << 5) + bitLengthForInt(val[0]); + } + + /** + * Returns a BigInteger whose value is the absolute value of this + * BigInteger. + * + * @return {@code abs(this)} + */ + public BigInteger abs() { + return (signum >= 0 ? this : this.negate()); + } + + /** + * Returns a BigInteger whose value is {@code (-this)}. + * + * @return {@code -this} + */ + public BigInteger negate() { + return new BigInteger(this.mag, -this.signum); + } + + /** + * Returns the signum function of this BigInteger. + * + * @return -1, 0 or 1 as the value of this BigInteger is negative, zero or + * positive. + */ + public int signum() { + return this.signum; + } + + // Modular Arithmetic Operations + + /** + * Returns a BigInteger whose value is {@code (this mod m}). This method + * differs from {@code remainder} in that it always returns a + * non-negative BigInteger. + * + * @param m the modulus. + * @return {@code this mod m} + * @throws ArithmeticException {@code m} ≤ 0 + * @see #remainder + */ + public BigInteger mod(BigInteger m) { + if (m.signum <= 0) + throw new ArithmeticException("BigInteger: modulus not positive"); + + BigInteger result = this.remainder(m); + return (result.signum >= 0 ? result : result.add(m)); + } + + /** + * Returns a BigInteger whose value is + * (thisexponent mod m). (Unlike {@code pow}, this + * method permits negative exponents.) + * + * @param exponent the exponent. + * @param m the modulus. + * @return thisexponent mod m + * @throws ArithmeticException {@code m} ≤ 0 or the exponent is + * negative and this BigInteger is not relatively + * prime to {@code m}. + * @see #modInverse + */ + public BigInteger modPow(BigInteger exponent, BigInteger m) { + if (m.signum <= 0) + throw new ArithmeticException("BigInteger: modulus not positive"); + + // Trivial cases + if (exponent.signum == 0) + return (m.equals(ONE) ? ZERO : ONE); + + if (this.equals(ONE)) + return (m.equals(ONE) ? ZERO : ONE); + + if (this.equals(ZERO) && exponent.signum >= 0) + return ZERO; + + if (this.equals(negConst[1]) && (!exponent.testBit(0))) + return (m.equals(ONE) ? ZERO : ONE); + + boolean invertResult; + if ((invertResult = (exponent.signum < 0))) + exponent = exponent.negate(); + + BigInteger base = (this.signum < 0 || this.compareTo(m) >= 0 + ? this.mod(m) : this); + BigInteger result; + if (m.testBit(0)) { // odd modulus + result = base.oddModPow(exponent, m); + } else { + /* + * Even modulus. Tear it into an "odd part" (m1) and power of two + * (m2), exponentiate mod m1, manually exponentiate mod m2, and + * use Chinese Remainder Theorem to combine results. + */ + + // Tear m apart into odd part (m1) and power of 2 (m2) + int p = m.getLowestSetBit(); // Max pow of 2 that divides m + + BigInteger m1 = m.shiftRight(p); // m/2**p + BigInteger m2 = ONE.shiftLeft(p); // 2**p + + // Calculate new base from m1 + BigInteger base2 = (this.signum < 0 || this.compareTo(m1) >= 0 + ? this.mod(m1) : this); + + // Caculate (base ** exponent) mod m1. + BigInteger a1 = (m1.equals(ONE) ? ZERO : + base2.oddModPow(exponent, m1)); + + // Calculate (this ** exponent) mod m2 + BigInteger a2 = base.modPow2(exponent, p); + + // Combine results using Chinese Remainder Theorem + BigInteger y1 = m2.modInverse(m1); + BigInteger y2 = m1.modInverse(m2); + + if (m.mag.length < MAX_MAG_LENGTH / 2) { + result = a1.multiply(m2).multiply(y1).add(a2.multiply(m1).multiply(y2)).mod(m); + } else { + MutableBigInteger t1 = new MutableBigInteger(); + new MutableBigInteger(a1.multiply(m2)).multiply(new MutableBigInteger(y1), t1); + MutableBigInteger t2 = new MutableBigInteger(); + new MutableBigInteger(a2.multiply(m1)).multiply(new MutableBigInteger(y2), t2); + t1.add(t2); + MutableBigInteger q = new MutableBigInteger(); + result = t1.divide(new MutableBigInteger(m), q).toBigInteger(); + } + } + + return (invertResult ? result.modInverse(m) : result); + } + + static int[] bnExpModThreshTable = {7, 25, 81, 241, 673, 1793, + Integer.MAX_VALUE}; // Sentinel + + /** + * Returns a BigInteger whose value is x to the power of y mod z. + * Assumes: z is odd && x < z. + */ + private BigInteger oddModPow(BigInteger y, BigInteger z) { + /* + * The algorithm is adapted from Colin Plumb's C library. + * + * The window algorithm: + * The idea is to keep a running product of b1 = n^(high-order bits of exp) + * and then keep appending exponent bits to it. The following patterns + * apply to a 3-bit window (k = 3): + * To append 0: square + * To append 1: square, multiply by n^1 + * To append 10: square, multiply by n^1, square + * To append 11: square, square, multiply by n^3 + * To append 100: square, multiply by n^1, square, square + * To append 101: square, square, square, multiply by n^5 + * To append 110: square, square, multiply by n^3, square + * To append 111: square, square, square, multiply by n^7 + * + * Since each pattern involves only one multiply, the longer the pattern + * the better, except that a 0 (no multiplies) can be appended directly. + * We precompute a table of odd powers of n, up to 2^k, and can then + * multiply k bits of exponent at a time. Actually, assuming random + * exponents, there is on average one zero bit between needs to + * multiply (1/2 of the time there's none, 1/4 of the time there's 1, + * 1/8 of the time, there's 2, 1/32 of the time, there's 3, etc.), so + * you have to do one multiply per k+1 bits of exponent. + * + * The loop walks down the exponent, squaring the result buffer as + * it goes. There is a wbits+1 bit lookahead buffer, buf, that is + * filled with the upcoming exponent bits. (What is read after the + * end of the exponent is unimportant, but it is filled with zero here.) + * When the most-significant bit of this buffer becomes set, i.e. + * (buf & tblmask) != 0, we have to decide what pattern to multiply + * by, and when to do it. We decide, remember to do it in future + * after a suitable number of squarings have passed (e.g. a pattern + * of "100" in the buffer requires that we multiply by n^1 immediately; + * a pattern of "110" calls for multiplying by n^3 after one more + * squaring), clear the buffer, and continue. + * + * When we start, there is one more optimization: the result buffer + * is implcitly one, so squaring it or multiplying by it can be + * optimized away. Further, if we start with a pattern like "100" + * in the lookahead window, rather than placing n into the buffer + * and then starting to square it, we have already computed n^2 + * to compute the odd-powers table, so we can place that into + * the buffer and save a squaring. + * + * This means that if you have a k-bit window, to compute n^z, + * where z is the high k bits of the exponent, 1/2 of the time + * it requires no squarings. 1/4 of the time, it requires 1 + * squaring, ... 1/2^(k-1) of the time, it reqires k-2 squarings. + * And the remaining 1/2^(k-1) of the time, the top k bits are a + * 1 followed by k-1 0 bits, so it again only requires k-2 + * squarings, not k-1. The average of these is 1. Add that + * to the one squaring we have to do to compute the table, + * and you'll see that a k-bit window saves k-2 squarings + * as well as reducing the multiplies. (It actually doesn't + * hurt in the case k = 1, either.) + */ + // Special case for exponent of one + if (y.equals(ONE)) + return this; + + // Special case for base of zero + if (signum == 0) + return ZERO; + + int[] base = mag.clone(); + int[] exp = y.mag; + int[] mod = z.mag; + int modLen = mod.length; + + // Select an appropriate window size + int wbits = 0; + int ebits = bitLength(exp, exp.length); + // if exponent is 65537 (0x10001), use minimum window size + if ((ebits != 17) || (exp[0] != 65537)) { + while (ebits > bnExpModThreshTable[wbits]) { + wbits++; + } + } + + // Calculate appropriate table size + int tblmask = 1 << wbits; + + // Allocate table for precomputed odd powers of base in Montgomery form + int[][] table = new int[tblmask][]; + for (int i=0; i < tblmask; i++) + table[i] = new int[modLen]; + + // Compute the modular inverse + int inv = -MutableBigInteger.inverseMod32(mod[modLen-1]); + + // Convert base to Montgomery form + int[] a = leftShift(base, base.length, modLen << 5); + + MutableBigInteger q = new MutableBigInteger(), + a2 = new MutableBigInteger(a), + b2 = new MutableBigInteger(mod); + + MutableBigInteger r= a2.divide(b2, q); + table[0] = r.toIntArray(); + + // Pad table[0] with leading zeros so its length is at least modLen + if (table[0].length < modLen) { + int offset = modLen - table[0].length; + int[] t2 = new int[modLen]; + for (int i=0; i < table[0].length; i++) + t2[i+offset] = table[0][i]; + table[0] = t2; + } + + // Set b to the square of the base + int[] b = squareToLen(table[0], modLen, null); + b = montReduce(b, mod, modLen, inv); + + // Set t to high half of b + int[] t = Arrays.copyOf(b, modLen); + + // Fill in the table with odd powers of the base + for (int i=1; i < tblmask; i++) { + int[] prod = multiplyToLen(t, modLen, table[i-1], modLen, null); + table[i] = montReduce(prod, mod, modLen, inv); + } + + // Pre load the window that slides over the exponent + int bitpos = 1 << ((ebits-1) & (32-1)); + + int buf = 0; + int elen = exp.length; + int eIndex = 0; + for (int i = 0; i <= wbits; i++) { + buf = (buf << 1) | (((exp[eIndex] & bitpos) != 0)?1:0); + bitpos >>>= 1; + if (bitpos == 0) { + eIndex++; + bitpos = 1 << (32-1); + elen--; + } + } + + int multpos = ebits; + + // The first iteration, which is hoisted out of the main loop + ebits--; + boolean isone = true; + + multpos = ebits - wbits; + while ((buf & 1) == 0) { + buf >>>= 1; + multpos++; + } + + int[] mult = table[buf >>> 1]; + + buf = 0; + if (multpos == ebits) + isone = false; + + // The main loop + while (true) { + ebits--; + // Advance the window + buf <<= 1; + + if (elen != 0) { + buf |= ((exp[eIndex] & bitpos) != 0) ? 1 : 0; + bitpos >>>= 1; + if (bitpos == 0) { + eIndex++; + bitpos = 1 << (32-1); + elen--; + } + } + + // Examine the window for pending multiplies + if ((buf & tblmask) != 0) { + multpos = ebits - wbits; + while ((buf & 1) == 0) { + buf >>>= 1; + multpos++; + } + mult = table[buf >>> 1]; + buf = 0; + } + + // Perform multiply + if (ebits == multpos) { + if (isone) { + b = mult.clone(); + isone = false; + } else { + t = b; + a = multiplyToLen(t, modLen, mult, modLen, a); + a = montReduce(a, mod, modLen, inv); + t = a; a = b; b = t; + } + } + + // Check if done + if (ebits == 0) + break; + + // Square the input + if (!isone) { + t = b; + a = squareToLen(t, modLen, a); + a = montReduce(a, mod, modLen, inv); + t = a; a = b; b = t; + } + } + + // Convert result out of Montgomery form and return + int[] t2 = new int[2*modLen]; + System.arraycopy(b, 0, t2, modLen, modLen); + + b = montReduce(t2, mod, modLen, inv); + + t2 = Arrays.copyOf(b, modLen); + + return new BigInteger(1, t2); + } + + /** + * Montgomery reduce n, modulo mod. This reduces modulo mod and divides + * by 2^(32*mlen). Adapted from Colin Plumb's C library. + */ + private static int[] montReduce(int[] n, int[] mod, int mlen, int inv) { + int c=0; + int len = mlen; + int offset=0; + + do { + int nEnd = n[n.length-1-offset]; + int carry = mulAdd(n, mod, offset, mlen, inv * nEnd); + c += addOne(n, offset, mlen, carry); + offset++; + } while (--len > 0); + + while (c > 0) + c += subN(n, mod, mlen); + + while (intArrayCmpToLen(n, mod, mlen) >= 0) + subN(n, mod, mlen); + + return n; + } + + + /* + * Returns -1, 0 or +1 as big-endian unsigned int array arg1 is less than, + * equal to, or greater than arg2 up to length len. + */ + private static int intArrayCmpToLen(int[] arg1, int[] arg2, int len) { + for (int i=0; i < len; i++) { + long b1 = arg1[i] & LONG_MASK; + long b2 = arg2[i] & LONG_MASK; + if (b1 < b2) + return -1; + if (b1 > b2) + return 1; + } + return 0; + } + + /** + * Subtracts two numbers of same length, returning borrow. + */ + private static int subN(int[] a, int[] b, int len) { + long sum = 0; + + while (--len >= 0) { + sum = (a[len] & LONG_MASK) - + (b[len] & LONG_MASK) + (sum >> 32); + a[len] = (int)sum; + } + + return (int)(sum >> 32); + } + + /** + * Multiply an array by one word k and add to result, return the carry + */ + static int mulAdd(int[] out, int[] in, int offset, int len, int k) { + long kLong = k & LONG_MASK; + long carry = 0; + + offset = out.length-offset - 1; + for (int j=len-1; j >= 0; j--) { + long product = (in[j] & LONG_MASK) * kLong + + (out[offset] & LONG_MASK) + carry; + out[offset--] = (int)product; + carry = product >>> 32; + } + return (int)carry; + } + + /** + * Add one word to the number a mlen words into a. Return the resulting + * carry. + */ + static int addOne(int[] a, int offset, int mlen, int carry) { + offset = a.length-1-mlen-offset; + long t = (a[offset] & LONG_MASK) + (carry & LONG_MASK); + + a[offset] = (int)t; + if ((t >>> 32) == 0) + return 0; + while (--mlen >= 0) { + if (--offset < 0) { // Carry out of number + return 1; + } else { + a[offset]++; + if (a[offset] != 0) + return 0; + } + } + return 1; + } + + /** + * Returns a BigInteger whose value is (this ** exponent) mod (2**p) + */ + private BigInteger modPow2(BigInteger exponent, int p) { + /* + * Perform exponentiation using repeated squaring trick, chopping off + * high order bits as indicated by modulus. + */ + BigInteger result = ONE; + BigInteger baseToPow2 = this.mod2(p); + int expOffset = 0; + + int limit = exponent.bitLength(); + + if (this.testBit(0)) + limit = (p-1) < limit ? (p-1) : limit; + + while (expOffset < limit) { + if (exponent.testBit(expOffset)) + result = result.multiply(baseToPow2).mod2(p); + expOffset++; + if (expOffset < limit) + baseToPow2 = baseToPow2.square().mod2(p); + } + + return result; + } + + /** + * Returns a BigInteger whose value is this mod(2**p). + * Assumes that this {@code BigInteger >= 0} and {@code p > 0}. + */ + private BigInteger mod2(int p) { + if (bitLength() <= p) + return this; + + // Copy remaining ints of mag + int numInts = (p + 31) >>> 5; + int[] mag = new int[numInts]; + System.arraycopy(this.mag, (this.mag.length - numInts), mag, 0, numInts); + + // Mask out any excess bits + int excessBits = (numInts << 5) - p; + mag[0] &= (1L << (32-excessBits)) - 1; + + return (mag[0] == 0 ? new BigInteger(1, mag) : new BigInteger(mag, 1)); + } + + /** + * Returns a BigInteger whose value is {@code (this}-1 {@code mod m)}. + * + * @param m the modulus. + * @return {@code this}-1 {@code mod m}. + * @throws ArithmeticException {@code m} ≤ 0, or this BigInteger + * has no multiplicative inverse mod m (that is, this BigInteger + * is not relatively prime to m). + */ + public BigInteger modInverse(BigInteger m) { + if (m.signum != 1) + throw new ArithmeticException("BigInteger: modulus not positive"); + + if (m.equals(ONE)) + return ZERO; + + // Calculate (this mod m) + BigInteger modVal = this; + if (signum < 0 || (this.compareMagnitude(m) >= 0)) + modVal = this.mod(m); + + if (modVal.equals(ONE)) + return ONE; + + MutableBigInteger a = new MutableBigInteger(modVal); + MutableBigInteger b = new MutableBigInteger(m); + + MutableBigInteger result = a.mutableModInverse(b); + return result.toBigInteger(1); + } + + // Shift Operations + + /** + * Returns a BigInteger whose value is {@code (this << n)}. + * The shift distance, {@code n}, may be negative, in which case + * this method performs a right shift. + * (Computes floor(this * 2n).) + * + * @param n shift distance, in bits. + * @return {@code this << n} + * @see #shiftRight + */ + public BigInteger shiftLeft(int n) { + if (signum == 0) + return ZERO; + if (n > 0) { + return new BigInteger(shiftLeft(mag, n), signum); + } else if (n == 0) { + return this; + } else { + // Possible int overflow in (-n) is not a trouble, + // because shiftRightImpl considers its argument unsigned + return shiftRightImpl(-n); + } + } + + /** + * Returns a magnitude array whose value is {@code (mag << n)}. + * The shift distance, {@code n}, is considered unnsigned. + * (Computes this * 2n.) + * + * @param mag magnitude, the most-significant int ({@code mag[0]}) must be non-zero. + * @param n unsigned shift distance, in bits. + * @return {@code mag << n} + */ + private static int[] shiftLeft(int[] mag, int n) { + int nInts = n >>> 5; + int nBits = n & 0x1f; + int magLen = mag.length; + int newMag[] = null; + + if (nBits == 0) { + newMag = new int[magLen + nInts]; + System.arraycopy(mag, 0, newMag, 0, magLen); + } else { + int i = 0; + int nBits2 = 32 - nBits; + int highBits = mag[0] >>> nBits2; + if (highBits != 0) { + newMag = new int[magLen + nInts + 1]; + newMag[i++] = highBits; + } else { + newMag = new int[magLen + nInts]; + } + int j=0; + while (j < magLen-1) + newMag[i++] = mag[j++] << nBits | mag[j] >>> nBits2; + newMag[i] = mag[j] << nBits; + } + return newMag; + } + + /** + * Returns a BigInteger whose value is {@code (this >> n)}. Sign + * extension is performed. The shift distance, {@code n}, may be + * negative, in which case this method performs a left shift. + * (Computes floor(this / 2n).) + * + * @param n shift distance, in bits. + * @return {@code this >> n} + * @see #shiftLeft + */ + public BigInteger shiftRight(int n) { + if (signum == 0) + return ZERO; + if (n > 0) { + return shiftRightImpl(n); + } else if (n == 0) { + return this; + } else { + // Possible int overflow in {@code -n} is not a trouble, + // because shiftLeft considers its argument unsigned + return new BigInteger(shiftLeft(mag, -n), signum); + } + } + + /** + * Returns a BigInteger whose value is {@code (this >> n)}. The shift + * distance, {@code n}, is considered unsigned. + * (Computes floor(this * 2-n).) + * + * @param n unsigned shift distance, in bits. + * @return {@code this >> n} + */ + private BigInteger shiftRightImpl(int n) { + int nInts = n >>> 5; + int nBits = n & 0x1f; + int magLen = mag.length; + int newMag[] = null; + + // Special case: entire contents shifted off the end + if (nInts >= magLen) + return (signum >= 0 ? ZERO : negConst[1]); + + if (nBits == 0) { + int newMagLen = magLen - nInts; + newMag = Arrays.copyOf(mag, newMagLen); + } else { + int i = 0; + int highBits = mag[0] >>> nBits; + if (highBits != 0) { + newMag = new int[magLen - nInts]; + newMag[i++] = highBits; + } else { + newMag = new int[magLen - nInts -1]; + } + + int nBits2 = 32 - nBits; + int j=0; + while (j < magLen - nInts - 1) + newMag[i++] = (mag[j++] << nBits2) | (mag[j] >>> nBits); + } + + if (signum < 0) { + // Find out whether any one-bits were shifted off the end. + boolean onesLost = false; + for (int i=magLen-1, j=magLen-nInts; i >= j && !onesLost; i--) + onesLost = (mag[i] != 0); + if (!onesLost && nBits != 0) + onesLost = (mag[magLen - nInts - 1] << (32 - nBits) != 0); + + if (onesLost) + newMag = javaIncrement(newMag); + } + + return new BigInteger(newMag, signum); + } + + int[] javaIncrement(int[] val) { + int lastSum = 0; + for (int i=val.length-1; i >= 0 && lastSum == 0; i--) + lastSum = (val[i] += 1); + if (lastSum == 0) { + val = new int[val.length+1]; + val[0] = 1; + } + return val; + } + + // Bitwise Operations + + /** + * Returns a BigInteger whose value is {@code (this & val)}. (This + * method returns a negative BigInteger if and only if this and val are + * both negative.) + * + * @param val value to be AND'ed with this BigInteger. + * @return {@code this & val} + */ + public BigInteger and(BigInteger val) { + int[] result = new int[Math.max(intLength(), val.intLength())]; + for (int i=0; i < result.length; i++) + result[i] = (getInt(result.length-i-1) + & val.getInt(result.length-i-1)); + + return valueOf(result); + } + + /** + * Returns a BigInteger whose value is {@code (this | val)}. (This method + * returns a negative BigInteger if and only if either this or val is + * negative.) + * + * @param val value to be OR'ed with this BigInteger. + * @return {@code this | val} + */ + public BigInteger or(BigInteger val) { + int[] result = new int[Math.max(intLength(), val.intLength())]; + for (int i=0; i < result.length; i++) + result[i] = (getInt(result.length-i-1) + | val.getInt(result.length-i-1)); + + return valueOf(result); + } + + /** + * Returns a BigInteger whose value is {@code (this ^ val)}. (This method + * returns a negative BigInteger if and only if exactly one of this and + * val are negative.) + * + * @param val value to be XOR'ed with this BigInteger. + * @return {@code this ^ val} + */ + public BigInteger xor(BigInteger val) { + int[] result = new int[Math.max(intLength(), val.intLength())]; + for (int i=0; i < result.length; i++) + result[i] = (getInt(result.length-i-1) + ^ val.getInt(result.length-i-1)); + + return valueOf(result); + } + + /** + * Returns a BigInteger whose value is {@code (~this)}. (This method + * returns a negative value if and only if this BigInteger is + * non-negative.) + * + * @return {@code ~this} + */ + public BigInteger not() { + int[] result = new int[intLength()]; + for (int i=0; i < result.length; i++) + result[i] = ~getInt(result.length-i-1); + + return valueOf(result); + } + + /** + * Returns a BigInteger whose value is {@code (this & ~val)}. This + * method, which is equivalent to {@code and(val.not())}, is provided as + * a convenience for masking operations. (This method returns a negative + * BigInteger if and only if {@code this} is negative and {@code val} is + * positive.) + * + * @param val value to be complemented and AND'ed with this BigInteger. + * @return {@code this & ~val} + */ + public BigInteger andNot(BigInteger val) { + int[] result = new int[Math.max(intLength(), val.intLength())]; + for (int i=0; i < result.length; i++) + result[i] = (getInt(result.length-i-1) + & ~val.getInt(result.length-i-1)); + + return valueOf(result); + } + + + // Single Bit Operations + + /** + * Returns {@code true} if and only if the designated bit is set. + * (Computes {@code ((this & (1<>> 5) & (1 << (n & 31))) != 0; + } + + /** + * Returns a BigInteger whose value is equivalent to this BigInteger + * with the designated bit set. (Computes {@code (this | (1<>> 5; + int[] result = new int[Math.max(intLength(), intNum+2)]; + + for (int i=0; i < result.length; i++) + result[result.length-i-1] = getInt(i); + + result[result.length-intNum-1] |= (1 << (n & 31)); + + return valueOf(result); + } + + /** + * Returns a BigInteger whose value is equivalent to this BigInteger + * with the designated bit cleared. + * (Computes {@code (this & ~(1<>> 5; + int[] result = new int[Math.max(intLength(), ((n + 1) >>> 5) + 1)]; + + for (int i=0; i < result.length; i++) + result[result.length-i-1] = getInt(i); + + result[result.length-intNum-1] &= ~(1 << (n & 31)); + + return valueOf(result); + } + + /** + * Returns a BigInteger whose value is equivalent to this BigInteger + * with the designated bit flipped. + * (Computes {@code (this ^ (1<>> 5; + int[] result = new int[Math.max(intLength(), intNum+2)]; + + for (int i=0; i < result.length; i++) + result[result.length-i-1] = getInt(i); + + result[result.length-intNum-1] ^= (1 << (n & 31)); + + return valueOf(result); + } + + /** + * Returns the index of the rightmost (lowest-order) one bit in this + * BigInteger (the number of zero bits to the right of the rightmost + * one bit). Returns -1 if this BigInteger contains no one bits. + * (Computes {@code (this == 0? -1 : log2(this & -this))}.) + * + * @return index of the rightmost one bit in this BigInteger. + */ + public int getLowestSetBit() { + @SuppressWarnings("deprecation") int lsb = lowestSetBit - 2; + if (lsb == -2) { // lowestSetBit not initialized yet + lsb = 0; + if (signum == 0) { + lsb -= 1; + } else { + // Search for lowest order nonzero int + int i,b; + for (i=0; (b = getInt(i)) == 0; i++) + ; + lsb += (i << 5) + Integer.numberOfTrailingZeros(b); + } + lowestSetBit = lsb + 2; + } + return lsb; + } + + + // Miscellaneous Bit Operations + + /** + * Returns the number of bits in the minimal two's-complement + * representation of this BigInteger, excluding a sign bit. + * For positive BigIntegers, this is equivalent to the number of bits in + * the ordinary binary representation. (Computes + * {@code (ceil(log2(this < 0 ? -this : this+1)))}.) + * + * @return number of bits in the minimal two's-complement + * representation of this BigInteger, excluding a sign bit. + */ + public int bitLength() { + @SuppressWarnings("deprecation") int n = bitLength - 1; + if (n == -1) { // bitLength not initialized yet + int[] m = mag; + int len = m.length; + if (len == 0) { + n = 0; // offset by one to initialize + } else { + // Calculate the bit length of the magnitude + int magBitLength = ((len - 1) << 5) + bitLengthForInt(mag[0]); + if (signum < 0) { + // Check if magnitude is a power of two + boolean pow2 = (Integer.bitCount(mag[0]) == 1); + for (int i=1; i< len && pow2; i++) + pow2 = (mag[i] == 0); + + n = (pow2 ? magBitLength -1 : magBitLength); + } else { + n = magBitLength; + } + } + bitLength = n + 1; + } + return n; + } + + /** + * Returns the number of bits in the two's complement representation + * of this BigInteger that differ from its sign bit. This method is + * useful when implementing bit-vector style sets atop BigIntegers. + * + * @return number of bits in the two's complement representation + * of this BigInteger that differ from its sign bit. + */ + public int bitCount() { + @SuppressWarnings("deprecation") int bc = bitCount - 1; + if (bc == -1) { // bitCount not initialized yet + bc = 0; // offset by one to initialize + // Count the bits in the magnitude + for (int i=0; i < mag.length; i++) + bc += Integer.bitCount(mag[i]); + if (signum < 0) { + // Count the trailing zeros in the magnitude + int magTrailingZeroCount = 0, j; + for (j=mag.length-1; mag[j] == 0; j--) + magTrailingZeroCount += 32; + magTrailingZeroCount += Integer.numberOfTrailingZeros(mag[j]); + bc += magTrailingZeroCount - 1; + } + bitCount = bc + 1; + } + return bc; + } + + // Primality Testing + + /** + * Returns {@code true} if this BigInteger is probably prime, + * {@code false} if it's definitely composite. If + * {@code certainty} is ≤ 0, {@code true} is + * returned. + * + * @param certainty a measure of the uncertainty that the caller is + * willing to tolerate: if the call returns {@code true} + * the probability that this BigInteger is prime exceeds + * (1 - 1/2{@code certainty}). The execution time of + * this method is proportional to the value of this parameter. + * @return {@code true} if this BigInteger is probably prime, + * {@code false} if it's definitely composite. + */ + public boolean isProbablePrime(int certainty) { + if (certainty <= 0) + return true; + BigInteger w = this.abs(); + if (w.equals(TWO)) + return true; + if (!w.testBit(0) || w.equals(ONE)) + return false; + + return w.primeToCertainty(certainty, null); + } + + // Comparison Operations + + /** + * Compares this BigInteger with the specified BigInteger. This + * method is provided in preference to individual methods for each + * of the six boolean comparison operators ({@literal <}, ==, + * {@literal >}, {@literal >=}, !=, {@literal <=}). The suggested + * idiom for performing these comparisons is: {@code + * (x.compareTo(y)} <op> {@code 0)}, where + * <op> is one of the six comparison operators. + * + * @param val BigInteger to which this BigInteger is to be compared. + * @return -1, 0 or 1 as this BigInteger is numerically less than, equal + * to, or greater than {@code val}. + */ + public int compareTo(BigInteger val) { + if (signum == val.signum) { + switch (signum) { + case 1: + return compareMagnitude(val); + case -1: + return val.compareMagnitude(this); + default: + return 0; + } + } + return signum > val.signum ? 1 : -1; + } + + /** + * Compares the magnitude array of this BigInteger with the specified + * BigInteger's. This is the version of compareTo ignoring sign. + * + * @param val BigInteger whose magnitude array to be compared. + * @return -1, 0 or 1 as this magnitude array is less than, equal to or + * greater than the magnitude aray for the specified BigInteger's. + */ + final int compareMagnitude(BigInteger val) { + int[] m1 = mag; + int len1 = m1.length; + int[] m2 = val.mag; + int len2 = m2.length; + if (len1 < len2) + return -1; + if (len1 > len2) + return 1; + for (int i = 0; i < len1; i++) { + int a = m1[i]; + int b = m2[i]; + if (a != b) + return ((a & LONG_MASK) < (b & LONG_MASK)) ? -1 : 1; + } + return 0; + } + + /** + * Version of compareMagnitude that compares magnitude with long value. + * val can't be Long.MIN_VALUE. + */ + final int compareMagnitude(long val) { + assert val != Long.MIN_VALUE; + int[] m1 = mag; + int len = m1.length; + if (len > 2) { + return 1; + } + if (val < 0) { + val = -val; + } + int highWord = (int)(val >>> 32); + if (highWord == 0) { + if (len < 1) + return -1; + if (len > 1) + return 1; + int a = m1[0]; + int b = (int)val; + if (a != b) { + return ((a & LONG_MASK) < (b & LONG_MASK))? -1 : 1; + } + return 0; + } else { + if (len < 2) + return -1; + int a = m1[0]; + int b = highWord; + if (a != b) { + return ((a & LONG_MASK) < (b & LONG_MASK))? -1 : 1; + } + a = m1[1]; + b = (int)val; + if (a != b) { + return ((a & LONG_MASK) < (b & LONG_MASK))? -1 : 1; + } + return 0; + } + } + + /** + * Compares this BigInteger with the specified Object for equality. + * + * @param x Object to which this BigInteger is to be compared. + * @return {@code true} if and only if the specified Object is a + * BigInteger whose value is numerically equal to this BigInteger. + */ + public boolean equals(Object x) { + // This test is just an optimization, which may or may not help + if (x == this) + return true; + + if (!(x instanceof BigInteger)) + return false; + + BigInteger xInt = (BigInteger) x; + if (xInt.signum != signum) + return false; + + int[] m = mag; + int len = m.length; + int[] xm = xInt.mag; + if (len != xm.length) + return false; + + for (int i = 0; i < len; i++) + if (xm[i] != m[i]) + return false; + + return true; + } + + /** + * Returns the minimum of this BigInteger and {@code val}. + * + * @param val value with which the minimum is to be computed. + * @return the BigInteger whose value is the lesser of this BigInteger and + * {@code val}. If they are equal, either may be returned. + */ + public BigInteger min(BigInteger val) { + return (compareTo(val) < 0 ? this : val); + } + + /** + * Returns the maximum of this BigInteger and {@code val}. + * + * @param val value with which the maximum is to be computed. + * @return the BigInteger whose value is the greater of this and + * {@code val}. If they are equal, either may be returned. + */ + public BigInteger max(BigInteger val) { + return (compareTo(val) > 0 ? this : val); + } + + + // Hash Function + + /** + * Returns the hash code for this BigInteger. + * + * @return hash code for this BigInteger. + */ + public int hashCode() { + int hashCode = 0; + + for (int i=0; i < mag.length; i++) + hashCode = (int)(31*hashCode + (mag[i] & LONG_MASK)); + + return hashCode * signum; + } + + /** + * Returns the String representation of this BigInteger in the + * given radix. If the radix is outside the range from {@link + * Character#MIN_RADIX} to {@link Character#MAX_RADIX} inclusive, + * it will default to 10 (as is the case for + * {@code Integer.toString}). The digit-to-character mapping + * provided by {@code Character.forDigit} is used, and a minus + * sign is prepended if appropriate. (This representation is + * compatible with the {@link #BigInteger(String, int) (String, + * int)} constructor.) + * + * @param radix radix of the String representation. + * @return String representation of this BigInteger in the given radix. + * @see Integer#toString + * @see Character#forDigit + * @see #BigInteger(java.lang.String, int) + */ + public String toString(int radix) { + if (signum == 0) + return "0"; + if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX) + radix = 10; + + // If it's small enough, use smallToString. + if (mag.length <= SCHOENHAGE_BASE_CONVERSION_THRESHOLD) + return smallToString(radix); + + // Otherwise use recursive toString, which requires positive arguments. + // The results will be concatenated into this StringBuilder + StringBuilder sb = new StringBuilder(); + if (signum < 0) { + toString(this.negate(), sb, radix, 0); + sb.insert(0, '-'); + } + else + toString(this, sb, radix, 0); + + return sb.toString(); + } + + /** This method is used to perform toString when arguments are small. */ + private String smallToString(int radix) { + if (signum == 0) { + return "0"; + } + + // Compute upper bound on number of digit groups and allocate space + int maxNumDigitGroups = (4*mag.length + 6)/7; + String digitGroup[] = new String[maxNumDigitGroups]; + + // Translate number to string, a digit group at a time + BigInteger tmp = this.abs(); + int numGroups = 0; + while (tmp.signum != 0) { + BigInteger d = longRadix[radix]; + + MutableBigInteger q = new MutableBigInteger(), + a = new MutableBigInteger(tmp.mag), + b = new MutableBigInteger(d.mag); + MutableBigInteger r = a.divide(b, q); + BigInteger q2 = q.toBigInteger(tmp.signum * d.signum); + BigInteger r2 = r.toBigInteger(tmp.signum * d.signum); + + digitGroup[numGroups++] = Long.toString(r2.longValue(), radix); + tmp = q2; + } + + // Put sign (if any) and first digit group into result buffer + StringBuilder buf = new StringBuilder(numGroups*digitsPerLong[radix]+1); + if (signum < 0) { + buf.append('-'); + } + buf.append(digitGroup[numGroups-1]); + + // Append remaining digit groups padded with leading zeros + for (int i=numGroups-2; i >= 0; i--) { + // Prepend (any) leading zeros for this digit group + int numLeadingZeros = digitsPerLong[radix]-digitGroup[i].length(); + if (numLeadingZeros != 0) { + buf.append(zeros[numLeadingZeros]); + } + buf.append(digitGroup[i]); + } + return buf.toString(); + } + + /** + * Converts the specified BigInteger to a string and appends to + * {@code sb}. This implements the recursive Schoenhage algorithm + * for base conversions. + *

+ * See Knuth, Donald, _The Art of Computer Programming_, Vol. 2, + * Answers to Exercises (4.4) Question 14. + * + * @param u The number to convert to a string. + * @param sb The StringBuilder that will be appended to in place. + * @param radix The base to convert to. + * @param digits The minimum number of digits to pad to. + */ + private static void toString(BigInteger u, StringBuilder sb, int radix, + int digits) { + /* If we're smaller than a certain threshold, use the smallToString + method, padding with leading zeroes when necessary. */ + if (u.mag.length <= SCHOENHAGE_BASE_CONVERSION_THRESHOLD) { + String s = u.smallToString(radix); + + // Pad with internal zeros if necessary. + // Don't pad if we're at the beginning of the string. + if ((s.length() < digits) && (sb.length() > 0)) { + for (int i=s.length(); i < digits; i++) { // May be a faster way to + sb.append('0'); // do this? + } + } + + sb.append(s); + return; + } + + int b, n; + b = u.bitLength(); + + // Calculate a value for n in the equation radix^(2^n) = u + // and subtract 1 from that value. This is used to find the + // cache index that contains the best value to divide u. + n = (int) Math.round(Math.log(b * LOG_TWO / logCache[radix]) / LOG_TWO - 1.0); + BigInteger v = getRadixConversionCache(radix, n); + BigInteger[] results; + results = u.divideAndRemainder(v); + + int expectedDigits = 1 << n; + + // Now recursively build the two halves of each number. + toString(results[0], sb, radix, digits-expectedDigits); + toString(results[1], sb, radix, expectedDigits); + } + + /** + * Returns the value radix^(2^exponent) from the cache. + * If this value doesn't already exist in the cache, it is added. + *

+ * This could be changed to a more complicated caching method using + * {@code Future}. + */ + private static BigInteger getRadixConversionCache(int radix, int exponent) { + BigInteger[] cacheLine = powerCache[radix]; // volatile read + if (exponent < cacheLine.length) { + return cacheLine[exponent]; + } + + int oldLength = cacheLine.length; + cacheLine = Arrays.copyOf(cacheLine, exponent + 1); + for (int i = oldLength; i <= exponent; i++) { + cacheLine[i] = cacheLine[i - 1].pow(2); + } + + BigInteger[][] pc = powerCache; // volatile read again + if (exponent >= pc[radix].length) { + pc = pc.clone(); + pc[radix] = cacheLine; + powerCache = pc; // volatile write, publish + } + return cacheLine[exponent]; + } + + /* zero[i] is a string of i consecutive zeros. */ + private static String zeros[] = new String[64]; + static { + zeros[63] = + "000000000000000000000000000000000000000000000000000000000000000"; + for (int i=0; i < 63; i++) + zeros[i] = zeros[63].substring(0, i); + } + + /** + * Returns the decimal String representation of this BigInteger. + * The digit-to-character mapping provided by + * {@code Character.forDigit} is used, and a minus sign is + * prepended if appropriate. (This representation is compatible + * with the {@link #BigInteger(String) (String)} constructor, and + * allows for String concatenation with Java's + operator.) + * + * @return decimal String representation of this BigInteger. + * @see Character#forDigit + * @see #BigInteger(java.lang.String) + */ + public String toString() { + return toString(10); + } + + /** + * Returns a byte array containing the two's-complement + * representation of this BigInteger. The byte array will be in + * big-endian byte-order: the most significant byte is in + * the zeroth element. The array will contain the minimum number + * of bytes required to represent this BigInteger, including at + * least one sign bit, which is {@code (ceil((this.bitLength() + + * 1)/8))}. (This representation is compatible with the + * {@link #BigInteger(byte[]) (byte[])} constructor.) + * + * @return a byte array containing the two's-complement representation of + * this BigInteger. + * @see #BigInteger(byte[]) + */ + public byte[] toByteArray() { + int byteLen = bitLength()/8 + 1; + byte[] byteArray = new byte[byteLen]; + + for (int i=byteLen-1, bytesCopied=4, nextInt=0, intIndex=0; i >= 0; i--) { + if (bytesCopied == 4) { + nextInt = getInt(intIndex++); + bytesCopied = 1; + } else { + nextInt >>>= 8; + bytesCopied++; + } + byteArray[i] = (byte)nextInt; + } + return byteArray; + } + + /** + * Converts this BigInteger to an {@code int}. This + * conversion is analogous to a + * narrowing primitive conversion from {@code long} to + * {@code int} as defined in section 5.1.3 of + * The Java™ Language Specification: + * if this BigInteger is too big to fit in an + * {@code int}, only the low-order 32 bits are returned. + * Note that this conversion can lose information about the + * overall magnitude of the BigInteger value as well as return a + * result with the opposite sign. + * + * @return this BigInteger converted to an {@code int}. + * @see #intValueExact() + */ + public int intValue() { + int result = 0; + result = getInt(0); + return result; + } + + /** + * Converts this BigInteger to a {@code long}. This + * conversion is analogous to a + * narrowing primitive conversion from {@code long} to + * {@code int} as defined in section 5.1.3 of + * The Java™ Language Specification: + * if this BigInteger is too big to fit in a + * {@code long}, only the low-order 64 bits are returned. + * Note that this conversion can lose information about the + * overall magnitude of the BigInteger value as well as return a + * result with the opposite sign. + * + * @return this BigInteger converted to a {@code long}. + * @see #longValueExact() + */ + public long longValue() { + long result = 0; + + for (int i=1; i >= 0; i--) + result = (result << 32) + (getInt(i) & LONG_MASK); + return result; + } + + /** + * Converts this BigInteger to a {@code float}. This + * conversion is similar to the + * narrowing primitive conversion from {@code double} to + * {@code float} as defined in section 5.1.3 of + * The Java™ Language Specification: + * if this BigInteger has too great a magnitude + * to represent as a {@code float}, it will be converted to + * {@link Float#NEGATIVE_INFINITY} or {@link + * Float#POSITIVE_INFINITY} as appropriate. Note that even when + * the return value is finite, this conversion can lose + * information about the precision of the BigInteger value. + * + * @return this BigInteger converted to a {@code float}. + */ + public float floatValue() { + if (signum == 0) { + return 0.0f; + } + + int exponent = ((mag.length - 1) << 5) + bitLengthForInt(mag[0]) - 1; + + // exponent == floor(log2(abs(this))) + if (exponent < Long.SIZE - 1) { + return longValue(); + } else if (exponent > Float.MAX_EXPONENT) { + return signum > 0 ? Float.POSITIVE_INFINITY : Float.NEGATIVE_INFINITY; + } + + /* + * We need the top SIGNIFICAND_WIDTH bits, including the "implicit" + * one bit. To make rounding easier, we pick out the top + * SIGNIFICAND_WIDTH + 1 bits, so we have one to help us round up or + * down. twiceSignifFloor will contain the top SIGNIFICAND_WIDTH + 1 + * bits, and signifFloor the top SIGNIFICAND_WIDTH. + * + * It helps to consider the real number signif = abs(this) * + * 2^(SIGNIFICAND_WIDTH - 1 - exponent). + */ + int shift = exponent - FloatConsts.SIGNIFICAND_WIDTH; + + int twiceSignifFloor; + // twiceSignifFloor will be == abs().shiftRight(shift).intValue() + // We do the shift into an int directly to improve performance. + + int nBits = shift & 0x1f; + int nBits2 = 32 - nBits; + + if (nBits == 0) { + twiceSignifFloor = mag[0]; + } else { + twiceSignifFloor = mag[0] >>> nBits; + if (twiceSignifFloor == 0) { + twiceSignifFloor = (mag[0] << nBits2) | (mag[1] >>> nBits); + } + } + + int signifFloor = twiceSignifFloor >> 1; + signifFloor &= FloatConsts.SIGNIF_BIT_MASK; // remove the implied bit + + /* + * We round up if either the fractional part of signif is strictly + * greater than 0.5 (which is true if the 0.5 bit is set and any lower + * bit is set), or if the fractional part of signif is >= 0.5 and + * signifFloor is odd (which is true if both the 0.5 bit and the 1 bit + * are set). This is equivalent to the desired HALF_EVEN rounding. + */ + boolean increment = (twiceSignifFloor & 1) != 0 + && ((signifFloor & 1) != 0 || abs().getLowestSetBit() < shift); + int signifRounded = increment ? signifFloor + 1 : signifFloor; + int bits = ((exponent + FloatConsts.EXP_BIAS)) + << (FloatConsts.SIGNIFICAND_WIDTH - 1); + bits += signifRounded; + /* + * If signifRounded == 2^24, we'd need to set all of the significand + * bits to zero and add 1 to the exponent. This is exactly the behavior + * we get from just adding signifRounded to bits directly. If the + * exponent is Float.MAX_EXPONENT, we round up (correctly) to + * Float.POSITIVE_INFINITY. + */ + bits |= signum & FloatConsts.SIGN_BIT_MASK; + return Float.intBitsToFloat(bits); + } + + /** + * Converts this BigInteger to a {@code double}. This + * conversion is similar to the + * narrowing primitive conversion from {@code double} to + * {@code float} as defined in section 5.1.3 of + * The Java™ Language Specification: + * if this BigInteger has too great a magnitude + * to represent as a {@code double}, it will be converted to + * {@link Double#NEGATIVE_INFINITY} or {@link + * Double#POSITIVE_INFINITY} as appropriate. Note that even when + * the return value is finite, this conversion can lose + * information about the precision of the BigInteger value. + * + * @return this BigInteger converted to a {@code double}. + */ + public double doubleValue() { + if (signum == 0) { + return 0.0; + } + + int exponent = ((mag.length - 1) << 5) + bitLengthForInt(mag[0]) - 1; + + // exponent == floor(log2(abs(this))Double) + if (exponent < Long.SIZE - 1) { + return longValue(); + } else if (exponent > Double.MAX_EXPONENT) { + return signum > 0 ? Double.POSITIVE_INFINITY : Double.NEGATIVE_INFINITY; + } + + /* + * We need the top SIGNIFICAND_WIDTH bits, including the "implicit" + * one bit. To make rounding easier, we pick out the top + * SIGNIFICAND_WIDTH + 1 bits, so we have one to help us round up or + * down. twiceSignifFloor will contain the top SIGNIFICAND_WIDTH + 1 + * bits, and signifFloor the top SIGNIFICAND_WIDTH. + * + * It helps to consider the real number signif = abs(this) * + * 2^(SIGNIFICAND_WIDTH - 1 - exponent). + */ + int shift = exponent - DoubleConsts.SIGNIFICAND_WIDTH; + + long twiceSignifFloor; + // twiceSignifFloor will be == abs().shiftRight(shift).longValue() + // We do the shift into a long directly to improve performance. + + int nBits = shift & 0x1f; + int nBits2 = 32 - nBits; + + int highBits; + int lowBits; + if (nBits == 0) { + highBits = mag[0]; + lowBits = mag[1]; + } else { + highBits = mag[0] >>> nBits; + lowBits = (mag[0] << nBits2) | (mag[1] >>> nBits); + if (highBits == 0) { + highBits = lowBits; + lowBits = (mag[1] << nBits2) | (mag[2] >>> nBits); + } + } + + twiceSignifFloor = ((highBits & LONG_MASK) << 32) + | (lowBits & LONG_MASK); + + long signifFloor = twiceSignifFloor >> 1; + signifFloor &= DoubleConsts.SIGNIF_BIT_MASK; // remove the implied bit + + /* + * We round up if either the fractional part of signif is strictly + * greater than 0.5 (which is true if the 0.5 bit is set and any lower + * bit is set), or if the fractional part of signif is >= 0.5 and + * signifFloor is odd (which is true if both the 0.5 bit and the 1 bit + * are set). This is equivalent to the desired HALF_EVEN rounding. + */ + boolean increment = (twiceSignifFloor & 1) != 0 + && ((signifFloor & 1) != 0 || abs().getLowestSetBit() < shift); + long signifRounded = increment ? signifFloor + 1 : signifFloor; + long bits = (long) ((exponent + DoubleConsts.EXP_BIAS)) + << (DoubleConsts.SIGNIFICAND_WIDTH - 1); + bits += signifRounded; + /* + * If signifRounded == 2^53, we'd need to set all of the significand + * bits to zero and add 1 to the exponent. This is exactly the behavior + * we get from just adding signifRounded to bits directly. If the + * exponent is Double.MAX_EXPONENT, we round up (correctly) to + * Double.POSITIVE_INFINITY. + */ + bits |= signum & DoubleConsts.SIGN_BIT_MASK; + return Double.longBitsToDouble(bits); + } + + /** + * Returns a copy of the input array stripped of any leading zero bytes. + */ + private static int[] stripLeadingZeroInts(int val[]) { + int vlen = val.length; + int keep; + + // Find first nonzero byte + for (keep = 0; keep < vlen && val[keep] == 0; keep++) + ; + return java.util.Arrays.copyOfRange(val, keep, vlen); + } + + /** + * Returns the input array stripped of any leading zero bytes. + * Since the source is trusted the copying may be skipped. + */ + private static int[] trustedStripLeadingZeroInts(int val[]) { + int vlen = val.length; + int keep; + + // Find first nonzero byte + for (keep = 0; keep < vlen && val[keep] == 0; keep++) + ; + return keep == 0 ? val : java.util.Arrays.copyOfRange(val, keep, vlen); + } + + /** + * Returns a copy of the input array stripped of any leading zero bytes. + */ + private static int[] stripLeadingZeroBytes(byte a[]) { + int byteLength = a.length; + int keep; + + // Find first nonzero byte + for (keep = 0; keep < byteLength && a[keep] == 0; keep++) + ; + + // Allocate new array and copy relevant part of input array + int intLength = ((byteLength - keep) + 3) >>> 2; + int[] result = new int[intLength]; + int b = byteLength - 1; + for (int i = intLength-1; i >= 0; i--) { + result[i] = a[b--] & 0xff; + int bytesRemaining = b - keep + 1; + int bytesToTransfer = Math.min(3, bytesRemaining); + for (int j=8; j <= (bytesToTransfer << 3); j += 8) + result[i] |= ((a[b--] & 0xff) << j); + } + return result; + } + + /** + * Takes an array a representing a negative 2's-complement number and + * returns the minimal (no leading zero bytes) unsigned whose value is -a. + */ + private static int[] makePositive(byte a[]) { + int keep, k; + int byteLength = a.length; + + // Find first non-sign (0xff) byte of input + for (keep=0; keep < byteLength && a[keep] == -1; keep++) + ; + + + /* Allocate output array. If all non-sign bytes are 0x00, we must + * allocate space for one extra output byte. */ + for (k=keep; k < byteLength && a[k] == 0; k++) + ; + + int extraByte = (k == byteLength) ? 1 : 0; + int intLength = ((byteLength - keep + extraByte) + 3) >>> 2; + int result[] = new int[intLength]; + + /* Copy one's complement of input into output, leaving extra + * byte (if it exists) == 0x00 */ + int b = byteLength - 1; + for (int i = intLength-1; i >= 0; i--) { + result[i] = a[b--] & 0xff; + int numBytesToTransfer = Math.min(3, b-keep+1); + if (numBytesToTransfer < 0) + numBytesToTransfer = 0; + for (int j=8; j <= 8*numBytesToTransfer; j += 8) + result[i] |= ((a[b--] & 0xff) << j); + + // Mask indicates which bits must be complemented + int mask = -1 >>> (8*(3-numBytesToTransfer)); + result[i] = ~result[i] & mask; + } + + // Add one to one's complement to generate two's complement + for (int i=result.length-1; i >= 0; i--) { + result[i] = (int)((result[i] & LONG_MASK) + 1); + if (result[i] != 0) + break; + } + + return result; + } + + /** + * Takes an array a representing a negative 2's-complement number and + * returns the minimal (no leading zero ints) unsigned whose value is -a. + */ + private static int[] makePositive(int a[]) { + int keep, j; + + // Find first non-sign (0xffffffff) int of input + for (keep=0; keep < a.length && a[keep] == -1; keep++) + ; + + /* Allocate output array. If all non-sign ints are 0x00, we must + * allocate space for one extra output int. */ + for (j=keep; j < a.length && a[j] == 0; j++) + ; + int extraInt = (j == a.length ? 1 : 0); + int result[] = new int[a.length - keep + extraInt]; + + /* Copy one's complement of input into output, leaving extra + * int (if it exists) == 0x00 */ + for (int i = keep; i < a.length; i++) + result[i - keep + extraInt] = ~a[i]; + + // Add one to one's complement to generate two's complement + for (int i=result.length-1; ++result[i] == 0; i--) + ; + + return result; + } + + /* + * The following two arrays are used for fast String conversions. Both + * are indexed by radix. The first is the number of digits of the given + * radix that can fit in a Java long without "going negative", i.e., the + * highest integer n such that radix**n < 2**63. The second is the + * "long radix" that tears each number into "long digits", each of which + * consists of the number of digits in the corresponding element in + * digitsPerLong (longRadix[i] = i**digitPerLong[i]). Both arrays have + * nonsense values in their 0 and 1 elements, as radixes 0 and 1 are not + * used. + */ + private static int digitsPerLong[] = {0, 0, + 62, 39, 31, 27, 24, 22, 20, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, + 14, 14, 14, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12}; + + private static BigInteger longRadix[] = {null, null, + valueOf(0x4000000000000000L), valueOf(0x383d9170b85ff80bL), + valueOf(0x4000000000000000L), valueOf(0x6765c793fa10079dL), + valueOf(0x41c21cb8e1000000L), valueOf(0x3642798750226111L), + valueOf(0x1000000000000000L), valueOf(0x12bf307ae81ffd59L), + valueOf( 0xde0b6b3a7640000L), valueOf(0x4d28cb56c33fa539L), + valueOf(0x1eca170c00000000L), valueOf(0x780c7372621bd74dL), + valueOf(0x1e39a5057d810000L), valueOf(0x5b27ac993df97701L), + valueOf(0x1000000000000000L), valueOf(0x27b95e997e21d9f1L), + valueOf(0x5da0e1e53c5c8000L), valueOf( 0xb16a458ef403f19L), + valueOf(0x16bcc41e90000000L), valueOf(0x2d04b7fdd9c0ef49L), + valueOf(0x5658597bcaa24000L), valueOf( 0x6feb266931a75b7L), + valueOf( 0xc29e98000000000L), valueOf(0x14adf4b7320334b9L), + valueOf(0x226ed36478bfa000L), valueOf(0x383d9170b85ff80bL), + valueOf(0x5a3c23e39c000000L), valueOf( 0x4e900abb53e6b71L), + valueOf( 0x7600ec618141000L), valueOf( 0xaee5720ee830681L), + valueOf(0x1000000000000000L), valueOf(0x172588ad4f5f0981L), + valueOf(0x211e44f7d02c1000L), valueOf(0x2ee56725f06e5c71L), + valueOf(0x41c21cb8e1000000L)}; + + /* + * These two arrays are the integer analogue of above. + */ + private static int digitsPerInt[] = {0, 0, 30, 19, 15, 13, 11, + 11, 10, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5}; + + private static int intRadix[] = {0, 0, + 0x40000000, 0x4546b3db, 0x40000000, 0x48c27395, 0x159fd800, + 0x75db9c97, 0x40000000, 0x17179149, 0x3b9aca00, 0xcc6db61, + 0x19a10000, 0x309f1021, 0x57f6c100, 0xa2f1b6f, 0x10000000, + 0x18754571, 0x247dbc80, 0x3547667b, 0x4c4b4000, 0x6b5a6e1d, + 0x6c20a40, 0x8d2d931, 0xb640000, 0xe8d4a51, 0x1269ae40, + 0x17179149, 0x1cb91000, 0x23744899, 0x2b73a840, 0x34e63b41, + 0x40000000, 0x4cfa3cc1, 0x5c13d840, 0x6d91b519, 0x39aa400 + }; + + /** + * These routines provide access to the two's complement representation + * of BigIntegers. + */ + + /** + * Returns the length of the two's complement representation in ints, + * including space for at least one sign bit. + */ + private int intLength() { + return (bitLength() >>> 5) + 1; + } + + /* Returns sign bit */ + private int signBit() { + return signum < 0 ? 1 : 0; + } + + /* Returns an int of sign bits */ + private int signInt() { + return signum < 0 ? -1 : 0; + } + + /** + * Returns the specified int of the little-endian two's complement + * representation (int 0 is the least significant). The int number can + * be arbitrarily high (values are logically preceded by infinitely many + * sign ints). + */ + private int getInt(int n) { + if (n < 0) + return 0; + if (n >= mag.length) + return signInt(); + + int magInt = mag[mag.length-n-1]; + + return (signum >= 0 ? magInt : + (n <= firstNonzeroIntNum() ? -magInt : ~magInt)); + } + + /** + * Returns the index of the int that contains the first nonzero int in the + * little-endian binary representation of the magnitude (int 0 is the + * least significant). If the magnitude is zero, return value is undefined. + */ + private int firstNonzeroIntNum() { + int fn = firstNonzeroIntNum - 2; + if (fn == -2) { // firstNonzeroIntNum not initialized yet + fn = 0; + + // Search for the first nonzero int + int i; + int mlen = mag.length; + for (i = mlen - 1; i >= 0 && mag[i] == 0; i--) + ; + fn = mlen - i - 1; + firstNonzeroIntNum = fn + 2; // offset by two to initialize + } + return fn; + } + + /** use serialVersionUID from JDK 1.1. for interoperability */ + private static final long serialVersionUID = -8287574255936472291L; + + /** + * Serializable fields for BigInteger. + * + * @serialField signum int + * signum of this BigInteger. + * @serialField magnitude int[] + * magnitude array of this BigInteger. + * @serialField bitCount int + * number of bits in this BigInteger + * @serialField bitLength int + * the number of bits in the minimal two's-complement + * representation of this BigInteger + * @serialField lowestSetBit int + * lowest set bit in the twos complement representation + */ + private static final ObjectStreamField[] serialPersistentFields = { + new ObjectStreamField("signum", Integer.TYPE), + new ObjectStreamField("magnitude", byte[].class), + new ObjectStreamField("bitCount", Integer.TYPE), + new ObjectStreamField("bitLength", Integer.TYPE), + new ObjectStreamField("firstNonzeroByteNum", Integer.TYPE), + new ObjectStreamField("lowestSetBit", Integer.TYPE) + }; + + /** + * Reconstitute the {@code BigInteger} instance from a stream (that is, + * deserialize it). The magnitude is read in as an array of bytes + * for historical reasons, but it is converted to an array of ints + * and the byte array is discarded. + * Note: + * The current convention is to initialize the cache fields, bitCount, + * bitLength and lowestSetBit, to 0 rather than some other marker value. + * Therefore, no explicit action to set these fields needs to be taken in + * readObject because those fields already have a 0 value be default since + * defaultReadObject is not being used. + */ + private void readObject(java.io.ObjectInputStream s) + throws java.io.IOException, ClassNotFoundException { + /* + * In order to maintain compatibility with previous serialized forms, + * the magnitude of a BigInteger is serialized as an array of bytes. + * The magnitude field is used as a temporary store for the byte array + * that is deserialized. The cached computation fields should be + * transient but are serialized for compatibility reasons. + */ + + // prepare to read the alternate persistent fields + ObjectInputStream.GetField fields = s.readFields(); + + // Read the alternate persistent fields that we care about + int sign = fields.get("signum", -2); + byte[] magnitude = (byte[])fields.get("magnitude", null); + + // Validate signum + if (sign < -1 || sign > 1) { + String message = "BigInteger: Invalid signum value"; + if (fields.defaulted("signum")) + message = "BigInteger: Signum not present in stream"; + throw new java.io.StreamCorruptedException(message); + } + int[] mag = stripLeadingZeroBytes(magnitude); + if ((mag.length == 0) != (sign == 0)) { + String message = "BigInteger: signum-magnitude mismatch"; + if (fields.defaulted("magnitude")) + message = "BigInteger: Magnitude not present in stream"; + throw new java.io.StreamCorruptedException(message); + } + + // Commit final fields via Unsafe + UnsafeHolder.putSign(this, sign); + + // Calculate mag field from magnitude and discard magnitude + UnsafeHolder.putMag(this, mag); + if (mag.length >= MAX_MAG_LENGTH) { + try { + checkRange(); + } catch (ArithmeticException e) { + throw new java.io.StreamCorruptedException("BigInteger: Out of the supported range"); + } + } + } + + // Support for resetting final fields while deserializing + private static class UnsafeHolder { + private static final sun.misc.Unsafe unsafe; + private static final long signumOffset; + private static final long magOffset; + static { + try { + unsafe = sun.misc.Unsafe.getUnsafe(); + signumOffset = unsafe.objectFieldOffset + (BigInteger.class.getDeclaredField("signum")); + magOffset = unsafe.objectFieldOffset + (BigInteger.class.getDeclaredField("mag")); + } catch (Exception ex) { + throw new ExceptionInInitializerError(ex); + } + } + + static void putSign(BigInteger bi, int sign) { + unsafe.putIntVolatile(bi, signumOffset, sign); + } + + static void putMag(BigInteger bi, int[] magnitude) { + unsafe.putObjectVolatile(bi, magOffset, magnitude); + } + } + + /** + * Save the {@code BigInteger} instance to a stream. + * The magnitude of a BigInteger is serialized as a byte array for + * historical reasons. + * + * @serialData two necessary fields are written as well as obsolete + * fields for compatibility with older versions. + */ + private void writeObject(ObjectOutputStream s) throws IOException { + // set the values of the Serializable fields + ObjectOutputStream.PutField fields = s.putFields(); + fields.put("signum", signum); + fields.put("magnitude", magSerializedForm()); + // The values written for cached fields are compatible with older + // versions, but are ignored in readObject so don't otherwise matter. + fields.put("bitCount", -1); + fields.put("bitLength", -1); + fields.put("lowestSetBit", -2); + fields.put("firstNonzeroByteNum", -2); + + // save them + s.writeFields(); +} + + /** + * Returns the mag array as an array of bytes. + */ + private byte[] magSerializedForm() { + int len = mag.length; + + int bitLen = (len == 0 ? 0 : ((len - 1) << 5) + bitLengthForInt(mag[0])); + int byteLen = (bitLen + 7) >>> 3; + byte[] result = new byte[byteLen]; + + for (int i = byteLen - 1, bytesCopied = 4, intIndex = len - 1, nextInt = 0; + i >= 0; i--) { + if (bytesCopied == 4) { + nextInt = mag[intIndex--]; + bytesCopied = 1; + } else { + nextInt >>>= 8; + bytesCopied++; + } + result[i] = (byte)nextInt; + } + return result; + } + + /** + * Converts this {@code BigInteger} to a {@code long}, checking + * for lost information. If the value of this {@code BigInteger} + * is out of the range of the {@code long} type, then an + * {@code ArithmeticException} is thrown. + * + * @return this {@code BigInteger} converted to a {@code long}. + * @throws ArithmeticException if the value of {@code this} will + * not exactly fit in a {@code long}. + * @see BigInteger#longValue + * @since 1.8 + */ + public long longValueExact() { + if (mag.length <= 2 && bitLength() <= 63) + return longValue(); + else + throw new ArithmeticException("BigInteger out of long range"); + } + + /** + * Converts this {@code BigInteger} to an {@code int}, checking + * for lost information. If the value of this {@code BigInteger} + * is out of the range of the {@code int} type, then an + * {@code ArithmeticException} is thrown. + * + * @return this {@code BigInteger} converted to an {@code int}. + * @throws ArithmeticException if the value of {@code this} will + * not exactly fit in a {@code int}. + * @see BigInteger#intValue + * @since 1.8 + */ + public int intValueExact() { + if (mag.length <= 1 && bitLength() <= 31) + return intValue(); + else + throw new ArithmeticException("BigInteger out of int range"); + } + + /** + * Converts this {@code BigInteger} to a {@code short}, checking + * for lost information. If the value of this {@code BigInteger} + * is out of the range of the {@code short} type, then an + * {@code ArithmeticException} is thrown. + * + * @return this {@code BigInteger} converted to a {@code short}. + * @throws ArithmeticException if the value of {@code this} will + * not exactly fit in a {@code short}. + * @see BigInteger#shortValue + * @since 1.8 + */ + public short shortValueExact() { + if (mag.length <= 1 && bitLength() <= 31) { + int value = intValue(); + if (value >= Short.MIN_VALUE && value <= Short.MAX_VALUE) + return shortValue(); + } + throw new ArithmeticException("BigInteger out of short range"); + } + + /** + * Converts this {@code BigInteger} to a {@code byte}, checking + * for lost information. If the value of this {@code BigInteger} + * is out of the range of the {@code byte} type, then an + * {@code ArithmeticException} is thrown. + * + * @return this {@code BigInteger} converted to a {@code byte}. + * @throws ArithmeticException if the value of {@code this} will + * not exactly fit in a {@code byte}. + * @see BigInteger#byteValue + * @since 1.8 + */ + public byte byteValueExact() { + if (mag.length <= 1 && bitLength() <= 31) { + int value = intValue(); + if (value >= Byte.MIN_VALUE && value <= Byte.MAX_VALUE) + return byteValue(); + } + throw new ArithmeticException("BigInteger out of byte range"); + } +} diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/BitSieve.java" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/BitSieve.java" new file mode 100644 index 0000000..6554b35 --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/BitSieve.java" @@ -0,0 +1,212 @@ +/* + * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +package java.math; + +/** + * A simple bit sieve used for finding prime number candidates. Allows setting + * and clearing of bits in a storage array. The size of the sieve is assumed to + * be constant to reduce overhead. All the bits of a new bitSieve are zero, and + * bits are removed from it by setting them. + * + * To reduce storage space and increase efficiency, no even numbers are + * represented in the sieve (each bit in the sieve represents an odd number). + * The relationship between the index of a bit and the number it represents is + * given by + * N = offset + (2*index + 1); + * Where N is the integer represented by a bit in the sieve, offset is some + * even integer offset indicating where the sieve begins, and index is the + * index of a bit in the sieve array. + * + * @see BigInteger + * @author Michael McCloskey + * @since 1.3 + */ +class BitSieve { + /** + * Stores the bits in this bitSieve. + */ + private long bits[]; + + /** + * Length is how many bits this sieve holds. + */ + private int length; + + /** + * A small sieve used to filter out multiples of small primes in a search + * sieve. + */ + private static BitSieve smallSieve = new BitSieve(); + + /** + * Construct a "small sieve" with a base of 0. This constructor is + * used internally to generate the set of "small primes" whose multiples + * are excluded from sieves generated by the main (package private) + * constructor, BitSieve(BigInteger base, int searchLen). The length + * of the sieve generated by this constructor was chosen for performance; + * it controls a tradeoff between how much time is spent constructing + * other sieves, and how much time is wasted testing composite candidates + * for primality. The length was chosen experimentally to yield good + * performance. + */ + private BitSieve() { + length = 150 * 64; + bits = new long[(unitIndex(length - 1) + 1)]; + + // Mark 1 as composite + set(0); + int nextIndex = 1; + int nextPrime = 3; + + // Find primes and remove their multiples from sieve + do { + sieveSingle(length, nextIndex + nextPrime, nextPrime); + nextIndex = sieveSearch(length, nextIndex + 1); + nextPrime = 2*nextIndex + 1; + } while((nextIndex > 0) && (nextPrime < length)); + } + + /** + * Construct a bit sieve of searchLen bits used for finding prime number + * candidates. The new sieve begins at the specified base, which must + * be even. + */ + BitSieve(BigInteger base, int searchLen) { + /* + * Candidates are indicated by clear bits in the sieve. As a candidates + * nonprimality is calculated, a bit is set in the sieve to eliminate + * it. To reduce storage space and increase efficiency, no even numbers + * are represented in the sieve (each bit in the sieve represents an + * odd number). + */ + bits = new long[(unitIndex(searchLen-1) + 1)]; + length = searchLen; + int start = 0; + + int step = smallSieve.sieveSearch(smallSieve.length, start); + int convertedStep = (step *2) + 1; + + // Construct the large sieve at an even offset specified by base + MutableBigInteger b = new MutableBigInteger(base); + MutableBigInteger q = new MutableBigInteger(); + do { + // Calculate base mod convertedStep + start = b.divideOneWord(convertedStep, q); + + // Take each multiple of step out of sieve + start = convertedStep - start; + if (start%2 == 0) + start += convertedStep; + sieveSingle(searchLen, (start-1)/2, convertedStep); + + // Find next prime from small sieve + step = smallSieve.sieveSearch(smallSieve.length, step+1); + convertedStep = (step *2) + 1; + } while (step > 0); + } + + /** + * Given a bit index return unit index containing it. + */ + private static int unitIndex(int bitIndex) { + return bitIndex >>> 6; + } + + /** + * Return a unit that masks the specified bit in its unit. + */ + private static long bit(int bitIndex) { + return 1L << (bitIndex & ((1<<6) - 1)); + } + + /** + * Get the value of the bit at the specified index. + */ + private boolean get(int bitIndex) { + int unitIndex = unitIndex(bitIndex); + return ((bits[unitIndex] & bit(bitIndex)) != 0); + } + + /** + * Set the bit at the specified index. + */ + private void set(int bitIndex) { + int unitIndex = unitIndex(bitIndex); + bits[unitIndex] |= bit(bitIndex); + } + + /** + * This method returns the index of the first clear bit in the search + * array that occurs at or after start. It will not search past the + * specified limit. It returns -1 if there is no such clear bit. + */ + private int sieveSearch(int limit, int start) { + if (start >= limit) + return -1; + + int index = start; + do { + if (!get(index)) + return index; + index++; + } while(index < limit-1); + return -1; + } + + /** + * Sieve a single set of multiples out of the sieve. Begin to remove + * multiples of the specified step starting at the specified start index, + * up to the specified limit. + */ + private void sieveSingle(int limit, int start, int step) { + while(start < limit) { + set(start); + start += step; + } + } + + /** + * Test probable primes in the sieve and return successful candidates. + */ + BigInteger retrieve(BigInteger initValue, int certainty, java.util.Random random) { + // Examine the sieve one long at a time to find possible primes + int offset = 1; + for (int i=0; i>>= 1; + offset+=2; + } + } + return null; + } +} diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/MathContext.java" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/MathContext.java" new file mode 100644 index 0000000..94e3abd --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/MathContext.java" @@ -0,0 +1,326 @@ +/* + * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +/* + * Portions Copyright IBM Corporation, 1997, 2001. All Rights Reserved. + */ + +package java.math; +import java.io.*; + +/** + * Immutable objects which encapsulate the context settings which + * describe certain rules for numerical operators, such as those + * implemented by the {@link BigDecimal} class. + * + *

The base-independent settings are: + *

    + *
  1. {@code precision}: + * the number of digits to be used for an operation; results are + * rounded to this precision + * + *
  2. {@code roundingMode}: + * a {@link RoundingMode} object which specifies the algorithm to be + * used for rounding. + *
+ * + * @see BigDecimal + * @see RoundingMode + * @author Mike Cowlishaw + * @author Joseph D. Darcy + * @since 1.5 + */ + +public final class MathContext implements Serializable { + + /* ----- Constants ----- */ + + // defaults for constructors + private static final int DEFAULT_DIGITS = 9; + private static final RoundingMode DEFAULT_ROUNDINGMODE = RoundingMode.HALF_UP; + // Smallest values for digits (Maximum is Integer.MAX_VALUE) + private static final int MIN_DIGITS = 0; + + // Serialization version + private static final long serialVersionUID = 5579720004786848255L; + + /* ----- Public Properties ----- */ + /** + * A {@code MathContext} object whose settings have the values + * required for unlimited precision arithmetic. + * The values of the settings are: + * + * precision=0 roundingMode=HALF_UP + * + */ + public static final MathContext UNLIMITED = + new MathContext(0, RoundingMode.HALF_UP); + + /** + * A {@code MathContext} object with a precision setting + * matching the IEEE 754R Decimal32 format, 7 digits, and a + * rounding mode of {@link RoundingMode#HALF_EVEN HALF_EVEN}, the + * IEEE 754R default. + */ + public static final MathContext DECIMAL32 = + new MathContext(7, RoundingMode.HALF_EVEN); + + /** + * A {@code MathContext} object with a precision setting + * matching the IEEE 754R Decimal64 format, 16 digits, and a + * rounding mode of {@link RoundingMode#HALF_EVEN HALF_EVEN}, the + * IEEE 754R default. + */ + public static final MathContext DECIMAL64 = + new MathContext(16, RoundingMode.HALF_EVEN); + + /** + * A {@code MathContext} object with a precision setting + * matching the IEEE 754R Decimal128 format, 34 digits, and a + * rounding mode of {@link RoundingMode#HALF_EVEN HALF_EVEN}, the + * IEEE 754R default. + */ + public static final MathContext DECIMAL128 = + new MathContext(34, RoundingMode.HALF_EVEN); + + /* ----- Shared Properties ----- */ + /** + * The number of digits to be used for an operation. A value of 0 + * indicates that unlimited precision (as many digits as are + * required) will be used. Note that leading zeros (in the + * coefficient of a number) are never significant. + * + *

{@code precision} will always be non-negative. + * + * @serial + */ + final int precision; + + /** + * The rounding algorithm to be used for an operation. + * + * @see RoundingMode + * @serial + */ + final RoundingMode roundingMode; + + /* ----- Constructors ----- */ + + /** + * Constructs a new {@code MathContext} with the specified + * precision and the {@link RoundingMode#HALF_UP HALF_UP} rounding + * mode. + * + * @param setPrecision The non-negative {@code int} precision setting. + * @throws IllegalArgumentException if the {@code setPrecision} parameter is less + * than zero. + */ + public MathContext(int setPrecision) { + this(setPrecision, DEFAULT_ROUNDINGMODE); + return; + } + + /** + * Constructs a new {@code MathContext} with a specified + * precision and rounding mode. + * + * @param setPrecision The non-negative {@code int} precision setting. + * @param setRoundingMode The rounding mode to use. + * @throws IllegalArgumentException if the {@code setPrecision} parameter is less + * than zero. + * @throws NullPointerException if the rounding mode argument is {@code null} + */ + public MathContext(int setPrecision, + RoundingMode setRoundingMode) { + if (setPrecision < MIN_DIGITS) + throw new IllegalArgumentException("Digits < 0"); + if (setRoundingMode == null) + throw new NullPointerException("null RoundingMode"); + + precision = setPrecision; + roundingMode = setRoundingMode; + return; + } + + /** + * Constructs a new {@code MathContext} from a string. + * + * The string must be in the same format as that produced by the + * {@link #toString} method. + * + *

An {@code IllegalArgumentException} is thrown if the precision + * section of the string is out of range ({@code < 0}) or the string is + * not in the format created by the {@link #toString} method. + * + * @param val The string to be parsed + * @throws IllegalArgumentException if the precision section is out of range + * or of incorrect format + * @throws NullPointerException if the argument is {@code null} + */ + public MathContext(String val) { + boolean bad = false; + int setPrecision; + if (val == null) + throw new NullPointerException("null String"); + try { // any error here is a string format problem + if (!val.startsWith("precision=")) throw new RuntimeException(); + int fence = val.indexOf(' '); // could be -1 + int off = 10; // where value starts + setPrecision = Integer.parseInt(val.substring(10, fence)); + + if (!val.startsWith("roundingMode=", fence+1)) + throw new RuntimeException(); + off = fence + 1 + 13; + String str = val.substring(off, val.length()); + roundingMode = RoundingMode.valueOf(str); + } catch (RuntimeException re) { + throw new IllegalArgumentException("bad string format"); + } + + if (setPrecision < MIN_DIGITS) + throw new IllegalArgumentException("Digits < 0"); + // the other parameters cannot be invalid if we got here + precision = setPrecision; + } + + /** + * Returns the {@code precision} setting. + * This value is always non-negative. + * + * @return an {@code int} which is the value of the {@code precision} + * setting + */ + public int getPrecision() { + return precision; + } + + /** + * Returns the roundingMode setting. + * This will be one of + * {@link RoundingMode#CEILING}, + * {@link RoundingMode#DOWN}, + * {@link RoundingMode#FLOOR}, + * {@link RoundingMode#HALF_DOWN}, + * {@link RoundingMode#HALF_EVEN}, + * {@link RoundingMode#HALF_UP}, + * {@link RoundingMode#UNNECESSARY}, or + * {@link RoundingMode#UP}. + * + * @return a {@code RoundingMode} object which is the value of the + * {@code roundingMode} setting + */ + + public RoundingMode getRoundingMode() { + return roundingMode; + } + + /** + * Compares this {@code MathContext} with the specified + * {@code Object} for equality. + * + * @param x {@code Object} to which this {@code MathContext} is to + * be compared. + * @return {@code true} if and only if the specified {@code Object} is + * a {@code MathContext} object which has exactly the same + * settings as this object + */ + public boolean equals(Object x){ + MathContext mc; + if (!(x instanceof MathContext)) + return false; + mc = (MathContext) x; + return mc.precision == this.precision + && mc.roundingMode == this.roundingMode; // no need for .equals() + } + + /** + * Returns the hash code for this {@code MathContext}. + * + * @return hash code for this {@code MathContext} + */ + public int hashCode() { + return this.precision + roundingMode.hashCode() * 59; + } + + /** + * Returns the string representation of this {@code MathContext}. + * The {@code String} returned represents the settings of the + * {@code MathContext} object as two space-delimited words + * (separated by a single space character, '\u0020', + * and with no leading or trailing white space), as follows: + *

    + *
  1. + * The string {@code "precision="}, immediately followed + * by the value of the precision setting as a numeric string as if + * generated by the {@link Integer#toString(int) Integer.toString} + * method. + * + *
  2. + * The string {@code "roundingMode="}, immediately + * followed by the value of the {@code roundingMode} setting as a + * word. This word will be the same as the name of the + * corresponding public constant in the {@link RoundingMode} + * enum. + *
+ *

+ * For example: + *

+     * precision=9 roundingMode=HALF_UP
+     * 
+ * + * Additional words may be appended to the result of + * {@code toString} in the future if more properties are added to + * this class. + * + * @return a {@code String} representing the context settings + */ + public java.lang.String toString() { + return "precision=" + precision + " " + + "roundingMode=" + roundingMode.toString(); + } + + // Private methods + + /** + * Reconstitute the {@code MathContext} instance from a stream (that is, + * deserialize it). + * + * @param s the stream being read. + */ + private void readObject(java.io.ObjectInputStream s) + throws java.io.IOException, ClassNotFoundException { + s.defaultReadObject(); // read in all fields + // validate possibly bad fields + if (precision < MIN_DIGITS) { + String message = "MathContext: invalid digits in stream"; + throw new java.io.StreamCorruptedException(message); + } + if (roundingMode == null) { + String message = "MathContext: null roundingMode in stream"; + throw new java.io.StreamCorruptedException(message); + } + } + +} diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/MutableBigInteger.java" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/MutableBigInteger.java" new file mode 100644 index 0000000..b5a3b60 --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/MutableBigInteger.java" @@ -0,0 +1,2238 @@ +/* + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +package java.math; + +/** + * A class used to represent multiprecision integers that makes efficient + * use of allocated space by allowing a number to occupy only part of + * an array so that the arrays do not have to be reallocated as often. + * When performing an operation with many iterations the array used to + * hold a number is only reallocated when necessary and does not have to + * be the same size as the number it represents. A mutable number allows + * calculations to occur on the same number without having to create + * a new number for every step of the calculation as occurs with + * BigIntegers. + * + * @see BigInteger + * @author Michael McCloskey + * @author Timothy Buktu + * @since 1.3 + */ + +import static java.math.BigDecimal.INFLATED; +import static java.math.BigInteger.LONG_MASK; +import java.util.Arrays; + +class MutableBigInteger { + /** + * Holds the magnitude of this MutableBigInteger in big endian order. + * The magnitude may start at an offset into the value array, and it may + * end before the length of the value array. + */ + int[] value; + + /** + * The number of ints of the value array that are currently used + * to hold the magnitude of this MutableBigInteger. The magnitude starts + * at an offset and offset + intLen may be less than value.length. + */ + int intLen; + + /** + * The offset into the value array where the magnitude of this + * MutableBigInteger begins. + */ + int offset = 0; + + // Constants + /** + * MutableBigInteger with one element value array with the value 1. Used by + * BigDecimal divideAndRound to increment the quotient. Use this constant + * only when the method is not going to modify this object. + */ + static final MutableBigInteger ONE = new MutableBigInteger(1); + + /** + * The minimum {@code intLen} for cancelling powers of two before + * dividing. + * If the number of ints is less than this threshold, + * {@code divideKnuth} does not eliminate common powers of two from + * the dividend and divisor. + */ + static final int KNUTH_POW2_THRESH_LEN = 6; + + /** + * The minimum number of trailing zero ints for cancelling powers of two + * before dividing. + * If the dividend and divisor don't share at least this many zero ints + * at the end, {@code divideKnuth} does not eliminate common powers + * of two from the dividend and divisor. + */ + static final int KNUTH_POW2_THRESH_ZEROS = 3; + + // Constructors + + /** + * The default constructor. An empty MutableBigInteger is created with + * a one word capacity. + */ + MutableBigInteger() { + value = new int[1]; + intLen = 0; + } + + /** + * Construct a new MutableBigInteger with a magnitude specified by + * the int val. + */ + MutableBigInteger(int val) { + value = new int[1]; + intLen = 1; + value[0] = val; + } + + /** + * Construct a new MutableBigInteger with the specified value array + * up to the length of the array supplied. + */ + MutableBigInteger(int[] val) { + value = val; + intLen = val.length; + } + + /** + * Construct a new MutableBigInteger with a magnitude equal to the + * specified BigInteger. + */ + MutableBigInteger(BigInteger b) { + intLen = b.mag.length; + value = Arrays.copyOf(b.mag, intLen); + } + + /** + * Construct a new MutableBigInteger with a magnitude equal to the + * specified MutableBigInteger. + */ + MutableBigInteger(MutableBigInteger val) { + intLen = val.intLen; + value = Arrays.copyOfRange(val.value, val.offset, val.offset + intLen); + } + + /** + * Makes this number an {@code n}-int number all of whose bits are ones. + * Used by Burnikel-Ziegler division. + * @param n number of ints in the {@code value} array + * @return a number equal to {@code ((1<<(32*n)))-1} + */ + private void ones(int n) { + if (n > value.length) + value = new int[n]; + Arrays.fill(value, -1); + offset = 0; + intLen = n; + } + + /** + * Internal helper method to return the magnitude array. The caller is not + * supposed to modify the returned array. + */ + private int[] getMagnitudeArray() { + if (offset > 0 || value.length != intLen) + return Arrays.copyOfRange(value, offset, offset + intLen); + return value; + } + + /** + * Convert this MutableBigInteger to a long value. The caller has to make + * sure this MutableBigInteger can be fit into long. + */ + private long toLong() { + assert (intLen <= 2) : "this MutableBigInteger exceeds the range of long"; + if (intLen == 0) + return 0; + long d = value[offset] & LONG_MASK; + return (intLen == 2) ? d << 32 | (value[offset + 1] & LONG_MASK) : d; + } + + /** + * Convert this MutableBigInteger to a BigInteger object. + */ + BigInteger toBigInteger(int sign) { + if (intLen == 0 || sign == 0) + return BigInteger.ZERO; + return new BigInteger(getMagnitudeArray(), sign); + } + + /** + * Converts this number to a nonnegative {@code BigInteger}. + */ + BigInteger toBigInteger() { + normalize(); + return toBigInteger(isZero() ? 0 : 1); + } + + /** + * Convert this MutableBigInteger to BigDecimal object with the specified sign + * and scale. + */ + BigDecimal toBigDecimal(int sign, int scale) { + if (intLen == 0 || sign == 0) + return BigDecimal.zeroValueOf(scale); + int[] mag = getMagnitudeArray(); + int len = mag.length; + int d = mag[0]; + // If this MutableBigInteger can't be fit into long, we need to + // make a BigInteger object for the resultant BigDecimal object. + if (len > 2 || (d < 0 && len == 2)) + return new BigDecimal(new BigInteger(mag, sign), INFLATED, scale, 0); + long v = (len == 2) ? + ((mag[1] & LONG_MASK) | (d & LONG_MASK) << 32) : + d & LONG_MASK; + return BigDecimal.valueOf(sign == -1 ? -v : v, scale); + } + + /** + * This is for internal use in converting from a MutableBigInteger + * object into a long value given a specified sign. + * returns INFLATED if value is not fit into long + */ + long toCompactValue(int sign) { + if (intLen == 0 || sign == 0) + return 0L; + int[] mag = getMagnitudeArray(); + int len = mag.length; + int d = mag[0]; + // If this MutableBigInteger can not be fitted into long, we need to + // make a BigInteger object for the resultant BigDecimal object. + if (len > 2 || (d < 0 && len == 2)) + return INFLATED; + long v = (len == 2) ? + ((mag[1] & LONG_MASK) | (d & LONG_MASK) << 32) : + d & LONG_MASK; + return sign == -1 ? -v : v; + } + + /** + * Clear out a MutableBigInteger for reuse. + */ + void clear() { + offset = intLen = 0; + for (int index=0, n=value.length; index < n; index++) + value[index] = 0; + } + + /** + * Set a MutableBigInteger to zero, removing its offset. + */ + void reset() { + offset = intLen = 0; + } + + /** + * Compare the magnitude of two MutableBigIntegers. Returns -1, 0 or 1 + * as this MutableBigInteger is numerically less than, equal to, or + * greater than b. + */ + final int compare(MutableBigInteger b) { + int blen = b.intLen; + if (intLen < blen) + return -1; + if (intLen > blen) + return 1; + + // Add Integer.MIN_VALUE to make the comparison act as unsigned integer + // comparison. + int[] bval = b.value; + for (int i = offset, j = b.offset; i < intLen + offset; i++, j++) { + int b1 = value[i] + 0x80000000; + int b2 = bval[j] + 0x80000000; + if (b1 < b2) + return -1; + if (b1 > b2) + return 1; + } + return 0; + } + + /** + * Returns a value equal to what {@code b.leftShift(32*ints); return compare(b);} + * would return, but doesn't change the value of {@code b}. + */ + private int compareShifted(MutableBigInteger b, int ints) { + int blen = b.intLen; + int alen = intLen - ints; + if (alen < blen) + return -1; + if (alen > blen) + return 1; + + // Add Integer.MIN_VALUE to make the comparison act as unsigned integer + // comparison. + int[] bval = b.value; + for (int i = offset, j = b.offset; i < alen + offset; i++, j++) { + int b1 = value[i] + 0x80000000; + int b2 = bval[j] + 0x80000000; + if (b1 < b2) + return -1; + if (b1 > b2) + return 1; + } + return 0; + } + + /** + * Compare this against half of a MutableBigInteger object (Needed for + * remainder tests). + * Assumes no leading unnecessary zeros, which holds for results + * from divide(). + */ + final int compareHalf(MutableBigInteger b) { + int blen = b.intLen; + int len = intLen; + if (len <= 0) + return blen <= 0 ? 0 : -1; + if (len > blen) + return 1; + if (len < blen - 1) + return -1; + int[] bval = b.value; + int bstart = 0; + int carry = 0; + // Only 2 cases left:len == blen or len == blen - 1 + if (len != blen) { // len == blen - 1 + if (bval[bstart] == 1) { + ++bstart; + carry = 0x80000000; + } else + return -1; + } + // compare values with right-shifted values of b, + // carrying shifted-out bits across words + int[] val = value; + for (int i = offset, j = bstart; i < len + offset;) { + int bv = bval[j++]; + long hb = ((bv >>> 1) + carry) & LONG_MASK; + long v = val[i++] & LONG_MASK; + if (v != hb) + return v < hb ? -1 : 1; + carry = (bv & 1) << 31; // carray will be either 0x80000000 or 0 + } + return carry == 0 ? 0 : -1; + } + + /** + * Return the index of the lowest set bit in this MutableBigInteger. If the + * magnitude of this MutableBigInteger is zero, -1 is returned. + */ + private final int getLowestSetBit() { + if (intLen == 0) + return -1; + int j, b; + for (j=intLen-1; (j > 0) && (value[j+offset] == 0); j--) + ; + b = value[j+offset]; + if (b == 0) + return -1; + return ((intLen-1-j)<<5) + Integer.numberOfTrailingZeros(b); + } + + /** + * Return the int in use in this MutableBigInteger at the specified + * index. This method is not used because it is not inlined on all + * platforms. + */ + private final int getInt(int index) { + return value[offset+index]; + } + + /** + * Return a long which is equal to the unsigned value of the int in + * use in this MutableBigInteger at the specified index. This method is + * not used because it is not inlined on all platforms. + */ + private final long getLong(int index) { + return value[offset+index] & LONG_MASK; + } + + /** + * Ensure that the MutableBigInteger is in normal form, specifically + * making sure that there are no leading zeros, and that if the + * magnitude is zero, then intLen is zero. + */ + final void normalize() { + if (intLen == 0) { + offset = 0; + return; + } + + int index = offset; + if (value[index] != 0) + return; + + int indexBound = index+intLen; + do { + index++; + } while(index < indexBound && value[index] == 0); + + int numZeros = index - offset; + intLen -= numZeros; + offset = (intLen == 0 ? 0 : offset+numZeros); + } + + /** + * If this MutableBigInteger cannot hold len words, increase the size + * of the value array to len words. + */ + private final void ensureCapacity(int len) { + if (value.length < len) { + value = new int[len]; + offset = 0; + intLen = len; + } + } + + /** + * Convert this MutableBigInteger into an int array with no leading + * zeros, of a length that is equal to this MutableBigInteger's intLen. + */ + int[] toIntArray() { + int[] result = new int[intLen]; + for(int i=0; i < intLen; i++) + result[i] = value[offset+i]; + return result; + } + + /** + * Sets the int at index+offset in this MutableBigInteger to val. + * This does not get inlined on all platforms so it is not used + * as often as originally intended. + */ + void setInt(int index, int val) { + value[offset + index] = val; + } + + /** + * Sets this MutableBigInteger's value array to the specified array. + * The intLen is set to the specified length. + */ + void setValue(int[] val, int length) { + value = val; + intLen = length; + offset = 0; + } + + /** + * Sets this MutableBigInteger's value array to a copy of the specified + * array. The intLen is set to the length of the new array. + */ + void copyValue(MutableBigInteger src) { + int len = src.intLen; + if (value.length < len) + value = new int[len]; + System.arraycopy(src.value, src.offset, value, 0, len); + intLen = len; + offset = 0; + } + + /** + * Sets this MutableBigInteger's value array to a copy of the specified + * array. The intLen is set to the length of the specified array. + */ + void copyValue(int[] val) { + int len = val.length; + if (value.length < len) + value = new int[len]; + System.arraycopy(val, 0, value, 0, len); + intLen = len; + offset = 0; + } + + /** + * Returns true iff this MutableBigInteger has a value of one. + */ + boolean isOne() { + return (intLen == 1) && (value[offset] == 1); + } + + /** + * Returns true iff this MutableBigInteger has a value of zero. + */ + boolean isZero() { + return (intLen == 0); + } + + /** + * Returns true iff this MutableBigInteger is even. + */ + boolean isEven() { + return (intLen == 0) || ((value[offset + intLen - 1] & 1) == 0); + } + + /** + * Returns true iff this MutableBigInteger is odd. + */ + boolean isOdd() { + return isZero() ? false : ((value[offset + intLen - 1] & 1) == 1); + } + + /** + * Returns true iff this MutableBigInteger is in normal form. A + * MutableBigInteger is in normal form if it has no leading zeros + * after the offset, and intLen + offset <= value.length. + */ + boolean isNormal() { + if (intLen + offset > value.length) + return false; + if (intLen == 0) + return true; + return (value[offset] != 0); + } + + /** + * Returns a String representation of this MutableBigInteger in radix 10. + */ + public String toString() { + BigInteger b = toBigInteger(1); + return b.toString(); + } + + /** + * Like {@link #rightShift(int)} but {@code n} can be greater than the length of the number. + */ + void safeRightShift(int n) { + if (n/32 >= intLen) { + reset(); + } else { + rightShift(n); + } + } + + /** + * Right shift this MutableBigInteger n bits. The MutableBigInteger is left + * in normal form. + */ + void rightShift(int n) { + if (intLen == 0) + return; + int nInts = n >>> 5; + int nBits = n & 0x1F; + this.intLen -= nInts; + if (nBits == 0) + return; + int bitsInHighWord = BigInteger.bitLengthForInt(value[offset]); + if (nBits >= bitsInHighWord) { + this.primitiveLeftShift(32 - nBits); + this.intLen--; + } else { + primitiveRightShift(nBits); + } + } + + /** + * Like {@link #leftShift(int)} but {@code n} can be zero. + */ + void safeLeftShift(int n) { + if (n > 0) { + leftShift(n); + } + } + + /** + * Left shift this MutableBigInteger n bits. + */ + void leftShift(int n) { + /* + * If there is enough storage space in this MutableBigInteger already + * the available space will be used. Space to the right of the used + * ints in the value array is faster to utilize, so the extra space + * will be taken from the right if possible. + */ + if (intLen == 0) + return; + int nInts = n >>> 5; + int nBits = n&0x1F; + int bitsInHighWord = BigInteger.bitLengthForInt(value[offset]); + + // If shift can be done without moving words, do so + if (n <= (32-bitsInHighWord)) { + primitiveLeftShift(nBits); + return; + } + + int newLen = intLen + nInts +1; + if (nBits <= (32-bitsInHighWord)) + newLen--; + if (value.length < newLen) { + // The array must grow + int[] result = new int[newLen]; + for (int i=0; i < intLen; i++) + result[i] = value[offset+i]; + setValue(result, newLen); + } else if (value.length - offset >= newLen) { + // Use space on right + for(int i=0; i < newLen - intLen; i++) + value[offset+intLen+i] = 0; + } else { + // Must use space on left + for (int i=0; i < intLen; i++) + value[i] = value[offset+i]; + for (int i=intLen; i < newLen; i++) + value[i] = 0; + offset = 0; + } + intLen = newLen; + if (nBits == 0) + return; + if (nBits <= (32-bitsInHighWord)) + primitiveLeftShift(nBits); + else + primitiveRightShift(32 -nBits); + } + + /** + * A primitive used for division. This method adds in one multiple of the + * divisor a back to the dividend result at a specified offset. It is used + * when qhat was estimated too large, and must be adjusted. + */ + private int divadd(int[] a, int[] result, int offset) { + long carry = 0; + + for (int j=a.length-1; j >= 0; j--) { + long sum = (a[j] & LONG_MASK) + + (result[j+offset] & LONG_MASK) + carry; + result[j+offset] = (int)sum; + carry = sum >>> 32; + } + return (int)carry; + } + + /** + * This method is used for division. It multiplies an n word input a by one + * word input x, and subtracts the n word product from q. This is needed + * when subtracting qhat*divisor from dividend. + */ + private int mulsub(int[] q, int[] a, int x, int len, int offset) { + long xLong = x & LONG_MASK; + long carry = 0; + offset += len; + + for (int j=len-1; j >= 0; j--) { + long product = (a[j] & LONG_MASK) * xLong + carry; + long difference = q[offset] - product; + q[offset--] = (int)difference; + carry = (product >>> 32) + + (((difference & LONG_MASK) > + (((~(int)product) & LONG_MASK))) ? 1:0); + } + return (int)carry; + } + + /** + * The method is the same as mulsun, except the fact that q array is not + * updated, the only result of the method is borrow flag. + */ + private int mulsubBorrow(int[] q, int[] a, int x, int len, int offset) { + long xLong = x & LONG_MASK; + long carry = 0; + offset += len; + for (int j=len-1; j >= 0; j--) { + long product = (a[j] & LONG_MASK) * xLong + carry; + long difference = q[offset--] - product; + carry = (product >>> 32) + + (((difference & LONG_MASK) > + (((~(int)product) & LONG_MASK))) ? 1:0); + } + return (int)carry; + } + + /** + * Right shift this MutableBigInteger n bits, where n is + * less than 32. + * Assumes that intLen > 0, n > 0 for speed + */ + private final void primitiveRightShift(int n) { + int[] val = value; + int n2 = 32 - n; + for (int i=offset+intLen-1, c=val[i]; i > offset; i--) { + int b = c; + c = val[i-1]; + val[i] = (c << n2) | (b >>> n); + } + val[offset] >>>= n; + } + + /** + * Left shift this MutableBigInteger n bits, where n is + * less than 32. + * Assumes that intLen > 0, n > 0 for speed + */ + private final void primitiveLeftShift(int n) { + int[] val = value; + int n2 = 32 - n; + for (int i=offset, c=val[i], m=i+intLen-1; i < m; i++) { + int b = c; + c = val[i+1]; + val[i] = (b << n) | (c >>> n2); + } + val[offset+intLen-1] <<= n; + } + + /** + * Returns a {@code BigInteger} equal to the {@code n} + * low ints of this number. + */ + private BigInteger getLower(int n) { + if (isZero()) { + return BigInteger.ZERO; + } else if (intLen < n) { + return toBigInteger(1); + } else { + // strip zeros + int len = n; + while (len > 0 && value[offset+intLen-len] == 0) + len--; + int sign = len > 0 ? 1 : 0; + return new BigInteger(Arrays.copyOfRange(value, offset+intLen-len, offset+intLen), sign); + } + } + + /** + * Discards all ints whose index is greater than {@code n}. + */ + private void keepLower(int n) { + if (intLen >= n) { + offset += intLen - n; + intLen = n; + } + } + + /** + * Adds the contents of two MutableBigInteger objects.The result + * is placed within this MutableBigInteger. + * The contents of the addend are not changed. + */ + void add(MutableBigInteger addend) { + int x = intLen; + int y = addend.intLen; + int resultLen = (intLen > addend.intLen ? intLen : addend.intLen); + int[] result = (value.length < resultLen ? new int[resultLen] : value); + + int rstart = result.length-1; + long sum; + long carry = 0; + + // Add common parts of both numbers + while(x > 0 && y > 0) { + x--; y--; + sum = (value[x+offset] & LONG_MASK) + + (addend.value[y+addend.offset] & LONG_MASK) + carry; + result[rstart--] = (int)sum; + carry = sum >>> 32; + } + + // Add remainder of the longer number + while(x > 0) { + x--; + if (carry == 0 && result == value && rstart == (x + offset)) + return; + sum = (value[x+offset] & LONG_MASK) + carry; + result[rstart--] = (int)sum; + carry = sum >>> 32; + } + while(y > 0) { + y--; + sum = (addend.value[y+addend.offset] & LONG_MASK) + carry; + result[rstart--] = (int)sum; + carry = sum >>> 32; + } + + if (carry > 0) { // Result must grow in length + resultLen++; + if (result.length < resultLen) { + int temp[] = new int[resultLen]; + // Result one word longer from carry-out; copy low-order + // bits into new result. + System.arraycopy(result, 0, temp, 1, result.length); + temp[0] = 1; + result = temp; + } else { + result[rstart--] = 1; + } + } + + value = result; + intLen = resultLen; + offset = result.length - resultLen; + } + + /** + * Adds the value of {@code addend} shifted {@code n} ints to the left. + * Has the same effect as {@code addend.leftShift(32*ints); add(addend);} + * but doesn't change the value of {@code addend}. + */ + void addShifted(MutableBigInteger addend, int n) { + if (addend.isZero()) { + return; + } + + int x = intLen; + int y = addend.intLen + n; + int resultLen = (intLen > y ? intLen : y); + int[] result = (value.length < resultLen ? new int[resultLen] : value); + + int rstart = result.length-1; + long sum; + long carry = 0; + + // Add common parts of both numbers + while (x > 0 && y > 0) { + x--; y--; + int bval = y+addend.offset < addend.value.length ? addend.value[y+addend.offset] : 0; + sum = (value[x+offset] & LONG_MASK) + + (bval & LONG_MASK) + carry; + result[rstart--] = (int)sum; + carry = sum >>> 32; + } + + // Add remainder of the longer number + while (x > 0) { + x--; + if (carry == 0 && result == value && rstart == (x + offset)) { + return; + } + sum = (value[x+offset] & LONG_MASK) + carry; + result[rstart--] = (int)sum; + carry = sum >>> 32; + } + while (y > 0) { + y--; + int bval = y+addend.offset < addend.value.length ? addend.value[y+addend.offset] : 0; + sum = (bval & LONG_MASK) + carry; + result[rstart--] = (int)sum; + carry = sum >>> 32; + } + + if (carry > 0) { // Result must grow in length + resultLen++; + if (result.length < resultLen) { + int temp[] = new int[resultLen]; + // Result one word longer from carry-out; copy low-order + // bits into new result. + System.arraycopy(result, 0, temp, 1, result.length); + temp[0] = 1; + result = temp; + } else { + result[rstart--] = 1; + } + } + + value = result; + intLen = resultLen; + offset = result.length - resultLen; + } + + /** + * Like {@link #addShifted(MutableBigInteger, int)} but {@code this.intLen} must + * not be greater than {@code n}. In other words, concatenates {@code this} + * and {@code addend}. + */ + void addDisjoint(MutableBigInteger addend, int n) { + if (addend.isZero()) + return; + + int x = intLen; + int y = addend.intLen + n; + int resultLen = (intLen > y ? intLen : y); + int[] result; + if (value.length < resultLen) + result = new int[resultLen]; + else { + result = value; + Arrays.fill(value, offset+intLen, value.length, 0); + } + + int rstart = result.length-1; + + // copy from this if needed + System.arraycopy(value, offset, result, rstart+1-x, x); + y -= x; + rstart -= x; + + int len = Math.min(y, addend.value.length-addend.offset); + System.arraycopy(addend.value, addend.offset, result, rstart+1-y, len); + + // zero the gap + for (int i=rstart+1-y+len; i < rstart+1; i++) + result[i] = 0; + + value = result; + intLen = resultLen; + offset = result.length - resultLen; + } + + /** + * Adds the low {@code n} ints of {@code addend}. + */ + void addLower(MutableBigInteger addend, int n) { + MutableBigInteger a = new MutableBigInteger(addend); + if (a.offset + a.intLen >= n) { + a.offset = a.offset + a.intLen - n; + a.intLen = n; + } + a.normalize(); + add(a); + } + + /** + * Subtracts the smaller of this and b from the larger and places the + * result into this MutableBigInteger. + */ + int subtract(MutableBigInteger b) { + MutableBigInteger a = this; + + int[] result = value; + int sign = a.compare(b); + + if (sign == 0) { + reset(); + return 0; + } + if (sign < 0) { + MutableBigInteger tmp = a; + a = b; + b = tmp; + } + + int resultLen = a.intLen; + if (result.length < resultLen) + result = new int[resultLen]; + + long diff = 0; + int x = a.intLen; + int y = b.intLen; + int rstart = result.length - 1; + + // Subtract common parts of both numbers + while (y > 0) { + x--; y--; + + diff = (a.value[x+a.offset] & LONG_MASK) - + (b.value[y+b.offset] & LONG_MASK) - ((int)-(diff>>32)); + result[rstart--] = (int)diff; + } + // Subtract remainder of longer number + while (x > 0) { + x--; + diff = (a.value[x+a.offset] & LONG_MASK) - ((int)-(diff>>32)); + result[rstart--] = (int)diff; + } + + value = result; + intLen = resultLen; + offset = value.length - resultLen; + normalize(); + return sign; + } + + /** + * Subtracts the smaller of a and b from the larger and places the result + * into the larger. Returns 1 if the answer is in a, -1 if in b, 0 if no + * operation was performed. + */ + private int difference(MutableBigInteger b) { + MutableBigInteger a = this; + int sign = a.compare(b); + if (sign == 0) + return 0; + if (sign < 0) { + MutableBigInteger tmp = a; + a = b; + b = tmp; + } + + long diff = 0; + int x = a.intLen; + int y = b.intLen; + + // Subtract common parts of both numbers + while (y > 0) { + x--; y--; + diff = (a.value[a.offset+ x] & LONG_MASK) - + (b.value[b.offset+ y] & LONG_MASK) - ((int)-(diff>>32)); + a.value[a.offset+x] = (int)diff; + } + // Subtract remainder of longer number + while (x > 0) { + x--; + diff = (a.value[a.offset+ x] & LONG_MASK) - ((int)-(diff>>32)); + a.value[a.offset+x] = (int)diff; + } + + a.normalize(); + return sign; + } + + /** + * Multiply the contents of two MutableBigInteger objects. The result is + * placed into MutableBigInteger z. The contents of y are not changed. + */ + void multiply(MutableBigInteger y, MutableBigInteger z) { + int xLen = intLen; + int yLen = y.intLen; + int newLen = xLen + yLen; + + // Put z into an appropriate state to receive product + if (z.value.length < newLen) + z.value = new int[newLen]; + z.offset = 0; + z.intLen = newLen; + + // The first iteration is hoisted out of the loop to avoid extra add + long carry = 0; + for (int j=yLen-1, k=yLen+xLen-1; j >= 0; j--, k--) { + long product = (y.value[j+y.offset] & LONG_MASK) * + (value[xLen-1+offset] & LONG_MASK) + carry; + z.value[k] = (int)product; + carry = product >>> 32; + } + z.value[xLen-1] = (int)carry; + + // Perform the multiplication word by word + for (int i = xLen-2; i >= 0; i--) { + carry = 0; + for (int j=yLen-1, k=yLen+i; j >= 0; j--, k--) { + long product = (y.value[j+y.offset] & LONG_MASK) * + (value[i+offset] & LONG_MASK) + + (z.value[k] & LONG_MASK) + carry; + z.value[k] = (int)product; + carry = product >>> 32; + } + z.value[i] = (int)carry; + } + + // Remove leading zeros from product + z.normalize(); + } + + /** + * Multiply the contents of this MutableBigInteger by the word y. The + * result is placed into z. + */ + void mul(int y, MutableBigInteger z) { + if (y == 1) { + z.copyValue(this); + return; + } + + if (y == 0) { + z.clear(); + return; + } + + // Perform the multiplication word by word + long ylong = y & LONG_MASK; + int[] zval = (z.value.length < intLen+1 ? new int[intLen + 1] + : z.value); + long carry = 0; + for (int i = intLen-1; i >= 0; i--) { + long product = ylong * (value[i+offset] & LONG_MASK) + carry; + zval[i+1] = (int)product; + carry = product >>> 32; + } + + if (carry == 0) { + z.offset = 1; + z.intLen = intLen; + } else { + z.offset = 0; + z.intLen = intLen + 1; + zval[0] = (int)carry; + } + z.value = zval; + } + + /** + * This method is used for division of an n word dividend by a one word + * divisor. The quotient is placed into quotient. The one word divisor is + * specified by divisor. + * + * @return the remainder of the division is returned. + * + */ + int divideOneWord(int divisor, MutableBigInteger quotient) { + long divisorLong = divisor & LONG_MASK; + + // Special case of one word dividend + if (intLen == 1) { + long dividendValue = value[offset] & LONG_MASK; + int q = (int) (dividendValue / divisorLong); + int r = (int) (dividendValue - q * divisorLong); + quotient.value[0] = q; + quotient.intLen = (q == 0) ? 0 : 1; + quotient.offset = 0; + return r; + } + + if (quotient.value.length < intLen) + quotient.value = new int[intLen]; + quotient.offset = 0; + quotient.intLen = intLen; + + // Normalize the divisor + int shift = Integer.numberOfLeadingZeros(divisor); + + int rem = value[offset]; + long remLong = rem & LONG_MASK; + if (remLong < divisorLong) { + quotient.value[0] = 0; + } else { + quotient.value[0] = (int)(remLong / divisorLong); + rem = (int) (remLong - (quotient.value[0] * divisorLong)); + remLong = rem & LONG_MASK; + } + int xlen = intLen; + while (--xlen > 0) { + long dividendEstimate = (remLong << 32) | + (value[offset + intLen - xlen] & LONG_MASK); + int q; + if (dividendEstimate >= 0) { + q = (int) (dividendEstimate / divisorLong); + rem = (int) (dividendEstimate - q * divisorLong); + } else { + long tmp = divWord(dividendEstimate, divisor); + q = (int) (tmp & LONG_MASK); + rem = (int) (tmp >>> 32); + } + quotient.value[intLen - xlen] = q; + remLong = rem & LONG_MASK; + } + + quotient.normalize(); + // Unnormalize + if (shift > 0) + return rem % divisor; + else + return rem; + } + + /** + * Calculates the quotient of this div b and places the quotient in the + * provided MutableBigInteger objects and the remainder object is returned. + * + */ + MutableBigInteger divide(MutableBigInteger b, MutableBigInteger quotient) { + return divide(b,quotient,true); + } + + MutableBigInteger divide(MutableBigInteger b, MutableBigInteger quotient, boolean needRemainder) { + if (b.intLen < BigInteger.BURNIKEL_ZIEGLER_THRESHOLD || + intLen - b.intLen < BigInteger.BURNIKEL_ZIEGLER_OFFSET) { + return divideKnuth(b, quotient, needRemainder); + } else { + return divideAndRemainderBurnikelZiegler(b, quotient); + } + } + + /** + * @see #divideKnuth(MutableBigInteger, MutableBigInteger, boolean) + */ + MutableBigInteger divideKnuth(MutableBigInteger b, MutableBigInteger quotient) { + return divideKnuth(b,quotient,true); + } + + /** + * Calculates the quotient of this div b and places the quotient in the + * provided MutableBigInteger objects and the remainder object is returned. + * + * Uses Algorithm D in Knuth section 4.3.1. + * Many optimizations to that algorithm have been adapted from the Colin + * Plumb C library. + * It special cases one word divisors for speed. The content of b is not + * changed. + * + */ + MutableBigInteger divideKnuth(MutableBigInteger b, MutableBigInteger quotient, boolean needRemainder) { + if (b.intLen == 0) + throw new ArithmeticException("BigInteger divide by zero"); + + // Dividend is zero + if (intLen == 0) { + quotient.intLen = quotient.offset = 0; + return needRemainder ? new MutableBigInteger() : null; + } + + int cmp = compare(b); + // Dividend less than divisor + if (cmp < 0) { + quotient.intLen = quotient.offset = 0; + return needRemainder ? new MutableBigInteger(this) : null; + } + // Dividend equal to divisor + if (cmp == 0) { + quotient.value[0] = quotient.intLen = 1; + quotient.offset = 0; + return needRemainder ? new MutableBigInteger() : null; + } + + quotient.clear(); + // Special case one word divisor + if (b.intLen == 1) { + int r = divideOneWord(b.value[b.offset], quotient); + if(needRemainder) { + if (r == 0) + return new MutableBigInteger(); + return new MutableBigInteger(r); + } else { + return null; + } + } + + // Cancel common powers of two if we're above the KNUTH_POW2_* thresholds + if (intLen >= KNUTH_POW2_THRESH_LEN) { + int trailingZeroBits = Math.min(getLowestSetBit(), b.getLowestSetBit()); + if (trailingZeroBits >= KNUTH_POW2_THRESH_ZEROS*32) { + MutableBigInteger a = new MutableBigInteger(this); + b = new MutableBigInteger(b); + a.rightShift(trailingZeroBits); + b.rightShift(trailingZeroBits); + MutableBigInteger r = a.divideKnuth(b, quotient); + r.leftShift(trailingZeroBits); + return r; + } + } + + return divideMagnitude(b, quotient, needRemainder); + } + + /** + * Computes {@code this/b} and {@code this%b} using the + * Burnikel-Ziegler algorithm. + * This method implements algorithm 3 from pg. 9 of the Burnikel-Ziegler paper. + * The parameter beta was chosen to b 232 so almost all shifts are + * multiples of 32 bits.
+ * {@code this} and {@code b} must be nonnegative. + * @param b the divisor + * @param quotient output parameter for {@code this/b} + * @return the remainder + */ + MutableBigInteger divideAndRemainderBurnikelZiegler(MutableBigInteger b, MutableBigInteger quotient) { + int r = intLen; + int s = b.intLen; + + // Clear the quotient + quotient.offset = quotient.intLen = 0; + + if (r < s) { + return this; + } else { + // Unlike Knuth division, we don't check for common powers of two here because + // BZ already runs faster if both numbers contain powers of two and cancelling them has no + // additional benefit. + + // step 1: let m = min{2^k | (2^k)*BURNIKEL_ZIEGLER_THRESHOLD > s} + int m = 1 << (32-Integer.numberOfLeadingZeros(s/BigInteger.BURNIKEL_ZIEGLER_THRESHOLD)); + + int j = (s+m-1) / m; // step 2a: j = ceil(s/m) + int n = j * m; // step 2b: block length in 32-bit units + long n32 = 32L * n; // block length in bits + int sigma = (int) Math.max(0, n32 - b.bitLength()); // step 3: sigma = max{T | (2^T)*B < beta^n} + MutableBigInteger bShifted = new MutableBigInteger(b); + bShifted.safeLeftShift(sigma); // step 4a: shift b so its length is a multiple of n + MutableBigInteger aShifted = new MutableBigInteger (this); + aShifted.safeLeftShift(sigma); // step 4b: shift a by the same amount + + // step 5: t is the number of blocks needed to accommodate a plus one additional bit + int t = (int) ((aShifted.bitLength()+n32) / n32); + if (t < 2) { + t = 2; + } + + // step 6: conceptually split a into blocks a[t-1], ..., a[0] + MutableBigInteger a1 = aShifted.getBlock(t-1, t, n); // the most significant block of a + + // step 7: z[t-2] = [a[t-1], a[t-2]] + MutableBigInteger z = aShifted.getBlock(t-2, t, n); // the second to most significant block + z.addDisjoint(a1, n); // z[t-2] + + // do schoolbook division on blocks, dividing 2-block numbers by 1-block numbers + MutableBigInteger qi = new MutableBigInteger(); + MutableBigInteger ri; + for (int i=t-2; i > 0; i--) { + // step 8a: compute (qi,ri) such that z=b*qi+ri + ri = z.divide2n1n(bShifted, qi); + + // step 8b: z = [ri, a[i-1]] + z = aShifted.getBlock(i-1, t, n); // a[i-1] + z.addDisjoint(ri, n); + quotient.addShifted(qi, i*n); // update q (part of step 9) + } + // final iteration of step 8: do the loop one more time for i=0 but leave z unchanged + ri = z.divide2n1n(bShifted, qi); + quotient.add(qi); + + ri.rightShift(sigma); // step 9: a and b were shifted, so shift back + return ri; + } + } + + /** + * This method implements algorithm 1 from pg. 4 of the Burnikel-Ziegler paper. + * It divides a 2n-digit number by a n-digit number.
+ * The parameter beta is 232 so all shifts are multiples of 32 bits. + *
+ * {@code this} must be a nonnegative number such that {@code this.bitLength() <= 2*b.bitLength()} + * @param b a positive number such that {@code b.bitLength()} is even + * @param quotient output parameter for {@code this/b} + * @return {@code this%b} + */ + private MutableBigInteger divide2n1n(MutableBigInteger b, MutableBigInteger quotient) { + int n = b.intLen; + + // step 1: base case + if (n%2 != 0 || n < BigInteger.BURNIKEL_ZIEGLER_THRESHOLD) { + return divideKnuth(b, quotient); + } + + // step 2: view this as [a1,a2,a3,a4] where each ai is n/2 ints or less + MutableBigInteger aUpper = new MutableBigInteger(this); + aUpper.safeRightShift(32*(n/2)); // aUpper = [a1,a2,a3] + keepLower(n/2); // this = a4 + + // step 3: q1=aUpper/b, r1=aUpper%b + MutableBigInteger q1 = new MutableBigInteger(); + MutableBigInteger r1 = aUpper.divide3n2n(b, q1); + + // step 4: quotient=[r1,this]/b, r2=[r1,this]%b + addDisjoint(r1, n/2); // this = [r1,this] + MutableBigInteger r2 = divide3n2n(b, quotient); + + // step 5: let quotient=[q1,quotient] and return r2 + quotient.addDisjoint(q1, n/2); + return r2; + } + + /** + * This method implements algorithm 2 from pg. 5 of the Burnikel-Ziegler paper. + * It divides a 3n-digit number by a 2n-digit number.
+ * The parameter beta is 232 so all shifts are multiples of 32 bits.
+ *
+ * {@code this} must be a nonnegative number such that {@code 2*this.bitLength() <= 3*b.bitLength()} + * @param quotient output parameter for {@code this/b} + * @return {@code this%b} + */ + private MutableBigInteger divide3n2n(MutableBigInteger b, MutableBigInteger quotient) { + int n = b.intLen / 2; // half the length of b in ints + + // step 1: view this as [a1,a2,a3] where each ai is n ints or less; let a12=[a1,a2] + MutableBigInteger a12 = new MutableBigInteger(this); + a12.safeRightShift(32*n); + + // step 2: view b as [b1,b2] where each bi is n ints or less + MutableBigInteger b1 = new MutableBigInteger(b); + b1.safeRightShift(n * 32); + BigInteger b2 = b.getLower(n); + + MutableBigInteger r; + MutableBigInteger d; + if (compareShifted(b, n) < 0) { + // step 3a: if a1=b1, let quotient=beta^n-1 and r=a12-b1*2^n+b1 + quotient.ones(n); + a12.add(b1); + b1.leftShift(32*n); + a12.subtract(b1); + r = a12; + + // step 4: d=quotient*b2=(b2 << 32*n) - b2 + d = new MutableBigInteger(b2); + d.leftShift(32 * n); + d.subtract(new MutableBigInteger(b2)); + } + + // step 5: r = r*beta^n + a3 - d (paper says a4) + // However, don't subtract d until after the while loop so r doesn't become negative + r.leftShift(32 * n); + r.addLower(this, n); + + // step 6: add b until r>=d + while (r.compare(d) < 0) { + r.add(b); + quotient.subtract(MutableBigInteger.ONE); + } + r.subtract(d); + + return r; + } + + /** + * Returns a {@code MutableBigInteger} containing {@code blockLength} ints from + * {@code this} number, starting at {@code index*blockLength}.
+ * Used by Burnikel-Ziegler division. + * @param index the block index + * @param numBlocks the total number of blocks in {@code this} number + * @param blockLength length of one block in units of 32 bits + * @return + */ + private MutableBigInteger getBlock(int index, int numBlocks, int blockLength) { + int blockStart = index * blockLength; + if (blockStart >= intLen) { + return new MutableBigInteger(); + } + + int blockEnd; + if (index == numBlocks-1) { + blockEnd = intLen; + } else { + blockEnd = (index+1) * blockLength; + } + if (blockEnd > intLen) { + return new MutableBigInteger(); + } + + int[] newVal = Arrays.copyOfRange(value, offset+intLen-blockEnd, offset+intLen-blockStart); + return new MutableBigInteger(newVal); + } + + /** @see BigInteger#bitLength() */ + long bitLength() { + if (intLen == 0) + return 0; + return intLen*32L - Integer.numberOfLeadingZeros(value[offset]); + } + + /** + * Internally used to calculate the quotient of this div v and places the + * quotient in the provided MutableBigInteger object and the remainder is + * returned. + * + * @return the remainder of the division will be returned. + */ + long divide(long v, MutableBigInteger quotient) { + if (v == 0) + throw new ArithmeticException("BigInteger divide by zero"); + + // Dividend is zero + if (intLen == 0) { + quotient.intLen = quotient.offset = 0; + return 0; + } + if (v < 0) + v = -v; + + int d = (int)(v >>> 32); + quotient.clear(); + // Special case on word divisor + if (d == 0) + return divideOneWord((int)v, quotient) & LONG_MASK; + else { + return divideLongMagnitude(v, quotient).toLong(); + } + } + + private static void copyAndShift(int[] src, int srcFrom, int srcLen, int[] dst, int dstFrom, int shift) { + int n2 = 32 - shift; + int c=src[srcFrom]; + for (int i=0; i < srcLen-1; i++) { + int b = c; + c = src[++srcFrom]; + dst[dstFrom+i] = (b << shift) | (c >>> n2); + } + dst[dstFrom+srcLen-1] = c << shift; + } + + /** + * Divide this MutableBigInteger by the divisor. + * The quotient will be placed into the provided quotient object & + * the remainder object is returned. + */ + private MutableBigInteger divideMagnitude(MutableBigInteger div, + MutableBigInteger quotient, + boolean needRemainder ) { + // assert div.intLen > 1 + // D1 normalize the divisor + int shift = Integer.numberOfLeadingZeros(div.value[div.offset]); + // Copy divisor value to protect divisor + final int dlen = div.intLen; + int[] divisor; + MutableBigInteger rem; // Remainder starts as dividend with space for a leading zero + if (shift > 0) { + divisor = new int[dlen]; + copyAndShift(div.value,div.offset,dlen,divisor,0,shift); + if (Integer.numberOfLeadingZeros(value[offset]) >= shift) { + int[] remarr = new int[intLen + 1]; + rem = new MutableBigInteger(remarr); + rem.intLen = intLen; + rem.offset = 1; + copyAndShift(value,offset,intLen,remarr,1,shift); + } else { + int[] remarr = new int[intLen + 2]; + rem = new MutableBigInteger(remarr); + rem.intLen = intLen+1; + rem.offset = 1; + int rFrom = offset; + int c=0; + int n2 = 32 - shift; + for (int i=1; i < intLen+1; i++,rFrom++) { + int b = c; + c = value[rFrom]; + remarr[i] = (b << shift) | (c >>> n2); + } + remarr[intLen+1] = c << shift; + } + } else { + divisor = Arrays.copyOfRange(div.value, div.offset, div.offset + div.intLen); + rem = new MutableBigInteger(new int[intLen + 1]); + System.arraycopy(value, offset, rem.value, 1, intLen); + rem.intLen = intLen; + rem.offset = 1; + } + + int nlen = rem.intLen; + + // Set the quotient size + final int limit = nlen - dlen + 1; + if (quotient.value.length < limit) { + quotient.value = new int[limit]; + quotient.offset = 0; + } + quotient.intLen = limit; + int[] q = quotient.value; + + + // Must insert leading 0 in rem if its length did not change + if (rem.intLen == nlen) { + rem.offset = 0; + rem.value[0] = 0; + rem.intLen++; + } + + int dh = divisor[0]; + long dhLong = dh & LONG_MASK; + int dl = divisor[1]; + + // D2 Initialize j + for (int j=0; j < limit-1; j++) { + // D3 Calculate qhat + // estimate qhat + int qhat = 0; + int qrem = 0; + boolean skipCorrection = false; + int nh = rem.value[j+rem.offset]; + int nh2 = nh + 0x80000000; + int nm = rem.value[j+1+rem.offset]; + + if (nh == dh) { + qhat = ~0; + qrem = nh + nm; + skipCorrection = qrem + 0x80000000 < nh2; + } else { + long nChunk = (((long)nh) << 32) | (nm & LONG_MASK); + if (nChunk >= 0) { + qhat = (int) (nChunk / dhLong); + qrem = (int) (nChunk - (qhat * dhLong)); + } else { + long tmp = divWord(nChunk, dh); + qhat = (int) (tmp & LONG_MASK); + qrem = (int) (tmp >>> 32); + } + } + + if (qhat == 0) + continue; + + if (!skipCorrection) { // Correct qhat + long nl = rem.value[j+2+rem.offset] & LONG_MASK; + long rs = ((qrem & LONG_MASK) << 32) | nl; + long estProduct = (dl & LONG_MASK) * (qhat & LONG_MASK); + + if (unsignedLongCompare(estProduct, rs)) { + qhat--; + qrem = (int)((qrem & LONG_MASK) + dhLong); + if ((qrem & LONG_MASK) >= dhLong) { + estProduct -= (dl & LONG_MASK); + rs = ((qrem & LONG_MASK) << 32) | nl; + if (unsignedLongCompare(estProduct, rs)) + qhat--; + } + } + } + + // D4 Multiply and subtract + rem.value[j+rem.offset] = 0; + int borrow = mulsub(rem.value, divisor, qhat, dlen, j+rem.offset); + + // D5 Test remainder + if (borrow + 0x80000000 > nh2) { + // D6 Add back + divadd(divisor, rem.value, j+1+rem.offset); + qhat--; + } + + // Store the quotient digit + q[j] = qhat; + } // D7 loop on j + // D3 Calculate qhat + // estimate qhat + int qhat = 0; + int qrem = 0; + boolean skipCorrection = false; + int nh = rem.value[limit - 1 + rem.offset]; + int nh2 = nh + 0x80000000; + int nm = rem.value[limit + rem.offset]; + + if (nh == dh) { + qhat = ~0; + qrem = nh + nm; + skipCorrection = qrem + 0x80000000 < nh2; + } else { + long nChunk = (((long) nh) << 32) | (nm & LONG_MASK); + if (nChunk >= 0) { + qhat = (int) (nChunk / dhLong); + qrem = (int) (nChunk - (qhat * dhLong)); + } else { + long tmp = divWord(nChunk, dh); + qhat = (int) (tmp & LONG_MASK); + qrem = (int) (tmp >>> 32); + } + } + if (qhat != 0) { + if (!skipCorrection) { // Correct qhat + long nl = rem.value[limit + 1 + rem.offset] & LONG_MASK; + long rs = ((qrem & LONG_MASK) << 32) | nl; + long estProduct = (dl & LONG_MASK) * (qhat & LONG_MASK); + + if (unsignedLongCompare(estProduct, rs)) { + qhat--; + qrem = (int) ((qrem & LONG_MASK) + dhLong); + if ((qrem & LONG_MASK) >= dhLong) { + estProduct -= (dl & LONG_MASK); + rs = ((qrem & LONG_MASK) << 32) | nl; + if (unsignedLongCompare(estProduct, rs)) + qhat--; + } + } + } + + + // D4 Multiply and subtract + int borrow; + rem.value[limit - 1 + rem.offset] = 0; + if(needRemainder) + borrow = mulsub(rem.value, divisor, qhat, dlen, limit - 1 + rem.offset); + else + borrow = mulsubBorrow(rem.value, divisor, qhat, dlen, limit - 1 + rem.offset); + + // D5 Test remainder + if (borrow + 0x80000000 > nh2) { + // D6 Add back + if(needRemainder) + divadd(divisor, rem.value, limit - 1 + 1 + rem.offset); + qhat--; + } + + // Store the quotient digit + q[(limit - 1)] = qhat; + } + + + if (needRemainder) { + // D8 Unnormalize + if (shift > 0) + rem.rightShift(shift); + rem.normalize(); + } + quotient.normalize(); + return needRemainder ? rem : null; + } + + /** + * Divide this MutableBigInteger by the divisor represented by positive long + * value. The quotient will be placed into the provided quotient object & + * the remainder object is returned. + */ + private MutableBigInteger divideLongMagnitude(long ldivisor, MutableBigInteger quotient) { + // Remainder starts as dividend with space for a leading zero + MutableBigInteger rem = new MutableBigInteger(new int[intLen + 1]); + System.arraycopy(value, offset, rem.value, 1, intLen); + rem.intLen = intLen; + rem.offset = 1; + + int nlen = rem.intLen; + + int limit = nlen - 2 + 1; + if (quotient.value.length < limit) { + quotient.value = new int[limit]; + quotient.offset = 0; + } + quotient.intLen = limit; + int[] q = quotient.value; + + // D1 normalize the divisor + int shift = Long.numberOfLeadingZeros(ldivisor); + if (shift > 0) { + ldivisor<<=shift; + rem.leftShift(shift); + } + + // Must insert leading 0 in rem if its length did not change + if (rem.intLen == nlen) { + rem.offset = 0; + rem.value[0] = 0; + rem.intLen++; + } + + int dh = (int)(ldivisor >>> 32); + long dhLong = dh & LONG_MASK; + int dl = (int)(ldivisor & LONG_MASK); + + // D2 Initialize j + for (int j = 0; j < limit; j++) { + // D3 Calculate qhat + // estimate qhat + int qhat = 0; + int qrem = 0; + boolean skipCorrection = false; + int nh = rem.value[j + rem.offset]; + int nh2 = nh + 0x80000000; + int nm = rem.value[j + 1 + rem.offset]; + + if (nh == dh) { + qhat = ~0; + qrem = nh + nm; + skipCorrection = qrem + 0x80000000 < nh2; + } else { + long nChunk = (((long) nh) << 32) | (nm & LONG_MASK); + if (nChunk >= 0) { + qhat = (int) (nChunk / dhLong); + qrem = (int) (nChunk - (qhat * dhLong)); + } else { + long tmp = divWord(nChunk, dh); + qhat =(int)(tmp & LONG_MASK); + qrem = (int)(tmp>>>32); + } + } + + if (qhat == 0) + continue; + + if (!skipCorrection) { // Correct qhat + long nl = rem.value[j + 2 + rem.offset] & LONG_MASK; + long rs = ((qrem & LONG_MASK) << 32) | nl; + long estProduct = (dl & LONG_MASK) * (qhat & LONG_MASK); + + if (unsignedLongCompare(estProduct, rs)) { + qhat--; + qrem = (int) ((qrem & LONG_MASK) + dhLong); + if ((qrem & LONG_MASK) >= dhLong) { + estProduct -= (dl & LONG_MASK); + rs = ((qrem & LONG_MASK) << 32) | nl; + if (unsignedLongCompare(estProduct, rs)) + qhat--; + } + } + } + + // D4 Multiply and subtract + rem.value[j + rem.offset] = 0; + int borrow = mulsubLong(rem.value, dh, dl, qhat, j + rem.offset); + + // D5 Test remainder + if (borrow + 0x80000000 > nh2) { + // D6 Add back + divaddLong(dh,dl, rem.value, j + 1 + rem.offset); + qhat--; + } + + // Store the quotient digit + q[j] = qhat; + } // D7 loop on j + + // D8 Unnormalize + if (shift > 0) + rem.rightShift(shift); + + quotient.normalize(); + rem.normalize(); + return rem; + } + + /** + * A primitive used for division by long. + * Specialized version of the method divadd. + * dh is a high part of the divisor, dl is a low part + */ + private int divaddLong(int dh, int dl, int[] result, int offset) { + long carry = 0; + + long sum = (dl & LONG_MASK) + (result[1+offset] & LONG_MASK); + result[1+offset] = (int)sum; + + sum = (dh & LONG_MASK) + (result[offset] & LONG_MASK) + carry; + result[offset] = (int)sum; + carry = sum >>> 32; + return (int)carry; + } + + /** + * This method is used for division by long. + * Specialized version of the method sulsub. + * dh is a high part of the divisor, dl is a low part + */ + private int mulsubLong(int[] q, int dh, int dl, int x, int offset) { + long xLong = x & LONG_MASK; + offset += 2; + long product = (dl & LONG_MASK) * xLong; + long difference = q[offset] - product; + q[offset--] = (int)difference; + long carry = (product >>> 32) + + (((difference & LONG_MASK) > + (((~(int)product) & LONG_MASK))) ? 1:0); + product = (dh & LONG_MASK) * xLong + carry; + difference = q[offset] - product; + q[offset--] = (int)difference; + carry = (product >>> 32) + + (((difference & LONG_MASK) > + (((~(int)product) & LONG_MASK))) ? 1:0); + return (int)carry; + } + + /** + * Compare two longs as if they were unsigned. + * Returns true iff one is bigger than two. + */ + private boolean unsignedLongCompare(long one, long two) { + return (one+Long.MIN_VALUE) > (two+Long.MIN_VALUE); + } + + /** + * This method divides a long quantity by an int to estimate + * qhat for two multi precision numbers. It is used when + * the signed value of n is less than zero. + * Returns long value where high 32 bits contain remainder value and + * low 32 bits contain quotient value. + */ + static long divWord(long n, int d) { + long dLong = d & LONG_MASK; + long r; + long q; + if (dLong == 1) { + q = (int)n; + r = 0; + return (r << 32) | (q & LONG_MASK); + } + + // Approximate the quotient and remainder + q = (n >>> 1) / (dLong >>> 1); + r = n - q*dLong; + + // Correct the approximation + while (r < 0) { + r += dLong; + q--; + } + while (r >= dLong) { + r -= dLong; + q++; + } + // n - q*dlong == r && 0 <= r = 0) { + // steps B3 and B4 + t.rightShift(lb); + // step B5 + if (tsign > 0) + u = t; + else + v = t; + + // Special case one word numbers + if (u.intLen < 2 && v.intLen < 2) { + int x = u.value[u.offset]; + int y = v.value[v.offset]; + x = binaryGcd(x, y); + r.value[0] = x; + r.intLen = 1; + r.offset = 0; + if (k > 0) + r.leftShift(k); + return r; + } + + // step B6 + if ((tsign = u.difference(v)) == 0) + break; + t = (tsign >= 0) ? u : v; + } + + if (k > 0) + u.leftShift(k); + return u; + } + + /** + * Calculate GCD of a and b interpreted as unsigned integers. + */ + static int binaryGcd(int a, int b) { + if (b == 0) + return a; + if (a == 0) + return b; + + // Right shift a & b till their last bits equal to 1. + int aZeros = Integer.numberOfTrailingZeros(a); + int bZeros = Integer.numberOfTrailingZeros(b); + a >>>= aZeros; + b >>>= bZeros; + + int t = (aZeros < bZeros ? aZeros : bZeros); + + while (a != b) { + if ((a+0x80000000) > (b+0x80000000)) { // a > b as unsigned + a -= b; + a >>>= Integer.numberOfTrailingZeros(a); + } else { + b -= a; + b >>>= Integer.numberOfTrailingZeros(b); + } + } + return a< 64) + return euclidModInverse(k); + + int t = inverseMod32(value[offset+intLen-1]); + + if (k < 33) { + t = (k == 32 ? t : t & ((1 << k) - 1)); + return new MutableBigInteger(t); + } + + long pLong = (value[offset+intLen-1] & LONG_MASK); + if (intLen > 1) + pLong |= ((long)value[offset+intLen-2] << 32); + long tLong = t & LONG_MASK; + tLong = tLong * (2 - pLong * tLong); // 1 more Newton iter step + tLong = (k == 64 ? tLong : tLong & ((1L << k) - 1)); + + MutableBigInteger result = new MutableBigInteger(new int[2]); + result.value[0] = (int)(tLong >>> 32); + result.value[1] = (int)tLong; + result.intLen = 2; + result.normalize(); + return result; + } + + /** + * Returns the multiplicative inverse of val mod 2^32. Assumes val is odd. + */ + static int inverseMod32(int val) { + // Newton's iteration! + int t = val; + t *= 2 - val*t; + t *= 2 - val*t; + t *= 2 - val*t; + t *= 2 - val*t; + return t; + } + + /** + * Calculate the multiplicative inverse of 2^k mod mod, where mod is odd. + */ + static MutableBigInteger modInverseBP2(MutableBigInteger mod, int k) { + // Copy the mod to protect original + return fixup(new MutableBigInteger(1), new MutableBigInteger(mod), k); + } + + /** + * Calculate the multiplicative inverse of this mod mod, where mod is odd. + * This and mod are not changed by the calculation. + * + * This method implements an algorithm due to Richard Schroeppel, that uses + * the same intermediate representation as Montgomery Reduction + * ("Montgomery Form"). The algorithm is described in an unpublished + * manuscript entitled "Fast Modular Reciprocals." + */ + private MutableBigInteger modInverse(MutableBigInteger mod) { + MutableBigInteger p = new MutableBigInteger(mod); + MutableBigInteger f = new MutableBigInteger(this); + MutableBigInteger g = new MutableBigInteger(p); + SignedMutableBigInteger c = new SignedMutableBigInteger(1); + SignedMutableBigInteger d = new SignedMutableBigInteger(); + MutableBigInteger temp = null; + SignedMutableBigInteger sTemp = null; + + int k = 0; + // Right shift f k times until odd, left shift d k times + if (f.isEven()) { + int trailingZeros = f.getLowestSetBit(); + f.rightShift(trailingZeros); + d.leftShift(trailingZeros); + k = trailingZeros; + } + + // The Almost Inverse Algorithm + while (!f.isOne()) { + // If gcd(f, g) != 1, number is not invertible modulo mod + if (f.isZero()) + throw new ArithmeticException("BigInteger not invertible."); + + // If f < g exchange f, g and c, d + if (f.compare(g) < 0) { + temp = f; f = g; g = temp; + sTemp = d; d = c; c = sTemp; + } + + // If f == g (mod 4) + if (((f.value[f.offset + f.intLen - 1] ^ + g.value[g.offset + g.intLen - 1]) & 3) == 0) { + f.subtract(g); + c.signedSubtract(d); + } else { // If f != g (mod 4) + f.add(g); + c.signedAdd(d); + } + + // Right shift f k times until odd, left shift d k times + int trailingZeros = f.getLowestSetBit(); + f.rightShift(trailingZeros); + d.leftShift(trailingZeros); + k += trailingZeros; + } + + while (c.sign < 0) + c.signedAdd(p); + + return fixup(c, p, k); + } + + /** + * The Fixup Algorithm + * Calculates X such that X = C * 2^(-k) (mod P) + * Assumes C

> 5; i < numWords; i++) { + // V = R * c (mod 2^j) + int v = r * c.value[c.offset + c.intLen-1]; + // c = c + (v * p) + p.mul(v, temp); + c.add(temp); + // c = c / 2^j + c.intLen--; + } + int numBits = k & 0x1f; + if (numBits != 0) { + // V = R * c (mod 2^j) + int v = r * c.value[c.offset + c.intLen-1]; + v &= ((1<= 0) + c.subtract(p); + + return c; + } + + /** + * Uses the extended Euclidean algorithm to compute the modInverse of base + * mod a modulus that is a power of 2. The modulus is 2^k. + */ + MutableBigInteger euclidModInverse(int k) { + MutableBigInteger b = new MutableBigInteger(1); + b.leftShift(k); + MutableBigInteger mod = new MutableBigInteger(b); + + MutableBigInteger a = new MutableBigInteger(this); + MutableBigInteger q = new MutableBigInteger(); + MutableBigInteger r = b.divide(a, q); + + MutableBigInteger swapper = b; + // swap b & r + b = r; + r = swapper; + + MutableBigInteger t1 = new MutableBigInteger(q); + MutableBigInteger t0 = new MutableBigInteger(1); + MutableBigInteger temp = new MutableBigInteger(); + + while (!b.isOne()) { + r = a.divide(b, q); + + if (r.intLen == 0) + throw new ArithmeticException("BigInteger not invertible."); + + swapper = r; + a = swapper; + + if (q.intLen == 1) + t1.mul(q.value[q.offset], temp); + else + q.multiply(t1, temp); + swapper = q; + q = temp; + temp = swapper; + t0.add(q); + + if (a.isOne()) + return t0; + + r = b.divide(a, q); + + if (r.intLen == 0) + throw new ArithmeticException("BigInteger not invertible."); + + swapper = b; + b = r; + + if (q.intLen == 1) + t0.mul(q.value[q.offset], temp); + else + q.multiply(t0, temp); + swapper = q; q = temp; temp = swapper; + + t1.add(q); + } + mod.subtract(t1); + return mod; + } +} diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/RoundingMode.java" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/RoundingMode.java" new file mode 100644 index 0000000..728b5f2 --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/RoundingMode.java" @@ -0,0 +1,356 @@ +/* + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +/* + * Portions Copyright IBM Corporation, 2001. All Rights Reserved. + */ +package java.math; + +/** + * Specifies a rounding behavior for numerical operations + * capable of discarding precision. Each rounding mode indicates how + * the least significant returned digit of a rounded result is to be + * calculated. If fewer digits are returned than the digits needed to + * represent the exact numerical result, the discarded digits will be + * referred to as the discarded fraction regardless the digits' + * contribution to the value of the number. In other words, + * considered as a numerical value, the discarded fraction could have + * an absolute value greater than one. + * + *

Each rounding mode description includes a table listing how + * different two-digit decimal values would round to a one digit + * decimal value under the rounding mode in question. The result + * column in the tables could be gotten by creating a + * {@code BigDecimal} number with the specified value, forming a + * {@link MathContext} object with the proper settings + * ({@code precision} set to {@code 1}, and the + * {@code roundingMode} set to the rounding mode in question), and + * calling {@link BigDecimal#round round} on this number with the + * proper {@code MathContext}. A summary table showing the results + * of these rounding operations for all rounding modes appears below. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Summary of Rounding Operations Under Different Rounding Modes
Result of rounding input to one digit with the given + * rounding mode
Input Number {@code UP}{@code DOWN}{@code CEILING}{@code FLOOR}{@code HALF_UP}{@code HALF_DOWN}{@code HALF_EVEN}{@code UNNECESSARY}
5.5 6 5 6 5 6 5 6 throw {@code ArithmeticException}
2.5 3 2 3 2 3 2 2 throw {@code ArithmeticException}
1.6 2 1 2 1 2 2 2 throw {@code ArithmeticException}
1.1 2 1 2 1 1 1 1 throw {@code ArithmeticException}
1.0 1 1 1 1 1 1 1 1
-1.0 -1 -1 -1 -1 -1 -1 -1 -1
-1.1 -2 -1 -1 -2 -1 -1 -1 throw {@code ArithmeticException}
-1.6 -2 -1 -1 -2 -2 -2 -2 throw {@code ArithmeticException}
-2.5 -3 -2 -2 -3 -3 -2 -2 throw {@code ArithmeticException}
-5.5 -6 -5 -5 -6 -6 -5 -6 throw {@code ArithmeticException}
+ * + * + *

This {@code enum} is intended to replace the integer-based + * enumeration of rounding mode constants in {@link BigDecimal} + * ({@link BigDecimal#ROUND_UP}, {@link BigDecimal#ROUND_DOWN}, + * etc. ). + * + * @see BigDecimal + * @see MathContext + * @author Josh Bloch + * @author Mike Cowlishaw + * @author Joseph D. Darcy + * @since 1.5 + */ +public enum RoundingMode { + + /** + * Rounding mode to round away from zero. Always increments the + * digit prior to a non-zero discarded fraction. Note that this + * rounding mode never decreases the magnitude of the calculated + * value. + * + *

Example: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Rounding mode UP Examples
Input NumberInput rounded to one digit
with {@code UP} rounding + *
5.5 6
2.5 3
1.6 2
1.1 2
1.0 1
-1.0 -1
-1.1 -2
-1.6 -2
-2.5 -3
-5.5 -6
+ */ + UP(BigDecimal.ROUND_UP), + + /** + * Rounding mode to round towards zero. Never increments the digit + * prior to a discarded fraction (i.e., truncates). Note that this + * rounding mode never increases the magnitude of the calculated value. + * + *

Example: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Rounding mode DOWN Examples
Input NumberInput rounded to one digit
with {@code DOWN} rounding + *
5.5 5
2.5 2
1.6 1
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -1
-2.5 -2
-5.5 -5
+ */ + DOWN(BigDecimal.ROUND_DOWN), + + /** + * Rounding mode to round towards positive infinity. If the + * result is positive, behaves as for {@code RoundingMode.UP}; + * if negative, behaves as for {@code RoundingMode.DOWN}. Note + * that this rounding mode never decreases the calculated value. + * + *

Example: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Rounding mode CEILING Examples
Input NumberInput rounded to one digit
with {@code CEILING} rounding + *
5.5 6
2.5 3
1.6 2
1.1 2
1.0 1
-1.0 -1
-1.1 -1
-1.6 -1
-2.5 -2
-5.5 -5
+ */ + CEILING(BigDecimal.ROUND_CEILING), + + /** + * Rounding mode to round towards negative infinity. If the + * result is positive, behave as for {@code RoundingMode.DOWN}; + * if negative, behave as for {@code RoundingMode.UP}. Note that + * this rounding mode never increases the calculated value. + * + *

Example: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Rounding mode FLOOR Examples
Input NumberInput rounded to one digit
with {@code FLOOR} rounding + *
5.5 5
2.5 2
1.6 1
1.1 1
1.0 1
-1.0 -1
-1.1 -2
-1.6 -2
-2.5 -3
-5.5 -6
+ */ + FLOOR(BigDecimal.ROUND_FLOOR), + + /** + * Rounding mode to round towards {@literal "nearest neighbor"} + * unless both neighbors are equidistant, in which case round up. + * Behaves as for {@code RoundingMode.UP} if the discarded + * fraction is ≥ 0.5; otherwise, behaves as for + * {@code RoundingMode.DOWN}. Note that this is the rounding + * mode commonly taught at school. + * + *

Example: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Rounding mode HALF_UP Examples
Input NumberInput rounded to one digit
with {@code HALF_UP} rounding + *
5.5 6
2.5 3
1.6 2
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -2
-2.5 -3
-5.5 -6
+ */ + HALF_UP(BigDecimal.ROUND_HALF_UP), + + /** + * Rounding mode to round towards {@literal "nearest neighbor"} + * unless both neighbors are equidistant, in which case round + * down. Behaves as for {@code RoundingMode.UP} if the discarded + * fraction is > 0.5; otherwise, behaves as for + * {@code RoundingMode.DOWN}. + * + *

Example: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Rounding mode HALF_DOWN Examples
Input NumberInput rounded to one digit
with {@code HALF_DOWN} rounding + *
5.5 5
2.5 2
1.6 2
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -2
-2.5 -2
-5.5 -5
+ */ + HALF_DOWN(BigDecimal.ROUND_HALF_DOWN), + + /** + * Rounding mode to round towards the {@literal "nearest neighbor"} + * unless both neighbors are equidistant, in which case, round + * towards the even neighbor. Behaves as for + * {@code RoundingMode.HALF_UP} if the digit to the left of the + * discarded fraction is odd; behaves as for + * {@code RoundingMode.HALF_DOWN} if it's even. Note that this + * is the rounding mode that statistically minimizes cumulative + * error when applied repeatedly over a sequence of calculations. + * It is sometimes known as {@literal "Banker's rounding,"} and is + * chiefly used in the USA. This rounding mode is analogous to + * the rounding policy used for {@code float} and {@code double} + * arithmetic in Java. + * + *

Example: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Rounding mode HALF_EVEN Examples
Input NumberInput rounded to one digit
with {@code HALF_EVEN} rounding + *
5.5 6
2.5 2
1.6 2
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -2
-2.5 -2
-5.5 -6
+ */ + HALF_EVEN(BigDecimal.ROUND_HALF_EVEN), + + /** + * Rounding mode to assert that the requested operation has an exact + * result, hence no rounding is necessary. If this rounding mode is + * specified on an operation that yields an inexact result, an + * {@code ArithmeticException} is thrown. + *

Example: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Rounding mode UNNECESSARY Examples
Input NumberInput rounded to one digit
with {@code UNNECESSARY} rounding + *
5.5 throw {@code ArithmeticException}
2.5 throw {@code ArithmeticException}
1.6 throw {@code ArithmeticException}
1.1 throw {@code ArithmeticException}
1.0 1
-1.0 -1
-1.1 throw {@code ArithmeticException}
-1.6 throw {@code ArithmeticException}
-2.5 throw {@code ArithmeticException}
-5.5 throw {@code ArithmeticException}
+ */ + UNNECESSARY(BigDecimal.ROUND_UNNECESSARY); + + // Corresponding BigDecimal rounding constant + final int oldMode; + + /** + * Constructor + * + * @param oldMode The {@code BigDecimal} constant corresponding to + * this mode + */ + private RoundingMode(int oldMode) { + this.oldMode = oldMode; + } + + /** + * Returns the {@code RoundingMode} object corresponding to a + * legacy integer rounding mode constant in {@link BigDecimal}. + * + * @param rm legacy integer rounding mode to convert + * @return {@code RoundingMode} corresponding to the given integer. + * @throws IllegalArgumentException integer is out of range + */ + public static RoundingMode valueOf(int rm) { + switch(rm) { + + case BigDecimal.ROUND_UP: + return UP; + + case BigDecimal.ROUND_DOWN: + return DOWN; + + case BigDecimal.ROUND_CEILING: + return CEILING; + + case BigDecimal.ROUND_FLOOR: + return FLOOR; + + case BigDecimal.ROUND_HALF_UP: + return HALF_UP; + + case BigDecimal.ROUND_HALF_DOWN: + return HALF_DOWN; + + case BigDecimal.ROUND_HALF_EVEN: + return HALF_EVEN; + + case BigDecimal.ROUND_UNNECESSARY: + return UNNECESSARY; + + default: + throw new IllegalArgumentException("argument out of range"); + } + } +} diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/SignedMutableBigInteger.java" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/SignedMutableBigInteger.java" new file mode 100644 index 0000000..293c6c8 --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/SignedMutableBigInteger.java" @@ -0,0 +1,135 @@ +/* + * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +package java.math; + +/** + * A class used to represent multiprecision integers that makes efficient + * use of allocated space by allowing a number to occupy only part of + * an array so that the arrays do not have to be reallocated as often. + * When performing an operation with many iterations the array used to + * hold a number is only increased when necessary and does not have to + * be the same size as the number it represents. A mutable number allows + * calculations to occur on the same number without having to create + * a new number for every step of the calculation as occurs with + * BigIntegers. + * + * Note that SignedMutableBigIntegers only support signed addition and + * subtraction. All other operations occur as with MutableBigIntegers. + * + * @see BigInteger + * @author Michael McCloskey + * @since 1.3 + */ + +class SignedMutableBigInteger extends MutableBigInteger { + + /** + * The sign of this MutableBigInteger. + */ + int sign = 1; + + // Constructors + + /** + * The default constructor. An empty MutableBigInteger is created with + * a one word capacity. + */ + SignedMutableBigInteger() { + super(); + } + + /** + * Construct a new MutableBigInteger with a magnitude specified by + * the int val. + */ + SignedMutableBigInteger(int val) { + super(val); + } + + /** + * Construct a new MutableBigInteger with a magnitude equal to the + * specified MutableBigInteger. + */ + SignedMutableBigInteger(MutableBigInteger val) { + super(val); + } + + // Arithmetic Operations + + /** + * Signed addition built upon unsigned add and subtract. + */ + void signedAdd(SignedMutableBigInteger addend) { + if (sign == addend.sign) + add(addend); + else + sign = sign * subtract(addend); + + } + + /** + * Signed addition built upon unsigned add and subtract. + */ + void signedAdd(MutableBigInteger addend) { + if (sign == 1) + add(addend); + else + sign = sign * subtract(addend); + + } + + /** + * Signed subtraction built upon unsigned add and subtract. + */ + void signedSubtract(SignedMutableBigInteger addend) { + if (sign == addend.sign) + sign = sign * subtract(addend); + else + add(addend); + + } + + /** + * Signed subtraction built upon unsigned add and subtract. + */ + void signedSubtract(MutableBigInteger addend) { + if (sign == 1) + sign = sign * subtract(addend); + else + add(addend); + if (intLen == 0) + sign = 1; + } + + /** + * Print out the first intLen ints of this MutableBigInteger's value + * array starting at offset. + */ + public String toString() { + return this.toBigInteger(sign).toString(); + } + +} diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/package-info.java" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/package-info.java" new file mode 100644 index 0000000..874aeb9 --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/math/package-info.java" @@ -0,0 +1,45 @@ +/* + * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +/** + * Provides classes for performing arbitrary-precision integer + * arithmetic ({@code BigInteger}) and arbitrary-precision decimal + * arithmetic ({@code BigDecimal}). {@code BigInteger} is analogous + * to the primitive integer types except that it provides arbitrary + * precision, hence operations on {@code BigInteger}s do not overflow + * or lose precision. In addition to standard arithmetic operations, + * {@code BigInteger} provides modular arithmetic, GCD calculation, + * primality testing, prime generation, bit manipulation, and a few + * other miscellaneous operations. + * + * {@code BigDecimal} provides arbitrary-precision signed decimal + * numbers suitable for currency calculations and the like. {@code + * BigDecimal} gives the user complete control over rounding behavior, + * allowing the user to choose from a comprehensive set of eight + * rounding modes. + * + * @since JDK1.1 + */ +package java.math; diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\346\212\245\345\221\212.doc" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\346\212\245\345\221\212.doc" new file mode 100644 index 0000000..72e2b11 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\346\212\245\345\221\212.doc" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241-\347\231\275\347\233\222\346\265\213\350\257\225.doc" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241-\347\231\275\347\233\222\346\265\213\350\257\225.doc" new file mode 100644 index 0000000..f6821cc Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241-\347\231\275\347\233\222\346\265\213\350\257\225.doc" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241-\351\273\221\347\233\222\346\265\213\350\257\225.doc" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241-\351\273\221\347\233\222\346\265\213\350\257\225.doc" new file mode 100644 index 0000000..f681c48 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241-\351\273\221\347\233\222\346\265\213\350\257\225.doc" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\350\256\241\345\210\222\346\250\241\346\235\277-IEEE.doc" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\350\256\241\345\210\222\346\250\241\346\235\277-IEEE.doc" new file mode 100644 index 0000000..be5a467 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\345\256\236\351\252\214/\346\265\213\350\257\225\350\256\241\345\210\222\346\250\241\346\235\277-IEEE.doc" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/5\346\234\21014\346\227\245 \344\270\212\345\215\2108\347\202\27152\345\210\206.mp3" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/5\346\234\21014\346\227\245 \344\270\212\345\215\2108\347\202\27152\345\210\206.mp3" new file mode 100644 index 0000000..97cfec1 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/5\346\234\21014\346\227\245 \344\270\212\345\215\2108\347\202\27152\345\210\206.mp3" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/IMG_20190226_091901_HDR.jpg" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/IMG_20190226_091901_HDR.jpg" new file mode 100644 index 0000000..c196290 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/IMG_20190226_091901_HDR.jpg" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/JUint.mdj" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/JUint.mdj" new file mode 100644 index 0000000..43a569c --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/JUint.mdj" @@ -0,0 +1,1456 @@ +{ + "_type": "Project", + "_id": "AAAAAAFF+h6SjaM2Hec=", + "name": "Untitled", + "ownedElements": [ + { + "_type": "UMLModel", + "_id": "AAAAAAFF+qBWK6M3Z8Y=", + "_parent": { + "$ref": "AAAAAAFF+h6SjaM2Hec=" + }, + "name": "Model", + "ownedElements": [ + { + "_type": "UMLClassDiagram", + "_id": "AAAAAAFF+qBtyKM79qY=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Main", + "defaultDiagram": true, + "ownedViews": [ + { + "_type": "UMLClassView", + "_id": "AAAAAAFrBpi0y4r52OU=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAFrBpi0yYr3/mM=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFrBpi0y4r6mnE=", + "_parent": { + "$ref": "AAAAAAFrBpi0y4r52OU=" + }, + "model": { + "$ref": "AAAAAAFrBpi0yYr3/mM=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFrBpi0zIr7H5E=", + "_parent": { + "$ref": "AAAAAAFrBpi0y4r6mnE=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBpi0zIr8Lqo=", + "_parent": { + "$ref": "AAAAAAFrBpi0y4r6mnE=" + }, + "font": "Arial;13;1", + "left": 349, + "top": 95, + "width": 95.72900390625, + "height": 13, + "text": "Test" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBpi0zIr98xg=", + "_parent": { + "$ref": "AAAAAAFrBpi0y4r6mnE=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBpi0zIr+9C4=", + "_parent": { + "$ref": "AAAAAAFrBpi0y4r6mnE=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 344, + "top": 88, + "width": 105.72900390625, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAFrBpi0zIr7H5E=" + }, + "nameLabel": { + "$ref": "AAAAAAFrBpi0zIr8Lqo=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFrBpi0zIr98xg=" + }, + "propertyLabel": { + "$ref": "AAAAAAFrBpi0zIr+9C4=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFrBpi0zIr/uiQ=", + "_parent": { + "$ref": "AAAAAAFrBpi0y4r52OU=" + }, + "model": { + "$ref": "AAAAAAFrBpi0yYr3/mM=" + }, + "font": "Arial;13;0", + "left": 344, + "top": 113, + "width": 105.72900390625, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFrBpi0zIsA7u8=", + "_parent": { + "$ref": "AAAAAAFrBpi0y4r52OU=" + }, + "model": { + "$ref": "AAAAAAFrBpi0yYr3/mM=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAFrBpji1Isk1sw=", + "_parent": { + "$ref": "AAAAAAFrBpi0zIsA7u8=" + }, + "model": { + "$ref": "AAAAAAFrBpjijIshlOs=" + }, + "font": "Arial;13;0", + "left": 349, + "top": 128, + "width": 95.72900390625, + "height": 13, + "text": "+run(TestResult)", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 344, + "top": 123, + "width": 105.72900390625, + "height": 23 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFrBpi0zIsBeWc=", + "_parent": { + "$ref": "AAAAAAFrBpi0y4r52OU=" + }, + "model": { + "$ref": "AAAAAAFrBpi0yYr3/mM=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFrBpi0zIsCLt4=", + "_parent": { + "$ref": "AAAAAAFrBpi0y4r52OU=" + }, + "model": { + "$ref": "AAAAAAFrBpi0yYr3/mM=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 344, + "top": 88, + "width": 105.72900390625, + "height": 58, + "nameCompartment": { + "$ref": "AAAAAAFrBpi0y4r6mnE=" + }, + "attributeCompartment": { + "$ref": "AAAAAAFrBpi0zIr/uiQ=" + }, + "operationCompartment": { + "$ref": "AAAAAAFrBpi0zIsA7u8=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFrBpi0zIsBeWc=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFrBpi0zIsCLt4=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFrBpwbqossaQY=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFrBpwbqost3uY=", + "_parent": { + "$ref": "AAAAAAFrBpwbqossaQY=" + }, + "model": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFrBpwbqosu7kM=", + "_parent": { + "$ref": "AAAAAAFrBpwbqost3uY=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBpwbqosvF24=", + "_parent": { + "$ref": "AAAAAAFrBpwbqost3uY=" + }, + "font": "Arial;13;1", + "left": 277, + "top": 207, + "width": 95.72900390625, + "height": 13, + "text": "TestCase" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBpwbqoswozQ=", + "_parent": { + "$ref": "AAAAAAFrBpwbqost3uY=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBpwbqosxS+o=", + "_parent": { + "$ref": "AAAAAAFrBpwbqost3uY=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 272, + "top": 200, + "width": 105.72900390625, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAFrBpwbqosu7kM=" + }, + "nameLabel": { + "$ref": "AAAAAAFrBpwbqosvF24=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFrBpwbqoswozQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAFrBpwbqosxS+o=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFrBpwbqosyrvo=", + "_parent": { + "$ref": "AAAAAAFrBpwbqossaQY=" + }, + "model": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + }, + "subViews": [ + { + "_type": "UMLAttributeView", + "_id": "AAAAAAFrBp4a8IvJw8A=", + "_parent": { + "$ref": "AAAAAAFrBpwbqosyrvo=" + }, + "model": { + "$ref": "AAAAAAFrBp4arovGzuE=" + }, + "font": "Arial;13;0", + "left": 277, + "top": 230, + "width": 95.72900390625, + "height": 13, + "text": "+fName", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 272, + "top": 225, + "width": 105.72900390625, + "height": 23 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFrBpwbqosz7O0=", + "_parent": { + "$ref": "AAAAAAFrBpwbqossaQY=" + }, + "model": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAFrBp1vOIurQ1U=", + "_parent": { + "$ref": "AAAAAAFrBpwbqosz7O0=" + }, + "model": { + "$ref": "AAAAAAFrBp1u84uos2A=" + }, + "font": "Arial;13;0", + "left": 277, + "top": 253, + "width": 95.72900390625, + "height": 13, + "text": "+run(TestResult)", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAFrBp2n/Iu0hAc=", + "_parent": { + "$ref": "AAAAAAFrBpwbqosz7O0=" + }, + "model": { + "$ref": "AAAAAAFrBp2nsIuxz2o=" + }, + "font": "Arial;13;0", + "left": 277, + "top": 268, + "width": 95.72900390625, + "height": 13, + "text": "+runTest()", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAFrBp3IGIu72UY=", + "_parent": { + "$ref": "AAAAAAFrBpwbqosz7O0=" + }, + "model": { + "$ref": "AAAAAAFrBp3H1Iu4ZLQ=" + }, + "font": "Arial;13;0", + "left": 277, + "top": 283, + "width": 95.72900390625, + "height": 13, + "text": "+setUp()", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAFrBp3iXovCAeU=", + "_parent": { + "$ref": "AAAAAAFrBpwbqosz7O0=" + }, + "model": { + "$ref": "AAAAAAFrBp3iGYu/zq0=" + }, + "font": "Arial;13;0", + "left": 277, + "top": 298, + "width": 95.72900390625, + "height": 13, + "text": "+tearDown()", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 272, + "top": 248, + "width": 105.72900390625, + "height": 68 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFrBpwbqos0TrI=", + "_parent": { + "$ref": "AAAAAAFrBpwbqossaQY=" + }, + "model": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFrBpwbqos1PJ0=", + "_parent": { + "$ref": "AAAAAAFrBpwbqossaQY=" + }, + "model": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 272, + "top": 200, + "width": 105.72900390625, + "height": 116, + "nameCompartment": { + "$ref": "AAAAAAFrBpwbqost3uY=" + }, + "attributeCompartment": { + "$ref": "AAAAAAFrBpwbqosyrvo=" + }, + "operationCompartment": { + "$ref": "AAAAAAFrBpwbqosz7O0=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFrBpwbqos0TrI=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFrBpwbqos1PJ0=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFrBpxFSItWbm8=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAFrBpxFR4tUkuA=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFrBpxFSItXKYM=", + "_parent": { + "$ref": "AAAAAAFrBpxFSItWbm8=" + }, + "model": { + "$ref": "AAAAAAFrBpxFR4tUkuA=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFrBpxFSItYfWc=", + "_parent": { + "$ref": "AAAAAAFrBpxFSItXKYM=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBpxFSItZ0Ew=", + "_parent": { + "$ref": "AAAAAAFrBpxFSItXKYM=" + }, + "font": "Arial;13;1", + "left": 437, + "top": 207, + "width": 95.72900390625, + "height": 13, + "text": "TestSuite" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBpxFSIta2Hc=", + "_parent": { + "$ref": "AAAAAAFrBpxFSItXKYM=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBpxFSItbLqk=", + "_parent": { + "$ref": "AAAAAAFrBpxFSItXKYM=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 432, + "top": 200, + "width": 105.72900390625, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAFrBpxFSItYfWc=" + }, + "nameLabel": { + "$ref": "AAAAAAFrBpxFSItZ0Ew=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFrBpxFSIta2Hc=" + }, + "propertyLabel": { + "$ref": "AAAAAAFrBpxFSItbLqk=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFrBpxFSItcAog=", + "_parent": { + "$ref": "AAAAAAFrBpxFSItWbm8=" + }, + "model": { + "$ref": "AAAAAAFrBpxFR4tUkuA=" + }, + "font": "Arial;13;0", + "left": 432, + "top": 225, + "width": 105.72900390625, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFrBpxFSItdKuI=", + "_parent": { + "$ref": "AAAAAAFrBpxFSItWbm8=" + }, + "model": { + "$ref": "AAAAAAFrBpxFR4tUkuA=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAFrBp5Lk4vRL6k=", + "_parent": { + "$ref": "AAAAAAFrBpxFSItdKuI=" + }, + "model": { + "$ref": "AAAAAAFrBp5LUIvOtvo=" + }, + "font": "Arial;13;0", + "left": 437, + "top": 240, + "width": 95.72900390625, + "height": 13, + "text": "+run(TestResult)", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAFrBp58D4va5fo=", + "_parent": { + "$ref": "AAAAAAFrBpxFSItdKuI=" + }, + "model": { + "$ref": "AAAAAAFrBp57w4vXLqU=" + }, + "font": "Arial;13;0", + "left": 437, + "top": 255, + "width": 95.72900390625, + "height": 13, + "text": "+addTest(Test)", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 432, + "top": 235, + "width": 105.72900390625, + "height": 38 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFrBpxFSItedG0=", + "_parent": { + "$ref": "AAAAAAFrBpxFSItWbm8=" + }, + "model": { + "$ref": "AAAAAAFrBpxFR4tUkuA=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFrBpxFSItfYLs=", + "_parent": { + "$ref": "AAAAAAFrBpxFSItWbm8=" + }, + "model": { + "$ref": "AAAAAAFrBpxFR4tUkuA=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 432, + "top": 200, + "width": 105.72900390625, + "height": 73, + "nameCompartment": { + "$ref": "AAAAAAFrBpxFSItXKYM=" + }, + "attributeCompartment": { + "$ref": "AAAAAAFrBpxFSItcAog=" + }, + "operationCompartment": { + "$ref": "AAAAAAFrBpxFSItdKuI=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFrBpxFSItedG0=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFrBpxFSItfYLs=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFrBp0cSYuAx6o=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAFrBp0cSIt+JcM=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFrBp0cSYuBJUc=", + "_parent": { + "$ref": "AAAAAAFrBp0cSYuAx6o=" + }, + "model": { + "$ref": "AAAAAAFrBp0cSIt+JcM=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFrBp0cSYuClNk=", + "_parent": { + "$ref": "AAAAAAFrBp0cSYuBJUc=" + }, + "visible": false, + "font": "Arial;13;0", + "top": 128, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBp0cSYuD1mI=", + "_parent": { + "$ref": "AAAAAAFrBp0cSYuBJUc=" + }, + "font": "Arial;13;1", + "left": 349, + "top": 367, + "width": 80.57080078125, + "height": 13, + "text": "自定义测试类" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBp0cSYuENnE=", + "_parent": { + "$ref": "AAAAAAFrBp0cSYuBJUc=" + }, + "visible": false, + "font": "Arial;13;0", + "top": 128, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAFrBp0cSYuFl0c=", + "_parent": { + "$ref": "AAAAAAFrBp0cSYuBJUc=" + }, + "visible": false, + "font": "Arial;13;0", + "top": 128, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 344, + "top": 360, + "width": 90.57080078125, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAFrBp0cSYuClNk=" + }, + "nameLabel": { + "$ref": "AAAAAAFrBp0cSYuD1mI=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFrBp0cSYuENnE=" + }, + "propertyLabel": { + "$ref": "AAAAAAFrBp0cSYuFl0c=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFrBp0cSYuGOXE=", + "_parent": { + "$ref": "AAAAAAFrBp0cSYuAx6o=" + }, + "model": { + "$ref": "AAAAAAFrBp0cSIt+JcM=" + }, + "font": "Arial;13;0", + "left": 344, + "top": 385, + "width": 90.57080078125, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFrBp0cSYuH5sI=", + "_parent": { + "$ref": "AAAAAAFrBp0cSYuAx6o=" + }, + "model": { + "$ref": "AAAAAAFrBp0cSIt+JcM=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAFrBp6yYYvjbUE=", + "_parent": { + "$ref": "AAAAAAFrBp0cSYuH5sI=" + }, + "model": { + "$ref": "AAAAAAFrBp6yHovguAI=" + }, + "font": "Arial;13;0", + "left": 349, + "top": 400, + "width": 80.57080078125, + "height": 13, + "text": "+runTest()", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 344, + "top": 395, + "width": 90.57080078125, + "height": 23 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFrBp0cSYuItTE=", + "_parent": { + "$ref": "AAAAAAFrBp0cSYuAx6o=" + }, + "model": { + "$ref": "AAAAAAFrBp0cSIt+JcM=" + }, + "visible": false, + "font": "Arial;13;0", + "top": 64, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFrBp0cSYuJdF8=", + "_parent": { + "$ref": "AAAAAAFrBp0cSYuAx6o=" + }, + "model": { + "$ref": "AAAAAAFrBp0cSIt+JcM=" + }, + "visible": false, + "font": "Arial;13;0", + "top": 64, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 344, + "top": 360, + "width": 90.57080078125, + "height": 58, + "nameCompartment": { + "$ref": "AAAAAAFrBp0cSYuBJUc=" + }, + "attributeCompartment": { + "$ref": "AAAAAAFrBp0cSYuGOXE=" + }, + "operationCompartment": { + "$ref": "AAAAAAFrBp0cSYuH5sI=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFrBp0cSYuItTE=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFrBp0cSYuJdF8=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFrBqCsNoxV/wk=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxRJcM=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqCsN4xWXmg=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxRJcM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 533, + "top": 160, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqCsN4xXoDM=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxRJcM=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 547, + "top": 166, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqCsN4xYIi0=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxRJcM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 506, + "top": 147, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqCsN4xZ2e8=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxSyZ8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 479, + "top": 123, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqCsN4xaEC4=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxSyZ8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 486, + "top": 111, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqCsN4xbXfQ=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxSyZ8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 466, + "top": 148, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqCsN4xca7E=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxTRUE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 526, + "top": 175, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqCsN4xdSX8=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxTRUE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 539, + "top": 179, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqCsN4xePmA=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxTRUE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 499, + "top": 168, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFrBqCsN4xft4w=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxSyZ8=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFrBqCsN4xgs60=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxV/wk=" + }, + "model": { + "$ref": "AAAAAAFrBqCsNoxTRUE=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFrBpxFSItWbm8=" + }, + "tail": { + "$ref": "AAAAAAFrBpi0y4r52OU=" + }, + "lineStyle": 1, + "points": "450:135;520:160;502:199", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAFrBqCsN4xWXmg=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFrBqCsN4xXoDM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFrBqCsN4xYIi0=" + }, + "tailRoleNameLabel": { + "$ref": "AAAAAAFrBqCsN4xZ2e8=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFrBqCsN4xaEC4=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFrBqCsN4xbXfQ=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFrBqCsN4xca7E=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFrBqCsN4xdSX8=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFrBqCsN4xePmA=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFrBqCsN4xft4w=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFrBqCsN4xgs60=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFrBqExeYzOSrE=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAFrBqExeYzMjF0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqExeYzPo0g=", + "_parent": { + "$ref": "AAAAAAFrBqExeYzOSrE=" + }, + "model": { + "$ref": "AAAAAAFrBqExeYzMjF0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 349, + "top": 337, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFrBqExeYzOSrE=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqExeozQbFY=", + "_parent": { + "$ref": "AAAAAAFrBqExeYzOSrE=" + }, + "model": { + "$ref": "AAAAAAFrBqExeYzMjF0=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 335, + "top": 343, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFrBqExeYzOSrE=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFrBqExeozRvyk=", + "_parent": { + "$ref": "AAAAAAFrBqExeYzOSrE=" + }, + "model": { + "$ref": "AAAAAAFrBqExeYzMjF0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 376, + "top": 324, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFrBqExeYzOSrE=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFrBpwbqossaQY=" + }, + "tail": { + "$ref": "AAAAAAFrBp0cSYuAx6o=" + }, + "lineStyle": 1, + "points": "374:359;353:316", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAFrBqExeYzPo0g=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFrBqExeozQbFY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFrBqExeozRvyk=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFrBpi0yYr3/mM=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Test", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAFrBqCsNoxRJcM=", + "_parent": { + "$ref": "AAAAAAFrBpi0yYr3/mM=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFrBqCsNoxSyZ8=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxRJcM=" + }, + "reference": { + "$ref": "AAAAAAFrBpi0yYr3/mM=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFrBqCsNoxTRUE=", + "_parent": { + "$ref": "AAAAAAFrBqCsNoxRJcM=" + }, + "reference": { + "$ref": "AAAAAAFrBpxFR4tUkuA=" + }, + "aggregation": "shared" + } + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAFrBpjijIshlOs=", + "_parent": { + "$ref": "AAAAAAFrBpi0yYr3/mM=" + }, + "name": "run", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAFrBpkVDYsoVN0=", + "_parent": { + "$ref": "AAAAAAFrBpjijIshlOs=" + }, + "name": "TestResult", + "type": "" + } + ] + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFrBpwbqYsqJEs=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "TestCase", + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAFrBp4arovGzuE=", + "_parent": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + }, + "name": "fName" + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAFrBp1u84uos2A=", + "_parent": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + }, + "name": "run", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAFrBp2nLIuvkyc=", + "_parent": { + "$ref": "AAAAAAFrBp1u84uos2A=" + }, + "name": "TestResult", + "type": "" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAFrBp2nsIuxz2o=", + "_parent": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + }, + "name": "runTest" + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAFrBp3H1Iu4ZLQ=", + "_parent": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + }, + "name": "setUp" + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAFrBp3iGYu/zq0=", + "_parent": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + }, + "name": "tearDown" + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFrBpxFR4tUkuA=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "TestSuite", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAFrBqBl74vnJQc=", + "_parent": { + "$ref": "AAAAAAFrBpxFR4tUkuA=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFrBqBl74vodko=", + "_parent": { + "$ref": "AAAAAAFrBqBl74vnJQc=" + }, + "reference": { + "$ref": "AAAAAAFrBpxFR4tUkuA=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFrBqBl8Ivp8Q0=", + "_parent": { + "$ref": "AAAAAAFrBqBl74vnJQc=" + }, + "reference": { + "$ref": "AAAAAAFrBpi0yYr3/mM=" + }, + "aggregation": "shared" + } + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAFrBp5LUIvOtvo=", + "_parent": { + "$ref": "AAAAAAFrBpxFR4tUkuA=" + }, + "name": "run", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAFrBp57QIvVd+0=", + "_parent": { + "$ref": "AAAAAAFrBp5LUIvOtvo=" + }, + "name": "TestResult", + "type": "" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAFrBp57w4vXLqU=", + "_parent": { + "$ref": "AAAAAAFrBpxFR4tUkuA=" + }, + "name": "addTest", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAFrBp6aLIveHE8=", + "_parent": { + "$ref": "AAAAAAFrBp57w4vXLqU=" + }, + "name": "Test", + "type": "" + } + ] + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFrBp0cSIt+JcM=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "自定义测试类", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFrBqExeYzMjF0=", + "_parent": { + "$ref": "AAAAAAFrBp0cSIt+JcM=" + }, + "source": { + "$ref": "AAAAAAFrBp0cSIt+JcM=" + }, + "target": { + "$ref": "AAAAAAFrBpwbqYsqJEs=" + } + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAFrBp6yHovguAI=", + "_parent": { + "$ref": "AAAAAAFrBp0cSIt+JcM=" + }, + "name": "runTest" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/points.md" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/points.md" new file mode 100644 index 0000000..f40b061 --- /dev/null +++ "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/points.md" @@ -0,0 +1,276 @@ +# Software Test Questions Answered by Points + +------ + +## Introduction + +### 1. Twelve Bugs: + + + +### 2. Six Sources of Problems: + + + +### 3. Percentage of Bugs Sources: + +55 25 15 5 || 54 25 15 6 + +------ + +# Software Development Process + +### 1. Seven Cyclic Steps of TDD: + + + +### 2. Nine Steps of V-model: + + + +### 3. Seven Steps of W-model (7+7): + + + +### 4. Five Activities of H-model: + + + +### 5. Nine Axioms of Software Testing: + +plus with five supplementary principles of software testing + + + +### 6. Three Classification Methods(分类方法) to Software Testing: + +along with the tests method belong to the classification method. 2+4+6 + +### 7. Seven SQA Activities: + + + +### 8. Eight Tasks or Responsiblities of Software Testing Team: + + + +### 9. Basic Composition of Test Team (7): + +Internal Auditor + +### 10. Ten Essential Qualities of Excellent Software Testing Engineer: + + + +------ + +# Test Planning + +### 1. Sixteen Components of a Test Plan: + + + +### 2. Four Sentences Defining the Test Use Case: + +* 满足特定目的的测试数据、测试代码、测试规程的集合 +* 发现软件缺陷的最小测试执行单元 +* 有特殊的书写标准和基本原则 +* 有明确的输入、输出 + +### 3. Three Components of Test Systems Architecture: + +包含关系 + +------ + +# Methods for Designing Test Use Cases + +### 1. Six Roles(作用) of Test Use Cases: + + + +### 2. Two Types of Dynamic White-box Testing: + +* **ControlFlow-testing** + * 逻辑分支覆盖法: + * ? + * ? + * ? + * ? + * ? + * 路径法: + * ? + * ? +* **DataFlow-Testing** + +### 3. Five Steps for Basic Path Testing: + + + +### 4. Three Testing Steps of White-box Testing: + +* 选择逻辑覆盖标准 +* 按照覆盖标准列出所有情况 +* 设计测试用例 用最少的用例满足覆盖标准 +* 验证、分析 运行结果与预期结果 + +### 5. Data Object (State) Categories (7): + +**Defined** Created Initialized Killed Undefined Released **Used**(in a calculation or a predicate) **DU** + +### 6. Six Test Use Cases Design Techniques of Dynamic Black-box Testing: + +EP BVA DT ... + +------ + +# Unit Testing + +### 1. Five Contents of Unit Testing: + +* 局部数据结构 +* 出错处理 +* 模块接口 +* 独立路径 +* 边界条件 + +### 2. Four Essential Elements of a Formal Code Review: + +* Identify problems +* Follow rules +* Prepare +* Write a report + +### 3. Two Forms of Informal Code Inspections: + +* Peer reviews 同级审查 + * reviewers 审查人员:an informal small group of programmers and/or testers + * 参与者应该遵循上个问题中的4个步骤 +* Walkthroughs 走查 + * 代码的作者把代码正式地展示给一个包括程序员 和/或 测试员的小组 + * 展示的时候一行一行代码的解释,reviewers听取解释、提出问题 + * 参与者应该遵循上个问题中的4个步骤 + +### 4. Seven Types of Errors in Code Review Checklist: + +Computation errors Comparison errors Control flow errors Data reference errors Data declaration errors Subroutine parameter errors Input/Output errors + +### 5. Four Concepts under xUnit Frame: (对应要会画JUnit框架的类图) + + + +### 6. Five Processes of Unit Testing: + +------ + +# Integration Testing + +### 1. Six Integration Strategies: + + + +### 2. Two Modes of Integration Testing: + + + +### 3. Five Elements of Testing Environment: + + + +------ + +## System Testing + +### 1. The Purpose and Content of Functional Testing (12点): + + + +### 2. Four Methods of Regression Testing: + + + +### 3. Five Non-functional Tests: + + + +### 4. Three Critical Steps of Performance Test and Bottleneck Analysis: + + + +### 5. Four Steps of Using LoadRunner: + + + +------ + +# Acceptance Test + +### 1. Three Completion Criterion: + + + +### 2. Seven Elements of User Interface: + + + +### 3. Two Compatible Types: + + + +------ + +# Software Defect and Test Report + +### 1. Nine Attributes among Software Defects: + +缺陷标识(唯一)、缺陷类型、缺陷严重程度(4种)、缺陷优先级(3种)、缺陷产生可能性(1-100%) + +缺陷状态(3种)、缺陷起源、缺陷来源、缺陷原因 + +### 2. Three Tools for Managing Software Defects: + +Buggit Mantis Bugzilla + +注: + +- 测试用例管理工具:TestLink +- 单元测试工具:JUnit Parasoft Jtest Parasoft C++Test + +### 3. Software Defect Life Cycle (A Picture) + +测试后发现Bug,对Bug进行审查,审查通过则关闭,否则进行下一条; + +有的Bugs解决不了,只能延期; + +有的Bugs需要改需求、设计文档,改完后测试,回到第一条; + +有的Bugs“打开”后发现表述不清,需要重新测试,如果表述清晰可再现,就修复,再回归测试,回到第一条; + +### 4. Five Components of Software Defect Report: + + + +### 5. Six Parts of Software Test Report: + + + +### 6. Four Types of Software Defect(自加): + +* 完善性维护 50-66% +* 适应性维护 18-25% +* 改正性维护 17-21% +* 其他维护 4% + +------ + +## 后记: + +##### 本文档是在考试前一天面向考试而做,基本记录了那些可以分条按要点(points)回答的问题,但这并不意味着本文档的考点是齐全的,很多不方便按要点作答的考点(概念、图等)本文档未提及。 + +##### 由于考试无选择判断题,全靠理解与记忆,故而按要点式编写了本文档,方便记忆,本文档之外的考点基本通过理解就能掌握。 + +##### 本文档所有题目来自老师最后的两个总复习pdf文件,大多数题未给出答案,鼓励自行背诵与默写。 + +##### 本文档不是最终版,as specifications are never final. + +#### 2019.5.30 \ No newline at end of file diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/01_18\344\270\212\345\215\212\345\271\264_\350\203\214\346\231\257.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/01_18\344\270\212\345\215\212\345\271\264_\350\203\214\346\231\257.ppt" new file mode 100644 index 0000000..a1c6470 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/01_18\344\270\212\345\215\212\345\271\264_\350\203\214\346\231\257.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/02_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\345\274\200\345\217\221\350\277\207\347\250\213.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/02_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\345\274\200\345\217\221\350\277\207\347\250\213.ppt" new file mode 100644 index 0000000..62a817a Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/02_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\345\274\200\345\217\221\350\277\207\347\250\213.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/03_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\346\265\213\350\257\225\347\232\204\347\216\260\345\256\236.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/03_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\346\265\213\350\257\225\347\232\204\347\216\260\345\256\236.ppt" new file mode 100644 index 0000000..5e3ed86 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/03_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\346\265\213\350\257\225\347\232\204\347\216\260\345\256\236.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/04_18\344\270\212\345\215\212\345\271\264_\351\273\221\347\233\222\346\265\213\350\257\225.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/04_18\344\270\212\345\215\212\345\271\264_\351\273\221\347\233\222\346\265\213\350\257\225.ppt" new file mode 100644 index 0000000..92ca2b6 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/04_18\344\270\212\345\215\212\345\271\264_\351\273\221\347\233\222\346\265\213\350\257\225.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/05_18\344\270\212\345\215\212\345\271\264_\347\231\275\347\233\222\346\265\213\350\257\225.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/05_18\344\270\212\345\215\212\345\271\264_\347\231\275\347\233\222\346\265\213\350\257\225.ppt" new file mode 100644 index 0000000..ba6342d Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/05_18\344\270\212\345\215\212\345\271\264_\347\231\275\347\233\222\346\265\213\350\257\225.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/06_18\344\270\212\345\215\212\345\271\264_\351\235\231\346\200\201\346\265\213\350\257\225.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/06_18\344\270\212\345\215\212\345\271\264_\351\235\231\346\200\201\346\265\213\350\257\225.ppt" new file mode 100644 index 0000000..5c0462c Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/06_18\344\270\212\345\215\212\345\271\264_\351\235\231\346\200\201\346\265\213\350\257\225.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/07_18\344\270\212\345\215\212\345\271\264_\345\215\225\345\205\203\346\265\213\350\257\225.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/07_18\344\270\212\345\215\212\345\271\264_\345\215\225\345\205\203\346\265\213\350\257\225.ppt" new file mode 100644 index 0000000..723b353 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/07_18\344\270\212\345\215\212\345\271\264_\345\215\225\345\205\203\346\265\213\350\257\225.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/08_18\344\270\212\345\215\212\345\271\264_\351\233\206\346\210\220\346\265\213\350\257\225.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/08_18\344\270\212\345\215\212\345\271\264_\351\233\206\346\210\220\346\265\213\350\257\225.ppt" new file mode 100644 index 0000000..e54fc9b Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/08_18\344\270\212\345\215\212\345\271\264_\351\233\206\346\210\220\346\265\213\350\257\225.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/09_18\344\270\212\345\215\212\345\271\264_\345\215\225\345\205\203\346\265\213\350\257\225\346\241\206\346\236\266.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/09_18\344\270\212\345\215\212\345\271\264_\345\215\225\345\205\203\346\265\213\350\257\225\346\241\206\346\236\266.ppt" new file mode 100644 index 0000000..5823fec Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/09_18\344\270\212\345\215\212\345\271\264_\345\215\225\345\205\203\346\265\213\350\257\225\346\241\206\346\236\266.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/10_18\344\270\212\345\215\212\345\271\264_\346\265\213\350\257\225\351\251\261\345\212\250\345\274\200\345\217\221.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/10_18\344\270\212\345\215\212\345\271\264_\346\265\213\350\257\225\351\251\261\345\212\250\345\274\200\345\217\221.ppt" new file mode 100644 index 0000000..0117d12 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/10_18\344\270\212\345\215\212\345\271\264_\346\265\213\350\257\225\351\251\261\345\212\250\345\274\200\345\217\221.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/11_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\263\273\347\273\237\346\265\213\350\257\225.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/11_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\263\273\347\273\237\346\265\213\350\257\225.ppt" new file mode 100644 index 0000000..a618a5a Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/11_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\263\273\347\273\237\346\265\213\350\257\225.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/12_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\346\265\213\350\257\225\350\207\252\345\212\250\345\214\226.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/12_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\346\265\213\350\257\225\350\207\252\345\212\250\345\214\226.ppt" new file mode 100644 index 0000000..95ffe1f Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/12_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\346\265\213\350\257\225\350\207\252\345\212\250\345\214\226.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/13_18\344\270\212\345\215\212\345\271\264_QTP.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/13_18\344\270\212\345\215\212\345\271\264_QTP.ppt" new file mode 100644 index 0000000..daef430 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/13_18\344\270\212\345\215\212\345\271\264_QTP.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/14_18\344\270\212\345\215\212\345\271\264_LoadRunner.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/14_18\344\270\212\345\215\212\345\271\264_LoadRunner.ppt" new file mode 100644 index 0000000..31437bf Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/14_18\344\270\212\345\215\212\345\271\264_LoadRunner.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/15_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\346\265\213\350\257\225\347\216\257\345\242\203.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/15_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\346\265\213\350\257\225\347\216\257\345\242\203.ppt" new file mode 100644 index 0000000..016614b Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/15_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\346\265\213\350\257\225\347\216\257\345\242\203.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/16_18\344\270\212\345\215\212\345\271\264_\346\265\213\350\257\225\350\256\241\345\210\222.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/16_18\344\270\212\345\215\212\345\271\264_\346\265\213\350\257\225\350\256\241\345\210\222.ppt" new file mode 100644 index 0000000..8e4b61d Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/16_18\344\270\212\345\215\212\345\271\264_\346\265\213\350\257\225\350\256\241\345\210\222.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/17_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\274\272\351\231\267\347\256\241\347\220\206.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/17_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\274\272\351\231\267\347\256\241\347\220\206.ppt" new file mode 100644 index 0000000..7c28e8e Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/17_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\274\272\351\231\267\347\256\241\347\220\206.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/18_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\351\205\215\347\275\256\347\256\241\347\220\206.ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/18_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\351\205\215\347\275\256\347\256\241\347\220\206.ppt" new file mode 100644 index 0000000..0b366c2 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/18_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\351\205\215\347\275\256\347\256\241\347\220\206.ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/19_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\273\264\346\212\244(1).ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/19_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\273\264\346\212\244(1).ppt" new file mode 100644 index 0000000..3479d66 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/19_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\273\264\346\212\244(1).ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/20_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\273\264\346\212\244(2).ppt" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/20_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\273\264\346\212\244(2).ppt" new file mode 100644 index 0000000..1fa4203 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\345\255\246\347\224\237PPT \345\210\230\346\241\202\345\226\234\350\200\201\345\270\210/20_18\344\270\212\345\215\212\345\271\264_\350\275\257\344\273\266\347\273\264\346\212\244(2).ppt" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/1-introduction-1.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/1-introduction-1.pdf" new file mode 100644 index 0000000..4582f9f Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/1-introduction-1.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/1-introduction-\346\265\213\350\257\225\346\246\202\345\277\265.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/1-introduction-\346\265\213\350\257\225\346\246\202\345\277\265.pdf" new file mode 100644 index 0000000..1011404 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/1-introduction-\346\265\213\350\257\225\346\246\202\345\277\265.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/1-introduction-\346\265\213\350\257\225\346\250\241\345\236\213.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/1-introduction-\346\265\213\350\257\225\346\250\241\345\236\213.pdf" new file mode 100644 index 0000000..a8d7fdb Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/1-introduction-\346\265\213\350\257\225\346\250\241\345\236\213.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/13-\350\275\257\344\273\266\347\273\264\346\212\244.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/13-\350\275\257\344\273\266\347\273\264\346\212\244.pdf" new file mode 100644 index 0000000..90fbd82 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/13-\350\275\257\344\273\266\347\273\264\346\212\244.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/2-testing-realities-1.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/2-testing-realities-1.pdf" new file mode 100644 index 0000000..0de025c Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/2-testing-realities-1.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/2-testing-realities-2.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/2-testing-realities-2.pdf" new file mode 100644 index 0000000..fbdeda2 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/2-testing-realities-2.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/2-\347\273\204\345\273\272\346\265\213\350\257\225\351\230\237\344\274\215.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/2-\347\273\204\345\273\272\346\265\213\350\257\225\351\230\237\344\274\215.pdf" new file mode 100644 index 0000000..cd75741 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/2-\347\273\204\345\273\272\346\265\213\350\257\225\351\230\237\344\274\215.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/3-testplans.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/3-testplans.pdf" new file mode 100644 index 0000000..81bfe46 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/3-testplans.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/4-testcases.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/4-testcases.pdf" new file mode 100644 index 0000000..95eb97d Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/4-testcases.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/5-1\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241(\351\273\221\347\233\222).pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/5-1\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241(\351\273\221\347\233\222).pdf" new file mode 100644 index 0000000..5c4f810 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/5-1\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241(\351\273\221\347\233\222).pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/5-2\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241\357\274\210\351\273\221\347\233\222\357\274\211.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/5-2\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241\357\274\210\351\273\221\347\233\222\357\274\211.pdf" new file mode 100644 index 0000000..a9d35f9 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/5-2\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241\357\274\210\351\273\221\347\233\222\357\274\211.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-1\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241\357\274\210\347\231\275\347\233\222\357\274\211-\351\200\273\350\276\221\350\246\206\347\233\226.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-1\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241\357\274\210\347\231\275\347\233\222\357\274\211-\351\200\273\350\276\221\350\246\206\347\233\226.pdf" new file mode 100644 index 0000000..371af6f Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-1\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241\357\274\210\347\231\275\347\233\222\357\274\211-\351\200\273\350\276\221\350\246\206\347\233\226.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-2\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241\357\274\210\347\231\275\347\233\222\357\274\211-\350\267\257\345\276\204\350\246\206\347\233\226.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-2\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241\357\274\210\347\231\275\347\233\222\357\274\211-\350\267\257\345\276\204\350\246\206\347\233\226.pdf" new file mode 100644 index 0000000..0b17575 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-2\346\265\213\350\257\225\347\224\250\344\276\213\350\256\276\350\256\241\357\274\210\347\231\275\347\233\222\357\274\211-\350\267\257\345\276\204\350\246\206\347\233\226.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-3-dataflow-testing .pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-3-dataflow-testing .pdf" new file mode 100644 index 0000000..e186500 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-3-dataflow-testing .pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-3\346\200\273\347\273\223.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-3\346\200\273\347\273\223.pdf" new file mode 100644 index 0000000..c22aa42 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/6-3\346\200\273\347\273\223.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/7-unittest.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/7-unittest.pdf" new file mode 100644 index 0000000..34af272 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/7-unittest.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-integration-1.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-integration-1.pdf" new file mode 100644 index 0000000..b9c34ff Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-integration-1.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-integrationandsystemtest-3.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-integrationandsystemtest-3.pdf" new file mode 100644 index 0000000..90c294e Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-integrationandsystemtest-3.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-integrationandsystemtest-4.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-integrationandsystemtest-4.pdf" new file mode 100644 index 0000000..3e4f111 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-integrationandsystemtest-4.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-\346\265\213\350\257\225\347\216\257\345\242\203\347\232\204\345\273\272\347\253\213-2.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-\346\265\213\350\257\225\347\216\257\345\242\203\347\232\204\345\273\272\347\253\213-2.pdf" new file mode 100644 index 0000000..63d879b Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/8-\346\265\213\350\257\225\347\216\257\345\242\203\347\232\204\345\273\272\347\253\213-2.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/9-acceptance-test.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/9-acceptance-test.pdf" new file mode 100644 index 0000000..e6412f5 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/9-acceptance-test.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/Web/Jtest_introduction&static_analysis.html" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/Web/Jtest_introduction&static_analysis.html" new file mode 100644 index 0000000..b10c3d5 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/Web/Jtest_introduction&static_analysis.html" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/Web/Jtest_introduction&static_analysis.swf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/Web/Jtest_introduction&static_analysis.swf" new file mode 100644 index 0000000..54dcce6 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/Web/Jtest_introduction&static_analysis.swf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/Web/swf.js" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/Web/swf.js" new file mode 100644 index 0000000..5d7bf06 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/Web/swf.js" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/\346\200\273\345\244\215\344\271\2401.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/\346\200\273\345\244\215\344\271\2401.pdf" new file mode 100644 index 0000000..2962916 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/\346\200\273\345\244\215\344\271\2401.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/\346\200\273\345\244\215\344\271\2402.pdf" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/\346\200\273\345\244\215\344\271\2402.pdf" new file mode 100644 index 0000000..1baa4fb Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\346\235\216\347\272\242\350\200\201\345\270\210\350\257\276\344\273\266 2019-5/\346\200\273\345\244\215\344\271\2402.pdf" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\345\244\215\344\271\240\345\275\222\347\272\263.docx" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\345\244\215\344\271\240\345\275\222\347\272\263.docx" new file mode 100644 index 0000000..215b91e Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\345\244\215\344\271\240\345\275\222\347\272\263.docx" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\345\244\215\344\271\240\347\254\224\350\256\260 v2.docx" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\345\244\215\344\271\240\347\254\224\350\256\260 v2.docx" new file mode 100644 index 0000000..d08b9f4 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\345\244\215\344\271\240\347\254\224\350\256\260 v2.docx" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\345\244\215\344\271\240\347\254\224\350\256\260.docx" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\345\244\215\344\271\240\347\254\224\350\256\260.docx" new file mode 100644 index 0000000..8b6cb0a Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\345\244\215\344\271\240\347\254\224\350\256\260.docx" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\347\232\204\346\234\237\346\234\253\350\200\203\350\257\225\345\215\267\350\256\260\345\275\225 SWH 2019-5/TIM\345\233\276\347\211\20720190601141151.jpg" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\347\232\204\346\234\237\346\234\253\350\200\203\350\257\225\345\215\267\350\256\260\345\275\225 SWH 2019-5/TIM\345\233\276\347\211\20720190601141151.jpg" new file mode 100644 index 0000000..93f8717 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\347\232\204\346\234\237\346\234\253\350\200\203\350\257\225\345\215\267\350\256\260\345\275\225 SWH 2019-5/TIM\345\233\276\347\211\20720190601141151.jpg" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\347\232\204\346\234\237\346\234\253\350\200\203\350\257\225\345\215\267\350\256\260\345\275\225 SWH 2019-5/TIM\345\233\276\347\211\20720190601141201.jpg" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\347\232\204\346\234\237\346\234\253\350\200\203\350\257\225\345\215\267\350\256\260\345\275\225 SWH 2019-5/TIM\345\233\276\347\211\20720190601141201.jpg" new file mode 100644 index 0000000..b401e4d Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\347\232\204\346\234\237\346\234\253\350\200\203\350\257\225\345\215\267\350\256\260\345\275\225 SWH 2019-5/TIM\345\233\276\347\211\20720190601141201.jpg" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\357\274\210\350\257\225\345\215\267A\357\274\211-\347\255\224\346\241\210.doc" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\357\274\210\350\257\225\345\215\267A\357\274\211-\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..8bc0034 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\357\274\210\350\257\225\345\215\267A\357\274\211-\347\255\224\346\241\210.doc" differ diff --git "a/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\357\274\210\350\257\225\345\215\267A\357\274\211.doc" "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\357\274\210\350\257\225\345\215\267A\357\274\211.doc" new file mode 100644 index 0000000..0bfa241 Binary files /dev/null and "b/\350\275\257\344\273\266\346\265\213\350\257\225/\346\265\213\350\257\225\345\244\215\344\271\240\350\265\204\346\226\231/\350\275\257\344\273\266\346\265\213\350\257\225\344\270\216\347\273\264\346\212\244\357\274\210\350\257\225\345\215\267A\357\274\211.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/11\346\234\21020\346\227\245 \344\270\212\345\215\21011\347\202\27107\345\210\206.mp3" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/11\346\234\21020\346\227\245 \344\270\212\345\215\21011\347\202\27107\345\210\206.mp3" new file mode 100644 index 0000000..26fc055 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/11\346\234\21020\346\227\245 \344\270\212\345\215\21011\347\202\27107\345\210\206.mp3" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/11\346\234\21020\346\227\245 \344\270\212\345\215\21011\347\202\27133\345\210\206.mp3" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/11\346\234\21020\346\227\245 \344\270\212\345\215\21011\347\202\27133\345\210\206.mp3" new file mode 100644 index 0000000..db50d42 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/11\346\234\21020\346\227\245 \344\270\212\345\215\21011\347\202\27133\345\210\206.mp3" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/2018-2019\345\255\246\345\271\264\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213\350\200\203\350\257\225\350\200\203\347\202\271.txt" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/2018-2019\345\255\246\345\271\264\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213\350\200\203\350\257\225\350\200\203\347\202\271.txt" new file mode 100644 index 0000000..1b7bee2 --- /dev/null +++ "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/2018-2019\345\255\246\345\271\264\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213\350\200\203\350\257\225\350\200\203\347\202\271.txt" @@ -0,0 +1,11 @@ +2018-2019ѧĿ̿Կ + +ڣ2019-1-2 + +ʽͣCMMI, DMAICȣ +ĿĹ +Դƽ⣨resource leveling +Scrum +PDM +ֵȹʽ +ˮ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/2019\345\271\264\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213\345\244\215\344\271\240\347\254\224\350\256\260.docx" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/2019\345\271\264\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213\345\244\215\344\271\240\347\254\224\350\256\260.docx" new file mode 100644 index 0000000..c8b984f Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/2019\345\271\264\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213\345\244\215\344\271\240\347\254\224\350\256\260.docx" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/2019\345\271\264\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213\347\232\204\350\200\203\350\257\225\351\242\230\345\236\213.txt" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/2019\345\271\264\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213\347\232\204\350\200\203\350\257\225\351\242\230\345\236\213.txt" new file mode 100644 index 0000000..97202c6 --- /dev/null +++ "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/2019\345\271\264\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213\347\232\204\350\200\203\350\257\225\351\242\230\345\236\213.txt" @@ -0,0 +1,10 @@ +2019年软件项目管理和质量工程的考试题型 + + +考试日期:2019-1-2 + +一、(25-30分)选择题或名词解释 +二、(25分左右)简答题 +三、(30分左右)计算题 +四、(15-20分左右)分析题 +可以带计算器 diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT test scopt \350\247\243\347\255\224.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT test scopt \350\247\243\347\255\224.doc" new file mode 100644 index 0000000..28fc0fc Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT test scopt \350\247\243\347\255\224.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT.doc" new file mode 100644 index 0000000..e670429 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\350\257\276\345\220\216\344\271\240\351\242\230\345\217\212\347\255\224\346\241\210.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\350\257\276\345\220\216\344\271\240\351\242\230\345\217\212\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..38053bb Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\350\257\276\345\220\216\344\271\240\351\242\230\345\217\212\347\255\224\346\241\210.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\351\241\271\347\233\256\347\256\241\347\220\206\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\230\345\217\212\347\255\224\346\241\210\346\225\264\347\220\206.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\351\241\271\347\233\256\347\256\241\347\220\206\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\230\345\217\212\347\255\224\346\241\210\346\225\264\347\220\206.doc" new file mode 100644 index 0000000..15b23bf Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\351\241\271\347\233\256\347\256\241\347\220\206\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\230\345\217\212\347\255\224\346\241\210\346\225\264\347\220\206.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\351\241\271\347\233\256\347\256\241\347\220\206\350\257\276\345\220\216\344\275\234\344\270\232_\345\217\202\350\200\203\347\255\224\346\241\210.pdf" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\351\241\271\347\233\256\347\256\241\347\220\206\350\257\276\345\220\216\344\275\234\344\270\232_\345\217\202\350\200\203\347\255\224\346\241\210.pdf" new file mode 100644 index 0000000..94567ad Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\351\241\271\347\233\256\347\256\241\347\220\206\350\257\276\345\220\216\344\275\234\344\270\232_\345\217\202\350\200\203\347\255\224\346\241\210.pdf" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\351\241\271\347\233\256\347\256\241\347\220\206\350\257\276\345\220\216\351\200\211\346\213\251\351\242\230\345\217\212\347\255\224\346\241\210.docx" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\351\241\271\347\233\256\347\256\241\347\220\206\350\257\276\345\220\216\351\200\211\346\213\251\351\242\230\345\217\212\347\255\224\346\241\210.docx" new file mode 100644 index 0000000..c47a044 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/IT\351\241\271\347\233\256\347\256\241\347\220\206\350\257\276\345\220\216\351\200\211\346\213\251\351\242\230\345\217\212\347\255\224\346\241\210.docx" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/test scope-2013\347\240\224\347\251\266\347\224\237.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/test scope-2013\347\240\224\347\251\266\347\224\237.doc" new file mode 100644 index 0000000..95eca57 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/test scope-2013\347\240\224\347\251\266\347\224\237.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/test scope.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/test scope.doc" new file mode 100644 index 0000000..f4582f5 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/test scope.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/\351\241\271\347\233\256\347\256\241\347\220\206\346\240\267\351\242\230A.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/\351\241\271\347\233\256\347\256\241\347\220\206\346\240\267\351\242\230A.doc" new file mode 100644 index 0000000..704b4a0 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT/\351\241\271\347\233\256\347\256\241\347\220\206\346\240\267\351\242\230A.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT\351\241\271\347\233\256\347\256\241\347\220\206.pdf" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT\351\241\271\347\233\256\347\256\241\347\220\206.pdf" new file mode 100644 index 0000000..a8d398f Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT\351\241\271\347\233\256\347\256\241\347\220\206.pdf" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\357\274\210\345\233\264\347\273\225\350\257\276\344\273\266\357\274\211.docx" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\357\274\210\345\233\264\347\273\225\350\257\276\344\273\266\357\274\211.docx" new file mode 100644 index 0000000..023b8d0 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT\351\241\271\347\233\256\347\256\241\347\220\206\345\244\215\344\271\240\357\274\210\345\233\264\347\273\225\350\257\276\344\273\266\357\274\211.docx" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT\351\241\271\347\233\256\347\256\241\347\220\206\351\242\230\345\272\223.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT\351\241\271\347\233\256\347\256\241\347\220\206\351\242\230\345\272\223.doc" new file mode 100644 index 0000000..5e1364a Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/IT\351\241\271\347\233\256\347\256\241\347\220\206\351\242\230\345\272\223.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211-done by ZKM.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211-done by ZKM.doc" new file mode 100644 index 0000000..5a3a284 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211-done by ZKM.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211-\345\220\253\351\200\211\346\213\251\351\242\230\347\255\224\346\241\210\345\222\214\350\247\243\351\207\212.docx" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211-\345\220\253\351\200\211\346\213\251\351\242\230\347\255\224\346\241\210\345\222\214\350\247\243\351\207\212.docx" new file mode 100644 index 0000000..3692bb3 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211-\345\220\253\351\200\211\346\213\251\351\242\230\347\255\224\346\241\210\345\222\214\350\247\243\351\207\212.docx" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211\351\231\204\347\255\224\346\241\210 .doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211\351\231\204\347\255\224\346\241\210 .doc" new file mode 100644 index 0000000..74bdf8e Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211\351\231\204\347\255\224\346\241\210 .doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211\351\231\204\347\255\224\346\241\210.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211\351\231\204\347\255\224\346\241\210.doc" new file mode 100644 index 0000000..f86d94b Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/MSE2008\344\270\212\345\255\246\346\234\237\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\351\242\230\357\274\210A\345\215\267\357\274\211\351\231\204\347\255\224\346\241\210.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/QQ\345\233\276\347\211\20720160106232455.jpg" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/QQ\345\233\276\347\211\20720160106232455.jpg" new file mode 100644 index 0000000..de2f010 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/QQ\345\233\276\347\211\20720160106232455.jpg" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/it\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\350\214\203\345\233\2642015\357\274\210\351\231\210\346\263\275\346\263\240\350\200\201\345\270\210\347\217\255\347\272\247\347\232\204\345\244\247\347\272\262\357\274\211.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/it\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\350\214\203\345\233\2642015\357\274\210\351\231\210\346\263\275\346\263\240\350\200\201\345\270\210\347\217\255\347\272\247\347\232\204\345\244\247\347\272\262\357\274\211.doc" new file mode 100644 index 0000000..e69e002 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/it\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\350\257\225\350\214\203\345\233\2642015\357\274\210\351\231\210\346\263\275\346\263\240\350\200\201\345\270\210\347\217\255\347\272\247\347\232\204\345\244\247\347\272\262\357\274\211.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/it\351\241\271\347\233\256\347\256\241\347\220\206\351\207\215\347\202\271.pdf" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/it\351\241\271\347\233\256\347\256\241\347\220\206\351\207\215\347\202\271.pdf" new file mode 100644 index 0000000..47e9d90 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/it\351\241\271\347\233\256\347\256\241\347\220\206\351\207\215\347\202\271.pdf" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/readme.md" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/readme.md" new file mode 100644 index 0000000..f6d1076 --- /dev/null +++ "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/readme.md" @@ -0,0 +1,6 @@ +# ˵ + +ſпԺҵ2016Ľ̲ǿʩ߶ġITĿ +ע˽̲⻹й̵ݡ + +2019-1-2 diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/test scope-2015.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/test scope-2015.doc" new file mode 100644 index 0000000..08203ee Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/test scope-2015.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/test scope\344\270\255\350\213\261\346\226\207\345\205\250\350\247\2432.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/test scope\344\270\255\350\213\261\346\226\207\345\205\250\350\247\2432.doc" new file mode 100644 index 0000000..a35a86a Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/test scope\344\270\255\350\213\261\346\226\207\345\205\250\350\247\2432.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101230.jpg" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101230.jpg" new file mode 100644 index 0000000..ca86e57 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101230.jpg" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101237.jpg" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101237.jpg" new file mode 100644 index 0000000..82e3cae Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101237.jpg" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101300.jpg" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101300.jpg" new file mode 100644 index 0000000..ee2c8e5 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101300.jpg" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101308.jpg" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101308.jpg" new file mode 100644 index 0000000..141685c Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101308.jpg" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101314.jpg" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101314.jpg" new file mode 100644 index 0000000..5c79043 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101314.jpg" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101345.jpg" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101345.jpg" new file mode 100644 index 0000000..5b95d31 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IMG_20160107_101345.jpg" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IT PM 1.2\347\217\255\345\244\215\344\271\240\351\207\215\347\202\271\345\206\205\345\256\271.docx" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IT PM 1.2\347\217\255\345\244\215\344\271\240\351\207\215\347\202\271\345\206\205\345\256\271.docx" new file mode 100644 index 0000000..2d941f5 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IT PM 1.2\347\217\255\345\244\215\344\271\240\351\207\215\347\202\271\345\206\205\345\256\271.docx" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IT\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\347\202\271 \350\261\252\345\215\216\347\211\210\346\224\271 2013.1.8.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IT\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\347\202\271 \350\261\252\345\215\216\347\211\210\346\224\271 2013.1.8.doc" new file mode 100644 index 0000000..2fb7ac1 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IT\351\241\271\347\233\256\347\256\241\347\220\206\350\200\203\347\202\271 \350\261\252\345\215\216\347\211\210\346\224\271 2013.1.8.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IT\351\241\271\347\233\256\347\256\241\347\220\206\351\242\230\345\272\223.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IT\351\241\271\347\233\256\347\256\241\347\220\206\351\242\230\345\272\223.doc" new file mode 100644 index 0000000..5e1364a Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/IT\351\241\271\347\233\256\347\256\241\347\220\206\351\242\230\345\272\223.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/test scope\350\247\243\347\255\224.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/test scope\350\247\243\347\255\224.doc" new file mode 100644 index 0000000..3fb2f28 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/test scope\350\247\243\347\255\224.doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/\346\214\250\350\270\242\351\241\271\347\233\256\347\256\241\347\220\206\346\225\264\347\220\206(by PTkin)_V1.0__20160108.docx" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/\346\214\250\350\270\242\351\241\271\347\233\256\347\256\241\347\220\206\346\225\264\347\220\206(by PTkin)_V1.0__20160108.docx" new file mode 100644 index 0000000..eee6e52 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\344\271\213\345\211\215\347\232\204\346\217\220\347\272\262/\346\214\250\350\270\242\351\241\271\347\233\256\347\256\241\347\220\206\346\225\264\347\220\206(by PTkin)_V1.0__20160108.docx" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\345\244\215\344\271\240\351\207\215\347\202\271\345\206\205\345\256\271.docx" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\345\244\215\344\271\240\351\207\215\347\202\271\345\206\205\345\256\271.docx" new file mode 100644 index 0000000..2d941f5 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\345\244\215\344\271\240\351\207\215\347\202\271\345\206\205\345\256\271.docx" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\346\217\220\347\272\262\344\271\213\347\261\273\347\232\204\357\274\237.docx" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\346\217\220\347\272\262\344\271\213\347\261\273\347\232\204\357\274\237.docx" new file mode 100644 index 0000000..f1f5643 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\346\217\220\347\272\262\344\271\213\347\261\273\347\232\204\357\274\237.docx" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\351\202\271\347\233\233\347\206\240\345\244\215\344\271\240\346\217\220\347\272\262.docx" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\351\202\271\347\233\233\347\206\240\345\244\215\344\271\240\346\217\220\347\272\262.docx" new file mode 100644 index 0000000..9623e79 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\351\202\271\347\233\233\347\206\240\345\244\215\344\271\240\346\217\220\347\272\262.docx" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\351\241\271\347\233\256\347\256\241\347\220\206\346\240\267\351\242\230A .doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\351\241\271\347\233\256\347\256\241\347\220\206\346\240\267\351\242\230A .doc" new file mode 100644 index 0000000..67708ac Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\351\241\271\347\233\256\347\256\241\347\220\206\346\240\267\351\242\230A .doc" differ diff --git "a/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\351\241\271\347\233\256\347\256\241\347\220\206\346\240\267\351\242\230A.doc" "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\351\241\271\347\233\256\347\256\241\347\220\206\346\240\267\351\242\230A.doc" new file mode 100644 index 0000000..704b4a0 Binary files /dev/null and "b/\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206\345\222\214\350\264\250\351\207\217\345\267\245\347\250\213/\351\241\271\347\233\256\347\256\241\347\220\206\346\240\267\351\242\230A.doc" differ