说明:
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。
Linux sys-flood 小程序
注意:仅供学习之用
|
TCP SYN Flood 攻击 及其简单防御
什麽是 TCP SYN Flood 攻击?
TCP SYN Flood是一种常见,而且有效的远端(远程)拒绝服务(Denial of Service)攻击方式,它透过一定的操作破坏TCP三次握手建立正常连接,占用并耗费系统资源,使得提供TCP服务的主机系统无法正常工作。 由於TCP SYN Flood是透过网路底层对服务器Server进行攻击的,它可以在任意改变自己的网路IP地址的同时,不被网路上的其他设备所识别,这样就给防范网路犯罪部门追查犯罪来源造成很大的困难。 在国内内外的网站中,这种攻击屡见不鲜。在一个拍卖网站上,曾经有犯罪分子利用这种手段,在低价位时阻止其他用户继续对商品拍卖,干扰拍卖过程的正常运作。
如何判断?
一般情况下,可以一些简单步骤进行检查,来判断系统是否正在遭受TCP SYN Flood攻击。
1、 服务端无法提供正常的TCP服务。连接请求被拒绝或超时。
2、透过 netstat -an 命令检查系统,发现有大量的SYN_RECV连接状态。
检查服务器链接,SYN_RECV状态最高时有200多个,访问服务器网页特别慢,甚至超时,所以基本判定是SYN_RECV攻击。
解决方法:
1,增加未完成连接队列(q0)的最大长度。
echo 1280>/proc/sys/net/ipv4/tcp_max_syn_backlog
2, 启动SYN_cookie。
echo 1>/proc/sys/net/ipv4/tcp_syncookies
这些是被动的方法,治标不治本。而且加大了服务器的负担,但是可以避免被拒绝攻击(只是减缓)
治本的方法是在防火墙上做手脚。但是现在能在一定程度上防住syn flood攻击的防火墙都不便宜。并且把这个命令加入"/etc/rc.d/rc.local"文件中
如果对 /proc/sys/net/ipv4 下的配置文件进行解释,可以参阅 LinuxAid技术站的文章。查看本文全文也可以参阅。
关于 syn cookies, 请参阅 :http://cr.yp.to/syncookies.html
也许 使用mod_limitipconn.c来限制apache的并发数 也会有一定的帮助。
2. iptables的设置,
防止同步包洪水(Sync Flood)
# iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT
也有人写作
#iptables -A INPUT -p tcp –syn -m limit –limit 1/s -j ACCEPT
–limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改
防止各种端口扫描
# iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT
Ping洪水攻击(Ping of Death)
# iptables -A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT
IP地址基础
引言:
很惭愧自己是学习计算机的,多少年了都居然不知道A B C 类ip地址都保留了内网使用的ip,我突然发现如果外网有何局域网内相同ip的机器的话,那么外网 的机器将是访问不到的,这才知道了A B C 类ip地址都保留了内网使用的ip ,才醒悟为什么以前看到的局域网的ip地址总是192.168.*.*了,也终于明白了什么是公网ip和私有ip了,下面弄点IP的基础知识,给自己补一补:
IP简介
Internet 上的每台主机(Host)都有一个唯一的IP地址。IP协议就是使用这个地址在主机之间传递信息,这是Internet 能够运行的基础。IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。例如159.226.1.1。IP地址有两部分组成,一部分为网络地址,另一部分为主机地址。IP地址分为A、B、C、D、E5类。常用的是B和C两类。ip地址就像是我们的家庭住址一样,如果你要写信给一个人,你就要知道他(她)的地址,这样邮递员才能把信送到,计算机发送信息是就好比是邮递员,它必须知道唯一的“家庭地址”才能不至于把信送错人家。只不过我们的地址使用文字来表示的,计算机的地址用十进制数字表示。
众所周知,在电话通讯中,电话用户是靠电话号码来识别的。同样,在网络中为了区别不同的计算机,也需要给计算机指定一个号码,这个号码就是“IP地址”。
什么是IP地址
所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。
按照TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址是“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的IP地址可以表示为“10.0.0.1”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。
有人会以为,一台计算机只能有一个IP地址,这种观点是错误的。我们可以指定一台计算机具有多个IP地址,因此在访问互联网时,不要以为一个IP地址就是一台计算机;另外,通过特定的技术,也可以使多台服务器共用一个IP地址,这些服务器在用户看起来就像一台主机似的。
将IP地址分成了网络号和主机号两部分,设计者就必须决定每部分包含多少位。网络号的位数直接决定了可以分配的网络数(计算方法2^网络号位数);主机号的位数则决定了网络中最大的主机数(计算方法2^主机号位数-2)。然而,由于整个互联网所包含的网络规模可能比较大,也可能比较小,设计者最后聪明的选择了一种灵活的方案:将IP地址空间划分成不同的类别,每一类具有不同的网络号位数和主机号位数。
如何分配IP地址
TCP/IP协议需要针对不同的网络进行不同的设置,且每个节点一般需要一个“IP地址”、一个“子网掩码”、一个“默认网关”。不过,可以通过动态主机配置协议(DHCP),给客户端自动分配一个IP地址,避免了出错,也简化了TCP/IP协议的设置。
那么,局域网怎么分配IP地址呢?互联网上的IP地址统一由一个叫“IANA”(Internet Assigned Numbers Authority,互联网网络号分配机构)的组织来管理。
IP是什么?
——IP是当前热门的技术。与此相关联的一批新名词,如IP网络、IP交换、IP电话、IP传真等等,也相继出现。那么,IP是什么呢?
——IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此,IP协议也可以叫做“因特网协议”。
——IP是怎样实现网络互连的?各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。IP协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成“IP数据报”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点。
——那么,“数据报”是什么?它又有什么特点呢?数据报也是分组交换的一种形式,就是把所传送的数据分段打成“包”,再传送出去。但是,与传统的“连接型”分组交换不同,它属于“无连接型”,是把打成的每个“包”(分组)都作为一个“独立的报文”传送出去,所以叫做“数据报”。这样,在开始通信之前就不需要先连接好一条电路,各个数据报不一定都通过同一条路径传输,所以叫做“无连接型”。这一特点非常重要,它大大提高了网络的坚固性和安全性。
——每个数据报都有报头和报文这两个部分,报头中有目的地址等必要内容,使每个数据报不经过同样的路径都能准确地到达目的地。在目的地重新组合还原成原来发送的数据。这就要IP具有分组打包和集合组装的功能。
——在实际传送过程中,数据报还要能根据所经过网络规定的分组大小来改变数据报的长度,IP数据报的最大长度可达65535个字节。
——IP协议中还有一个非常重要的内容,那就是给因特网上的每台计算机和其它设备都规定了一个唯一的地址,叫做“IP地址”。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。
——现在电信网正在与IP网走向融合,以IP为基础的新技术是热门的技术,如用IP网络传送话音的技术(即VoIP)就很热门,其它如IP over ATM、IPover SDH、IP over WDM等等,都是IP技术的研究重点。
IP地址类型
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。
IP地址分类
1.A类IP地址
一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从0.0.0.1 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。
2.B类IP地址
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。
3.C类IP地址
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。
4.D类地址用于多点广播(Multicast)。
D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
5.E类IP地址
以“llll0”开始,为将来使用保留。
全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。
IP地址是由什么机构分配的?
所有的IP地址都由国际组织NIC(Network Information Center)负责统一分配,目前全世界共有三个这样的网络信息中心。
InterNIC:负责美国及其他地区;
ENIC:负责欧洲地区;
APNIC:负责亚太地区。
我国申请IP地址要通过APNIC,APNIC的总部设在日本东京大学。申请时要考虑申请哪一类的IP地址,然后向国内的代理机构提出。
什么是公有地址和私有地址?
公有地址(Public address)由Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。
私有地址(Private address)属于非注册地址,专门为组织机构内部使用。
以下列出留用的内部私有地址
A类 10.0.0.0–10.255.255.255
B类 172.16.0.0–172.31.255.255
C类 192.168.0.0–192.168.255.255
保留IP地址
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。
查找Ip有个cmd命令:tracert 后面加ip地址,可以查所经过的路由!
手把手教你把Vim改装成一个IDE编程环境(图文)
给一个原文的链接:http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx
Ubuntu 操作系统的安装
1 |
我写的内容是:从一个单纯的系统,到装上自己需要的一些软件的过程:<br /><br />1、安装Ubuntu<br />2、更新系统中的源<br />3、安装中文环境<br />4、安装常用 的软件<br />电骡amule 、bt客户端Azureus 、词霸星际译王、QQ客户端lumaqq、RAR 压缩/解压缩程序、下载软件Downloader for X 、多媒体编码器、totem、mplayer、Realplayer、Beep Media Player、Audacious<br />5、网络软件安装<br />FTP客户端fFTP 、Gaim 、雷鸟thunderbird、拨号和宽带ADSL/PPPoE程序、浏览器(opera 、galeon、epiphany)浏览器的Flash支持<br />6、安全杀毒软件的安装<br />防火墙Firestarter 、杀毒软件avast<br />7、其它的一些软件<br />Compiled HTML Help (CHM) 查看器xCHM 、阅读超星pdg文件的软件boox viewer<br />8、另外一些Ubuntu小技巧<br />9、说说linux下软件的安装<br /><br />这些适用于新手,也希望能驳高手一笑。<br />(我用的是选择中文简体安装的Ubuntu6.06)<br /><br />1、安装Ubuntu<br /><br />安装的教程网上很多,搜索一下便可以找到了。<br />也可以看下面的教程:<br />(1)光盘安装<br />http://www.iscott.cn/view.asp?id=82<br />或<br />http://xiaofanmo.googlepages.com/ubuntu%E5%AE%89%E8%A3%85%E6%89%8B%E8%AE%B0<br />(2)ubuntu6.06正式版硬盘安装<br />http://forum.ubuntu.org.cn/viewtopic.php?t=16398<br />(3)6.10-desktop-cd硬盘安装http://forum.ubuntu.org.cn/viewtopic.php?t=31756&<span class="entity">amp;</span>highlight=%E7%B3%BB%E7%BB%9F++%E5%AE%89%E8%A3%85<br /><br />2、更新系统中的源<br /><br />Ubuntu是一个很依赖网络的系统,它会把所有的软件放在软件库中,我们可以通过网络获取并安装,可以说就是这些软件库的地址吧。那么为更快更好地安装软件和更新系统,我们应该找到更全面更快的源。<br />具体步骤在<br />http://wiki.ubuntu.org.cn/%E5%BF%AB%E9%80%9F%E8%AE%BE%E7%BD%AE%E6%8C%87%E5%8D%97<br />中相应版本的快速设置中找到。<br /><br />3、安装中文环境<br /><br />1)在左上角,依次打开“系统→系统管理→语言支持”,选择“中文”时,系统会提示还缺少什么,只管装就是。<br />2)安装输入法<br />其实,在选择中文安装系统时,系统已经安装了SCIM输入法,可应该还缺少字库什么的吧,用不了。要用,在终端(左上角--应用程序→附件→终端)输入下面命令安装,登出系统,再进入,按“Ctrl+空格”就可调用SCIM输入法了。<br /><br />sudo apt-get install language-support-zh<br /><br />另,Ubuntu的Wiki中也有相应的教程:<br /><br />http://wiki.ubuntu.org.cn/%E5%A6%82%E4%BD%95%E6%B7%BB%E5%8A%A0%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5%E6%B3%95<br /><br />4、安装常用 的软件<br /><br />1)安装电骡amule<br />sudo apt-get install amule<br /><br />2)安装bt客户端Azureus<br />(1)Azureus是基于java虚拟机的,所以jre环境,在命令行输入:<br />sudo apt-get install sun-j2re1.5<br />(2)安装完成后,命令行输入:<br />java -version<br />以校验java虚拟机的版本.<br />(3)再在命令行输入:<br />sudo apt-get install azureus<br />出现(y/n)时全部选择y。<br /><br />3)3、安装词霸星际译王<br />(1)安装主程序<br />sudo apt-get install stardict stardict-common<br />(2)安装字典<br />sudo apt-get install stardict-cdict-gb stardict-cedict-gb stardict-hanzim stardict-langdao-ce-gb stardict-langdao-ec-gb stardict-oxford-gb stardict-xdict-ce-gb stardict-xdict-ec-gb<br /><br />4)安装QQ客户端lumaqq<br />(1)在命令行输入下面的命令来下载软件:<br />wget -c http://lumaqq.linuxsir.org/download/2005/lumaqq_2005-linux_gtk2_x86_with_jre.tar.gz<br />(2)解压到 /usr/share/<br />sudo tar zxvf lumaqq_2005-linux_gtk2_x86_with_jre.tar.gz -C /usr/share/<br />(3)更改属性为root拥有:<br />sudo chown -R root:root /usr/share/LumaQQ/<br />(4)更改属性为所有人可以读、写和执行:<br />sudo chmod -R 777 /usr/share/LumaQQ/<br />(5) 更新配置文件:<br />sudo gedit /usr/share/applications/LumaQQ.desktop<br /><br />在文件中输入:<br /><br />[Desktop Entry]<br />Name=LumaQQ<br />Comment=QQ Client<br />Exec=/usr/share/LumaQQ/lumaqq<br />Icon=/usr/share/LumaQQ/QQ.png<br />Terminal=false<br />Type=Application<br />Categories=Application;Network;<br /><br />保存文件,退出即可。<br /><br />5)安装RAR 压缩/解压缩程序<br />安装<br />sudo apt-get install rar<br />建立软链接<br />sudo ln -fs /usr/bin/rar /usr/bin/unrar<br />这样,以后只要在命令行输入unrar,就可以解压或者压缩文件了,安装完成后,归档管理器也同时集成了rar组件。<br /><br />6)安装多线程下载软件Downloader for X<br />sudo apt-get install d4x<br /><br />7)电脑,当然缺少不了影音啦,下面慢慢来。<br /><br />(1)首先安装多媒体编码器<br />sudo apt-get install gstreamer0.8-plugins<br />接着<br />sudo apt-get install gstreamer0.8-lame gstreamer0.8-ffmpeg w32codecs libdivx4linux install lame sox ffmpeg mjpegtools vorbis-tools<br />在系统询问是否继续(y/n)时,一律输入y,回车。<br />再在终端输入<br />gst-register-0.8<br />回车。<br /><br />(2)安装gstreamer的解码器,gstreamer是gnome主推的多媒体平台。然后我们安装xine的解码器 libxine-extracodecs ,xine是另外一个多媒体平台,功能非常强大。我们还把系统自带的totem卸载,改为使用xine后端的totem,这样才可以播放rmvb等视频。顺便安装上播放器mplayer。<br /><br />sudo apt-get install gstreamer0.10-*<br />sudo apt-get install libxine-extracodecs totem-xine mplayer-686 ffmpeg lame faad sox mjpegtools libxine-main1<br /><br />(3)当然,还可以安装安装Realplayer播放器<br />sudo apt-get install realplayer<br /><br />(4)时下最流行的是MP3,我们当然少不了,播放MP3我们可以<br /><br />A、装Beep Media Player<br />在终端输入下列即可<br />sudo apt-get install beep-media-player<br /><br />这个Beep Media Player会出现歌名乱码现象,可在“Beep Media Player”上面“右键→首选项→插件→MPEG音频插件”的下面的“首选项→标题”中,选上“禁用ID3v2标签”和“将非UTF-8 ID3标签转换成UTF-8”,并把ID3编码设为“GBK”就行了。<br /><br />B、装安装Audacious<br />先满足依赖关系<br /><br />sudo apt-get install libtagc0 libjack0.100.0-0 libmodplug0c2 libresid-builder0c2a libsamplerate0 libsidplay2 libcurl3-gnutls<br /><br />或<br />sudo apt-get install libvorbis-dev libasound2-dev libjack0.100.0-dev libsamplerate0 libtagc0-dev<br /><br />再安装Audacious的 deb 包(也可以直接双击这个deb 包)<br /> sudo dpkg -i audacious_dr1-1_i386.deb<br /><br />这deb包可在这下载<br />http://linuxtoy.org/deb/audacious_dr1-1_i386.deb<br />也可以看看这<br />http://linuxtoy.org/archives/audacious.html<br /><br />5、网络软件安装<br />1)FTP客户端fFTP<br />sudo apt-get install gftp<br />2)Gaim<br />sudo apt-get install gaim<br />这时安装的是2.0,里面支持支持国际上常用的ICQ、MSN Messenger、雅虎通、IRC、AIM、Jabber、Napster、Zephyr、Gadu-Gadu、Google Talk等,并且已内置了QQ的插件,直接可以用它上QQ了。<br /><br />3)电子邮件<br />系统里已默认安装了Evolution Mail,你在应用程序 -&<span class="entity">gt;</span> Internet -&<span class="entity">gt;</span> Evolution 电子邮件 可以找到它。当然也可以安装功能更强大的雷鸟thunderbird。<br />sudo apt-get install thunderbird<br /><br />4)拨号和宽带ADSL/PPPoE程序<br />(1)可以使用Gnome的拨号程序gnome-ppp上网<br />sudo apt-get install gnome-ppp<br />(2)使用宽带ADSL/PPPoE上网,你可以使用RP-PPPoE<br />安装前需要安装基本的编译工具 (build-essential),在命令行输入:<br />sudo apt-get install build-essential<br />下载软件:<br />wget -c http://frankandjacq.com/ubuntuguide/rp-pppoe-3.5.tar.gz<br />解压,设置权限:<br />sudo tar zxvf rp-pppoe-3.5.tar.gz -C /opt/<br />sudo chown -R root:root /opt/rp-pppoe-3.5/<br />设置菜单快捷方式:<br />sudo gedit /usr/share/applications/RP-PPPoE.desktop<br /><br />在新增的文件内加入下面这几行<br /><br />[Desktop Entry]<br />Name=RP-PPPoE<br />Comment=RP-PPPoE<br />Exec=gksudo /opt/rp-pppoe-3.5/go-gui<br />Icon=<br />Terminal=false<br />Type=Application<br />Categories=Application;Network;<br /><br />保存编辑过的文件<br /><br />5)浏览器的安装<br />(1)Firefox系统;自带<br /><br />(2)opera<br />据说是最快的浏览器,安装<br />sudo apt-get install opera<br />安装后打开,在“Tools→Prefernces”的“General”标签下的“Language”选择“Chinese(China)[zh-cn]”,再安“OK”,即可挽回中文了。<br />在打开opera后,可能无法调用SCIM输入法,可这样设置:<br />sudo gedit /usr/bin/opera<br /><br />第二行空白處輸入:<br />export QT_IM_MODULE=XIM<br /><br />(3)也可以试试浏览器galeon<br />sudo apt-get install galeon<br /><br />(4)还可以用用 epiphany浏览器<br />sudo apt-get install epiphany<br /><br />(5)还有,别忘了安装浏览器的Flash支持(仅x86)<br />sudo apt-get install flashplugin-nonfree<br /><br />6、安全杀毒软件的安装<br /><br />1)防火墙Firestarter<br />sudo apt-get install firestarter<br /><br />2)杀毒软件也有不少,这里介绍avast<br />第一步,下载并安装。<br />wget -c http://files.avast.com/files/linux/avast4workstation_1.0.6-2_i386.deb<br />dpkg -i avast4workstation_1.0.6-2_i386.deb<br />第二步,添加菜单项。<br />sudo gedit /usr/share/applications/avast.desktop<br /><br />向其中加入:<br /><br />[Desktop Entry]<br />Name=avast<br />Comment=avast<br />Exec=/usr/bin/avastgui<br />Icon=/usr/lib/avast4workstation/share/avast/icons/avast-appicon.png<br />Terminal=false<br />Type=Application<br />Categories=Application;System;<br /><br />这样,可以在应用程序→系统工具→avast启动avastgui。<br />第三步,获取注册码并注册。<br />进入<br />http://www.avast.com/i_kat_207.php?lang=ENG注册,使用邮箱,几分钟后就收到了注册码。<br />然后,打开avast,按提示输入注册码,注册后可使用一年,到时重新注册又能免费使用。<br /><br /><br />7、其它的一些软件<br /><br />1)安装Compiled HTML Help (CHM) 查看器xCHM<br />我们系统里可能有不少CHM的文件,在Ubuntu里怎么看,装个xCHM啦<br />sudo apt-get install xchm<br /><br />2)安装阅读超星pdg文件的软件boox viewer<br />阅读超星图书呢,需要借助于一个叫做BooX Viewer的小软件。<br /><br />(1)下载linux版本的booxviewer. 网址:http://www.linuxfans.org/nuke/modules.php?name=Forums&<span class="entity">amp;</span>file=viewtopic&<span class="entity">amp;</span>t=138982<br />http://www.magiclinux.org/people/kanker/tools/bxviewer.tar.gz<br />(2)下载此软件并保存到一个目录后,进入下载文件所在目录,输入: <br /> tar zxvf bxviewer.tar.gz <br />(3)将其解压缩到一个目录,然后cd bxviewer进入目录,输入./installbxv即可。 <br /><br />(4)若这样还不行,请回到当前用户所在目录,输入命令: <br /><br /> vi .bash_profile <br />或<br />gedit .bash_profile<br /><br /> 在此文件的最后加上: <br /><br /> export LD_LIBRARY_PATH=${installdir}<br /><br /> export PATH=$PATH:${installdir} <br /><br /> 其中${installdir}为你所下载的BooX Viewer软件解压后所在目录,即bxv和libborqt-6.9.0-qt2.3.so所在目录。 <br /> 然后在终端或者开始-运行中输入“bxv”即可。<br /><br />若还不行,将libborqt-6.9.0-qt2.3.so拷贝到/usr/lib目录下sudo cp libborqt-6.9.0-qt2.3.so /usr/lib。进入bxviewer目录,输入./bxv<br /><br />这参考了<br />http://forum.ubuntu.org.cn/viewtopic.php?t=9567&<span class="entity">amp;</span>highlight=%E8%B6%85%E6%98%9F<br />和<br />http://forum.ubuntu.org.cn/viewtopic.php?t=29847&<span class="entity">amp;</span>highlight=%E8%B6%85%E6%98%9F<br /><br /><br />8、另外一些小技巧<br /><br />1)启用root用户密码<br />sudo passwd root<br />系统会提示你输入新密码,同时启用它。<br /><br />2)禁用root帐户<br />sudo passwd -l root<br /><br />3)允许root用户登入GNOME<br />启用root后,<br />打开“系统→系统管理→登录窗口”,选择“安全”。勾选“允许本地系统管理员登录”<br /><br />4)自动登录GNOME (据说这样不安全)<br />但这样很方便,不用次次登录都要输入口令。<br />打开“系统-&<span class="entity">gt;</span>系统管理-&<span class="entity">gt;</span>登录窗口”,选择“安全”。勾选“启动时自动登录”并选择一个用户。<br /><br />5)改变文件/文件夹的权限<br />右键单击文件或文件夹。选择属性→权限分页。<br />这里可以为所有者、 群组和其它分别勾选读取、 写入、执行几种选项。<br /><br />6)改变文件/文件夹的所有者<br />sudo chown 新所有者用户名 /文件或文件夹的位置<br /><br />7)在安装Windows后恢复GRUB启动菜单<br />经常出现的情况是,我们想重装一下windows系统,但是重装会把启动Linux的菜单冲掉,这是个让人头疼的问题,我们这样来解决它:<br />首先按照第一项,用Ubuntu安装盘获得root权限,我们假定 /dev/hda 为 /boot 所在分区,然后在提示符输入:<br />grub-install /dev/hda<br />这样grub-install程序会为我们安装grub菜单。<br /><br />8)防止fsck检查vfat文件系统<br />每次开机时,系统总是检测Windows(vfat)分区,要好一段时间,如果你不想让fsck在启动时检查Windows(vfat)分区(有时这样的检查会产生许多错误信息),可以编辑/etc/fstab文件将第6列的pass参数改成0,当然,这要在root用户下或获得root的权限才才能更改。<br />9)怎样去掉桌面的分区快捷图标<br /><br />在Ubuntu的桌面上,都有硬盘的各个 分区的图标,如had5、had6、had7等,它们虽然带来一定的方便,但这些都可以在右上角的“位置”菜单中找到,若要去掉的话:<br />在终端中输入“gconf-editor”并按回车,<br />再找到apps--&<span class="entity">gt;</span>nautilus--&<span class="entity">gt;</span>desktop<br />把volumes visible后面的勾去掉就可了<br /><br />而想要建立什么程序的快捷方式直接从菜单里把它拖到桌面就行了。<br /><br />(10) 改变GRUB 菜单引导的系统。<br />装了Ubuntu后,系统引导自动到Ubuntu,在等待10秒后就进入Ubuntu。而不少人都是装双系统,且希望自动引导到Windows,那可以这样改变。<br />sudo cp /boot/grub/menu.lst /boot/grub/menu.lst_backup<br />sudo gedit /boot/grub/menu.lst<br /><br />再搜寻这一行文字<br />default 0<br />用下面这一行取代<br />default X_sequence<br />保存编辑过的文件。<br /><br />注意:X_sequence的意思是你的操作系统条目的项数(从0开始计算,即第一项是“0”,第二项是“1”,“Other operating system&<span class="entity">quot;</span>之类的也算。)<br /><br /><br />9、linux下安装软件<br /><br />在linux下安装软件,初学时真的找不着门,大家可以看看这<br />http://forum.ubuntu.org.cn/viewtopic.php?t=7619&<span class="entity">amp;</span>highlight=%E5%9C%A8linux%E4%B8%8B%E5%AE%89%E8%A3%85%E8%BD%AF%E4%BB%B6<br /><br />学习Ubuntu的,可要看看这<br />http://wiki.ubuntu.org.cn/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%96%B0%E7%AB%8B%E5%BE%97<br /><br /><br />不过,在Ubuntu里,安装软件其实很简单:<br /><br />1)如果你已知道要安装的软件包的名,只需在终端里输入命令:<br />apt-get install ***(软件包名)<br /><br /><br />2)如果已下载了软件的deb包,那么,双击就行.<br /><br /><br /><br />另外,在linux系统的软件中,有很多是rpm的,这种软件包在Ubuntu不能直接使用,若真的要使用,那要把rpm包转换成deb包<br /><br />(1)装个将rpm包转换为deb包的小工具alien<br /><br />apt-get install alien<br /><br />(2)进入rpm所在的目录,输入命令<br /><br />alien xxx.rpm(转换为deb包的rpm文件)<br /><br />即可在本目录下生成一个xxx.deb<br />然后你双击就行了。<br /><br /><br /><br /><br /><br /><br />上面的种种操作,主要参考了 T168软件频道的“自由之旅 飞翔”的教程:<br />http://www4.it168.com/ztsys/zhuanti/704/default.shtml<br /><br />我也这样安装了,确实有效,如果有什么错误,请高手指点。<br /><br /><br />要想学好Ubuntu,要常来这看看http://wiki.ubuntu.org.cn/<br /><br /><br />安装更加方便的bt软件<br /><br /> *<br /><br /> Ubuntu中<br /><br /> sudo apt-get install azureus<br /><br /> 安装完成后的快捷方式在(应用程序 -&<span class="entity">gt;</span> Internet -&<span class="entity">gt;</span> azureus) <br /><br /><br />sudo apt-get install flashplayer-mozilla<br /><br /><br /><br /><br /> <br /> <br /><br />1,修改你的源,并升级到最新的系统:<br /><br /><br /><br /><br />sudo gedit /etc/apt/sources.list<br /><br />在编辑器里,删除所有东西,并在加上下面的行:<br /><br />Mirror.lupaworld.com 更新服务器(浙江省杭州市电信,亚洲地区官方更新服务器,推荐全国用户使用。):<br /><br />deb http://cn.archive.ubuntu.com/ubuntu dapper main restricted universe multiverse<br />deb http://cn.archive.ubuntu.com/ubuntu dapper-security main restricted universe multiverse<br />deb http://cn.archive.ubuntu.com/ubuntu dapper-updates main restricted universe multiverse<br />deb http://cn.archive.ubuntu.com/ubuntu dapper-backports main restricted universe multiverse<br />deb http://mirror.lupaworld.com/ubuntu/ubuntu-cn dapper main restricted universe multiverse<br />deb http://security.ubuntu.com/ubuntu dapper-security main restricted universe multiverse<br />deb-src http://cn.archive.ubuntu.com/ubuntu dapper main restricted universe multiverse<br />deb-src http://cn.archive.ubuntu.com/ubuntu dapper-security main restricted universe multiverse<br />deb-src http://cn.archive.ubuntu.com/ubuntu dapper-updates main restricted universe multiverse<br />deb-src http://cn.archive.ubuntu.com/ubuntu dapper-backports main restricted universe multiverse deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted universe multiverse<br /><br /><br />系统升级(如果出现需要输入[Y/n] 或 [y/N] 一律输入 y 并 回车):<br /><br />sudo apt-get update<br /><br />sudo apt-get dist-upgrade<br /><br />3, 根据你安装的系统来选择安装的中文支持环境<br />sudo apt-get install language-pack-gnome-zh \language-pack-gnome-zh-base language-pack-zh l\<br />anguage-pack-zh-base language-support-zh<br /><br />5, 安装输入法,你可以在SCIM和fcitx输入法中任选一种安装<br />sudo apt-get install fcitx<br />im-switch -s fcitx<br /><br />7, 安装JAVA环境(如果出现需要输入[Y/n] 或 [y/N] 一律输入 y 并 回车)<br /><br />sudo apt-get install sun-j2re1.5<br /><br />sudo ln -sf /usr/lib/j2re1.5-sun/bin/java /usr/bin/java<br /><br />9, 安装更好的多媒体播放驱动: beep media player, 它比xmms要爽<br /><br /><br />sudo apt-get install beep-media-player totem-xine w32codecs gstreamer0.8-plugins<br /><br /><br />在实际使用中,将所有的声音输出改为 esd 输出,如果不知如何修改,也可以参考:如何混音<br /><br /><br />解决歌名列表乱码问题:首选项-&<span class="entity">gt;</span>插件-&<span class="entity">gt;</span>媒体-&<span class="entity">gt;</span>MPEG音频插件的首选项-&<span class="entity">gt;</span>标题-&<span class="entity">gt;</span>选中“禁用ID3v2标签”并把“将非UTF-8标签转成UTF-8”的ID3编码设为GBK<br />混音: preferences -&<span class="entity">gt;</span> plugins -&<span class="entity">gt;</span> output -&<span class="entity">gt;</span> 选为ALSA 0.9.7 或esound<br /><br /><br /><br />11, 安装英汉辞典, 星际翻王不错,用在Ubuntu上挺方便, 而且有稳定的源<br />sudo apt-get install stardict stardict-common stardict-cdict-gb \<br />stardict-cedict-gb stardict-hanzim stardict-langdao-ce-gb \<br />stardict-langdao-ec-gb stardict-oxford-gb stardict-xdict-ce-gb \<br />stardict-xdict-ec-gb<br /><br />11, 安装浏览器的Flash支持:<br /><br />sudo apt-get install flashplayer-mozilla<br /><br />12, 安装chm查看工具 xchm<br /><br />sudo apt-get install xchm<br /><br />13, 安装bt软件<br />sudo apt-get install azureus<br /><br />14, 安装升级的内核<br /><br />intel 的芯片用这个: sudo apt-get install linux-686<br /><br />现在没用AMD的了, 它用这个: sudo apt-get install linux-k7<br /><br />15, 安装编译工具包: build-essential<br /><br />(This package contains an informational list of packages which are<br /><br />considered essential for building Debian packages. This package also<br />depends on the packages on that list, to make it easy to have the<br />build-essential packages installed.)<br /><br />sudo apt-get install build-essential<br /><br />17, 安装rar<br />sudo apt-get install unrar<br />18, 安装Flash播放器及其Firefox插件<br /><br />sudo apt-get install flashplayer-mozilla<br /><br />Firefox常用用插件<br /> Super DragAndGo<br /> Adblock_plus<br /> Fasterfox<br /> MediaWrap<br /> DownThemAll<br /> <br /><br />19安装VMware<br />sudo apt-get install linux-headers-`uname -r`<br /> wget http://download3.vmware.com/software/vmplayer/VMware-player-1.0.1-19317.tar.gz<br /> tar xvzf VMware-player-1.0.1-19317.tar.gz<br /> cd VMware-player-1.0.1-19317<br /> sudo ./vmware-install.pl<br /> |
从PHP数组求差想到的
版本一:
|
版本 二
|
版本 三
|
最后,让我们比较一下isset 与array_key_exists 的效率吧:
查找一个存在的key
|
输出:
———-PHP代码调试 ———-
4.10079956055E-005
1.4066696167E-005
输出完成 (耗时 5 秒) – 正常终止
查找一个不存在的:
|
输出:
———-PHP代码调试 ———-
4.31537628174E-005
1.19209289551E-005
输出完成 (耗时 0 秒) – 正常终止
结论:数组中检查一个key是否存在时,用array_key_exists 比 isset 要快的多,特别是出来的数组很大时,至于个中缘由,有待进一步研究
做‘访问来源统计’是发现的一个小问题
我想用<script src = ‘a.php’></script> 放到每页的头部,来通过a.php来统计每页的来源,结果用$_SERVER[‘HTTP_REFERER’];记录的都是本页的url,原来我不是直接访问的a.php,而是通过script标签的src属性,script标签是本页的,读取a.php时,将本页的url作为referer提交给了服务器,所以不能用这个方法来统计页面的访问来源。
isset() 和PHP数组
PHP中原来有人使用empty函数时就没有考虑到数字0也是empty的,单凭简单的“认为”就难免会出一些意想不到的bug,于是我就倾向于使用isset函数,没想到isset函数也有我想不到的情况,举个例子:
<?php
$arr[‘a’] = "A";
$arr[‘a’][‘b’] = "B"; //这时 $arr[‘a’] = "A"; 已经被覆盖了,
echo isset($arr[‘a’][‘c’]);
?>
输出为:
1
怎么回事呢?
测试发现,不但isset($arr[‘a’][‘c’]) 为真,如果echo $arr[‘a’][‘c’]; 的话,结果还是B呢!
因为在php这种弱类型语言中,key ‘c’ 不存在时,试图转换为数字索引了,转换后就是索引0了,而key ‘b’ 对应的数字索引就是0,所以$arr[‘a’][‘c’] 就成 $arr[‘a’][‘b’] 了,但是如果用is_array()测试,我们将发现$arr 是数组,而$arr[‘a’] 不是数组,所以用array_key_exists() 来查找$arr[‘a’] 中的key ‘b‘ 是否存在的话讲返回false;
再看看这个:
|
输出:
———-PHP代码调试 ———-
when $a like array
$arr is array ? 1
$arr["a"] is array ?
1
B
B
when $a is string
isset($a["c"]):1
a
when $a is array
isset($a["c"]):
输出完成 (耗时 0 秒) – 正常终止
其实: 上面混淆的字符串与数组
对于 $arr = array(‘a’=>’A’);
1. $arr 是数组,isset($arr[‘b’]); 为假,用array_key_exists测试key ‘b’ 也是不存在的
2. $arr[‘a’] 是字符串,isset($arr[‘a’][‘b’]); 则’b’视为字符串的下标(不是数组的下标),一定要转成数字,于是转成了0,于是$arr[‘a’][‘b’]就是存在的了,不妨测试一下,如果$arr[‘a’] 为”,则isset($arr[‘a’][‘b’]); 就为假了。而且因为$arr[‘a’]根本就不是数组,所以用array_key_exists测试key ‘b’ 肯听返回false了。
结论:所以isset没有问题,array_key_exists 也没有问题,问题就在于把字符串与数组 混淆了
不管$arr 原来是什么,只要$arr和一个下标一个被赋值了(如:$arr[‘a’] = ‘A’;)那么$arr 就是数组;
但是,如果因为$arr 可以和一个下标一起使用,就说明$arr 是数组,就打错特错了
JavaScript 学习资源 [很不错的哦]
这里不再转载了,只给出几个链接:
深入理解Javascript闭包(closure)
Javascript 闭包【可打印版】 打印一份看看,挺好!
惰性函数定义模式 写的不错!
javascript:面向对象编程 [ 研究了继承、多态的构造 ]