内核模块:/lib/modules/version/kernel或/lib/modules/$(uname -r)/kernel;

[root@localhost kernel]# cd /lib/modules/$(uname -r)/kernel
[root@localhost kernel]# ll
total
drwxr-xr-x root root Sep arch
drwxr-xr-x root root Sep crypto
drwxr-xr-x root root Sep drivers
drwxr-xr-x root root Sep fs
drwxr-xr-x root root Sep lib
drwxr-xr-x root root Sep net
drwxr-xr-x root root Sep samples
drwxr-xr-x root root Sep sound
   

 内核源码:/usr/src/linux 或 /usr/src/kernels;

[root@localhost boot]# cd  /usr/src/kernels
[root@localhost kernels]# ll
total
drwxr-xr-x root root Nov linux-2.6.
-rwxrw-rw- root root Sep tracehook.patch
-rw-r--r-- root root Sep utrace.patch
-rw-r--r-- root root Sep utrace-ptrace.patch
      如果内核顺利被加载了,会有以下几个信息记录:

[root@localhost kernels]# cat /proc/version
Linux version 2.6. (root@localhost.localdomain) (gcc version 4.1. (Red Hat 4.1.-)) # SMP Sun Sep :: PDT
You have new mail in /var/spool/mail/root
    
 系统内核功能:/proc/sys/kernel

[root@localhost kernels]# cd /proc/sys/kernel
[root@localhost kernel]# ll
total
-rw-r--r-- root root Jun : acct
-rw-r--r-- root root Jun : acpi_video_flags
-rw-r--r-- root root Jun : auto_msgmni
-rw-r--r-- root root Jun : blk_iopoll
-r--r--r-- root root Jun : bootloader_type
-r--r--r-- root root Jun : bootloader_version
-rw------- root root Jun : cad_pid
-rw-r--r-- root root Jun : compat-log
-rw-r--r-- root root Jun : core_pattern
-rw-r--r-- root root Jun : core_pipe_limit
-rw-r--r-- root root Jun : core_uses_pid
-rw-r--r-- root root Jun : ctrl-alt-del
-rw-r--r-- root root Jun : domainname
-rw-r--r-- root root Jun : ftrace_dump_on_oops
-rw-r--r-- root root Jun : hostname
-rw-r--r-- root root Jun : hotplug
-rw-r--r-- root root Jun : hung_task_check_count
-rw-r--r-- root root Jun : hung_task_panic
-rw-r--r-- root root Jun : hung_task_timeout_secs
-rw-r--r-- root root Jun : hung_task_warnings
-rw-r--r-- root root Jun : io_delay_type
dr-xr-xr-x root root Jun : keys
-rw-r--r-- root root Jun : kstack_depth_to_print
-rw-r--r-- root root Jun : max_lock_depth
-rw-r--r-- root root Jun : modprobe
-rw-r--r-- root root Jun : modules_disabled
-rw-r--r-- root root Jun : msgmax
-rw-r--r-- root root Jun : msgmnb
-rw-r--r-- root root Jun : msgmni
-r--r--r-- root root Jun : ngroups_max
-rw-r--r-- root root Jun : nmi_watchdog
-r--r--r-- root root Jun : osrelease
-r--r--r-- root root Jun : ostype
-rw-r--r-- root root Jun : overflowgid
-rw-r--r-- root root Jun : overflowuid
-rw-r--r-- root root Jun : panic
-rw-r--r-- root root Jun : panic_on_io_nmi
-rw-r--r-- root root Jun : panic_on_oops
-rw-r--r-- root root Jun : panic_on_unrecovered_nmi
-rw-r--r-- root root Jun : perf_event_max_sample_rate
-rw-r--r-- root root Jun : perf_event_mlock_kb
-rw-r--r-- root root Jun : perf_event_paranoid
-rw-r--r-- root root Jun : pid_max
-rw-r--r-- root root Jun : poweroff_cmd
-rw-r--r-- root root Jun : print-fatal-signals
-rw-r--r-- root root Jun : printk
-rw-r--r-- root root Jun : printk_delay
-rw-r--r-- root root Jun : printk_ratelimit
-rw-r--r-- root root Jun : printk_ratelimit_burst
dr-xr-xr-x root root Jun : pty
dr-xr-xr-x root root Jun : random
-rw-r--r-- root root Jun : randomize_va_space
-rw-r--r-- root root Jun : real-root-dev
-rw-r--r-- root root Jun : sched_child_runs_first
-rw-r--r-- root root Jun : sched_compat_yield
dr-xr-xr-x root root Jun : sched_domain
-rw-r--r-- root root Jun : sched_features
-rw-r--r-- root root Jun : sched_latency_ns
-rw-r--r-- root root Jun : sched_migration_cost
-rw-r--r-- root root Jun : sched_min_granularity_ns
-rw-r--r-- root root Jun : sched_nr_migrate
-rw-r--r-- root root Jun : sched_rt_period_us
-rw-r--r-- root root Jun : sched_rt_runtime_us
-rw-r--r-- root root Jun : sched_shares_ratelimit
-rw-r--r-- root root Jun : sched_shares_thresh
-rw-r--r-- root root Jun : sched_time_avg
-rw-r--r-- root root Jun : sched_wakeup_granularity_ns
-rw-r--r-- root root Jun : sem
-rw-r--r-- root root Jun : shmall
-rw-r--r-- root root Jun : shmmax
-rw-r--r-- root root Jun : shmmni
dr-xr-xr-x root root Jun : slow-work
-rw-r--r-- root root Jun : softlockup_panic
-rw-r--r-- root root Jun : softlockup_thresh
-rw-r--r-- root root Jun : sysrq
-rw-r--r-- root root Jun : tainted
-rw-r--r-- root root Jun : threads-max
-rw-r--r-- root root Jun : timer_migration
-rw-r--r-- root root Jun : unknown_nmi_panic
-r--r--r-- root root Jun : version
-rw-r--r-- root root Jun : vsyscall64

    假如我有个新硬件,偏偏我的系统不支持,要这样做:
重新编译内核,并加入最新的硬件驱动程序源码;
将该硬件的驱动程序编译成为模块,在启动时加载该模块。

内核:/boot/vmlinuz或/boot/vmlinuz-version;
     内核解压缩所需RAMDisk:/boot/initrd(/boot/initrd-version);

[root@server1 boot]# pwd
/boot

[root@server1 boot]# ll
总用量 23536
-rw-r--r--. 1 root root 105200 8月 1 2014 config-2.6.32-431.23.3.el6.x86_64
drwxr-xr-x. 3 root root 4096 8月 14 2014 efi
drwxr-xr-x. 2 root root 4096 8月 14 2014 grub
-rw-------. 1 root root 17125747 4月 10 21:24 initramfs-2.6.32-431.23.3.el6.x86_64.img
-rw-r--r--. 1 root root 193925 8月 1 2014 symvers-2.6.32-431.23.3.el6.x86_64.gz
-rw-r--r--. 1 root root 2519815 8月 1 2014 System.map-2.6.32-431.23.3.el6.x86_64
-rwxr-xr-x. 1 root root 4133040 8月 1 2014 vmlinuz-2.6.32-431.23.3.el6.x86_64

 
  下面我们着重讲一下内核模块
一、内核模块与依赖性
      基本上,内核模块放置处是在 /lib/modules/$(uname -r)/kernel当中,里面的几个目录主要为:
           arch 与硬件平台有关的选项
           crypto 内核所支持的加密的技术
           drivers 一些硬件的驱动程序
           fs 内核所支持的文件系统
           lib 一些函数库
           net 与网络有关的各项协议数据,还有防火墙模块等
           sound 与音效有关的各项模块
  还有文件/lib/modules/$(uname -r)/modules.dep ,记录了内核支持的模块的依赖性。那么如何创建该文件呢?如下:
#depmod [-Ane]
    -A:不加任何参数时,depmod会主动去分析目前内核的模块,并且重新写入/lib/modules/$(uname -r)/
           modules.dep当中。如果加-A参数,则会查找比modules.dep内还要新的模块,如果真找到,才会更新。
    -n:不写入modules.dep,而是将结果输出到屏幕上。
    -e:显示出目前已加载的不可执行的模块名称。
 
  例子:我做好一个网卡驱动程序a.ko(内核模块名以.ko结尾),该如何更新内核的依赖性?
     #cp a.ko /lib/modules/$(uname -r)/kernel/drivers/net
    #depmod
 
 
二、内核模块的查看
  查看目前模块加载了多少的模块。
 
