百度站内搜索适合什么样的网站使用

百度为了提升网站浏览的用户体验,推出了站内搜索工具,站长想要使用这个工具,只需要登录百度站长平台,点击左侧功能栏的“站内搜索功能”,然后按照百度的指引,去获取一段js代码,然后把这段代码放在自己网站上即可,很简单,很安装百度统计、百度分享的代码类似。

百度站内搜索工具

百度站内搜索结果

一、百度站内搜索测试结果

1、收录量有小幅的上升。

2、排名没有什么大的提升。

3、索引量有较大的提升。

4、站内搜索的结果已经远远超过了百度site上的结果。

也就是说:站内搜索工具对于网站的收录是有一定帮助的,其他条件一定的情况下,安装的百度站内搜索工具比不安装,收录、索引要好一些。

二、所有的网站都适合安装站内搜索吗?

1、如果你的网站的大型门户或者是新闻平台,站内每天都会产生大量的内容,从长远来看,安装这个搜索工具,可以方便用户查找资料,提升用户体验。

2、如果是一般的企业站,主要销售产品或是本地服务,站内文章也就几百篇,就没有必要做站内搜索,只需要把栏目分类好,让用户方便查找就行,反正每个类目下也没有多少文章,用户想看什么都很方便。安装百度站内搜索的意义也不大。

 

百度自动推送功能代码安装方法

对于内容量非常大的网站来说,每生成一篇文章,就去百度站长平台手动提交一次链接,这个不太现实,工作量太大。因此百度专门为站长提供主动提交链接的功能,可以提高蜘蛛抓取频率和文章收录,小型企业站也可以试一下。

具体操作方法:

第一步:进入百度站长平台;

第二步:根据左侧功能栏,依次找到【网页抓取】—【链接提交】—【自动推送】。

第三步:复制百度提供的这段js代码,粘贴到你的模板header或者是footer,这样就可以做到全站引用,跟安装百度统计一个道理。

下面是我博客安装百度自动推送代码之后的数据统计截图,还是有一定效果的!

这是最简单的一种方法,不管你使用的是是dedecms、wordpress、ecshop或者是其他的程序,此方法都适用!

老站用长尾关键词排名垄断流量的方法

一个优秀的seo,绝对不会仅限于几个核心关键词的排名优化,因为这些核心词的竞争度相对较大,同行都在做,有的词竞价都有10个,就算是把这个词的自然排名做上来,也很难获得可观的流量,更别说转化率了。所以,我建议应该从长尾词优化入手。

但是做长尾词都面临着一个重大的问题:同行网站已经存在很多年来,各方面都比我们有优势,而且还有专门的seo负责全天优化,做长尾词我们该如何超越,下面提供一下我最近在项目实操中的一部分方法。

根据一般人的思维,做长尾关键词的排名都是利用网站内页来做,可以内页的权重也是继承自首页,如果自己网站的权重很低,内容页就根本不可能有排名,偶尔几个长尾词有了排名也不会稳定,过几天就消失了。

针对这种情况,我的方法是:用专题页去做长尾词排名。

什么是专题页面呢?

专题就是聚合丰富的相关文章的页面,配以精彩的介绍文字、图片、视频、活动、评论等元素,有效提高访客体验,从而增加页面pv和停留时间。大家可以借鉴一些大站,如:新浪、搜狐等新闻门户。每当有重大事件,他们就会综合以往相关新闻,聚合丰富内容生成专题页,动作十分迅速,有力吸引时效性需求访客注意力。而且这类页面因为具有良好体验,都有着不错的排名和流量。

运用专题页结合seo策略,可以妥妥的把一个竞争度相当的长尾词优化上来:

1、 专题页的URL路径尽量是二级目录形式:/video/;

2、 其他页面给予这个专题页一定的内链投票;

3、 标题、关键字、描述一定要像首页一样去认真的写,既然做了专题页,就要在标题上抓住用户的痛点,让他不得不来到我们的网站;

4、 内容足够丰富,文字、图片、视频(如果有需要);

5、 如果权重很低,可以适当的增加一些外链;

6、 #友情提示#:专题页不要过度优化,只要提供用户需要的内容,百度也可以根据他的大数据自动识别你这个页面的价值,过度优化会适得其反。

以下专题页布局图仅供参考:

老站做长尾词排名的方法

具有实效性的内容很适合做专题页,比如说:2015情人节、2015高考零分作文、2015上半年装修报价单等等。我之前在自己的百度文库操作了这些词,几乎每篇文章都有几百的浏览量,有的可以上千,所以这种方法还是可行的。在节日来临的前一个月开始布局这些词,到过节的时候,你的竞争力就比同行大很多,排名也能比他们早一步!

如果是刚上线的新站,权重为0,该如何做长尾关键词的排名呢?请看:新站长尾词排名超越同行的方法

企业网站做SEO优化的步骤

目前,互联网上90%的网站都是企业站和个人博客站,说明站长还是以草根为主,有的人在公司做SEO,有的是自己做,只要是做SEO,肯定会碰到企业站,下面我来根据自己以往优化企业网站的经验来谈一下企业站做SEO优化的步骤。

第一步:打好基础,网站要做好

不管是从设计还是从程序功能方面,都要注重网站的用户体验度!然后有一个懂SEO的人员是最好的!如果没有,就保持网站的活跃度,根据用户需求的变化常有新内容更新,最好是原创的内容!

适当的在一些行业网站或相关网站注册一些会员或发布一些信息,能带自己网站链接是最好!也就是所谓的外链!最后,贵在坚持!切记不要在发垃圾外链了。

第二步:把内容做精,权威

企业站内容相对少,少不代表做不好优化,要想获得更好排名很重要:

1、权威的内容;

2、良好代码结构;

3、高质量的外连。

第三步:网站优化分为两个部分

1、是网站内部优化,比如网站的布局、网站的结构调整、网站内链;

2、是外部优化,网站外链的建设;

3、站内优化包括,网站的结构优化,内容优化,关键字的优化等;

4、站外的话,主要有发外链,做友情链接,现在很火的微博,以及问答,博客等等。

第四步:根据自己的产品和行业内市场定位关键词

网站做好内部维护和外链建设;

B2B、行业资讯、网站目录、收藏夹、博客等链接发布;

总结一下:小型企业站,不需要很多的内容,关键是用户需求的分析,只要你找到最关键的那个点,而竞争对手恰好没有做,就可以在短时间内把词做上来,这也是在优化太原雅辉装修公司、乐谱网以及其他企业站的过程中总结出来的!
或许你的朋友正在寻找这个问题的答案,赶紧分享给他吧!

如何降低网站的跳出率

如果网站的跳出率达到了80%甚至更高,那就说明这样的网站是留不住用户的,关键词很难参与排名,就算是排上来了,也不会非常稳定。网站跳出率高几乎是所有站长的一块心病,下面我来根据自己以往的一些操作经验谈一下如何降低网站的跳出率。

1、关闭站内自动播放的音乐

网站中的视频、音乐,最终是否要播放最好是让用户来选择,如果他想听或者是他想看,就让他自动去点击,如果他对这种事情很不耐烦,我们也不要在网站里边默认的播放哪些音乐或视频。因为有的用户对这个和敏感,他还以为网站被黑客攻击了。

2、必须关掉令人厌烦的弹窗

广告弹窗在医疗类网站中很常见,当用户关闭窗口的时候,没过2秒钟,又出现了,给用户的浏览带来很大的不便,用户当然会关闭网站。

3、网站打开速度太慢

有的时候看到网站的标题已经显示出来了,可是页面却是一片空白,什么都没有,这就是因为网站的代码接在过慢,我的博客也遇到过这样的问题,如果你的网站使用wordpress做的,可以查看wordpress网站打开速度太慢的解决方案。

4、给用户展示一个明了清晰的网站结构

用户来到网站,是想尽快的找到他想要的内容,特别是一些技术类的论坛或者是博客,他就是想赶紧找到解决方案,所以,网站的导航以及首页布局分类要非常简洁,让用户一眼就能找到他想要的内容在哪里。

5、及时修正文章错别字

文章中有错别字是在所难免的,编辑的过程中很难不出现错误,但是发现问题之后,一定要及时改正过来,写完一篇文章最好是从头到尾仔细的看一遍,不要给读者留下一种不专业的感觉。这样的网站很难有高转化。

6、视频、图片网站应该配备一些文字

我的博客里边也有视频讲解,因为有些内容文字的表达效果确实不如视频好,比如根据用户需求设计网站布局草图,但是也不能全是视频,毕竟对于搜索引擎来说,它还不能完全的识别视频内容,所以需要加适量的文字,图文结合、视频文字结合,这种用户体验最佳。

总结:降低网站跳出率,就是在提高网站用户体验的一个过程,这里涉及到很多的细节,建议站长经常和你的访客进行交流,从他们那里可以很快得知网站的问题所在,这也是最准确的。

如何分析网站日志

如果你的空间是windows系统,那么对应的日志格式是IIS日志;如果空间是linux系统,那么对应的日志格式是apach日志。当你在网上下载一些日志分析工具来分析日志的时候,就要根据不同格式的日志来下载对应的工具,但是看懂了今天的日志分析方法,就不用在意这个了,无论是IIS日志还是apach日志,都是适用的。

用excel表格分析网站日志的要点:

1、用ftp下载到本地的日志,原来的后缀是“.log”,现在要换成“.txt”;

2、在桌面新建一个excel表格,点击“数据”一栏,然后导入文本(根据excel表格版本的不同,名称可能不一样,office2010或者是wps的叫法是“导入数据”);

3、导入的过程中要注意弹出框的选项,一定要把数据对齐,方便浏览,细节可仔细观看视频。

4、读取日志的口诀:“【谁】在【什么时间】【访问了网站的哪个文件】,他【是否能正常访问】,【通过什么路径来的】”;

5、服务器返回状态码的意思:以“2”开头的状态码说明可以正常访问;以“3”开头的状态码是一种重定向,不管是永久性重定向还是暂时性重定向,都是可以正常访问的;以“4”开头的状态码,说明网站中不存在这个文件;以“5”开头的状态码说明是服务器出现了问题。

如何备份网站的数据库

对于站长来说,网站能够安全的运行是做所有操作的基本要求,当网站出现问题的时候,我们要学会补救,特别是对于网站数据库这一块,站长必须得学会如何备份数据库,这样的话,即使是网站数据库出现问题,我们也可以重新导入已经备份好的数据库,网站还能正常的运行。由于服务器的不同,不同空间商的数据库备份方式稍有差别,下面我以万网和西部数码的空间数据库备份举例来说一下如何备份网站数据库。

一、万网空间数据库备份方式:

1、来到万网主机管理控制台,选择备份/恢复——备份站点;

万网数据管理控制台

2、随后会弹出一个窗口,选中mysql数据库并且填写所要备份的数据库的名称,然后点击确定;

选择数据库名称

3、稍等一会儿,来到“我的备份”选项中,看到数据库已经备份成功,点击右侧的下载按钮,数据库就会自动下载到本地电脑。

数据库备份成功

二、西部数码空间数据库备份方式:

1、进入西部数码空间功能控制面板,点击左侧的“数据库”一栏;

西部数码功能控制面板

2、然后看到utf-8版本和gbk版本的数据库,根据自己的实际情况,任意进入一个;

进入数据库选项

3、点击你想要备份的数据库名称;

选择想要备份的那个数据库

4、这时候会看到很多的数据库表,“全选”并且“导出”;

数据库表全选并导出

5、选择“自定义”选项,压缩方式一般是zip格式;

选择数据库压缩格式

6、页面拉到最下面,点击“执行”,数据库就会下载到电脑,然后保存就行。

命令行操作mysql数据库实现增、删、改、查

在mysql中,select关键字不仅有查询的功能,还有输出的功能,具体使用方法如下:

第一步:选择需要操作的数据库,并展示其中的数据表。

选择需要操作的数据库,并展示其中的数据表

第二步:新建一张名为班级class的表。(create table 数据表名(id int(10) primary key auto_increment,字段一 char(30),字段而 tinyint(1)) default character set utf8 engine myisam;)

新建数据表

第三步:查看表字字段,并往class表中插入7个数据。

往数据表中插入数据

第四步:查询刚刚插入的数据。

1、查看表中所有的数据信息:(select * from 数据表)

selct查看表中所有的数据信息

2、根据特定的字段搜索并查询相应的数据信息:(select 字段1,字段2 from 数据表)

