获取帮助:

 centos 6 :man iptables

 centos 7: man iptables-extensions

扩展匹配:

    隐式扩展:当使用-p指定某一协议之后,协议自身所支持的扩展就叫做隐式扩展、使用[tcp|udp|icmp]指定某特定协议后、自动能对协议进行扩展。可省略 -m 选项

        

  1. -p tcp
  2. --dport PORT [-PORT];目标端口匹配
  3. --sport PORT [-PORT] :源端口
  4. --tcp-flags:
  5. SYN ACK FIN RST PSH URG
  6. --syn : #简写,新建链接时第一次请求
  7.  
  8. -p udp
  9. --dport
  10. --sport
  11.  
  12. -p icmp
  13. --icmp-type
  14. : echo-reply
  15. : echo-request
  16. #只允许本机ping ,不响应 ping 包
  17. iptables -I INPUT -d 192.168.100.230 -p icmp --icmp-type -j ACCEPT
  1. [root@nginx etc]# iptables -I INPUT -d 10.2.61.22 -p tcp --dport 22 -j ACCEPT
  2. [root@nginx etc]#
  3. [root@nginx etc]# iptables -I OUTPUT -s 10.2.61.22 -p tcp --sport 22 -j ACCEPT
  4. [root@nginx etc]# iptables -L -n -v
  5. Chain INPUT (policy DROP packets, bytes)
  6. pkts bytes target prot opt in out source destination
  7. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 tcp dpt:
  8. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22
  9. ACCEPT all -- ens192 * 0.0.0.0/ 0.0.0.0/
  10.  
  11. Chain FORWARD (policy ACCEPT packets, bytes)
  12. pkts bytes target prot opt in out source destination
  13.  
  14. Chain OUTPUT (policy DROP packets, bytes)
  15. pkts bytes target prot opt in out source destination
  16. ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ tcp spt:
  17. ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/
  18. ACCEPT all -- * ens192 0.0.0.0/ 0.0.0.0/
  19. [root@nginx etc]# iptables -I INPUT -d 10.2.61.22 -p tcp --dport 22:8080 -j ACCEPT #多个端口

 

  1. [root@nginx etc]# iptables -A INPUT -d 10.2.61.22 -p icmp --icmp-type -j ACCEPT #INPUT 允许应答报文 ,只能自己ping 别人,不响应ping
  2. [root@nginx etc]# iptables -A OUTPUT -s 10.2.61.22 -p icmp --icmp-type -j ACCEPT      #OUTPUT 允许请求报文

       

          

    显示扩展:必须要明确指定的扩展模块

        -m

  1. 1.multiport 扩展
  1. .multiport 扩展
  2. 以离散方式定义多端口匹配,最多15 个端口
  3. [!] --source-ports,--sports port[,port|,port:port]...#指明多个源端口
  4. [!] --destination-ports,--dports port[,port|,port:port]...#指明多个目标端口
  5.  
  6. [!] --ports port[,port|,port:port]... #同时匹配源和目的端口
  7.  
  8. 列子: 同时限制22, 端口
  9. iptables -I INPUT -s 192.168.0.0/ -d 192.168.100.230 -p tcp -m multiport --dports , -j ACCEPT
  1. [root@nginx /]# iptables -I INPUT -d 10.2.61.22 -p tcp -m multiport --dports 22,80 -j ACCEPT
  2. [root@nginx /]# iptables -L -n
  3. Chain INPUT (policy DROP)
  4. target prot opt source destination
  5. ACCEPT tcp -- 0.0.0.0/ 10.2.61.22 multiport dports ,80
  1. [root@nginx /]# iptables -I OUTPUT -s 10.2.61.22 -p tcp -m multiport --sports 22,80 -j ACCEPT
  2. [root@nginx /]# iptables -L -n -v
  3. Chain INPUT (policy DROP packets, bytes)
  4. pkts bytes target prot opt in out source destination
  5. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 multiport dports ,
  6. 192K ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 tcp dpts::
  7. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 tcp dpt:
  8. ACCEPT icmp -- * * 0.0.0.0/ 10.2.61.22 icmptype
  9.  
  10. Chain FORWARD (policy ACCEPT packets, bytes)
  11. pkts bytes target prot opt in out source destination
  12.  
  13. Chain OUTPUT (policy DROP packets, bytes)
  14. pkts bytes target prot opt in out source destination
  15. 4 544 ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/0 multiport sports 22,80
  16. 463K ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ tcp spt:
  17. ACCEPT icmp -- * * 10.2.61.22 0.0.0.0/ icmptype
  18. [root@nginx /]#

