文章列表
 
您正在查看 "默认分类" 分类下的文章

2012-03-02 17:54
1. TFTP 刷上Openwrt  详见http://bbs.jmu.edu.cn/showtopic-56337.aspx


2. 刷好效果如下,改下密码,一会进ssh 

3. 从FTP下载安装包(mentohust文件是后来找作者编译的)

4. 安装软件包,用作者的主程序文件覆盖,并做一个库的软连接 //图上少了个-s 囧 //更新-覆盖和软连接可省了

5. 认证 ,欢呼吧!!

6.一些脚本
添加计划任务:D  一早起来就有得上了。 开机-上网


crontab -e

CODE:10 6 * * * /usr/sbin/mentohust  
10 23 * * 0-4 /usr/sbin/mentohust -k

crond stop
crond start

重启服务使之生效
===================
开机自启动脚本  //不懂shell脚本 ,只能 照猫画虎

vi /etc/init.d/mento

输入以下


CODE:#!/bin/sh /etc/rc.common
START=99
STOP=10
start()
{
mentohust
}
stop()
{
sync
mentohust -k
}
restart()
{
stop
start
}


然后运行 /etc/init.d/mento enable ,系统 会自动 创建两个 软连接 到 /etc/rc.d/ 下,类似 于windows的开关机脚本

开路由-上网


7.路由里拨vpn 
=====================================

鼓捣了好几夜,翻阅无数E文帖子,终于搞定,但效果不尽人意。废话不说,直接贴配置

mentohust认证上后

opkg update #更新opkg

opkg install xl2tpd #安装拨号程序xl2tpd

修改以下四个文件


/etc/xl2tpd/xl2tpd.conf  #xl2tpd核心配置文件
[global]
port = 1701
auth file = /etc/xl2tpd/ppp.secrets
#这里的jmuvpn是拨号名称

[lac jmuvpn]
#服务器地址

lns=10.10.10.1
redial=yes

redial timeout=15
max redials=5
require pap=yes
require chap=yes
require authentication=yes
#你的用户名

name=USERNAME@DOMAIN
ppp debug=no
#另一个不知道什么配置文件

pppoptfile = /etc/ppp/options.l2tpd.jmu



/etc/ppp/options.l2tpd.jmu #刚刚那个配置文件
noauth
defaultroute
proxyarp



/etc/ppp/pap-secrets
USERNAME@DOMAIN        *      password        * #这里的用户名对应上面,格式是 “用户名tab星号tab密码tab星号”



/etc/ppp/chap-secrets
pppoptfile=USERNAME@DOMAIN        *      password        * #同上

接下来拨号
先 mkdir /var/run/xl2tpd #xl2tpd很笨,不会自己创建

然后 xl2tpd 把xl2tpd跑起来,或者,你如果 怕出错 的话,用 xl2tpd -D 调试模式,再开一个窗口进行认证操作

接着 echo 'c jmuvpn' >/var/run/xl2tpd/l2tp-control 就可以拨上号了,正常情况 下 xp2tpd -D窗口会有回显,ifconfig可以看到一个ppp0的接口,here we go

再然后,迅速添加 一条路由到 vpn服务器,route add -net 10.10.10.1 netmask 255.255.255.255 gw 58.199.8.1 #这里的58.199.8.1换成你自己的网关,不这么做你一会就掉线了。

然后删除原来的默认路由,route del default ,添加电信默认路由, route add -net default 61.154.237.114 #这里的网关统一用这个没问题

到此,你的路由器是完全 可以通过ppp0接口访问到internet ,traceroute www.baidu.com 验证一下。

问题来了,你会发现,你路由lan口下挂的几台PC都 上不了网。别急,继续 往下看

修改





/etc/firewall.user  #用户防火墙文件
# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.
iptables -A forwarding_rule -i ppp0 -o br-lan -j ACCEPT 
iptables -A forwarding_rule -i br-lan -o ppp0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE


这里的192.168.1.0/24 是你的pc所在网段,这三句的意思 就是,允许br-lan接口和ppp0接口之间的数据转发,并做一个nat出去,这样,你的pc就可以访问Inernet了,Enjoy it !
上张效果图 开路由-电信


 附件: 您所在的用户组无法下载或查看附件

============
更新:完美搞定vpn拨号问题,完成以上设置之后 ,你会发现,baidu google你可以上,其他网站 确上不了。一直以为是linux的路由决策出问题。最后发现是ppp0的mtu只有1492,然后pc端默认的是1500,解决方法就是把pc的mtu给降下去。
修改注册表: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\interfaces]下,选择连接路由的网卡,新建Dword值,命名为MTU,数值为1450(十进制),重启本地连接 OK!
写了个改MTU的通用P,支持xp,2003,win7,vista


引用:
@echo off & color 0a & title MTU FIX

::以下改为路由器地址
SET GW=192.168.1.1
::以下设置MTU值
Set MTU=1450

(route add 1.1.1.1 mask 255.255.255.255 %GW% & route delete 1.1.1.1 mask 255.255.255.255 %GW%) >nul 2>nul || (echo Vista/Win7用户请以管理员身份运行本程序! && ping 127.1 /n 4 >nul && exit)

for /f %%i in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces ^| find "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"') do (REG QUERY %%i /v DefaultGateway | find "%GW%" && (REG ADD %%i /v MTU /t REG_DWORD /d %MTU% /F)) >nul 2>nul

for /f %%i in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces ^| find "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"') do (REG QUERY %%i /v DhcpDefaultGateway | find "%GW%" && (REG ADD %%i /v MTU /t REG_DWORD /d %MTU% /F)) >nul 2>nul

echo 已修改MTU值到%MTU%,请重启无线网络连接使之生效...
ping 127.1 /n 4 >nul




=========100528更新======

虽然/etc/config/firewall里已经 设置如下


引用:config zone
        option name            vpn
        option input    REJECT
        option output  ACCEPT
        option forward  REJECT
        option masq            1
        option mtu_fix  1
但是 这里的mtu_fix未起作用。。所以直接 在/etc/firewall.user里添加 
iptables -A zone_vpn_MSSFIX -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
这样同样可以解决拨了vpn后。大部分网站 上不去的问题。这样做的好处是不用在每个客户端运行上面的脚本,缺点是加大路由的开销。(很小)

=================
vi /usr/sbin/jmuvpn          #添加 一个拨号脚本