根据具体的字段查询相应的数据信息

3、根据条件用where查询数据信息:(select * from 数据表 where 字段名 like “包含的某个字符%”)

根据where查询数据信息

4、根据对应的字段和条件查询信息:(select 字段1,字段2 from 数据表 where 某个字段 like “包含的字符%”)

根据对应的字段和where条件查询信息

5、mysql数据库中的条件运算符【或】:(select * from 数据表 where 字段1 like “%包含的某个字符” or 字段2 like “包含的字符%”)

mysql数据库中的条件运算符or

6、mysql数据库中的条件运算符【and】:(select * from 数据表 where 字段1 like “%包含的某个字符” and 字段2 like “包含的字符%”)

mysql数据库中的条件运算符and

7、为查询数据设置别名,便于区分:(select concat(“字段一名称”,字段1,”字段二名称”,字段二) as 自定义别名 from 数据表)

为查询数据设置别名

8、修改某个字段的类型:

alter table 数据表名 change 原字段名 新字段名 新字段类型。

例如 alter table student change birthday birth date;

mysql修改字段名和类型

9、删除某个字段:

alter table 数据表名 drop column 要删除的字段名。

例如 alter table student drop column qq;

mysql删除某个字段

10、单独增加某个字段:

alter table 数据表名 add column 字段名 字段类型

例如:alter table list add column author varchar(30);

单独增加某个字段

关于mysql数据库增加字段的总结:

(1) 加索引:

mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);

例子: mysql> alter table employee add index emp_name (name);

或者是:mysql>create index emp_name on employee(字段名);

(2)加主关键字的索引(设置主键):

mysql> alter table 表名 add primary key (字段名);

例子: mysql> alter table employee add primary key(id);

(3) 加唯一限制条件的索引:

mysql> alter table 表名 add unique 索引名 (字段名);

例子: mysql> alter table employee add unique emp_name2(cardnumber);

(4) 删除某个索引:

mysql> alter table 表名 drop index 索引名;

例子: mysql>alter table employee drop index emp_name;

(5) 增加字段:

mysql> ALTER TABLE table_name ADD field_name field_type;

(6) 修改原字段名称及类型:

mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

(7)删除字段:

MySQL ALTER TABLE table_name DROP field_name。

(8)给主键设置自增的属性:

mysql>alter table table_name modify id int auto_increment;

例如:alter table test2 modify id int auto_increment;

国庆7天稳定关键词排名的方法

国庆节要放假7天,对于在公司做SEO的站长来说,这7天几乎是不做优化的,问题主要集中在两方面:

1、 假期要玩、陪家人、陪对象,没时间开电脑;

2、 开了电脑,没心思左右优化,文章发不了,站外推广更是没时间。

下面是我以往运用的一些方法,可以帮你在7天假期内稳定关键词排名。

没时间发文章怎么办?

提前分析好近期的用户需求变化,然后把文章整理成文档保存到网盘,回家的时候只需要打开电脑,复制粘贴,整个过程只需要2分钟。

没时间发外链怎么办?

外链这个问题在之前的文章中已经提到过很多次了,我做的网站除了几条友链,基本不主动发外链,如果你的关键词排名已经进入前20了,大可不必担心外链对排名的影响。

成天抱着手机,很少开电脑,网站流量如何保证?

因为不做论坛、博客等站外推广,所以国庆期间,流量主要来源是自然搜索和站外引流,依靠现有排名,只要国庆期间用户有相关需求,自然搜索流量只会增加不会减少,而且很多用户都选择在国庆期间进行消费,比如装修。

站外如果保证流量?总不能成天抱着电脑去论坛发帖吧。我的方法是:既然没时间去论坛、B2B平台引流,那就干脆不要去,集中手中能用到的资源做自己能做的事,大家在放假的时候不管是在家里还是外边,都会抱着手机,那么移动端推广就非常不错,利用及时通讯工具QQ、微信、微博,只要平时积累了不错的人脉和粉丝,这点活儿很轻松的就做玩了,其实我这几天也基本就是抱着手机。

如果以上所说的都做不到怎么办?

做不到高级的,就把基础的做好,检查好自己的友链,别因为其他站在放假期间打不开了,影响了你的网站,然后假期过后,排名正好掉了。

总结:一个好的网站,不需要每天都去大量的引流,因为平时就积累了很多的用户,只要在假期期间有需要用你网站解决问题的人,那他就会自动来网站,不需要刻意去引流。所以平时在优化网站的时候,不要想着每天发外链、写文章,最好是如何能让用户自己我们的网站品牌,记住我们的产品,就算排名下降了,只要品牌词没降,网站流量也不会损失太多。
或许你的朋友正在寻找这个问题的答案,赶紧分享给他吧!

如何选择空间和域名

大家好,我是赵一鸣,今天给大家分享的是如何选择空间和域名。一个好的空间对于网站后期的优化是非常重要的,如果网站每隔几天就出现一次问题,这样对网站关键词排名的影响是非常大的。详解介绍视频如下。

如何选择网站空间?

第一步:选择好空间商,代表性的有:

万网 西部数码 华夏名网 主机屋 新网 商务中国 时代互联 ;

要求:稳定、安全、速度快。

第二步:查看空间功能:

301、404、伪静态、主页设置、ip限制、解压缩;

注意:根据程序选择不同类别的主机(php程序用linux系统的主机)。

第三步:看价格:

功能都有的情况下,选择最实惠的。

如何选择网站域名?

1、是否容易记忆 ;

2、是否被使用过 ;

3、那些域名能注册,哪些暂时注册不了。

如何在太原找到合格的网站推广人才

山西近几年的互联网发展越来越好,特别是太原,很多的传统企业都开始“触网”,原先对于网络的各种担忧转变为更多的期待,但是老板们知道互联网能够给公司带来收益,但是苦于找不到合适的网络推广人才,做了一个网站,推广效果并不好,成本居高不下,转化率很低。下面我来根据自己的一些经历谈谈在太原如何找到好的SEO网站推广人才。

如果你的行业竞争比较激烈,那就不适合请SEO接单公司做网站推广,因为第三方服务公司一般只注重关键词排名,网站的转化率基本与人家无关,最后吃亏的还是自己公司,那么唯一的选择就是自己招聘SEO推广人才了。

在太原如何招聘到优秀的网站推广人才呢?企业老板们大多都不太清楚,我加了太原本地很多传统企业老板的QQ群,也认识了其中的几位。经常有老板跟我抱怨,说他们饱受了SEO人才招聘的苦头,他们问我最多的一个问题就是,怎么样才能找到优秀的SEOer。

我个人认为,一个合适的SEO人才都具备以下几个标准:

1、一个好的SEO人才必须能主动的去了解该企业的文化以及行业的用户需求,这个才能更好的有针对性的优化企业网站。

2、一个SEO人才,应该是懂得如何通过SEO做行业覆盖率的,而不是单纯的只做某几个关键词,他应该有全局观,懂得如何将该企业的品牌在互联网上树立起来。

比如我是做太原本地装修的,我会将山西地区的业主所有可能搜索的热门关键词都列举出来并且都做到百度首页,确保业主搜索10个关键词,有6-7个是我的网站,这样,用户就会从侧面觉得我的网站可信度高,品牌更响亮,百度哪里都有我们的身影,到最后他搜索了很多的装修类词,找到各个公司进行对比,最后肯定更倾向于选择我们的品牌—雅辉。

3、一个优秀的网站推广人才,应该懂得成功运用营销,他的网站转化率最少应该在40%左右(10个咨询,其中4个成交),当然这也与客服的谈单能力有关,但是用户自己感受到这是一个优秀的网站的时候,自然而然就会对公司产生信任感,联系客服,最后成交是很容易的事情。所以,不能通过网站给公司带来收益的SEO,这不是企业的资产,而是附加成本。

4、一个合格的SEO,应该具备起码的培训能力。有句话是这样说的:“知其然而不知其所以然”,意思就是:他知道这个问题怎么处理,但是却说不清道不明,不清楚其中的具体原理,证明他还是对这个事物的本质不了解。所以好的SEO,他把一个关键词做上来之后肯定知道这个词是怎么上来的,或者说某个词的排名掉下去了,他也能迅速判断出原因并且给出解决方案。

现在很多做SEO的人都是刚毕业的大学生,这些人的用人成本都很低,在太原一般2000元左右就能招聘到一个毕业生,作为一个合格的SEO人员,必须得学会培训,告诉这些毕业生怎么去操作,应该操作哪里,这样不仅能为企业省下用人成本,还可以提升工作效率。

在太原做网站推广的人也不少,但是企业还是找不到合格的SEO(能给公司网站带来转化率的人才),太原一般的SEO平均薪资也就200—-2500左右,基本是每天写为原创,发垃圾外链,优秀的SEO,每月的基本薪资起码得在6000元以上(太原)。

所以,公司不是怕花钱,不是怕提升成本,怕的是花了钱买不到收益。

公司面试SEO人员时,应注意的几个问题:

1、首先得拿出合格的网站推广案例(关键词有排名、网站有转化率);

2、对于SEO是怎么理解的?你平时优化网站都做哪些工作;

3、你所认为的SEO的核心是什么;

4、如果有时间,可以先帮公司的网站做一个优化方案,如果做的不错,基本可以用;

5、其他一些基础的SEO问题;

6、普通招聘应该问的问题。

如果面试者能够很好的回答以上几个问题,在未来的工作中就问题不大。在这里只是给出几个问题框架,具体这几个问题的答案是什么,可以私聊我Q免费获取。

如何制作各种版本的网站地图

制作网站地图的操作要点:

 

1、生成网站地图的网址:www.xml-sitemaps.com

 

2、填写要生成地图的网站地址,然后按照视频中所讲的,选择对应的选项;

 

3、点击生成之后,填入自己的邮箱帐号,所有的地图(xml、html、txt等等)都会发送到邮箱,注意查收即可。

 

4、提示:如果你的网站中,有一个页面能展示站内的全部网页,那就不需要再制作网站地图了。

如何做好微博线下活动

微博单纯的线上交流,还不能完全的取得互相之间的信任,如果时不时懂得搞一些线下活动,就能拉近彼此之间的距离,活动完成之后,再次来到线上,大家的交流就比较放得开了,知根知底。微博互动可以助推你的关键词排名,有利于SEO优化。下面我来根据圈中好友平时的一些操作方法介绍一下如何做好微博线下活动。

一、活动目标:四个打通

搞微博活动的目的是什么?绝对不是现场销售,你想啊,全国各地的小伙伴自掏腰包来,就是来买点产品?目的很明确—打通!

1、打通线上线下,尤其是当地的政府和土豪;

2、圈里圈外;

3、买家卖家;

4、新媒体和传统媒体。目的明确后,实现目的需要策划和手段了!

二、关键两个圈子:线下本地核心圈和线上传播圈

微博活动在线下,传播在线上,关键要混好两个圈子,线下的本地核心圈子,线上的传播圈子;核心圈子不用太大,传播圈子越大越好!如何混?得拼人品,利他、利他、利他!重要的事说三遍!

三、借大势,为媒体制造新闻,创造传播点

活动目的确定后,一定要借大势,拉大旗做虎皮,找政府的痛点和痒点,要与时俱进,现在是“互联网+”,“大众创业,万众创新”,必须加以利用,为政府岀政绩,为媒体制造新闻,创造传播点!

四、打通线下,邀请传统媒体介入

玩微博的人有幻觉,以为我们看到了整个世界!错!微博世界和现实社会完全是两个世界!尤其是当地政府和土豪,没几个关心微博的,他们的注意力还在传统媒体上,所以必须为如何做好微博活动

传统媒体制造新闻,吸引他们报道,才能打通线下,因此必须想尽一切办法邀请传统媒体介入,事半功倍!

五、抓好切入点,整合政府手上的资源

活动在线下,传播在线上,必须要整合资源,今天政府掌握大量社会资源,因此活动主题必须要让领导喜欢,急领导所急想领导所想,今天“互联网+”绝对是好切入点,因为没几个地方领导懂!政府部门只要支持,相关媒体就可以调动了,他们是对口报道的!

六、整合资源首先得自己有别人想要的资源

活动想搞好,整合资源最重要!要这么想:俺一分钱不想花,还得把活动办成,怎么办?逼自己去整合资源!切记:你手上有了别人想要的资源,你就可以调动、利用、支配别人的资源了,这叫资源运作!好好盘点一下你的资源!实践证明,在整合资源的基础上花钱,效果好!