2.iprange 扩展

  1. .iprange 扩展
  2. 指明连续的IP 地址范围 ,一般不能扩展为整个网络
  3.  
  4. [!] --src-range from[-to] #连续的源地址范围
  5. [!] --dst-range from[-to] #连续的目的地址范围
  6. iptables -I INPUT -d 192.168.100.230 -p tcp -m multiport --dports :,, -m iprange --src-range 192.168.100.2-192.168.100.199 -j ACCEPT
  7. iptables -I OUTPUT -s 192.168.100.230 -p tcp -m multiport --sports :,, -m iprange --dst-range 192.168.100.2-192.168.100.199 -j ACCEPT
  1. [root@nginx ~]# iptables -I INPUT -d 10.2.61.22 -p tcp -m multiport --dports 8080,8090 -m iprange --src-range 10.2.61.1-10.2.61.100 -j ACCEPT #地址范文在一个 C 段中
  2. [root@nginx ~]# iptables -I OUTPUT -s 10.2.61.22 -p tcp -m multiport --sports 8080,8090 -m iprange --dst-range 10.2.61.1-10.2.61.100 -j ACCEPT

3.string 扩展

  1. .string 扩展
  2. 检查报文中出现的字符串
  3. --algo {bm|kmp}
  4. bm = Boyer-Moore,
  5. kmp = Knuth-Pratt-Morris
  6.  
  7. --from offset #左偏移
  8. --from offset #右偏移
  9. [!] --string pattern
  10.  
  11. iptables -I OUTPUT -m string --algo bm --string 'test' -j LOG
  12. iptables -A INPUT -p tcp --dport -m string --algo bm --string 'GET /index.html' -j LOG
  13. iptables -I OUTPUT -s 192.168.100.150 -m string --algo bm --string 'test' -j REJECT
  14.  
  15. [root@nginx ~]# iptables -I INPUT -p tcp --dport 80 -m string --algo bm --string 'GET /' -j LOG
  1. [root@nginx ~]# tail -f /var/log/messages
  2. Feb :: nginx systemd-logind: New session of user root.
  3. Feb :: nginx systemd: Starting Session of user root.
  4. Feb :: nginx systemd: Started Session of user root.
  5. Feb :: nginx systemd: Starting Session of user root.
  6. Feb :: nginx systemd-logind: Removed session .
  7. Feb :: nginx systemd: Started Session of user root.
  8. Feb :: nginx systemd-logind: New session of user root.
  9. Feb :: nginx systemd: Starting Session of user root.
  10. Feb 19 03:53:52 nginx kernel: IN=ens192 OUT= MAC=00:0c:29:a9:72:71:00:0c:29:73:98:2f:08:00 SRC=10.2.61.21 DST=10.2.61.22 LEN=114 TOS=0x00 PREC=0x00 TTL=64 ID=59396 DF PROTO=TCP SPT=36804 DPT=80 WINDOW=229 RES=0x00 ACK PSH URGP=0
  11. Feb 19 03:56:36 nginx kernel: IN=ens192 OUT= MAC=00:0c:29:a9:72:71:00:0c:29:73:98:2f:08:00 SRC=10.2.61.21 DST=10.2.61.22 LEN=114 TOS=0x00 PREC=0x00 TTL=64 ID=7382 DF PROTO=TCP SPT=36806 DPT=80 WINDOW=229 RES=0x00 ACK PSH URGP=0

4.time 扩展 :定时执行策略

  1. .time 扩展 :定时执行策略
  1. -m time --weekdays Sa,Su
  2.  
  3. -m time --datestart -- --datestop --
  4.  
  5. -m time --datestart --01T17: --datestop --01T23::
  6.  
  7. -m time --timestart : --timestop :
  8.  
  9. -m time --weekdays Fr --monthdays ,,,,,,
  10.  
  11. -m time --weekdays Mo --timestart : --timestop :
  1.  
  1. --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] #起始日期
  2.  
  3. --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]] #结束日期
  4.  
  5. #限制在某个时间段内拒绝某些请求
  6. iptables -IINPUT -d 192.168.100.230 -p tcp --dport -m time --timestart : --timestop : -j REJECT
  7. #一周内固定时间限制
  8. iptables -I FORWARD -s 172.17.1.132 -d 192.168.1.119 -m time --timestart : --timestop : --weekdays Wed,Thu -j DROP
  9.  
  10. [root@nginx ~]# iptables -I INPUT -p tcp -d 10.2.61.22 --dport 80 -m time --timestart 20:00 --timestop 06:00 -j REJECT #晚上八点早上6点禁止访问

5.connlimit #并发连接限制 ,单个地址或者地址块

  1. [!] --connlimit-above n #链接上限
  2. --connlimit-upto n #链接数量小于 n
  3. iptables -A INPUT -p tcp --syn --dport -m connlimit --connlimit-above -j REJECT
  4. iptables -I INPUT -d 192.168.100.230 -p tcp --syn --dport -m connlimit --connlimit-above -j REJECT
  1. [root@nginx ~]# iptables -L -n -v
  2. Chain INPUT (policy DROP packets, bytes)
  3. pkts bytes target prot opt in out source destination
  4. 3 152 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 flags:0x17/0x02 #conn src/32 > 3 reject-with icmp-port-unreachable
  5. ACCEPT tcp -- * * 0.0.0.0/ 0.0.0.0/ tcp dpt:
  6. REJECT tcp -- * * 0.0.0.0/ 10.2.61.22 tcp dpt: TIME from :: to :: UTC reject-with icmp-port-unreachable
  7. REJECT tcp -- * * 0.0.0.0/ 10.2.61.22 tcp dpt: TIME from :: to :: UTC reject-with icmp-port-unreachable
  8. LOG tcp -- * * 0.0.0.0/ 0.0.0.0/ tcp dpt: STRING match "GET /" ALGO name bm TO LOG flags level
  9. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 multiport dports , source IP range 10.2.61.1-10.2.61.100
  10. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 multiport dports , source IP range 10.2.61.1-10.2.61.100
  11. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 multiport dports , source IP range 10.0.0.1-10.0.0.255
  12. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 multiport dports : source IP range 10.0.0.1-10.0.0.255
  13. tcp -- * * 0.0.0.0/ 10.2.61.22 multiport dports
  14. ACCEPT icmp -- * * 0.0.0.0/ 10.2.61.22 icmptype
  15.  
  16. Chain FORWARD (policy ACCEPT packets, bytes)
  17. pkts bytes target prot opt in out source destination
  18.  
  19. Chain OUTPUT (policy DROP packets, bytes)
  20. pkts bytes target prot opt in out source destination
  21. ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ multiport sports , destination IP range 10.2.61.1-10.2.61.100
  22. ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ multiport sports , destination IP range 10.2.61.1-10.2.61.100
  23. ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ multiport sports , destination IP range 10.0.0.1-10.0.0.255
  24. ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ multiport sports : destination IP range 10.0.0.1-10.0.0.255
  25. 586K ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ multiport sports ,
  26. 463K ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ tcp spt:
  27. ACCEPT icmp -- * * 10.2.61.22 0.0.0.0/ icmptype
  28. [root@nginx ~]# iptables -I INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT #限制ssh 新建链接数量为3 ,首先需要有放行的策略 ,否则拒绝了 -.-
    [root@nginx ~]#  iptables -I  INPUT 1 -p tcp --dport 22 -j ACCEPT #插入序号为1 的规则

6.limit 扩展

  1. 基于收发报文的速率做检查
  2. 令牌桶过滤器:
  3. --limit rate[/second|/minute|/hour|/day]
  4. --limit-burst number #限制超过这个值 策略开始进行匹配计数
  5.  
  6. iptables -A INPUT -d 192.168.100.230 -p icmp --icmp-type -m limit --limit-burst --limit /minute -j ACCEPT
        #限制 icmp ping 包峰值 5 个 ,每分钟30 个。

7.state 扩展

  1. 根据链接追踪机制检查链接的状态
  2. 调整链接追踪功能所能容纳的最大链接数量
  3. /proc/sys/net/nf_conntrack_max #追踪链接的最大限制
  4. cat /proc/net/nf_conntrack #追踪信息
  5. #不同协议或链接的追踪时长
  6. /proc/sys/net/netfilter/

[root@nginx ~]# cat /proc/sys/net/netfilter/nf_conntrack_max #centos7 查看链接追中最大限制
65536

  1.  
  2. 可追踪的链接状态:
  3. NEW :新发出的请求,链接追踪模板中不存在此链接的相关信息,因此识别为第一次发起的请求
  4. ESTABLISHED :NEW 状态后,链接追踪模板中为其建立的条目失效前期间所进行的通信状态
  5. RELATED :相关的链接,如ftp 协议的命令链接和数据链接的关系叫做相关链接
  6. INVALIDE :无法识别的链接
  7.  
  8. --state state
  9. --state STATE1,STATE2
  10. iptables -I INPUT -p tcp -d 192.168.100.230 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
        #对于访问本机的80 端口 ,只允许NEW 和ESTABLISHED 状态链接,访问 对于 80 端口的回应只允许回应ESTABLISHED
  1. [root@nginx ~]# iptables -I INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. [root@nginx ~]# iptables -I OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
  3. [root@nginx ~]# iptables -L -n -v
  4. Chain INPUT (policy DROP packets, bytes)
  5. pkts bytes target prot opt in out source destination
  6. 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW,ESTABLISHED
  7. ACCEPT tcp -- * * 0.0.0.0/ 0.0.0.0/ tcp dpt: state NEW,ESTABLISHED
  8. 129K ACCEPT tcp -- * * 0.0.0.0/ 0.0.0.0/ tcp dpt:
  9. REJECT tcp -- * * 0.0.0.0/ 0.0.0.0/ tcp dpt: flags:0x17/0x02 #conn src/ > reject-with icmp-port-unreachable
  10. REJECT tcp -- * * 0.0.0.0/ 10.2.61.22 tcp dpt: TIME from :: to :: UTC reject-with icmp-port-unreachable
  11. REJECT tcp -- * * 0.0.0.0/ 10.2.61.22 tcp dpt: TIME from :: to :: UTC reject-with icmp-port-unreachable
  12. LOG tcp -- * * 0.0.0.0/ 0.0.0.0/ tcp dpt: STRING match "GET /" ALGO name bm TO LOG flags level
  13. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 multiport dports , source IP range 10.2.61.1-10.2.61.100
  14. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 multiport dports , source IP range 10.2.61.1-10.2.61.100
  15. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 multiport dports , source IP range 10.0.0.1-10.0.0.255
  16. ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 multiport dports : source IP range 10.0.0.1-10.0.0.255
  17. tcp -- * * 0.0.0.0/ 10.2.61.22 multiport dports
  18. ACCEPT icmp -- * * 0.0.0.0/ 10.2.61.22 icmptype
  19. ACCEPT tcp -- * * 0.0.0.0/ 0.0.0.0/ tcp dpt:
  20. ACCEPT icmp -- * * 0.0.0.0/ 192.168.100.230 icmptype limit: avg /min burst
  21. ACCEPT icmp -- * * 0.0.0.0/ 10.2.61.22 icmptype limit: avg /min burst
  22.  
  23. Chain FORWARD (policy ACCEPT packets, bytes)
  24. pkts bytes target prot opt in out source destination
  25.  
  26. Chain OUTPUT (policy DROP packets, bytes)
  27. pkts bytes target prot opt in out source destination
  28. 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:80 state ESTABLISHED
  29. ACCEPT tcp -- * * 0.0.0.0/ 0.0.0.0/ tcp spt: state ESTABLISHED
  30. ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ multiport sports , destination IP range 10.2.61.1-10.2.61.100
  31. ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ multiport sports , destination IP range 10.2.61.1-10.2.61.100
  32. ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ multiport sports , destination IP range 10.0.0.1-10.0.0.255
  33. ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ multiport sports : destination IP range 10.0.0.1-10.0.0.255
  34. 899K ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ multiport sports ,
  35. 463K ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/ tcp spt:
  36. ACCEPT icmp -- * * 10.2.61.22 0.0.0.0/ icmptype
  37. ACCEPT icmp -- * * 0.0.0.0/ 0.0.0.0/
  1. [root@nginx ~]# iptables -L -n --line-number
  2. Chain INPUT (policy DROP)
  3. num target prot opt source destination
  4. 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED #iptables 规则匹配从上往下,NEW 状态第一次,把 ESTABLISHED 放在第一位增加后续访问的命中率,提升速度
  5. ACCEPT tcp -- 0.0.0.0/ 0.0.0.0/ tcp dpt: state NEW
  6. ACCEPT tcp -- 0.0.0.0/ 0.0.0.0/ multiport dports ,,, state NEW
  7. ACCEPT icmp -- 0.0.0.0/ 0.0.0.0/ icmptype
  8. ACCEPT icmp -- 0.0.0.0/ 0.0.0.0/ icmptype
  9.  
  10. Chain FORWARD (policy ACCEPT)
  11. num target prot opt source destination
  12.  
  13. Chain OUTPUT (policy DROP)
  14. num target prot opt source destination
  15. 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED #OUTPUT 规则中允许进入的数据就允许出去,
  16. ACCEPT icmp -- 0.0.0.0/ 0.0.0.0/ icmptype
  17. [root@nginx ~]#

iptables 扩展匹配 第三章的更多相关文章

  1. iptables详解(6):iptables扩展匹配条件之’–tcp-flags’

    如果你看过前文,那么你一定知道,前文已经对"tcp扩展模块"做过总结,但是只总结了tcp扩展模块中的"--sport"与"--dport"选 ...

  2. 4、iptables扩展匹配及网络防火墙功能

    关于centos7   firewalld    http://www.ibm.com/developerworks/cn/linux/1507_caojh/index.html 如何保存及重载规则: ...

  3. Linux防火墙之iptables基本匹配条件和隐式扩展匹配条件

    一.iptables的基本匹配条件 上一篇博文我们说到了iptables的基本工作原理.数据报文在内核的走向和管理链.管理规则.以及查看规则.导入和导出规则:回顾请参考https://www.cnbl ...

  4. Linux防火墙之iptables常用扩展匹配条件(一)

    上一篇博文讲了iptables的基本匹配条件和隐式匹配条件,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12269717.html:今天在来说说iptabel ...

  5. iptables的扩展匹配

    iptables的匹配条件 一.通用匹配:-s.-d.-p.-i.-o 二.扩展匹配 1.隐含扩展:使用-p{tcp|udp|icmp}指定某特定协议后,自动能够对协议进行扩展 -p tcp --dp ...

  6. Linux防火墙之iptables常用扩展匹配条件(二)

    上一篇博文我们讲到了iptables的一些常用的扩展匹配模块以及扩展模块的一些选项的说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12273755.htm ...

  7. 《Django By Example》第三章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中 ...

  8. 《Entity Framework 6 Recipes》中文翻译系列 (11) -----第三章 查询之异步查询

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第三章 查询 前一章,我们展示了常见数据库场景的建模方式,本章将向你展示如何查询实体 ...

  9. 《Linux命令行与shell脚本编程大全》 第三章 学习笔记

    第三章:基本的bash shell命令 bash程序使用命令行参数来修改所启动shell的类型 参数 描述 -c string 从string中读取命令并处理他们 -r 启动限制性shell,限制用户 ...

随机推荐

  1. Python学习之旅(七)

    Python基础知识(6):基本数据类型之列表 在Python中,最基本的数据结构是序列.序列中的每个元素被分配一个序号——即元素的位置,也称为索引.第一个索引从0开始,如果要从右边开始,序列中的最后 ...

  2. 修复ubuntu引导

    1. 插入ubuntu光盘启动临时ubuntu 2. ctrl alt t 进入命令行 3. 过程如下

  3. WebH

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...

  4. 【立体几何】Journey to Jupiter Gym - 101991J 立体几何模板

    https://cn.vjudge.net/problem/Gym-101991J 题目很长,其实就是给你一个正三角形,并且告诉你它的中点在Z轴上以及法向量,边长和顶点A的坐标(自由度已定),让你求A ...

  5. MySQL 大表优化方案(长文)

    当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部署.运维的各种复杂度,一般以整型 ...

  6. 解决adb:error: unknown host service

    1.在使用adb命令跑程序时出现adb: error: failed to get feature set: unknown host service 输入adb shell 时提示error: un ...

  7. JQuery插件之【jqGrid】常用语法整理

    jqGrid常用语法整理,包含数据获取.常用函数.触发事件等 jqGrid表格数据获取相关语法 获取表格所有数据 $("#grid").jqGrid("getRowDat ...

  8. 解决Kettle ETL数据乱码

    首先用insert语句插入一条数据试试是否因为MySQL编码不对引起,如果是MySQL原因,修改MySQL编码即可: 如果不是因为MySQL的编码导致问题,那么在Kettle的表输出中,编辑连接-选项 ...

  9. 漫画HDFS工作原理(转)

    转自:http://blog.csdn.net/netcoder/article/details/7442779?locationNum=2 对漫画内容更好的解读,可参考: http://www.we ...

  10. Ch03 数组相关操作 - 练习

    1. 编写一段代码,将a设置为一个n个随机数的数组,要求随机数介于0(包含)和n(不包含)之间. //import java.lang.Math def getArray(n:Int)={   val ...