有名的算法
① 大数据十大经典算法之k-means
大数据十大经典算法之k-means
k均值算法基本思想:
K均值算法是基于质心的技术。它以K为输入参数,把n个对象集合分为k个簇,使得簇内的相似度高,簇间的相似度低。
处理流程:
1、为每个聚类确定一个初始聚类中心,这样就有k个初始聚类中心;
2、将样本按照最小距离原则分配到最邻近聚类
3、使用每个聚类中的样本均值作为新的聚类中心
4、重复步骤2直到聚类中心不再变化
5、结束,得到K个聚类
划分聚类方法对数据集进行聚类时的要点:
1、选定某种距离作为数据样本间的相似性度量,通常选择欧氏距离。
2、选择平价聚类性能的准则函数
用误差平方和准则函数来评价聚类性能。
3、相似度的计算分局一个簇中对象的平均值来进行
K均值算法的优点:
如果变量很大,K均值比层次聚类的计算速度较快(如果K很小);
与层次聚类相比,K均值可以得到更紧密的簇,尤其是对于球状簇;
对于大数据集,是可伸缩和高效率的;
算法尝试找出使平方误差函数值最小的k个划分。当结果簇是密集的,而簇与簇之间区别明显的时候,效果较好。
K均值算法缺点:
最后结果受初始值的影响。解决办法是多次尝试取不同的初始值。
可能发生距离簇中心m最近的样本集为空的情况,因此m得不到更新。这是一个必须处理的问题,但我们忽略该问题。
不适合发现非凸面形状的簇,并对噪声和离群点数据较敏感,因为少量的这类数据能够对均值产生较大的影响。
K均值算法的改进:
样本预处理。计算样本对象量量之间的距离,筛掉与其他所有样本那的距离和最大的m个对象。
初始聚类中心的选择。选用簇中位置最靠近中心的对象,这样可以避免孤立点的影响。
K均值算法的变种:
K众数(k-modes)算法,针对分类属性的度量和更新质心的问题而改进。
EM(期望最大化)算法
k-prototype算法
这种算法不适合处理离散型属性,但是对于连续型具有较好的聚类效果。
k均值算法用途:
图像分割;
衡量足球队的水平;
下面给出代码:
#include <iostream>
#include <vector>
//auther archersc
//JLU
namespace CS_LIB
{
using namespace std;
class Kmean
{
public:
//输入格式
//数据数量N 维度D
//以下N行,每行D个数据
istream& loadData(istream& in);
//输出格式
//聚类的数量CN
//中心维度CD
//CN行,每行CD个数据
//数据数量DN
//数据维度DD
//以下DN组,每组的第一行两个数值DB, DDis
//第二行DD个数值
//DB表示改数据属于一类,DDis表示距离改类的中心的距离
ostream& saveData(ostream& out);
//设置中心的数量
void setCenterCount(const size_t count);
size_t getCenterCount() const;
//times最大迭代次数, maxE ,E(t)表示第t次迭代后的平方误差和,当|E(t+1) - E(t)| < maxE时终止
void clustering(size_t times, double maxE);
private:
double calDistance(vector<double>& v1, vector<double>& v2);
private:
vector< vector<double> > m_Data;
vector< vector<double> > m_Center;
vector<double> m_Distance;
vector<size_t> m_DataBelong;
vector<size_t> m_DataBelongCount;
};
}
#include "kmean.h"
#include <ctime>
#include <cmath>
#include <cstdlib>
//auther archersc
//JLU
namespace CS_LIB
{
template<class T>
void swap(T& a, T& b)
{
T c = a;
a = b;
b = c;
}
istream& Kmean::loadData(istream& in)
{
if (!in){
cout << "input error" << endl;
return in;
}
size_t dCount, dDim;
in >> dCount >> dDim;
m_Data.resize(dCount);
m_DataBelong.resize(dCount);
m_Distance.resize(dCount);
for (size_t i = 0; i < dCount; ++i){
m_Data[i].resize(dDim);
for (size_t j = 0; j < dDim; ++j){
in >> m_Data[i][j];
}
}
return in;
}
ostream& Kmean::saveData(ostream& out)
{
if (!out){
cout << "output error" << endl;
return out;
}
out << m_Center.size();
if (m_Center.size() > 0)
out << << m_Center[0].size();
else
out << << 0;
out << endl << endl;
for (size_t i = 0; i < m_Center.size(); ++i){
for (size_t j = 0; j < m_Center[i].size(); ++j){
out << m_Center[i][j] << ;
}
out << endl;
}
out << endl;
out << m_Data.size();
if (m_Data.size() > 0)
out << << m_Data[0].size();
else
out << << 0;
out << endl << endl;
for (size_t i = 0; i < m_Data.size(); ++i){
out << m_DataBelong[i] << << m_Distance[i] << endl;
for (size_t j = 0; j < m_Data[i].size(); ++j){
out << m_Data[i][j] << ;
}
out << endl << endl;
}
return out;
}
void Kmean::setCenterCount(const size_t count)
{
m_Center.resize(count);
m_DataBelongCount.resize(count);
}
size_t Kmean::getCenterCount() const
{
return m_Center.size();
}
void Kmean::clustering(size_t times, double maxE)
{
srand((unsigned int)time(NULL));
//随机从m_Data中选取m_Center.size()个不同的样本点作为初始中心。
size_t *pos = new size_t[m_Data.size()];
size_t i, j, t;
for (i = 0; i < m_Data.size(); ++i){
pos[i] = i;
}
for (i = 0; i < (m_Data.size() << 1); ++i){
size_t s1 = rand() % m_Data.size();
size_t s2 = rand() % m_Data.size();
swap(pos[s1], pos[s2]);
}
for (i = 0; i < m_Center.size(); ++i){
m_Center[i].resize(m_Data[pos[i]].size());
for (j = 0; j < m_Data[pos[i]].size(); ++j){
m_Center[i][j] = m_Data[pos[i]][j];
}
}
delete []pos;
double currE, lastE;
for (t = 0; t < times; ++t){
for (i = 0; i < m_Distance.size(); ++i)
m_Distance[i] = LONG_MAX;
for (i = 0; i < m_DataBelongCount.size(); ++i)
m_DataBelongCount[i] = 0;
currE = 0.0;
for (i = 0; i < m_Data.size(); ++i){
for (j = 0; j < m_Center.size(); ++j){
double dis = calDistance(m_Data[i], m_Center[j]);
if (dis < m_Distance[i]){
m_Distance[i] = dis;
m_DataBelong[i] = j;
}
}
currE += m_Distance[i];
m_DataBelongCount[m_DataBelong[i]]++;
}
cout << currE << endl;
if (t == 0 || fabs(currE - lastE) > maxE)
lastE = currE;
else
break;
for (i = 0; i < m_Center.size(); ++i){
for (j = 0; j < m_Center[i].size(); ++j)
m_Center[i][j] = 0.0;
}
for (i = 0; i < m_DataBelong.size(); ++i){
for (j = 0; j < m_Data[i].size(); ++j){
m_Center[m_DataBelong[i]][j] += m_Data[i][j] / m_DataBelongCount[m_DataBelong[i]];
}
}
}
}
double Kmean::calDistance(vector<double>& v1, vector<double>& v2)
{
double result = 0.0;
for (size_t i = 0; i < v1.size(); ++i){
result += (v1[i] - v2[i]) * (v1[i] - v2[i]);
}
return pow(result, 1.0 / v1.size());
//return sqrt(result);
}
}
#include <iostream>
#include <fstream>
#include "kmean.h"
using namespace std;
using namespace CS_LIB;
int main()
{
ifstream in("in.txt");
ofstream out("out.txt");
Kmean kmean;
kmean.loadData(in);
kmean.setCenterCount(4);
kmean.clustering(1000, 0.000001);
kmean.saveData(out);
return 0;
}
② 有监督和无监督学习都各有哪些有名的算法和深度学习
深度学习
编辑
深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。[1]
深度学习的概念由Hinton等人于2006年提出。基于深度置信网络(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。[1]
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。[2]
③ 数据挖掘的经典算法有哪些
1. C4.5
C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:
1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
2) 在树构造过程中进行剪枝;
3) 能够完成对连续属性的离散化处理;
4) 能够对不完整数据进行处理。
2. The k-means algorithm 即K-Means算法
k-means algorithm算法是一个聚类算法,把n的对象根据他们的属性分为k个分割,k < n。它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。它假设对象属性来自于空间向量,并且目标是使各个群组内部的均 方误差总和最小。
3. Support vector machines
支持向量机,英文为Support Vector Machine,简称SV机(论文中一般简称SVM)。它是一种监督式学习的方法,它广泛的应用于统计分类以及回归分析中。支持向量机将向量映射到一个更 高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。分隔超平面使两个平行超平面的距离最大化。
4. The Apriori algorithm
Apriori算法,它是一种最具影响力的挖掘布尔关联规则频繁项集的算法。它的算法核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。
关于数据挖掘的经典算法有哪些,该如何下手的内容,青藤小编就和您分享到这里了。如果您对大数据工程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于数据分析师、大数据工程师的技巧及素材等内容,可以点击本站的其他文章进行学习。
④ 现在对数据加密都有那些算法,有名字就行.....谢谢
MD5算法
对称/非对称密钥加密算法
对称密钥:DES、TripleDES算法
对称密钥:RC算法
非对称密钥:RSA算法
⑤ 请列举一些经典算法和近代智能算法,只列出名字也可以
近代智能算法:人工神经网络,遗传算法,模拟退火,禁忌搜索,蚁群算法,粒子群算法,变邻域搜索,鱼群算法等等。
经典算法:动态规划法,分支定界法,贪婪法,递推法,回溯法,归纳法,递归法,穷举搜索法,分治法,迭代法等等。
楼主,给我加分吧,多谢了。
⑥ 深圳SEO历史上谷歌Google推出了哪些算法
马加比更新(Maccabees Update)
上线时间:2017年12月12号
受影响网站:刻意为各种关键词组合建立大量着陆页,比如“地名A+服务a“、”地名A+服务b”、“地名B+服务a”等等,为了覆盖这些关键词,制造大量页面,质量通常不会高。
马加比这个名字是 SERoundtable.com的Barry Schwartz起的,不是Google官方给的名字,因为Google貌似不会再公布算法更新了,更不要说起名字了。Barry Schwartz起这个名字是因为这次更新发生在犹太人的光明节期间,光明节是纪念马加比家族的。Google在某种程度上确认了这次更新,不过只是说,在这段时间上线了几个小更新,是提高相关性日常工作的一部分。
移动优先索引(Mobile First Index)
上线时间:2017年10月中旬
受影响网站:移动优先索引指的是Google优先索引网站移动版本,并作为排名依据。以前都是索引PC版本并计算排名的。移动优先索引Google在2016年底就开始宣传了,但一直没有推出,估计影响面比较大。2017年10月中旬左右,Google透露一小部分网站已经开始转为移动优先索引。
猫头鹰更新(Project Owl)
公布时间:2017年4月25号
受影响网站:虚假新闻内容,如编造的假新闻,极度偏见、煽动仇恨,谣言等。参见以前写的关于猫头鹰算法的帖子。
弗雷德更新(Fred Update)
上线时间:2017年3月8号
受影响网站:广告过多的低质量内容站,这类网站之所以存在,就是为了放 Adsense之类的广告,并没有提供给用户更多价值。
为什么叫Fred更新呢?因为SEO们问Google员工Gary Illyes这次更新叫啥名字时,Gary Illyes随便给了个名字,貌似是他养的鱼的名字,为什么想起这条鱼的名字呢?因为Gary Illyes刚给这条鱼拍了张照片,就是右边这张。Gary Illyes说,以后除非另行说明,不然所有更新都叫Fred了。就这么任性,就这么草率。
移动页面干扰插页惩罚算法(Intrusive Interstitial Penalty)
上线时间:2017年1月10号
受影响网站:这个惩罚算法针对移动页面:挡住主题内容的弹窗,干扰用户访问的大幅插页式广告,用户需要关掉插页才能看到页面实际内容,有时候需要等5-10秒才能关掉。不过据统计,被惩罚的网站并不多。
企鹅更新4.0(Penguin 4.0)
上线时间:2016年9月23号,10月12号左右完成
受影响网站:和以前的企鹅更新一样,受影响的是有低质量外链的网站。Penguin 4.0是最后一次企鹅系列算法更新了,因为企鹅算法以后成为核心排名算法的一部分,实时更新。
另外,以前的企鹅更新是惩罚网站,4.0是不计算低质量外链,降低负面SEO的可能性。
移动友好算法2(Mobile Friendly Algorithm 2)
上线时间:2016年4月21号
受影响网站:2015年4月21号第一次Google移动友好算法的一次更新,使更多移动友好页面能被用户看到。
APP安装插页广告惩罚(APP Install Interstitial Penalty)
上线时间:2015年11月2号
受影响网站:页面会弹出大幅、遮挡主体内容的插页,要求用户下载APP,这种页面被认为不移动友好,在移动搜索中会被降低排名。页面可以建议用户下载APP,但广告不要大幅甚至全屏,做成顶部banner之类的是没问题的。
RankBrain
上线时间:消息公布时间是2015年10月26号,通过 Bloomberg的一篇文章。算法上线时间应该是数月前,2015年上半年。
RankBrain严格说来不算是排名算法,而是以人工智能为基础的深入理解用户查询词的系统,尤其是长尾的、不常出现的查询。2015年刚上线时,15%查询词经过RankBrain处理,可能是效果很好,2016年开始所有查询词都经过RankBrain处理。RankBrain的例子参考以前的帖子。
被黑网站删除算法(Hacked Spam)
上线时间:2015年10月
受影响网站:被黑的网站,包括病毒、引导流量到色情、侵权产品、非法药物网站等。这些页面会从搜索结果这直接删除,所以有时候搜索结果页面可能只有8、9个结果。以前通常是在搜索结果中标注这个页面可能被黑了,现在直接删除了。5%左右的查询受到影响。检查自己网站是否被黑还是挺重要的。
熊猫算法4.2(Panda Update 4.2)
上线时间:2015年7月18号
自2011年推出以来,熊猫算法经历了近30次更新,Panda 4.2是最后一次,几个月才完成。这之后,熊猫算法成为Google核心算法的一部分,虽然还会有更新,但不再单独给名字了。
质量更新(Quality Update)
上线时间:2015年5月1号左右
受影响网站:内容质量低的页面,但不是熊猫算法。Google虽然确认了这次更新,但表示,这只是Google经常做的算法更新之一,调整了评估内容质量的方法,没什么特殊的。
移动友好算法(Mobile Friendly Algorithm)
上线时间:2015年4月21号
受影响网站:在移动搜索中给予移动友好的网站排名提升。也被称为Mobilegeddon – 天劫算法。
所谓移动友好,其实没那么复杂,用户能正常在手机访问页面就行了,所以字体不要太小,字距行距不要太小,用户不需要左右拉屏幕,手指头点击链接时不会点错地方,速度够快等等。自己用手机看看自己网站就知道是否移动友好了。也可以参考一下本博客移动SEO的帖子。
移动友好算法是针对页面级别的,需要页面重新抓取、索引后才能判断是否移动友好。所以算法本身4月底上线,但受影响的页面可能不是马上见到效果。
Google曾经预报说移动友好算法比熊猫和企鹅更新的影响还要大,但由于Google很早就提醒SEO们移动友好的重要性,很多网站已经做了移动优化,所以这次更新没有预计的那么有震撼性。
HTTPS更新(HTTPS Update)
上线时间:2014年8月7号
受影响网站:使用了https的页面排名会稍微提升一点。Google声明这只是个很小的排名因素,但事实上对网站采用https起到了很大推动作用。
鸽子更新(Pigeon Update)
上线时间:2014年7月24号
受影响网站:鸽子更新是本地搜索算法的一次更新,改进了距离和定位排名算法参数。这个名字不是Google起的,是SearchEngineLand给起的。之所以取“鸽子”这个名字是因为,鸽子会回家,有本地意识。
蜂鸟更新(Hummingbird Algorithm)
上线时间:2013年8月
受影响网站:蜂鸟更新是一次排名算法的重写,改进对查询词真实意图的理解,更重要的是未来的扩展性。虽然代码是完全重写的,但排名因素及参数大概变化不多,所以上线后基本上SEO行业没有人注意到。
发薪日贷款算法(Payday Loan Algorithm)
上线时间:2013年6月13号
受影响网站:针对垃圾和黑帽手法盛行的一些行业的查询词重点打击,如payday loan(发薪日贷款,一种小额、短期、利息高的贷款,一般下个发薪日就还上)、色情等。这些行业常用的作弊手法也经常是非法的。
2014年5月16号,发薪日贷款算法2.0上线,2014年6月12号,算法3.0上线。
完全匹配域名惩罚(EMD Update)
上线时间:2012年9月29号
受影响网站:低质量的完全匹配域名(exact match domain)网站,也就是域名与目标关键词完全一样。URL中包含关键词对排名有一些帮助,所以不少SEO用目标关键词注册域名。这种域名确实有过好处,但现在内容不行的话可能被惩罚。
DMCA惩罚算法(DMCA Takedown Penalty)
上线时间:2012年8月13号
受影响网站:DMCA,Digital Millennium Copyright Act,数字千年版权法案,根据这个法案,版权作品被侵权,版权所有人可以向服务商要求删除侵权内容,服务商可以是主机商,域名注册商,ISP,以及搜索引擎。DMCA算法就是对收到很多侵权投诉删除要求的网站,Google给予排名惩罚。
DMCA Takedown Penalty又被称为pirate update,海盗算法。
2014年10月21号,DMCA惩罚算法上线2.0版本,很多BT种子网站、视频网站被大幅惩罚。
企鹅更新(Penguin Update)
上线时间:2012年4月24号
受影响网站:Google的官方帖子声明打击的是违反Google质量指南的垃圾网站,后续排名变化的分析表明主要受惩罚的是为获得排名制造大量垃圾外链、低质量外链的网站。企鹅算法1.0影响了3.1%英文查询,3%左右的中文、德文等查询。
企鹅算法和熊猫算法是两个最着名的Google惩罚性算法,受到影响的网站范围大,据调查,60%的SEO反映自己网站被Penguin算法惩罚了。
企鹅对今天的SEO方法,尤其是外链建设方法,产生了很大影响。不仅制造外链要非常小心,大部分以前常用的方法现在都被Google明确警告可能会被惩罚,现在SEO们更头疼的是怎样删除低质量外链和以前发的垃圾外链,这比制造外链还困难。
页面布局惩罚算法(Page Layout Algorithm)
上线时间:2012年1月
受影响网站:第一屏显示过多广告的页面被降低排名。因此也常被称为Ads Above The Fold(第一屏广告)算法。
1%的查询词受影响。被惩罚的网站修改页面布局后,Google重新抓取、索引,如果页面用户体验已经改善,就会自动恢复。
2012年10月9号,Page Layout 2.0,2014年2月6号,Page Layout 3.0分别上线。
新鲜度更新(Freshness Update)
上线时间:2011年11月3号
受影响网站:Google官方帖子明确表示:更新鲜的内容会被更多展示在搜索结果中,尤其是最近的事件或热门话题、定期举办或发生的事件(如奥运会之类)、经常会更新的信息(如最新产品)。影响了35%的查询。
当然,这只适用于更需要新鲜信息的查询,有的查询并没有太大实效性,如菜谱,就不必太担心。
熊猫更新(Panda Update)
上线时间:2011年2月24号
受影响网站:内容低质量的页面排名被降低,如转载、抄袭的内容,大量用户发的垃圾留言、主体内容太少、关键词堆积等等。
熊猫更新打击面大,影响大致12的查询结果,对现今SEO方法产生了重要影响。Panda算法最初是后台计算,集中上线,从2011年上线到2015年融入到核心算法中,经历了近30次更新。
熊猫算法更新最初被SearchEngineLand命名为Farmers Update,内容农场更新,后来Google自己公布了算法代码是Panda,和咱们的熊猫没关系,是Google内部开发此算法的主要工程师之一的名字叫Panda。
采集惩罚算法(Scraper Algorithm)
上线时间:2011年1月28号
受影响网站:Matt Cutts的博客帖子公布的这个算法,采集、抄袭的内容页面被惩罚,奖励原出处。2%查询受影响。
负面评价处理(Negative Review)
上线时间:2010年12月1号
受影响网站:这个算法是由于 Google的人读到纽约时报的一篇报道,一位顾客在某商家的体验很差,所以上网写了负面评论,但负面评论却给商家带来更多链接,链接又导致商家网站排名上升,带来更多生意。Google很快采取措施,检测这类负面评论,降低相应商家排名。
咖啡因更新(Caffeine)
上线时间:2010年6月1号
受影响网站:咖啡因更新是一次索引系统代码的重写,新系统比旧系统50%的内容更新,索引数量也更大,更有扩展性,速度更快。原来的索引系统是分层的,有的内容(重要内容)抓取索引更快,有的内容就得等比较长时间。咖啡因系统把网络分成小区块,持续更新索引库,发现新页面,或老页面上的新内容,直接进入索引库。
Mayday Update
上线时间:2010年4月28号-5月3号
受影响网站:根据Matt Cutts的视频说明,Mayday更新主要针对长尾查询词,算法会寻找哪些网站的页面质量更符合要求。当然这种说明说了也是和没说差不多。SEO们的观察是,受影响的主要是大型网站上离首页点击距离比较远、没什么外链、内容没有什么附加价值的页面 — 很多电商网站的产品页面就是这样的,内容是供应商给的,也不大可能有外链。
Mayday指的是发生在5月份,不是求救的那个Mayday。
页面速度因素(Page Speed Ranking Factor)
上线时间:2010年4月
受影响网站:顾名思义,打开速度快的页面排名会给予提升,虽然幅度不大。速度的测量包括蜘蛛抓取时页面的反应速度和工具条记录的用户打开页面时间。
2013年6月,Matt Cutts暗示,速度特别慢的页面可能会被惩罚,不过也不用特别担心,除非页面速度慢到一定程度。
Vince/品牌更新(Vince/Brand Update)
上线时间:2009年2月1号
受影响网站:大品牌网站页面在很多查询结果中(都是非长尾的大词)排名显着提高,所以最初被称为品牌更新。以前帖子写过Vince/品牌更新。
Matt Cutts后来解释,这次更新其实其实只是很小的变化,负责的Google工程师名字叫Vince,所以Google内部代码名称是Vince。这个变化并不是刻意针对大品牌,而是提升信任度在排名中的作用,而信任度、质量、链接这些方面,大品牌更有优势,所以表现出来的效果好像是大品牌页面被提升。
Dewey Update
上线时间:2008年3月
受影响网站:不明,SEO行业观察到排名剧烈变动,但没有找到明显规律。Dewey这个名字的来源是因为Matt Cutts在 webmasterworld论坛里征求这次算法更新的反馈意见,站长需要在反馈中标明Dewey这个词,可能是Google内部的识别代码。
大爸爸(Big Daddy)
上线时间:2005年12月-2006年3月
大爸爸是一次Google算法基础架构的重写,解决了网址规范化、301/302转向等技术问题。大爸爸是一个数据中心一个数据中心更新的,不是同时上线的。
大爸爸这名字怎么来的?据Matt Cutts帖子说,2005年12月的Pubcon会议上,Matt Cutts征求大家对这次更新的反馈,Matt Cutts知道更新已经在一个数据中心上线了,所以问大家有什么好名字来指这个数据中心,一位站长说,叫BigDaddy吧,他孩子就这么叫他的,Matt Cutts觉得挺好,就叫这个名字了。
我当年开始写SEO每天一贴就是大爸爸完成更新那段时间,第3篇帖子就是介绍大爸爸更新情况。Robin同志给我的第一个留言就在那篇帖子上,沙发,后来才有了点石,和很多中国SEO行业的故事。
Jagger Update
上线时间:2005年9-11月
受影响网站:Jagger分3个阶段上线,所以有Jagger1, Jagger2, Jagger3的名字。Jagger更新主要打击低质量链接,如交换链接、链接农场、买卖链接等。
早期的Google算法更新基本上都是webmasterworld命名的,Jagger也是webmasterworld创始人Brett Tabke起的名字,下面提到的更新名称大多是他们命名的。但貌似Jagger是最后一个,后来的名字大多是Google自己公布的了。
Bourbon Update
上线时间:2005年5月
受影响网站:早期Google更新往往没有官方信息,所以针对的是哪些网站经常不明,只是监测到排名有比较大变化。Bourbon一般认为与网址规范化有关。
Bourbon这个名字也是webmasterworld起的,原因是webmasterworld即将在新奥尔良举行一个行业会议,Bourbon是新奥尔良的一条着名老街道。
Allegra Update
上线时间:2005年2月
受影响网站:不明确,或者说范围广泛,包括低质量外链、关键词堆积、过度优化等。
公布支持nofollow
上线时间:2005年1月
现在SEO对nofollow肯定都很熟悉了,包括网络,所有主流搜索引擎都支持nofollow。还不知道的请参考以前关于nofollow的帖子。
Brandy Update
上线时间:2004年2月
受影响网站:链接锚文字作用提高,链接需要来自好邻居的概念第一次被提出来。索引库增长,抓取索引了很多新的链接,一些网站获得了更高权威度。
弗罗里达更新(Florida Update)
上线时间:2003年11月
受影响网站:弗罗里达更新是早期最着名的Google算法更新,影响面大,受影响的以商业意图明显的词为主,一些靠搜索流量的小公司倒闭,有的SEO公司因此陷入困境,因为客户网站排名下降,不续费了。弗罗里达更新的后果大到,Google曾经承诺,以后不在年底上线这么大的更新了,以免剧烈影响很多商家的圣诞季销售业绩。
Florida Update打击了一系列不自然的优化方法,包括隐藏文字、关键词堆积、链接农场、大量交换链接、过度优化。Florida彻底改变了SEO,可以说是现在SEO方法的起点。
Florida也是webmasterworld命名的,因为他们的命名方法该排到字母F打头了(为什么到了F打头,见下面Boston更新说明),而第二年2月他们要在弗罗里达的奥兰多举行Pubcon大会,所以就用了Florida。
Update Fritz
上线时间:2003年7月
Fritz更新是Google转为每天持续小幅更新索引的开始,这种更新方法又被称为everflux。
Update Fritz这个名字是Matt Cutts在他2006年的博客帖子里提到的Google内部名称,不是webmasterworld命名系列里的。
Esmeralda Update
上线时间:2003年6月1号
这是早期每个月发生一次的Google Dance的最后一次。这次更新之后,Google算法更新改为小幅、持续性的,当然这是相对Google Dance每个月一次、持续数天、排名剧烈波动而言。准确地说,Google Dance是索引更新,不是算法更新。Esmeralda更新之后,Google就不再Dance了。
Dominic Update
上线时间:2003年5月1号
早期Google Dance的一次。Dominic也是webmasterworld命名,名称来源于参加Boston Pubcon大会时大家常去的一家披萨饭馆。
Cassandra Update
上线时间:2003年4月1号
Brett Tabke和webmasterworld第一次特意给Google更新起名字。既然第一个名字是Boston,是个男名,这次应该是C打头的女名,大家投票,Cassandra胜出,没有其它特别意义。
Boston Update
上线时间:2003年2月1号
2003年波士顿举行的SES大会上,Google员工公布了这次更新,为了和其它Google Dance以示区别,取名Boston。
webmasterworld的创始人Brett Tabke就想,给更新取名字是个挺好的主意,所以就效仿台风的命名方法给Google更新取名,按字母排序,男名女名间隔,也得到了Google的首肯。所以早期的Google算法更新大多是webmasterworld命名的。
Google Dance
早期Google索引库每个月更新一次,是线下计算,然后集中上线。由于数据量大,需要一个数据中心一个数据中心地上线,不是同时上线的。在更新期间,用户这分钟访问的是一个数据中心,下一分钟可能访问的是另一个数据中心,看到的搜索结果可能有很大差别,因此被称为Google Dance。
从2000年7月开始,webmasterworld每个月开一个新帖,讨论每一次Google Dance情况,一直到2003年2月的Boston更新第一次有了名称,以前的Google Dance都是没有名字的。这里是当年Google Dance更新讨论的大列表。
⑦ java中常用的算法,有哪些告诉我名字就可以了。越多越好
插入排序
选择排序
冒泡排序
快速排序
归并排序
希尔排序
堆排序
桶式排序
基数排序
前面几个常用点吧
不过我这种低级程序员
都用的不多
哎
⑧ 几种加密算法在java中的应用
简单的Java加密算法有:
第一种. BASE
Base是网络上最常见的用于传输Bit字节代码的编码方式之一,大家可以查看RFC~RFC,上面有MIME的详细规范。Base编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base来将一个较长的唯一标识符(一般为-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
第二种. MD
MD即Message-Digest Algorithm (信息-摘要算法),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD的前身有MD、MD和MD。广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD后都能生成唯一的MD值。好比现在的ISO校验,都是MD校验。怎么用?当然是把ISO经过MD后产生MD的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD的串。就是用来验证文件是否一致的。
MD算法具有以下特点:
压缩性:任意长度的数据,算出的MD值长度都是固定的。
容易计算:从原数据计算出MD值很容易。
抗修改性:对原数据进行任何改动,哪怕只修改个字节,所得到的MD值都有很大区别。
弱抗碰撞:已知原数据和其MD值,想找到一个具有相同MD值的数据(即伪造数据)是非常困难的。
强抗碰撞:想找到两个不同的数据,使它们具有相同的MD值,是非常困难的。
MD的作用是让大容量信息在用数字签名软件签署私人密钥前被”压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD以外,其中比较有名的还有sha-、RIPEMD以及Haval等。
第三种.SHA
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于^位的消息,SHA会产生一个位的消息摘要。该算法经过加密专家多年来的发展和改进已日益完善,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说是对明文的一种“指纹”或是“摘要”所以对散列值的数字签名就可以视为对此明文的数字签名。
SHA-与MD的比较
因为二者均由MD导出,SHA-和MD彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:
对强行攻击的安全性:最显着和最重要的区别是SHA-摘要比MD摘要长 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD是^数量级的操作,而对SHA-则是^数量级的操作。这样,SHA-对强行攻击有更大的强度。
对密码分析的安全性:由于MD的设计,易受密码分析的攻击,SHA-显得不易受这样的攻击。
速度:在相同的硬件上,SHA-的运行速度比MD慢。
第四种.HMAC
HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等。
⑨ C语言有哪些有名的算法呢希望可以详细说明下,非常感谢。
排序算法:冒泡排序,选择排序,插入排序,希尔排序,堆排序,快速排序(这个比较重要)
搜索:深度优先,广度优先
图:Dijkstra算法是典型的单源最短路径算法
树:二叉树
我就知道这些了,应该算比较基本的算法,也比较有名。