#!/bin/sh
GATEWAY=58.199.8.1
case $1 in
start)
{
route add -net 10.10.10.1 netmask 255.255.255.255 gw $GATEWAY
route add -net 210.34.0.0 netmask 255.255.0.0 gw $GATEWAY
route add -net 58.195.0.0 netmask 255.255.0.0 gw $GATEWAY
route add -net 219.228.0.0 netmask 255.255.0.0 gw $GATEWAY
route add -net 58.199.0.0 netmask 255.255.0.0 gw $GATEWAY
route add -net 192.168.0.0 netmask 255.255.0.0 gw $GATEWAY
route add -net 172.0.0.0 netmask 255.0.0.0 gw $GATEWAY
route add -net 121.194.7.0 netmask 255.255.255.0 gw $GATEWAY
echo 'c jmuvpn' > /var/run/xl2tpd/l2tp-control
}>/dev/null 2>&1
sleep 2
ifconfig | grep ppp >/dev/null && (echo 'Connect successful!' && \
route del default && route add -net default gw 61.154.237.114
)
ifconfig | grep ppp >/dev/null || echo 'Connect fail'
;;
stop)
echo 'd jmuvpn' > /var/run/xl2tpd/l2tp-control
route add -net default gw  $GATEWAY>/dev/null 2>&1
echo 'Disconnect successful!'
;;
esac


================



上一张路由的图 //放在旁边积灰若干个月






==============
参考 

 
2011-12-12 14:04

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。

在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:

CREATE TABLE mytable(

ID INT NOT NULL,  

username VARCHAR(16) NOT NULL

);

我们随机向里面插入了10000条记录,其中有一条:5555, admin。

在查找username="admin"的记录 SELECT * FROM mytable WHERE username='admin';时,如果在username上已经建立了索引,MySQL无须任何扫描,即准确可找到该记录。相反,MySQL会扫描所有记录,即要查询10000条记录。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。

MySQL索引类型包括:

(1)普通索引

这是最基本的索引,它没有任何限制。它有以下几种创建方式:

◆创建索引

CREATE INDEX indexName ON mytable(username(length));
如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length,下同。

◆修改表结构

ALTER mytable ADD INDEX [indexName] ON (username(length))
◆创建表的时候直接指定

CREATE TABLE mytable(

ID INT NOT NULL,  

username VARCHAR(16) NOT NULL,

INDEX [indexName] (username(length))

);
删除索引的语法:

DROP INDEX [indexName] ON mytable;
(2)唯一索引

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

◆创建索引

CREATE UNIQUE INDEX indexName ON mytable(username(length))
◆修改表结构

ALTER mytable ADD UNIQUE [indexName] ON (username(length))
◆创建表的时候直接指定

CREATE TABLE mytable(

ID INT NOT NULL,  

username VARCHAR(16) NOT NULL,

UNIQUE [indexName] (username(length))

);
(3)主键索引

它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:

CREATE TABLE mytable(

ID INT NOT NULL,  

username VARCHAR(16) NOT NULL,

PRIMARY KEY(ID)

);
当然也可以用 ALTER 命令。记住:一个表只能有一个主键。

(4)组合索引

为了形象地对比单列索引和组合索引,为表添加多个字段:

CREATE TABLE mytable(

ID INT NOT NULL,  

username VARCHAR(16) NOT NULL,

city VARCHAR(50) NOT NULL,

age INT NOT NULL

);
为了进一步榨取MySQL的效率,就要考虑建立组合索引。就是将 name, city, age建到一个索引里:

ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);
建表时,usernname长度为 16,这里用 10。这是因为一般情况下名字的长度不会超过10,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。

如果分别在 usernname,city,age上建立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率也会大不一样,远远低于我们的组合索引。虽然此时有了三个索引,但MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。

建立这样的组合索引,其实是相当于分别建立了下面三组组合索引:

usernname,city,age

usernname,city

usernname
为什么没有 city,age这样的组合索引呢?这是因为MySQL组合索引“最左前缀”的结果。简单的理解就是只从最左面的开始组合。并不是只要包含这三列的查询都会用到该组合索引,下面的几个SQL就会用到这个组合索引:

SELECT * FROM mytable WHREE username="admin" AND city="郑州"

SELECT * FROM mytable WHREE username="admin"
而下面几个则不会用到:

SELECT * FROM mytable WHREE age=20 AND city="郑州"

SELECT * FROM mytable WHREE city="郑州"
(5)建立索引的时机

到这里我们已经学会了建立索引,那么我们需要在什么情况下建立索引呢?一般来说,在WHERE和JOIN中出现的列需要建立索引,但也不完全如此,因为MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引。例如:

SELECT t.Name

FROM mytable t LEFT JOIN mytable m  

ON t.Name=m.username WHERE m.age=20 AND m.city='郑州'
此时就需要对city和age建立索引,由于mytable表的userame也出现在了JOIN子句中,也有对它建立索引的必要。

刚才提到只有某些时候的LIKE才需建立索引。因为在以通配符%和_开头作查询时,MySQL不会使用索引。例如下句会使用索引:

SELECT * FROM mytable WHERE username like'admin%'
而下句就不会使用:

SELECT * FROM mytable WHEREt Name like'%admin'
因此,在使用LIKE时应注意以上的区别。

(6)索引的不足之处

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:

◆虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

◆建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。

索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。

(7)使用索引的注意事项

使用索引时,有以下一些技巧和注意事项:

◆索引不会包含有NULL值的列

只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。

◆使用短索引

对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

◆索引列排序

MySQL查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

◆like语句操作

一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。

◆不要在列上进行运算

select * from users where YEAR(adddate)<2007;
将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成

select * from users where adddate<‘2007-01-01’;
◆不使用NOT IN和<>操作

以上,就对其中MySQL索引类型进行了介绍。

索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记 录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4 个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要 100s(但实际上要好很多很多)。如果对之建立B-Tree索引,则只需要进行log100(10^6)=3次页面读取,最坏情况下耗时30ms。这就 是索引带来的效果,很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引。进入正题:

第二章、索引与优化

1、选择索引的数据类型

MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则:

(1)越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。
(2)简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。
(3)尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。

1.1、选择标识符
选择合适的标识符是非常重要的。选择时不仅应该考虑存储类型,而且应该考虑MySQL是怎样进行运算和比较的。一旦选定数据类型,应该保证所有相关的表都使用相同的数据类型。
(1)   整型:通常是作为标识符的最好选择,因为可以更快的处理,而且可以设置为AUTO_INCREMENT。

(2)   字符串:尽量避免使用字符串作为标识符,它们消耗更好的空间,处理起来也较慢。而且,通常来说,字符串都是随机的,所以它们在索引中的位置也是随机的,这会导致页面分裂、随机访问磁盘,聚簇索引分裂(对于使用聚簇索引的存储引擎)。

