Akawa

ETY001的博客

今天用手机在网上闲逛的时候,看了一篇关于介绍Web3.0的文章,感觉很神奇。Web2.0的时代才刚刚开始,就要马上迎来Web2.0?回到电脑前的第一件事就是搜索一下Web3.0的相关内容看看。不过看后,我个人觉得其实Web3.0是基本上可以和Web2.0划等号的。

首先来看看我从网上找到的关于web3.0的一些内容。

什么是Web3.0?

假如说web1.0的本质是联合,那么web2.0的本质就是互动,它让网民更多地参与信息产品的创造、传播和分享,而这个过程是有价值的。web2.0的缺点是没有体现出网民劳动的价值,所以2.0很脆弱,缺乏商业价值。web2.0是脆弱的,纯粹的2.0 会在商业模式上遭遇重大挑战,需要跟具体的产业结合起来才会获得巨大的商业价值和商业成功。web3.0是在web2.0的基础上发展起来的能够更好地体现网民的劳动价值,并且能够实现价值均衡分配的一种互联网方式。

Web3.0到来的前提

web3.0到来的三个前提:1、博客技术为代表,围绕网民互动及个性体验的互联网应用技术的完善和发展。2、虚拟货币的普及和普遍,以及虚拟货币的兑换成为现实。3、大家对网络财富的认同,以及网络财务安全的解决方案。

web3.0跟web2.0一样,仍然不是技术的创新,而是思想的创新,进而指导技术的发展和应用。web3.0之后将催生新的王国,这个王国不再以地域和疆界进行划分,而是以兴趣、语言、主题、职业、专业进行聚集和管理的王国。到时候真可谓是“皇帝轮流做,明年到我家”,你有机会打造出一个新的互联网王国而成为一个国王,也有可能会在互联网王国的民主竞选中成为总统,到时,你将拥有来自地球各个角落的网络公民。

我的想法

就像我开头说的,Web3.0是可以和Web2.0划等号的。Web3.0不过是在思想理念上对Web2.0这个大的框架进行了完善,使Web2.0现有的功能更加方便和强大。可能最不同的一点就是你需要拥有一个更加完美的浏览器来做你想做的事情,因为Web3.0中,程序将会进一步网络化。会有越来越多的程序是运行在网页中的,依托于网路而存在。有的资料中讲到Web3.0的互联网将自身转化为一个泛型数据库,里面将会存有各种各样的信息,比如个人信息,公司企业信息等一系列跟生活工作有关的信息,甚至是刚刚说到的那些网络化的应用程序。

我突然想起来了最近腾迅开始测试的新WebQQ,集成了腾迅众多的服务,在网页中提供了类似桌面的操作环境,这似乎有些Web3.0的感觉。Web3.0给我的感觉是互联网就像是一锅正在熬制的八宝粥,一切提供服务的机构或者个人就像是其中的各种各样的料,综合在一起相互之间既提供自己的味道给别人又把别人的味道揉入自己,最后把成品八宝粥提供给用户。

Web3.0由于比Web2.0更加依赖网络,因此将会具备跨平台、跨硬件的优势,这将更有助于把各个提供服务的个体聚合在一起,为用户提供更加稳定优秀的服务,这将使人们有更加不错的上网冲浪体验。

对于这样一个新奇的概念,我的展望是,个人博客是必不可少的,甚至每个个人博客都将成为那碗八宝粥的一个个米粒,服务商、大的门户网站的信息交互是必不可少的,这种交互将会在Web3.0中更加频繁与重要。

但是细想一下,Web3.0并没有比Web2.0多出什么东西,而仅仅是对Web2.0进行了一定的完善。总之,无论是Web2.0还是Web3.0都很让人憧憬以后的互联网生活的绚丽多彩。

原创博文,转载请附带原文地址,谢谢!

error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

如果习惯了不区分C/C++,那么在VS里面编译C的时候遇到这种问题会感到很棘手。

明明是写好的,为什么就会出现这种情况呢?如果用Cpp扩展名就不会出现问题。

写C时,遵循一下两个原则就可以解决上述问题:

  1. 定义结构体变量时前面要加上struct。

  2. 变量定义要全部放在最前面,不支持在文件中间定义临时变量。

SEO入门书籍推荐

《搜索引擎优化(SEO)知识完全手册》

相对下面一本更系统一些,而且只有50页,字很大,一会就能看完。
介绍页面:http://www.jingzhengli.cn/sixiangku/ebook/2005_hbj_seo.htm
下载地址:http://www.jingzhengli.cn/sixiangku/ebook/2005_hbj_seo.pdf

《GOOGLE排名秘笈》

此书售价1200元,但我感觉没有上面这本好。下面是破解版。
下载地址:http://www.chinaseo.org.cn/down/view_106.html

Kyw强烈建议想SEO入门的朋友,看这2本书,而不是在网上找零散的教程。

更多SEO入门书籍
http://zhidao.baidu.com/question/22985230.html?si=1
http://www.seotest.cn/BLOG/SEO2007-download.html

经常关注网站排名的朋友可能有过这样的经历,突然有一天发现自己网站在GOOGLE上的排名直线下降,甚至于消失——这就有可能是Google Dance。

我们先来了解什么是Google Dance?

Google Dance其实就是指Google重新安排它的搜索结果的排名的过程。通常用于描述Google搜索引擎数据库每月一次的大规模升级,定期更新其索引的活动。
我们把这种现象称为Google幽灵现象,由于Google一般每个月对其搜索数据库进行一次更新,在三到五天的Google Dance时期,Google的搜索结果会有大幅度的波动,几乎每一分钟都会有变化。反应在排名结果上,就是就是关键词排名忽上忽下,忽隐忽现,就像是跳舞一样,因此称之为Google Dance

如何判断是否处于Google Dance期?

我们知道Google有很多服务器(www.google.com,www2.google.com,www3.google.com,这是Google的三个主要服务器),在更新过程中,所有的服务器都要接受新的索引,但是并非一次性全盘接受,毕竟Google拥有8 个数据中心,共享着成千上万个网络服务器。因此在这个期间(Dance一般持续三五天的时间,Google Dance通常在月末的那周开始,新结果在月初几天可以看到,大概是每36天一次或者一年10次。
所以我们如何判断是否处于Google Dance期,一般只要在不同的服务器查询同样的关键词,如果获得不同特别是较大差距的查询结果数量,一般就可以断定Google正在更新中。当搜索结果数量和排名顺序都相同的话,就表明Google的更新过程已经完成。

SEOer 怎么利用 Google Dance?

Google Dance更新期间,可能同时也会有算法的改变或调整。Google一直为反作弊而努力,一直在不断改进自己的算法。在Google Dance 结束后,站长应该针对排名升降结果和竞争对手的排名情况调整自己的优化策略,作弊并不能取得长久效果,只有认真对待网站优化的每个细节,正规合理地优化,才能无惧于Google每次的Dance调整,才能长期从Google那获得较好的排名。
另外,在Google Dance期间,新网站被收录的机会大大增加,SEOer完全可以在此期间提交新的网站以及加大网站的更新力度,为网站能获得更好的排名做准备。

Google Dance查询工具:

http://www.google-dance-tool.com/

中国人太辛苦,拼死拼活也挣不了几个钱,想想一个点击2毛钱还算不错吧,而国外CPC单价普遍比中国高,即使一样的话也是0.2美金,6.7倍的关系,同时以美国为代表的西方国家,网络已经深入百姓家庭,CPA,CPS等广告模式深入人心,很容易推广,我们不妨把眼光放宽一点,在国内网络管理日趋严厉的形式下,可以尝试做一些英文站,在这里,结合我做英文的小小经历,共同探讨一下做英文站特别是站群的赚钱模式。

一、空间和域名选择

做英文站,就千万不要指望国内的IP,国内的IP在英文网站上质量非常低,转化率简直就是零,既然做了英文站,就要把欧美人的IP给吸引过来,那么在选择空间时,尽量选用美国空间,美国空间速度快,价格便宜,IP超多。做英文垃圾站特别是站群时,一定要采用独立IP,有可能的话一个站一个IP,如果做到200个以上的站群时,可以1个IP下放4~5个网站,但这些站千万不能互连。

对于域名,做站群的话,域名的注册信息要不一样,域名注册信息包括所有人名称,邮箱,联系,地址等等,越不一样越好。任何一样的信息都会被搜索引擎知道,也会因此造成域名关联。

阅读全文 »

垃圾站群是近几年发展起来的一 种盈利模式。我接触站群也纯属意外,当初的想法也很单纯,就是为了自己在操作SEO项目的时候能有更多的外链资源。但慢慢了解到个人站长做站群,也不失为一条较好的出路。下面是我做 站群半年来总结出的一些经验:  

一、前期的准备以及注意事项

  1、批量注册域名

   一次性注册好域名,这里推 荐使用Godaddy的7元info或.tk免费域名。(如何注册、申请去百度找找教程)做站群成本一定要控制好,前期最好投入的不要太大,投入太大相对压力越大,很多人往往就坚持不下。如果大家担心info、tk域名影响收录大家可以去百度 site:.info site:.tk 当然如果你资金充裕也可以选择com、org域名,但这大大提高了建站成本。

  2、批量安装好网站程序

   这一步往往很多人执行不起 来,很多人在空间、程序上面要花掉大量的时间。有资金的建议购买服务器或者VPS,不该省的不能省,别相信国外的那些美名其曰的无限空间,速度慢、宕机不说,几乎所有空间商都有文件数量限制,这样的空间不适合站群。另外没条件的可以使用Godaddy注册Info域名送的免费空间,虽然有广告,但成本大大降低。然后就是批量安装好网站程序,推荐使用DEDE、帝国、Z-blog等,程序、模板设置的不要过单一。

  3、选择点站类型

   不要选择一些太热的行业, 网站的定位要精准,别老想把垃圾站建成门户。大家可以去慧聪、阿里巴巴找找,比如烫画机、热风机这类完全可以做成独立站点。小领域,大市场,这句话到哪都受用,我们要清楚认清形势,网站定位一定要精准。  

        4、网站内容

   网上有很多站群类软件、工 具,都能非常好的实现网站内容、内部链接,这里我就不多说了,免AD之嫌。

  5、注意事项

   要清楚的认识到你做的是垃 圾站,别在一个站点上花太多时间,别把时间浪费在找程序、改模板上面。别想着你能做成行业巨头,那不是我们想的事情。如何利用现有的资源做到效率最高、风险最小、利润最大才是我们需要思考的问题。不要太在意单个站点被搜索引擎处罚(采集站都会有被K的一天),同一IP下站点之间不要互相链接,以免K站的时候殃及。新站在百度至少2个月才有点权重,往往很多人都坚持不住,做站群之前最好学习下SEO入门知识。

  二、站群的盈利模式

   6个月时间,通过软件我已 建立了300多个垃圾站,保守的按照一个站100pv,那么100个站也有1万的pv而我选择的都是行业站,adsense的单价也高,按照1%的点击率、0.1美元的单价算,一万pv每天就能为我带来10美元的收入,300个站每天也有30美元的收入。当然实际收入绝不止这些,点击率、流量这些完全可以大幅度提高,另外还可以通过弹窗、淘宝客等把利益最大化。如果有自己产品,通过站群来实现品牌推广、营销也是再好不过了。有人说无图无真相,要看收入截图,我要说的是,是否能成功完全取决个人能力、执行力,同样的事情不同人做就会有不同的结果,如果一味的怀疑别人、依赖于别人能给你多大的帮助,这样的人不管做什么事都不能成功。所以个人能力、执行力跟盈利也是相辅相成的。

  三、发展前景

   这个我不敢断言,本来站群 模式就属于黑帽行为,我们要做的就是如何在搜索引擎大规模处罚之前,最大化的获取利益。最好是利用现在的站群资源,主推自己主站,用心经营,任何站都有出头之日。

  讲到这里基本就说完了.

对于图的深度遍历相信学过数据结构的人都不会陌生吧,有时间,所以写了个图的深度遍历源代码,拿出来给大家分享一下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <stdio.h>
#include <malloc.h>
#define INFINITY 32767
#define MAX_VEX 20 //最大顶点个数
bool *visited;  //访问标志数组

//图的邻接矩阵存储结构
typedef struct{
  char *vexs; //顶点向量
  int arcs[MAX_VEX][MAX_VEX]; //邻接矩阵
  int vexnum,arcnum; //图的当前顶点数和弧数
}Graph;

//图G中<!-- more -->查找元素c的位置
int Locate(Graph G,char c){
  for(int i=0;i<G.vexnum;i++)
  if(G.vexs[i]==c) return i;
  return -1;
}

//创建无向网

void CreateUDN(Graph &G){
  int i,j,w,s1,s2;
  char a,b,temp;
  printf("输入顶点数和弧数:");
  scanf("%d%d",&G.vexnum,&G.arcnum);
  temp=getchar(); //接收回车
  G.vexs=(char *)malloc(G.vexnum*sizeof(char)); //分配顶点数目
  printf("输入%d个顶点.\n",G.vexnum);
  for(i=0;i<G.vexnum;i++){ //初始化顶点
    printf("输入顶点%d:",i);
    scanf("%c",&G.vexs[i]);
    temp=getchar(); //接收回车 
  }

  for(i=0;i<G.vexnum;i++) //初始化邻接矩阵
    for(j=0;j<G.vexnum;j++)
      G.arcs[i][j]=INFINITY;

  printf("输入%d条弧.\n",G.arcnum);
  for(i=0;i<G.arcnum;i++){ //初始化弧
    printf("输入弧%d:",i);
    scanf("%c %c %d",&a,&b,&w); //输入一条边依附的顶点和权值
    temp=getchar(); //接收回车
    s1=Locate(G,a);
    s2=Locate(G,b);
    G.arcs[s1][s2]=G.arcs[s2][s1]=w;
  }
}

//图G中顶点k的第一个邻接顶点
int FirstVex(Graph G,int k){
  if(k>=0 && k<G.vexnum){ //k合理
    for(int i=0;i<G.vexnum;i++)
      if(G.arcs[k][i]!=INFINITY) return i;
  }
  return -1;
}

//图G中顶点i的第j个邻接顶点的下一个邻接顶点
int NextVex(Graph G,int i,int j){
  if(i>=0 && i<G.vexnum && j>=0 && j<G.vexnum){ //i,j合理
    for(int k=j+1;k<G.vexnum;k++)
      if(G.arcs[i][k]!=INFINITY) return k;
  }
  return -1;
}

//深度优先遍历
void DFS(Graph G,int k){
  int i;
  if(k==-1){ //第一次执行DFS时,k为-1
    for(i=0;i<G.vexnum;i++)
      if(!visited[i]) DFS(G,i); //对尚未访问的顶点调用DFS
  }
  else{ 
    visited[k]=true;
    printf("%c ",G.vexs[k]); //访问第k个顶点
    for(i=FirstVex(G,k);i>=0;i=NextVex(G,k,i))
      if(!visited[i]) DFS(G,i); //对k的尚未访问的邻接顶点i递归调用DFS
  }
}

//主函数
void main(){
  int i;
  Graph G;
  CreateUDN(G);
  visited=(bool *)malloc(G.vexnum*sizeof(bool)); 
  printf("\n深度优先遍历: ");
  for(i=0;i<G.vexnum;i++)
  visited[i]=false;
  DFS(G,-1);
  printf("\n程序结束.\n");
}

输出结果为(红色为键盘输入的数据,权值都置为1):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
输入顶点数和弧数:8 9

输入8个顶点.

输入顶点0:a

输入顶点1:b

输入顶点2:c

输入顶点3:d

输入顶点4:e

输入顶点5:f

输入顶点6:g

输入顶点7:h

输入9条弧.

输入弧0:a b 1

输入弧1:b d 1

输入弧2:b e 1

输入弧3:d h 1

输入弧4:e h 1

输入弧5:a c 1

输入弧6:c f 1

输入弧7:c g 1

输入弧8:f g 1

深度优先遍历: a b d h e c f g 

程序结束.

  1. 建立连接协议(三次握手)

    (1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。
    (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。
    (3) 客户必须再次回应服务段一个ACK报文,这是报文段3。

  2. 连接终止协议(四次挥手)

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

(1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段4)。
(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
(3) 服务器关闭客户端的连接,发送一个FIN给客户端(报文段6)。
(4) 客户段发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。

CLOSED: 这个没什么好说的了,表示初始状态。

LISTEN: 这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了。

SYN_RCVD: 这个状态表示接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,除非你特意写了一个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态时,当收到客户端的ACK报文后,它会进入到ESTABLISHED状态。

SYN_SENT: 这个状态与SYN_RCVD遥想呼应,当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。

ESTABLISHED:这个容易理解了,表示连接已经建立了。

FIN_WAIT_1: 这个状态要好好解释一下,其实FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到。

FIN_WAIT_2:上面已经详细解释了这种状态,实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对方,我暂时还有点数据需要传送给你,稍后再关闭连接。

TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带 FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。

CLOSING: 这种状态比较特殊,实际情况中应该是很少见,属于一种比较罕见的例外状态。正常情况下,当你发送FIN报文后,按理来说是应该先收到(或同时收到)对方的 ACK报文,再收到对方的FIN报文。但是CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?其实细想一下,也不难得出结论:那就是如果双方几乎在同时close一个SOCKET的话,那么就出现了双方同时发送FIN报文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接。

CLOSE_WAIT: 这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个SOCKET后发送FIN报文给自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以 close这个SOCKET,发送FIN报文给对方,也即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。

LAST_ACK: 这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,也即可以进入到CLOSED可用状态了。

最后有2个问题的回答,我自己分析后的结论(不一定保证100%正确)

1、 为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

2、 为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态?

这是因为:虽然双方都同意关闭连接了,而且握手的4个报文也都协调和发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SEND状态到 ESTABLISH状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK报文会一定被对方收到,因此对方处于 LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的 ACK报文。

最近刚刚搭建起属于自己的博客,心情无比激动,可是一直博客不被各个搜索引擎所索引,甚是头疼。想想在网易、百度这样的网站下面建立个自己的博客,虽然限制很多,但是也是有好处的,好处就是你发表的博文会很快被人搜索到,我想这也跟他们的网站热度有关吧,尽管用户获得的是2级或者3级域名。

于是乎,开始转入SEO的学习。我对这个活现在的理解是,这就是一个细致活,非常考验思考细节的能力和你的耐心。就现在接触的这点内容,我稍作了总结,总结如下:

1. 加强关键字工作,最初级的工作就是如何利用meta标签来开始宣传。以WordPress为例,安装All in one SEO插件就可以很好的解决这个问题。在该插件的设置中,可以对<title>、keyword、description等进行设置,这样就非常的方便了。
2. 加强网站内网页之间的必要联系。这个主要是通过把在文章中的本站标签做成超链接,连接到以该标签分类的页面上的功能,以及边栏或低栏中的最热文章、最新评论等功能,还有文章最后的相关链接来增加网站访问者在该网站的逗留时间,也提高了网站的访问深度。如果你是用的WordPress,你可以尝试安装Keyword Link Plugin插件。
3. 合理的安排布局一些广告或者友情链接,通过他人来提升网站。
4. 最后一条,也是最重要的一条,心无SEO胜似有SEO。什么意思呢?这就是说,作为站长,你的精力应该更多的放在如何增强用户访问你网站的体验上,以及你的网站有多少内容对于大多数人来说有价值,而不是每天总想着应该采取什么措施来提高网站人气。有料才是提升网站人气的关键,SEO只是辅助工作,他只是让用户更容易从你这里找到自己需要的东西。

以上就是我想和大家分享的一点点SEO心得,还请路过的高人能指点一二。

0%