2018年 服务器或VPS中的上行速度和下行速度

我们在租用或托管服务器,或VPS的时候,可以检测其上行速度和下行速度,上行速度指的是当我们从服务器上下载文件时候速度;而下行速度指的上传服务器文件时候的速度。

VPS是目前中小企业及个人使用者普及的网络空间选择方式,选择VPS的时候,我们发现中国大陆和香港的大部分VPS(包括虚拟主机)都是不限制流量的,而在境外的服务商购买VPS的话,90%的服务商都限制月流量。其实,开始中国大陆也有很多IDC服务商限制流量,尤其是大型网络公司,但随着市场的激烈竞争,服务商不得不放弃流量限制。其实,限制流量对于使用者来说,是具有非常重要的优势和意义的,限制流量后服务商可以不限制或放开上下行速度,另外可以使得同一服务器上多用户公平处理服务器资源,一旦某个用户网站出现问题,如被攻击,或超负荷下载使得流量用尽,其VPS就会自动关闭,使得其他用户可以继续正常稳定运转网站,而且限制流量的VPS,用户浏览网站的稳定性高,下载速度会快很多,用户体验会强上很多。

在我测试境外VPS时候,限制月流量的主机,下载文件的速度可以达到16MB/S,而不限制月流量的,下载速度只有3MB/S。而且其打开网页的速度,这里也许不能说是速度,而是点击网页上链接后的反应,同样是限制月流量的主机快很多,非常流畅,不卡顿。

其实,作为企业在选择主机方面来说,不要怕服务商限制一些指标,对所有客户的限制也是对所有客户的保护。那么对于服务器来说,也有一个老生常谈的话题,那就是独享带宽和共享带宽。这里我就引用网络上的文章,对我的博文加以补充说明。

在服务器托管和租用时,大家往往都会看到百兆共享的带宽说明,百兆共享究竟意味着什么呢?还有百兆独享,价格却是百兆共享的十几倍,为什么10M独享比百兆共享还贵呢?

首先说一下机柜,在IDC机房的最常见的机柜一般都是42U的,也有其他46U、47U等大小。大家服务器租用或服务器托管,一般都是使用的1U服务器,不过42U不代表可以放42个机器,大部分机房会规定每机柜最多放多少台机器,也就是可以存放几个1U服务器。

什么是共享带宽?

共享带宽方式就是IDC运营商会默认地对每个机柜配备一定的带宽资源,通常是每个机柜30-50M带宽资源。然后由这个机架内的所有服务器去共享使用这些带宽,不去关心每台服务器具体的带宽使用情况,针对小型托管业务中对带宽无特别要求的客户。不同地区和不同线路的运营商默认配备的带宽大小都不同,除非你单独购买带宽,否则一线机房不会给机柜配置100M带宽。网上众多所谓的百M共享,其实大部分是偷换概念,根本不存在的。

什么是独享带宽?

独享带宽,即只给单独客户使用的带宽资源,独立的带宽大小,可以保证不会被其他服务器影响。比较常见的有2M独享、5M独享、10M独享和百兆独享。在IDC提供的服务器租用或服务器托管业务中,大客户对带宽有较高的要求,其网站的内容和性质决定只有使用独立的带宽资源才能满足品质的需求。

两台服务器网站同步镜像

1.介绍

现在的网站随着访问量增加,单一服务器无法承担巨大的访问量,有没有什么方便快捷的方式解决这个问题呢,答案是”有”!比如建立服务器群,进行均衡负载.
但是如果要解决像电信网通这样的互访问题(中国网民的悲哀..),这个解决办法就无能为了了!
要解决这个问题最方便快捷的方式就是建立镜像网站!由访问者自己选择适合自己网络的速度最快的网站!这样即可以解决线路问题,又可以解决访问量问题!

2.网站同步的数据分类

网站数据基本分为两类:
一类是文件,比如HTML,ASP,PHP等网页文件,或者RAR,ZIP,RM,AVI等可下载文件!
要实现他们的同步很简单,用FTP同步软件就可以了!至于哪几个我会在后面做详细介绍.

一类是数据库数据文件,比如MySQL,SQL Server等等!
数据库同步的方法也很多,最简单的办法只是将数据库目录同步一下就OK了!
在后面我也会做详细讲解!

3.网站文件的同步

在这里用到的主要工具就是FTP,网站文件同步分两种情况,一种是本地到远程,一种是远程到远程(FXP)!第一种不用说了,第二种远程到远程即FXP,支持它的软件也很多,但是真正适合多网站同步镜像的却不多!
下面我介绍几个我认为不错的软件!(PS:如果熟悉FTP命令,完全可以自己制作一个批处理文件时间的)
1.首先我要推荐的是国产的FTP软件”网络传神”,功能非常强大,特别是在网站的同步镜像方面,可惜的是,这款非常经典的软件已经不再更新了,最后更新时间是2003年3月,最后一个版本是3.12!虽然如此还是非常好用的!下面是一段官方的简介:

网络传神完全吸收了Cuteftp和UpdataNow的全部功能,并且增加了其他软件没有的多项功能:支持网站互传;支持网站同步(UPDATA NOW);支持后台上传(多线程上传多个文件);可同时打开多个站点;多站点计划上传功能,支持镜像站点;支持宏操作支持计划操作;支持文件高级比较上传;支持目录隐藏过滤(为用ForntPage作主页的朋友带来福音);服务器自动识别功能;资源管理器浏览方式;可以自定义命令;支持RFC959标准具有更好的稳定性;完备的信息返回机制及错误监控机制完整的中文帮助。

2.第二款是由ReGet同一开发公司制作的专用于网站同步的软件”WebSynchronizer”,用这款软件,你才会体验到网站同步的方便快捷,简单容易.最新版本是1.3.62, 网上能找到XX的最后版本是1.1版!下面是一段简介:

档案同步化工具 – WebSynchronizer,由知名续传软件 ReGet 之软件出版公司所推出,是网站同步化、档案镜像、档案备份的绝佳工具,可以执行下列主要工作:1) 本机资料夹及远程资料夹的同步化;2) 两台远程计算机中的资料夹同步化;3) 两个本机资料之同步化。 

3.其他还有一些软件如同步快梭(AutoSyncFTP),也能实现简单的网站同步,不过,这款软件非常不稳定,而且2001年就已经停止开发.所以,不用考虑了!还有上次有朋友提到的SiteMirro,由于网上找不到可以用的版本,所以没有办法测试!

4.网络传神网站同步镜像使用傻瓜指南
第一次运行网络传神的时候,它会让你选择”完全模式”和”启动模式”,要使用网站同步必须选择”完全模式”.

进入主界面:你会发现这个软件非常像FlashGet,要使用网站同步功能,点击软件左下角的”FTP客户端”.

现在你要做的就是添加你的镜像母站和需要镜像的网站:文件->站点管理,在里面添加你需要同步的几个的FTP服务器,下面我将介绍具体设置(主要是镜像母站的设置)

母站设置最重要的地方就是”比较目录(网站同步)”:

1.拖动传送
就是手动拖动传送时候的传送方式,非拖动方式不受影响,因为母站的更新基本上是从本地目录进行的,所以建议这里选择第二项”只上传不同的文件”,镜像站点这里可以忽略
2.磁盘比较设置
这个功能非常有用,可以通过文件长度和文件日期进行文件差异对比.

你还可以设置本地目录过滤和服务器目录过滤,非常灵活!
好了,添加好母站和镜像站之后,我们来设置同步:

如果是添加镜像站,则会跳出下面的母站选择窗口:

设置好多个镜像站点之后,返回主界面就可以进行网站同步了:

注意事项:
一般不要改动镜像站点前面的“对钩”标志,因为镜像站点同步的原理是“根据主站点的同步信息更新镜像站点”,如果景象站点没有更新那么必须将该镜像站点单独同步。
注意一般应该“选项窗口”-〉“FTP客户端”-〉“计划”中的“最大连接个数”和“最大线程个数”一般不要改动保持为“1”。
如果同步时某个站点出错同步没有完全完成只需按“计划”窗口中的 按钮单独执行某个站点的传送即可

再介绍一下网站镜像同步中必要的功能,定时同步,这样你就只要做好母站的更新,其他的让网络传神帮你完成:
点击设置:

进入网络传神的选项设置窗口,选中FTP客户端中的定时同步

定时下载:在指定的时段内下载文件。
定时上传:在指定的时段内用网站同步的方法进行上传。
开始时间:如果要使用定时方式必须设置此项,在设置的时间中会自动开始所有设置为计划的站点。
停止时间:如果设置此项则当系统时间大于停止时间时自动停止所有设置为计划的站点。

注意:定时上传种没有“停止时间”选项,网站同步完成后会自动停止,同时网站同步同一时间只能运行一次。

网络传神还有很多为便于同步镜像设置的功能,大家实际使用中去体会吧!

5. Web Synchronizer 网站同步镜像使用傻瓜指南
Web Synchronizer功能非常强大,不单单是网站同步,还可以进行本地目录同步,本地到远程同步,功能方面远胜过传神,不过,国内好像没有汉化版,对于一些对英文感冒的朋友用起来会不太舒服,希望CCF里的汉化高手能将他中文化!

开始运行程序,老外的软件就是智能,一打开这个软件就会有一个同步向导跳出来!

在这里,你也看出来了吧,这个软件只支持两个目录间的同步.不过,我们可以创建多个项目来解决这个问题!具体我在后面介绍!这里,我们来看看如何建立两个远程目录的同步!
选择第二项,进入下一个选择框:

网站同步当然是选择第一项了!再进入下一步,要你选择同步的第一个服务器,建议在这里servers list,先编辑好需要同步的几个FTP

同步方式设置说明:
第一项的意思是:上传下载所有改变的文件
第二项的意思是:不改变文件夹内容,只下载新的文件

点击下一步进行第二个服务器设置,方法和第一个一样!
设置完成后,你还可以修改任务名称!
我觉得这点就是这个软件非常优秀的地方,以任务的方式进行管理.非常方便!

OK,现在我们就可以看到他的主界面了!

还有一点要提,他的计划任务更能也很强大,在这里我就不再多说了!用过才知道他的强大!

有朋友会说,我要进行两个以上的网站同步怎么办?
很简单,再多建几个任务就可以了,要镜像多少网站都没有问题!
这个软件的网站同步镜像可以非常灵活,比如可以本地-远程,然后再远程-远程!或者本地-远程1,本地-远程2,远程1-远程2,任何情形下的同步都可以完成! 

3.数据库同步操作指南

说完了文件同步,我们再来探讨一下数据库同步!
这里我主要教大家两种最常用的数据库的同步方法!

MySQL

MySQL数据同步主要有三种方式:
1.利用MySQL自身的数据库同步功能
2.利用MySQL数据库的特性(数据库存在固顶目录,并且以文件形式存储),进行数据库目录同步以达到数据同步目的
3.利用专用的MySQL数据库同步软件

1. 利用MySQL自身的数据库同步功能(下面参考自网上的文章,写的非常详细了)
MySQL从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式,互相备份模式的功能.

数据库同步复制功能的设置都在mysql的设置文件中体现。mysql的配置文件(一般是my.cnf),在unix环境下在/etc/mysql/my.cnf 或者在mysql用户的home目录下的my.cnf。

windows环境中,如果c:根目录下有my.cnf文件则取该配置文件。当运行mysql的winmysqladmin.exe工具时候,该工具会把c:根目录下的my.cnf 命名为mycnf.bak。并在winnt目录下创建my.ini。mysql服务器启动时候会读该配置文件。所以可以把my.cnf中的内容拷贝到my.ini文件中,用my.ini文件作为mysql服务器的配置文件。

  设置方法:
  设置范例环境:
  操作系统:window2000 professional
  mysql:4.0.4-beta-max-nt-log
  A ip:10.10.10.22
  B ip:10.10.10.53
  A:设置
  1.增加一个用户最为同步的用户帐号:
  GRANT FILE ON *.* TO backup@'10.10.10.53' IDENTIFIED BY ‘1234’
  2.增加一个数据库作为同步数据库:
  create database backup

B:设置
  1.增加一个用户最为同步的用户帐号:
  GRANT FILE ON *.* TO backup@'10.10.10.22' IDENTIFIED BY ‘1234’
  2.增加一个数据库作为同步数据库:
  create database backup
  主从模式:A->B
  A为master
  修改A mysql的my.ini文件。在mysqld配置项中加入下面配置:
  server-id=1
  log-bin
  #设置需要记录log 可以设置log-bin=c:mysqlbakmysqllog 设置日志文件的目录,
  #其中mysqllog是日志文件的名称,mysql将建立不同扩展名,文件名为mysqllog的几个日志文件。
  binlog-do-db=backup #指定需要日志的数据库
  重起数据库服务。
  用show master status 命令看日志情况。
  B为slave
  修改B mysql的my.ini文件。在mysqld配置项中加入下面配置:
  server-id=2
  master-host=10.10.10.22
  master-user=backup #同步用户帐号
  master-password=1234
  master-port=3306
  master-connect-retry=60 预设重试间隔60秒
  replicate-do-db=backup 告诉slave只做backup数据库的更新
  重起数据库
  用show slave status看同步配置情况。
  注意:由于设置了slave的配置信息,mysql在数据库目录下生成master.info
  所以如有要修改相关slave的配置要先删除该文件。否则修改的配置不能生效。
  双机互备模式。
  如果在A加入slave设置,在B加入master设置,则可以做B->A的同步。
  在A的配置文件中 mysqld 配置项加入以下设置:
  master-host=10.10.10.53
  master-user=backup
  master-password=1234
  replicate-do-db=backup
  master-connect-retry=10
  在B的配置文件中 mysqld 配置项加入以下设置:
  log-bin=c:mysqllogmysqllog
  binlog-do-db=backup
  注意:当有错误产生时*.err日志文件。同步的线程退出,当纠正错误后要让同步机制进行工作,运行slave start
  重起AB机器,则可以实现双向的热备。
  测试:
  向B批量插入大数据量表AA(1872000)条
  A数据库每秒钟可以更新2500条数据。

2.数据库目录同步,方法和文件同步一样,设置好需要同步的两个数据库目录就可以了!
缺点很明显,数据同步只能单向进行,可以作为备份方案

3.用专用的MySQL同步软件进行同步
这方面的软件有SQLBalance 和MyReplicator ,优点是方便直观,还有很多争强功能!
缺点和2一样,只能单项同步!
当然你也可以修改镜像网站的程序为提交数据到母数据库,读取则在当前镜像下的数据,不过,修改起来麻烦!普通用户修改也非常难!呵呵,大家了解一下就可以!给大家一个思路!有能力的朋友可以试试阿!

MSSQL

MSSQL数据同步利用数据库复制技术实现数据同步更新(来自网络,也是非常完美的教程)
复制的概念 
复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。 
SQL复制的基本元素包括 
出版服务器、订阅服务器、分发服务器、出版物、文章 
SQL复制的工作原理 
SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器 
SQL SERVER复制技术类型 
SQL SERVER提供了三种复制技术,分别是: 
1、快照复制(呆会我们就使用这个) 
2、事务复制 
3、合并复制 
只要把上面这些概念弄清楚了那么对复制也就有了一定的理解。接下来我们就一步一步来实现复制的步骤。 
第一先来配置出版服务器 
(1)选中指定[服务器]节点 
(2)从[工具]下拉菜单的[复制]子菜单中选择[发布、订阅服务器和分发]命令 
(3)系统弹出一个对话框点[下一步]然后看着提示一直操作到完成。 
(4)当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器。同时也生成一个分发数据库(distribution) 
第二创建出版物
(1)选中指定的服务器 
(2)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令。此时系统会弹出一个对话框 
(3)选择要创建出版物的数据库,然后单击[创建发布] 
(4)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助) 
(5)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器 
(6)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表 
(7)然后[下一步]直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。 
第三设计订阅 
(1)选中指定的订阅服务器 
(2)从[工具]下拉菜单中选择[复制]子菜单的[请求订阅] 
(3)按照单击[下一步]操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行复制操作的前提条件是SQL SERVER代理服务必须已经启动。 
(4)单击[完成]。完成订阅操作。 
完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。接下来就是判断复制是否成功了打开C:/Program Files/Microsoft SQL Server/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表— 
一个手工同步的方案 
–定时同步服务器上的数据 
–例子: 
–测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test 
–服务器上的表(查询分析器连接到服务器上创建) 
create table [user](id int primary key,number varchar(4),name varchar(10)) 
go 
–以下在局域网(本机操作) 
–本机的表,state说明:null 表示新增记录,1 表示修改过的记录,0 表示无变化的记录 
if exists (select * from dbo.sysobjects where id = object_id(N'[user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 
drop table [user] 
GO 
create table [user](id int identity(1,1),number varchar(4),name varchar(10),state bit) 
go 
–创建触发器,维护state字段的值 
create trigger t_state on [user] 
after update 
as 
update [user] set state=1 
from [user] a join inserted b on a.id=b.id 
where a.state is not null 
go 
–为了方便同步处理,创建链接服务器到要同步的服务器 
–这里的远程服务器名为:xz,用户名为:sa,无密码 
if exists(select 1 from master..sysservers where srvname='srv_lnk') 
exec sp_dropserver 'srv_lnk','droplogins' 
go 
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','xz' 
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa' 
go 
–创建同步处理的存储过程 
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_synchro]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) 
drop procedure [dbo].[p_synchro] 
GO 
create proc p_synchro 
as 
–set XACT_ABORT on 
–启动远程服务器的MSDTC服务 
–exec master..xp_cmdshell 'isql /S"xz" /U"sa" /P"" /q"exec master..xp_cmdshell ''net start msdtc'',no_output"',no_output 
–启动本机的MSDTC服务 
–exec master..xp_cmdshell 'net start msdtc',no_output 
–进行分布事务处理,如果表用标识列做主键,用下面的方法 
–BEGIN DISTRIBUTED TRANSACTION 
–同步删除的数据 
delete from srv_lnk.test.dbo.[user] 
where id not in(select id from [user]) 
–同步新增的数据 
insert into srv_lnk.test.dbo.[user] 
select id,number,name from [user] where state is null 
–同步修改的数据 
update srv_lnk.test.dbo.[user] set 
number=b.number,name=b.name 
from srv_lnk.test.dbo.[user] a 
join [user] b on a.id=b.id 
where b.state=1 
–同步后更新本机的标志 
update [user] set state=0 where isnull(state,1)=1 
–COMMIT TRAN 
go 
–创建作业,定时执行数据同步的存储过程 
if exists(SELECT 1 from msdb..sysjobs where name='数据处理') 
EXECUTE msdb.dbo.sp_delete_job @job_name='数据处理' 
exec msdb..sp_add_job @job_name='数据处理' 
–创建作业步骤 
declare @sql varchar(800),@dbname varchar(250) 
select @sql='exec p_synchro' –数据处理的命令 
,@dbname=db_name() –执行数据处理的数据库名 
exec msdb..sp_add_jobstep @job_name='数据处理', 
@step_name = '数据同步', 
@subsystem = 'TSQL', 
@database_name=@dbname, 
@command = @sql, 
@retry_attempts = 5, –重试次数 
@retry_interval = 5 –重试间隔 
–创建调度 
EXEC msdb..sp_add_jobschedule @job_name = '数据处理', 
@name = '时间安排', 
@freq_type = 4, –每天 
@freq_interval = 1, –每天执行一次 
@active_start_time = 00000 –0点执行 
go  

Google Map Api 谷歌地图接口整理

一:基本知识:

 1. 使用谷歌地图 API 的第一步就是要注册一个 API 密钥,需要注重一下两点:

    1.假如使用 API 的页面还没有发布,只是在本地调试,可以不用密钥,随便用个字符串代替就可以了。

    2.API 密钥只对网站目录或者域有效。对不同域的网页,需要用这些域分别注册不同的密钥

2.页面引用javascript文件<script src="http://ditu.google.com/maps?file=api&hl=zh-CN&v=2&key=abcdefg" type="text/javascript"></script>

   URL(http://ditu.google.com/maps?file=api&hl=zh-CN&v=2&key=abcdefg)解析:

     1.ditu.google.com:也可以用ditu.google.cn,假如你需要在地图上显示大陆以外的具体地图,就用 maps.google.com

     2.file=api 这个是请求API 的JS 文件用的,固定的格式。

     3.hl=zh-CN

      这个是在设定地图上除了地图图片以外的诸如控件名称、版权声明、使用提示等所需要显示文本的语言版本时候用的,假如没有指定这个参数就使用 API 的默认值,对itu.google.com 来说,默认是中文简体aps.google.com 默认的是英文。

     4. v=2

      这个是用来指定需要导入的 API 类库的版本号,可以有四种设定方式:

        v=2.s  稳定版本,更新最慢,但是最可靠;

        v=2 当前版本(只用主版本号),更新速度和可靠性介于 s 和 x 之间

        v=2.x 最新版本,更新最快,包括最新功能,可能没有当前版本可靠;

        v=2.76 指定具体版本。不建议使用。

    注:目前谷歌地图 API的主版本号是2,当API升级时旧版本只能继续使用一个月,所以要及时更改主版本号,版本号改变会在Google Code和Maps API讨论组发布相关信息

     5.key=abcdefg这个是设定你注册的 API 密钥.

  

二:核心类:

google地图API主要包括:地图类(GMap2)、标记类(GMarker)、标记选项类(GMarkerOptions)、折线类 (GPolyline)、经纬度(GLatLng)、命名空间(GEvent)、坐标类(GPoint)、控件的大小类GSize、 interface(GControl)、地图类型类(GMapType)、地图上面的图标类(GIcon)、窗体类(GInfoWindow)、窗体选 项类 GInfoWindowOptions)、接口GOverlay、枚举GMapPane等等

   注:标记和折线都是地图的覆盖物

 1.GMap2:地图类,下面实例化一张地图:

   var map= new GMap2(container: DOM_Div,opts: Options);

   构造函数的参数如下:

    参数       是否必要      值类型         定义

    container      是          DOM_Div    DOM元素,是个Div

    opts          可选        Options    构造函数选项

   

    GMap2包含的方法:

     

1.设置状态的方法:

       enableDragging():设置地图可以被拖动。

       disableDragging():禁止地图被拖动。

       draggingEnabled():返回地图是否能够被拖动的布尔值。假如能够拖动,返回"真";否则返回"假"。

       enableInfoWindow():设置地图信息窗口可以弹出。

       disableInfoWindow():禁止地图信息窗口弹出。

       infoWindowEnabled():返回地图信息窗口是否能够被弹出的布尔值。假如能够弹出,返回"真";否则返回"假"。这个方法通常作为检验之用。

       enableDoubleClickZoom():设置可以双击缩放地图,左键双击为放大,右键双击为缩小(默认)。

       disableDoubleClickZoom():禁止双击缩放地图,Google Earth 默认为禁止双击缩放。

       doubleClickZoomEnabled():返回地图是否可以双击缩放的布尔值。假如能够双击缩放,返回"真";

       enableContinuousZoom():设置地图可以连续平滑地缩放。

       disableContinuousZoom():禁止地图连续平滑地缩放。

       continuousZoomEnabled():返回地图是否可以连续平滑地缩放的布尔值。假如能够连续平滑地缩放,返回"真";否则返回"假"。

       enableScrollWheelZoom():设置地图可以由鼠标滚轮控制缩放。

       disableScrollSheelZoom():禁止由鼠标滚轮控制地图缩放。

       scrollWheelZoomEnabled():返回地图缩放是否可以由鼠标滚轮控制。假如能够由鼠标滚轮控制缩放,返回"真";否则返回"假"。

       isLoaded() 返回类型布尔值 假如地图已经被setCenter()初始化,则返回true.

    

2.得到地图的数据信息方法:     

       getCenter() 返回类型GLatLng 返回地图中心点的地图坐标.

       getBounds() 返回类型GLatLngBounds 返回地图视口范围的矩形区域的地理坐标.

       getBoundsZoomLevel(bounds) 返回类型数字返回显示指定的区域需要的最适合的地图缩放等级.该缩放等级是根据当前的地图类型计算出来的,假如还没有指定地图类型,将使用地图类型数组之中的第一项.

       getSize() 返回类型GSize 返回地图视口的像素大小.

       getZoom() 返回数字 返回当前的缩放等级.

       getContainer():取得地图的容器

       getCurrentMapType()得到当前的地图类型。注重得到的是地图类型GMapType对象,而不是对象名称

    

3.设置地图:

      setCenter(center, zoom?, type?)将地图视图切换到指定的中心点,也可以同时设置可选的地图缩放等级和地图类型.地图类型必须已经添加到地图.

      addMapType()该方法必须在构造地图实例之后初始化地图状态时立即执行.在地图刚刚构造的时候调用地图其他的方法都将会产生错误.

      panTo(center) 设置地图的中心点到指定的坐标,假如该点已经在当前的视口之中,则地图中心会滑动到该位置.

      panBy(distance) 地图滑动指定的像素距离.

      panDirection(dx, dy) 以指定的方向滑动地图宽度一半的距离.+1代表右方和下方,-1代表左方和上方.

      setZoom(level)设置地图的缩放等级到给定值.

      zoomIn()缩小地图(将地图的缩放等级增加1).

      zoomOut()放大地图(将地图的缩放等级减少1).

      savePosition()保存地图当前的位置和缩放等级,以供以后通过returnToSavedPosition()方法来返回当前视图.

      returnToSavedPosition()返回到上一次通过savePosition()保存的地图视图.

      checkResize()检查地图容器(container)的大小是否已经发生变化,在地图容器DOM大小可能发生变化的时候调用该方法,以便地图能进行自动调整.

      setMapType(GMapType):设置地图类型:大概有三种类型:G_NORMAL_MAP,G_SATELLITE_MAP,G_PHYSICAL_MAP,

      removeMapType(GMapType)从当前地图上删除一个地图类型。

      enableGoogleBar():设置地图上的搜索栏

 

4.有关地图覆盖物的方法:

      addOverlay(overlay) 在地图上添加一个标注并触发地图的addoverlay事件.

      removeOverlay(overlay) 在地图上删除指定的标注.假如该标注确实在地图上.

      clearOverlays()删除所有地图上的标注.

 

5.有关信息浮窗的方法:

     openInfoWindow(point, node, opts?)在指定的地理点打开一个简单的信息浮窗.滑动地图以保证打开的信息浮窗可见.信息浮窗的内容以DOM节点的形式给定.

     openInfoWindowHtml(point, html, opts?)在指定的地理点打开一个简单的信息浮窗.滑动地图以保证打开的信息浮窗可见.信息浮窗的内容以HTML文本的形式给定.

     openInfoWindowTabs(point, tabs, opts?)在指定的地理点打开一个分标签的信息浮窗.滑动地图以保证打开的信息浮窗可见.信息浮窗的内容以DOM节点的形式给定.

     openInfoWindowTabsHtml(point, tabs, opts?)在指定的地理点打开一个分标签的信息浮窗.滑动地图以保证打开的信息浮窗可见.信息浮窗的内容以HTML文本的形式给定.

     showMapBlowup(point, opts?)在指定的地理点打开一个显示指定点更近的视图的信息浮窗.

     closeInfoWindow()关闭当前打开的信息浮窗.

     getInfoWindow() 返回类型GInfoWindow 返回地图的信息浮窗对象.假如当前并不存在信息浮窗,则创建一个信息浮窗而不显示它.这个操作并不被enableInfoWindow()影响.

   

6.控件的方法:

    addControl(GControl)添加一个google地图的控件

    RemoveControl(GControl)删除一个google地图的控件

7. 示例:

      var map = new Map2(document.getElementByIdx_x_x("map"),{size:GSize(200,200), backgroundColor:"#FF0000"});

      map.addControl(new GSmallMapControl());//添加一个地图左侧的缩放按钮控件

      map.addControl(new GMapTypeControl());//添加地图类型控件包括普通地图、卫星地图、混合地图

      map.setCenter(new GLatLng(37.4419, -122.1419), 13); //实例化一个维度为37.4419、经度为 -122.1419的经纬度实例,然后设置地图的中心。地图缩放值为13

 

      // Add 10 markers in random locations on the map

      var bounds = map.getBounds();//得到地图四面的边界值

      var southWest = bounds.getSouthWest();//西南的经纬度

      var northEast = bounds.getNorthEast();//东北的经纬度

      var lngSpan = northEast.lng() – southWest.lng();//经度差

      var latSpan = northEast.lat() – southWest.lat();//维度差

      //实例化一个在本张地图中的一个经纬度

      var point = new GLatLng(southWest.lat() + latSpan * Math.random(),

                          southWest.lng() + lngSpan * Math.random());

      var marker = new GMarker(point);//实例化一个标点

 

      //给标点加click事件,当点击标点时弹出一个信息窗

      GEvent.addListener(marker, "click", function() {

      marker.openInfoWindowHtml("<b>hello</b>");

      });

     map.addOverlay(marker);//把标点添加到地图覆盖物

   

2.GMapOptions类:

这个类型包含以下4个属性

    1.size

     默认情况下,你创建的地图大小就是你给定的地图容器的大小,所以,通常情况下,你需要显式的声明你的地图容器的width和height属性,否则,地图 是不能正常显示的,但是,有了size这个可选属性后,你就多了一个选择了。你可以在创建地图的时候直接通过size这个属性指定地图的大小,而不需要听 命于地图容器了,即使这个地图容器已经显示的定义了width和height的大小。当然,size属性对应的值是一个GSize类型的数据,比如,假如 给定options={size:GSize(400, 300)},那么,你所创建的地图大小就是400×300的一个 矩形块,而和你指定的容器大小无关。

 

   2.mapType

    创建地图后,默认显示的地图类型是普通地图,假如要加上可以选择的卫星地图、地形地图等等其他类型的地图,可以使用 GMap2.setMapType()方法,但这样往往会罗列一堆的setMapType。GMapOptions提供了mapTypes这个可选项,通 过一个数组就可以给地图加上多种支持类型,比如使用{mapTypes: [G_NORMAL_MAP,G_SATELLITE_MAP,G_PHYSICAL_MAP]}

,你的地图就拥有三种普通、卫星、地形三种类型了。mapTypes数组中的第一项是地图加载的默认类型,所以,假如你想默认加载卫星地图,把G_SATELLITE_MAP移到数组的第一项就可以了。

 

   3.draggableCursor、draggingCursor

    这两个选项是用来定义地图上你的光标类型,我把它们放在一起介绍不等于它们必须一起使用,你可以单独使用任何一个。其中,draggableCursor 是地图可拖拽状态(默认就是可拖拽的)下的光标,draggingCursor是拖拽地图时的光标,对应的值和你在Javascript里面设置其他的光 标时使用的值一样,比如,

{draggableCursor:"crosshair",draggingCursor:"move"}。当然,你也可以使用url形式加上你自己的图标

   4.backgroundColor

    在地图图块的图片还没有传送完成之前,地图的显示区域默认会使用灰色填充,这个就是backgroundColor可以发挥作用的地方了,你可以把灰色换成其他任何符合W3C标准的颜色

  5.googleBarOptions

    这个和你在地图上通过GMap2.enableGoogleBar()时有关系,指定你添加GoogleBar时的一些默认属性

  示例:

   var options = {size:GSize(400, 300), backgroundColor:"#FF0000"};

   var map = new GMap2(document.getElementByIdx_x_x("mapContainer"), options);

 

 3.GMarker类

      构造函数:

      1.GMarker(point, icon?, inert?) 在指定位置point使用指定图标icon或G_DEFAULT_ICON创建一个标记.假如inert参数为true,该标记将不可点击而且没有任何参数.(2.50版本不再支持)

      2.GMarker(point, opts?) 在指定位置point使用指定的选项GMarkerOptions创建一个标记.默认标记能够点击并使用默认图标G_DEFAULT_ICON. (从 2.50开始支持)

      Gmarker包含的主要方法:

      1.openInfoWindow(content, opts?) 在标记图标之上打开地图信息窗口。信息窗口的内容为 DOM 节点。仅适用于 GInfoWindowOptions.maxWidth 选项。

      2. openInfoWindowHtml(content, opts?) 在标记图标之上打开地图信息窗口。信息窗口的内容显示为包含 HTML 文本的字符串。仅适用于 GInfoWindowOptions.maxWidth 选项。

      3.getIcon() GIcon 如构造函数所设置的,返回此标记的 icon。

      4.getTitle() String 如构造函数通过 GMarkerOptions.title 属性所设置的,返回此标记的标题。假如未传入标题,则返回“undefined(未定义)”(自 2.85 开始)

      5.getPoint() GLatLng 如构造函数或 setPoint() 所设置的,返回此标记锚定的地理坐标。(自 2.88 开始建议不要使用)

      6.getLatLng() GLatLng 如构造函数或 setLatLng() 所设置的,返回此标记锚定的地理坐标。(自 2.88 开始)

      7.setPoint(point) none 设置此标记所锚定点的地理坐标。(自 2.88 开始建议不要使用)

      8.setLatLng(point) none 设置此标记所锚定点的地理坐标。(自 2.88 开始)

      9.enableDragging() none 答应在地图上拖拽标记。对于函数,必须已经用 GMarkerOptions.draggable = true 初始化标记。

      10.disableDragging() none 禁止在地图上拖拽标记。

      11.draggable() Boolean 假如已使用 GMarkerOptions.draggable = true 通过构造函数对标记进行了初始化,则返回 true。否则,返回 false。 

      12.draggingEnabled() Boolean 假如当前答应用户在地图中拖拽标记,则返回 true。 

      13.setImage(url) none 请求将 url 指定的图像设置为此标记的前景图。注:不调整打印图像和阴影图像。因此,此方法主要是为了达到高亮显示或变暗显示效果,而不是彻底改变标记的外观。(自 2.75 开始)

      15.hide() none 假如当前标记可见,则隐藏标记。注:假如当前标记可见,则此函数会触发 GMarker.visibilitychanged 事件。(自 2.77 开始)

      16.show() none 假如当前标记不可见,则显示标记。注:假如当前标记不可见,则此函数会触发 GMarker.visibilitychanged 事件。(自 2.77 开始)

      17.isHidden() Boolean 假如当前标记不可见,则返回 true。否则,返回 false。(自 2.77 开始)

    示例:

      1.

       var point = new GLatLng(pointx,pointy);

       var icon = new GIcon();

       icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";

       var myMarker = new GMarker(point, icon);

       alert(myMarker.getIcon().image);

      2.

       var point = new GLatLng(pointx,pointy);

       var myMarker = new GMarker(point,{draggable:true});//可拖拽的标记

       alert(myMarker.getPoint());

                     

  4.GPolyline类

     构造函数

      GPolyline(latlngs, color?, weight?, opacity?, opts?) 根据顶点数组创建折线。color 是一个字符串,包含十六进制数字、HTML 样式的颜色,即 #RRGGBB。weight 是以像素表示的线宽度。 opacity 为 0 到 1 之间的数字。该线条是消除锯齿且半透明的。

    GPolyline包含的方法

       1.getVertexCount() Number 返回折线的顶点数目。(自 2.46 开始)

       2.getVertex(index) GLatLng 返回折线中给定索引值对应的顶点。(自 2.46 开始)

       3.getLength() Number 返回沿地球表面的折线长度(以米表示)。(自 2.85 开始)

       4.getBounds() GLatLngBounds 返回此折线的边界。(自 2.85 开始)

       5.hide() none 假如当前折线可见并且 GPolyline.supportsHide() 返回 true,则隐藏此线。注:假如当前折线可见,则此函数会触发 GPolyline.visibilitychanged 事件(自 2.87 开始)

       6.isHidden() Boolean 假如当前折线不可见,则返回 true。否则,返回 false。(自 2.87 开始)

       7.show() none 假如当前折线不可见,则显示该线。注:假如当前折线不可见,则此函数会触发 GPolyline.visibilitychanged 事件。(自 2.87 开始)

       8.supportsHide() Boolean 假如当前环境下支持 GPolyline 对象的 GPolyline.hide(),则返回 true。否则,返回 false。(自 2.87 开始)

       注:假如您想在地图里面显示折线,您需要在您的XHTML文档里面包含VML命名空间和一些CSS代码,这样可以令它们在IE下面可以正常工作。XHTM文档的开头看起来就像这样:

       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

        <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">

         <head>

           <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>

           <title>My Google Maps Hack</title>

             <style type="text/css">v\:* {behavior:url(#default#VML);}

              </style>

           <script src="http://maps.google.com/maps?file=api&v=2&key=abcdefg" type="text/javascript"></script>

          </head>

  5.GLatLng类

      构造函数:

       GLatLng(lat, lng, unbounded?) 注重纬度和经度的顺序。假如 unbounded 标记为 true,则表示数字以原始输入状态使用,否则纬度将在 -90 度到 +90 度之间,而经度在 -180 度和 +180 度之间周而复始。

       GlatLng包含的方法:

      lat() Number 返回以度数表示的纬度坐标(-90 到 +90 之间的数值)。假如在构造函数中设置了 unbounded 标记,则纬度坐标值可能超出此范围。

      lng() Number 返回以度数表示的经度坐标(-180 到 +180 之间的数值)。假如在构造函数中设置了 unbounded 标记,则经度坐标值可能超出此范围。

  

   6. GPoint类

      GPoint 是以像素坐标表示的地图上的一点。注重:在 v2 中,它不再是以地理坐标表示的地面上的一个点。现在,地理坐标可以用 GLatLng 表示。

     在地图坐标系统中,x 坐标向右增大,y 坐标向下增大。

     注重:GPoint 的两个参数同 x 和 y 属性一样可访问,但最好不要修改它们,而是在创建新对象时使用不同的参数。

  

    7. GEvent命名空间

     此命名空间包含的函数可用于注册事件处理程序(既处理自定义事件也处理 DOM 事件)和触发自定义事件。此 API 定义的所有事件都是由 GEvent.trigger() 内部触发的自定义事件。

       addListener(source, event, handler) 返回GEventListener 为源对象的自定义事件注册事件处理程序。返回一个可用于最终注销处理程序的句柄。事件触发时,this 将被设置为源对象,同时调用事件处理程序。

       addDomListener(source, event, handler) 返回GEventListener 为源对象的 DOM 事件注册事件处理程序。源对象必须为 DOM 节点。返回一个可用于最终注销处理程序的句柄  。事件触发时,this 被设置为源对象,同时调用事件处理程序。此函数将 DOM 方法用于当前浏览器,来注册事件处理程序。

       removeListener(handle)删除使用 addListener() 或 addDomListener() 安装的处理程序。

       clearListeners(source, event)删除使用 addListener() 或 addDomListener() 为给定事件在给定对象上安装的所有处理程序。

       clearInstanceListeners(source)删除使用 addListener() 或 addDomListener() 为所有事件在给定对象上安装的所有处理程序。

       trigger(source, event, …)使源对象触发自定义事件。将 event 后所有剩余的可选参数依次输入给事件处理程序作为参数。 

       bind(source, event, object, method)返回GEventListener 将给定对象的方法调用注册为源对象自定义事件的处理程序。返回一个可用于最终注销处理程序的句柄。

       bindDom(source, event, object, method)返回 GEventListener 将给定对象的方法调用注册为源对象自定义事件的处理程序。返回一个可用于最终注销处理程序的句柄。

       callback(object, method) Function 返回在 object 上调用 method 的 closure。

       callbackArgs(object, method, …) Function 返回在 object 上调用 method 的closure。调用返回的函数时,将 method 后面所有余下的可选参数依次输入 method 作为参数。

    

    8.GClientGeocoder地址解析类:

     此类用于和 Google 服务器建立直接通讯,以获得用户指定地址的地理位置信息。另外,地理解析器可维护自己的地址缓存,可以无需与服务器通讯而回答反复的查询。注重:目前中国地图地址解析器只支持市/县/区级别的地址。

     getLatLng(address, callback) 给 Google 服务器发送请求,对指定的地址进行地址解析。假如地址已成功定位,则用 GLatLng 点调用用户指定的回调函数。否则,向回调函数提供一个 null 点。假如地址不明确,则仅向回调函数传送最匹配的点。(自 2.55 开始)

     getLocations(address, callback) 给 Google 服务器发送请求,对指定的地址进行地址解析。包含状态代码的答复,假如答复成功,则向用户指定的回调函数传送一个或多个 Placemark 对象。与 GClientGeocoder.getLatLng 方法不同,回调函数可以通过检查 Status 字段的代码值确定失败原因。(自 2.55 开始)

    示例:      

     var map = new GMap2(document.getElementByIdx_x_x("map"));

     var geocoder = new GClientGeocoder();

     var address="五道口"; 

     geocoder.getLatLng(address,function(point) {      

     if (!point) 

     {        

       alert(address + " not found");       

     }

     else 

     {        

       map.setCenter(point, 13);  

       var marker = new GMarker(point);        

       map.addOverlay(marker);        

       marker.openInfoWindowHtml(address);

       alert(point);     

     }

   });

       

   三:下面是Google API自带控件

    

      GLargeMapControl:放大缩小调节杆

      GMapTypeControl:地图和卫星图片的切换功能

      GSmallMapControl:GLargeMapControl的精简版 ,去掉了缩放的调节杆保留了缩放按钮

      GSmallZoomControl:只包括缩放按钮,去掉了GLargeMapControl里其他的所有控制

      GScaleControl:比例尺控件

 

    四:减少浏览器内存泄露

     Google Maps API鼓舞使用闭包/Closures,Maps API的第二版引入一个GUnload()函数,用于最大限度地消除可能引发内存泄露的循环引用。您应该在页面的unload事件中调

 

用GUnload()函数来降低您的应用程序内存泄露的风险:<body onunload="GUnload()">这个函数确实可以消除Google地图在Internet Explorer下的内存泄露,但是假如您比较关心

 

内存消耗问题,您仍然应该用Drip之类的工具测试您自己网站的内存泄露情况。

 

    五:浏览器兼容性

     Google Maps API支持的浏览器种类与Google地图网站相同。因为不同的应用程序在碰到不兼容的浏览器的时候需要表现不同的行为,所以Maps API提供了一个全局方法 (GBrowserIsCompatible())来检查兼容性,但是,发现一个不兼容的浏览器时,它不会自动采取任何措施。 http://maps.google.com/maps?file=api&v=2里面的脚本似乎可以在任何浏览器里面解析而不产生错误,所以您可以在检查浏览器兼容性之前就包含脚本文件。

  

   六:相关资料的网址:

http://code.google.com/intl/zh-CN/apis/maps/

http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/v2/reference.html

Google地图API的同步中文文档:http://www.codechina.org/doc/google/gmapapi/

百度文库:http://wenku.baidu.com/view/a2885c27a5e9856a561260b2.html

csdn博客:http://blog.csdn.net/jiali765/archive/2010/03/03/5338265.aspx

http://www.jbedu.com/study/jishuwenzhang/196.html

Visual Studio 2005 – 2015 版本下载

Visual Studio 2005:http://pan.baidu.com/s/1c0eudyS
Visual Studio 2008:<a href="http://pan.baidu.com/s/1i3GJ7%3Ca%20href=" http:="" www.pjhome.net"="" target="_blank" style="text-decoration: none; color: rgb(107, 107, 82); font-family: Verdana, Arial; font-size: 14px; white-space: normal; background-color: rgb(247, 247, 244);">pj" target="_blank" rel="external">http://pan.baidu.com/s/1i3GJ7pj
Visual Studio 2010:<a href="http://pan.baidu.com/s/1c0%3Ca%20href=" http:="" www.pjhome.net"="" target="_blank" style="text-decoration: none; color: rgb(107, 107, 82); font-family: Verdana, Arial; font-size: 14px; white-space: normal; background-color: rgb(247, 247, 244);">pjtS0" target="_blank" rel="external">http://pan.baidu.com/s/1c0pjtS0
Visual Studio 2012:http://pan.baidu.com/s/1eQ2C2Dc
Visual Studio 2013:http://pan.baidu.com/s/1o63ciOa  

Visual Studio  2015简体中文版(企业版):  为了更多朋友的需求,特此更新
http://download.microsoft.com/download/B/8/F/B8F1470D-2396-4E7A-83F5-AC09154EB925/vs2015.ent_chs.iso
SHA1: 4FFA1EE3E2D3337D3EDAE550A3583ABE9C426BEF
激活密钥:HM6NR-QXX7C-DFW2Y-8B82K-WTYJV
———————————————————————————————————————————-

//———————附上各种版本的序列号——————–
2005序列号:
  KGR3T-F2C26-RRTGT-D6DQT-QBBB3
2008序列号:
  XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT
  WPX3J-BXC3W-BPYWP-PJ8CM-F7M8T
  PYHYP-WXB3B-B2CCM-V9DX9-VDY8T
  WPDW8-M962C-VJX9M-HQB4Q-JVTDM
2010序列号:
  YCFHQ-9DWCY-DKV88-T2TMH-G7BHP
2012序列号:
旗舰版有效注册密钥:
  YKCW6-BPFPF-BT8C9-7DCTH-QXGWC
专业版有效注册密钥:
  4D974-9QX42-9Y43G-YJ7JG-JDYBP
2013序列号:
  BWG7X-J98B3-W34RT-33B3R-JVYW9 

微信“阅读数”是怎么算的

微信“阅读数”是怎么算的

一、每个微信  每天可以贡献 5 个阅读数,但只有 1 个赞。连续 5 次打开文章,也没问题,阅读数会增加,再多就不算了。过晚上12点后,打开文章又可以增加 5 个阅读数。
  

二、只计算打开的文章,将文章链接转发到手机浏览器或浏览器均无效。无论是直接将文章“发送给朋友”,还是先“复制链接”再把发送给微信好友,都是有效的,只要在微信中打开即算数。
  

三、Web 版或 Mac 版微信打开的文章会跳转到  浏览器,也不算数。微信文章在浏览器中是不显示阅读数的,也不显示“赞”数,手机浏览器同理。
  

四、贡献“阅读数”不需要关注公众号,聊天或朋友圈打开的文章均算数。只要在微信手机客户端里即可,除非第6条。
  

五、“阅读数”是实时的,不是(截止到)前一天的累计数据。在公开数据之前,公众号运营者可以在后台看到前一天的累计“阅读数”。
  

六、通过关键词自动回复功能获得的文章不计入阅读数。如果设定回复某关键词获得一个“图文消息”,这篇文章将从 0 开始计“阅读数”。
  

七、通过“查看历史消息”打开文章是算数的。当然要算数了。但历史阅读量是不记录的,仅从统计代码部署当日起算数,也就是7月25日左右。
  

八、灰度测试期间阅读数是可以刷的。7月24日(含)之前的统计代码比较简单,同一个微信可以无数次刷同一篇文章,所以如果一个公众号 24 号的数据比之后多了很多,极有可能是刷的。

wampserver出现You don’t have permission to access

这些天都在都遇到wampserver提示出现:You don't have permission to access/on this server.的提示,一直没去解决。今天由于网站开始改版得用到wamp,所以就得搞定这个问题了。

本地搭建wamp,输入http://127.0.0.1访问正常,当输入http://localhost/,apache出现You don't have permission to access/on this server.的提示,如何解决?

找到httpd.conf,用记事本打开httpd.conf,然后将

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

这里改成:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
</Directory>

还有一处将下面

# onlineoffline tag - don't remove
Order Deny,Allow
Deny from all  
Allow from 127.0.0.1
</Directory>

Deny from all  改为:Allow from all  ,然后重新启动所有服务。

现在打开localhost或127.0.0.1时发现可以访问了,但访问phpmyadmin时候,出现“You don't have permission to access /phpmyadmin/ on this server.”的提示。

解决方法,打开如下文件:

C:/wamp/alias/phpmyadmin.conf    //这个就是你的wamp的安装目录下的内容,用编辑器打开

修改成这样:

<Directory "c:/wamp/apps/phpmyadmin3.5.1/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order Deny,Allow
    Allow from all
    Allow from 127.0.0.1
</Directory>

修改保存后,一定要记得重启wampserver哟。接下来就应该搞定了吧。

Wampserver 2.5 多站点配置方法

写在开头:本文适用于wampserver2.5版本,和wamp的老版本配置有语法上的区别,笔者正是因为被老版本的配置办法给整迷糊了所以才总结了一篇针对2.5版本的配置方法,如果您还停留在1.x或着已经到了3.x以上,请节省您宝贵的时间

wamp是一个集成了apache、php、mysql的运行环境

几个月前笔者开始使用wamp2.5学习php,由于那时候刚刚入门而且重心在于学习php,所以在配置wamp的时候参照一些网上的文章配置来配置去瞎猫碰死耗子配好了,心想能用就行了管他呢。

今天笔者动了下wamp的配置文件,想新配个站点,发现怎么都配不好,一怒之下卸载wampserver重新来过,搞了好几个小时终于搞明白怎么样配好一个自己的站点,废话不多说大家跟着笔者从一个新安装好的wampserver开始配置多站点。

整个配置过程我们一共要用到3个文件,请大家先打开这些文件方便下面修改 
C:/Windows/System32/drivers/etc 
下的 hosts文件

D:/wamp/bin/apache/apache2.4.9/conf/extra 
下的 httpd-vhosts.conf

D:/wamp/bin/apache/apache2.4.9/conf 
下的 httpd.conf

1. 编辑httpd.conf 
查看

LoadModule php5_module "d:/wamp/bin/php/php5.5.12/php5apache2_4.dll"PHPIniDir d:/wamp/bin/php/php5.5.12Include conf/extra/httpd-vhosts.conf

这三句,如果它们被#注释了的话,去掉# 
说明一下,第三句话一般注释的,去掉注释后就能开启配置站点

然后就不用管httpd.conf了。

2.编辑 httpd-vhosts.conf 
上面那步的第三句话就是让本文件的配置起作用

我们看到23~30行,这就是一个配置站点的范例,你可以参照它写一个,也可以按照我下面的标准写一个站点信息

<VirtualHost *:80>    DocumentRoot "e:/PhpProject/"    ServerName localhost2.com     <Directory "e:/PhpProject/">        Options Indexes FollowSymLinks        AllowOverride all        Require all granted    </Directory></VirtualHost>

以上是我复制来粘贴去最后琢磨出来最精简的写法,少一句不行,多一句累赘

DocumentRoot "e:/PhpProject/" 毫无疑问是你自己的站点路径ServerName localhost2.com 是告诉浏览器你输入这个你就能访问你自己的站点这个服务名最好是一个url的形式比如我写的那样,不然你输入到某些坑爹浏览器他直接给你跳转到百度搜索结果了<Directory "e:/PhpProject/">        Options Indexes FollowSymLinks        AllowOverride all        Require all granted</Directory>这段很关键,是给你自己的站点设置权限,不然没法访问

3.编辑 hosts文件

毕竟咱用的站点实在虚拟服务器上运行的,还得把我们的服务名告诉机器 
这最后一步就是告诉本主机你的站点名 
做法是在本文件最后添上

127.0.0.1 localhost2.com

按照以上流程配置完以后,重启wamp所有服务,在浏览器输入localhost2.com 
就能访问到自己的站点了。

常见的问题 
wampserver默认用的是80端口,有时候会被其他程序占用,当被占用的时候,你只需在httpd-vhosts.conf 里面找到

Listen 0.0.0.0:80Listen [::0]:80

在它后面再添个自定义的端口号,最好6000以上,比如下面的

Listen 0.0.0.0:8080Listen [::0]:8080

然后配置站点信息的时候,在

<VirtualHost *:80>

中把80改成自己的端口号,就可以顺利地访问自己的站点了。

结语

以上方法全是笔者今天配了好几个小时总结而来的,大多数是复制粘贴的工作,对强大的wampserver没有很细致的了解,只是简单粗暴地配置运行而已,大家如果想要更细致地了解wamp2.5的新特性,可以去那帮法国朋友的官网了解一下。

在国内,如何顺利使用谷歌!

在国内,如果顺利使用谷歌?

谷歌被封,实乃国内学术界一大悲剧。有人不断为当局洗地,强调谷歌搜索为网络间谍,这里只能说一句:政治已经很脏了,不要把这些脏东西泼在专心治学的人身上。

另外,由于谷歌被封,这里提供一些访问谷歌的方式,请多次尝试。

1. 自己买个支持OpenWRT的路由器,配置vpn,通过vpn上网,具体参见下文:

OpenWRT 路由配置技巧   ***** 推荐

2. 一种翻墙访问google,gmail,google earth的方法  

链接: blog.sina.com.cn/s/blog_62347f3c0102vec2.html

3. www.aol.com    *****

www.aol.com  使用Google 搜索引擎 搜索效果等同Google.

谷歌加加 http://guge.suanfazu.com

4.谷歌复原 (被封了)

网址: http://www.Google.com.im/

谷歌复原 ( Google.com.im ) 是由 Google Fans 于2010年创办的非营利性、基于 Google Search Engine 的搜索项目,旨在纪念2010年退出中国市场的谷歌公司,帮助国内的用户取得最好的搜索体验。谷歌公司拥有全球各个地区400多个以“Google”为前缀的域名,但唯独缺少“.com.im”为后缀的域名,因此本站并不同于官方的其它站点。速度较慢。

5.Googlestable (被封了)

网址:http://www.googlestable.com/

目前最稳定且高速,但是只能进行普通搜索和图片搜索

6.Google 全球 IP 地址库

网址:https://github.com/justjavac/Google-IPs

7.Chrome 浏览器设置

在Chrome 浏览器中打开「实验性功能」页面(chrome://flags/),启用「实验性 QUIC 协议」和「经由实验性 QUIC 协议发出的 HTTPS 请求」,重启浏览器后可以正常登陆 Google 相关服务。

8.免翻墙镜像

网址:https://github.com/greatfire/wiki

可用,但有时不稳定。

9.Startpage

网址:https://startpage.com/

基于谷歌搜索结果的隐私安全搜索引擎,说它是隐私安全搜索是因为它(自称)不会保留用户的ip地址信息,也不会把这些信息提供给谷歌。当然你们不在乎这个,它最让我们喜欢的是,其搜索结果是基于谷歌的,虽然顺序会略有不同,不过应该比百度更加精准。

有中文界面,不过没什么区别,当然支持中文内容的检索,不过底下的搜索结果页数有时显示不出来。比谷歌优秀的是,没有恼人的定向广告。我以前还常用一款类似的印度颠覆者搜索引擎,那个不依靠谷歌,不用考虑谷歌的政治偏向,结果不是很精确,但还不错,可惜被墙了。

参考:微思客WeThinker微信公号

http://mp.weixin.qq.com/s?__biz=MjM5NjA3NjA2MA==&mid=201044697&idx=5&sn=7fafeb004799f1a6e25ff5977f329a58&scene=3#rd

常用MD5加密代码

7a57a5a743894a0e admin(16位MD5小写加密)

972130B75066C825 ADMIN(16位MD5大写加密)

21232f297a57a5a743894a0e4a801fc3 admin(32位MD5小写加密)

73ACD9A5972130B75066C82595A1FAE3 ADMIN(32位MD5大写加密)

49ba59abbe56e057 123456(16位MD5小写加密)

e10adc3949ba59abbe56e057f20f883e 123456(32位MD5小写加密)

469e80d32c0559f8 admin888(16位MD5小写加密)

2299413865C28A35 ADMIN888(16位MD5大写加密)

7fef6171469e80d32c0559f88b377245 admin888(32位MD5小写加密)

A1F63A962299413865C28A3593D359B0 ADMIN888(32位MD5大写加密) 

admin
LM MD5 HASH: [ 7a57a5a743894a0e ] MD5 HASH: [ 21232f297a57a5a743894a0e4a801fc3 ]

admin888
LM MD5 HASH: [ 469e80d32c0559f8 ] MD5 HASH: [ 7fef6171469e80d32c0559f88b377245 ]

123456:
LM MD5 HASH: [ 49ba59abbe56e057 ] MD5 HASH: [ e10adc3949ba59abbe56e057f20f883e ]