2、索引入门
对于任何DBMS,索引都是进行优化的最主要的因素。对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降。
如果对多列进行索引(组合索引),列的顺序非常重要,MySQL仅能对索引最左边的前缀进行有效的查找。例如:
假 设存在组合索引it1c1c2(c1,c2),查询语句select * from t1 where c1=1 and c2=2能够使用该索引。查询语句select * from t1 where c1=1也能够使用该索引。但是,查询语句select * from t1 where c2=2不能够使用该索引,因为没有组合索引的引导列,即,要想使用c2列进行查找,必需出现c1等于某值。

2.1、索引的类型
索引是在存储引擎中实现的,而不是在服务器层中实现的。所以,每种存储引擎的索引都不一定完全相同,并不是所有的存储引擎都支持所有的索引类型。
2.1.1、B-Tree索引
假设有如下一个表:

CREATE TABLE People (

   last_name varchar(50)    not null,

   first_name varchar(50)    not null,

   dob        date           not null,

   gender     enum('m', 'f') not null,

   key(last_name, first_name, dob)

);

其索引包含表中每一行的last_name、first_name和dob列。其结构大致如下:

索引存储的值按索引列中的顺序排列。可以利用B-Tree索引进行全关键字、关键字范围和关键字前缀查询,当然,如果想使用索引,你必须保证按索引的最左边前缀(leftmost prefix of the index)来进行查询。
(1)匹配全值(Match the full value):对索引中的所有列都指定具体的值。例如,上图中索引可以帮助你查找出生于1960-01-01的Cuba Allen。
(2)匹配最左前缀(Match a leftmost prefix):你可以利用索引查找last name为Allen的人,仅仅使用索引中的第1列。
(3)匹配列前缀(Match a column prefix):例如,你可以利用索引查找last name以J开始的人,这仅仅使用索引中的第1列。
(4)匹配值的范围查询(Match a range of values):可以利用索引查找last name在Allen和Barrymore之间的人,仅仅使用索引中第1列。
(5)匹配部分精确而其它部分进行范围匹配(Match one part exactly and match a range on another part):可以利用索引查找last name为Allen,而first name以字母K开始的人。
(6)仅对索引进行查询(Index-only queries):如果查询的列都位于索引中,则不需要读取元组的值。
由于B-树中的节点都是顺序存储的,所以可以利用索引进行查找(找某些值),也可以对查询结果进行ORDER BY。当然,使用B-tree索引有以下一些限制:
(1) 查询必须从索引的最左边的列开始。关于这点已经提了很多遍了。例如你不能利用索引查找在某一天出生的人。
(2) 不能跳过某一索引列。例如,你不能利用索引查找last name为Smith且出生于某一天的人。
(3) 存储引擎不能使用索引中范围条件右边的列。例如,如果你的查询语句为WHERE last_name="Smith" AND first_name LIKE 'J%' AND dob='1976-12-23',则该查询只会使用索引中的前两列,因为LIKE是范围查询。

2.1.2、Hash索引
MySQL 中,只有Memory存储引擎显示支持hash索引,是Memory表的默认索引类型,尽管Memory表也可以使用B-Tree索引。Memory存储 引擎支持非唯一hash索引,这在数据库领域是罕见的,如果多个值有相同的hash code,索引把它们的行指针用链表保存到同一个hash表项中。
假设创建如下一个表:
CREATE TABLE testhash (
fname VARCHAR(50) NOT NULL,
lname VARCHAR(50) NOT NULL,
KEY USING HASH(fname)
) ENGINE=MEMORY;
包含的数据如下:

假设索引使用hash函数f( ),如下:

f('Arjen') = 2323

f('Baron') = 7437

f('Peter') = 8784

f('Vadim') = 2458

此时,索引的结构大概如下:

Slots是有序的,但是记录不是有序的。当你执行
mysql> SELECT lname FROM testhash WHERE fname='Peter';
MySQL会计算’Peter’的hash值,然后通过它来查询索引的行指针。因为f('Peter') = 8784,MySQL会在索引中查找8784,得到指向记录3的指针。
因为索引自己仅仅存储很短的值,所以,索引非常紧凑。Hash值不取决于列的数据类型,一个TINYINT列的索引与一个长字符串列的索引一样大。

Hash索引有以下一些限制:
(1)由于索引仅包含hash code和记录指针,所以,MySQL不能通过使用索引避免读取记录。但是访问内存中的记录是非常迅速的,不会对性造成太大的影响。
(2)不能使用hash索引排序。
(3)Hash索引不支持键的部分匹配,因为是通过整个索引值来计算hash值的。
(4)Hash索引只支持等值比较,例如使用=,IN( )和<=>。对于WHERE price>100并不能加速查询。
2.1.3、空间(R-Tree)索引
MyISAM支持空间索引,主要用于地理空间数据类型,例如GEOMETRY。
2.1.4、全文(Full-text)索引
全文索引是MyISAM的一个特殊索引类型,主要用于全文检索。

3、高性能的索引策略
3.1、聚簇索引(Clustered Indexes)
聚 簇索引保证关键字的值相近的元组存储的物理位置也相同(所以字符串类型不宜建立聚簇索引,特别是随机字符串,会使得系统进行大量的移动操作),且一个表只 能有一个聚簇索引。因为由存储引擎实现索引,所以,并不是所有的引擎都支持聚簇索引。目前,只有solidDB和InnoDB支持。
聚簇索引的结构大致如下:

注: 叶子页面包含完整的元组,而内节点页面仅包含索引的列(索引的列为整型)。一些DBMS允许用户指定聚簇索引,但是MySQL的存储引擎到目前为止都不支 持。InnoDB对主键建立聚簇索引。如果你不指定主键,InnoDB会用一个具有唯一且非空值的索引来代替。如果不存在这样的索引,InnoDB会定义 一个隐藏的主键,然后对其建立聚簇索引。一般来说,DBMS都会以聚簇索引的形式来存储实际的数据,它是其它二级索引的基础。

3.1.1、InnoDB和MyISAM的数据布局的比较
为了更加理解聚簇索引和非聚簇索引,或者primary索引和second索引(MyISAM不支持聚簇索引),来比较一下InnoDB和MyISAM的数据布局,对于如下表:

CREATE TABLE layout_test (

   col1 int NOT NULL,

   col2 int NOT NULL,

   PRIMARY KEY(col1),

   KEY(col2)

);

假设主键的值位于1---10,000之间,且按随机顺序插入,然后用OPTIMIZE TABLE进行优化。col2随机赋予1---100之间的值,所以会存在许多重复的值。
(1)   MyISAM的数据布局
其布局十分简单,MyISAM按照插入的顺序在磁盘上存储数据,如下:

注:左边为行号(row number),从0开始。因为元组的大小固定,所以MyISAM可以很容易的从表的开始位置找到某一字节的位置。
据些建立的primary key的索引结构大致如下:

注:MyISAM不支持聚簇索引,索引中每一个叶子节点仅仅包含行号(row number),且叶子节点按照col1的顺序存储。
来看看col2的索引结构:

实际上,在MyISAM中,primary key和其它索引没有什么区别。Primary key仅仅只是一个叫做PRIMARY的唯一,非空的索引而已。

(2)   InnoDB的数据布局
InnoDB按聚簇索引的形式存储数据,所以它的数据布局有着很大的不同。它存储表的结构大致如下:

注:聚簇索引中的每个叶子节点包含primary key的值,事务ID和回滚指针(rollback pointer)——用于事务和MVCC,和余下的列(如col2)。

相 对于MyISAM,二级索引与聚簇索引有很大的不同。InnoDB的二级索引的叶子包含primary key的值,而不是行指针(row pointers),这减小了移动数据或者数据页面分裂时维护二级索引的开销,因为InnoDB不需要更新索引的行指针。其结构大致如下:

聚簇索引和非聚簇索引表的对比:

3.1.2、按primary key的顺序插入行(InnoDB)

如 果你用InnoDB,而且不需要特殊的聚簇索引,一个好的做法就是使用代理主键(surrogate key)——独立于你的应用中的数据。最简单的做法就是使用一个AUTO_INCREMENT的列,这会保证记录按照顺序插入,而且能提高使用 primary key进行连接的查询的性能。应该尽量避免随机的聚簇主键,例如,字符串主键就是一个不好的选择,它使得插入操作变得随机。

3.2、覆盖索引(Covering Indexes)
如果索引包含满足查询的所有数据,就称为覆盖索引。覆盖索引是一种非常强大的工具,能大大提高查询性能。只需要读取索引而不用读取数据有以下一些优点:
(1)索引项通常比记录要小,所以MySQL访问更少的数据;
(2)索引都按值的大小顺序存储,相对于随机访问记录,需要更少的I/O;
(3)大多数据引擎能更好的缓存索引。比如MyISAM只缓存索引。
(4)覆盖索引对于InnoDB表尤其有用,因为InnoDB使用聚集索引组织数据,如果二级索引中包含查询所需的数据,就不再需要在聚集索引中查找了。
覆盖索引不能是任何索引,只有B-TREE索引存储相应的值。而且不同的存储引擎实现覆盖索引的方式都不同,并不是所有存储引擎都支持覆盖索引(Memory和Falcon就不支持)。
对 于索引覆盖查询(index-covered query),使用EXPLAIN时,可以在Extra一列中看到“Using index”。例如,在sakila的inventory表中,有一个组合索引(store_id,film_id),对于只需要访问这两列的查 询,MySQL就可以使用索引,如下:

mysql> EXPLAIN SELECT store_id, film_id FROM sakila.inventory\G

*************************** 1. row ***************************

           id: 1

select_type: SIMPLE

        table: inventory

         type: index

possible_keys: NULL

          key: idx_store_id_film_id

      key_len: 3

          ref: NULL

         rows: 5007

        Extra: Using index

1 row in set (0.17 sec)

在 大多数引擎中,只有当查询语句所访问的列是索引的一部分时,索引才会覆盖。但是,InnoDB不限于此,InnoDB的二级索引在叶子节点中存储了 primary key的值。因此,sakila.actor表使用InnoDB,而且对于是last_name上有索引,所以,索引能覆盖那些访问actor_id的查 询,如:

mysql> EXPLAIN SELECT actor_id, last_name

    -> FROM sakila.actor WHERE last_name = 'HOPPER'\G

*************************** 1. row ***************************

           id: 1

select_type: SIMPLE

        table: actor

         type: ref

possible_keys: idx_actor_last_name

          key: idx_actor_last_name

      key_len: 137

          ref: const

         rows: 2

        Extra: Using where; Using index

3.3、利用索引进行排序
MySQL 中,有两种方式生成有序结果集:一是使用filesort,二是按索引顺序扫描。利用索引进行排序操作是非常快的,而且可以利用同一索引同时进行查找和排 序操作。当索引的顺序与ORDER BY中的列顺序相同且所有的列是同一方向(全部升序或者全部降序)时,可以使用索引来排序。如果查询是连接多个表,仅当ORDER BY中的所有列都是第一个表的列时才会使用索引。其它情况都会使用filesort。

create table actor(

actor_id int unsigned NOT NULL AUTO_INCREMENT,

name      varchar(16) NOT NULL DEFAULT '',

password        varchar(16) NOT NULL DEFAULT '',

PRIMARY KEY(actor_id),

KEY     (name)

) ENGINE=InnoDB

insert into actor(name,password) values('cat01','1234567');

insert into actor(name,password) values('cat02','1234567');

insert into actor(name,password) values('ddddd','1234567');

insert into actor(name,password) values('aaaaa','1234567');

mysql> explain select actor_id from actor order by actor_id \G

*************************** 1. row ***************************

           id: 1

select_type: SIMPLE

        table: actor

         type: index

possible_keys: NULL

          key: PRIMARY

      key_len: 4

          ref: NULL

         rows: 4

        Extra: Using index

1 row in set (0.00 sec)

mysql> explain select actor_id from actor order by password \G

*************************** 1. row ***************************

           id: 1

select_type: SIMPLE

        table: actor

         type: ALL

possible_keys: NULL

          key: NULL

      key_len: NULL

          ref: NULL

         rows: 4

        Extra: Using filesort

1 row in set (0.00 sec)

mysql> explain select actor_id from actor order by name \G

*************************** 1. row ***************************

           id: 1

select_type: SIMPLE

        table: actor

         type: index

possible_keys: NULL

          key: name

      key_len: 18

          ref: NULL

         rows: 4

        Extra: Using index

1 row in set (0.00 sec)

