??xml version="1.0" encoding="utf-8" standalone="yes"?> 搜烦引擎营销QSEMQ英文全UCؓSearch Engine MarketingQ意指通过搜烦引擎q行服务和品的营销。搜索引擎营销又主要分ZU:搜烦引擎优化QSEOQ和付费点击QPPCQPay-Per-ClickQ。搜索引擎优化(SEOQ指通过优化|站和页面ƈ让它们在搜烦l果的页面中展示Q而付费点击(PPCQ指通过购买搜烦引擎的点d用户带到自己的网站。(通常Q这些点L自搜索结果页面中?#8220;赞助商链?#8221;Q译注:昄不适用于百度)?/p>
2. 反向链接QBacklinkQ?/strong> 反向链接QBacklinkQ又UCؓ“回指链接”“入链”?#8220;易链?#8221;Q指从其他网站指向你的网站的一个超U链接。反向链接之所以对SEO异常重要Q是因ؓ它们直接影响一个网늚面{QPageRankQ,以及q个面在搜索结果中的排名?/p>
3. 面{QPageRankQ?/strong> 面{Q?PageRankQ?是Goolgle用来评估一个页面相对于其他面的重要性的一个算法规则。这个算法规则最基本的意思就是说Q如果A面有一个链接指向B面Q那可以看作是A面对B面的一U信L推荐。所以,如果一个页面的反向链接多Q再Ҏq些链接的h值加权越高,那搜索引擎就会判断这L面更ؓ重要Q页面等U(PageRankQ也p高?/p>
4. 链接诱饵Q饵链)QLinkbaitQ?/strong> 链接诱饵QLinkbaitQ,思义q是一个网站或一个博客上Z可能多地吸引反向链接(目的是提高网站的PR|而存在的一D内宏V通常Q这些做늚内容为文字内容,但也可以是一D视频、一张图片、一个测验或其他的热门的内容。最l典的诱饵内容的例子?#8220;十大QTop 10Q?#8221;Q因L内容在一些社交网站很Ҏ行h成ؓ热门话题Q译注:q个话题貌似已经臭街了)?/p>
5. 互链车间或互链作坊(Link farmQ?/strong> 互链工厂或互链作坊(Link farmQ是指很多网站(通常数量很大Qؓ了提高组成一个类DR间或作坊式的团体Q通过彼此的互盔R接来提高团体每一个的|站的页面评U的手段。早期,q种Ҏ很有用,但现在已l成ZU不ȝ作弊手段Qƈ可能会收到惩|)?/p>
6. 锚文本(Anchor textQ?/strong> 锚文本(Anchor textQ在反向链接中是指一个页面中可点ȝ文本Q而其中的关键词对搜烦引擎优化QSEOQ有很大的帮助,因ؓGoogle会将q些关键词和你的内容兌h?/p>
7. 链接属?NoFollow Nofollow是网站管理员使用的一个链接属性,其目的是告诉搜烦引擎他们q不是ؓ该链接所指向的网站投。这U链接也可能是网站用戯己创造的内容Q比如博客评Z的链接)Q或者是一个付费交易的链接Q比如广告或赞助商的链接Q。当Google识别到这些反向链接的NoFollow属性后Q基本就不会在页面评U和搜烦l果排名的算法中这些链接的贡献计算在内了?/p>
8. 链接修饰QLink SculptingQ?/strong> 链接修饰QLink SculptingQ是指网站管理员对网站上其他|站的反向链接进行属性设|。比如,理员给链接dNofollow属性,q可以让理员决定利用自q|站为具体某个网站提高页面评U,或者不帮助具体某个|站提高|页评。不q,现在q种做法的作用已l微乎其微,因ؓGoogle已经军_要用自己的算法来军_怎么处理链接的Nofollow属性?/p>
9. 面标题QTitle TagQ?/strong> 面标题QTitle TagQ,思义是指一个页面的标题中,q也是Google搜烦法中最重要的一个参考。理ZQ你的页面标题要独一无二q尽可能多地包括面内容中的关键词。你在浏览网|可以从浏览器最上方看到一个网늚标题?/p>
10. 元标{(Meta TagsQ?/strong> 元标{(Meta TagsQ和面标题一般,主要用于为搜索引擎提供更多关于你面内容的信息。元标签位于HTML代码的头部,q有是寚w眼睛的访客是不可见的?/p>
11. 搜烦法QSearch AlgorithmQ?/strong> Google的搜索算法是Zl每一ơ搜索请求找到最为相关的|站和页面而设定。这个算法考量的因素超q?00U(h自称Q,其中包括面{、标题、元标签、网站内容,以及域名的年龄等?/p>
12. 搜烦l果面QSERPQ?/strong> 搜烦l果面QSERPQ的英文全称为Search Engine Results Page.基本上,q就是你qx在Google键入关键词回车后的页面了。你的网站从q个面得到的流量取决于你的|站在搜索结果中的排名等U?/p>
13. 沙盒QSandboxQ?/strong> Google除了所有网站的索引之外Q还有一个单独的索引沙盒Q那里面是新q发现和收录的网站。当你的|站存在q个沙盒之中Ӟ它就不会在一般的搜烦l果中出玎ͼ而只有当Google认了你的网站是合法的,q才会将其从沙盒中移入所有网站的索引?/p>
14. 关键词密度(Keyword DensityQ?/strong> 如何判断一个特定页面的关键词密度?你只要将一个关键词使用的次数除以页面的总词数就可以了。关键词密度q去是搜索引擎优化中非常重要的一个因素,因ؓ早期的搜索算法对此十分看重,但现在已l时q境q了?/p>
15.关键词堆U(Keyword StuffingQ?/strong> 因ؓ早期搜烦法对关键词密度非常看重Q站长们侉K过使用人工堆积关键词的手法来作弊和蒙骗搜烦引擎。这U手法就叫做关键词堆U,当然现在已经没用了,而且你还可能会因此受到惩|?/p>
16. 障眼法(CloakingQ?/strong> 障眼法(CloakingQ是指利用代码在同一个页面上让机器h和真人看C一L内容。其目的是ؓ了让面通过关键词而提升页面评U,而真正的目的是推销和出售各U不相关的品或服务。当Ӟq也是一U作弊的手段Q有很大可能会受到搜索引擎惩|,甚至剔除?/p>
17. |络爬虫或网l蜘蛛(Web CrawlerQ?/strong> |络爬虫或网l蜘蛛(Web CrawlerQ也UCؓ爬虫或蜘蛛,代表搜烦引擎在网路上q行览Q目的是发现新的链接和页面,q是q行索引的第一个环节?/p>
18. 复制内容QDuplicate ContentQ?/strong> 复制内容QDuplicate ContentQ也?#8220;重复内容”Q通常是指一个页面在引用了站内或站外的大D实质内容,或者是存在完全相同和极其相似的情况Q而这也是一个网站应该尽量避免发生的情况Q否则很Ҏ让你的网站受到惩|?/p>
19. 标准链接QCanonical URLQ?/strong> 标准链接QCanonical URLQ是指一个网늚链接要符合规范和标准?/p>
20. 机器人协议(Robots.txtQ?/strong> 机器人协议(Robots.txtQ不q是一个TXT文本文gQ存在于你域名根目录之下Q作用是网站的目录l构信息告诉爬虫和蜘蛛,q制其对特定文件夹和内容的讉KQ或者是完全它们关在门外?/p>
英文链接Q?a target="_blank">20 SEO Terms You Should Know
]]>
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection接口
Collection是最基本的集合接口,一个Collection代表一lObjectQ即Collection的元素(ElementsQ。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接承自Collection的类QJava SDK提供的类都是l承自Collection?#8220;子接?#8221;如List和Set?br />
所有实现Collection接口的类都必L供两个标准的构造函敎ͼ无参数的构造函数用于创Z个空的CollectionQ有一个Collection参数的构造函数用于创Z个新的CollectionQ这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection?br />
如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个P代子Q用该q代子即可逐一讉KCollection中每一个元素。典型的用法如下Q?br />
Iterator it = collection.iterator(); // 获得一个P代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元?br />
}
由Collection接口z的两个接口是List和Set?br />
List接口
List是有序的CollectionQ用此接口能够_的控制每个元素插入的位置。用戯够用烦引(元素在List中的位置Q类g数组下标Q来讉KList中的元素Q这cM于Java的数l?br />
和下面要提到的Set不同QList允许有相同的元素?br />
除了hCollection接口必备的iterator()Ҏ外,Listq提供一个listIterator()ҎQ返回一个ListIterator接口Q和标准的Iterator接口相比QListIterator多了一些add()之类的方法,允许dQ删除,讑֮元素Q还能向前或向后遍历?br />
实现List接口的常用类有LinkedListQArrayListQVector和Stack?br />
LinkedListc?br />
LinkedList实现了List接口Q允许null元素。此外LinkedList提供额外的getQremoveQinsertҎ在LinkedList的首部或N。这些操作LinkedList可被用作堆栈QstackQ,队列QqueueQ或双向队列QdequeQ?br />
注意LinkedList没有同步Ҏ。如果多个线E同时访问一个ListQ则必须自己实现讉K同步。一U解x法是在创建List时构造一个同步的ListQ?br />
List list = Collections.synchronizedList(new LinkedList(...));
ArrayListc?br />
ArrayList实现了可变大的数组。它允许所有元素,包括null。ArrayList没有同步?br />
sizeQisEmptyQgetQsetҎq行旉为常数。但是addҎ开销为分摊的常数Q添加n个元素需要O(n)的时间。其他的Ҏq行旉为线性?br />
每个ArrayList实例都有一个容量(CapacityQ,即用于存储元素的数组的大。这个容量可随着不断d新元素而自动增加,但是增长法q没有定义。当需要插入大量元素时Q在插入前可以调用ensureCapacityҎ来增加ArrayList的容量以提高插入效率?br />
和LinkedList一PArrayList也是非同步的QunsynchronizedQ?br />
Vectorc?br />
Vector非常cMArrayListQ但是Vector是同步的。由Vector创徏的IteratorQ虽然和ArrayList创徏的Iterator是同一接口Q但是,因ؓVector是同步的Q当一个Iterator被创且正在被用,另一个线E改变了Vector的状态(例如Q添加或删除了一些元素)Q这时调用Iterator的方法时抛出ConcurrentModificationExceptionQ因此必L莯异常?br />
Stack c?br />
Stackl承自VectorQ实C个后q先出的堆栈。Stack提供5个额外的Ҏ使得Vector得以被当作堆栈用。基本的push和popҎQ还有peekҎ得到栈顶的元素,emptyҎ试堆栈是否为空QsearchҎ一个元素在堆栈中的位置。Stack刚创建后是空栈?br />
Set接口
Set是一U不包含重复的元素的CollectionQ即L的两个元素e1和e2都有e1.equals(e2)=falseQSet最多有一个null元素?br />
很明显,Set的构造函数有一个约束条Ӟ传入的Collection参数不能包含重复的元素?br />
h意:必须心操作可变对象QMutable ObjectQ。如果一个Set中的可变元素改变了自w状态导致Object.equals(Object)=true导致一些问题?br />
Map接口
h意,Map没有l承Collection接口QMap提供key到value的映。一个Map中不能包含相同的keyQ每个key只能映射一个value。Map接口提供3U集合的视图QMap的内容可以被当作一lkey集合Q一lvalue集合Q或者一lkey-value映射?br />
Hashtablec?br />
Hashtablel承Map接口Q实C个key-value映射的哈希表。Q何非I(non-nullQ的对象都可作ؓkey或者value?br />
d数据使用put(key, value)Q取出数据用get(key)Q这两个基本操作的时间开销为常数?br />
Hashtable通过initial capacity和load factor两个参数调整性能。通常~省的load factor 0.75较好地实C旉和空间的均衡。增大load factor可以节省I间但相应的查找旉增大,q会影响像get和putq样的操作?br />
使用Hashtable的简单示例如下,?Q?Q?攑ֈHashtable中,他们的key分别?#8221;one”Q?#8221;two”Q?#8221;three”Q?br />
Hashtable numbers = new Hashtable();
numbers.put(“one”, new Integer(1));
numbers.put(“two”, new Integer(2));
numbers.put(“three”, new Integer(3));
要取Z个数Q比?Q用相应的keyQ?br />
Integer n = (Integer)numbers.get(“two”);
System.out.println(“two = ” + n);
׃作ؓkey的对象将通过计算其散列函数来定与之对应的value的位|,因此M作ؓkey的对象都必须实现hashCode和equalsҎ。hashCode和equalsҎl承自根cObjectQ如果你用自定义的类当作key的话Q要相当心Q按照散列函数的定义Q如果两个对象相同,即obj1.equals(obj2)=trueQ则它们的hashCode必须相同Q但如果两个对象不同Q则它们的hashCode不一定不同,如果两个不同对象的hashCode相同Q这U现象称为冲H,冲突会导致操作哈希表的时间开销增大Q所以尽量定义好的hashCode()ҎQ能加快哈希表的操作?br />
如果相同的对象有不同的hashCodeQ对哈希表的操作会出现意想不到的l果Q期待的getҎq回nullQ,要避免这U问题,只需要牢C条:要同时复写equalsҎ和hashCodeҎQ而不要只写其中一个?br />
Hashtable是同步的?br />
HashMapc?br />
HashMap和HashtablecMQ不同之处在于HashMap是非同步的,q且允许nullQ即null value和null key。,但是HashMap视ؓCollectionӞvalues()Ҏ可返回CollectionQ,其P代子操作旉开销和HashMap的容量成比例。因此,如果q代操作的性能相当重要的话Q不要将HashMap的初始化定w讑־q高Q或者load factorq低?br />
WeakHashMapc?br />
WeakHashMap是一U改q的HashMapQ它对key实行“弱引?#8221;Q如果一个key不再被外部所引用Q那么该key可以被GC回收?br />
ȝ
如果涉及到堆栈,队列{操作,应该考虑用ListQ对于需要快速插入,删除元素Q应该用LinkedListQ如果需要快速随问元素,应该使用ArrayList?br />
如果E序在单U程环境中,或者访问仅仅在一个线E中q行Q考虑非同步的c,其效率较高,如果多个U程可能同时操作一个类Q应该用同步的cR?br />
要特别注意对哈希表的操作Q作为key的对象要正确复写equals和hashCodeҎ?br />
量q回接口而非实际的类型,如返回List而非ArrayListQ这样如果以后需要将ArrayList换成LinkedListӞ客户端代码不用改变。这是针对抽象~程?br />
同步?br />
Vector是同步的。这个类中的一些方法保证了Vector中的对象是线E安全的。而ArrayList则是异步的,因此ArrayList中的对象q不是线E安全的。因为同步的要求会媄响执行的效率Q所以如果你不需要线E安全的集合那么使用ArrayList是一个很好的选择Q这样可以避免由于同步带来的不必要的性能开销?br />
数据增长
从内部实现机制来讲ArrayList和Vector都是使用数组(Array)来控刉合中的对象。当你向q两U类型中增加元素的时候,如果元素的数目超Z内部数组目前的长度它们都需要扩展内部数l的长度QVector~省情况下自动增长原来一倍的数组长度QArrayList是原来的50%,所以最后你获得的这个集合所占的I间L比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用Vector有一些优势,因ؓ你可以通过讄集合的初始化大小来避免不必要的资源开销?br />
使用模式
在ArrayList和Vector中,从一个指定的位置Q通过索引Q查找数据或是在集合的末֢加、移除一个元素所p的时间是一LQ这个时间我们用O(1)表示。但是,如果在集合的其他位置增加或移除元素那么花费的旉会呈UŞ增长QO(n-i)Q其中n代表集合中元素的个数Qi代表元素增加或移除元素的索引位置。ؓ什么会q样呢?以ؓ在进行上q操作的时候集合中Wi和第i个元素之后的所有元素都要执行位Uȝ操作。这一切意味着什么呢Q?br />
q意味着Q你只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或ArrayList都可以。如果是其他操作Q你最好选择其他的集合操作类。比如,LinkList集合cd增加或移除集合中M位置的元素所p的时间都是一L?O(1)Q但它在索引一个元素的使用~比较慢QO(i),其中i是烦引的位置.使用ArrayList也很ҎQ因Z可以单的使用索引来代替创建iterator对象的操作。LinkList也会为每个插入的元素创徏对象Q所有你要明白它也会带来额外的开销?br />
#################################################
Hashtable?span class="hilite2">HashMap
Hashtable?span class="hilite2">HashMapcL三个重要的不同之处?br />
W一个不同主要是历史原因。Hashtable是基于陈旧的DictionarycȝQ?span class="hilite2">HashMap是Java 1.2引进的Map接口的一个实现?
W二个也许最重要的不同是Hashtable的方法是同步的,?span class="hilite2">HashMap的方法不是。这意味着Q虽然你可以不用采取MҎ的行为就可以在一个多U程的应用程序中用一个HashtableQ但你必d样地Z?span class="hilite2">HashMap提供外同步。一个方便的Ҏ是利用Collectionscȝ静态的synchronizedMap()ҎQ它创徏一个线E安全的Map对象Qƈ把它作ؓ一个封装的对象来返回。这个对象的Ҏ可以让你同步讉K潜在?span class="hilite2">HashMap。这么做的结果就是当你不需要同步时Q你不能切断Hashtable中的同步Q比如在一个单U程的应用程序中Q,而且同步增加了很多处理费用?
W三点不同是Q只?span class="hilite2">HashMap可以让你空gZ个表的条目的key或value?span class="hilite2">HashMap中只有一条记录可以是一个空的keyQ但L数量的条目可以是I的value。这是_如果在表中没有发现搜索键Q或者如果发C搜烦键,但它是一个空的|那么get()返回null。如果有必要Q用containKey()Ҏ来区别这两种情况?
一些资料徏议,当需要同步时Q用HashtableQ反之用HashMap。但是,因ؓ在需要时Q?span class="hilite2">HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一个陈旧的cȝQ所以有为,在各U情况下Q?span class="hilite2">HashMap都优先于Hashtable
以上摘自Q?br />
http://www.javaedu.com/bbs/viewthread?thread=75
http://zztu.javaeye.com/blog/173964
]]>
1. 要看书?/strong>
在成千上万的
2. M码?br />
q也是我很喜Ƣ的一U方式。如果我q没有几q的专业~程
3. 写代码?/strong>
谨记Q要写大量的代码。从Ҏ上来Ԍ最好的
4. 与其他开发者交?br /> ?AppleQ微软,Google {大公司一L新闻描述的一P(与其他开发者交?可以让你解决一些复杂的问题。虽然这q不能让你感觉到自己已经成一个团队或是社区的成员Q但是这U方法可以让你接触到更多不同的想法?br /> 不同cd的项目要求不同的设计ҎQ代码技术,开发流E和设计思想。如果你工作在一个小团队里,你不必与太多的h接触Q只要在用户会议中扑ֈ一些h(来讨?卛_。如果这栯不行的话Q参与到在线论坛中与其他?q时你需要更努力地寻N质量的讨论内??/font>
6. 教会别h?br /> 相对于仅仅读代码之类的工作,教其他h学习可以让你更深入地学习某个技术,q种Ҏ有着非凡的效果。教会别人某个技术,同样也会让你更专注于q种技术,q且可以比别人更深层ơ地理解它。同样你也会面对一些问题?br /> “如果你不能向一个六岁的儿童解析清楚一个概念,那么其实是你q没有完全理解它?#8221;Albert Einstein说?br /> 教学场景可以是无Ih的Q与工作搭档一对一交流Q休息碰面,非正式周会,学习茶会Q教室,讨论发表会,{等。每周在相同理念开发者之间D办一?0分钟的非正式会议怎么P每周Q让几个人来׃们想要更深入了解话题Q向大家传授q些技术知识,q且展开讨论。如果你知道你将要向团队成员们传授正学学习的知识Q你是不是更惌了解q项技术的每个l节呢?
6. 收听|络电台?br /> 如果你有I闲的时_可以订阅|络电台节目。我现在最喜欢的编E节目就?.Net Rocks。这个节目还会做一些视频节目,叫做 dnrTV 。这样会让你x捕捉到最新最好的技术。一个h是不能学习到所有知识的Q而网l电台刚是一个学习了解广泛知识的途径?/font>
7. 阅读博客?br /> 博客q远比阅读者要多,但是其中有一些却是极其优U的。我q里不ƈ不是要推荐博客,因ؓ|络上已l有了够多的博客。这是与真正在开发你所喜欢和用的软g的开者联pȝ好方法?/font>
8. 学习新的语言?br />
即你已l在 C(++,#) / JAVA {语a上有很好的造诣Q仍然有很多其他可以解决问题的编E语a。学习新的语aQ是对你已有思维方式的挑战。这不仅仅是另一U语aQ更是对思维的重新架构。的,所有的语言最后都会被~译成汇~程序,但是qƈ不意味着
9. 学习不正的方式?br /> ?/font>了要学习应该怎么做,q要学习不应该怎么做。经帔R?Dailywtf.com Q学习你q不知道的经验与教训。学习适当的面向对象设计方式,代码写作方式Q和必须要写的代码等Q是很好的方式,但是如果不细心的话也ҎL不良习惯。学习认识不正确的思\是负责项目开发至关重要的一环?br /> l基癄对很多觉的不正确方式有十分透彻的分cR?/font>
10. 要谦虚?/strong>
学习Q意味着Q?br />
1、用更好的知识代替不完美的知识;
2、增长你所不知道的知识Q?br />
只有承认自己有所不Q才能有学习的动力。归根到底,是谦虚Q不对吗Q如果你开始认Z已经掌握了所有需要的知识Q那么你危险了。真正的学习是如饥似渴地q逐知识ƈ使其内在化,q需要很大的努力。我们都知道q一点,但是要必L怸断地提醒自己?br />
来自Qhttp://news.csdn.net/n/20080408/115015.html