[root@server1 ~]# lsmod
Module Size Used by
xenfs
microcode
xen_netfront
i2c_piix4
i2c_core i2c_piix4
ext4
jbd2 ext4
mbcache ext4
xen_blkfront
pata_acpi
ata_generic
ata_piix
dm_mirror
dm_region_hash dm_mirror
dm_log dm_mirror,dm_region_hash
dm_mod dm_mirror,dm_log 模块名称     模块的大小  此模块是否被其他模块使用
 
查阅每个模块信息
#modinfo [-adln] [module_name|filename]
-a:仅列出作者名
-d:仅列出该modules的说明
-l:仅列出授权
-n:仅列出该模块的详细路径
 

[root@server1 ~]# modinfo ext4
filename: /lib/modules/2.6.-431.23..el6.x86_64/kernel/fs/ext4/ext4.ko
license: GPL
description: Fourth Extended Filesystem
author: Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion: 88E736686F4302B17E0DA05
depends: mbcache,jbd2
vermagic: 2.6.-431.23..el6.x86_64 SMP mod_unload modversions
[root@server1 ~]# modinfo dm_log
filename: /lib/modules/2.6.-431.23..el6.x86_64/kernel/drivers/md/dm-log.ko
license: GPL
author: Joe Thornber, Heinz Mauelshagen <dm-devel@redhat.com>
description: device-mapper dirty region log
srcversion: B0BB111AC7F0B71848484DF
depends: dm-mod
vermagic: 2.6.-431.23..el6.x86_64 SMP mod_unload modversions
[root@localhost kernel]# modinfo e1000
filename: /lib/modules/2.6./kernel/drivers/net/e1000/e1000.ko
version: 7.3.-k5-NAPI
license: GPL
description: Intel(R) PRO/ Network Driver
author: Intel Corporation, <linux.nics@intel.com>
srcversion: 2B8A35B3369384355170615
alias: pci:v00008086d000010B5sv*sd*bc*sc*i*
alias: pci:v00008086d00001099sv*sd*bc*sc*i*
alias: pci:v00008086d0000108Asv*sd*bc*sc*i*
alias: pci:v00008086d0000107Csv*sd*bc*sc*i*
alias: pci:v00008086d0000107Bsv*sd*bc*sc*i*
alias: pci:v00008086d0000107Asv*sd*bc*sc*i*
alias: pci:v00008086d00001079sv*sd*bc*sc*i*
alias: pci:v00008086d00001078sv*sd*bc*sc*i*
alias: pci:v00008086d00001077sv*sd*bc*sc*i*
alias: pci:v00008086d00001076sv*sd*bc*sc*i*
alias: pci:v00008086d00001075sv*sd*bc*sc*i*
alias: pci:v00008086d00001028sv*sd*bc*sc*i*
alias: pci:v00008086d00001027sv*sd*bc*sc*i*
alias: pci:v00008086d00001026sv*sd*bc*sc*i*
alias: pci:v00008086d0000101Esv*sd*bc*sc*i*
alias: pci:v00008086d0000101Dsv*sd*bc*sc*i*
alias: pci:v00008086d0000101Asv*sd*bc*sc*i*
alias: pci:v00008086d00001019sv*sd*bc*sc*i*
alias: pci:v00008086d00001018sv*sd*bc*sc*i*
alias: pci:v00008086d00001017sv*sd*bc*sc*i*
alias: pci:v00008086d00001016sv*sd*bc*sc*i*
alias: pci:v00008086d00001015sv*sd*bc*sc*i*
alias: pci:v00008086d00001014sv*sd*bc*sc*i*
alias: pci:v00008086d00001013sv*sd*bc*sc*i*
alias: pci:v00008086d00001012sv*sd*bc*sc*i*
alias: pci:v00008086d00001011sv*sd*bc*sc*i*
alias: pci:v00008086d00001010sv*sd*bc*sc*i*
alias: pci:v00008086d0000100Fsv*sd*bc*sc*i*
alias: pci:v00008086d0000100Esv*sd*bc*sc*i*
alias: pci:v00008086d0000100Dsv*sd*bc*sc*i*
alias: pci:v00008086d0000100Csv*sd*bc*sc*i*
alias: pci:v00008086d00001009sv*sd*bc*sc*i*
alias: pci:v00008086d00001008sv*sd*bc*sc*i*
alias: pci:v00008086d00001004sv*sd*bc*sc*i*
alias: pci:v00008086d00001001sv*sd*bc*sc*i*
alias: pci:v00008086d00001000sv*sd*bc*sc*i*
depends:
vermagic: 2.6. SMP mod_unload modversions
parm: TxDescriptors:Number of transmit descriptors (array of int)
parm: RxDescriptors:Number of receive descriptors (array of int)
parm: Speed:Speed setting (array of int)
parm: Duplex:Duplex setting (array of int)
parm: AutoNeg:Advertised auto-negotiation setting (array of int)
parm: FlowControl:Flow Control setting (array of int)
parm: XsumRX:Disable or enable Receive Checksum offload (array of int)
parm: TxIntDelay:Transmit Interrupt Delay (array of int)
parm: TxAbsIntDelay:Transmit Absolute Interrupt Delay (array of int)
parm: RxIntDelay:Receive Interrupt Delay (array of int)
parm: RxAbsIntDelay:Receive Absolute Interrupt Delay (array of int)
parm: InterruptThrottleRate:Interrupt Throttling Rate (array of int)
parm: SmartPowerDownEnable:Enable PHY smart power down (array of int)
parm: KumeranLockLoss:Enable Kumeran lock loss workaround (array of int)
parm: copybreak:Maximum size of packet that is copied to a new buffer on receive (uint)
parm: debug:Debug level (=none,...,=all) (int)
[root@localhost kernel]# modinfo -p e1000
debug:Debug level (=none,...,=all)
copybreak:Maximum size of packet that is copied to a new buffer on receive
KumeranLockLoss:Enable Kumeran lock loss workaround
SmartPowerDownEnable:Enable PHY smart power down
InterruptThrottleRate:Interrupt Throttling Rate
RxAbsIntDelay:Receive Absolute Interrupt Delay
RxIntDelay:Receive Interrupt Delay
TxAbsIntDelay:Transmit Absolute Interrupt Delay
TxIntDelay:Transmit Interrupt Delay
XsumRX:Disable or enable Receive Checksum offload
FlowControl:Flow Control setting
AutoNeg:Advertised auto-negotiation setting
Duplex:Duplex setting
Speed:Speed setting
RxDescriptors:Number of receive descriptors
TxDescriptors:Number of transmit descriptors
e1000模块参数设置:

[root@localhost e1000]# ll
total
drwxr-xr-x root root Jun : drivers
drwxr-xr-x root root Jun : holders
-r--r--r-- root root Jun : initstate
drwxr-xr-x root root Jun : parameters
-r--r--r-- root root Jun : refcnt
drwxr-xr-x root root Jun : sections
-r--r--r-- root root Jun : srcversion
-r--r--r-- root root Jun : version
[root@localhost e1000]# cd parameters
[root@localhost parameters]# ll
total
-rw-r--r-- root root Jun : copybreak
[root@localhost parameters]# pwd
/sys/module/e1000/parameters

scsi_mod:模拟参数设置

[root@server1 module]# pwd
/sys/module
[root@server1 module]# cd scsi_mod
[root@server1 scsi_mod]# ll
总用量
drwxr-xr-x root root 6月 : parameters [root@server1 scsi_mod]# cd parameters
[root@server1 parameters]# ll
总用量
-rw-r--r-- root root 6月 : default_dev_flags
-rw-r--r-- root root 6月 : eh_deadline
-rw-r--r-- root root 6月 : inq_timeout
-rw-r--r-- root root 6月 : max_luns
-rw-r--r-- root root 6月 : max_report_luns
-r--r--r-- root root 6月 : scan
-rw-r--r-- root root 6月 : scsi_logging_level
 
 
 
三、内核模块的加载与删除
  最好使用modprobe这个命令加载模块,因为modprobe会主动查找modules.dep的内容,解决了依赖性后,才决定需要加载的模块有哪些。
  insmod则完全由用户自行加载一个完整文件名的模块,并不会主动分析模块依赖性。
#insmod [/full/path/module_name] [parameters]
 
  例子:尝试载入cifs.ko这个文件系统模块
#insmod /lib/modules/$(uname -r)/kernel/fs/cifs/cifs.ko
  记住,一定要是完整的文件名。
 
#rmmod [-fw] module_name
  -f:强制将该模块删除掉,不论是否正在被使用
  -w:若该模块正在被使用,则等待该模块被使用完毕后再删除
 
  insmod与rmmod的问题时,你必须自行找到模块的完整文件名才行。所以,我们一般使用modprobe.
#modprobe [-lcfr] module_name
  -c:列出目前系统上面所有的模块
  -l:列出目前在/lib/modules/`uname -r`/kernel当中的所有模块完整文件名
  -f:强制加载该模块
  -r:删除某个模块
[root@localhost kernel]# modprobe -l
/lib/modules/2.6./kernel/net/ipv6/xfrm6_tunnel.ko
/lib/modules/2.6./kernel/net/xfrm/xfrm_ipcomp.ko
/lib/modules/2.6./kernel/drivers/net/pcmcia/xirc2ps_cs.ko
/lib/modules/2.6./kernel/drivers/net/tulip/xircom_cb.ko
/lib/modules/2.6./kernel/crypto/xor.ko
/lib/modules/2.6./kernel/net/sunrpc/xprtrdma/xprtrdma.ko
/lib/modules/2.6./kernel/net/netfilter/xt_CLASSIFY.ko
/lib/modules/2.6./kernel/net/netfilter/xt_HL.ko ...

[root@server1 /]# modprobe -l
kernel/net/rds/rds.ko
kernel/net/rds/rds_rdma.ko
kernel/net/rds/rds_tcp.ko
kernel/net/mac80211/mac80211.ko
kernel/net/rfkill/rfkill.ko
kernel/net/9p/9pnet.ko
kernel/net/9p/9pnet_virtio.ko
kernel/net/9p/9pnet_rdma.ko
kernel/net/wimax/wimax.ko
kernel/net/openvswitch/openvswitch.k
...
[root@server1 /]# cd /lib/modules/`uname -r`/kernel
[root@server1 kernel]# ll
总用量
drwxr-xr-x. root root 8月 arch
drwxr-xr-x. root root 8月 crypto
drwxr-xr-x. root root 8月 drivers
drwxr-xr-x. root root 8月 fs
drwxr-xr-x. root root 8月 kernel
drwxr-xr-x. root root 8月 lib
drwxr-xr-x. root root 8月 mm
drwxr-xr-x. root root 8月 net
drwxr-xr-x. root root 8月 sound
[root@server1 kernel]# pwd
/lib/modules/2.6.-431.23..el6.x86_64/kernel
[root@server1 kernel]# cd net
[root@server1 net]# ll
总用量
drwxr-xr-x. root root 8月
drwxr-xr-x. root root 8月 8021q
drwxr-xr-x. root root 8月 9p
drwxr-xr-x. root root 8月 atm
drwxr-xr-x. root root 8月 bluetooth
drwxr-xr-x. root root 8月 bridge
drwxr-xr-x. root root 8月 can
drwxr-xr-x. root root 8月 core
drwxr-xr-x. root root 8月 dccp
drwxr-xr-x. root root 8月 ieee802154
drwxr-xr-x. root root 8月 ipv4
drwxr-xr-x. root root 8月 ipv6
drwxr-xr-x. root root 8月 key
drwxr-xr-x. root root 8月 llc
drwxr-xr-x. root root 8月 mac80211
drwxr-xr-x. root root 8月 netfilter
drwxr-xr-x. root root 8月 openvswitch
drwxr-xr-x. root root 8月 phonet
drwxr-xr-x. root root 8月 rds
drwxr-xr-x. root root 8月 rfkill
drwxr-xr-x. root root 8月 sched
drwxr-xr-x. root root 8月 sctp
drwxr-xr-x. root root 8月 sunrpc
drwxr-xr-x. root root 8月 wimax
drwxr-xr-x. root root 8月 wireless
drwxr-xr-x. root root 8月 xfrm
[root@server1 net]# cd rds
[root@server1 rds]# ll
总用量
-rwxr--r--. root root 8月 rds.ko
-rwxr--r--. root root 8月 rds_rdma.ko
-rwxr--r--. root root 8月 rds_tcp.ko
 
  例子:加载cifs模块
   #modprobe cifs
  很方便,因为我们根本不用知道完整的模块文件名
 
内核模块的额外参数配置:/etc/modprobe.conf
  如果你想修改某些模块的额外参数设置,就在这个文件内。
  #vi /etc/modprobe.conf
 

内核与内核模块:depmod,lsmod,modinfo,insmod,rmmod,mdprobe的更多相关文章

  1. linux内核模块相关命令:lsmod,depmod,modprobe,modinfo,insmod,rmmod 使用说明

    加载内核驱动的通常流程: 1.先将.ko文件拷贝到/lib/module/`uname -r`(内核版本号)/kernel/driver/...目录下, 根据具体用途的区别分为net.ide.scsi ...

  2. (转)内核模块操作命令-lsmod+rmmod+modinfo+modprobe

    原文:http://watchmen.xin/2018/07/13/IT%E7%A7%91%E5%AD%A6%E6%8A%80%E6%9C%AF%E7%9F%A5%E8%AF%86%E4%BD%93% ...

  3. (七)insmod/rmmod

    insmod: insmod命令用于将给定的模块加载到内核中.Linux有许多功能是通过模块的方式,在需要时才载入kernel.如此可使kernel较为精简,进而提高效率,以及保有较大的弹性.这类可载 ...

  4. insmod/rmmod

    insmod -f 不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入 -k 将模块设置为自动卸除 -m 输出模块的载入信息 -o <模块名称> 指定模块的名 ...

  5. Linux内核配置选项

    http://blog.csdn.net/wdsfup/article/details/52302142 http://www.manew.com/blog-166674-12962.html Gen ...

  6. 深入linux kernel内核配置选项

    ============================================================================== 深入linux kernel内核配置选项 ...

  7. gnome/KDE安装,gnome出现问题,重新安装nvdia驱动

    重新安装显示gtx745驱动NVIDIA-Linux-x86_64-346.59.run, yum groupremove kde-desktop yum groupinstall "Des ...

  8. gnome/KDE安装,gnome出现问题,重新安装nvdia驱动, Linux(CentOS7) NVIDIA GeForece GTX 745 显卡驱动

    新安装显示gtx745驱动NVIDIA-Linux-x86_64-346.59.run, yum groupremove kde-desktop yum groupinstall "Desk ...

  9. 零基础学习云计算及大数据DBA集群架构师【Linux系统配置及网络配置2015年12月30日周三】

    /Mon *************摘要************** 计划任务 )一次性计划任务 服务:atd 命令:at 服务存放文件:/etc/init.d/atd 系统配置文件:/etc/at. ...

随机推荐

  1. 《python源码剖析》笔记一——python编译

    1.python的架构: 2.python源码的组织结构: 3.windows环境下编译python:

  2. string与char* 互相转换以及周边问题

    先插一个小知识点 string str = "abc" str += 'd'; cout<<str<<endl;  //"abcd"   ...

  3. URL encode 与 URL decode 的C语言实现

    转载自:http://blog.csdn.net/langeldep/article/details/6264058 本文代码为从PHP代码中修改而来,只保留了2个函数. int php_url_de ...

  4. 无聊拿socket写的100以内的加法考试。。。

    用的广播IP,所以校内网不用设置,直接在校内网随便找台电脑打开服务端,然后再随便找台电脑打开客户端,然后就可以做100以内的加法了... 说明:客户端输入“ready”,服务端会随机发送一条加法算式, ...

  5. ASP.NET MVC 中使用JavaScriptResult

    在浏览器地址栏输入地址,在页面上想通过脚本弹出一个框,看到Controller下有个JavaScript方法,返回的类型是JavaScriptResult,于是想用这个方法弹出框, public Ac ...

  6. iOS网络

    iOS开发系列--网络开发 2014-10-22 08:34 by KenshinCui, 1253 阅读, 19 评论, 收藏,  编辑 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微 ...

  7. tyvj P1716 - 上帝造题的七分钟 二维树状数组区间查询及修改 二维线段树

    P1716 - 上帝造题的七分钟 From Riatre    Normal (OI)总时限:50s    内存限制:128MB    代码长度限制:64KB 背景 Background 裸体就意味着 ...

  8. C++必备知识

    新进C++程序员应在一年内完成学习“basic”类别知识点,两年内完成学习“advance”类别知识点,三到四年内完成学习“expert”1.基础(Basic)(1)变量与基本类型:(2)typede ...

  9. 2.5.2 使用alertdialog 创建列表对话框

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...

  10. QQ游戏百万人同时在线服务器架构实现

    转载自:http://morton5555.blog.163.com/blog/static/976407162012013112545710/# QQ游戏于前几日终于突破了百万人同时在线的关口,向着 ...