当 MySQL不能使用索引进行排序时,就会利用自己的排序算法(快速排序算法)在内存(sort buffer)中对数据进行排序,如果内存装载不下,它会将磁盘上的数据进行分块,再对各个数据块进行排序,然后将各个块合并成有序的结果集(实际上就是 外排序)。对于filesort,MySQL有两种排序算法。
(1)两遍扫描算法(Two passes)
实现方式是先将须要排序的字段和可以直接定位到相关行数据的指针信息取出,然后在设定的内存(通过参数sort_buffer_size设定)中进行排序,完成排序之后再次通过行指针信息取出所需的Columns。
注:该算法是4.1之前采用的算法,它需要两次访问数据,尤其是第二次读取操作会导致大量的随机I/O操作。另一方面,内存开销较小。
(3)   一次扫描算法(single pass)
该算法一次性将所需的Columns全部取出,在内存中排序后直接将结果输出。
注: 从 MySQL 4.1 版本开始使用该算法。它减少了I/O的次数,效率较高,但是内存开销也较大。如果我们将并不需要的Columns也取出来,就会极大地浪费排序过程所需要 的内存。在 MySQL 4.1 之后的版本中,可以通过设置 max_length_for_sort_data 参数来控制 MySQL 选择第一种排序算法还是第二种。当取出的所有大字段总大小大于 max_length_for_sort_data 的设置时,MySQL 就会选择使用第一种排序算法,反之,则会选择第二种。为了尽可能地提高排序性能,我们自然更希望使用第二种排序算法,所以在 Query 中仅仅取出需要的 Columns 是非常有必要的。

当对连接操作进行排序时,如果ORDER BY仅仅引用第一个表的列,MySQL对该表进行filesort操作,然后进行连接处理,此时,EXPLAIN输出“Using filesort”;否则,MySQL必须将查询的结果集生成一个临时表,在连接完成之后进行filesort操作,此时,EXPLAIN输出 “Using temporary;Using filesort”。

3.4、索引与加锁
索引对于InnoDB非 常重要,因为它可以让查询锁更少的元组。这点十分重要,因为MySQL 5.0中,InnoDB直到事务提交时才会解锁。有两个方面的原因:首先,即使InnoDB行级锁的开销非常高效,内存开销也较小,但不管怎么样,还是存 在开销。其次,对不需要的元组的加锁,会增加锁的开销,降低并发性。
InnoDB仅对需要访问的元组加锁,而索引能够减少InnoDB访问的元组 数。但是,只有在存储引擎层过滤掉那些不需要的数据才能达到这种目的。一旦索引不允许InnoDB那样做(即达不到过滤的目的),MySQL服务器只能对 InnoDB返回的数据进行WHERE操作,此时,已经无法避免对那些元组加锁了:InnoDB已经锁住那些元组,服务器无法解锁了。
来看个例子:

create table actor(

actor_id int unsigned NOT NULL AUTO_INCREMENT,

name      varchar(16) NOT NULL DEFAULT '',

password        varchar(16) NOT NULL DEFAULT '',

PRIMARY KEY(actor_id),

KEY     (name)

) ENGINE=InnoDB

insert into actor(name,password) values('cat01','1234567');

insert into actor(name,password) values('cat02','1234567');

insert into actor(name,password) values('ddddd','1234567');

insert into actor(name,password) values('aaaaa','1234567');

SET AUTOCOMMIT=0;

BEGIN;

SELECT actor_id FROM actor WHERE actor_id < 4

AND actor_id <> 1 FOR UPDATE;

该查询仅仅返回2---3的数据,实际已经对1---3的数据加上排它锁了。InnoDB锁住元组1是因为MySQL的查询计划仅使用索引进行范围查询(而没有进行过滤操作,WHERE中第二个条件已经无法使用索引了):

mysql> EXPLAIN SELECT actor_id FROM test.actor

    -> WHERE actor_id < 4 AND actor_id <> 1 FOR UPDATE \G

*************************** 1. row ***************************

           id: 1

select_type: SIMPLE

        table: actor

         type: index

possible_keys: PRIMARY

          key: PRIMARY

      key_len: 4

          ref: NULL

         rows: 4

        Extra: Using where; Using index

1 row in set (0.00 sec)

mysql>

表明存储引擎从索引的起始处开始,获取所有的行,直到actor_id<4为假,服务器无法告诉InnoDB去掉元组1。
为了证明row 1已经被锁住,我们另外建一个连接,执行如下操作:

SET AUTOCOMMIT=0;

BEGIN;

SELECT actor_id FROM actor WHERE actor_id = 1 FOR UPDATE;

该查询会被挂起,直到第一个连接的事务提交释放锁时,才会执行(这种行为对于基于语句的复制(statement-based replication)是必要的)。
如上所示,当使用索引时,InnoDB会锁住它不需要的元组。更糟糕的是,如果查询不能使用索引,MySQL会进行全表扫描,并锁住每一个元组,不管是否真正需要。

 
2011-12-07 22:44
网页自动跳转,是指当用户访问某个网页时,被自动跳转到另一个网页中去。网页自动跳转的主要作用是,当域名变更后,或者网站里的一个或多个网页被删除后,可以使用这种方式将用户引导到其它正常的网页中去,从而留住用户。
不过,现在有许多人利用网页自动跳转来进行作弊,欺骗搜索引擎,从而实现提高网站搜索引擎排名的目的。比较典型的方式是:先做一个“桥页”,当搜索引擎收录了这个桥页,并有较高排名时,桥页中再使用网页自动跳转方式,将用户引导到用户本来无意访问的其它网页中去。

下面介绍一下五种常见的网页自动跳转方法,以及搜索引擎对这些跳转方法的辨识能力。

第一种网页自动跳转方法:Meta Refresh自动跳转法

在网页的head区域的Meta Refresh标签中,加入自动跳转代码,可实现网页的立即或延时自动跳转。

示例如下:

<meta http-equiv="Refresh" content="10;url=http://XFBBS.Com/">

上述html代码中的“10”是延时跳转的时间,单位是秒。如果设为0,就表示立即跳转。“[url]http://XFBBS.Com[/url]”是跳转的目标地址,可以是同一域名下的站内相对路径,也可以是不同域名的站外地址。

由于搜索引擎能够读取HTML,所以对于这种自动跳转方法,搜索引擎是能够自动检测出来的。

至是会不会被视为作弊,则主要看跳转时间。如果跳转时间为0,就可能会被视为作弊,从而受到惩罚。如果有时间延迟(一般3秒以上),就会被视为正常应用。

第二种网页自动跳转方法:body onload自动跳转法

在网页加载时通过onload事件指定parent.location进行自动跳转。

示例如下:

<body onLoad="parent.location='http://XFBBS.Com'">

这种方法与第一种方法一样,能够被搜索引擎识别。

第三种网页自动跳转方法:javascript自动跳转法

javascript可以实现网页的自动跳转,如果要实现立即跳转,将跳转代码放在网页的head区域即可。

示例如下:

<script language="javascript">
location.replace("http://XFBBS.Com/yule/tietu/")
</script>

其中的“[url]http://XFBBS.Com/yule/tietu/[/url]”是重定向目标地址。