七、平时多赞人品,主动参加伙伴活动,为自己的活动打好基础

活动能否成功,你要扪心自问,有多少小伙伴愿意在线上为你摇旗呐喊,你能邀约多少小伙伴到现场?千里迢迢的,自搭路费,搞传销的都很难邀约了,大家凭啥来?平时要多攒人品,主动为小伙伴转评赞,小伙伴的活动主动参加,不图回报的、力所力及的付出多干点,微博是公开的,大家看的见!

八、古代生意达人义利经,微博一样适用:帮人就是帮己,利他就是利己

荀子曰:先义后利者荣,先利后义者辱。荣者常通,辱者常穷。通者常制人,穷者常制于人!这就是中国古代生意达人的义利经!啥叫义?在微博上不图回报、举手之劳的付出就是“义”,义举做多了攒人品,人人说你好,东西不想卖好也挺难!

三步提升核心关键词排名的技巧

在操作关键词排名的过程中,想要把一个词做到百度首页,需要很多的方法组合起来使用。在做SEO的过程中会遇到很多大大小小的问题,今天讲一下:三步提升核心关键词排名的技巧

特别提示:关键词进入10-20名之间的时候,不要刻意的为这个关键词去引流,这样会导致关键词马上下降。最正确的方式是:不断的挖掘这个词的用户需求,并且体现在网站里边,更新文章的时候也要根据需求来做,不需要每天大量更新,但是一定要“精”,大量无用的内容反而稀释了重要内容的比例,这一点是需要特别注意的。

删除远程github上的项目文件

下面介绍删除远程github上的项目文件的方法:

1、到你的个人中心.点击你的个人账号.下图的红色部分:

点击github个人账号

2、点击repositories(仓库),选择你要删除的项目:

选择需要删除的github项目

3、点击code这一行导航栏 最后的一个. setting:

点击setting

4、下拉页面到最下面:

页面拉到最下边,准备删除

5、Delete this repostory 按钮删除,在弹出框中输入本项目项目名称即可:

删除远程github项目

完!

删除织梦DEDECMS自带友链的方法

用织梦程序做网站的时候,模板嵌套代码中会自动带有链接到其他网站的链接,基本上都是单向导出链接,做seo优化的时候要注意这一点,对方是没有给你添加反链的,下面我来说明一下删除织梦DEDECMS自带友链的方法。

织梦程序的版本不一样,以5.7和5.6为例。

织梦CMS v5.7删除自带友链的方法:

在友情链接中会自动添加“织梦链”,可以考虑删除。不过,在后台管理中,并没有发现织梦链管理,所以只能修改源文件。
DedeCMS v5.7 删除友情链接中的织梦链的方法:后台模块—文件管理器找到织梦CMS v5.7 根目录include/taglib/flinktype.lib.php 文件删除如下代码然后重新生成首页HTML。

织梦cms5.7删除自带友链的方法

织梦CMS v5.6删除自带友链的方法:

去掉友情链接中“织梦链投放”连接的方法:后台模块—文件管理器找到织梦CMS v5.6 根目include/taglib/flink.lib.php 文件删除如下代码然后重新生成首页HTML。

上线12天的新站如何排名到前2页

两军交战,谁先夺取那个兵家必争之地,谁就有可能取得最后的胜利。对于地方性SEO博客来说,搜索“地区+seo”,排在百度前3位的都是SEOer必争之地,前几天刚上线了我的赵一鸣随笔博客,今天是第12天,查了排名,【太原seo】这个词已经排到百度搜索结果的第20位了。下面我来详细说一下这几天的优化操作,如果你有兴趣,也可以去做一个你们本地的SEO博客去优化。

1、站内基础优化必须做好

总是听听人说要做好基础优化,到底什么是基础优化,SEO还分基础和高级优化吗?不要着急,思想不要禁锢在这个字面意思上,反过来想,就算是网站不做优化,该做好的也一定要做好。关于基础优化的内容,我已经全部分享到:网站上线之前必须要做的检查 。

2、高质量稀缺性内容

现在的SEO博客同质化很高,大家写的博文也都大同小异,虽然说法和表达方式不一样,但是总体的内容的相似度还是挺大的,我也发现了这个问题,所以在更新我的文章的时候,能手动操作的,尽量录制成视频,一步一步教;图文并茂能解决问题的,一张图片也不能少。最终的目标就是让读者看完一篇文章之后能找到可执行操作的方式。

3、有频率的更新

有了高质量的内容,新站刚开始就得做到有频率的更新,时刻告诉搜索引擎,我的网站是活的。别人的网站不更新,那是由需求决定的,而且还有其他方面的优势促使其不用每天更新,但是对于一个新上线的网站来说,前1个月,必须要稳定的更新高质量内容!

4、友情链接的支持

如果有兴趣,你可以去站长平台查一下我的外链或者是用高级搜索指令查一下,基本上我是一条外链都没有发,因为白天都在公司,每天晚上回来9点开始更新博客,没有那么多时间去发外链。在这里我并不是要误导大家,如果你有精力,完全可以去发外链,不要迷糊,外链还是有作用的,就是那句话:每个人的资源不一样,导致优化方式也不一样,根据自己的实际情况来,总是就是要知道,高质量的外链还是有用的,对于这一块儿比较模糊的朋友,可以查看站长关心的外链发布问题总结 。

没有了外链,我只能从友链开始着手,很高兴,平时也认识了几位SEO做的很棒的站长,虽然我是个刚上线几天的新站,但是还是给我带了友链,非常感谢。

5、百度给予了特殊权重

刚上线的新站,甚至还没有收录,想要参与排名那是妄想。我的博客在上线的第二天就被收录,查看网站上线第二天就被收录的秘诀,直到第10天,太原seo这个词才有了基本的排名,然后就直接窜到了21位,现在是20位,这个是百度经过对一个新站的评估之后,如果网站的基础优化做的不错,网站各方面的数据体现整体较好,它就会给予你这个特殊权重。

总结:一定不要为了做优化而做优化,站在用户需求以及体验的角度去做SEO,不管算法怎么改变,网站肯定可以获得一个很好的排名。每天晚上9点正式开始更新博客,欢迎关注博客的动向。

设置php.ini配置实现表单文件上传流程

用form表单结合php进行文件上传之前,首先得配置一下php.ini里边的参数,具体如下:

1、打开网站上传的功能(file_uploads = On);

2、文件上传后存储的位置(临时存储位置:upload_tmp_dir = “D:/wamp/tmp”);

3、上传文件的大小限制(upload_max_filesize = 2M);

4、脚本运行的最大时间(max_execution_time = 30);

5、脚本运行所占用的内存大小(memory_limit = 128M)。

以上几个参数都是根据自己网站的实际情况来配置的,如果要上传视频文件,那么各项参数可能就需要调大一些,如果只是一些很小的文本文件,则参数可相应的调小。

测试代码如下:

html部分:

<form action=”test.php” method=”post” enctype=”multipart/form-data”>
<input type=”hidden” name=”MAX_FILE_SIZE” value=”1000000″ />
<input type=”file” name=”file” value=”” />
<input type=”submit” value=”上传文件” />
</form>
<!–隐藏域表单一定要放在最前边才会起作用–>
php部分:

echo ‘<pre>’;
print_r($_FILES);
点击【上传文件】按钮之后,页面跳转到test.php,最后输出结果如下:

/*
Array
(
[file] => Array
(
[name] => jquery面试题.jpg
[type] => image/jpeg
[tmp_name] => D:\wamp\tmp\php72F4.tmp
[error] => 0
[size] => 343109
)
)
*/
可以看出这个一个数组,我们用$_FILE即可打印出用户提交的文件信息,其中:

【name】:上传的文件名;

【type】:上传的文件类型;

【tmp_name】:上传的临时路径(当脚本执行完毕之后,这个临时文件会自动删除,所以临时文件在被自动删除之前,需要把这个文件移动到指定的文件夹里边,下一节会讲到移动的方法);

【error】;错误提示,分为以下几部分:

(1)0:没任何错误;

(2)1:文件大小超过了php.ini配置文件中定的大小;

(3)2:文件大小超过了前台表单设定的文件大小(MAX_FILE_SIZE);

(4)3:只上传了文件的一部分;

(5)4:没有上传任何文件。

【size】:上传文件的大小,单位是字节。

什么是CSS编译器_使用Less有什么好处

LESS 是动态的样式表语言,通过简洁明了的语法定义,使编写 CSS 的工作变得非常简单。在实际项目开发中,可以大大提升前端工程师的码砖效率!

CSS(层叠样式表)是一门历史悠久的标记性语言,同 HTML 一道,被广泛应用于万维网(World Wide Web)中。HTML 主要负责文档结构的定义,CSS 负责文档表现形式或样式的定义。

作为一门标记性语言,CSS 的语法相对简单,对使用者的要求较低,但同时也带来一些问题:CSS 需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤其对于非前端开发工程师来讲,往往会因为缺少 CSS 编写经验而很难写出组织良好且易于维护的 CSS 代码,造成这些困难的很大原因源于 CSS 是一门非程序式语言,没有变量、函数、SCOPE(作用域)等概念。LESS 为 Web 开发者带来了福音,它在 CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能,大大简化了 CSS 的编写,并且降低了 CSS 的维护成本,就像它的名称所说的那样,LESS 可以让我们用更少的代码做更多的事情。

下面通过一个实例来简单看一下使用Less的好处:

1、传统的CSS书写方法:

.header .main .left{
float:left;
}
.header .main .left a{
text-decoration:underline;
color:#fff;
}
.header .main .left a img{
width:100px;
}
2、先写Less,然后编译成CSS代码:

@white:#fff;
.header .main .left a{
color:@white;
}
通过以上这种方式,可以达到css代码复用,而且好处远不止这一点。

大概的流程就是:我们先写好less,然后依托nodejs的npm的less包,将less代码编译成css文件,然后引入html页面中即可使用。具体使用方法在后面的笔记中细说!

使用Less之前的准备工作

将Less文件转为CSS文件,必须安装node环境和npm,做过NodeJs开发的童鞋对这个都很了解,对于Node的安装方法,可以查看:《学习安装NodeJs环境和NPM》。

Node安装成功之后,在你的安装目录下有一个node_modules文件夹,使用电脑的命令行工具cmd,依次找到并打开这个node_modules文件夹,并使用命令【npm install -g less】安装less,如下图:

在node_modules目录下安装less

输入命令,按回车键之后,就可以看到以上结果,说明less安装成功!

比如我在F盘下有一个test.less文件,在命令行中找到这个文件,然后使用命令【lessc less文件名 > css文件名】即可生成对应的css文件

使用ThinkPHP扩展自己的类方法

ThinkPHP框架虽然提供了很多 类方法,但是在实际做项目的过程中,有很多类方法是需要我们自己去实现的,这里我来介绍两种使用ThinkPHP扩展自己写的类的方法。

提示:以下两种方法都可以了解下,但是建议使用第二种方法。

第一种:将自己写好的类方在ThinkPHP框架的ORG/Uitl目录下:

因为我们在引用ThinkPHP自带的类的时候,都是通过函数import来调用,比如我要调用验证码类,那么代码如下:

import(‘ORG.Util.Image’);
Image::buildImageVerify(4,1,’png’);
那么我们也可以把自己的写好的类方在Util文件夹下,然后通过同样的方法进行调用,比如我写的一个类Test.class.php,代码如下:

<?php
class Test{
static function go(){
echo ‘this is my Class’;
}
}
把这个文件放到ORG/Util目录下,然后在需要的脚本中通过以下代码进行调用即可:

<?php
class Test{
static public function go(){
echo ‘this is my Class’;
}
}
第一种方法虽然方便,但是会导致一个问题:ThinkPHP框架更新的时候,我们要用最新的框架覆盖替换旧的框架,这样的话,之前自己写的类也会丢失,所以建议大家使用下面这种方法。

第二种:将自己写的类方在项目目录下:

比如我的项目目录是APP,那么在APP目录下新建一个文件夹Class,然后把Test.class.php这个类方到Class目录中,在需要的页面通过以下代码进行调用:

<?php
class TestAction extends Action{
public function test(){
import(‘Class.Test’,APP_PATH);
Test::go();
}
}
这样就方便多了!

使用ThinkPHP实现RBAC权限控制必要的几项配置代码

1、RBAC权限控制是根据用户登录成功之后的session中是否有相关节点的权限,所以首先必须得开始session,最好使用数据库存储session信息,建议查看《ThinkPHP自定义SESSION处理DB驱动》。

2、根据ThinkPHP框架中的RBAC.class.php类提供的RBAC必须的数据表sql语句,在命令行中建立相关数据表,代码如下:

CREATE TABLE IF NOT EXISTS `think_access` (
`role_id` smallint(6) unsigned NOT NULL,
`node_id` smallint(6) unsigned NOT NULL,
`level` tinyint(1) NOT NULL,
`module` varchar(50) DEFAULT NULL,
KEY `groupId` (`role_id`),
KEY `nodeId` (`node_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `think_node` (
`id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`title` varchar(50) DEFAULT NULL,
`status` tinyint(1) DEFAULT ‘0’,
`remark` varchar(255) DEFAULT NULL,
`sort` smallint(6) unsigned DEFAULT NULL,
`pid` smallint(6) unsigned NOT NULL,
`level` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `level` (`level`),
KEY `pid` (`pid`),
KEY `status` (`status`),
KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `think_role` (
`id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`pid` smallint(6) DEFAULT NULL,
`status` tinyint(1) unsigned DEFAULT NULL,
`remark` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `pid` (`pid`),
KEY `status` (`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
CREATE TABLE IF NOT EXISTS `think_role_user` (
`role_id` mediumint(9) unsigned DEFAULT NULL,
`user_id` char(32) DEFAULT NULL,
KEY `group_id` (`role_id`),
KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
3、在Modules文件夹中建立UserRelationModel.class.php类,里边的配置代码如下:

//用户与角色关联模型
class UserRelationModel extends RelationModel{
//定义主表名称
protected $tableName = ‘user’;
//定义关联关系
protected $_link = array(
‘role’=>array(
‘mapping_type’=>MANY_TO_MANY,//多对多关系
‘foreign_key’=>’user_id’,
‘relation_key’=>’role_id’,
‘relation_table’=>’think_role_user’,
‘mapping_fields’=>’id,name,remark’
)
);
}
4、在Action文件夹中建立CommonAction.class.php这个公共类来控制权限,代码如下:

class CommonAction extends Action{
public function _initialize(){
if( !isset($_SESSION[‘uname’]) || !isset($_SESSION[‘uid’]) ){
$this->redirect(‘Admin/Login/index’);
}
$not_auth = in_array(MODULE_NAME, explode(‘,’, C(‘NOT_AUTH_MODULE’))) || in_array(ACTION_NAME, explode(‘,’, C(‘NOT_AUTH_ACTION’)));
if( C(‘USER_AUTH_ON’) && !$not_auth ){
import(‘ORG.Util.RBAC’);
RBAC::AccessDecision(GROUP_NAME) || $this->error(‘没有权限’,U(‘Admin/Index/index’));
}
}
}
5、config.php配置文件中需要添加的代码,可以参考《ThinkPHP中config配置文件详解》。

以上代码仅供参考,其中的配置项名称、数据表名称可以根据自己的实际情况进行修改!

更多信息可以参考《ThinkPHP中关于RBAC使用详解》和《ThinkPHP3.1.3中APP_GROUP_LIST分组后RBAC无权限问题解决办法》。

太原seo排名突然消失,来做一个诊断

上周刚刚写了一篇关于《网站降权怎么办》的文章,今天晚上回来一看,“太原seo”这个关键词排名突然掉的找不到了,原来是排在第14位的,这是一个上线还不到20天的新站,排名来的这么快,掉的也这么快,因为在操作的过程中一直使用利于用户体验的白帽手法,这次关键词排名消失的这么离谱,接下来不要做任何的调整,先来做一个详细的诊断。

1、查看友情链接是否异常

在站长工具里边看了一下友链的情况,因为平时在换友链的时候都是找的相对熟悉的站长,并没有出现什么大的问题,就算是有一两个网站改版了,但是对于太原seo这个词的影响也不会这么大。最有可能的就是:这是一个刚上线20天的新站,在这几天加了15个友链,而且这几个友链都是其他站长在本地seo博客排名首页的高质量友链,有可能是被百度认为锚文本作弊了。接下来的几天,友链不再加了。

2、看外链

这个博客上线不到20天,除了换几个友链,其他的外链并没有做,就算是有,那也是别人转载文章时留下的,数量并不多,而且也没有出现大量垃圾外链的现象。所以,外链问题也可以排除。

3、看百度统计中的数据

打开百度统计,查看了相关数据,最近一段时间的访客数量没有明显的升降,索引量也就是那几个,并没有减少。

4、搜索品牌词、看site

搜索赵一鸣随笔或者是赵一鸣seo的时候,带www的二级域名出现了2次,网站刚上线就做了301,并且上周的时候,百度已经识别过来了,带www的域名和不带www的域名同时展现,但是今天一看,不带www的域名没有了,反而出现了2个带www的域名,难道这是百度对我301的多次识别?有点小问题。通过site首页网址,收录并没有太大变化,首页网址排在第一位。

5、看日志

用ftp下载了一下最近几天的日志,百度在访问网站的时候,并没有出现网站打不开的现象,404都很少,网站主机等硬件因素可以排除了。查看《如何分析网站日志》

6、想想最近做了什么操作

网站刚上线,每天更新2-3篇原创文章带视频,外链没有发,友链换了几个。昨天下午在文章页下边加了一个多说的评论插件,百度总不是因为我加了一个插件就这么对待我吧,没这么离谱。

总结:通过以上的分析得知,我的博客并没有非常明显的异常情况,各项数据也很稳定,但是排名就是掉了,可以判断就是百度的考验临到了,这个时候不要随意修改网站的任何地方,特别是标题、关键词和描述,这几天只要正常优化,慢慢等待排名恢复就行。

提高企业网站转化率的秘密

这几天和几个做企业站的站长聊了一下,他们都在诉苦,而且原因都一样:公司的产品在网站上没有转化率,老板都不想再继续在网站上浪费时间了,想转到店铺那边,因为店铺可以直接实现成交,网站转化率太低了。其实网站的转化率跟行业有关,但最主要的还是站长没有找到网站转化的技巧,下面我来分享一下提高企业网站转化率的秘密。

作为一个SEO,装修根本一点都不懂,我能做的只是通过网络来吸引客户,然后实现转化,剩下的事情只能交给别人去做。前几天做了一个本地的装修网站——太原雅辉装修公司,自上线以来总共接到18个业主的电话,其中成交了8个,平均转化率是44.444%。其他的行业不太懂,但是通过和其他的一些装修公司交流,我发现这个网络转化率相对来说还是不错的,有信心继续做下去。

在百度搜索太原装修公司或者是太原装修网,看看其他的网站都是非常的高达上,网站也做的非常漂亮,再对比一下太原雅辉装修公司这个网站,有点小巧的感觉,对于一个装修网站来说,确实算不上是最好的,但是话说回来,能盈利的网站就是好网站。既然在外观上比不上他们,那就得从内容下手了。

这个网站是怎样实现转化的?高转化率是怎么做到的?

1、让用户感到舒服

搜索本地装修公司或者是装修网的用户群体可以分为:业主(我们的目标用户)、装修公司(竞争对手)、设计师(想查找装修设计图)、工人(想学习装修、找装修问题的答案或者是找工作)。把用户大致分为这几类之后,我在一开始设计太原雅辉装修公司网站的导航的时候,就按照这几类需求来做,并且导航的前后顺序都是按照用户需求的大小以及最能实现转化的内容来分类,最后就形成了网站现在的导航。这一步在做网站设计之前就要确定好的。

首页内容都是根据导航中的分类来布局的,从上到下,从左到右,基本上每一个来到网站的用户都能清立刻的找到他想要的内容(只要是网站提供的),给用户一个清晰的感觉,让他在站内随心所欲的浏览,只要他使用的舒服了,自然不会排斥这个网站,先奠定网站转化的第一步。

2、站内内容满足用户需求

首页导航以及内容主要是给用户一个大致选择的方向,让他知道我们的网站主要是做什么的,主要提供哪些服务,然后在站内重点满足这些需求。太原雅辉装修公司网站里边的所有内容都是我根据用户需求手动添加的,在文章里边也添加了一些描述性的语句,告诉用户,我们这个网站是值得信赖的,这个装修公司也是靠谱的,能够以最实惠的报价满足他的装修需求。例如:家装效果图》书房装修》8平米儿童小书房装修效果图这篇文章,除了必不可少的为业主提供儿童书房装修效果图之外,在文字中主要关心到了儿童的书房主要是需要一个安静读书学习的环境,针对不同性别的儿童、不同喜好的儿童都给出了相应的书房装修效果图,还有就是告诉用户,他选择太原雅辉装修公司来做书房装修的好处,文章最后一段话就是重点。所有的内容都要围绕用户的需求来做。

3、主动引导用户联系我们

所有的网站导航都提供了联系我们这个栏目,网站主体的左右两边还有很多的在线联系工具,可以有什么用呢?转化率照样还是很低,做竞价的时候,有访客,有流量,可就是没人联系。所以,重点不是网站是否提供了在线联系的工具,有时候用户需要去提醒。太原雅辉装修公司网站的每一篇文章最后边都主动提示用户去联系,不管是qq联系还是打电话,在网站内容完善的情况下,用户看的还不错,主动提供一个联系方式,就是在满足用的需求,用户不会觉得烦,而且还很乐意去主动联系你,省的重新回到导航,找到联系我们查找联系方式了。

替换用户输入的QQ表情

有时候用户在评论某些信息的时候喜欢用QQ表情,但是这些表情在提交之后都是以文本的形式存在的,比如[嘻嘻]、[哈哈]等等,其实这些表情都是一些gif动态图,所以我们需要先找到用户提交的文本中包含哪些表情文本,然后再把这写文本替换成对应的表情gif地址。代码如下:

<?php
header(‘content-type:text/html;charset=”utf-8″‘);
$arry = array(
‘bishi’=>'[鄙视]’,
‘haha’=>'[哈哈]’,
‘liulei’=>'[流泪]’,
‘xixi’=>'[嘻嘻]’,
‘zhuakuang’=>'[抓狂]’
);
$content = ‘你好,今天晚上想吃点什么呢?[嘻嘻],我也是刚刚下班,要不咱们一块儿去吃饭吧[抓狂]’;
preg_match_all(‘/\[.*?\]/’, $content,$bq);
if($bq[0]){
foreach($bq[0] as $v){
foreach($arry as $key=>$value){
if($v==$value){
$content = str_replace($v, “<img src=./images/$key.jpg />”, $content);
continue;
}
}
}
$pdo = new PDO(‘mysql:host=localhost;dbname=think’,’think’,’think’);
$pdo->query(‘set names utf8’);
$query = ‘select * from think_hope where id=26’;
$result = $pdo->query($query);
$res = $result->fetchAll(PDO::FETCH_ASSOC);
echo ‘<pre>’;
print_r($res[0]);
}
(完)!

通过JavaScript实现页面打印功能

在实际开发过程当中,用户需要打印当前页面的内容,比如说在教育系统中,教师组卷成功之后,要把这套试卷打印下发给学生,通过JavaScript可以轻松实现打印功能,代码如下:

CSS部分:

*{margin:0; padding:0;}
td{height:30px;line-height:30px;text-align:center;padding:0 10px;border:1px solid #ccc;}
.clear{width:100%;height:100%;position:fixed;z-index:99;background-color:rgba(0,0,0,0.5);display:none;}
#list{width:500px;overflow:auto;padding:10px;background-color:#fff;position:fixed;left:50%;margin-left:-250px;top:30%;z-index:100;display:none;}
a{width:100px;height:30px;display:block;background-color:#ccc;text-align:center;line-height:30px;color:#fff;clear:both;}
HTML部分:

<div class=”clear”></div>
<div id=”list”>
<div id=”printContent”>
<table cellpadding=”0″ cellspacing=”0″>
<thead>
<tr>
<td>ID</td>
<td>用户名</td>
<td>QQ</td>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>赵一鸣</td>
<td>1047832475</td>
</tr>
</tbody>
</table>
</div>
<a href=”javascript:;” onclick=”startPrint();”>开始打印</a>
</div>
<a href=”javascript:;” onclick=”showPrintContent();”>打印</a>
JavaScript部分:

//显示打印内容
function showPrintContent(){
document.getElementsByClassName(‘clear’)[0].style.display = ‘block’;
document.getElementById(‘list’).style.display = ‘block’;
}
//开始打印
function startPrint(){
//指定打印区域
document.body.innerHTML = document.getElementById(‘printContent’).innerHTML;
window.print();
}
将以上代码复制到html页面中,即可看到效果!

通过MYSQL数据库操作Session会话完整源码类

PHP中的session,不仅可以通过文件和cookie来操作,当网站访问量过大的时候,用数据库来存储session信息是最高效的,下面是我的测试代码,仅供参考!

<?php
class Session{
//session有效时长
static public $maxtime;
//指定session数据表
static public $table;
//初始化
static function run($maxtime, $table){
if(ini_get(‘session.save_handler’)==’user’ || ini_set(‘session.save_handler’, ‘user’)){
session_set_save_handler(
array(__CLASS__, ‘start’),
array(__CLASS__, ‘close’),
array(__CLASS__, ‘read’),
array(__CLASS__, ‘write’),
array(__CLASS__, ‘destroy’),
array(__CLASS__, ‘gc’)
);
}
self::$maxtime = $maxtime ? $maxtime : 1000;
self::$table = $table ? $table : ‘photos_session’;
//开启session会话控制
session_start();
}
//开
static function start($path, $session_name){
return true;
}
//关
static function close(){
self::gc();
session_unset();
session_destroy();
return true;
}
//读
static function read($sid){
$sql = ‘select * from ‘.self::$table.’ where session_id=’.”‘$sid'”;
$sessionObj = Db::$db->query($sql);
$sessionArry = $sessionObj->fetchAll(PDO::FETCH_ASSOC);
return count($sessionArry)>0 ? $sessionArry[0][‘data’] : 0;
}
//写
static function write($sid, $data){
//获取当前seesion_id();
$sid = session_id();
//获取当前时间
$nowtime = time();
//判断当前用户session是否已经存在
$sql = ‘select * from ‘.self::$table.’ where session_id=”‘.$sid.'”‘;
$sessionObj = Db::$db->query($sql);
$sessionArry = $sessionObj->fetchAll(PDO::FETCH_ASSOC);
//如果已经存在就update,如果不存在就insert
if(count($sessionArry)>0){
$sql = ‘update ‘.self::$table.’ set data=’.”‘$data'”.’, nowtime=’.”‘$nowtime'”.’ where session_id=’.”‘$sid'”;
Db::$db->query($sql);
}else{
$sql = ‘insert into ‘.self::$table.’ set data=’.”‘$data'”.’, session_id=’.”‘$sid'”.’, nowtime=’.”‘$nowtime'”;
Db::$db->query($sql);
}
}
//卸
static function destroy($sid){
$sql = ‘delete from ‘.self::$table.’ where session_id=’.”‘$sid'”;
Db::$db->query($sql);
}
//垃
static function gc(){
$nowtime = time();
$sql = ‘delete from ‘.self::$table.’ where time<‘.($nowtime-self::$maxtime);
Db::$db->query($sql);
}
}
熟悉面向对象的模式,采用PDO连接数据库。

以上源码用到了数据连接,是我自己封装的一个类,源码查看《PHP封装MYSQL数据库操作类源码》。将源码复制粘贴到一个php文件中,直接调用即可使用!

通过PHP操作MYSQL数据库之PDO数据库抽象层

为什么要讲PDO呢,原因有3个:

1、市面上最用最多的,大部分企业使用PDO;

2、MYSQLI只支持mysql数据库,PDO支持大部分数据库;

3、以后做的项目都是使用PDO作为数据库抽象层来实现的。

mysqli是mysql数据库的加强,主要使用了预处理机制、错误处理机制、采用面向对象编程模式。

一、PHP如何操作数据库?

与具体数据库的扩展:PHP想操作那个数据库,需要开启这个数据库的扩展,提供操作这个数据库的函数。

二、什么是PDO?

PDO是一个mysql官方封装的,基于面向对象编程思想的,使用C语言开发的数据库抽象层。

三、PDO数据库抽象层的概念:

它是封装的一个类,就是一个控制数据库的新的操作方法,将具体的操作数据库的代码封装到数据库抽象层,如果需要操作某个数据库,只需在PHP代码里告诉数据库抽象层,你想使用哪一个数据库就可以了。

下面通过代码引出PDO:

//写一个函数,根据传递的参数来操作不同的数据库
function mysql_db($type){
if($type==’mysql’){
mysql_connect();
mysql_select_db();
}elseif ($type==’mssql’){
mssql_connect();
mssql_query();
}elseif ($type==’oracle’){
// 具体操作某个数据库的函数
}
}
mysql_db(‘mysql’);
function mysql_q($type,$sql){
if($type==’mysql’){
mysql_query($sql);
}
}
如何使用PDO?

和当前使用mysql非常像,要想使用mysql,需要开启mysql扩展,要想使用PDO,也需要开启PDO扩展。

PDO是与PHP5.1一起发行的,默认包含在PHP5.1的安装文件中,由于PDO需要PHP5面向对象特性的支持,因此其无法在PHP5.0之前的版本中使用。

默认情况下,PDO在PHP5.2中卫开启状态,但是要启用对某个数据库驱动程序的支持,人需要进行相应的配置操作,在不同的操作系统环境下配置的方法如下:

(1)在LInux环境下,要使用mysql数据库,可以在configure命令中添加如下选项:

–with-pdo-mysql=/path/to/mysql/installation

(2)在windows环境下,启用PDO需要在php.ini文件中进行配置,要启用PDO,首相必须加载“extension-php_pdo.dll”,如果要想支持某个具体的数据库,那么还需要加载对应的数据库选项,例如要支持mysql数据库,则还需要加载“extension=php_pdo_mysql.dll”选项。

Extension = php_pdo.dll

Extension = php_pdo_sqlite.dll

Extension = php_pdo_mysql.dll

开启这个扩展驱动,就可以使用这个扩展给我们提供类了。

如果了解面向对象的基本概念以及用法,我们知道如果要使用某个类里边的方法,需要实例化一个对象,利用PDO操作数据库也是一样的,示例代码如下:

$dsc = “mysql:host=localhost;dbname=list”;
$user = “list”;
$pwd = “list”;
$pdo = new PDO($dsc,$user,$pwd);
$query = “select * from orders”;
$result = $pdo->query($query);
$res = $result->fetchAll(PDO::FETCH_ASSOC);
echo ‘<pre>’;
print_r($res[0]);
echo $res[0][ordertime].'<br/>’;
for($i=0; $i<count($res); $i++){
echo $res[$i][ordertime].'<br/>’;
}
这个流程跟在命令行里边操作数据库是类似的,首先打开数据库,确定host地址和需要操作的数据库,然后选择数据库名和密码。最后实例化的对象参数就是这个数据库的相关信息。

通过PHP操作MYSQL数据库之面向对象

在做PHP开发的过程中,用的最多的还是面向对象的思想,所以操作数据库,也得学会面向对象,相关代码如下:

//1、连接数据库,分别输入地址、账号和密码
//其实就是通过new关键字实例化一个对象,里边的参数就是在构造函数__construct里执行的
$db = new mysqli(“localhost”,”root”,””);
//2、选择一个数据库来操作
$db->select_db(“list”);
//3、设置编码格式是utf8,这种设置方法容易引起数据库注入问题,刚学php操作数据库可以这样写,正规的方法会在后面的笔记中更正!
$db->query(“set names utf8”);
//输出查询结果
$query = “select * from orders order by id desc”;
$result = $db->query($query);
while($res = $result->fetch_object()){
echo ‘<pre>’;
print_r($res);
}
//更改某个id对应的数据
$db->query(“update orders set ordermoney=’10元’ where id=2”);
//更改某个字段名
$db->query(“alter table orders change ordertime time date”);
//删除某条记录
$db->query(“delete from orders where id=5”);
如果要输出数组形式的结果集,用以下代码即可:

$res = $result->fetch_array()
输出查询记录总共有多少条:

echo $result->num_rows;
个人学习笔记,仅供参考,后续会继续补充!

通过PHP操作MYSQL数据库之面向过程

面向过程:用PHP操作MYSQL数据库演示代码如下:

//1、//连接数据库,分别输入地址、账号和密码
$db = mysql_connect(“localhost”,”root”,””) or die(“数据库连接不成功”.mysql_error());
//2、选择其中的list数据库
$select = mysql_select_db(“list”,$db) or die(“数据库选择不成功”.mysql_error());
//3、设置编码格式是utf8,这种设置方法容易引起数据库注入问题,刚学php操作数据库可以这样写,正规的方法会在后面的笔记中更正!
mysql_query(“set names utf8”);
//4、通过id倒序的方法查询orders表中的内容
$result = mysql_query(“select * from orders order by orderid desc”);
//以关联数组的形式输出结果集
while($res=mysql_fetch_array($result,MYSQL_BOTH)){
echo ‘<pre>’;
print_r($res);
}
//5、将数据插入到数据库
mysql_query(“insert into orders(ordermoney,ordertime) values(‘300元’,’2016/8/31′)”);
//6、修改orders表中id为3的ordermoney
mysql_query(“update orders set ordermoney=’100元’ where orderid=3”);
//7、修改orders表中的字段名orderid为id
mysql_query(“alter table orders change orderid id int(10)”);
上面代码在执行查询操作的时候用关联数组输出了结果集,其实这里有很多中输出格式,包括数组(关联数组、索引数组、同时包括关联数组和索引数组)、对象等等,写法如下:

1、输出关联数组形式的结果集:

$res=mysql_fetch_array($result,MYSQL_ASSOC
2、输出索引数组形式的结果集:

$res=mysql_fetch_array($result,MYSQL_NUM)
3、同时数组关联数组和索引数组的结果集:

$res=mysql_fetch_array($result,MYSQL_BOTH)
4、输出对象形式的结果集:

$res=mysql_fetch_object($result)
5、查看总共输出多少条记录:

echo mysql_num_rows($result);
以上代码仅供作为笔记参考,有些地方写的不是很全面!

通过Webpack的code-spliting实现Vue组件异步按需懒加载

之前使用AngularJs做项目的时候,发现一个问题,用户打开首页,所有的controller都会加载进来,这样是不科学的,因为首页只需要首页的controller,其他页面可以做按需加载,也就是懒加载,用到的时候再去请求,所以最后通过RequireJs实现了AngularJs的controller的懒加载。

同样在VueJs中也存在一个问题,因为VueJs的核心是组件,通过Webpack打包工具最后会生成一个特别大的bundle.js文件,在用户网络不太好的情况下,想要在2s内加载完这个特大js文件几乎是不可能的,所以同样需要做按需懒加载,幸好,Webpack提供了code-spliting功能可以帮助我们做到这一点。

方法一:使用vue-cli脚手架构建一个vue项目,然后使用vue官网提供的方法,通过异步来引入组件,即可实现按需加载

建议参考:

《使用vue-cli脚手架构建项目目录》

《Vue路由懒加载方法》

根据以上两步,即可实现路由懒加载,项目运行之后,在chrome浏览器中打开network网络面板,点击任意路由进行跳转,看看是不是实现了按需加载。

方法二:在不用vue-cli脚手架的情况下实现组件的懒加载

1、首先通过npm安装html模板插件,具体方法查看:《Webpack全套入门教程之html模板插件》。

2、配置webpack的entry和output选项,例如:

module.exports = {
entry: __dirname + ‘/src/public/js/main.js’,//已多次提及的唯一入口文件
output: {
path: __dirname + ‘/src/build/’,//打包后的文件存放的地方
filename: “[chunkhash].build.js”,//打包后输出文件的文件名
publicPath: ‘./build/’
},
};
publishPath主要指定资源文件的引进目录。例如在express中,指定了public/build是网站的根目录,网站的源文件存放在public中,那么就需要设置path:”./build”指定打包输出到该目录,而publicPath就需要设置为”/”,表示当前路径。

3、配置node静态资源目录和模板目录,例如:

var http = require(‘http’);
var express = require(‘express’);//引入express模块
var app = express();//初始化express
var bodyParse = require(‘body-parser’);//接收post数据
//设置前端模板录
app.set(‘views’, __dirname + ‘/src/’);
//设置前端模板文件类型
app.set(‘view engine’, ‘ejs’);
//设置静态资源目录
app.use(express.static(__dirname + ‘/src/’));
完成以上三步,再次按照vue官方给出的组件异步懒加载方法,在路由中配置异步组件进行加载即可。

通过百度推广后台进行数据分析

首先要有一个百度推广的账号密码。注册方法如下:

第一步:打开百度推广网址(http://www2.baidu.com)

第二步:开始注册帐号,注意密码一定要大写字母+小写字母+数字组合,很多人注册不了帐号,就是因为这个地方没有搞清楚。

注册百度推广账号

第三步:注册好之后,开始登录,然后来到推广界面,选择进入“搜索推广”。

点击进入搜索推广

第四步:选择“关键词规划师”,进行相关关键词搜索规划。

选择关键词规划师

在搜索框中输入你的相关关键词,然后进行查找,并且把这些词都记录下来,按照昨天在NO2根据百度下拉框和相关搜索分析用户需求中所讲的关键词分类法进行分类。

做完以后,对下拉框和相关搜索中的数据进行整合,得出最新的数据。

下拉框和相关搜索以及百度推广后台的数据,是通过筛选大量关键词进行数据分析的,下一篇继续分析百度指数和百度搜索结果的数据,得出最后的结论。

图像处理之图像拷贝缩略图原理imagecopymergegray、imagecopyresampled

1、imagecopymergegray 用灰度拷贝并合并图像的一部分:

imagecopymergegray($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct)。

$img = imagecreatetruecolor(300, 300);
imagefill($img, 0, 0, imagecolorallocate($img, 255, 0, 255));
$jpeg = imagecreatefromjpeg(‘test.jpg’);
imagecopymergegray($img, $jpeg, (imagesx($img)-imagesx($jpeg))/2, (imagesy($img)-imagesy($jpeg))/2, 0, 0, imagesx($jpeg), imagesy($jpeg), 50);
header(‘Content-type:image/jpeg’);
imagejpeg($img);
2、imagecopyresampled缩放图片:

imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h)。

代码如下:

$img = imagecreatetruecolor(300, 300);
imagefill($img, 0, 0, imagecolorallocate($img, 255, 255, 255));
$jpeg = imagecreatefromjpeg(‘test1.jpg’);
$jpeg_width = imagesx($jpeg);
$jpeg_height = imagesy($jpeg);
if($jpeg_width>$jpeg_height){
$target_width = 200;
$target_height = (200/$jpeg_width)*$jpeg_height;
}else if($jpeg_width<$jpeg_height){
$target_height = 200;
$target_width = (200/$jpeg_height)*$jpeg_width;
}else{
$target_width = 200;
$target_height = 200;
}
imagecopyresampled($img, $jpeg, (imagesx($img)-$target_width)/2, (imagesy($img)-$target_height)/2, 0, 0, $target_width, $target_height, imagesx($jpeg), imagesy($jpeg));
header(‘Content-type:image/jpeg’);
imagejpeg($img);

推荐2款实用方便的桌面视频录制软件

大家看我博客中有一些SEO和建站技术视频,这些都是我用桌面视频录制软件录制好之后上传到土豆视频或者是淘宝视频的,画面非常清晰,为了方便大家使用,现在我提供一下2款视频录制软件的下载地址,供大家参考。

第一种:FSCapture(有标尺、截屏、录制视频等多种功能)

下载地址:

http://yunpan.cn/cFdyPMSncZjIg (提取码:e485)

使用方法:下载后,直接放到电脑上,打开文件夹,双击软件图标即可使用。

第二种:Camtasia Studio

下载地址:

http://yunpan.cn/cFdymxqts9X7C (提取码:0da9)

使用方法:

1、安装时使用以下信息注册:

Name:huangqiang.me

Key:ACUFF-ZNWAC-PANMB-CC7NG-TM377

2、运行前,将以下信息写入系统Hosts文件:

127.0.0.1 65.52.240.48

127.0.0.1 activation.cloud.techsmith.com

写入方法:

1、手动进入目录“(C:\Windows\System32\drivers\etc)”使用记事本修改;

2、使用 HostsX 修改(推荐)。

使用过程中有任何问题,可以在Q群里找我解决!

网站降权怎么办

只要是做了几年的SEO,肯定都经历过网站被降权的事情,今天我来分享一下网站被降权后怎样尽快恢复。

1、持续的更新高质量内容

网站被降权是因为搜索引擎对你的网站评分下降,甚至是彻底的不信任,要想改变现状,就得讨好搜索引擎,从高质量的内容开始。

2、高质量外链必不可少

外链这个问题说了很多次了,百度虽然把外链的投票作用看得不像以前那么重了,但是只要还有作用,那就必须得去做,但是一定要保证质量。到人流量多的高权重平台发布单向锚文本外链的效果是最好的。人多的地方,你的文章还能被转载,例如去A5、搜外写软文。推荐查看:如何写好软文。

3、增强网站自身素质

搜索引擎会把用户最喜欢的网站排在前面,现在网站被降权了,越是要保证网站有一个好的数据统计,尽量用手中所能用到的所有资源去引流,增加网站的ip以及停留时间。但是不要去刷流量。之前有个站长让我给他分析网站,我问他这一个月之内他做了什么操作,听了他的叙述之后,也没发现这些操作会被降权呀,都是一些普通的优化方式,但是看了他的统计数据,发现流量是忽高忽下,而且跳出率极高,最后他告诉我看网站一直没有起色,就刷了10天的流量,这下倒好,排名没上来,反而被降权。

4、如果是被百度误伤,可以去投诉

搜索引擎只是机器程序,不可能一点错误都不出现,如果分析完所有的数据之后,实在是找不出网站被降权的原因,那就可以去百度站长平台进行投诉。

服务器坏掉、网站优化采用黑帽、随意修改网站标题、友情链接的负面影响等都会产生不同程度的降权,如果是服务器原因导致降权,想要恢复大概需要2周的时间,他人删除友链导致的降权需要4周恢复;采用黑帽手段,发布大量的垃圾外链导致的降权,最少也得2-3个月才能恢复。有些网站与其花时间去恢复降权,还不如重新做一个,所以,优化的时候要谨慎小心,千万不要被降权。在优化网站的时候,一定要懂得:如何避免网站被降权。

网站上线第二天就被收录的秘诀

想要关键词在搜索引擎上有排名,首先第一条就是要确保网站有稳定的收录量,网站上线之后,基本上所有的站长急切盼望的就是一件事:“网站赶紧被收录”,下面我以赵一鸣随笔博客的上线第二天收录经历来具体谈一下。

这个博客是在2015年5月3日晚上10点上线,到了5月5日早上6点查询的时候,网站首页已经被收录了。

为了不造成自我困扰,首先要确切的知道:网站怎么算是被收录?从哪里查询网站收录?大多数站长都喜欢用site搜索指令来查询网站收录量,确切的说,site高级搜索指令的真正作用并不在于查询收录数量,而是看收录的质量。通过site网址,我们可以粗略的看到网站大概的收录量,那只是一个估计的数值,对于一个刚刚上线的新站来说,通过site查询收录可能就没有结果,导致站长误认为网站还没有被收录。

真正正确的查询收录的方法是什么呢?1、利用百度统计查询收录‘2、在百度站长平台查询收录;3、新站上线,可以搜索一下品牌词,一般品牌词都会有展现的。

好,先搞懂了这个,现在来说说怎么能让新站快速被收录。

1、增加网站的受众。百度会通过各个渠道的数据得知一个新站是否受欢迎,如果网站上线之后有不错的访问量,这就给了搜索引擎一个不多的第一印象,它是很愿意收录这种网站的。

2、有时间、有资源可以去增加一些外链,外链的其中一个作用就是增加收录,为了避免错误的操作,可参考站长关心的外链发布问题总结。

3、及时的更新网站内容。网站刚上线,一定要告诉搜索引擎:这个网站是有人在管理的,别上线之后就完事大吉了。不会写文章的站长可以看根据用户需求快速写原创文章。

4、为了确保给搜索引擎一个好的第一印象,网站最好不要急匆匆的上线,把所有该做的基础工作做好之后再上线。网站上线之前必须要做的检查。

为了尽早的上排名,放心大胆的去做吧!

网站上线之前必须要做的检查

网站在本地做好之后,不能贸然立刻上线,如果这个网站以后要做SEO优化,那么上线前的一些检查工作就越显得重要了。

1、网站的TKD是否书写正确

Title是网站的标题,它是整个网站的灵魂,搜索引擎也特别重视这个地方,既然要做优化,就必须要根据用户需求写最好的标题,上线之后就不要随便改来改去;

Keywords是网站的关键词,现在这个标签对于关键词排名已经没有影响了,可以不写;

Description是网站的描述,这个标签对关键词排名也没有影响,但是会影响用户的点击,好的描述能够让用户眼前一亮,特别是网站优化处于中后期的时候,用户的点击投票是非常重要的。

如果不会写TKD,可参考通过分析用户需求确定网站标题的三个步骤!

2、站内是否有“适量足够的内容”

网站上线之后肯定会有蜘蛛前来访问,如果在这个时候,站内一点内容都没有,那么给搜索引擎的第一印象就不太好,它认为这是一个空网站,没有什么价值可言,所以在上线之前需要根据自己行业的不同情况,适当的填充一些内容。太原雅辉装修公司的网站在上线之前填充了50篇文章。本博客在上线之前填充了21篇文章。

3、站内基础代码检查

做网站优化,基础的代码优化是必须的,每个页面只能使用一个h1标签、图片优化该有的是是不是都做了、代码是否合并并且做到了最简洁、网站重要位置最好不用使用js、网站整体框架是不是用的有利于搜索引擎读取的div+css布局等等。

4、网站链接地址是否正确

我建议网站上线之后要做绝对地址,但是网站在本地测试的时候就不需要做,前几天一个站长遇到一个问题,他的网站上线之后,打开一看发现一团糟,好像根本没有写css样式,但是他在本地看的时候是正常的,这就奇怪了。右键查看他源代码的时候,发现他css样式的路径是localhost/1/style.css这种形式,一看就是在本地测试的时候使用了绝对地址,所以这个问题要特别注意:本地测试使用相对路径,网站上线之后使用绝对路径。

5、网站优化小细节检查

现在不做优化的网站不多,既然要做优化,那么与优化相关的一些细节问题就一定不能忽略,具体包括:网站是否做301重定向;是否有网站地图、是否有404错误页面、是否有robots文件、网址后边的小尾巴(/index.html、/index.php等)是否去掉了这些问题。

6、域名解析绑定空间

这一步是必须要做的,如果不解析域名、不绑定空间,起码通过你所购买的域名是不能访问网站的。查看域名解析和绑定以及301重定向操作视频。

7、网站的安全设置

每个网站使用的后台程序都不一样,每个程序都不是100%的安全,但是我们要尽量做好安全性设置,如果站长对于这方面不熟悉,可以咨询公司的程序员,也可以与我交流。

如果以上几点都做好了,网站就基本上可以上线了!需要特别注意的是:网站没有正式开始上线优化之前,千万不要去解析域名或者是发外链,因为这类操作会导致网站被收录,后期再进行大量的更改,会降低网站在搜索引擎那里的信任度,后期的推广工作会带来一定的难度!

网站图片优化的实用技巧

各大搜索引擎对于图片的识别技术越来越成熟,但还是没有达到能100%识别图片内容的地步。网站中的图片优化急需一个完整的解决办法,下面我以太原雅辉装修公司网站中的近1000张图片优化经历来分享网站图片优化的实用技巧。

网站图片优化的实用技巧

一、站内图片该有的属性一个都不能少

1、alt:用户是不会看这个属性的,但是对与搜索引擎来说却非常管用,现在搜索引擎还没有达到能100%准确识别图片内容的时候,所以alt属性依然不可忽视。

2、width、height:同样,用户也不会关心这个图片的宽高,只要看上去舒服就行。蜘蛛在爬取网站内容的时候,如果在一个图片里边加上宽高属性,搜索引擎能更方便的识别图片的大小范围,省下很多事。

二、图片周围添加与标题和文章内容相关的描述文字

太原雅辉装修公司站内的一篇文章《小清新90后女生卧室装修效果图》,关于90后女生卧室装修效果图的图片不止一种风格,对应的图片也不一样,所以要根据图片的内容在其周围具体描述。

三、整个网站的站内图片尺寸尽量一致

图片有的大有点小,有的偏左有的偏右,这种排版,首先对于用户来说就感觉非常不好,所以,对与站内大多数图片来说,尺寸大小尽量一致一些。太原雅辉装修公司站内所有的图片大小都是根据文章主体的大小来做的,宽是550px,高是368px。

四、去除图片水印

为了提升用户体验,站内图片尽量不要加大范围的水印。如何去除图片水印

五、其他方面

如果想要图片参与排名的话,可以适当的给图片做一些外链,还是有效果的!

网站站内优化如何做

随着百度不断的降低外链的评分,站内的优化就越来越重要,除了分析用户需求之外,下面这些基础的站内优化在上线之前是必须要做好的。

第一:图片代码优化

<img src=”xxx.jpg” alt=”说明文字” />;

添加alt属性,alt属性中的说明文字尽量写详细具体,其中包含相关关键词;

<a href=”” title=”说明文字”><img src=”xxx.jpg” alt=”说明文字” /></a>;

如果图片带有链接,可以给a标记使用title属性,说明文字要跟链接指向页面的关键词有关;例如链接指向某一篇文章,说明文字可以使用文章名称;

图片后面添加一些说明文字(尽量详细具体);

file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.jpg。

如果对图片优化还不是太清楚,可以参考:网站图片优化的实用技巧

第二:<h1>文字</h1>:一般情况,一个网页用一次<h1></h1>

网站所有页面<h1></h1>中全部是首页核心关键词,且带链接指向首页;(主要做核心词排名的企业网站或小网站);例<h1><a href=”首页网址”>1个核心词</a></h1>;

网站各个页面<h1></h1>中使用当前页关键词,首页使用核心词,栏目页使用栏目关键词,文章页使用文章名称;(重视长尾词优化的网站,比如资讯网站)。

第三:加粗<strong></strong>:关键词或重要文字适当采用<strong></strong>代码(发文章)

W3C验证:网站页面的html源代码尽量符合w3c标准;对于SEO有一点好处;

http://validator.w3.org/。

第四:网站w3c练习

1. 代码要小写,大写都错误;(特别是权重代码);

2. img要有alt属性;

<base target=”_blank” />,网页中所有的链接全部新窗口打开,就不需要单独给每个a标记加target=”_blank”。

第五:网站内容优化

1、针对搜索引擎:内容有一定的原创度(提高收录几率);包含关键词及链接;

2、网站内容来源:只要保持一颗为用户解决问题的心态去写文章就行,不必过分的注意字数,文章篇幅不要太长,图文结合。

如何删除百度下拉框和相关搜索中的负面信息

如何删除百度下拉框和相关搜索中的负面信息

百度推出下拉框和相关搜索之后,很大程度上方便了网民使用百度搜索引擎,所以他们也会非常的信任下拉框和相关搜索中的信息,如果里边出现了负面信息,无疑会对公司品牌以及信任度产生重大影响,下面我来分享一种免费的删除百度下拉框和相关搜索负面信息的方法。

1、打开百度投诉页面:http://tousu.baidu.com

百度投诉页面

2、点击“产品建议”选项,可以看到在“详细说明”里边可以提交下拉框和相关搜索的内容。

3、在填写信息的时候,最好是图文并茂,这样能增加投诉成功的几率。

4、如果是个人的相关信息被侵权,可以上传本人身份证的清晰扫描件或照片。

5、情节严重的话,可以请代理律师上传被代理人的营业执照或者是身份证等相关证件的扫描件。

做好以上操作之后,就可以静待百度处理了,一般2-3天就会有结果,你可以再次用百度账号登录百度投诉页面,查看“投诉记录处理结果”即可。

我对javascript中【闭包】的理解

闭包(blosure)是javascritp语言学习中的一个难点,除了一些简单的事件处理之外,很多的高级应用都要依靠闭包来实现。下面是我对闭包的一些理解,希望对大家有所帮助。

一、变量的作用域

要理解闭包,首先必须理解Javascript特殊的变量作用域。

变量的作用域无非就是两种:全局变量和局部变量。

Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。

var n = 100;
function f1(){
alert( n );
}
f1(); //100
在函数外部肯定是无法读取函数内部的局部变量的。

function f1(){
var n = 100;
}
alert( n ); //undefined
这里有个细节需要注意:在函数内部声明变量的时候,一定要加上var,否则这个变量实际上就是一个全局变量。

function f1(){
n = 100;
}
f1();
alert( n ); //100
那么,如何从外部读取函数内部的局部变量呢?

在一些特殊情况下,我们需要得到函数内部的局部变量,但是在前面说到,正常情况下是办不到的,只有变通一下才能实现。

我们在函数的内部,再定义一个函数:

function f1(){
var n = 100;
function f2(){
alert( n ); //100
}
}
在上面的代码中,函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1就是不可见的。这就是Javascript语言特有的”链式作用域”结构(chain scope),子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。

既然f2可以读取f1中的局部变量,那么只要把f2作为返回值,我们不就可以在f1外部读取它的内部变量了吗!

function f1(){
var n = 100;
function f2(){
alert( n );
}
return f2;
}
var result = f1();
result();//100
二、闭包的概念

上一节代码中的f2函数,就是闭包。

各种专业文献上的”闭包”(closure)定义非常抽象,很难看懂。我的理解是,闭包就是能够读取其他函数内部变量的函数。

由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成”定义在一个函数内部的函数”。

所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

三、闭包的用途

闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

怎么来理解这句话呢?请看下面的代码:

function f1(){
var n = 100;
nAdd=function(){n+=1}
function f2(){
alert( n );
}
return f2;
}
var result=f1();
result(); // 100
nAdd();
result(); // 101
在这段代码中,result实际上就是闭包f2函数。它一共运行了两次,第一次的值是100,第二次的值是101。这证明了,函数f1中的局部变量n一直保存在内存中,并没有在f1调用后被自动清除。

为什么会这样呢?原因就在于f1是f2的父函数,而f2被赋给了一个全局变量,这导致f2始终在内存中,而f2的存在依赖于f1,因此f1也始终在内存中,不会在调用结束后,被垃圾回收机制(garbage collection)回收。

这段代码中另一个值得注意的地方,就是”nAdd=function(){n+=1}”这一行,首先在nAdd前面没有使用var关键字,因此nAdd是一个全局变量,而不是局部变量。其次,nAdd的值是一个匿名函数(anonymous function),而这个匿名函数本身也是一个闭包,所以nAdd相当于是一个setter,可以在函数外部对函数内部的局部变量进行操作。

四、使用闭包需要注意到问题

(1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

推荐查看:《JavaScript对象循环引用与闭包导致的内存泄漏及其解决方案》。

(2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

(3)小心闭包陷阱(伪闭包)

什么是“伪闭包”呢?看下面这段代码:

function f1(){
var n = 100;
f2();
}
function f2(){
alert( n );
}
f1(); //undefined
函数f1在执行的时候执行力f2,但是f2不是一个闭包,因为它不符合闭包的定义。【闭包是“定义在函数内部的函数”,而不是执行】。所以f2在执行的时候,无法弹出n的值。

五、关于闭包的思考:

如果能理解下面这两段代码的执行结果,那就基本上理解闭包的运行机制了。

代码一:

var name = “bush”;
var obj = {
name : “obama”,
func : function(){
return function(){
return this.name
}
}
}
alert( obj.func()() );
代码二:

var name = “bush”;
var obj = {
name : “obama”,
func : function(){
var This = this;
return function(){
return This.name
}
}
}
alert( obj.func()() );
代码三:

var name = “bush”;
var obj = {
name : “obama”,
func : function(){
return function(){
return this.name
}
}
}
alert( obj.func().call(obj) );
关于this指向的问题:谁(哪个对象)执行了这个函数,那么这个函数内部的this指的就是谁?默认情况下,this指的是window作用域!

另外,如果你对变量、作用域的问题感兴趣,可以查看:《关于javascript执行顺序、变量提升、作用域的问题》。

代码二与代码三实现的是同样的效果,具体可查看《Javascript中call()和apply()方法的区别》。

我经常用的10种网站推广方法

网站推广有很多的形式,包括免费和付费。甚至说新媒体运营微博、微信,虽然不是直接针对网站进行推广,但是运营过程中总会有品牌曝光,间接的推广了公司官网。下面介绍一下我平时经常用到的10种网站推广方法。

1、投稿软文

投稿软文对SEOer的要求比较高,SEO投稿的平台有SEOwhy、A5、Chinaz、艾瑞、donews等。投稿的文章要求质量高,并且还要有一定的软文技巧,不然难以引导用户进入网站。

针对特定的产品行业,在我QQ群的群文件中有整理的400个可发外链的平台,包括各个行业,可以作为参考。

2、平台产品排名

分类信息平台的具体产品关键词排名远远好过企业站的内页关键词排名,所以利用这一点可以大量做平台内页的长尾词排名。但是需要注册大量平台账号,并且不断更新内容。

3、QQ群

利用QQ群实时在线用户,引导进入网站浏览内容。对站长的要求是:

(1)在群里要有一定的权威,能带动气氛并有一群人跟随;

(2)没事的时候不要乱发消息,免得打扰正常工作的人;

(3)会QQ营销技巧,并不是单单在群里说“来冒个泡、签个到”就可以了。

如果有需要可以参考《QQ群运营的核心思维》、《QQ群推广技巧》这两篇视频教程和文章!

4、QQ邮件

用邮件群发的形式把用户需要的内容发送到对方的QQ邮箱里,同时引导用户进入网站。QQ邮件营销要设置一个吸引人的标题并且还有简短的不错的内容。

这里需要注意一个问题,很多的站长在写博客的时候都有一个邮件订阅功能,这个功能不是随便就能用的,如果没有特别高质量的文章,最好不要天天发,这样用户看的烦了,会取消订阅。

引导用户订阅你的邮件时,要运用营销的手法,为用户提供某种重要的学习或参考资料,同时设置一个门槛,订阅了邮件才能免费获取,只要网上没有同类的教程,90%的人都会订阅。

5、QQ空间

QQ空间每天定时更新行业资料,如果能持续更新2年3年肯定效果非常好。不管是邮件的还是QQ空间的内容,都需要有一定的价值,没有价值的内容用户凭什么要去点击关注呢?

6、微博

可以到微博里面分享一些美好的故事或者美好的图片,吸引大量的粉丝。微博推广的重点在于吸引粉丝关注,就像群里需要更多人一样。然后在微博里面更新一些好玩的好看的或者有用的内容,用户自然会去点击。

发现很多的站长都不太关注微博,反而是做淘宝买产品的人用微博比较多。大家都有个观念,现在的站长很少关注微博,这其实是错误的,如果你看了月光博客的微博、卢松松的微博,就会发现其实很多做网站的人依然在使用微博,只不是是自己没有找到利用微博吸引粉丝的方法而已。

建议参考《微博营销#1#如何做好微博线下活动》、《微博营销#2#怎么用微博营销来提升关键词排名》

7、微信

首先要加大量的微信好友,然后更新有用的文章,或者申请微信公众平台推广内容,事实证明很多人通过关注微信看自己需要的内容。而我看到的一个穿衣打扮的微信公众号教女孩子怎么搭配衣服,然后再最末尾加上推荐的服装的淘宝地址,有很多女孩子会去点击这些链接。

8、论坛

(1)论坛个性签名:现在很多人都说没用,那是你还没有在论坛建立信用度和知名的情况下当然没用了;

(2)软文发布:热门帖子就是一个高权重的链接,并且能给网站带来大量的流量,论坛的帖子可以存活几年时间;

(3)解答问题:通过在论坛解答问题引起用户的关注。

做论坛,大家可以关注下小米的官方论坛,看看他们是如何搞活动、吸引粉丝的,绝对有帮助。

9、短信推广

经常收到一些短信说你有一份礼物,请登录***领取礼物。为什么我们不做一些活动然后群发短信呢?现在智能手机如此普及,点击一个链接进入并不是困难的事情,为什么我们没有运用呢?

比如我在北京君石担保网上就设置了一个在线问题解答的栏目,因为很多想要借款的人不知道自己是否符合贷款条件,网上的答案又是五花八门,所以,具体的问题需要具体解答。在提问的过程中,让用户填写自己的手机号码,告诉他10分钟内就可以收到短信回复,这样方便快捷,每一个短信号码都是一个渠道,后期可以重复利用。

10、生态圈

生态圈的建立是创建大量同行业的博客,然后博客做长尾关键词排名,将这些博客积累的粉丝引导进入网站。生态圈不同于站群,生态圈是白帽的推广方法,并且生态圈的链接属于高质量的链接。

注意,建立博客,首先是要为读者提供有价值的内容,不要总是想着怎么从博客给产品站引流,这样就站错位置了。先解决了别人的问题,最后自然能成就自己。

详解Javascript中arguments对象的的意义与用法

根据W3C手册中的解释:在函数代码中,使用特殊对象arguments,开发者无需明确指出参数名,就能访问它们。乍一看,这句话到底什么意思?还真是不明白,我们用下面这段代码来详细介绍arguments对象。

定义函数的时候有“形参”,执行函数的时候有实参,比如下面的代码:

function fn( a ){
var b = a+1;
alert( b ); //2
}
fn( 1 );
这里的实参只有一个,那么如果我们定义了一个函数,但是这个函数要在不同的地方被执行,每次执行的时候都要传入不同的参数,而且参数的个数不确定,这怎么办呢?

接下来我们说的arguments对象就可以完美的解决这个问题。比如下面的代码:

function fn(){
console.log( arguments.length );
}
fn( “a”,”b”,”c”,”d” );//4
fn( 1,2,”你好” ); //3
从上面的代码中可以看到,fn被调用了2次,每次调用时传入的参数都不一样,这里的参数叫做“不定参”,用arguments来表示。

我们做一个实际的案例来实现数组的push方法。

Array.prototype.push = function(){
for( var i=0; i<arguments.length; i++ ){
this[this.length] = arguments[i];
}
}
var arry = [1,2,3];
console.log( arry ); //1,2,3
arry.push( 4,5,6 );
console.log( arry ); //1,2,3,4,5,6
上面的代码就是数组push方法实现的原理,用这个方法可以帮助我们更好的理解arguments的用法!

注意:arguments对象和Function是分不开的。因为arguments这个对象不能显式创建,arguments对象只有函数开始时才可用。

下面来看argumens的一个callee属性,首先我们执行一个函数,传参时候,打印一下这个arguments:

function fn(a,b,c,d,e){
console.log(arguments);
}
fn(1,2,3,4,5);
打印结果如下:

arguments打印结果

看到这个callee属性也是一个对象,其中name值就是这个函数的函数名。

通俗一点就是,arguments此对象大多用来针对同个方法多处调用并且传递参数个数不一样时进行使用,相当于给每个执行对象添加了一个状态值,这样方便记录,下次使用。根据arguments的索引来判断执行的方法。

<!doctype html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<title>Document</title>
</head>
<body>
<a href=”javascript:;” onclick=”fn(this.innerHTML)”>第一个</a>
<a href=”javascript:;” onclick=”fn(this.innerHTML)”>第二个</a>
</body>
</html>
<script type=”text/javascript”>
function fn(field){
if(arguments.callee.mark==’undefined’){
arguments.callee.mark = false;
}
arguments.callee.mark = !arguments.callee.mark;
console.log(htmls+arguments.callee.mark);
}
</script>
参考arguments.callee的实际用法:《AngularJs中的过滤器使用方法总结》。

小心应对关键词排名的三个危险期

一个网站从上线开始优化,到关键词稳定在百度前三,需要经过三个周期,只要熟练的掌握了这三个周期中最应该做的事情,不但能为站长的优化工作节省大量的时间,而且见效也是非常快的。

第一阶段:关键词排名在20名之外

刚上线的网站不容易获得搜索引擎的亲睐,这个时候我们的优化重点不在于哪个关键词的排名(事实上也不可能有排名),而是要想尽一切办法取得搜索引擎的信任,当搜索引擎第一次来抓取网站内容的时候,留给他一个不错的印象,那么接下来的一段时间,站长就不用在为怎样吸引蜘蛛而发愁了。就像面试的时候,给面试官的第一印象非常好,对于第二次的复试有极大的帮助。

定时更新原创的高质量文章,继续巩固新站在搜索引擎中的印象,同时给予新站尽可能的外链支持,需要注意的是:最好是找与网站相关性较高的平台去发外链,关于外链的问题我已经全部总结到站长关心的外链发布问题总结。

第二阶段:关键词进入3-20位

我的这个博客在做好基础优化之后,上线12天,“太原seo”这个词就排到了19位,这就是网站优化已经处于第二阶段,具体怎么在短时间内排到前两页,建议参考上线12天的新站如何排名到前2页。

做SEO的站长需要了解百度的点击原理算法,具体就是说,当关键词进入前20名以后,外链对于关键词排名的提升已经不起任何作用了,这个时候更多的是依靠用户的点击投票,用户浏览的越多的网站,百度会把它排到前边。如果你的网站与同行相比,有一个极具吸引力的标题,在文章内容方面有很大的差异性,并且对用户有很大的帮助,排名提升到首页前三是迟早的事情。

这个阶段还有需要注意的就是要尽可能的留下你的访客,让他们成为你的老客户,如果说有大量的老客户愿意来重复浏览你的网站,在搜索引擎看来这个网站就是高质量网站,他能受到用户的亲睐,当然搜索引擎也是非常喜欢的。关于留住老用户的方法,可以查看练就吸星大法,圈住来访网站的用户。

第三阶段:关键词进入首页前三位

按照前两个阶段所讲的操作,一切工作做好之后,看看你的网站已经来到了首页前三。但是不要高兴的太早,最严峻的考验来临了,如果在这个时候你放松了,排名马上就会掉。这时候拼的是网站的整体体验以及老客户的回头率,站在最高处的摔下去也是最疼的。外链不需要大量的发了,文章内容根据用户需求来做,需要更新就更新,不需要更新也不要勉强。太原雅辉装修公司的“太原装修公司”这个词就是这么排上来的。

知道了方法,赶紧去实施操作吧。

新站原创文章被大站采集怎么办

很多SEO都遇到过这样的问题,刚刚上线不久的新站,辛辛苦苦写的原创内容,还没等收录,就被大网站给抄袭了,自己写的内容反而成了“二手货”。遇到这种情况该怎么办呢?下面根据我的经验来分享一下!

1、合适的地方添加品牌词

想一想,既然他们自己不会或者是不想写原创文章而采集,有的人会在第一段或最后一段以及中间明显的地方找出品牌词并且删除,但是不要紧,既然他能来采集文章,说明他本身就是一个性子急的人,他不可能一个字一个字的去看,总会有漏掉的地方。但是对于站长来说,品牌词不要无限制的增加,在合理的地方顺其自然的出现就行。

2、文章末尾提示版权信息

在文章的最下边标明版权所有,并且请当地律师做版权辩护,这种情况就厉害了,如果最后被查出来,是要承担法律责任的。

3、给文章内容加料

对于采集来说,最简单的就是文字采集,但是视频是不肯能的,甚至说我们还希望他来采集视频,这样反而给我们做了宣传,想要更改一个视频的内容是相当难了。

4、禁止ctrl+c或者是右键点击

如果你懂代码或者是能找到相关的代码,可以禁止访客右键点击页面并且禁止ctrl+c快捷键,这样的话,在一定程度上也能遏制作用。

5、通过图片留下版权

其他人在采集的时候,一般都会连图片都采集上,因为他们思想里边都是想着“有了图片,搜索引擎会更加喜欢这篇文章,用户体验更好”,在图片的右下角留下自己的相关信息,就ok了。

总结:以上方法只是可以在一定程度上起到抑制作用,要想真正防止他人采集,最好的方法还是第三种,给文章内容增加独特价值,突出自己的特点,只要自己网站的受众够多,久而久之,别人一看就像是你的文章,这等于是在给你免费做宣传,增强你的实力!

学习搭建NodeJs开发环境

如果使用文本编辑器敲代码,最后在命令行中运行Node程序,效率实在是太低了,所以需要搭建一个Nodejs的IDE集成开发环境,让我们能在一个环境里编码、运行、调试,这样就可以大大提升开发效率。

Java的集成开发环境有Eclipse,Intellij idea等,C#的集成开发环境有Visual Studio,那么问题又来了:Node.js的集成开发环境到底哪家强?

NodeJs的开发环境哪个比较合适呢?我考察了很多,sublime可以安装NodeJs环境插件,webstorm号称前端开发神奇,也可以配置NodeJs环境,因为平时用webstorm比较多,所以就优先选用了webstorm。

首先,点击下载:webstorm破解版。

安装破解成功之后,依次打开file->setting,然后搜索输入node,选择NodeJs and NPM,在右边点击enabled切换下状态,最后如下:

webstorm配置nodeJs开发环境

点击【ok】即可。

在上一节(第三节)的笔记中,我们在命令行中找到myNode.js这个文件,并且输出了运行结果,在webstorm中,打开你要运行的那个文件,然后使用快捷键ctrl+shift+f10,即可在编辑器下边的面板中看到输出结果,与命令行中的结果是一样的。

webstorm中运行js文件

研究网站转化率的重要性

最近跟太原本地的很多传统行业的老板聊了很多,从他们的口中听到最多的一句话就是:“网站白做了,挂在那儿也没什么用,一个咨询都没有”。

直白一点讲就是:网站要么没排名没流量,要么是有流量,没有客户咨询。

网站没有转化率

这样的事情确实令人纠结,公司在网络这方面投入了大量的人力、物力、财力,到头来一点收益都没有。SEO人员好不容易把排名做上来了,可是因为网站设计以及布局吸引不了用户,所以95%以上的访客都选择了直接关闭网站。

究其原因,主要就是网站设计布局不合理,大多数是网上随便下载的模板,只看重高端大气上档次,丝毫不在意用户的感受。

在接下来的一段时间,我会根据自己以往运营装修、美容美发、音乐、餐饮等行业网站的经验持续更新一整套提升网站转化率的方法。在以后的文章中,我会把这一系列的方法总结应用在实际案例中发布出来。欢迎大家参与进来一起交流学习!

一句话说清楚Javascript中的回调函数

根据我的理解,用最简单的语言描述Javascript中的回调函数是什么意思。下面用一段代码来举例子说明。

(function( callback ){
president = { name:”obama” };
callback( president );
console.log( president.name ); // bush
})(function( a ){
a.name = “bush”;
a = { name:”cliten” };
})
1、什么是回调函数?

函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。

2、回调函数是如何实现的?

我们可以像使用变量一样使用函数,作为另一个函数的参数,在另一个函数中作为返回结果,在另一个函数中调用它。当我们作为参数传递一个回调函数给另一个函数时,我们只传递了这个函数的定义,并没有在参数中执行它。

当包含(调用)函数拥有了在参数中定义的回调函数后,它可以在任何时候调用(也就是回调)它。

这说明回调函数并不是立即执行,而是在包含函数的函数体内指定的位置“回调”它(形如其名)。

举个例子:老师L让学生A做一件事情,就是将全班同学的试卷给学生A,让他找出其中不及格的试卷。老师L接着又找到学生B,将这部分试卷交给他,让学生B把这些同学的名字记下来。看这倒霉老师安排这事儿,一看就不懂回调,首先学生A把全班同学的试卷都翻了个遍,学生 B又将其中不及格部分同学的试卷翻个遍,实际上是多余的for循环了。如果数据量很大(全班300万学生,不及格的140万),那势必会造成多余的时间人力浪费。那怎么用回调的方式呢?学生A说了:老师你给我一个会记名字的学生B,我找到一个不及格的就把试卷给他,他记下试卷上的名字就可以了。这样的话全班同学的试卷就只被找了一遍就完成任务了。那么通过以上的例子,我们就可以把学生B看成是学生A的回调函数。学生B可以看作是老师调用学生A找不及格试卷的方法的时候传给学生A的一个参数,在学生A需要的时候就调用这个参数做事情就可以了。这就可以说是回调的方式。

3、回调函数的作用是什么?

Javascript是单线程的,也就是说js代码的执行顺序是从上到下,有时候你需要一个操作完全结束再到下一个操作,为了确保这一点就必须使用回调函数!

假如你发起一个网络请求,需要在请求到数据的时候再进行数据处理操作.如果不用回调的话,下一步操作怎么进行?如果按照一般的代码,有可能请求的数据还没返回,数据处理操作已经执行完了!

注意:上面的代码说明一个问题,也是项目开发中经常会遇到的一个坑,如果回调函数中传入的参数是一个对象,那么在回调函数内容如果要改变这个对象的值,记得要操作这个对象的某个属性,而不是对象本身,因为对象传参是传地的。