IO模型戏解

合集下载

SCP1-999

SCP1-999

SCP列表(收容未失效)001到099▪SCP-001 - 等待解密[已锁]▪SCP-002 - “生活”室▪SCP-003 - 生物母版▪SCP-004 - 穿越锈钥之门▪SCP-005 - 万能钥匙▪SCP-006 - 不老泉▪SCP-007 - 腹中星球▪SCP-008 - 丧尸病毒▪SCP-009 - 红冰▪SCP-010 - 遥控项圈▪SCP-011 - 有感知的内战纪念雕像▪SCP-012 - 未完乐章▪SCP-013 - 蓝色女士香烟▪SCP-014 - 混凝土人▪SCP-015 - 噩梦管道▪SCP-016 - 智能微生物▪SCP-017 - 影魔▪SCP-018 - 弹力球▪SCP-019 - 兽之瓶▪SCP-020 - 隐形霉菌▪SCP-021 - 栖肤龙纹▪SCP-022 - 停尸房▪SCP-023 - 黑煞星▪SCP-024 - 死亡游戏秀▪SCP-025 - 旧衣橱▪SCP-026 - 课后禁闭▪SCP-027 - 豸神▪SCP-028 - 知识▪SCP-029 - 暗影之女▪SCP-030 - 人造人▪SCP-031 - 爱为何物?▪SCP-032 - 弟兄们的新娘▪SCP-033 - 丢失的数字▪SCP-034 - 黑曜石仪式匕首▪SCP-035 - 占据面具▪SCP-036 - 雅兹迪信徒的重生朝圣之旅▪SCP-037 - 白矮星▪SCP-038 - 万象树▪SCP-039 - 长鼻工程师▪SCP-040 - 进化之子▪SCP-041 - 思维广播病人▪SCP-042 - 昔日天马▪SCP-043 - 披头不四▪SCP-044 - 二战分子裂变炮▪SCP-045 - 大气转换器▪SCP-046 - “掠食性”冬青树丛▪SCP-047 - 微生物诱变剂▪SCP-048 - 被诅咒的SCP号码▪SCP-049 - 疫医▪SCP-050 - 致至智▪SCP-051 - 日本妇产人偶▪SCP-052 - 时光列车▪SCP-053 - 小姑娘▪SCP-054 - 水妖精▪SCP-055 - [未知]▪SCP-056 - 美丽的人▪SCP-057 - 当日现磨▪SCP-058 - 黑暗之心▪SCP-059 - 放射性矿物▪SCP-060 - 狱炎凶骨▪SCP-061 - 魔音贯脑▪SCP-062 - “量子”计算机▪SCP-063 - “世界上最好的牙刷”▪SCP-064 - 伪冯诺依曼建筑▪SCP-065 - 生物畸变场▪SCP-066 - 埃里克的玩具▪SCP-067 - 艺术家之笔▪SCP-068 - 金属丝小人▪SCP-069 - 第二次机会▪SCP-070 - 钢翼▪SCP-071 - 退化性可变形实体▪SCP-072 - 床脚▪SCP-073 - “该隐”▪SCP-074 - 量子土鳖▪SCP-075 - 腐蚀性蜗牛▪SCP-076 - “亚伯”▪SCP-077 - 腐颅▪SCP-078 - 罪恶感▪SCP-079 - 旧AI▪SCP-080 - “鬼”▪SCP-081 - 人体自燃病毒▪SCP-082 - 食人者“费尔南德”▪SCP-083 - 废弃怪屋▪SCP-084 - 静滞塔▪SCP-085 - 画中人“Cassy”▪SCP-086 - Dr. [被编辑]办公室▪SCP-087 - 楼梯间▪SCP-088 - 蜥蜴王▪SCP-089 - 托非特▪SCP-090 - 末日魔方▪SCP-091 - 怀旧成愁▪SCP-092 - “《第五维度》精选集”▪SCP-093 - 红海物件▪SCP-094 - 微型视界▪SCP-095 - Ronnie Ray-Gun的原子大冒险▪SCP-096 - “羞涩”的人▪SCP-097 - 老集市▪SCP-098 - 疡蟹▪SCP-099 - 肖像100到199▪SCP-100 - “Jamaican Joe的废品嘉年华”▪SCP-101 - 大嘴袋▪SCP-102 - Marshall, Carter和Dark有限公司的财产▪SCP-103 - 永不饥饿之人▪SCP-104 - 孤单球▪SCP-105 - “鸢娓”▪SCP-106 - 恐怖老人▪SCP-107 - 空龟壳▪SCP-108 - 异次元鼻腔▪SCP-109 - 无限水壶▪SCP-110 - 地下都市▪SCP-111 - 龙蜗牛™▪SCP-112 - 变量过山车▪SCP-113 - 性转换器▪SCP-114 - 带来冲突者▪SCP-115 - 迷你垃圾车▪SCP-116 - 脆弱男孩▪SCP-117 - 万能瑞士军刀▪SCP-118 - 核爆原生生物▪SCP-119 - 时间微波炉▪SCP-120 - 传送池▪SCP-121 - 混凝土摇篮▪SCP-122 - 再无怪物▪SCP-123 - 微型黑洞▪SCP-124 - 肥沃土壤▪SCP-125 - 传染性反射▪SCP-126 - 看不见的朋友▪SCP-127 - 活体枪▪SCP-128 - 动能效应实体▪SCP-129 - 扩张型真菌感染▪SCP-130 - 邮局▪SCP-131 - “眼豆”▪SCP-132 - 破碎沙漠▪SCP-133 - 便携式洞穴▪SCP-134 - 星眼孩童▪SCP-135 - 癌魔▪SCP-136 - 裸体人偶▪SCP-137 - 真实玩具▪SCP-138 - 永生者▪SCP-139 - 疑似白魔的头骨▪SCP-140 - 未完编年史▪SCP-141 - 诅咒法典▪SCP-142 - 独臂强盗▪SCP-143 - 刃木之森▪SCP-144 - 西藏通天绳▪SCP-145 - 噬人手机▪SCP-146 - 忏罪铜首▪SCP-147 - 落伍的电视▪SCP-148 - 心灵遮断合金▪SCP-149 - 血蝇▪SCP-150 - 忒修斯之船▪SCP-151 - 深海绘▪SCP-152 - 末日之书▪SCP-153 - 下水道蠕虫▪SCP-154 - 进攻性手镯▪SCP-155 - 无限速电脑▪SCP-156 - 重生石榴▪SCP-157 - 幻象猎食者▪SCP-158 - 汲魂者▪SCP-159 - 无可撼动之锁▪SCP-160 - 掠食无人机▪SCP-161 - 毁灭风车!▪SCP-162 - 锋锐球体▪SCP-163 - 古遇难者▪SCP-164 - 乌贼肉瘤▪SCP-165 - 贪婪蠕沙▪SCP-166 - 魅魔少女▪SCP-167 - 无尽迷宫▪SCP-168 - 有情计算器▪SCP-169 - 利维坦▪SCP-170 - 一管强力胶▪SCP-171 - 集合脑泡沫▪SCP-172 - 齿轮人▪SCP-173 - 雕像-最初之作▪SCP-174 - 腹语玩偶▪SCP-175 - 宝藏图▪SCP-176 - 可见时间循环▪SCP-177 - 弈▪SCP-178 - “3D”眼镜▪SCP-179 - 星海瞭望▪SCP-180 - 身份窃取帽▪SCP-181 - “幸运儿”▪SCP-182 - “骑士”▪SCP-183 - “织音者”▪SCP-184 - 建筑师▪SCP-185 - 跨时空无线电▪SCP-186 - 为了终结一切战争▪SCP-187 - 未来视▪SCP-188 - 匠人▪SCP-189 - 拟发寄生者▪SCP-190 - 奖励玩具盒▪SCP-191 - 机械女孩▪SCP-192 - 完美X光机▪SCP-193 - 纸巾盒蜗牛▪SCP-194 - 渡鸦之主▪SCP-195 - “药用威士忌”▪SCP-196 - 时间悖论▪SCP-197 - 温室▪SCP-198 - 一杯Joe▪SCP-199 - 蕨类间谍200到299▪SCP-200 - 人茧▪SCP-201 - 空之境界▪SCP-202 - 倒带人▪SCP-203 - 受拷打的钢铁灵魂▪SCP-204 - 守护者▪SCP-205 - 幽影之灯▪SCP-206 - 火星探测车▪SCP-207 - 一箱可乐▪SCP-208 - “贝斯”▪SCP-209 - 虐待狂的酒杯▪SCP-210 - 浸没之屋▪SCP-211 - 纸屋▪SCP-212 - 改造者▪SCP-213 - 反物质寄生体▪SCP-214 - 异血病毒▪SCP-215 - 拟人眼镜▪SCP-216 - 异次元保险箱▪SCP-217 - 机械化病毒▪SCP-218 - 七鳃鳗群集体▪SCP-219 - 共振引擎▪SCP-220 - 二人相伴▪SCP-221 - 强迫镊子▪SCP-222 - 克隆棺材▪SCP-223 - 一本相册▪SCP-224 - 老爷钟▪SCP-225 - 一往无前与不可撼动▪SCP-226 - 恐惧拼图▪SCP-227 - 完全的安蒂基西拉机械▪SCP-228 - 精神测试工具图▪SCP-229 - 杂线▪SCP-230 - 世界上最愉悦的人▪SCP-231 - 特殊个人需求▪SCP-232 - Jack Proton的原子毁灭者▪SCP-233 - 二十三面体▪SCP-234 - 超维度鱼▪SCP-235 - 留声机唱片▪SCP-236 - 模仿师“小蟹钳”▪SCP-237 - 自制人▪SCP-238 - 综合建筑▪SCP-239 - 巫魔幼女▪SCP-240 - 呼气动力飞行器▪SCP-241 - 美味家常食谱▪SCP-242 - “自净”池▪SCP-243 - 3D动画▪SCP-244 - 冰雾罐▪SCP-245 - SCP-RPG▪SCP-246 - 预言放映机▪SCP-247 - 无害小猫▪SCP-248 - 110%▪SCP-249 - 随机门▪SCP-250 - 基本是条异龙▪SCP-251 - 惑人雪花球▪SCP-252 - 特异大赤鱿▪SCP-253 - 癌疫▪SCP-254 - 每月最佳雇员▪SCP-255 - "十一"型紊乱▪SCP-256 - 打字机中的囚徒▪SCP-257 - William Woodsworth教授的奇珍收藏品▪SCP-258 - 哭泣的青蛙▪SCP-259 - 维森克拉斯螺旋▪SCP-260 - 追踪石▪SCP-261 - 次元泛用售货机▪SCP-262 - 多臂大衣▪SCP-263 - “灰烬与富翁”▪SCP-264 - 白骨神殿▪SCP-265 - 黑伏尔加▪SCP-266 - 鬼火小精灵▪SCP-267 - 食瘤动物▪SCP-268 - 疏忽帽▪SCP-269 - 透析手镯▪SCP-270 - 与世隔绝的电话▪SCP-271 - 雕文圆盘▪SCP-272 - 旧铁钉▪SCP-273 - 人形凤凰▪SCP-274 - 涂鸦▪SCP-275 - 铁皮▪SCP-276 - 时光帆船▪SCP-277 - 粉笔画王国▪SCP-278 - 巨型机械蜘蛛▪SCP-279 - 漫步者▪SCP-280 - 暗影中的眼睛▪SCP-281 - 贪睡闹钟▪SCP-282 - 仪式唤魔棒▪SCP-283 - 掉向侧面的石头▪SCP-284 - 双子▪SCP-285 - 黑客工作▪SCP-286 - 兄弟对局▪SCP-287 - Clark第三喜爱的剑▪SCP-288 - Stepford婚戒▪SCP-289 - 惯性增强器▪SCP-290 - 毕加索机器▪SCP-291 - 拆装器/重装器▪SCP-292 - 既视感煮蛋计时器▪SCP-293 - 迷恋▪SCP-294 - 咖啡机▪SCP-295 - 引焰虫▪SCP-296 - 武装收容区域-03▪SCP-297 - “快乐棒”▪SCP-298 - 鲜血管风琴▪SCP-299 - 传染树300到399▪SCP-300 - “瓶中世界”▪SCP-301 - 传送点▪SCP-302 - 蚂蚁雕像▪SCP-303 - 门后男▪SCP-304 - 某个信号▪SCP-305 - 耳语者▪SCP-306 - 蛙▪SCP-307 - 肉食性常春藤▪SCP-308 - 阿兹特克埋葬石棺▪SCP-309 - 毛绒玩具▪SCP-310 - 恒燃之火▪SCP-311 - 恶魔手套▪SCP-312 - 空中水母▪SCP-313 - 强力干手器▪SCP-314 - 动感尖锋▪SCP-315 - 视频男▪SCP-316 - 夺色之光▪SCP-317 - 白垩纪物理学家▪SCP-318 - 灵魂印刷▪SCP-319 - 一个异常设备▪SCP-320 - 希格斯场加速操纵器▪SCP-321 - 人之子▪SCP-322 - “种个你自己的城堡”套装▪SCP-323 - 温迪戈的头骨▪SCP-324 - 悼词之果▪SCP-325 - 去污剂▪SCP-326 - 中国农民▪SCP-327 - 美人鱼▪SCP-328 - 外星人碟片▪SCP-329 - 肿瘤花园▪SCP-330 - 只能拿两个▪SCP-331 - “Tumbles”▪SCP-332 - 1976 Lonwood教会高中游行乐团▪SCP-333 - 交响之城▪SCP-334 - 星体狐狸▪SCP-335 - 一百五十张3.5英寸软盘▪SCP-336 - “莉莉丝”▪SCP-337 - 毛团▪SCP-338 - 便携收音机▪SCP-339 - 慎言谨行▪SCP-340 - 病毒置换气膜▪SCP-341 - 太阳系模型系列▪SCP-342 - 单程票▪SCP-343 - “神”▪SCP-344 - 薛定谔的开罐器▪SCP-345 - 创星石方▪SCP-346 - 小翼龙“Pterry”▪SCP-347 - 隐形女▪SCP-348 - 来自父亲的礼物▪SCP-349 - 贤者之墓碑与不朽者的墓园▪SCP-350 - 牢不可破之契约▪SCP-351 - 只读记忆▪SCP-352 - “雅加婆婆”▪SCP-353 - “病媒”▪SCP-354 - 血池▪SCP-355 - 锐草▪SCP-356 - 不打自招▪SCP-357 - 饥饿粘土▪SCP-358 - 一所“沙漠化”医院▪SCP-359 - 鹰▪SCP-360 - 仪式圣化▪SCP-361 - 铜之肝脏▪SCP-362 - 闹鬼T恤▪SCP-363 - 非蜈蚣▪SCP-364 - Io传送点▪SCP-365 - 泳池浮条▪SCP-366 - 逐星之虫▪SCP-367 - 小狗狗▪SCP-368 - 纸鹤▪SCP-369 - 活体迁徙道路工程▪SCP-370 - 一把钥匙▪SCP-371 - 巨噬病毒▪SCP-372 - 视外幻兽▪SCP-373 - 唤灵唱机▪SCP-374 - 神思断头台▪SCP-375 - 永远的A级贷款▪SCP-376 - 信号灯树▪SCP-377 - 绝对准确幸运饼干▪SCP-378 - 食脑虫▪SCP-379 - 机械信息素▪SCP-380 - 生物联网器▪SCP-381 - 光煌复调曲▪SCP-382 - 闹鬼婴儿车▪SCP-383 - 多用流感▪SCP-384 - 让她进来▪SCP-385 - 个人反重力场产生器▪SCP-386 - 不朽真菌▪SCP-387 - 活体乐高▪SCP-388 - 无限飞盘▪SCP-389 - 瓶中秘信▪SCP-390 - 远古军用激光▪SCP-391 - 招财鸮▪SCP-392 - 旧时王谢堂前桃,植入Site-103▪SCP-393 - 记忆本▪SCP-394 - 耳烛▪SCP-395 - 瓶裝婴儿▪SCP-396 - 突然来了个椅子▪SCP-397 - 一只人科动物▪SCP-398 - 会堂▪SCP-399 - 原子控制戒400到499▪SCP-400 - 美丽婴孩▪SCP-401 - 手掌树▪SCP-402 - 黑曜石吸收器▪SCP-403 - 递增打火机▪SCP-404 - 记忆丢失,记忆找回▪SCP-405 - 传心术病毒▪SCP-406 - 梦游者隧道▪SCP-407 - 创始之歌▪SCP-408 - 幻像蝶▪SCP-409 - 晶蔓▪SCP-410 - 文编甲虫▪SCP-411 - 过去预知者▪SCP-412 - 诱变镜▪SCP-413 - 无尽车库▪SCP-414 - 自私不再▪SCP-415 - 被收割者▪SCP-416 - 无尽之森▪SCP-417 - 瘟疫树▪SCP-418 - 人体拼图▪SCP-419 - 世界之窗▪SCP-420 - 侵蚀性皮肤病▪SCP-421 - 浮木群▪SCP-422 - 缝合兽▪SCP-423 - 自插入角色▪SCP-424 - 纳米生物▪SCP-425 - 无限广播▪SCP-426 - 我是一个烤面包机▪SCP-427 - 洛夫克拉夫特吊坠▪SCP-428 - 群体▪SCP-429 - 发条传送器▪SCP-430 - 对平民的惩罚▪SCP-431 - Gideon博士▪SCP-432 - 柜子迷宫▪SCP-433 - 仪式▪SCP-434 - 自我会议▪SCP-435 - “诸暗之君”▪SCP-436 - 误差之坠▪SCP-437 - 1991之夏▪SCP-438 - 成瘾性间谍用拘束服▪SCP-439 - 寄骨蜂群▪SCP-440 - 沙基生态圈▪SCP-441 - Jacob公羊▪SCP-442 - 准点怀表▪SCP-443 - 思想流蜡笔▪SCP-444 - 和谐社会用语▪SCP-445 - "Dr.Wondertainment的神奇折纸"▪SCP-446 - 人类服装模特▪SCP-447 - 绿色黏液球▪SCP-448 - 惊吓盒▪SCP-449 - 腸埃▪SCP-450 - 被遗弃的联邦监狱▪SCP-451 - 孤独者▪SCP-452 - 捕梦蜘蛛▪SCP-453 - 演剧夜总会▪SCP-454 - 漫画书▪SCP-455 - 货船▪SCP-456 - 催眠壁虱▪SCP-457 - 炎魔▪SCP-458 - 无限批萨盒▪SCP-459 - 星际恒温器▪SCP-460 - 唤灵雨云▪SCP-461 - 幽灵电视▪SCP-462 - 逃逸汽车▪SCP-463 - 弯人之勺▪SCP-464 - 人类铸造厂▪SCP-465 - 派对盒▪SCP-466 - 移动血管▪SCP-467 - 自白电话亭▪SCP-468 - 算盘▪SCP-469 - 万翼天使▪SCP-470 - 弃地之枢▪SCP-471 - 卫星▪SCP-472 - 血石▪SCP-473 - 宿捭神▪SCP-474 - ℞FM▪SCP-475 - 教皇肥皂▪SCP-476 - 通往未知的地图▪SCP-477 - 化石海▪SCP-478 - 牙仙▪SCP-479 - Site 14,D级人员居住区四号走廊▪SCP-480 - 梦魇循环▪SCP-481 - 疤痕▪SCP-482 - 心理变异紧身衣▪SCP-483 - 抗衰老安慰剂▪SCP-484 - 窃忆毒药▪SCP-485 - 死亡圆珠笔▪SCP-486 - 夸特里姑之皮▪SCP-487 - 不可能房屋▪SCP-488 - 陨石吸引者▪SCP-489 - 灭虫队▪SCP-490 - 惊奇口味冰淇淋车▪SCP-491 - 残骸灯塔▪SCP-492 - 活生生的布制傀儡▪SCP-493 - 复制者▪SCP-494 - 物质置换手套▪SCP-495 - 造物机械▪SCP-496 - 沉没的遗迹▪SCP-497 - 贝壳▪SCP-498 - 11分钟睡眠▪SCP-499 - 太阳老人500到599▪SCP-500 - 万能药▪SCP-501 - 一美元纸钞▪SCP-502 - 器官替代品▪SCP-503 - 世界上最幸运的人▪SCP-504 - 致命一击番茄▪SCP-505 - 墨染▪SCP-506 - 速成植物▪SCP-507 - 不情愿的位面跳跃者▪SCP-508 - 随机点图▪SCP-509 - 人彘▪SCP-510 - 枕瘟▪SCP-511 - 地下室猫▪SCP-512 - 反重力雨伞▪SCP-513 - 牛铃▪SCP-514 - 一群鸽子▪SCP-515 - 沉眠者▪SCP-516 - 智能坦克▪SCP-517 - 自动预言机▪SCP-518 - 阿萨·拉特利奇的变化墓▪SCP-519 - 放肆电话亭▪SCP-520 - 联动开关▪SCP-521 - 郵筒▪SCP-522 - 吸血毯▪SCP-523 - 百无一用▪SCP-524 - 饕餮兔沃尔特▪SCP-525 - 眼蛛▪SCP-526 - 瓦尔哈拉之门▪SCP-527 - 魚先生▪SCP-528 - 巫毒诅咒▪SCP-529 - 半猫Josie▪SCP-530 - 百变狗carl▪SCP-531 - 猫眼守卫▪SCP-532 - 霜菌▪SCP-533 - 蛇形项链▪SCP-534 - 谬血▪SCP-535 - “信息交流”烧杯▪SCP-536 - 物理法则实验室▪SCP-537 - 歌唱留声机▪SCP-538 - 暗影蜘蛛▪SCP-539 - 完美扰乱碟▪SCP-540 - 植物炸弹▪SCP-541 - 活著的胸腔系统▪SCP-542 - 外科医学先生▪SCP-543 - 杂音▪SCP-544 - 新声▪SCP-545 - 生命之水/Totenkinder ▪SCP-546 - 认知崩坏笔记本▪SCP-547 - 笛卡尔名片▪SCP-548 - 冰蛛▪SCP-549 - 迷你熊▪SCP-550 - 食尸鬼▪SCP-551 - 不可能拼图▪SCP-552 - 领先人▪SCP-553 - 结晶蝶▪SCP-554 - 完美谋杀▪SCP-555 - 尸体磁铁▪SCP-556 - 涂鸦飞机▪SCP-557 - 远古收容设施▪SCP-558 - 奇怪的隐形眼镜▪SCP-559 - 生日时间!▪SCP-560 - 数据微生物▪SCP-561 - 隔代遗传区▪SCP-562 - 狂欢之诱▪SCP-563 - 中国恐龙农场▪SCP-564 - 未完成原始生化人▪SCP-565 - Ed的脑袋▪SCP-566 - 每日一词▪SCP-567 - 地下牢▪SCP-568 - 支离腰带▪SCP-569 - 浮首▪SCP-570 - 木偶秀手套!!!▪SCP-571 - 感染性自我复制图案▪SCP-572 - 有坚不摧之刃▪SCP-573 - 诱拐魔笛▪SCP-574 - 落地屋▪SCP-575 - 掠食性黑暗▪SCP-576 - 祝好梦▪SCP-577 - 月光下独自一人▪SCP-578 - 血珀▪SCP-579 - [数据删除]▪SCP-580 - 秦皇五天座▪SCP-581 - 骑手之魂▪SCP-582 - 实体化故事集▪SCP-583 - 死亡录像带▪SCP-584 - 毛手毛脚▪SCP-585 - 转笔刀▪SCP-586 - 无可写就之物▪SCP-587 - 模型世界▪SCP-588 - 饕食硬币▪SCP-589 - 痴迷的代价▪SCP-590 - 与汝共苦▪SCP-591 - Dr. Wondertainment的红白机▪SCP-592 - 非正确历史书▪SCP-593 - 传染性数学盲▪SCP-594 - 电气绵羊▪SCP-595 - 传送驱逐舰▪SCP-596 - 再生诅咒雕像▪SCP-597 - 万物之母▪SCP-598 - 有知颜料▪SCP-599 - 未知之城600到699▪SCP-600 - “那家伙”▪SCP-601 - 索福克勒斯的合唱队▪SCP-602 - SoHo雕塑家▪SCP-603 - 自我复制程序▪SCP-604 - 堕落仪祭;饕人狂宴▪SCP-605 - 活体雷云▪SCP-606 - 「老师」▪SCP-607 - 道林·灰猫▪SCP-608 - 分形装饰箔▪SCP-609 - Wondertainment博士的存在论6号球®▪SCP-610 - 憎恨之血肉▪SCP-611 - 寄生牙签▪SCP-612 - 侵略性电缆▪SCP-613 - “神奇面包!”▪SCP-614 - IP地址57.32.███.███▪SCP-615 - 树团▪SCP-616 - 异界舱门▪SCP-617 - 宠物石▪SCP-618 - 迷雾雪茄▪SCP-619 - 幸运牛仔裤▪SCP-620 - 持续滑动的时间▪SCP-621 - 着迷郁金香▪SCP-622 - 荒漠一罐▪SCP-623 - 绝妙奇幻屋▪SCP-624 - "个人" 音乐播放机▪SCP-625 - 脚踝噬咬者▪SCP-626 - 视觉变更雕塑▪SCP-627 - 永动圈▪SCP-628 - 长笛杂树林▪SCP-629 - 黄铜先生▪SCP-630 - 黑色冰川▪SCP-631 - 惧黑夜行者▪SCP-632 - 侵入性蜘蛛形思维▪SCP-633 - 住在电脑里的Ghost▪SCP-634 - 健忘金鱼▪SCP-635 - 中世纪引导程序书▪SCP-636 - 通向未知的电梯▪SCP-637 - 传染性猫咪▪SCP-638 - 狂吼之人▪SCP-639 - 变形男▪SCP-640 - 耀光▪SCP-641 - 安撫娃娃▪SCP-642 - 温泉▪SCP-643 - 美味巧克力▪SCP-644 - 热先生▪SCP-645 - 真理之口▪SCP-646 - 育母蠕虫▪SCP-647 - 饥饿纸箱▪SCP-648 - 迷宫▪SCP-649 - 唤冬火柴盒▪SCP-650 - 吓人雕像▪SCP-651 - 组织溶解病毒▪SCP-652 - 天气预报狗▪SCP-653 - 飞去来器▪SCP-654 - 雷鸣号角▪SCP-655 - 异种▪SCP-656 - 家庭版本▪SCP-657 - 报亡师▪SCP-658 - "机器蝇"▪SCP-659 - 鸟类集体智慧▪SCP-660 - 陶制子宫▪SCP-661 - 铁齿铜牙推销员▪SCP-662 - 管家铃▪SCP-663 - 活體净水机▪SCP-664 - 无路之途▪SCP-665 - 垃圾君▪SCP-666 - 灵魂归宿▪SCP-667 - 野葛仙灵▪SCP-668 - 13英寸厨刀▪SCP-669 - 教育透视模型▪SCP-670 - 棉花家族▪SCP-671 - 拆解蚁▪SCP-672 - 石珊瑚▪SCP-673 - 生物组织▪SCP-674 - 虚拟干涉枪▪SCP-675 - 透窗之影▪SCP-676 - 超自然温泉▪SCP-677 - 不可预知的弹簧单高跷▪SCP-678 - 伤痛收割者▪SCP-679 - 烂眼病▪SCP-680 - 发条头骨▪SCP-681 - 杀人氦气▪SCP-682 - 不灭孽蜥▪SCP-683 - 冰箱上的画▪SCP-684 - 享侍兽▪SCP-685 - 无底深坑▪SCP-686 - 传染性催乳▪SCP-687 - 黑街▪SCP-688 - 穴居七鳃鳗▪SCP-689 - 黑暗中的祟神▪SCP-690 - 恶作剧绷带▪SCP-691 - 懦夫的出路▪SCP-692 - 色彩复现▪SCP-693 - 降头公仔▪SCP-694 - 荒唐的定义▪SCP-695 - 寄生鳗▪SCP-696 - 深渊打字机▪SCP-697 - 毒性星球改造剂▪SCP-698 - 判定小龟▪SCP-699 - 神秘之匣700到799▪SCP-700 - 彩绘工厂▪SCP-701 - 缢王悲歌▪SCP-702 - 商人居所▪SCP-703 - 壁橱之中▪SCP-704 - 危险路段▪SCP-705 - 军国主义培乐多▪SCP-706 - 完美瓷人偶▪SCP-707 - 套娃▪SCP-708 - 橘色的大叉车▪SCP-709 - 森林之眼▪SCP-710 - 噬人之城▪SCP-711 - 悖谬保险▪SCP-712 - 禁止色▪SCP-713 - 哪里不会点哪里▪SCP-714 - 疲惫玉戒▪SCP-715 - 我为我脸▪SCP-716 - 诡谲火车▪SCP-717 - 使者▪SCP-718 - 爆炸眼球▪SCP-719 - 光明使者▪SCP-720 - 天文起重机▪SCP-721 - 工厂玩具▪SCP-722 - 耶梦加得▪SCP-723 - 老化楼梯间▪SCP-724 - 浣熊宏声▪SCP-725 - 学舌鲸▪SCP-726 - 再生之蛆▪SCP-727 - 赫菲斯托斯的工坊▪SCP-728 - 永恒空间▪SCP-729 - 大理石浴缸▪SCP-730 - 除脑瘟疫▪SCP-731 - 鼠孔盖▪SCP-732 - 奇幻化瘟疫▪SCP-733 - 一双剪刀▪SCP-734 - 婴儿▪SCP-735 - 嘲讽之盒▪SCP-736 - 土卫八异象▪SCP-737 - 饥饿的火车▪SCP-738 - 与魔谋易▪SCP-739 - 镜像亭▪SCP-740 - 興登堡照片▪SCP-741 - 神秘苏联潜水艇▪SCP-742 - 反转录病毒▪SCP-743 - 一台巧克力喷泉▪SCP-744 - 仍需组装▪SCP-745 - 灯头▪SCP-746 - 鸦天狗▪SCP-747 - 玩偶鬼童▪SCP-748 - 工业解体▪SCP-749 - 雨滴声▪SCP-750 - 生命的另一种视角▪SCP-751 - 软体寄生虫▪SCP-752 - 无私的乌托邦▪SCP-753 - 自动绘图机器人▪SCP-754 - 虚实攀藤▪SCP-755 - “小心白鸟”▪SCP-756 - 迷你太阳系▪SCP-757 - 果树▪SCP-758 - 语法检查者-“瓦西里”▪SCP-759 - 酸味酵头▪SCP-760 - 洁净者▪SCP-761 - 有点儿危险的蹦床▪SCP-762 - 不朽的铁处女▪SCP-763 - 人类吸收体▪SCP-764 - 憎恶之木偶演剧▪SCP-765 - 鸭子池▪SCP-766 - 空气中的奇怪人形▪SCP-767 - 罪案现场照片▪SCP-768 - 远距离闹钟▪SCP-769 - 远古百科▪SCP-770 - 核辐射霉菌▪SCP-771 - 自修复生体智能▪SCP-772 - 巨型寄生蜂▪SCP-773 - 巫術飛鏢靶▪SCP-774 - 哨骨▪SCP-775 - 饕餮蜱虫▪SCP-776 - 回春仪祭▪SCP-777 - 沙之王国▪SCP-778 - 天堂瀑布▪SCP-779 - 棕精灵▪SCP-780 - 植珠▪SCP-781 - 无意识的造梦者▪SCP-782 - 全新的你▪SCP-783 - 那里有个歪歪扭扭的人▪SCP-784 - 圣诞欢歌▪SCP-785 - 连锁餐厅▪SCP-786 - 十二倍漏斗▪SCP-787 - 不存在的飞机▪SCP-788 - 熔岩鲤▪SCP-789 - 网络猎手▪SCP-790 - 血?▪SCP-791 - 水球体▪SCP-792 - 人体农场▪SCP-793 - 幽灵病原体▪SCP-794 - 沙漠船骸▪SCP-795 - 现实扭曲猫▪SCP-796 - 河猫▪SCP-797 - 好奇的捣蛋鬼▪SCP-798 - 鼠式连环死亡之谜▪SCP-799 - 肉食菌毯800到899▪SCP-800 - 东方画史▪SCP-801 - 七兽皮草▪SCP-802 - 音乐坦克▪SCP-803 - 掠食性阳伞▪SCP-804 - 无人之世界▪SCP-805 - 毒木马▪SCP-806 - 复生投影▪SCP-807 - 心脏病餐盘▪SCP-808 - 机械唱诗班▪SCP-809 - 军靴▪SCP-810 - 未竟之愿神灯▪SCP-811 - 沼女▪SCP-812 - 河之箱▪SCP-813 - 玻璃渣▪SCP-814 - 纯音▪SCP-815 - 恶作剧坚果罐▪SCP-816 - 机械虫族▪SCP-817 - 随变人▪SCP-818 - 被遗弃的项目▪SCP-819 - 体液吮吸糖▪SCP-820 - 彩绘蝗虫▪SCP-821 - 南部乐园▪SCP-822 - 地雷仙人掌▪SCP-823 - 恐怖嘉年华▪SCP-824 - 动态除草控制▪SCP-825 - 恐怖幻觉头盔▪SCP-826 - 美梦成真书架▪SCP-827 - 汤▪SCP-828 - ᖃᖃᖃᖃᖃᖃᖃᖃ/Qallupilluit/极地鱼女▪SCP-829 - 嗜血指甲油▪SCP-830 - 浊世沙流▪SCP-831 - 工蚁▪SCP-832 - 会计师之币▪SCP-833 - 慈善蠕虫▪SCP-834 - 马克笔▪SCP-835 - 被删除数据已放出▪SCP-836 - 建筑癌▪SCP-837 - 倍乘黏土▪SCP-838 - 梦中工作▪SCP-839 - 糖果蠕虫▪SCP-840 - 下水道支沟▪SCP-841 - 反向镜像巫毒娃娃棒子木偶▪SCP-842 - 手术台▪SCP-843 - “奶牛种子”▪SCP-844 - 爱哭鬼▪SCP-845 - 液体臭鼬▪SCP-846 - 机械老兄▪SCP-847 - 诡谲模特▪SCP-848 - 超维度蛛网▪SCP-849 - 完美的一天▪SCP-850 - 鱼群▪SCP-852 - 月海异船▪SCP-853 - 天气果酱▪SCP-854 - 梦桥▪SCP-855 - 电影放映厅▪SCP-856 - 河狮▪SCP-857 - 人基生态系统▪SCP-858 - 重力虹云▪SCP-859 - 惧蛛球▪SCP-860 - 蓝钥匙▪SCP-861 - 坠世天使▪SCP-862 - 魔鼠▪SCP-863 - 拼接蟹▪SCP-864 - 高效盆▪SCP-865 - 绅士的惩戒▪SCP-866 - 超級電腦▪SCP-867 - 血杉▪SCP-868 - 助记模因▪SCP-869 - 48年的夏天▪SCP-870 - 莫须有怪▪SCP-871 - 再生蛋糕▪SCP-872 - 破烂稻草人▪SCP-873 - 俄罗斯水晶球▪SCP-874 - 深渊液体▪SCP-875 - 战犯▪SCP-876 - 元素置换药片▪SCP-877 - Alexylva大学脑中芯片▪SCP-878 - 演员▪SCP-879 - 殖民鲸▪SCP-880 - 徘徊凛冬▪SCP-881 - 小人群▪SCP-882 - 一台机器▪SCP-883 - 超维度蜂巢▪SCP-884 - 剃须镜▪SCP-885 - 活体真空▪SCP-886 - “南妮”▪SCP-887 - 多寫症患者▪SCP-888 - 记忆石▪SCP-889 - 配种中心▪SCP-890 - 机械医师▪SCP-891 - 加利福尼亚农田▪SCP-892 - 全人类数据表▪SCP-893 - 無性生殖者▪SCP-894 - 勿言,勿闻,勿视▪SCP-896 - 在线角色扮演游戏▪SCP-897 - 巫毒器官移植▪SCP-898 - 反模因媒介▪SCP-899 - 失踪的孩子900 to 999▪SCP-900 - 太阳之城▪SCP-901 - 广场上的建筑▪SCP-902 - 最后的倒计时▪SCP-903 - 无尽可能的管道▪SCP-904 - 短诗▪SCP-905 - 变色龙先生▪SCP-906 - “三光”蜂巢▪SCP-907 - 一辆探索车▪SCP-908 - 同步存在石块▪SCP-909 - 健忘先生▪SCP-910 - 尘埃,具现▪SCP-911 - 埃及死者之书▪SCP-912 - 自主型SWAT装甲▪SCP-913 - 饥饿先生▪SCP-914 - 万能转换机▪SCP-915 - 机械非欧计算机▪SCP-916 - 人类至友▪SCP-917 - 月亮先生▪SCP-918 - 婴儿磨坊▪SCP-919 - 祈求镜▪SCP-920 - 迷路先生▪SCP-921 - 记忆博物馆▪SCP-922 - 真伪莫辨大学▪SCP-923 - 一个有用的工具▪SCP-924 - 冰水掠食者▪SCP-925 - 蘑菇的狂信徒▪SCP-926 - 古琴▪SCP-927 - 蔓生屋▪SCP-928 - 白王▪SCP-929 - 杜鹃鱼▪SCP-930 - 闹鬼岛▪SCP-931 - 一个饭碗▪SCP-932 - 猎梦者▪SCP-933 - 强力胶布▪SCP-934 - 内陆灯塔▪SCP-935 - 传家扑克▪SCP-936 - 人類果實▪SCP-937 - 虫树枝▪SCP-938 - 鲜血与雷鸣▪SCP-939 - 千喉之兽▪SCP-940 - 木偶蜘蛛▪SCP-941 - 机械运动病▪SCP-942 - 鲜血糖果▪SCP-943 - 洗罪报冤▪SCP-944 - 镜之迷宫▪SCP-945 - 巫沙布提俑▪SCP-946 - 谈笑风生▪SCP-947 - [脏话已编辑]养的▪SCP-948 - 工作成瘾者▪SCP-949 - Wondertainment游乐园▪SCP-950 - 干衣机▪SCP-951 - 我的朋友LUCAS▪SCP-952 - NP摇滚▪SCP-953 - 多形态类人▪SCP-954 - 发声蛙▪SCP-955 - 粘液蛮怪▪SCP-956 - 破童罐▪SCP-957 - 诱饵▪SCP-958 - Beep将军▪SCP-959 - 床边妖怪▪SCP-960 - 灵感之源▪SCP-961 - Alexylva大学现史日晷▪SCP-962 - 巴贝尔塔▪SCP-963 - 不朽▪SCP-964 - 不可名状多相体▪SCP-965 - 窗中之脸▪SCP-966 - 睡梦杀手▪SCP-967 - 无限废品回收厂▪SCP-968 - 柏油婴儿▪SCP-969 - █████牌驱蚊剂▪SCP-970 - 轮回之间▪SCP-971 - 濒危物种快餐外卖▪SCP-972 - 免疫▪SCP-973 - 公路巡警▪SCP-974 - 树屋猎手▪SCP-975 - 地铁青蛙▪SCP-976 - 不寻常的硬盘▪SCP-977 - 安保室▪SCP-978 - 欲望相机▪SCP-979 - 陶瓷兔▪SCP-980 - 细节之湮灭▪SCP-981 - 导演剪辑版▪SCP-982 - 芝加哥循环▪SCP-983 - 生日歌猴▪SCP-984 - 公共卫生间▪SCP-985 - 失物招领处▪SCP-986 - 福克纳最终密码手稿▪SCP-987 - 惊悚画廊▪SCP-988 - 打不开的箱子▪SCP-989 - 自卫蔗糖▪SCP-990 - 梦行示兆者▪SCP-991 - 一支注射器▪SCP-992 - 地母的使者▪SCP-993 - 小丑巴伯▪SCP-994 - 银色飞碟▪SCP-995 - 长榻惊魂▪SCP-996 - 负容箔▪SCP-997 - 消虫器▪SCP-998 - 迷踪战爪▪SCP-999 - 痒痒怪。

这可能是目前最透彻的Netty原理架构解析

这可能是目前最透彻的Netty原理架构解析

这可能是⽬前最透彻的Netty原理架构解析本⽂基于 Netty 4.1 展开介绍相关理论模型,使⽤场景,基本组件、整体架构,知其然且知其所以然,希望给⼤家在实际开发实践、学习开源项⽬⽅⾯提供参考。

Netty 是⼀个异步事件驱动的⽹络应⽤程序框架,⽤于快速开发可维护的⾼性能协议服务器和客户端。

JDK 原⽣ NIO 程序的问题JDK 原⽣也有⼀套⽹络应⽤程序 API,但是存在⼀系列问题,主要如下:NIO 的类库和 API 繁杂,使⽤⿇烦。

你需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。

需要具备其他的额外技能做铺垫。

例如熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和⽹路编程⾮常熟悉,才能编写出⾼质量的 NIO 程序。

可靠性能⼒补齐,开发⼯作量和难度都⾮常⼤。

例如客户端⾯临断连重连、⽹络闪断、半包读写、失败缓存、⽹络拥塞和异常码流的处理等等。

NIO 编程的特点是功能开发相对容易,但是可靠性能⼒补齐⼯作量和难度都⾮常⼤。

JDK NIO 的 Bug。

例如臭名昭著的 Epoll Bug,它会导致 Selector 空轮询,最终导致 CPU 100%。

官⽅声称在 JDK 1.6 版本的 update 18 修复了该问题,但是直到 JDK 1.7 版本该问题仍旧存在,只不过该 Bug 发⽣概率降低了⼀些⽽已,它并没有被根本解决。

Netty 的特点Netty 对 JDK ⾃带的 NIO 的 API 进⾏封装,解决上述问题,主要特点有:设计优雅,适⽤于各种传输类型的统⼀ API 阻塞和⾮阻塞 Socket;基于灵活且可扩展的事件模型,可以清晰地分离关注点;⾼度可定制的线程模型 - 单线程,⼀个或多个线程池;真正的⽆连接数据报套接字⽀持(⾃ 3.1 起)。

使⽤⽅便,详细记录的 Javadoc,⽤户指南和⽰例;没有其他依赖项,JDK 5(Netty 3.x)或 6(Netty 4.x)就⾜够了。

小学生常用多音字组词大全

小学生常用多音字组词大全

小学生常用多音字组词大全常用多音字组词(A部)1.阿①ā阿罗汉阿姨②ē阿附阿胶2.挨①āi挨个挨近②i挨打挨说3.拗①o拗口②niǜ执拗常用多音字组词(B部)1.扒①bā扒开扒拉②p扒手扒草2.把①bǎ把握把持把柄②b印把刀把话把儿3.蚌①bng蛤蚌②bng蚌埠4.薄①bo(口语单用)纸薄②b(书面组词)单薄稀薄5.堡①bǔ碉堡堡垒②pū瓦窑堡吴堡③bǔ十里堡6.暴①bo暴露②p地暴十寒7.背①bi脊背背静②bēi背包背枪8.奔①bēn奔跑奔波②bn投奔9.臂①b手臂臂膀②bei胳臂10.辟①b复辟②p开辟11.扁①biǎn扁担②piān扁舟12.辟①bin方便便利13.骠①biāo黄骠马14.屏②bǐng屏息屏气15.剥①bō(书面组词)剥削(某uē)②bāo(口语单用)剥皮16.泊①b淡泊停泊②bǎi大伯子(夫兄)17.伯①b老伯伯父②bǎi大伯子(夫兄)18.簸①bǒ颠簸②b簸箕19.膊①b赤膊②bo胳膊20.卜①bo萝卜②占卜常用多音字组词(C部)1.藏①cng矿藏②zng宝藏2.差①chā(书面组词)偏差差错②ch(口语单用)差点儿3.刹①ch古②hā刹车4.禅①chn禅师②hn禅让封禅5.颤①chn颤动颤抖②zhn颤栗打颤6.场①chǎng场合冷场②chng场院一场(雨)③chag排场7.嘲①cho嘲讽嘲笑②zhāo嘲哳(zhāozhā)8.车①chē车马车辆②jū(象棋子名称)9.称①chn称心对称②chēng称呼称道10.澄①chng(书面)澄清(问题)②dng(口语)澄清(使液体变清)11.匙①ch汤匙②hi钥匙12.冲①chōng冲锋冲击②chng冲床冲子13.臭①chu遗臭万年②某i乳臭铜臭14.处①chǔ(动作义)处罚处置②ch(名词义)处所妙处15.畜①ch(名物义)畜牲畜力②某(动作义)畜养畜牧16.创①chung创作创造②chuāng重创创伤17.绰①chu绰绰有作②chuo宽绰18.伺①c伺侯②chuo伺机环伺19.枞①cōng枞树②zōng枞阳(地名)20.攒①cun攒动攒射②zǎn积攒21.撮①cuō一撮儿盐②zuǒ一撮毛②zǎn积攒21.撮①cuō一撮儿盐②zuǒ一撮毛常用多音字组词(D部)1.答①d报答答复②dā答理答应2.大①d大夫(官名)②di大夫(医生)山大王3.逮①di(书面组词)逮捕②chn(口语单用)逮蚊子逮小偷4.单①dn单独孤单②chn单于③hn单县单姓5.当①dāng当天当时当年(均指已过去)②dng当天当日当年(同一年、月、日、天)6.倒①dǎo颠倒倒戈倒嚼②do倒粪倒药倒退7.提①dī提防提溜②t提高提取8.得①d得意洋洋②de好得很③děi得喝水了9.的①d的当的确②d目的中的10.都①dōu都来了②dū都市大都(大多)11.掇①duō采掇(拾取、采取义)②duo撺掇掂掇12.度①du忖度揣度②d程度度量13.囤①dn粮囤②tn囤积常用多音字组词(F部)1.发①f理发结发②fā发表打发2.坊①fāng牌坊坊巷②fng粉坊染坊3.分①fēn区分分数②fn身分分子(一员)4.缝①fng缝合②fng缝隙5.服①f服毒服药②f量词,也作付常用多音字组词(G部)1、杆①gān旗杆栏杆(粗、长)②gǎn枪杆烟杆(细、短)2、葛①g葛巾瓜葛②gě姓氏3、革①g革命皮革②j病革病急4、合①gě十分之一升②h合作合计5、给①gěi(口语单用)给②jǐ(书面组词)补给、配给6、更①gēng更换更事②gng更加更好7、颈①jǐng颈项颈联②gěng脖颈子8、供①gōng供给供销②gng口供上供9、枸①gǒu枸杞②gōu枸橘③jǔ①gū估计、估量②g估衣(唯一例词)12、骨①gū骨碌骨朵(仅此二例)②gǔ骨肉骨干13、谷①gǔ谷子谷雨②y吐谷浑(族名)14、冠①guān(名物义)加冠弹冠②gun(动作义)冠军沐猴而冠15、桧①gu树名②hu人名16、过①guō姓氏②gu经过常用多音字组词(H部)1、虾①h虾蟆②某iā对虾2、哈①hǎ哈达姓哈②h哈什玛③hā哈萨克哈腰3、汗①hn可汗大汗②hn汗水汗颜4、巷①hng巷道②某ing街巷5、吭①hng引吭高歌②kēng吭声6、号①ho呼号号叫②ho称号号召7、和①h和睦和谐②h应和和诗③h麻将牌戏用语,意为赢④hu和面和泥⑤hu和药两和(量词)⑥huo搀和搅和8、貉①h(书面)一丘之貉②ho(口语)貉绒貉子9、喝①hē喝水②h喝采喝令10、横①hng横行纵横②hng蛮横横财11、虹①hng(书面组词)彩虹虹吸②jing(口语单用)12、划①hu划船划算②hu划分计划13、晃①huǎng明晃晃晃眼②hung摇晃晃动14、会①hu会合都会②ku会计财会15、混①hn混浊混活②hn混合混沌16、哄①hng哄堂②hǒng哄骗③hng起哄17、豁①huō豁口②hu豁亮豁达常用多音字组词(J部)1、奇①jī奇偶②q奇怪奇异2、缉①jī通缉缉拿②qī缉鞋口3、几①jī茶几几案②jǐ几何几个4、济①jǐ济宁济济②j救济共济5、纪①jǐ姓氏②j纪念纪律6、偈①j偈语②ji(勇武)7、系①j系紧缰绳系好缆绳②某系好马匹系好船只8、茄①jiā雪茄②qi茄子9、夹①jiā夹攻夹杂②ji夹裤夹袄10、假①jiǎ真假、假借②ji假期假日11、间①jiān中间晚间②jin间断间谍12、将①jiāng将来②jing将校将兵13、嚼①jio(口语)嚼舌②ju(书面)咀嚼14、侥①jiǎo侥幸②yo僬侥(传说中的矮人)15、角①jiǎo角落号角口角(嘴角)②ju角色角斗口角(吵嘴)16、脚①jiǎo根脚脚本②ju脚儿(角儿,脚色)17、剿①jiǎo围剿剿匪②chāo剿袭剿说18、教①jiāo教书教给②jio教导教派19、校①jio校场校勘②某io学校院校20、解①jiě解除解渴②ji解元押解③某i解县解不开21、结①jiē结果结实②ji结网结合22、芥①ji芥菜芥末②gi芥蓝23、藉①ji枕藉慰藉②j狼藉24、矜①jīn矜夸矜持②qn矜(矛柄)锄镰棘矜25、仅①jǐn仅有②jn仅万(将近)26、劲①jn干劲劲头②jng强劲劲草27、龟①jūn龟裂②guī乌龟③qiū龟兹28、咀①jǔ咀嚼②zuǐ嘴29、矩①jǔ矩形②ju规矩30、菌①jūn细菌霉菌②jn香菌菌子(同蕈某n)常用多音字组词(K部)1、卡①kǎ卡车卡片②qiǎ关卡卡子2、看①kān看守看管②kn看待看茶3、坷①kē坷垃②kě坎坷4、壳①k(口语)贝壳脑壳②qi(书面)地壳甲壳、躯壳5、可①kě可恨可以②k可汗6、克①k克扣克服②kēi(口语)申斥7、空①kōng领空空洞②kng空白空闲8、溃①ku溃决溃败②kui溃=殒常用多音字组词(L部)1、蓝①ln蓝草蓝图②lan苤蓝(piělan)2、烙①lo烙印烙铁②lu炮(po)烙3、勒①l(书面组词)勒令、勒索②lēi(口语单用)勒紧点儿4、擂①li擂鼓②li擂台打擂(仅此二词)5、累①li(受劳义)劳累②li(多余义)累赘③lěi(牵连义)牵累6、蠡①l管窥蠡测②lǐ蠡县7、俩①liǎ(口语,不带量词)咱俩俩人②liǎng伎俩8、量①ling丈量计量②ling量入为出③liang打量掂量9、踉①ling跳踉(跳跃)②ling踉跄(走路不稳)10、潦①lio潦草潦倒②lǎo(书面)积潦(积水)11、淋①ln淋浴淋漓②ln淋硝淋盐12、馏①li蒸馏②li(口语单用)馏饭13、镏①li镏金(涂金)②li金镏(金戒)14、碌①li碌碡②l庸碌劳碌15、笼①lng(名物义)笼子、牢笼②lǒng(动作义)笼络笼统16、偻①l佝偻②lǚ伛偻17、露①l(书面)露天露骨②lu(口语)露头露马脚18、捋①lǚ捋胡子②luō捋袖子19、绿①lǜ(口语)绿地绿菌②l(书面)绿林鸭绿江20、络①lu络绎经络②lo络子21、落①lu(书面组词)落魄着落②lo(常用口语)落枕落色③l(遗落义)丢三落四落下常用多音字组词(M部)1、脉①m脉脉(仅此一例)②mi脉络山脉2、埋①mi埋伏埋藏②mn埋怨3、蔓①mn(书面)蔓延枝蔓②wn(口语)瓜蔓压蔓4、氓①mng流氓②mng古指百姓5、蒙①mng蒙骗②mng蒙味③měng蒙古6、眯①m眯眼(迷眼)②mī眯眼(合眼)7、靡①m靡费奢靡②mǐ委靡披靡8、秘①b秘鲁秘姓②m秘密秘诀9、泌①m(口语)分泌②b(书面)泌阳10、模①m模范模型②m模具模样11、摩①m摩擦、摩挲(用手抚摸)②mā摩挲(a)轻按着并移动12、缪①mu绸缪②mi纰缪③mio缪姓常用多音字组词(N部)1、难①nn困难难兄难弟(贬义)②nn责难难兄难弟(共患难的人);2、宁①nng安宁宁静②nng宁可宁姓3、弄①nng玩弄②lng弄堂4、疟①n(书面)疟疾②yo(口语)发疟子5、娜①nu袅娜、婀娜②n(用于人名)安娜常用多音字组词(P部)1、排①pi排除排行②pǎi排车2、迫①pǎi迫击炮②p逼迫3、胖①pn心广体胖②png肥胖4、刨①po刨除刨土②bo刨床刨冰5、炮①po炮制、炮格(烙)②po火炮高炮6、喷①pēn喷射喷泉②pn喷香③pen嚏喷7、片①pin影片儿②piān唱片儿8、缥①piāo缥缈②piǎo缥青白色(的丝织品)9、撇①piē撇开撇弃②piě撇嘴、撇置脑后10、仆①pū前仆后继②p仆从11、朴①pǔ俭朴朴质②pō朴刀③p厚朴、朴树④pio朴姓12、瀑①p瀑布②bo瀑河(水名)13、曝①p一曝十寒②bo曝光常用多音字组词(Q部)1、栖①qī两栖、栖息②某ī栖栖2、蹊①qī蹊跷②某ī蹊径3、稽①q稽首②jī滑稽4、荨①qin(书面)荨麻②某n(口语)荨麻疹5、欠①qin欠缺、欠债②qian呵欠6、镪①qiāng镪水②qiǎng银镪7、强①qing强渡、强取、强制②qiǎng勉强、强迫、强词②jing倔强8、悄①qiāo悄悄儿的悄悄话②qiǎo悄然、悄寂9、翘①qio(口语)翘尾巴②qio翘首、连翘10、切①qiē切磋、切割②qi急切、切实11、趄①qi趄坡儿②qie趔趄③jū趑趄12、亲①qīn亲近亲密②qng亲家13、曲①qū神曲、大曲、弯曲②qǔ曲调、曲艺、曲牌14、雀①q3雀盲qū神曲、大曲、弯曲②qǔ曲调、曲艺、曲牌14、雀①q常用多音字组词(R部)1、任①rn任丘(地名)任(姓)②rn任务、任命常用多音字组词(S部)2、散①ǎn懒散、零散(不集中、分散)②an零散(散架、破裂义)③n 散布、散失3、丧①āng丧乱、丧钟②ng丧失、丧权③ang哭丧着脸4、色①(书面)色彩色泽②hǎi(口语)落色、颜色5、塞①(书面,动作义)堵塞、阻塞②āi(口语,名动义)活塞、塞车③i塞翁失马边塞塞外6、煞①hā煞尾、收煞②h煞白、恶煞7、厦①h广厦、大厦②某i厦门、噶厦8、杉①hān(书面)红杉、水杉②hā(口语)杉篙、杉木9、苫①hn(动作义)苫屋草②hān(名物义)草苫子10、折①h折本②hē折腾③h折合11、舍①hě舍弃抛舍②h校舍退避三舍)12、什①hn什么②h什物什锦13、葚①hn(书面)桑葚②rn(口语)桑葚儿14、识①h识别识字②zh标识博闻强识15、似①h似的②相似16、螫①h(书面)②zhē(口语)=蜇17、熟①h相似16、螫①h(书面)②zhē(口语)=蜇17、说①hu游说说客②huō说话说辞19、数①hu数见不鲜②hǔ数落数数(hu)③h数字数目20、遂①u不遂毛遂②u半身不遂21、缩①uō缩小收缩②缩砂(植物名)常用多音字组词(T部)1、沓①t杂沓复沓纷至沓来②d沓子2、苔①ti(书面)苍苔苔藓②tāi(口语)青苔舌苔3、调①tio调皮调配(调和配合)②dio调换调配(调动分配)4、帖①tiē妥帖伏帖②tiě帖子③ti碑帖法帖习字帖画帖5、吐①tǔ谈吐吐露吐字②t吐沫吐血吐沫6、拓①tu拓荒拓宽②t拓本拓片常用多音字组词(W部)1、瓦①wǎ瓦当瓦蓝砖瓦②w瓦刀瓦屋瓦(wǎ)2、圩①wi圩子②某ū圩场3、委①wēi委蛇=逶迤②wěi委曲(qū)委屈(qu)4、尾①wěi尾巴②yǐ马尾5、尉①wi尉官尉姓②y尉迟(姓)尉犁(地名)6、乌①wū乌黑乌拉(la藏奴劳役)②w乌拉(la草名)常用多音字组词(某部)1、吓①某iā吓唬吓人②h威吓恐吓2、鲜①某iān鲜美鲜明②某iǎn鲜见鲜为人知3、纤①某iān②某ing相片相机5、行①某ng举行发行②hng行市、行伍③hng树行子④hng道行6、省①某ǐng反省省亲②hěng省份省略7、宿①某i星宿,二十八宿②某iǔ半宿(用以计夜)③宿舍宿主8、削①某uē(书面)剥削瘦削②某iāo(口语)切削削皮9、血①某u(书面组词)贫血心血②某iě(口语常用)鸡血,流了点血10、熏①某ūn熏染熏陶②某n被煤气熏着了(中毒)常用多音字组词(Y部)1、哑①yā哑哑(象声词)的学语②yǎ哑然哑场2、殷①yān殷红②yīn殷实,殷切、殷朝③yǐn殷殷(象声词,形容雷声)3、咽①yān咽喉②yn狼吞虎咽③y呜咽4、钥①yo(口语)钥匙②yu(书面)锁钥5、叶①y叶落归根②某i叶韵(和谐义)6、艾①y自怨自艾、惩艾②i方兴未艾、艾草7、应①yīng应届应许②yng应付应承8、佣①yōng雇佣佣工②yng佣金佣钱9、熨①y熨贴②yn熨烫10、与①yǔ给与②y参与11、吁①y呼吁、吁求②yū吆喝牲口(象形词)③某ū长吁短叹气喘吁吁12、晕①yūn晕倒头晕②yn月晕晕车常用多音字组词(Z部)2、择①z选择抉择②zhi择菜择席择不开(仅此三词)3、扎①zh挣扎②zhā扎根扎实③zā扎彩(捆束义)一扎啤酒4、轧①zh轧钢轧辊(挤制义)②y倾轧轧花轧场(碾压义)5、粘①zhān(动词义)粘贴粘连②nin(形容词)粘稠粘土6、涨①zhǎng涨落高涨②zhng泡涨脑涨7、着①zho着急着迷着凉②zhu着落着重着手③zhāo失着着数高着(招)8、正①zhēng正月正旦(农历正月初一)②zhng正常正旦(戏中称女主角)9、殖①zh繁殖殖民②hi骨殖10、中①zhōng中国、人中(穴位)②zhng中奖中靶11、种①zhǒng种类种族点种(种子)②zhng耕种种植点种(播种)12、轴①zhu画轴轮轴②zhu大轴戏压轴戏13、属①zhǔ属望属文属意②hǔ种属亲属14、著①zh著名著述②zhe同着助词③zho同着动词穿著附著15、转①zhuǎn转运转折②zhun转动转速16、幢①zhung一幢楼房②chung经幢17、综①zng织机零件之一②zōng综合错综18、钻①zuān钻探钻孔②zun钻床钻杆19、柞①zu柞蚕柞绸②zh柞水(在陕西)20、作①zuō作坊铜器作②zu工作习作。

Windows网络编程复习重点

Windows网络编程复习重点

Windows⽹络编程复习重点⽬录第⼀章⽹络应⽤程序设计基础 (3)分布式⽹络应⽤程序的特点及分类 (3)⾯向应⽤的⽹络编程⽅法(3点) (3)基于TCP/IP的⽹络编程⽅法 (3)⾯向原始帧的⽹络编程⽅法(4种) (4)第⼆章⽹络程序通信模型 (4)常见的⽹络编程通信模型 (4)客户端、服务器的⼯作过程 (4)P2P模型的特点及其⽹络的拓扑结构 (5)第三章⽹络数据的内容与形态 (6)⽹络字节顺序与主机字节顺序 (6)⽹络字节顺序与主机字节顺序转换的函数 (6)⽹络数据传输形态 (6)字符编码 (7)数据校验 (7)第四章软件协议接⼝ (7)协议软件接⼝的位置与功能 (7)WinSock DLL的初始化与释放 (8)WinSock的地址描述 (9)套接字选项和IO控制命令 (9)处理WinSock的错误 (9)第五章流式套按字编程 (9)流式套接字通信的特点 (9)流式套接字的适⽤场景 (10)基本函数 (10)流式套接字编程的⼀般过程 (12)正确处理流数据的接收 (13)接收定长和变长数据 (13)流式套接字的编程实例 (13)第六章数据报套接字编程 (21)数据报套接字数据通信的特点 (21)数据报套接字的适⽤场景 (21)数据报套接字的编程的⼀般过程 (21)数据报套接字的常⽤函数 (22)数据报套接字的编程实例 (22)第七章原始套接字编程 (27)原始套接字的特点 (27)原始套接字的适⽤场景 (28)原始套按字的编程的⼀般过程 (28)原始套接字的编程实例 (28)第⼋章⽹络通信中的IO操作 (37)套接字的常见IO模式 (37)同步、异步、阻塞、⾮阻塞的概念及区别 (37)阻塞IO模型的⼯作原理与特点 (38)⾮阻塞IO模型的⼯作原理与特点 (38)IO复⽤模型的⼯作原理与特点(选择模型) (38)异步IO复⽤模型的⼯作原理与特点(WSAAsynsSelect) (38)完成端⼝模型的⼯作原理与特点(异步) (39)第九章WinPcap编程 (39)Wpcap.dll的⼯作流程 (39)Wpcap.dll的编程实例 (40)Packet.dll的⼯作流程 (45)Packet.dll编程实例 (45)第⼀章⽹络应⽤程序设计基础分布式⽹络应⽤程序的特点及分类1、特点:3点A)分布式⽹络应⽤程序将整个应⽤程序的处理分成⼏个部分,分别在不同的机器上运⾏,这⾥的“分布”包含两层含义:地理上的分布和数据处理的分布。

nio底层实现原理

nio底层实现原理

nio底层实现原理一、引言nio(New I/O)是Java 1.4引入的一种新的I/O机制,它提供了一种非阻塞的、基于通道的I/O操作方式,相对于传统的I/O操作方式,在处理大量并发连接时具有更高的效率和可扩展性。

本文将介绍nio底层实现原理,帮助读者更好地理解和应用nio技术。

二、nio概述nio是Java对传统的阻塞式IO(BIO)的改进,它引入了新的抽象概念:通道(Channel)和缓冲区(Buffer)。

在传统的BIO中,每个连接都需要一个独立的线程来处理读写操作,当并发连接数较高时,线程资源消耗过大。

而nio则通过使用少量的线程来处理大量的并发连接,提高了系统的可扩展性。

三、nio底层实现原理1. 通道(Channel)通道是nio的核心概念之一,它代表与实体(如文件、网络套接字)之间的连接。

通道可以用于读取和写入数据,而且通道可以是双向的,即可以同时进行读写操作。

通道的实现类包括FileChannel、SocketChannel、ServerSocketChannel和DatagramChannel等。

2. 缓冲区(Buffer)缓冲区是nio的另一个核心概念,它是一个连续的、有限容量的数据存储区域。

在nio中,数据的读写都是通过缓冲区来实现的。

缓冲区提供了一系列的方法来操作数据,包括put、get、flip、clear 等。

nio中的缓冲区实现类包括ByteBuffer、CharBuffer、IntBuffer等。

3. 选择器(Selector)选择器是nio的另一个重要组件,它用于监听多个通道的事件,当某个通道发生了感兴趣的事件时,选择器就会通知应用程序进行处理。

通过使用选择器,应用程序可以使用较少的线程来处理大量的并发连接。

选择器的实现类为Selector。

4. 非阻塞式IO操作在传统的BIO中,当一个线程在执行IO操作时,如果没有数据可读,则会被阻塞,直到有数据可读。

而在nio中,可以通过设置通道为非阻塞模式来实现非阻塞式IO操作。

先看TheKlub17编辑基础知识+一个问题的案例

先看TheKlub17编辑基础知识+一个问题的案例

基礎知識 - Mod安裝篇:2. Mod安裝教學:(1) 遊戲包 (.txx 文件):Archives/2.114.00(2) 遊戲材質 (皮膚, 衣服, 房間等 png/txf 文件):Mod/ActiveMod(4) 自定玩具(tes文件及其icon圖):Community/ToyEdit(3) 自製電影 (Sequence-####文件夾sq文件及其icon圖):Community/Sequencer(4) 自定姿勢 (pes文件及其icon圖):Community/PoseEdit(5) 動作文件 (bvh 文件):Mod/PoseEdit(6) 遊戲角色 (Model#### 文件夾):Save/Models(7) 社群遊戲角色 (Customization#### 文件夾):Community/Customizer3. 遊戲包的優先序:∙許多遊戲包(txx)有相同的文件名的內容物. 遊戲包載入順序不同, 將會有截然不同的結果∙3DV是透過 txx文件命名, 依據的是文件名稱字母排序, 來決定遊戲包的優先序.∙也就是 a.txx 優先於 b.txx 優先於 c.txx, 當文件發生衝突時. 以 a.txx的內容為主.4. Mod衝突處理:(1) 遊戲包衝突:∙衝突描述: txx遊戲包的部分內容物相同∙解決方法: 更改衝突 txx的文件名稱, 調整載入優先權(2) 材質解析度衝突∙衝突描述: 通常是安裝 4xHD 高清材質, 才會發生∙解決方法:i. 安裝 4xHD 高清材質, 須搭配 R9 或 Sam5的高清材質集(也可安裝JZenma的整合版). 防止疊圖錯位 ii. 安裝 4xHD 高清材質, 須刪除 Mod/ActiveMod 的低清皮膚(3) ID衝突∙衝突描述: 遊戲腳本中, 同一個 Dress ID/Item ID 被重複定義, 導致部分腳本失效∙解決方法: 須使用 Mod 工具解開遊戲包修改腳本進階知識 - Mod工具篇:1. Mod 類型:(1) 3D替換模組 (3D replacer mods)∙直接替換掉遊戲原有的3D模型. 被替換的對象將無法使用.∙(更換模型, 可能會使部分遊戲貼圖發生錯誤)(2) 3D擴充模組 (3D addon mods)∙透過修改遊戲腳本. 額外新增3D模型. 不會替換遊戲原有的3D模型.(3) 腳本模組 (Script mods)∙透過修改遊戲腳本. 新增新的滑動條, 操作選項, 人物表情.(4) 材質模組 (Image mods)∙替換遊戲中的貼圖(5) 音效模組 (Sound Mods)∙新增語音與音效2. 遊戲包結構:∙Archives/2.114.001 目錄下, 有許多 txx 文件.∙txx文件其實是一種加密過的壓縮文件, 存放遊戲內的設定, 腳本, 模型, 腳本, 貼圖, 聲音, 及語言包.3. txx解壓縮後的常見文件:∙bs/bh: 遊戲的設定與腳本文件, 也可以是3D模型文件∙[bsb]/[bhb]: 加密後的 bs/bh∙po: 語言包, 存放遊戲中的字串. 需設定對應的字庫 (utf-8)∙jp2: 遊戲中的貼圖與圖示∙png: 遊戲中的貼圖與圖示. 同路徑下, 若是存在同檔名的jp2圖, 則以png為準.∙tri: 遊戲中3D模型, 骨架∙gzip: 部分[bsb]/[bhb]文件, 會加一層gzip壓縮, 可用winrar/7z 等壓縮工具解壓縮∙ogg: 遊戲內的語音與音效4. Mod環境設定:作業系統: Windows, LinuxWindows環境設定:∙如果想用 cmd 編譯, 需設定path環境變量 Binaries/tk17sh∙(使用 TK17 Command Shell.exe 就不用設定環境變量)Linux環境設定:∙需設定path環境變量 Binaries/tk17sh∙需安裝 wine 才能使用解包與打包工具5. Mod工具介紹:(1) 遊戲內建基本Mod工具TK17 Command Shell.exe (Binaries/TK17_Shell.exe)∙功能: 命令介面, 可直接使用 Binaries/tk17sh 的工具∙使用方法: 與 windows 中的 cmd 大致相同txx_tools.exe:∙功能: txx解包與打包工具∙使用方法:1. 開啟 TK17 Command Shell.exe (或windows cmd, Linux terminal)2. txx解包:txx_tools -x <txx文件>3. txx打包:txx_tools -k 1 -b <要打包成txx文件的目錄>blex.exe:∙功能: bs/bh <--> [bsb]/[bhb]解包與打包工具∙使用方法:1. 開啟 TK17 Command Shell.exe (或windows cmd, Linux terminal)解密:blex.exe -d DcDress.[bsb] -o DcDress.bs加密:blex.exe -e DcDress.bs -o DcDress.[bsb]2. 要載入bs 文件到 blender, 要裝 tkm 工具裝好後左邊的工具列會有導入選項]logdec.exe∙功能: 遊戲除錯紀錄. 查看mod載入是否正常∙使用方法:1. 開啟 TK17 Command Shell.exe (或windows cmd, Linux terminal)2. 輸入logdec.exe(2) Tri_utils 工具集(包在 MDK 中)安裝方法:1.解壓縮 Tri_utils.7z, 及裡面的zip文件.2.將AddAnimateMorph.exe, FileConvert.exe, tri2egm.exe 全丟到 Binaries/tk17sh/目錄下fileconvert∙功能: 轉換 tri, vrml, obj, 3ds 的文件轉換工具, 我們主要使用它來將tri文件轉換成obj文件.使一般的3D編輯軟件得以編輯遊戲內的模型∙使用方法: 轉換 3ds1. 開啟 TK17 Command Shell.exe (或windows cmd, Linux terminal)2. 轉換 fg_head.tri --> fg_head.3dsfileconvert tri-3ds fg_head3. 轉換 fg_head.3ds --> fg_head.trifileconvert 3ds-tri fg_head∙使用方法: 轉換 obj1. 開啟 TK17 Command Shell.exe (或windows cmd, Linux terminal)2. 轉換 fg_head.tri --> fg_head.objfileconvert tri-obj fg_head3. 轉換 fg_head.obj --> fg_head.trifileconvert obj-tri fg_head(3) Blender v2.64a(包在 MDK 中)∙功能: 一套免費的3D編輯軟體, 可搭配 Klub17 3D object io tools使用∙使用方法: 參考我自製的 40頁slide (包在 MDK 中)(4) Klub17 3D object io tools (tkm) (包在 MDK 中)∙安裝方法:1. 解壓縮 io_tkm17_v0.8.3.7z2. 將 io_tkm17 目錄複製到 Blender 安裝目錄的addons 目錄中X:\Program Files (x86)\Blender Foundation\Blender\2.64\scripts\addons\3. 開啟 Blender4. 使用者偏好設定 --> 附加元件5. 找尋 klub17 3D object io tools 打勾6. 存為預設值∙功能說明: 主要功能是將bs 3D模型文件, 匯入/匯出Blender ∙使用方法:1. 在Blender左方工具列中, 會看到 TKM17 Importer2. 可以點選[匯入] 將 bs 3D模型文件匯入 Blender3. 可以點選[匯出] 3D模型匯出成bs文件1. 打勾後, 儲存設定, 左方會出現tkm2. 載入模型前, 先存檔3. 設定 blex, txx_tools等工具4. 使用匯入, 將模型載入好好摸索吧, tkm 還有不少功能一些要遵守的規則:(整理中)參考資料:以下是國外的一些資料1. WIKI∙/doku.php∙/wiki/TheKlub17_Wiki2. JU 的移植教學1,3DV的自带拍照程序,所生成的照片,是不带游戏画面的渲染效果的。

推荐-赛车游戏详细设计 精品

推荐-赛车游戏详细设计 精品

详细设计说明书1引言1.1编写目的(1)解决软件系统总体结构设计的问题,包括整个软件系统的结构、模块划分、模块功能和模块间的联系等;(2)对功能模块进行过程描述,设计功能模块的内部细节,包括算法和详细数据结构,为编写源代码提供必要的说明。

(3)这并不等同于系统实现阶段用具体的语言编码,它只是对实现细节作精确的描述,这样编码阶段就可以将详细设计中对功能实现的描述,直接翻译、转化为用某种程序设计语言书写的程序。

1.2背景说明:a.待开发软件系统的名称:赛车游戏(DeathRace);b.本项目的任务提出者:张健;开发者:张健、曾雷、周志远、赵威;用户:普通游戏玩家开发工具:Visual Studio 20XX开发语言:C++、OPENGL函数库1.3定义(1)GUI:(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。

(2)物理建模:(Physical Model)建立物理模型过程,对所要解决的物理问题的精确、解析描述。

(3)游戏引擎:是指一些已编写好的可编辑游戏系统或者一些互交式实时图像应用程序的核心组件。

(4)粒子系统:表示三维计算机图形学中模拟一些特定的模糊现象的技术,而这些现象用其它传统的渲染技术难以实现的真实感的game physics。

1.4参考资料《软件工程导论——第5版》张海藩编著清华大学出版社《实用软件工程》Leszek A.Maciaszek Bruc Lee Liong著机械工业出版社《OPENGL游戏程序设计》——K..霍金D.阿斯特著田昱川译科学出版社2程序系统的总体结构3程序1(GUI)设计说明3.1程序描述GUI设计,主要用于增加游戏与用户的交互性,且本程序不会常驻内存,具有可重用性,功能齐全的一套子系统。

3.2功能输入(鼠标消息)如图:点击Single Player:可以直接载入游戏;点击Multi Player进入网络对战;点击Options可以进入游戏设置;点击Help可以进入游戏帮助;点击Quit退出。

java nio socketchannel 用例-概述说明以及解释

java nio socketchannel 用例-概述说明以及解释

java nio socketchannel 用例-概述说明以及解释1.引言1.1 概述在计算机网络通信中,传统的IO操作(即阻塞IO)往往会导致单线程无法高效处理多个网络连接。

为了解决这个问题,Java引入了NIO(New IO)机制,其中SocketChannel是NIO中最重要的一个组件之一。

Java NIO的背后思想是通过事件驱动模型实现非阻塞式IO操作。

相比传统的阻塞IO,NIO利用Selector选择器、Channel通道和Buffer 缓冲区的概念来实现高效的网络通信。

SocketChannel是NIO中提供网络连接的通道之一,它可以与一个TCP连接进行交互。

与传统的Socket不同,SocketChannel是非阻塞的,这意味着它可以在没有数据可读写时立即返回而不会阻塞线程,从而允许单线程同时处理多个连接。

SocketChannel通过Buffer进行数据读写,可以使用多种类型的Buffer来满足不同的需求,例如ByteBuffer、CharBuffer、IntBuffer等。

通过Buffer,SocketChannel可以实现高效的数据传输。

在本文中,我们将深入探讨SocketChannel的使用场景、优势和不足,以及它与NIO的关系。

通过了解SocketChannel的用例,读者将能够更好地理解和应用Java NIO的特性,并在网络编程中实现高效的数据传输和处理。

1.2文章结构1.2 文章结构本文将围绕Java NIO的SocketChannel展开详细讨论。

下面是本文的结构说明:1. 引言1.1 概述1.2 文章结构(即本节)1.3 目的2. 正文2.1 SocketChannel简介- SocketChannel的定义和作用- SocketChannel与传统IO的对比2.2 NIO简介- NIO的概念和特点- NIO中的关键组件和概念解析(Buffer、Channel、Selector等)- NIO与传统IO的对比3. 结论3.1 应用场景- SocketChannel的典型应用场景3.2 优势和不足- SocketChannel的优势- SocketChannel的不足与局限性通过以上结构,本文将全面介绍SocketChannel的基本概念和用法,并与传统IO进行对比,以便读者能够更好地理解NIO编程模型和SocketChannel的应用场景。

APP运营者必须知道的30款移动统计分析工具-诸葛IO

APP运营者必须知道的30款移动统计分析工具-诸葛IO

APP运营者必须知道的30款移动统计分析⼯具-诸葛IO如今的移动应⽤早已不再是某种结构单⼀、功能简单的⼯具了。

当我们的移动应⽤变得越来越庞杂,我们便会需要借⽤分析⼯具,来跟踪和分析App内的每⼀个部分。

幸运的是,⽬前市⾯上有许多数据分析⼯具可供App开发团队选择。

事实上,这些新⼀代的数据分析⼯具,将可以监测发⽣在App中的每⼀个细⼩的事件。

如果你曾经想追踪你的⽤户,知道他们从哪个平台下载了应⽤、看到你的⽤户在App内的跳转路径、了解哪个页⾯在App内最受欢迎,你⼀定能在以下30款分析⼯具中找到你的菜。

⽤户⼈群细分1、Upsight (含付费项⽬)Upsight是供移动应⽤开发⼈员使⽤的分析⼯具。

其功能包括:⽤户分组、漏⽃分析、留存分析、应⽤内购买组件和⽆限的数据存储空间。

Upsight⽀持⼏乎所有移动平台,包括iOS、安卓、Java Script、Adobe Air等等。

2、Tap stream (免费)Tap stream的亮点在于对⽤户⽣命周期的分析。

如果你想知道⽤户每天都在哪⾥搜索你App 的信息、或者他们在某个渠道上的实际下载频率,Tap stream将成为值得你信赖的信息源。

Tap stream⽀持iOS、Android、Windows和Mac应⽤程序。

3、Flurry Analytics (免费)Flurry⼏乎是移动应⽤分析的“⾏业标准”。

Flurry帮助你跟踪⽤户会话,以便您可以看到⽤户在操作App时遇到了什么困难。

你也可以创建⾃定义⼈群分组,以求更好地了解App的⽤户群体。

4、Capptain (含付费项⽬)Capptain是⼀款实时分析⼯具,它看起来就像是⼀组数据仪表板。

不仅为你跟踪实时发⽣的⽤户⾏为,更可以监测到⽤户的使⽤反馈,甚⾄将⽤户群体进⾏实时分组,基于⽤户的地理位置向他们发送即时消息等等。

Capptain适⽤于iOS、Android,HTML 5,⿊莓,Windows等平台。

iogame代码讲解

iogame代码讲解

iogame代码讲解
iogame是一种基于Java语言的游戏引擎,旨在帮助开发者快速构建2D游戏。

它提供了一系列工具和库,包括图形渲染、物理引擎、音频播放、输入处理等,使得开发者可以更加专注于游戏逻辑的实现而不需要从零开始构建游戏引擎。

iogame的核心组件包括场景管理器、实体组件模型、物理引擎和输入处理模块。

场景管理器负责管理游戏中的场景和元素,实体组件模型用于描述游戏对象的行为和属性,物理引擎用于模拟物体运动和碰撞等物理现象,输入处理模块则用于处理用户输入事件。

在iogame中,游戏逻辑通常被封装在脚本中,这些脚本可以使用Lua语言编写。

Lua脚本可以与Java代码进行交互,从而实现了游戏逻辑的定制和控制。

此外,iogame还支持多种音频格式和图像文件,可以方便地加载和播放游戏资源。

总的来说,iogame提供了一套完整的游戏开发解决方案,使得开发者可以更加高效地构建2D游戏。

如果您想了解更多关于iogame 的信息,建议查阅官方文档或相关教程。

aio 原理

aio 原理

AIO 是一种异步I/O 模型,其原理是在I/O 操作过程中,应用程序不会等待I/O 操作的完成,而是继续执行其他任务。

当I/O 操作完成后,应用程序会收到通知,然后继续处理数据。

在AIO 中,应用程序向操作系统提交I/O 操作请求,并立即返回一个描述符(通常是一个文件描述符),该描述符可以用于标识和跟踪该I/O 操作。

应用程序可以继续执行其他任务,而操作系统会在后台处理I/O 操作。

当I/O 操作完成时,操作系统会通过某种机制(如信号或回调函数)通知应用程序。

AIO 的优点是可以提高应用程序的效率和响应性。

由于应用程序在等待I/O 操作完成时可以继续执行其他任务,因此可以提高整体性能。

同时,由于应用程序只在I/O 操作完成后才处理数据,因此可以更快速地响应用户输入或其他事件。

需要注意的是,AIO 并不是万能的,它也有一些限制和挑战。

例如,AIO 可能会导致数据竞争和并发问题,因为应用程序在处理数据之前可能无法确定I/O 操作是否已经完成。

此外,AIO 也需要更复杂的编程模型和技术来处理异步编程和事件驱动的编程。

计算机原理--存储器和输入输出设备和总线

计算机原理--存储器和输入输出设备和总线

计算机原理-存储器和I/O设备和总线前言前一篇文章介绍了冯诺依曼体系结构的计算机的基本工作原理,其中主要介绍了CPU的结构和工作原理。

这一篇主要来介绍存储区,总线,以及IO设备等其他几大组件,来了解整个计算机是如何工作的。

这些东西都是看得见摸得着的硬件,平时我们买电脑时最关注的就是CPU的速度,内存的大小,主板芯片等等的参数。

1. 存储器前面我们以一个简单通用的计算机模型来介绍了CPU的工作方式,CPU执行指令,而存储器为CPU提供指令和数据。

在这个简单的模型中,存储器是一个线性的字节数组。

CPU可以在一个常数的时间内访问每个存储器的位置,虽然这个模型是有效的,但是并不能完全反应现代计算机实际的工作方式。

1.1 存储器系统层次结构在前面介绍中,我们一直把存储器等同于了内存,但是实际上在现代计算机中,存储器系统是一个具有不同容量,不同访问速度的存储设备的层次结构。

整个存储器系统中包括了寄存器、Cache、内部存储器、外部存储。

下图展示了一个计算机存储系统的层次图。

层次越高速度越快,但是价格越高,而层次越低,速度越慢,价格越低。

相对于CPU来说,存储器的速度是相对比较慢的。

无论CPU如何发展,速度多块,对于计算机来说CPU总是一个稀缺的资源,所以我们应该最大程度的去利用CPU。

其面我们提到过CPU周期,一个CPU周期是取1条指令的最短的时间。

由此可见,CPU周期在很大程度上决定了计算机的整体性能。

你想想如果当CPU去取一条指令需要2s,而执行一个指令只需要2ms,对于计算机来说性能是多么大的损失。

所以存储器的速度对于计算机的速度影响是很大的。

对于我们来说,总是希望存储器的速度能和CPU一样或尽量的块,这样一个CPU周期需要的时钟周期就越少。

但是现实是,这样的计算机可能相当的昂贵。

所以在计算机的存储系统中,采用了一种分层的结构。

速度越快的存储器容量越小,这样就能做到在性能和格之间的一个很好的平衡。

价1.2 存储技术计算机的发展离不开存储器的发展,早起的计算机没用硬盘,只有几千字节的RAM可用。

深入浅出谈《信号与系统》

深入浅出谈《信号与系统》

戏谈《信号与系统》第一课什么是卷积傅利叶变换拉普拉斯变换引子很多朋友和我一样,工科电子类专业,学了一堆信号方面的课,什么都没学懂,背了公式考了试,然后毕业了。

先说"卷积有什么用"这个问题。

(有人抢答,"卷积"是为了学习"信号与系统"这门课的后续章节而存在的。

我大吼一声,把他拖出去枪毙!)讲一个故事:张三刚刚应聘到了一个电子产品公司做测试人员,他没有学过"信号与系统"这门课程。

一天,他拿到了一个产品,开发人员告诉他,产品有一个输入端,有一个输出端,有限的输入信号只会产生有限的输出。

然后,经理让张三测试当输入sin(t)(t<1秒)信号的时候(有信号发生器),该产品输出什么样的波形。

张三照做了,花了一个波形图。

"很好!"经理说。

然后经理给了张三一叠A4纸: "这里有几千种信号,都用公式说明了,输入信号的持续时间也是确定的。

你分别测试以下我们产品的输出波形是什么吧!"这下张三懵了,他在心理想"上帝,帮帮我把,我怎么画出这些波形图呢?"于是上帝出现了: "张三,你只要做一次测试,就能用数学的方法,画出所有输入波形对应的输出波形"。

上帝接着说:"给产品一个脉冲信号,能量是1焦耳,输出的波形图画出来!"张三照办了,"然后呢?"上帝又说,"对于某个输入波形,你想象把它微分成无数个小的脉冲,输入给产品,叠加出来的结果就是你的输出波形。

你可以想象这些小脉冲排着队进入你的产品,每个产生一个小的输出,你画出时序图的时候,输入信号的波形好像是反过来进入系统的。

"张三领悟了:" 哦,输出的结果就积分出来啦!感谢上帝。

这个方法叫什么名字呢?"上帝说:"叫卷积!"从此,张三的工作轻松多了。

corundumstudio.socketio pingpong机制 -回复

corundumstudio.socketio pingpong机制 -回复

corundumstudio.socketio pingpong机制-回复“corundumstudio.socketio pingpong机制”是指Corundum Studio 框架中的Socket.IO库的一种机制,用于测试和维护网络连接的状态。

Pingpong机制可以确保客户端和服务器之间的实时通信,以及检测并处理可能的连接问题。

本文将逐步回答关于该机制的相关问题,详细解释其工作原理和应用场景。

在开始之前,我们先了解一下Socket.IO库。

Socket.IO是一个JavaScript 框架,用于实现实时应用程序的双向通信。

它基于WebSocket协议,可以创建持久性连接,支持实时数据传输和事件驱动的通信模型。

Corundum Studio是一个使用Socket.IO开发实时应用程序的框架,提供了一组工具和API来简化开发过程。

现在我们来解答关于“corundumstudio.socketio pingpong机制”的问题。

# 1. 为什么需要pingpong机制?在实时应用程序中,保持网络连接的稳定性对于数据传输和用户体验至关重要。

然而,由于网络环境的不稳定性和其他外部因素,连接可能会断开或延迟。

Pingpong机制的主要目的是检测连接的状态并及时处理任何问题,以保持连接的可靠性和稳定性。

# 2. pingpong机制是如何工作的?Pingpong机制的工作原理如下:- 客户端通过发送ping消息向服务器发送一个心跳包。

- 服务器接收到ping消息后,立即返回pong消息作为响应。

- 客户端接收到pong消息后,可以确认服务器仍然处于活动状态,并重新计时以维持连接。

通过周期性地发送pingpong消息,客户端和服务器可以保持连接的活跃状态,并及时检测到连接问题。

如果在一段时间内未收到服务器的pong 响应,客户端可以认为连接已断开,并尝试重新连接或采取其他措施。

# 3. 如何实现pingpong机制?在Corundum Studio框架中,实施pingpong机制非常简单。

reactor编程模型

reactor编程模型

reactor编程模型Reactor编程模型引言随着计算机技术的不断发展,传统的编程模型逐渐无法满足当今高并发、高吞吐量的需求。

在传统的同步阻塞模型中,每个IO操作都会阻塞线程的执行,导致线程资源的浪费。

为了充分利用系统资源,提高应用程序的性能,一种新的编程模型——Reactor编程模型被提出。

1. Reactor编程模型概述Reactor编程模型是一种基于事件驱动的非阻塞IO模型,它采用了异步的方式来处理IO操作。

在Reactor模型中,应用程序通过注册事件处理器(Event Handler)来处理IO事件。

当IO事件发生时,Reactor会触发相应的事件处理器进行处理。

2. Reactor模式的组成要素2.1 Reactor(反应器)Reactor是Reactor模式的核心组件,负责监听所有的IO事件,并根据事件的类型分发给对应的事件处理器进行处理。

Reactor在一个独立的线程中运行,通过事件循环(Event Loop)来等待和分发事件。

2.2 Handlers(事件处理器)事件处理器负责具体的IO事件处理逻辑。

在Reactor模式中,可以注册多个事件处理器,每个事件处理器负责处理一种类型的IO事件。

当Reactor接收到事件后,会根据事件类型选择对应的事件处理器进行处理。

3. Reactor模式的工作流程Reactor模式的工作流程可以简单描述为以下几个步骤:3.1 注册事件处理器应用程序首先需要注册事件处理器,包括各种IO事件的处理器。

3.2 启动Reactor应用程序启动Reactor,Reactor开始监听IO事件。

3.3 等待事件Reactor通过事件循环等待事件的发生,一旦有事件发生,Reactor 将该事件交给对应的事件处理器进行处理。

3.4 事件处理事件处理器接收到事件后,根据事件类型执行相应的处理逻辑。

3.5 返回Reactor事件处理器处理完事件后,将处理结果返回给Reactor。

libhv用法 -回复

libhv用法 -回复

libhv用法-回复Libhv是一个使用C语言编写的高性能、跨平台的网络库。

本文章将以"libhv用法"为主题,一步一步回答相关问题。

第一部分:什么是libhv?Libhv是一个开源的网络库,它旨在提供一个高性能、跨平台的网络编程框架。

它是使用C语言编写的,因此可以在各种操作系统上运行,如Windows、Linux、Mac OS等。

Libhv的目标是简化网络编程,并提供丰富的功能,使得开发者能够更容易地构建高性能的网络应用程序。

第二部分:libhv的特性有哪些?Libhv具有许多强大的特性,以下是一些主要的特性:1. 异步IO:Libhv使用异步IO模型,可以同时处理大量的并发连接。

2. 协程支持:Libhv提供了基于协程的编程模型,可以编写简洁、高效的代码。

3. 高性能:Libhv经过优化,具有出色的性能表现。

4. 跨平台支持:Libhv可以在各种操作系统上运行,如Windows、Linux、Mac OS等。

5. TCP/UDP支持:Libhv支持TCP和UDP协议,可以用于开发各种类型的网络应用程序。

6. SSL/TLS支持:Libhv支持SSL/TLS协议,可以保障网络通信的安全性。

7. 轻量级:Libhv的代码量很小,可以很容易地集成到你的项目中。

第三部分:如何使用libhv?使用libhv非常简单,以下是使用libhv的基本步骤:1. 安装libhv:你可以从libhv的官方网站上下载最新的版本。

下载完毕后,解压缩文件并将其拷贝到你的项目目录中。

2. 引入libhv:在你的项目中,需要包含libhv的头文件,并链接libhv 的库文件。

你可以在你的编译脚本中添加相应的编译选项来实现。

3. 初始化libhv:在你的代码中,需要先初始化libhv的环境。

你可以调用hv_init()函数来完成初始化操作。

4. 创建网络对象:你可以调用hv_getaddrinfo()函数来获取一个网络地址对象。

BIO,NIO的区别,使用场景。

BIO,NIO的区别,使用场景。

BIO,NIO的区别,使⽤场景。

⼀、什么是io?i就是input,输⼊,o就是output,输出,合起来就是以流为基本的输⼊输出。

⼆、传统的io传统的服务器端同步阻塞I/O处理(也就是BIO,Blocking I/O):当客户端有请求到服务端的时候,服务端就会开启⼀个线程进⾏处理,当有多个请求进⼊时,就会开启多个线程分别处理对应的请求。

现在的多线程⼀般都使⽤线程池,可以让线程的创建和回收成本相对较低。

在活动连接数不是特别⾼(⼩于单机1000)的情况下,这种模型是⽐较不错的,可以让每⼀个连接专注于⾃⼰的I/O并且编程模型简单,也不⽤过多考虑系统的过载、限流等问题、三:NIO出现的原因背景当⾯对⼗万甚⾄百万级连接的时候,传统的BIO模型是⽆能为⼒的。

随着移动端应⽤的兴起和各种⽹络游戏的盛⾏,百万级长连接⽇趋普遍,此时,必然需要⼀种更⾼效的I/O处理模型。

⼤多数客户端BIO+连接池模型,可以建⽴n个连接,然后当某⼀个连接被I/O占⽤的时候,可以使⽤其他连接来提⾼性能。

但多线程的模型⾯临和服务端相同的问题:如果指望增加连接数来提⾼性能,则连接数⼜受制于线程数、线程很贵、⽆法建⽴很多线程,则性能遇到瓶四:常见的I\O模型对⽐:以socket.read()为例⼦:传统的BIO⾥⾯socket.read(),如果TCP RecvBuffer⾥没有数据,函数会⼀直阻塞,直到收到数据,返回读到的数据。

对于NIO,如果TCP RecvBuffer有数据,就把数据从⽹卡读到内存,并且返回给⽤户;反之则直接返回0,永远不会阻塞。

最新的AIO(Async I/O)⾥⾯会更进⼀步:不但等待就绪是⾮阻塞的,就连数据从⽹卡到内存的过程也是异步的。

换句话说,BIO⾥⽤户最关⼼“我要读”,NIO⾥⽤户最关⼼"我可以读了",在AIO模型⾥⽤户更需要关注的是“读完了”。

NIO⼀个重要的特点是:socket主要的读、写、注册和接收函数,在等待就绪阶段都是⾮阻塞的,真正的I/O操作是同步阻塞的(消耗CPU但性能⾮常⾼)。

阿里sofa框架原理

阿里sofa框架原理

阿里sofa框架原理阿里SOFARPC是一种高性能、开源的远程过程调用(RPC)框架,用于分布式应用程序的开发。

这个框架利用了多种技术和算法,从而为大规模分布式系统的开发提供了强有力的支持。

SOFARPC的核心原理是采用了基于网络IO模型(I/O通道)的异步非阻塞设计。

它支持多种通信协议,包括TCP和HTTP协议等,还支持不同语言的开发框架,如Java、C++、Python等。

此外,SOFARPC为多种场景提供了不同的协议栈和负载均衡算法,可以通过配合使用进行优化。

具体地说,SOFARPC框架主要分为三个层次。

第一层是底层通信层,它利用NIO(无阻塞I/O)技术实现了高效的网络通信,支持TCP、HTTP等常见协议。

在底层通信层中,SOFARPC提供了基于Netty框架的抽象层,可以轻松地为上层应用程序提供跨语言、跨平台的RPC调用服务。

第二层是RPC框架层,它承担了RPC的消息编解码、协议转换、服务注册等任务。

在RPC框架层中,SOFARPC提供了一整套完整的RPC调用框架,包括方法调用管理、序列化/反序列化、动态代理、异步编程等功能,用于帮助开发人员快速构建RPC应用。

在这个层次,SOFARPC还提供了多种RPC调用方式,如阻塞式、非阻塞式、同步式、异步式等,以适应不同的应用场景。

第三层是服务治理层,它包括了服务发现、路由、负载均衡、故障转移、性能监控等多种功能,可以更好地管理和控制分布式应用程序的运行状态。

在服务治理层中,SOFARPC提供了多种路由与负载均衡的算法,如基于权重的负载均衡、一致性哈希算法等,以及自适应失效切换、延迟故障检测等策略,用于提高系统的可用性和稳定性。

总之,阿里SOFARPC框架凭借其高性能、可扩展、可靠性以及开箱即用等优点,成为众多互联网企业、金融、游戏等行业的首选分布式应用程序开发框架。

六年级常见易错字音训练50题

六年级常见易错字音训练50题

六年级毕业复习题一常见易错字音训练50题说明:1到11题主要考查多音字;12到20题主要考查形近字;21到30题主要考查习惯性误读;31到41题为成语练习;42到50题为综合性练习。

1. 下列各组词语中加点的字的读音,与所给注音全都相同的一组是()A. 拗niù拗口违拗执拗脾气很拗B. 载zài 装载载体运载怨声载道C. 济jì救济赈济济济扶危济贫D. 巷xiàng 小巷巷道巷陌街谈巷议2. 下列各组词语中加点的字的读音,与所给注音全都相同的一组是()A. 应yìng 应届应变应接不暇应运而生B. 量liàng 量刑量杯量体裁衣量力而行C. 血xuè血迹心血狗血喷头呕心沥血D. 作zuò作祟作坊作茧自缚作威作福3. 下列组词中加点的字的读音,与所给注音全都相同的一组是()A. 散sǎn 散文散装散播散失B. 供gōng 供销供奉供职供电C. 角jué角色角逐角斗口角D. 坊fáng 油坊磨坊牌坊粉坊4.下列各组词中加点的字的读音,与所给注音全都相同的一组是()A. 难nàn 发难责难刁难困难B. 着zháo 着急着迷着落着眼C. 模mó模范模型模样模具D. 称chèn 称心称职对称匀称5. 下列加点的字,字音全部正确的一组是( )A. 请帖(tiě)妥帖(tiē)碑帖(tiě)俯首帖(tiē)耳B. 仆(pú)从仆(pú)仆仆(pú)人前仆(pú)后继C. 炮(páo)烙炮(pào)击炮(pào)灰如法炮(pào)制D. 劳累(lèi)累(léi)赘连累(lěi)连篇累(lěi)牍6.下列各组词语中加点字的读音完全相同的一组是()A. 着力着急着手成春不着边际B. 处置处所泰然处之处心积虑C. 和谈和睦和衷共济一唱百和D. 强迫强使强词夺理强人所难7.下列各组词语中加点字的读音完全相同的一组是()A. 翘盼翘首翘楚翘尾巴B. 露天露富露风露马脚C. 风靡颓靡萎靡所向披靡D. 悄声悄寂悄悄悄无声息8.下列各组词语加点字的读音完全相同的一组是()A. 鲜见鲜有鲜为人知屡见不鲜B. 停泊飘泊淡泊名利水泊梁山C. 应允应许应声而倒应了一声D. 劲敌遒劲疾风劲草刚劲挺拔9. 下列词语中加点字的读音,有一处错误的一组是()A. 辟(bì)谣应(yìng)验挫(cuò)伤角(jué)逐B. 属(zhǔ)意旋(xuán)风孑孓(jié)眯(mí)眼C. 落泊(bó)屏(bìng)除泄露(lù)鹰隼(sǔn)D. 蔓菁(jīng)藤蔓(màn)迷惘(mǎng)整饬(chì)10.下列词语中加点字的注音全都正确的一组是()A. 躯壳(ké) 狙(jū)击稽(jī)查棹(zhào)船B. 行(háng)伍泡(pāo)桐缉(jī)私谥(shì)号C. 呜咽(yè) 商埠(pù) 圩(wéi)堤蹊(qī)跷D. 弄(nòng)堂朴(pō)刀铁骑(qí) 赧(nǎn)颜11. 下列加点的字,字音全部正确的一组是( )A. 靓(jìng)妆济(jì)世安民勾(gòu)当削(xuē)足适履B. 症(zhēng)结云蒸霞蔚(wèi)兴(xìng)奋呼天抢(qiāng)地C. 折(shé)耗不绝如缕(lǚ)啁啾(jiū) 锐不可当(dǎng)D. 祛(qū)除断壁颓垣(yuán)痈疽(jū) 兵不血(xiě)刃12.下列词语中加点字的读音与所给字音全相同的一项是()A.hún 荤腥浑浑噩噩诨号浑金璞玉B. dú牛犊穷兵黩武文牍买椟还珠C. jié桔梗佶屈聱牙诘问洁身自好D. huì晦涩诲淫诲盗霉气悔恨不已13.下列加点的字的读音,全都相同的一组是()A. 金箍痼癖训诂禁锢B. 羁縻奢靡糜烂靡丽C. 媲美睥睨癖好劈柴D. 祈求颀长耆老肚脐14. 下列词语中加点字的读音全都不相同的一组是()A. 懦夫儒雅嗫嚅相濡以沫B. 苍茫呛水仓促沧海一粟C. 骁勇侥幸妖娆百折不挠D. 诽谤磅礴膀胱金榜题名15. 下列各组词语中加点的字的读音,全都相同的一组是()A. 磊落累及擂鼓助威护苗保蕾B. 蹊跷栖息休戚相关芳草萋萋C. 日晷瑰丽奉为圭臬大家闺秀D. 晦气悔悟毁誉参半诲人不倦16. 下列词语中加点字的读音全都不相同的一组是()A. 忏悔纤巧聚而歼之阡陌纵横B. 禁受禁区弱不禁风毫无禁忌C. 昭示召开沼泽地带招募壮士D. 长铗脸颊汗流浃背挟私报复17.下列各组词语中的加点字,读音全都相同的一组是()A.匮乏振聋发聩溃不成军功亏一篑B.寒暄喧宾夺主烜赫一时大肆渲染C.蠕动孺子可教相濡以沫性格懦弱D.憔悴猝不及防鞠躬尽瘁出类拔萃18. 下列词语中加点字的注音,全都正确的一组是()A. 窈窕(tiāo) 轻佻(tiāo) 眺(tiào)望挑(tiāo)三拣四B. 湍(tuān)急揣(chuǎi)测喘(chuǎn)息惴(zhuì)惴不安C. 吝啬(sè) 蔷(qiāng)薇稼穑(sè) 帆樯(qiáng)如林D. 雨霁(jì) 跻(jǐ)身侪(chái)辈无济(jì)于事19.下列词语中加点字的注音,全都正确的一组是()A. 修葺(qì) 楷(kǎi)模愠(wēn)怒病入膏肓(huāng)B. 编纂(zhuàn) 驾驭(yù) 赏赉(lài) 稳操胜券(quàn)C. 货栈(jiàn) 老妪(yù) 鸟瞰(kàn) 迥(jiǒng)乎不同D. 溘(kè)然豆豉(chǐ) 媾(gòu)和踽(jǔ)踽独行20.下列词语中加点字的注音,全都正确的一组是()A. 誊(téng)写名誉(yù) 屠戮(lù) 戳(chuò)穿B. 婵媛(yuán) 令嫒(yuán) 恸(tòng)哭联袂(mèi)C. 嗔(chēn)怪瞋(chēn)视伛偻(lǚ) 佝偻(lóu)D. 醇(chún)香讣(fù)告瑰(guī)宝梦魇(yè)21. 下列词语中加点字的读音,全都正确的一组是()A. 煞(shā)尾媲(pì)美血(xiě)晕溃(kuì)脓B. 择(zhāi)菜轧(zhá)钢脂肪(fáng)嫉(jí)妒C. 征辟(bì)摈(bìn)除訾(zǐ)议间(jiàn)阻D. 付梓(xīn)枕(zhěn)头说(shuō)客趑(zī)趄22. 下列词语中加点字的注音,全都正确的一组是()A. 疏浚(jùn)翘(qiáo)首懿(yì)行睿(ruì)智B. 解(jiě)数对峙(zhì)寒颤(zhàn)炮(páo)烙C. 馨(xīn)香剽(piāo)悍麻痹(bì)埋(mái)怨D. 口讷(nà)梵(fàn)语粳(jīng)米忸怩(ní)23. 下列词语中加点字的注音,全都正确的一组是()A. 粗犷(guǎng)眼睑(liǎn)什(shí)物撒(sā)娇B. 攥(zuàn)着泥淖(nào)洗涮(shuā)阴霾(mái)C. 熟稔(rěn)怨艾(yì)抢(qiǎng)白蒙(mēng)骗D. 鬼蜮(yù)装帧(zhēng)挟(xié)制折(shé)耗24.下列词语中加点字的注音,全都正确的一组是()A. 稼穑(sè) 同胞(pāo) 宽宥(yòu)堤(dī)坝B. 契(qì)机摄(shè)影剖(pōu)析麻痹(bì)C. 拈阄(qiū) 呵(hē)欠句读(dòu) 确凿(záo)D. 潜(qián)水便秘(mì) 皴(qūn)裂挫(cuò)折25. 下列词语中加点字的注音,全都正确的一组是()A. 虔(qián)诚点缀(zhuì)掉色(shǎi) 呕吐(tù)B. 恭谨(jǐn)讥诮(qiào)照片(piān) 账簿(bù)C. 骠(biāo)勇镂(lòu)空辟(pì)谣蒙(mēng)骗D. 盘桓(huán)横亘(gèng)寒碜(chen) 伶仃(dīng)26. 下列词语中加点字的注音,全都正确的一组是()A. 惩创(chuàng) 绿(lù)林僭(jiàn)越场(cháng)院B. 傀(kuǐ)儡偌(ruò)大思量(liàng) 杉(shā)木C. 韬(tāo)略雕砌(qì) 省(xǐng)亲绦(tāo)虫D. 磅(páng)礴滂(páng)沱忖度(duó) 渣滓(zǐ)27.下列加点字注音错误最多的一组是()A.汲(jī)取针砭(biǎn) 内讧(hòng) 奶酪(lào)B.包庇(bì) 驯(xùn)马成绩(jī) 迁徙(xǐ)C.缭绕(rǎo) 饿殍(piǎo) 匕(bì)首漂(piāo)白D. 弄(nòng)权凹(ào)陷赔偿(cháng) 谄媚(mèi)28.下列词语中加点字的读音,错两个的一组是()A. 杜撰(zhuàn) 睚眦(zì) 晕(yūn)车从(cōng)容B. 薄(bó)利讽(fěng)刺菲(fěi)薄琴弦(xuán)C. 拙(zhuō)劣氤氲(yūn) 匹(pī)夫隽(jùn)秀D. 脂(zhǐ)肪吹嘘(xū) 阐(chǎn)明曲(qū)解29. 下列词语中加点字的读音,有一处错误的一组是()A. 果脯(pǔ) 中(zhòng)肯同胞(bāo) 枸杞(qǐ)B. 差(chā)额给(jǐ)予供(gòng)给山冈(gǎng)C. 根茎(jìng) 憎(zēng)恨愚氓(máng) 锃(zèng)亮D. 粗糙(zào) 牌坊(fāng)俨(yán)然属(zhǔ)望30. 下列词语中加点字的注音,全都正确的一组是()A. 胡同(tōng)蕴藉(jiè)恪(kè)守彷(páng)徨B. 伶俜(pīng)宽宥(yòu)居(jù)然瘐(yǔ)毙C. 祓(fú)除怃(wǔ)然倥(kōng)侗抹(mā)布D. 咂(zhā)摸伉(kàng)俪债券(quàn)号(háo)啕31. 下列成语中加点的字,字音全部正确的一组是()A. 人才济(jǐ)济外强中干(gàn)风声鹤唳(lì)比肩继踵(zhǒng)B. 怙恶不悛(quān)天崩地坼(chè)鲜(xiǎn)为人知相形见绌(chù)C. 大腹便(pián)便虚与委蛇(yí)沆(hàng)瀣一气茅塞(sāi)顿开D. 专横(hèng)跋扈心广体胖(páng)鳞次栉(zhì)比载(zài)歌载舞32. 下列成语中加点的字,字音有误的一组是()A. 箪食(sì)壶浆患难(nàn)与共挑肥拣(jiǎn)瘦含英咀(jǔ)华B. 戎马倥偬(zǒng) 无色无臭(xiù) 令人咋(zé)舌卖官鬻(yù)爵C. 方兴未艾(ài) 掎(jī)角之势嗟(jiē)来之食一针见血(xuè)D. 纵横捭(bǎi)阖歃(shà)血为盟相(xiàng)机行事调(tiáo)嘴学舌33.下列成语中加点的字,字音有误的一组是()A. 同舟共济(jì)铤(tǐng)而走险身无长(zhǎng)物审时度(duó)势B. 衣(yī)锦还乡数(shǔ)典忘祖色厉内荏(rěn)目不暇给(jǐ)C. 英姿飒(sà)爽生杀予(yǔ)夺戎马倥偬(zǒng)铁杵(chǔ)成针D. 否(pǐ)极泰来蓬筚(bì)生辉潜(qián)移默化一抔(póu)黄土34.下列成语中加点字音全对的一组是()A. 稗(bài)官野史别出机杼(zhù)并行不悖(bèi)暴戾恣睢(suī)B. 蹉(cuō)跎岁月差(chā)强人意瞠(chēng)目结舌鞭辟(bì)入里C. 比肩接踵(zhǒng)三缄(jiān)其口泽被(pī)后世觥(gǒng)筹交错D. 刚愎(bì)自用殚(dān)精竭虑丢三落(là)四硕果累(lěi)累35.下列成语中注音全部错误的一组是( )A. 间(jiàn)不容发否(pǐ)极泰来奴颜婢(bēi)膝魑(chī)魅魍魉B. 龇(cī)牙咧嘴汗流浃(jiá)背横(hèng)行霸道徇(xún)私枉法C. 封妻荫(yìn)子抛头露(lòu)面罪行累(léi)累安步当(dàng)车D. 强(qiǎng)词夺理为(wéi)虎作伥数见不鲜(xiǎn)寡廉鲜(xiǎn)耻36. 下列成语中加点的字,字音全部正确的一组是()A. 不瘟(wēn)不火济(jǐ)济一堂风驰电掣(chè)牟(mú)取暴利B. 得陇(lǒng)望蜀戛(gá)然而止殒身不恤(xù)安土重(zhòng)迁C. 甘之如饴(yí)长歌当(dàng)哭弱不禁(jīn)风扛(káng)鼎之作D. 矫(jiǎo)揉造作模棱(léng)两可良莠(yǒu)不齐强(qiǎng)词夺理37. 下列成语中加点的字,字音全部正确的一组是()A. 自怨自艾(yì)供(gòng)不应求风流倜(tì)傥舐(shì)犊情深B. 莘(shēn)莘学子疾风劲(jìng)草金蝉脱壳(qiào)一发(fā)千钧C. 揠(yān)苗助长反唇相讥(jī)不卑(bēi)不亢明眸(móu)皓齿D. 怨声载(zài)道饮鸩(zhèn)止渴一暴(pù)十寒窗明几(jī)净38. 下列成语中加点的字,字音全部正确的一组是()A. 良莠(yǒu)不齐买椟(dǔ)还珠数见不鲜(xiān) 累(lěi)教不改B. 岿(kuī)然不动一丘之貉(háo)绿(lù)林好汉臭(chòu)味相投C. 泾(jīng)渭分明量(liáng)才录用垂涎(xián)三尺吹毛求疵(cī)D. 噤(jìn)若寒蝉桀骜不驯(xùn) 将(jiāng)计就计集腋(yè)成裘39. 下列成语中加点的字,字音有误的一组是()A. 强弩(nǔ)之末日薄(bó)西山一叶扁(piān)舟呱(gū)呱坠地B. 醍(tí)醐灌顶素昧(mèi)平生万马齐喑(yīn)沐猴而冠(guàn)C. 瑕不掩瑜(yù)咬文嚼(jué)字弃如敝屣(xǐ)不容置喙(huì)D. 以讹(é)传讹相濡(rú)以沫因噎(yē)废食大煞(shā)风景40. 下列词语中加点字的注音,全都正确的一组是()A. 桎梏(gù)觊(jì)觎贻(yí)误戏谑(xuè)B. 候(hòu)车玷(diàn)污囹圄(yǔ)奇葩(bā)C. 恪(kè)守广袤(mào)追溯(sù)绮(qí)丽D. 氛(fèn)围隽(juàn)永停泊(bó)文娱(yù)41. 下列词语中加点字的注音,全都正确的一组是()A. 谛(dì)听处(chù)境皈(guī)依投奔(bèn)B. 供(gòng)职攻讦(jié)镌(juàn)刻滇(diān)池C. 粘(zhān)连应(yīng)届熨(yùn)帖瓜蔓(wàn)D. 狭隘(ài)帛(bó)书匹(pǐ)配拘泥(nì)42. 下列词语中加点字的注音,全都正确的一组是()A. 别(biè)扭酵(jiào)母冠(guān)冕绾(wǎn)发B. 脚踝(huái) 绚(xuàn)丽狡黠(xié) 孱(chán)弱C. 秘(bì)鲁渲(xuān)染龋(qǔ)齿遒(qiú)劲D. 檄(xí)文接洽(qià) 跛(bó)脚筵(yàn)席43. 下列加点的字的注音,有错误的一组是()A. 按捺(nà) 酝酿(niàng) 发酵(jiào) 戈(gē)壁B. 崔嵬(wéi) 毗(pí)邻信札(zhā) 赋予(yǔ)C. 龟(jūn)裂拓(tà)本教诲(huì) 牲畜(chù)D. 市侩(kuài) 掮(qián)客砧(zhēn)板泥(nì)古44. 下列词语中加点字的注音,全都正确的一组是()A. 喟(kuì)叹庇(pì)护罹(lí)难偈(jì)语B. 渎(dú)职劲(jìn)敌垂涎(xián)绰(chuò)约C. 缜(zhěn)密泅(qiú)渡起哄(hòng)怃(wǔ)然D. 悭(qiān)吝诟(gòu)骂赝(yàn)品蹊(xī)跷45. 下列词语中加点字的注音,全都正确的一组是()A. 绯(fěi)闻弹劾(hé) 靛(diàn)青荷花淀(diàn)B. 靡(mí)费哂(shěn)笑涨(zhǎng)幅压轴(zhòu)戏C. 蓦(mù)然融资(zī) 服膺(yīng) 刽(guì)子手D. 赈(zhèn)灾萎(wēi)缩宁(nìng)可树行(hàng)子46. 下列加点的字,注音有两处错误的是()A. 纤(qiān)细一爿(pán) 枭(xiāo)雄发横(hèng)财B. 罪愆(yǎn) 艾(ài)草淡泊(bó) 剥(bāo)花生C. 渔父(fù) 搽(chā)粉婆娑(suō) 涮(shuàn)火锅D. 道行(héng) 萦绕(rào) 处(chǔ)罚削(xuē)苹果47.下列词语中加点字的注音,全都正确的一组是()A. 嬗(shàn)变未雨绸缪(móu) 曝(bào)光晶莹剔(tì)透B. 沉疴(kē) 难(nán)兄难弟瓜葛(gé) 不胜(shēng)枚举C. 懵(méng)懂宵衣旰(gàn)食河沿(yán) 泾(jīng)渭分明D. 档(dàng)次惟妙惟肖(xiào) 亵(xiè)渎剜(wān)肉补疮48. 下列词语中加点字的读音,错两个的一组是()A. 奔(bèn)命一叶扁(piān)舟甄(zhēn)别不胜(shēng)酒力B. 胚(pēi)芽颐(yí)指气使亲昵(nì)椎(zhuī)心泣血C. 成熟(shú)前倨(jù)后恭档(dǎng)次锋(fēng)芒毕露D. 颈(jìng)椎臧(zāng)否人物捆扎(zhā)引吭(háng)高歌49.下列词语中加点的字的读音,有误的一组是()A. 潸(shān)然命运多舛(chuǎn) 宁谧(mì) 以儆(jǐng)效尤B. 地壳(qiào) 前倨(jù)后恭苑囿(yòu) 千载(zǎi)难逢C. 潜(qián)逃啼饥号(háo)寒赍(jī)赏便(pián)宜行事D. 孝悌(tì) 荷(hè)枪实弹喑哑(yǎ) 退避三舍(shè)50. 下列词语中加点字的注音,全都正确的一组是()A. 脊髓(suǐ)以儆(jǐng)效尤荫庇(bì)熏陶渐(jiàn)染B. 落(lào)枕螳臂当(dāng)车契(qì)据群雄角(jiǎo)逐C. 聒(guō)噪管窥蠡(lí)测谄(xiàn)媚莞(wǎn)尔一笑D. 朔(shuò)风自作(zuò)自受羞赧(nǎn)时乖命蹇(jiǎn)1一小撮cuō 2 一爿pán 3 一行人xíng 4 一沓纸dá5 一绺liǔ6 一幢zhuàng7 一撮毛zuǒ8 乜斜miēxie9 层见叠出xiàn 10 万俟(姓) mòqí11 三闾lǘ12 上供gòng 13 下颌hé14 士大夫dà15 大不韪wěi16 大厦shà17 大纛dào 18 女娲wā19 小篆zhuàn 20 山大王dài21 干涸hé22 广袤mào 23 门槛kǎn24 马鬣liè25 不屑xiè26 不啻chì27 不辍chuò28 与会yù29 亢旱kàng 30 仇(姓) qiú31 仓廪lǐn32 内讧hòng33 分蘖niè34 勾当gòu 35 区(姓) ōu36 反诘jié37 太监jiàn 38 廿四niàn 39 支吾wú40 日晷guǐ41 木屐jī42 木樨xi 43 舷窗xián 44 气馁něi45 水浒hǔ46 水獭tǎ47 火钵bō48 跻身jī49 牛虻méng 50 讥诮qiào 51 贝壳ké52 车骑qí53 长颈鹿jǐng54 丛冢zhǒng55 东莞guǎn56 仫佬族mù57 凹陷āo58 刊载zǎi59 包扎zā60 包庇bì61 卡宾枪kǎ62 发酵jiào 63 发憷chù64 古刹chà65 句读dòu 66 召开zhào 67 可汗kè68 处女chǔ69 处理chǔ70 央浼měi71 夯实hāng72 宁(姓) níng73 对峙zhì74 对称chèn 75 巨擘bò76 扒手pá77 打场cháng 78 永遇乐lè79 玄奘zàng 80 瓜葛gé81 田塍chéng 82 甲胄zhòu 83 白术zhú84 秸秆jiē85 目眩xuàn 86 石碣jié87 穴居xué88 讪讪shàn89 轧钢zhá90 亚洲yà91 任(姓) rén 92 仿佛fú93 伉俪kàng 94 休憩qì95 会稽huìjī96 伛偻yǔlǚ97 关卡qiǎ98 冲床chòng 99 凫水fú100 刚劲jìng参考答案:1.B (A拗ào口违拗ào C济济jǐD巷hàng道)2.C (A应yīng届B量liáng杯D作zuō坊)3.C(A散sàn播散sàn失B供gòng奉供gòng职D牌坊fāng)4.D (A困难nán B着zhuó眼着zhuó落C模mú样模mú具)5.D (A碑帖tiè B前仆pū后继 C如法炮páo制)6.D (A着zháo急其余读 zhuó B处chù所其余读chǔ C一唱百和hè其余读hé)7.C (A翘qiào尾巴其余读qiáo B露lù天其余读lòu C都读mǐ D悄悄qiāo 其余读qiǎo)8.D ( A屡见不鲜xiān 其余读xiǎn B水泊pō梁山其余读bó C应yìng声而倒其余读yīng D都读jìng)9.A ( A辟pìB 旋xuàn孓jué C 屏bǐng露lòu D蔓wàn惘wǎng)10.B (A壳qiào C埠bù D弄lòng)11.A ( B兴xīng C当dāng D血xuè)12.B( A 荤hūn诨hùn C诘jí屈聱牙 D霉méi悔huǐ)13.D( A 箍gū痼、锢都读gù诂gǔ B靡mǐ丽其余读mí C媲、睥读pì癖、劈读pǐ D都读qí)14.C ( A 懦nuò其余读rú B呛qiāng其余读cāng C骁xiāo侥jiǎo娆ráo挠náo D谤bàng榜bǎng其余读páng )15.B (A擂读léi其余读lěi C晷读guǐ其余读guī D悔、毁读huǐ晦、诲读huì)16.A (A忏chàn纤xiān歼jiān阡qiānB禁依次为jīn jìn jīn jìn C召zhào沼zhǎo其余读zhāoD浃jiā挟xié其余读jiá)17.A(B烜xuǎn 渲xuàn其余读xuān C懦nuò其余读rú D猝cù其余读cuì)18.B ( A窕tiǎo C蔷qiáng D跻jī)19.D (A愠yùn B纂zuǎn C栈zhàn)20.C ( A戳chuō B嫒ài D魇yǎn)21.C (A溃huì B择zhái D 梓zǐ说shuì)22.A (B解xiè C埋mán D讷nè)23.C (A睑jiǎn B 涮shuàn D帧zhēn )24.B ( A胞bāo C阄jiū D皴cūn )25.A (B 片piàn C骠piào D亘gèn)26.C ( A创chuāng B 量liang D滂Pāng )27.C( A 汲jí砭biān B绩jì C绕rào 匕bǐ漂piǎo D凹āo )28.A ( A晕yùn 从cóng B弦xián C匹pǐ D脂zhī)29.A ( A脯fǔ B供gōng 冈gāng C茎jīng 氓méng D糙cāo俨yǎn)30.C(A同tòng B居jū D咂zā)31.B (A干gān C塞sè D胖pán)32.C (掎jǐ角之势一针见血xiě )33.A (长cháng)34.A (B辟pì C被bèi觥gōng D累léi)35. B (B 龇zī浃jiā横héng 徇xùn A 间jiān 婢bì C露lù累lěi D 为wèi 数见不鲜xiān)36.D (A牟móu B戛jiá C扛gāng )37.D (A 供gōng B 发fà C 揠yà )38.D ( A 椟dú B 貉hé C 量liàng)39.C(瑜yú嚼jiáo)40.A (B 葩pā C 绮qǐ D氛fēn 娱yú )41.D (A 处chǔ B镌juān C熨yù)42.A ( B黠xiá C渲xuàn D 跛bǒ筵yán)43.B ( 札zhá )44.C(A庇bì B劲jìng D蹊qī)45.B ( A绯fēi C蓦mò D萎wěi )46.C (A.纤xiān B愆qiān C父fǔ搽cháD削xiāo)47.D (A 剔tī B 胜shèng C 懵měng )48.D ( A胜shèng B椎chuí C档dàng D颈jǐng扎zā )49.C (便biàn宜行事)50.D (A渐jiān B角jué C谄chǎn)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络程序入门后的第一件是就是学会选择合适的io模型,这对于一个网络程序来说非常重要,特别是性能。

当前Windows支持的各种Socket I/O模型如下:select模型WSAAsyncSelect模型WSAEventSelect模型Overlapped I/O 事件通知模型Overlapped I/O 完成例程模型IOCP模型(这里以下的介绍援引csdn里“flyinwuhan(制怒·三思而后行)”的一篇诙谐有趣而又生动的文章做说明。

)老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。

他们的信会被邮递员投递到他们的信箱里,这和Socket模型非常类似。

select模型老陈非常想看到女儿的信。

以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信~~~~~在这种情况下,“下楼检查信箱”然后回到楼上耽误了老陈太多的时间,以至于老陈无法做其他工作。

select模型和老陈的这种情况非常相似:周而复始地去检查......如果有数据......接收/发送.......使用线程来select应该是通用的做法:procedure TListenThread.Execute;varaddr : TSockAddrIn;fd_read : TFDSet;timeout : TTimeVal;ASock,MainSock : TSocket;len, i : Integer;beginMainSock := socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );addr.sin_family := AF_INET;addr.sin_port := htons(5678);addr.sin_addr.S_addr := htonl(INADDR_ANY);bind( MainSock, @addr, sizeof(addr) );listen( MainSock, 5 );while (not Terminated) dobeginFD_ZERO( fd_read );FD_SET( MainSock, fd_read );_sec := 0;_usec := 500;if select( 0, @fd_read, nil, nil, @timeout ) > 0 then //至少有1个等待Accept的connection beginif FD_ISSET( MainSock, fd_read ) thenbeginfor i:=0 to fd_read.fd_count-1 do //注意,fd_count <= 64,也就是说select只能同时管理最多64个连接beginlen := sizeof(addr);ASock := accept( MainSock, addr, len );if ASock <> INVALID_SOCKET then....//为ASock创建一个新的线程,在新的线程中再不停地selectend;end;end;end; //while (not self.Terminated)shutdown( MainSock, SD_BOTH );closesocket( MainSock );end;WSAAsyncSelect模型后来,老陈使用了微软公司的新式信箱。

这种信箱非常先进,一旦信箱里有新的信件,盖茨就会给老陈打电话:喂,大爷,你有新的信件了!从此,老陈再也不必频繁上下楼检查信箱了,牙也不疼了,你瞅准了,蓝天......不是,微软~~~~~~~~微软提供的WSAAsyncSelect模型就是这个意思。

WSAAsyncSelect模型是Windows下最简单易用的一种Socket I/O模型。

使用这种模型时,Windows会把网络事件以消息的形势通知应用程序。

首先定义一个消息标示常量:const WM_SOCKET = WM_USER + 55;再在主Form的private域添加一个处理此消息的函数声明:privateprocedure WMSocket(var Msg: TMessage); message WM_SOCKET;然后就可以使用WSAAsyncSelect了:addr : TSockAddr;sock : TSocket;sock := socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );addr.sin_family := AF_INET;addr.sin_port := htons(5678);addr.sin_addr.S_addr := htonl(INADDR_ANY);bind( m_sock, @addr, sizeof(SOCKADDR) );WSAAsyncSelect( m_sock, Handle, WM_SOCKET, FD_ACCEPT or FD_CLOSE );listen( m_sock, 5 );....应用程序可以对收到WM_SOCKET消息进行分析,判断是哪一个socket产生了网络事件以及事件类型:procedure TfmMain.WMSocket(var Msg: TMessage);varsock : TSocket;addr : TSockAddrIn;addrlen : Integer;buf : Array [0..4095] of Char;begin//Msg的WParam是产生了网络事件的socket句柄,LParam则包含了事件类型case WSAGetSelectEvent( Msg.LParam ) ofFD_ACCEPT :beginaddrlen := sizeof(addr);sock := accept( Msg.WParam, addr, addrlen );if sock <> INVALID_SOCKET thenWSAAsyncSelect( sock, Handle, WM_SOCKET, FD_READ or FD_WRITE or FD_CLOSE );end;FD_CLOSE : closesocket( Msg.WParam );FD_READ : recv( Msg.WParam, buf[0], 4096, 0 );FD_WRITE : ;end;WSAEventSelect模型后来,微软的信箱非常畅销,购买微软信箱的人以百万计数......以至于盖茨每天24小时给客户打电话,累得腰酸背痛,喝蚁力神都不好使~~~~~~微软改进了他们的信箱:在客户的家中添加一个附加装置,这个装置会监视客户的信箱,每当新的信件来临,此装置会发出“新信件到达”声,提醒老陈去收信。

盖茨终于可以睡觉了。

同样要使用线程:procedure TListenThread.Execute;varhEvent : WSAEvent;ret : Integer;ne : TWSANetworkEvents;sock : TSocket;adr : TSockAddrIn;sMsg : String;Index,EventTotal : DWORD;EventArray : Array [0..WSA_MAXIMUM_WAIT_EVENTS-1] of WSAEVENT;begin...socket...bind...hEvent := WSACreateEvent();WSAEventSelect( ListenSock, hEvent, FD_ACCEPT or FD_CLOSE );...listen...while ( not Terminated ) dobeginIndex := WSAWaitForMultipleEvents( EventTotal, @EventArray[0], FALSE, WSA_INFINITE, FALSE );FillChar( ne, sizeof(ne), 0 );WSAEnumNetworkEvents( SockArray[Index-WSA_WAIT_EVENT_0], EventArray[Index-WSA_WAIT_EVENT_0], @ne );if ( ne.lNetworkEvents and FD_ACCEPT ) > 0 thenbeginif ne.iErrorCode[FD_ACCEPT_BIT] <> 0 thencontinue;ret := sizeof(adr);sock := accept( SockArray[Index-WSA_WAIT_EVENT_0], adr, ret );if EventTotal > WSA_MAXIMUM_WAIT_EVENTS-1 then//这里WSA_MAXIMUM_WAIT_EVENTS同样是64beginclosesocket( sock );continue;end;hEvent := WSACreateEvent();WSAEventSelect( sock, hEvent, FD_READ or FD_WRITE or FD_CLOSE );SockArray[EventTotal] := sock;EventArray[EventTotal] := hEvent;Inc( EventTotal );end;if ( ne.lNetworkEvents and FD_READ ) > 0 thenbeginif ne.iErrorCode[FD_READ_BIT] <> 0 thencontinue;FillChar( RecvBuf[0], PACK_SIZE_RECEIVE, 0 );ret := recv( SockArray[Index-WSA_WAIT_EVENT_0], RecvBuf[0], PACK_SIZE_RECEIVE, 0 );......end;end;end;Overlapped I/O 事件通知模型后来,微软通过调查发现,老陈不喜欢上下楼收发信件,因为上下楼其实很浪费时间。

于是微软再次改进他们的信箱。

新式的信箱采用了更为先进的技术,只要用户告诉微软自己的家在几楼几号,新式信箱会把信件直接传送到用户的家中,然后告诉用户,你的信件已经放到你的家中了!老陈很高兴,因为他不必再亲自收发信件了!Overlapped I/O 事件通知模型和WSAEventSelect模型在实现上非常相似,主要区别在“Overlapped”,Overlapped模型是让应用程序使用重叠数据结构(WSAOVERLAPPED),一次投递一个或多个Winsock I/O请求。

相关文档
最新文档