由于搜索引擎无法解析javascript,所以搜索引擎便无法识别用javascript脚本进行的自动跳转。

第四种网页自动跳转方法:表单自动跳转法

对于表单大家都很熟悉,就是将表单中填写的内容,提交到action参数中指定的URL地址中,目标URL再对接收到的数据进行处理。利用这一点,我们可间接的实现网页跳转,只不过,我们并不需要提交任何表单内容。再结合javascript脚本,可以对表单进行自动提交。

示例如下:

<form name="form1" action=http://XFBBS.Com/index.html method="get">

</form>

<script language="javascript">

document.form1.submit()

</script>

其中form1名称任意,但二处form1应该统一。action中的URL地址必须以文件名结尾,例如“action=http://XFBBS.Com/”或“action=http://XFBBS.Com/yule”便是不规范写法。method可以是get也可以是post,但根据我的经验,提交空表单时最好使用get。

众所周知,由于搜索引擎的蜘蛛程序是不会填写表单的,所以搜索引擎便无法识别通过这种方法实现的网页自动跳转。

第五种网页自动跳转方法:程序跳转法(response.redirect 、server.transfer)

每种程序都有各自的页面跳转方法,例如asp中使用response.redirect 来进行跳转,跳转范例如下:

response.redirect "http://XFBBS.Com"

它的作用是,asp程序运行到该行代码后,会立即跳转到目标url地址中去。

在asp中,除了使用response.redirect 做跳转外,还有一个跳转方法,用server.transfer进行跳转,跳转范例如下:

response.redirect   "/yule/tietu/index.html"

注意,这里的url地址,必须是站内地址,且url地址必须以文件名结尾,例如 response.redirect   "/yule/tietu/" 便是错误用法。

response.redirect和server.transfer都能实现网页自动跳转,但二者也有不同之处,前者可以跳转到站内URL,也可以跳转到站外URL,而后者只能跳转到站内文件,且浏览器地址栏的URL将保持不变。server.transfer还有许多好处,这里不多详述,大家可在搜索引擎中查找它的更多资料。

使用response.redirect 跳转虽然是在服务器端完成跳转的,但它最终是转换成html后在客户端执行的,因此,也能被搜索引擎识别,过多的使用亦会被当作作弊处理。

如果是在同一网站内部的不同网页间跳转,建议使用server.transfer跳转,server.transfer肯定不会被搜索引擎视为作弊。
 
2011-12-07 22:44
网页自动跳转,是指当用户访问某个网页时,被自动跳转到另一个网页中去。网页自动跳转的主要作用是,当域名变更后,或者网站里的一个或多个网页被删除后,可以使用这种方式将用户引导到其它正常的网页中去,从而留住用户。
不过,现在有许多人利用网页自动跳转来进行作弊,欺骗搜索引擎,从而实现提高网站搜索引擎排名的目的。比较典型的方式是:先做一个“桥页”,当搜索引擎收录了这个桥页,并有较高排名时,桥页中再使用网页自动跳转方式,将用户引导到用户本来无意访问的其它网页中去。

下面介绍一下五种常见的网页自动跳转方法,以及搜索引擎对这些跳转方法的辨识能力。

第一种网页自动跳转方法:Meta Refresh自动跳转法

在网页的head区域的Meta Refresh标签中,加入自动跳转代码,可实现网页的立即或延时自动跳转。

示例如下:

<meta http-equiv="Refresh" content="10;url=http://XFBBS.Com/">

上述html代码中的“10”是延时跳转的时间,单位是秒。如果设为0,就表示立即跳转。“[url]http://XFBBS.Com[/url]”是跳转的目标地址,可以是同一域名下的站内相对路径,也可以是不同域名的站外地址。

由于搜索引擎能够读取HTML,所以对于这种自动跳转方法,搜索引擎是能够自动检测出来的。

至是会不会被视为作弊,则主要看跳转时间。如果跳转时间为0,就可能会被视为作弊,从而受到惩罚。如果有时间延迟(一般3秒以上),就会被视为正常应用。

第二种网页自动跳转方法:body onload自动跳转法

在网页加载时通过onload事件指定parent.location进行自动跳转。

示例如下:

<body onLoad="parent.location='http://XFBBS.Com'">

这种方法与第一种方法一样,能够被搜索引擎识别。

第三种网页自动跳转方法:javascript自动跳转法

javascript可以实现网页的自动跳转,如果要实现立即跳转,将跳转代码放在网页的head区域即可。

示例如下:

<script language="javascript">
location.replace("http://XFBBS.Com/yule/tietu/")
</script>

其中的“[url]http://XFBBS.Com/yule/tietu/[/url]”是重定向目标地址。

由于搜索引擎无法解析javascript,所以搜索引擎便无法识别用javascript脚本进行的自动跳转。

第四种网页自动跳转方法:表单自动跳转法

对于表单大家都很熟悉,就是将表单中填写的内容,提交到action参数中指定的URL地址中,目标URL再对接收到的数据进行处理。利用这一点,我们可间接的实现网页跳转,只不过,我们并不需要提交任何表单内容。再结合javascript脚本,可以对表单进行自动提交。

示例如下:

<form name="form1" action=http://XFBBS.Com/index.html method="get">

</form>

<script language="javascript">

document.form1.submit()

</script>

其中form1名称任意,但二处form1应该统一。action中的URL地址必须以文件名结尾,例如“action=http://XFBBS.Com/”或“action=http://XFBBS.Com/yule”便是不规范写法。method可以是get也可以是post,但根据我的经验,提交空表单时最好使用get。

众所周知,由于搜索引擎的蜘蛛程序是不会填写表单的,所以搜索引擎便无法识别通过这种方法实现的网页自动跳转。

第五种网页自动跳转方法:程序跳转法(response.redirect 、server.transfer)

每种程序都有各自的页面跳转方法,例如asp中使用response.redirect 来进行跳转,跳转范例如下:

response.redirect "http://XFBBS.Com"

它的作用是,asp程序运行到该行代码后,会立即跳转到目标url地址中去。

在asp中,除了使用response.redirect 做跳转外,还有一个跳转方法,用server.transfer进行跳转,跳转范例如下:

response.redirect   "/yule/tietu/index.html"

注意,这里的url地址,必须是站内地址,且url地址必须以文件名结尾,例如 response.redirect   "/yule/tietu/" 便是错误用法。

response.redirect和server.transfer都能实现网页自动跳转,但二者也有不同之处,前者可以跳转到站内URL,也可以跳转到站外URL,而后者只能跳转到站内文件,且浏览器地址栏的URL将保持不变。server.transfer还有许多好处,这里不多详述,大家可在搜索引擎中查找它的更多资料。

