- 浏览: 595450 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
谈完了整个启动的流程,您应该会知道,在整个启动的过程当中,是否能够成功的驱动我们主机的硬件配备, 是核心 (kernel) 的工作!而核心一般都是压缩档,因此在使用核心之前,就得要将他解压缩后, 才能加载主内存当中。
另外,为了应付日新月异的硬件,目前的核心都是具有『可读取模块化驱动程序』的功能, 亦即是所谓的『 modules (模块化)』的功能啦!所谓的模块化可以将他想成是一个『外挂程序』, 该外挂程序可能由硬件开发厂商提供,也有可能我们的核心本来就支持~不过,较新的硬件, 通常都需要硬件开发商提供驱动程序模块啦!
那么核心与核心模块放在哪?
核心: /boot/vmlinuz 或 /boot/vmlinuz-version;
核心解压缩所需 RAM Disk: /boot/initrd (/boot/initrd-version);
核心模块: /lib/modules/version/kernel 或 /lib/modules/$(uname -r)/kernel;
核心原始码: /usr/src/linux 或 /usr/src/kernels/ (要安装才会有,默认不安装)
如果该核心被顺利的加载系统当中了,那么就会有几个资讯纪录下来:
1.核心版本: /proc/version
2.系统核心功能: /proc/sys/kernel
问题来啦,如果我有个新的硬件,偏偏我的操作系统不支持,该怎么办?很简单啊!
重新编译核心,并加入最新的硬件驱动程序原始码;
将该硬件的驱动程序编译成为模块,在启动时加载该模块
上面第一点还很好理解,反正就是重新编译核心就是了。不过,核心编译很不容易啊! 我们会在后续章节约略介绍核心编译的整个程序。比较有趣的则是将该硬件的驱动程序编译成为模块啦! 关於编译的方法,可以参考后续的第二十二章、原始码与 tarball的介绍。 我们这个章节仅是说明一下,如果想要加载一个已经存在的模块时,该如何是好?
核心模块与相依性
既然要处理核心模块,自然就得要了解了解我们核心提供的模块之间的相关性啦! 基本上,核心模块的放置处是在 /lib/modules/$(uname -r)/kernel 当中,里面主要还分成几个目录:
arch :与硬件平台有关的项目,例如 CPU 的等级等等;
crypto :核心所支持的加密的技术,例如 md5 或者是 des 等等;
drivers :一些硬件的驱动程序,例如显卡、网络卡、PCI 相关硬件等等;
fs :核心所支持的 filesystems ,例如 vfat, reiserfs, nfs 等等;
lib :一些函式库;
net :与网络有关的各项协议数据,还有防火墙模块 (net/ipv4/netfilter/*) 等等;
sound :与音效有关的各项模块;
如果要我们一个一个的去检查这些模块的主要资讯,然后定义出他们的相依性, 我们可能会疯掉吧!所以说,我们的 Linux 当然会提供一些模块相依性的解决方案罗~ 对啦!那就是检查 /lib/modules/$(uname -r)/modules.dep 这个文件啦!他记录了在核心支持的模块的各项相依性。
那么这个文件如何创建呢?挺简单!利用 depmod 这个命令就可以达到创建该文件的需求了!
以上面的范例一为例,我们的 Linux kernel 2.6.x 版本的核心模块扩展名一定是 .ko 结尾的, 当你使用 depmod 之后,该程序会跑到模块标准放置目录 /lib/modules/$(uname -r)/kernel , 并依据相关目录的定义将全部的模块捉出来分析,最终才将分析的结果写入 modules.dep 文件中的呐! 这个文件很重要喔!因为他会影响到本章稍后会介绍的 modprobe 命令的应用!
核心模块的观察
那你到底晓不晓得目前核心加载了多少的模块呢?粉简单啦!利用 lsmod 即可!
使用 lsmod 之后,系统会显示出目前已经存在於核心当中的模块,显示的内容包括有:
模块名称(Module);
模块的大小(size);
此模块是否被其他模块所使用 (Used by)。
也就是说,模块其实真的有相依性喔!举上表为例, mii 这个模块会被 8139too 所使用。 简单的说,就是『当你要加载 8139too 时,需要先加载 mii 这个模块才可以顺利的加载 8139too』的意思。 那么除了显示出目前的模块外,我还可以查阅每个模块的资讯吗?举例来说,我们知道 8139too 是螃蟹卡的驱动程序,那么 mii 是什么咚咚?就用 modinfo 来观察吧!
事实上,这个 modinfo 除了可以『查阅在核心内的模块』之外,还可以检查『某个模块文件』, 因此,如果你想要知道某个文件代表的意义为何,利用 modinfo 加上完整档名吧! 看看就晓得是啥玩意儿罗! ^_^
核心模块的加载与移除
好了,如果我想要自行手动加载模块,又该如何是好?有很多方法啦,最简单而且建议的,是使用 modprobe 这个命令来加载模块, 这是因为 modprobe 会主动的去搜寻 modules.dep 的内容,先克服了模块的相依性后, 才决定需要加载的模块有哪些,很方便。至於 insmod 则完全由使用者自行加载一个完整档名的模块, 并不会主动的分析模块相依性啊!
他立刻就将该模块加载罗~但是 insmod 后面接的模块必须要是完整的『档名』才行!那如何移除这个模块呢?
使用 insmod 与 rmmod 的问题就是,你必须要自行找到模块的完整档名才行,而且如同上述范例二的结果, 万一模块有相依属性的问题时,你将无法直接加载或移除该模块呢!所以近年来我们都建议直接使用 modprobe 来处理模块加载的问题,这个命令的用法是:
使用 modprobe 真的是要比 insmod 方便很多!因为他是直接去搜寻 modules.dep 的纪录, 所以罗,当然可以克服模块的相依性问题,而且还不需要知道该模块的详细路径呢! 好方便! ^_^
例题:
尝试使用 modprobe 加载 vfat 这个模块,并且观察该模块的相关模块是哪个?
答:
我们使用 modprobe 来加载,再以 lsmod 来观察与 grep 撷取关键字看看:
核心模块的额外参数配置: /etc/modprobe.conf
这个文件我们之前已经谈过了,这里只是再强调一下而已,如果您想要修改某些模块的额外参数配置, 就在这个文件内配置吧!我们假设一个案例好了,假设我的网络卡 eth0 是使用 ne , 但是 eth1 同样也使用 ne ,为了避免同一个模块会导致网络卡的错乱, 因此,我可以先找到 eth0 与 eth1 的 I/O 与 IRQ ,假设:
eth0 : I/O (0x300) 且 IRQ=5
eth1 : I/O (0x320) 且 IRQ=7
则:
嘿嘿!如此一来,我的 Linux 就不会捉错网络卡的对应罗!因为被我强制指定某个 I/O 咯嘛! ^_^
转自:http://vbird.dic.ksu.edu.tw/linux_basic/0510osloader_2.php
另外,为了应付日新月异的硬件,目前的核心都是具有『可读取模块化驱动程序』的功能, 亦即是所谓的『 modules (模块化)』的功能啦!所谓的模块化可以将他想成是一个『外挂程序』, 该外挂程序可能由硬件开发厂商提供,也有可能我们的核心本来就支持~不过,较新的硬件, 通常都需要硬件开发商提供驱动程序模块啦!
那么核心与核心模块放在哪?
核心: /boot/vmlinuz 或 /boot/vmlinuz-version;
核心解压缩所需 RAM Disk: /boot/initrd (/boot/initrd-version);
核心模块: /lib/modules/version/kernel 或 /lib/modules/$(uname -r)/kernel;
核心原始码: /usr/src/linux 或 /usr/src/kernels/ (要安装才会有,默认不安装)
如果该核心被顺利的加载系统当中了,那么就会有几个资讯纪录下来:
1.核心版本: /proc/version
2.系统核心功能: /proc/sys/kernel
问题来啦,如果我有个新的硬件,偏偏我的操作系统不支持,该怎么办?很简单啊!
重新编译核心,并加入最新的硬件驱动程序原始码;
将该硬件的驱动程序编译成为模块,在启动时加载该模块
上面第一点还很好理解,反正就是重新编译核心就是了。不过,核心编译很不容易啊! 我们会在后续章节约略介绍核心编译的整个程序。比较有趣的则是将该硬件的驱动程序编译成为模块啦! 关於编译的方法,可以参考后续的第二十二章、原始码与 tarball的介绍。 我们这个章节仅是说明一下,如果想要加载一个已经存在的模块时,该如何是好?
核心模块与相依性
既然要处理核心模块,自然就得要了解了解我们核心提供的模块之间的相关性啦! 基本上,核心模块的放置处是在 /lib/modules/$(uname -r)/kernel 当中,里面主要还分成几个目录:
arch :与硬件平台有关的项目,例如 CPU 的等级等等;
crypto :核心所支持的加密的技术,例如 md5 或者是 des 等等;
drivers :一些硬件的驱动程序,例如显卡、网络卡、PCI 相关硬件等等;
fs :核心所支持的 filesystems ,例如 vfat, reiserfs, nfs 等等;
lib :一些函式库;
net :与网络有关的各项协议数据,还有防火墙模块 (net/ipv4/netfilter/*) 等等;
sound :与音效有关的各项模块;
如果要我们一个一个的去检查这些模块的主要资讯,然后定义出他们的相依性, 我们可能会疯掉吧!所以说,我们的 Linux 当然会提供一些模块相依性的解决方案罗~ 对啦!那就是检查 /lib/modules/$(uname -r)/modules.dep 这个文件啦!他记录了在核心支持的模块的各项相依性。
那么这个文件如何创建呢?挺简单!利用 depmod 这个命令就可以达到创建该文件的需求了!
[root@www ~]# depmod [-Ane] 选项与参数: -A :不加任何参数时, depmod 会主动的去分析目前核心的模块,并且重新写入 /lib/modules/$(uname -r)/modules.dep 当中。若加入 -A 参数时,则 depmod 会去搜寻比 modules.dep 内还要新的模块,如果真找到新模块,才会升级。 -n :不写入 modules.dep ,而是将结果输出到萤幕上(standard out); -e :显示出目前已加载的不可运行的模块名称 范例一:若我做好一个网络卡驱动程序,档名为 a.ko,该如何升级核心相依性? [root@www ~]# cp a.ko /lib/modules/$(uname -r)/kernel/drivers/net [root@www ~]# depmod
以上面的范例一为例,我们的 Linux kernel 2.6.x 版本的核心模块扩展名一定是 .ko 结尾的, 当你使用 depmod 之后,该程序会跑到模块标准放置目录 /lib/modules/$(uname -r)/kernel , 并依据相关目录的定义将全部的模块捉出来分析,最终才将分析的结果写入 modules.dep 文件中的呐! 这个文件很重要喔!因为他会影响到本章稍后会介绍的 modprobe 命令的应用!
核心模块的观察
那你到底晓不晓得目前核心加载了多少的模块呢?粉简单啦!利用 lsmod 即可!
[root@www ~]# lsmod Module Size Used by autofs4 24517 2 hidp 23105 2 ....(中间省略).... 8139too 28737 0 8139cp 26305 0 mii 9409 2 8139too,8139cp <==mii 还被 8139cp, 8139too 使用 ....(中间省略).... uhci_hcd 25421 0 <==底下三个是 U盘 相关的模块! ohci_hcd 23261 0 ehci_hcd 33357 0
使用 lsmod 之后,系统会显示出目前已经存在於核心当中的模块,显示的内容包括有:
模块名称(Module);
模块的大小(size);
此模块是否被其他模块所使用 (Used by)。
也就是说,模块其实真的有相依性喔!举上表为例, mii 这个模块会被 8139too 所使用。 简单的说,就是『当你要加载 8139too 时,需要先加载 mii 这个模块才可以顺利的加载 8139too』的意思。 那么除了显示出目前的模块外,我还可以查阅每个模块的资讯吗?举例来说,我们知道 8139too 是螃蟹卡的驱动程序,那么 mii 是什么咚咚?就用 modinfo 来观察吧!
[root@www ~]# modinfo [-adln] [module_name|filename] 选项与参数: -a :仅列出作者名称; -d :仅列出该 modules 的说明 (description); -l :仅列出授权 (license); -n :仅列出该模块的详细路径。 范例一:由上个表格当中,请列出 mii 这个模块的相关资讯: [root@www ~]# modinfo mii filename: /lib/modules/2.6.18-92.el5/kernel/drivers/net/mii.ko license: GPL description: MII hardware support library author: Jeff Garzik <jgarzik@pobox.com> srcversion: 16DCEDEE4B5629C222C352D depends: vermagic: 2.6.18-92.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1 # 可以看到这个模块的来源,以及该模块的简易说明!(是硬件支持函式库) 范例二:我有一个模块名称为 a.ko ,请问该模块的资讯为? [root@www ~]# modinfo a.ko ....(省略)....
事实上,这个 modinfo 除了可以『查阅在核心内的模块』之外,还可以检查『某个模块文件』, 因此,如果你想要知道某个文件代表的意义为何,利用 modinfo 加上完整档名吧! 看看就晓得是啥玩意儿罗! ^_^
核心模块的加载与移除
好了,如果我想要自行手动加载模块,又该如何是好?有很多方法啦,最简单而且建议的,是使用 modprobe 这个命令来加载模块, 这是因为 modprobe 会主动的去搜寻 modules.dep 的内容,先克服了模块的相依性后, 才决定需要加载的模块有哪些,很方便。至於 insmod 则完全由使用者自行加载一个完整档名的模块, 并不会主动的分析模块相依性啊!
[root@www ~]# insmod [/full/path/module_name] [parameters] 范例一:请尝试加载 cifs.ko 这个『文件系统』模块 [root@www ~]# insmod /lib/modules/$(uname -r)/kernel/fs/cifs/cifs.ko [root@www ~]# lsmod | grep cifs cifs 212789 0
他立刻就将该模块加载罗~但是 insmod 后面接的模块必须要是完整的『档名』才行!那如何移除这个模块呢?
[root@www ~]# rmmod [-fw] module_name 选项与参数: -f :强制将该模块移除掉,不论是否正被使用; -w :若该模块正被使用,则 rmmod 会等待该模块被使用完毕后,才移除他! 范例一:将刚刚加载的 cifs 模块移除! [root@www ~]# rmmod cifs 范例二:请加载 vfat 这个『文件系统』模块 [root@www ~]# insmod /lib/modules/$(uname -r)/kernel/fs/vfat/vfat.ko insmod: error inserting '/lib/modules/2.6.18-92.el5/kernel/fs/vfat/vfat.ko': -1 Unknown symbol in module # 无法加载 vfat 这个模块啊!伤脑筋!
使用 insmod 与 rmmod 的问题就是,你必须要自行找到模块的完整档名才行,而且如同上述范例二的结果, 万一模块有相依属性的问题时,你将无法直接加载或移除该模块呢!所以近年来我们都建议直接使用 modprobe 来处理模块加载的问题,这个命令的用法是:
[root@www ~]# modprobe [-lcfr] module_name 选项与参数: -c :列出目前系统所有的模块!(更详细的代号对应表) -l :列出目前在 /lib/modules/`uname -r`/kernel 当中的所有模块完整档名; -f :强制加载该模块; -r :类似 rmmod ,就是移除某个模块罗~ 范例一:加载 cifs 模块 [root@www ~]# modprobe cifs # 很方便吧!不需要知道完整的模块档名,这是因为该完整档名已经记录到 # /lib/modules/`uname -r`/modules.dep 当中的缘故啊!如果要移除的话: [root@www ~]# modprobe -r cifs
使用 modprobe 真的是要比 insmod 方便很多!因为他是直接去搜寻 modules.dep 的纪录, 所以罗,当然可以克服模块的相依性问题,而且还不需要知道该模块的详细路径呢! 好方便! ^_^
例题:
尝试使用 modprobe 加载 vfat 这个模块,并且观察该模块的相关模块是哪个?
答:
我们使用 modprobe 来加载,再以 lsmod 来观察与 grep 撷取关键字看看:
[root@www ~]# modprobe vfat [root@www ~]# lsmod | grep vfat vfat 15809 0 fat 51165 1 vfat <==原来就是 fat 这个模块啊! [root@www ~]# modprobe -r vfat <==测试完移除此模块
核心模块的额外参数配置: /etc/modprobe.conf
这个文件我们之前已经谈过了,这里只是再强调一下而已,如果您想要修改某些模块的额外参数配置, 就在这个文件内配置吧!我们假设一个案例好了,假设我的网络卡 eth0 是使用 ne , 但是 eth1 同样也使用 ne ,为了避免同一个模块会导致网络卡的错乱, 因此,我可以先找到 eth0 与 eth1 的 I/O 与 IRQ ,假设:
eth0 : I/O (0x300) 且 IRQ=5
eth1 : I/O (0x320) 且 IRQ=7
则:
[root@www ~]# vi /etc/modprobe.conf alias eth0 ne alias eth1 ne options eth0 io=0x300 irq=5 options eth1 io=0x320 irq=7
嘿嘿!如此一来,我的 Linux 就不会捉错网络卡的对应罗!因为被我强制指定某个 I/O 咯嘛! ^_^
转自:http://vbird.dic.ksu.edu.tw/linux_basic/0510osloader_2.php
发表评论
文章已被作者锁定,不允许评论。
-
Linux ubuntu配置SSH免密登陆
2017-05-05 16:15 4581、安装 Ubuntu14.04默认安装了ssh-client ... -
Linux ubuntu虚拟机连接上网总结
2017-05-05 13:37 5091.首先查看主机的ip信息 ipconfig /all ... -
Linux七个运行级别
2015-03-03 09:20 540运行级别就是操作系统当前正在运行的功能级别。级别是从0到6,具 ... -
第二十四章 CentOS 系统配置工具: setup
2014-10-30 20:05 670系统配置除了使用手动 ... -
第二十二章 启动过程的问题解决
2014-10-28 19:34 419很多时候,我们可能因 ... -
第二十二章 Boot Loader: Grub
2014-10-27 19:44 566在看完了前面的整个启 ... -
第二十二章 Linux 的启动流程分析
2014-10-22 20:08 388启动不是只要按一下电 ... -
第二十一章 管理的抉择:RPM 还是 Tarball
2014-10-20 19:24 497这一直是个有趣的问题 ... -
第二十一章 YUM 线上升级机制
2014-10-15 19:33 523我们在本章一开始的地方谈到过 yum 这玩意儿,这个 yum ... -
第二十一章 SRPM 的使用 : rpmbuild
2014-10-14 19:44 953谈完了 RPM 类型的软件之后,再来我们谈一谈包含了 Sour ... -
第二十一章 RPM 软件管理程序: rpm
2014-10-13 20:10 447RPM 的使用其实不难,只要使用 rpm 这个命令即可!鸟哥最 ... -
第二十章 函式库管理
2014-10-13 19:25 473在我们的 Linux 操作系统 ... -
第二十章 Tarball 的管理与建议
2014-10-10 19:54 489在我们知道了原始码的 ... -
第二十章 用 make 进行巨集编译
2014-10-09 20:04 527在本章一开始我们提到过 make 的功能是可以简化编译过程里面 ... -
第二十章 开放源码的软件安装与升级简介
2014-10-09 19:47 436如果鸟哥想要在我的 Lin ... -
第十九章 分析登录文件
2014-10-08 19:34 406登录文件的分析是很重要的!你可以自行以 vi 进入登录文 ... -
第十九章 登录文件的轮替(logrotate)
2014-10-08 19:28 510假设我们已经将登 ... -
第十九章 syslogd :记录登录文件的服务
2014-09-28 20:11 677刚刚提到说 Linux 的登录文件主要是由 syslogd 在 ... -
第十八章 系统开启的服务
2014-09-25 19:33 714好了,现在假设你已经知道了 daemons 的启动文件放置的目 ... -
第十八章 服务的防火墙管理 xinetd, TCP Wrappers
2014-09-24 19:47 548一般来说,系统的防火 ...
相关推荐
在C#编程中,注册模块设计是构建应用程序中不可或缺的一部分,特别是在.NET 3.5框架下,它涉及到用户账户...文档“第22章.注册模块设计.doc”可能包含了详细的代码示例和步骤说明,帮助开发者深入理解和实践这一主题。
- 内置模块和第三方模块:Python标准库提供了许多内置模块,同时用户也可以安装和使用第三方模块,如通过pip安装。 了解并熟练运用这些模块相关知识,对于编写高效、可维护的Python代码至关重要。随着项目的复杂度...
第二十二章“扩展Python”可能涉及C或C++扩展Python模块的技术。第二十三章“其他话题”可能是对Python其他特性和工具的简要介绍,如模块打包、调试技巧等。 通过这份详尽的Python核心笔记,读者可以从基础知识一路...
在本章“第22章.注册模块设计.pdf”中,主要讨论了如何设计和实现一个网站的注册模块,这是任何互动式网站的关键组成部分。该章节涵盖了多个与ASP.NET 3.5相关的技术知识点,包括网页代码模型、Web窗体基本控件、...
第1部分 Python核心 第1章 欢迎来到Python世界 第2章 快速入门 第3章 Python基础 第4章 Python对象 第5章 数字 第6章 序列:字符串、列表和元组 第7章 映像和集合类型 ... 第22章 扩展Python 第23章 其他话题
在《Visual C++典型模块与实战大全》一书中,第十二章主要涵盖了使用Microsoft Visual C++进行软件开发的关键技术和实践应用。Visual C++是微软公司推出的一款强大的集成开发环境,它集成了C、C++以及C++/CLI编程...
"C语言程序设计与应用的课程ppt第6章深入模块化设计与应用" 本节课程主要讲解了模块化设计与应用的深入知识点,涵盖了算法的要素、基本性质、基本特征及基本质量要求等内容。下面是本节课程的详细知识点 总结: 一...
第22章 扩展Python 623 22.1 引言/动机 22.2 创建Python扩展 22.3 相关话题 22.4 练习 第23章 其他话题 23.1 Web服务 23.2 用Win32的COM来操作微软Office 23.3 用Jython写...
总的来说,《Visual C++典型模块与实战大全》第十三章旨在帮助开发者深化对C++和MFC的理解,提高在Windows环境下编写高效、可靠代码的技能。无论是初学者还是有经验的程序员,都能从中受益匪浅,提升自己的编程实践...
详细的嵌入式linux设备驱动编写word文档 第1章 Linux内核简介 ...第十二章 加载快设备驱动程序 第十三章 MMAP和DMA 第十四章 网络驱动程序 第十五章 外围总线概览 第十六章 核心源码的物理布局 第十七章 最新进展
第22章 手机短消息管理平台 第23章 在线音乐模块 第24章 电子相册模块 第25章 投票系统模块 第26章 万能打印模块 第27章 数据备份与恢复模块 第28章 LINQ数据库访问技术 第29章 安全技术 ...
《Visual C++典型模块与项目实战大全》的源码提供了丰富的学习资源,涵盖了从第三章到第十四章的完整内容,旨在帮助学习者深入理解Windows编程的核心概念和技术。以下是对这些章节涉及的知识点的详细说明: 1. **...
原书名: Core Python Programming (2nd Edition) 原出版社: Prentice Hall PTR 作者: (美)Wesley J. Chun ... 第12章 模块 12.1 什么是模块 12.2 模块和文件 12.2.1 模块名称...
原书名: Core Python Programming (2nd Edition) 原出版社: Prentice Hall PTR 作者: (美)Wesley J. Chun ... 第12章 模块 12.1 什么是模块 12.2 模块和文件 12.2.1 模块名称...
第22章 网络五子棋游戏 22.1 设计思路 558 22.2 关键技术 558 22.2.1 在下拉列表中绘制图片 558 22.2.2 UDP协议 560 22.2.3 用Socket实现信息传递的必备条件 560 22.2.4 自定义事件的设置 561 22.2.5...
本资源提供了从第11章到第22章的典型模块学习内容,遗憾的是,第18和第19章由于文件大小原因未能包含在内。以下是这些章节可能涵盖的一些核心知识点: 1. **Servlet与JSP基础**(11章):Servlet是Java语言编写...
【标题】"JAVA Web开发典型模块大全随书源码第19-22章" 提供的是一系列关于JAVA Web开发的重要示例和实践代码,这些章节通常涵盖了一个完整的JAVA Web应用程序开发中的关键部分。在JAVA Web开发中,开发者需要掌握...