使用response.redirect 跳转虽然是在服务器端完成跳转的,但它最终是转换成html后在客户端执行的,因此,也能被搜索引擎识别,过多的使用亦会被当作作弊处理。

如果是在同一网站内部的不同网页间跳转,建议使用server.transfer跳转,server.transfer肯定不会被搜索引擎视为作弊。
 
2011-11-29 20:32

文件:

----中文版:navicat9_mysql_cs.tar.gz

----英文版:navicat9_mysql_en.tar.gz

安装:解压后即可用。目录下的start_navicat文件为可执行文件。

破解:(找过好几个注册码都不能用,注册码生成器都是Windows平台的,Linux下不行)

----第一次执行start_navicat时,会在用户主目录下生成一个名为.navicat的隐藏文件夹。


----此文件夹下有一个system.reg文件

----把此文件删除后,下次启动navicat 会重新生成此文件,30天试用期会按新的时间开始计算。

----将就着用了

~_~ :

1.这个版本本身有抗锯齿的功能可以选择。可能是基于wine的原因吧,在我本本上用着用着,

经常出现抗锯齿失败,导致界面效果不怎么好。

2.中文版,创建查询的界面菜单里的sql美化选项有中文乱码.

尝试修改navicat9_mysql_cs/wine/share/fonts文件夹下的字体文件未果。

 

 

#!/usr/bin/perl
use warnings;
use diagnostics;
use Carp;

$deletefile="/root/.navicat/system.reg";
if (-e $deletefile){
 unlink($deletefile);    
}else
{
    print "found unregister system.reg";
}

 
2011-10-16 17:21
Windows版本
MyEclipse For Professional 9.1下载地址http://u.115.com/file/dngg7b4b
MyEclipse For Blue 9.1下载地址http://115.com/file/aqvtw0jr
MyEclipse For Spring9.1下载地址http://115.com/file/clj4oweh
MyEclipse For Bling 9.1下载地址http://115.com/file/cljmibhh
Linux版本
MyEclipse For Professional 9.1 下载地址http://u.115.com/file/dn0am1a1
MyEclipse For Blue 9.1 下载地址http://u.115.com/file/e6dd6g4x
MyEclipse For Spring 9.1下载地址http://115.com/file/e6efy0lm
MyEclipse For Bling 9.1下载地址http://115.com/file/e6ewxfmn
由于SPring跟Bling版本大于1G,所以用7z进行了压缩,下载后直接解压出来,安装即可
破解文件http://115.com/file/aqvtg5jr
注册机下载地址(Windows + 32位JDK支持)http://115.com/file/cljmldaf(此注册机需要在Windows下运行,如果是其他系统可以使用下面的注册机)
注册机下载地址(各平台通用 + JDK支持)http://115.com/file/aqvtio9s
另附Java开发常用工具
jdk-6u26-windows-i586.exehttp://u.115.com/file/e6d71755
jdk-6u26-linux-i586.binhttp://u.115.com/file/bhfbp9na
MyEclipse 常用插件extbuilderhttp://u.115.com/file/bhqenmba
                            spkethttp://u.115.com/file/bhqencqu
                            subversionhttp://u.115.com/file/cl72camm
Tomcat5.0~6.0各个版本http://u.115.com/file/e6d714nn
(如不能下载、不能安装或有疑问、需要其他软件请联系本人QQ:503543623,没有完整看完文章的人就不要加了)

安装/破解步骤(此破解方法适用于MyEclipse 9.1 for Spring/Blue/Bling/Professional版本)

【注意】请先将已存在的旧版本的MyEclipse卸载掉,然后再安装9.1。

Windows

以下以MyEclipse for Spring 9.1 为例进行讲解,其他版本的破解方法与此一致

将下载解压好的MyEclipse for Spring 9.1进行安装,安装完成后把【Launch MyEclipse】的勾取消掉,不要运行
解压下载好的【Myeclipse9.1_pojie.7z】文件解压
将【破解文件】解压把该文件夹吓得所有文件及文件夹复制到C:\MyEclipse for Spring\Common\plugins下覆盖掉已存在的文件及文件夹
然后打开【myeclipse9_keygen_activator.exe】(运行myeclipse9_keygen_activator.exe需要32位JDK的支持)
在【Subscriptor】文本框输入一个英文字符串
【Edition】中选择【Spring Edition】(MyEclipse for Bling 9.1 需要选择Blue Edition生成激活码和注册码)
点击【Generate Subscription Code】和【Generate Activation Code】生成注册码和激活码
运行【MyEclipse For Spring】 点击工具栏中的【Help】打开【MyEclipse Configuration Center】
点击【Subscription】选项卡
点击【Edit】复制刚才生成的Subscriptor和Subscription Code,点击【Apply】
在右侧点击【Activate】在弹出框中选择【I already have an activation code】将生成好的【ActivationCcode】复制到文本框中,点击【Next】【Finish】

此时MyEclipse 9.1已激活,祝大家好运

Linux

java -jar *.jar

第一步:Usrcode中输入任意用户名

第二步:点击systemid一次,这时候会出现一行错误,再点击一次即可出现systemid。

第三步: 点击Tools->RebuildKey

第四步:点击active按钮.会在显示区域生成

            LICENSE_KEY

            ACTIVATION_CODE

            ACTIVATION_KEY

生成好以后不要打开Myclipse进行激活,而是继续下面的操作

第五步:点击Tools->ReplaceJarFile,弹出文件选择对话框,到Myclipse的安装目录Common文件夹下选择plugins文件夹,点击打开,程序会暂时卡住,替换文件

完成之后,会输出信息

第六步:点击Tools->SaveProperites

如果不成功,再打开Myeclipse进行手动激活

郑重声明:此文章是由杜乐扮演的杜乐所整理编写与于杜乐本人无关,仅供学习交流,切勿用于商业用途,请下载后24小时内删除

 
2011-10-01 21:39

设置方法:
类型: IMAP
接收邮件服务器(IMAP): imap.mail.yahoo.com
发送邮件服务器(SMTP): smtp.mail.yahoo.com
IMAP服务器端口:143(非SSL加密)

SMTP服务器端口:465(SSL加密)

 

以上方法FOXMAIL 7.0测试通过

 
2011-09-13 10:39

买到苹果新款MacBook Air后大家最想干的事是什么?体验一下Mac OS X?事实告诉我们有几乎一半的人第一件想要做的事是装一个微软的Windows系统,但问题是新版的MBA已经没有光驱了,这可如何是好?其实只需一个4GB的U盘便能搞定了。

首先你要准备的是一台携带光驱的Windows 7电脑,另外需要准备一张Windows 7系统光盘,还需要一个至少4GB的U盘(闪存+读卡器不可),再准备大概1个小时,恩,差不多就行了。

一,在U盘上安装Windows 7的详细步骤

1.先将U盘插到Windows 7电脑上,接着用管理员身份启动CMD命令提示符。
(单击开始-搜索区域键入“CMD”-对着CMD右键选择以管理员身份运行)

2.打开Diskpart,这是因为平时我们看到的系统都是字母盘符,我们需要让其变为最原始的数字。
(在CMD中输入“diskpart”,然后按回车,切换为DISKPART>之后输入“list disk”按回车)

3.现在屏幕上应该会显示出所有电脑上正在使用的储存设备,根据容量就能看出哪一个是我们插入的U盘,3856 MB那个当然就是4GB的U盘,让我们选中它吧。
(在CMD中输入“select disk 3”,U盘所在的位置)

接下来运行的每一个步骤都不能有错,另外你还需要确保一件事,那就是在第3步中你已经成功选择了U盘所在位置,不然其他硬盘数据可就清空了哦。
(在CMD中输入“clean”清空U盘,输入“create partition primary”创建主分区,输入“select partition 1”选择分区1,输入“active”将选中分区标记为活动分区,输入“format fs=ntfs”格式化U盘的分区1,输入“assign”给所选分区分配一个驱动器号,输入“exit”退出Diskpart)(输入“assign”时U盘有可能断开重新连接,这很正常,请不要惊慌)

4.我们需要将Windows 7的安装内容装进U盘内,请将你的Windows 7光盘插入到光驱内(本次案例光驱所在位置为E盘,U盘所在位置为H盘,诸君请自动替换适用盘符)
(插入光盘后在CMD中输入“e: cd boot”改为光盘启动,输入“bootsect.exe /nt60 h:”使其安装至U盘)

5.接下来电脑会将Windows 7的安装内容全部储存到U盘内,这需要等待10分钟左右,在那之后U盘就可以在任何电脑上安装Windows 7了,不过首选当然需要在BIOS中设置为U盘启动。好了,U盘安装完毕,接着让我们拿出U盘,拿出等候已久的新款MacBook Air。

 

虽然新款的MacBook Air支持用U盘安装软件,但这并不代表其可以直接在Mac中安装Windows 7,毕竟你可不能直接在Mac中运行Setup.exe对吧。所以我们还需要一个软件,那就是rEFIt引导工具下载地址在这。下载完之后在Mac双击运行rEFIt.mpkg即可安装。

安装完毕后,下次你重新启动MacBook Air的时候应该就会出现如下画面了,这样就能选择是使用Mac OS X启动还是其他系统启动了(当然是Windows啦)。不过首先需要按住Option键在设置中将路径改为U盘所在位置。

三,在MacBook Air上安装Windows 7

要想在MacBook Air安装Windows 7,我们还需要一个软件,那就是Boot Camp Assistant,该软件已经在Mac OS X中自带了,请各位同学自己寻找。运行它之后,会提示你需要一个光盘驱动器,忽略这条消息,点击继续。

下一步,你需要下载Windows支持的软件,包括Boot Camp中的各种驱动以及远程CD/DVD支持,都保存在一个文件夹中吧,接下来你会用到它的。

接下来Boot Camp Assistant会要求你缩小现在的Mac OS X上的分区大小以腾出空间安装Windows,请谨慎选择分区大小,毕竟两个分区的文件格式将会改变。

现在你可以在MacBook Air上插入刚才制作好的Windows 7启动U盘,然后重新启动MBA,按住Option键,确保路径选择是U盘启动。USB图标应该很容易辨认。

接下来就会进入Windows 7的安装过程,这一步相信大家都是熟门熟路了,只有一点需要注意的是,刚才通过 Boot Camp Assistant划分的分区是FAT32格式的,而Windows 7不能使用FAT32的分区,所以选择的时候需要重新格式化改为NTFS格式。

这是目前为止安装Windows最快的电脑,新款MacBook Air一共花了才7分钟就能将Windows 7安装完毕,是不是觉得有点不可思议?进入Windows 7后还有一件事需要干,那就是将刚才下载的Boot Camp中的Windows的驱动程序安装一遍,接着你就能使用Windows 7了!

 
2011-09-12 20:18

Myeclipse 9.1 破解

把Myeclipse 9.0升级到9.1后,原来破解的已经失效(Myeclipse 9.0正式版破解方法),需要重新破解。

Google一下,找到一位高手已经放出破解方法,原文:http://zhengyutao.iteye.com/blog/1132221

按照他的文章,可以顺利破解成功,但比较凌乱麻烦,我整理了一下简单的破解方法,可以按照以下步骤进行破解:

Myeclipse 9.1正式版破解方法,,测试可用。
*文件来源于互联网,仅供学习交流,切勿用于商业用途,请下载后21小时内删除。

破解说明:

1、当然你需要安装了MyEclipse 9.1,同时也安装了Java。
2、替换文件:把“破解文件.替换.zip”解压后替换掉原来的文件,替换前最好先备份一下。
3、关闭MyEclipse,打开用WinRAR打开MyEclipse安装目录下的Common\plugins\com.genuitec.eclipse.core_9.0.0.me201103181703.jar
4、下载以下附件,解压后里面有publicKey.bytes文件,替换上面bytes文件里的com\genuitec\eclipse\core\publicKey.bytes
5、在刚才下载的附件中,执行myeclipse9_keygen_activator.exe(注册机),在注册机输入英文名,点Generate Subscription Code,   再点Generate Activation Code,这样注册码和激活码都生成。赶紧打开MyEclipse填写信息注册激活一把吧。
6、All Done!
破解用到的文件下载:myeclipse9.1_crack

 
2011-09-05 10:06

问题描述:win+R打开运行

键入cmd

再键入ipconfig后确定

dos提示:

'ipconfig' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

解决方案:查看系统的环境变量path,查看是否包含c:\windows\system32

 

原因:ipconfig.exe是system32目录下面的一个应用程序。类似JDK安装之后的系统配置。

 
   
 
 
文章存档
 
     
 
最新文章评论
  

回复yuhongchun027:呵呵,好的,安装的时候按照你的来就是了
 

楼主,你转我的这篇rsync有些笔误,我已更正了. http://hi.baidu.com/yuhongchun027/b
 

回复hsmhtj:没有时间,在说了你自己不也能看明白吗?
 

小伙,能把注释说明一下吗?你是滥竽充数……
 

not 取反
   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu