邵珠庆の日记 生命只有一次,你可以用它来做很多伟大的事情–Make the world a little better and easier


125月/14

JavaScript的开发规范要求

发布在 邵珠庆

作为一名开发人员(We前端JavaScript开发),不规范的开发不仅使日后代码维护变的困难,同时也不利于团队的合作,通常还会带来代码安全以及执行效率上的问题。本人在开发工作中就曾与不按规范来开发的同事合作过,与他合作就不能用“愉快”来形容了。现在本人撰写此文的目的除了与大家分享一点点经验外,更多的是希望对未来的合作伙伴能够起到一定的借鉴作用。当然,如果我说的有不科学的地方还希望各路前辈多多指教。下面分条目列出各种规范要求,这些要求都是针对同事编码毛病提出来的,好些行业约定的其它规范可能不会再提及。

1、保证代码压缩后不出错

对于大型的JavaScript项目,一般会在产品发布时对项目包含的所有JavaScript文件进行压缩处理,比如可以利用Google Closure Compiler Service对代码进行压缩,新版jQuery已改用这一工具对代码进行压缩,这一般会去掉开发时写的注释,除去所有空格和换行,甚至可以把原来较长的变量名替换成短且无意义的变量名,这样做的目的是加快文件的下载速度,同时也减小网站访问带来的额外数据流量,另外在代码保护上也起到了一点点作用,至少压缩后的代码即使被还原还是没那么容易一下读懂的。要想代码能正确通过压缩,一般要求语句都要以分号正常结束,大括号也要严格结束等,具体还要看压缩工具的要求。所以如果一开始没有按标准来做,等压缩出错后再回去找错误那是浪费时间。

2、保证代码能通过特定IDE的自动格式化功能

一般较为完善的开发工具(比如Aptana Studio)都有代码“自动格式”化功能,这一功能帮助实现统一换行、缩进、空格等代码编排,你可以设置自己喜欢的格式标准,比如左大括号{是否另起一行。达到这个要求的目的在于方便你的开发团队成员拿你代码的一个副本用IDE自动格式化成他喜欢或熟悉的风格进行阅读。你同事需要阅读你的代码,可能是因为你写的是通用方法,他在其它模块开发过程中也要使用到,阅读你的代码能最深入了解方法调用和实现的细节,这是简单API文档不能达到的效果。

3、使用标准的文档注释

这一要求算是最基本的,这有利于在方法调用处看到方法的具体传参提示,也可以利用配套文档工具生成html或其它格式的开发文档供其他团队成员阅读,你可以尝试使用jsdoc-toolkit。如果你自动生成的API是出自一个开放平台,就像facebook.com应用,那么你的文档是给天下所有开发者看的。另外编写完整注释,也更方便团队成员阅读你的代码,通过你的参数描述,团队成员可以很容易知道你编写的方法传参与实现细节。当然也方便日后代码维护,这样即使再大的项目,过了很长时间后,回去改点东西也就不至于自己都忘记了当时自己写的代码是怎么一回事了。

4、使用规范有意义的变量名

使用规范有意义的变量名可以提高代码的可读性,作为大项目开发成员,自己写的代码不仅仅要让别人容易看懂。开发大项目,其实每个人写的代码量可能都比较大,规范命名,日后自己看回自己的代码也显的清晰易懂,比如日后系统升级或新增功能,修改起代码来也轻松多了。如果到头发现自己当初写的代码现在看不太懂了,那还真是天大的笑话了。

当然,使用有意义的变量名也尽量使用标准的命名,比如像这里:var me = this也许没有var self = this好,因为self是Python中的关键字,在Python中self就是通常语言this的用法。再看下面一个例子,加s显然比没有加来的科学些,这样可以知道这个变量名存的是复数,可能是数组等:

var li = document.getElementsByTagName('li')var lis = document.getElementsByTagName('li')

5、不使用生偏语法

JavaScript作为一门动态脚本语言,灵活性既是优点也是缺点,众所周知,动态语言不同层次开发人员对实现同样一个功能写出来的代码在规范或语法上会存在较大的差别。不管怎么样,规范编码少搞怪,不把简单问题复杂化,不违反代码易读性原则才是大家应该做的。

比如这语句:typeof(b) == 'string' && alert(b) 应该改为:if (typeof(b) == 'string') alert(b),像前面那种用法,利用了&&运算符解析机制:如果检测到&&前语句返回false就不再检测后面语句,在代码优化方面也有提到把最可能出现的情况首先判断,像这种写法如果条件少还好,如果条件较多而且语句也长,那代码可读性就相当差。

又比如:+function(a){var p = a;}( 'a') 应该改为:(function(a){var p = a;})( 'a'),其实function前面的+号与包含function的()括号作用是一样的,都是起运算优先作用,后者是常见且容易看明白的防止变量污染的做法,比如好些流行JavaScript框架就是采用后面这种方式。

再说个降低代码可读性的例子,如:function getPostionTxt(type){return type == 2 ? "野外" : (type == 3 ? "商城" : (type == 4 ? "副本" : null));} 应该改成:function getPostionTxt(type){var typeData={"2":"野外","3":"商城","4":"副本"};if (typeData[type]) return typeData[type]; else return null;}。如果type是从0开始不间断的整数,那么直接使用数组还更简单,这种结果看起来就清晰多了,看到前面那种多层三元表达式嵌套头不晕吗。

6、不在语句非赋值地方出现中文

语句中不应该出现中文我想一般人都知道,虽然这样做不影响程序运行,但是显然有背行业标准要求,当然我们也不是在使用“易语言”做开发。关于这一个问题,我本来不想把它拿出来说的,但我确实遇到有人这样做的,也不知道是不是因为他的英语实在太烂了,至少还可以用拼音吧,另外寻求翻译工具帮忙也不错的选择。我举例如下,像以下写法出现在教学中倒还可以理解:

this.user['名字'] = '张三' 或者 this.user.名字 = '张三'

7、明确定义函数固定数量的参数

固定数量参数的函数内部不使用arguments去获取参数,因为这样,你定义的方法如果包含较多的脚本,就不能一眼看到这个方法接受些什么参数以及参数的个数是多少。比如像下面:

var $ = function(){return document.getElementById(arguments[0]);} 应该改成:var $ = function(elemID){return document.getElementById(elemID);}

8、不必热衷动态事件绑定

虽然知道事件可以动态绑定,比如使用addEventListener或者使用jQuery的bind方法,也知道采用动态事件绑定可以让XHTML更干净,但是一般情况下我还是建议直接把事件写在DOM节点上,我认为这样可以使代码变得更容易维护,因为这样做,我们在查看源代码的时候就可以容易地知道什么Element绑定了什么方法,简单说这样更容易知道一个按钮或链接点击时调了什么方法脚本。

9、降低代码与XHTML的耦合性

不要过于依赖DOM的一些内容特征来调用不同的脚本代码,而应该定义不同功能的方法,然后在DOM上调用,这样不管DOM是按钮还是链接,方法的调用都是一样的,比如像下面的实现显然会存在问题:

function myBtnClick(obj)
{
 if (/确定/.test(obj.innerHTML))
  alert('OK');
 else if (/取消/.test(obj.innerHTML))
  alert('Cancel');
 else  alert('Other');
}<a herf="javascript:;">确定</a><a herf="javascript:;">取消</a>

上面例子其实在一个函数内处理了两件事情,应该分成两个函数,像上面的写法,如果把链接换成按钮,比如改成这样:<input type="button" value="确定" />,那么myBtnClick函数内部的obj.innerHTML就出问题了,因为此时应该obj.value才对,另外如果把按钮名称由中文改为英文也会出问题,所以这种做法问题太多了。

10、一个函数应该返回统一的数据类型

因为JavaScrip是弱类型的,在编写函数的时候有些人对于返回类型的处理显得比较随便,我觉得应该像强类型语言那样返回,看看下面的两个例子:

function getUserName(userID)
{
 if (data[userID])
  return data[userID];
 else  return false;
}
应该改为:function getUserName(userID)
{
 if (data[userID])
  return data[userID];
 else  return "";
}

这个方法如果在C#中定义,我们知道它准备返回的数据类型应该是字符串,所以如果没有找到这个数据我们就应该返回空的字符串,而不是返回布尔值或其它不合适的类型。这并没有影响到函数将来的调用,因为返回的空字符串在逻辑判断上可被认作“非”,即与false一样,除非我们使用全等于“===”或typeof进行判断。

11、规范定义JSON对象,补全双引号

使用标准肯定是有好处的,那么为什么还是有人不使用标准呢?我想这可能是懒或习惯问题。也许还会有人跟我说,少写引号可以减轻文件体积,我认为这有道理但不是重点。对于服务器返回的JSON数据,使用标准结构可以利用Firefox浏览器的JSONView插件方便查看(像查看XML那样树形显示),另外你如果使用jQuery做开发,最新版本jQuery1.4+是对JSON格式有更高要求的,具体的可以自己查阅jQuery更新文档。比如:{name:"Tom"}或{'name':'Tom'}都应该改成{"name":"Tom"}。

12、不在文件中留下未来确定不再使用的代码片段

当代码调整或重构后,之前编写的不再使用的代码应该及时删除,如果认为这些代码还有一定利用价值可以把它们剪切到临时文件中。留在项目中不仅增加了文件体积,这对团队其它成员甚至自己都起到一定干扰作用,怕将来自己看回代码都搞不懂这方法是干什么的,是否有使用过。当然可以用文档注释标签@deprecated把这个方法标识为不推荐的。

13、不重复定义其他团队成员已经实现的方法

对于大型项目,一般会有部分开发成员实现一些通用方法,而另外一些开发成员则要去熟悉这些通用方法,然后在自己编写模块遇到有调用的需要就直接调用,而不是像有些开发者喜欢“单干”,根本不会阅读这些通用方法文档,在自己代码中又写了一遍实现,这不仅产生多余的代码量,当然也是会影响团队开发效率的,这是没有团队合作精神的表现,是重复造轮子的悲剧。

比如在通用类文件Common.js有定义function $(elemID){return document.getElementById(elemID)}那么就不应该在Mail.js中再次出现这一功能函数的重复定义,对于一些复杂的方法更应该如此。

14、调用合适的方法

当有几个方法都可以实现同类功能的时候,我们还是要根据场景选择使用最合适的方法。下面拿jQuery框架的两个AJAX方法来说明。如果确定服务器返回的数据是JSON应该直接使用$.getJSON,而不是使用$.get得到数据再用eval函数转成JSON对象。如果因为本次请求要传输大量的数据而不得以使用$.post也应该采用指定返回数据类型(设置dataType参数)的做法。如果使用$.getJSON,在代码中我们一眼能看出本次请求服务器返回的是JSON。

温馨提示:jQuery1.4后,如果服务器有设置数据输出的ContentType,比如ASP.NET C#设置 Response.ContentType = "application/json",那么$.get将与$.getJSON的使用没有什么区别。

15、使用合适的控件存储合适的数据

曾发现有人利用DIV来保存JSON数据,以待页面下载后将来使用,像这样:<div >{ "name":"Tom"}</div>,显然这个DIV不是用来界面显示的,如果非要这样做,达到使用HTML文件进行数据缓存的作用,至少改成用隐藏域来存这数据更合理,比如改成:<input type="hidden" value=" { "name":"Tom"}" />。

其实也可以利用window对象来保存一些数据,像上面的例子,我们可以在AJAX请求页直接包含这样的脚本块:<script>window.userData = { "name":"Tom"};</script>,当在AJAX请求回调函数中执行完$( "#MyDiv ").html(data)后,在window上就马上有了这一变量。如果采用第一种方法,将不可避免eval(document.getElementById("UserData").innerHTML)。如果在window对象存放大量数据的话,这些数据不用时要及时手动清理它们,它们是要等浏览器刷新或重启后才会消失的,这就会增加内存开销。

16、永远不要忽略代码优化工作

代码最优化是每个程序员应该努力达到的目标,也应该成为程序员永远的追求。写代码的时候,不应该急着把功能实现出来,要想一下如何写代码,代码的执行效率才是较好的。

举个例子:假设有定义getElementById的快捷方法functoin $(elemID){return document.getElementById(elemID)},那么有人可能会写出这样的代码$("MyDiv").parentNode.removeChild($("MyDiv")),其实这里执行了两次getElementById DOM查找,如果改成这样将更好:var myDiv = $("MyDiv"); myDiv.parentNode.removeChild(myDiv)。还好getElementById的DOM查找算比较快,如果换成getElementsByTagName则更应该注重优化了。jQuery开发团队也有提醒大家要注意这方面的问题。

当然,代码优化技巧也是需要个人不断积累的。曾有朋友跟我说他写网站后台代码从来不用考虑优化的,因为他们网站用的是至强四核服务器,我觉得这是很可笑的。

17、会分析策划文档,能用面向对象方法进行接口定义和代码组织

这一能力对于每一个程序员来说都是非常重要的,这也是决定一个程序员水平高低的一个重要因素。能够把需求细化并抽象出不同的类,然后有条理地编写代码,使代码结构清晰,可读性高,代码易于维护,不至于太过程化而且杂乱无章,这样才算是一个优秀的程序员。

45月/14

win7下几个常用的组合键

发布在 邵珠庆

1.Win+D: 这是高手最常用的第一快捷组合键。这个快捷键组合可以将桌面上的所有窗口瞬间最小化,无论是聊天的窗口还是游戏的窗口只要再次按下这个组合键,刚才的所有窗口都回来了,而且激活的也正是你最小化之前在使用的窗口! 
 
2.Win+F:不用再去移动鼠标点“开始→搜索→文件和文件夹”了,在任何状态下,只要一按Win+F就会弹出搜索窗口。

3.Win+R:在我们的文章中,你经常会看到这样的操作提示:“点击‘开始→运行’,打开‘运行’对话框。其实,还有一个更简单的办法,就是按Win+R 
 
4.Alt+Tab:如果打开的窗口太多,这个组合键就非常有用了,它可以在一个窗口中显示当前打开的所有窗口的名称和图标,选中自己希望要打开的窗口,松开这个组合键就可以了。而alt+tab+shift键则可以反向显示当前打开的窗口。 
 
5.Win+E:当你需要打开资源管理器找文件的时候,这个快捷键会让你感觉非常“爽”!再也不用腾出一只手去摸鼠标了! 

6.Win:就是开始菜单咯。

很实用的几个组合键与大家分享.外加微软快捷键大全

Windows 7是微软公司即将发布的一款新一代操作系统,据悉,微软公司已于7月中旬将RTM版本交付PC生产厂商,并将在2009年10月正式上市。此前微软已经就Windows 7发布过多个测试版,根据网友试用,无论是界面,硬件需求,还是性能,相比Vista都有很大改善。
以下是微软官方发布的Windows 7操作系统快捷键的应用解释:
1. 轻松访问键盘快捷方式
按住右Shift 八秒钟: 启用和关闭筛选键
按左 Alt+左 Shift+PrtScn(或 PrtScn):启用或关闭高对比度
按左 Alt+左 Shift+Num Lock :启用或关闭鼠标键
按 Shift 五次: 启用或关闭粘滞键
按住 Num Lock 五秒钟:启用或关闭切换键
Windows 徽标键 + U : 打开轻松访问中心
2. 常规键盘快捷方式
F1 显示帮助
Ctrl+C  复制选择的项目
Ctrl+X  剪切选择的项目
Ctrl+V  粘贴选择的项目

Ctrl+Z  撤消操作
Ctrl+Y  重新执行某项操作
Delete  删除所选项目并将其移动到“回收站”
Shift+Delete  不先将所选项目移动到“回收站”而直接将其删除
F2 重命名选定项目
Ctrl+向右键 将光标移动到下一个字词的起始处
Ctrl+向左键 将光标移动到上一个字词的起始处
Ctrl+向下键 将光标移动到下一个段落的起始处
Ctrl+向上键 将光标移动到上一个段落的起始处
Ctrl+Shift 加某个箭头键 选择一块文本
Shift 加任意箭头键 在窗口中或桌面上选择多个项目,或者在文档中选择文本
Ctrl 加任意箭头键+空格键 选择窗口中或桌面上的多个单个项目
Ctrl+A 选择文档或窗口中的所有项目
F3 搜索文件或文件夹
Alt+Enter 显示所选项的属性
Alt+F4 关闭活动项目或者退出活动程序
Alt+空格键 为活动窗口打开快捷方式菜单
Ctrl+F4 关闭活动文档(在允许同时打开多个文档的程序中)
Alt+Tab 在打开的项目之间切换
Ctrl+Alt+Tab 使用箭头键在打开的项目之间切换
Ctrl+鼠标滚轮 更改桌面上的图标大小
Windows 徽标键 + Tab 使用 Aero Flip 3-D 循环切换任务栏上的程序
Ctrl + Windows 徽标键 + Tab 通过 Aero Flip 3-D 使用箭头键循环切换任务栏上的程序
Alt+Esc 以项目打开的顺序循环切换项目
F6 在窗口中或桌面上循环切换屏幕元素
F4 在 Windows 资源管理器中显示地址栏列表
Shift+F10 显示选定项目的快捷菜单
Ctrl+Esc 打开「开始」菜单
Alt+加下划线的字母 显示相应的菜单
Alt+加下划线的字母 执行菜单命令(或其他有下划线的命令)
F10 激活活动程序中的菜单栏
向右键 打开右侧的下一个菜单或者打开子菜单
向左键 打开左侧的下一个菜单或者关闭子菜单
F5 刷新活动窗口
Alt+向上键 在 Windows 资源管理器中查看上一级文件夹
Esc 取消当前任务
Ctrl+Shift+Esc 打开任务管理器
** CD 时按住 Shift 阻止 CD 自动播放
3. 对话框键盘快捷方式
Ctrl+Tab  在选项卡上向前移动
Ctrl+Shift+Tab  在选项卡上向后移动
Tab  在选项上向前移动
Shift+Tab  在选项上向后移动
Alt+加下划线的字母  执行与该字母匹配的命令(或选择选项)
Enter  对于许多选定命令代替单击鼠标
空格键 如果活动选项是复选框,则选中或清除该复选框
箭头键 如果活动选项是一组选项按钮,则选择某个按钮
F1 显示帮助
F4 显示活动列表中的项目
Backspace 如果在“另存为”或“打开”对话框中选中了某个文件夹,则打开上一级文件夹

4. Windows 徽标键相关的快捷键
Windows徽标键就是显示为Windows旗帜,或标有文字Win或Windows的按键,以下简称Win键。XP时代有4个经典的 Win 键组合:R/E/F/L。到了 Win7,花样更多了。
Win:打开或关闭开始菜单
Win + Pause:显示系统属性对话框
Win + D:显示桌面
Win + M:最小化所有窗口
Win + SHIFT + M:还原最小化窗口到桌面上
Win + E:打开我的电脑
Win + F:搜索文件或文件夹
Ctrl + Win + F:搜索计算机(如果您在网络上)
Win + L:锁定您的计算机或切换用户
Win + R:打开运行对话框
Win + T:切换任务栏上的程序(感觉是和alt+ESC 一样 )
Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,新开一个实例。(感觉这个比较新颖,貌似快速启动。) Shift + Windows logo key +number:Start a new instance of the program pinned to the taskbar in the position indicated by the number
Ctrl + Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,切换到上一次的活动窗口。 Ctrl+Windows logo key +number:Switch to the last active window of the program pinned to the taskbar in the position indicated by the number
ALT + Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,显示跳转清单。 Alt+Windows logo key +number: Open the Jump List for the program pinned to the taskbar in the position indicated by the number
Win + TAB:循环切换任务栏上的程序并使用的Aero三维效果
Ctrl + Win + TAB:使用方向键来循环循环切换任务栏上的程序,并使用的Aero三维效果
按Ctrl + Win + B:切换到在通知区域中显示信息的程序
Win + 空格:预览桌面
Win + ↑:最大化窗口
Win + ↓:最小化窗口
Win + ←:最大化到窗口左侧的屏幕上
Win + →:最大化窗口到右侧的屏幕上
Win + Home:最小化所有窗口,除了当前激活窗口
Win+ SHIFT + ↑:拉伸窗口的到屏幕的顶部和底部
Win+ SHIFT + →/←:移动一个窗口,从一个显示器到另一个
Win + P:选择一个演示文稿显示模式
Win + G:循环切换侧边栏的小工具
Win + U:打开轻松访问中心
Win + x:打开Windows移动中心
5. Windows Explorer相关快捷键
Ctrl+N 打开新窗口
Ctrl+Shift+N 新建文件夹
End 显示活动窗口的底部
Home 显示活动窗口的顶部
F11 最大化或最小化活动窗口
Num Lock+小键盘星号(*) 显示选中文件夹的所有子文件夹
Num Lock+小键盘加号(+) 显示选中文件夹的内容
Num Lock+小键盘减号(-) 折叠选中文件夹
左方向键 折叠当前展开的选中文件夹或选中上层文件夹
Alt+Enter 打开选中项目的属性对话框
Alt+P 显示预览窗格
Alt+左方向键 切换到前一次打开的文件夹
右方向键 显示(展开)当前选中项目或选中第一个子文件夹
Alt+右方向键 切换到下一次后打开的文件夹
Alt+上方向键 打开上层文件夹
Ctrl+鼠标滚轮 改变文件和文件夹图标的大小和外观
Alt+D 选中地址栏(定位到地址栏)
Ctrl+E 选中搜索框(定位到搜索框)
6. 放大镜键盘快捷方式
Windows 徽标键 + 加号或减号 放大或缩小
Ctrl+Alt+空格键 显示鼠标指针
Ctrl+Alt+F 切换到全屏模式
Ctrl+Alt+L 切换到镜头模式
Ctrl+Alt+D 切换到停靠模式
Ctrl+Alt+I 反色
Ctrl+Alt+箭头键 按箭头键的方向平移
Ctrl+Alt+R 调整镜头的大小
Windows 徽标键 + Esc 退出放大镜
7. 远程桌面相关快捷键
Alt+Page Up 按从左向右顺序切换程序
Alt+Page Down 按从右向左切换程序
Alt+Insert 按程序打开先后顺序循环切换程序
Alt+Home 显示“开始”菜单
Ctrl+Alt+Break 在窗口模式和全屏之间切换
Ctrl+Alt+End 显示Windows安全性对话框
Alt+Delete 显示当前窗口的系统菜单
Ctrl+Alt+-(小键盘减号) 当前活动窗口截图
Ctrl+Alt++(小键盘加号) 全屏截图
Ctrl+Alt+向右键 从远程桌面控件“跳转”到主机程序中的控件(如按钮或文本框)。将远程桌面控件嵌入到其他(主机)程序后,此功能非常有用。
Ctrl+Alt+向左键 从远程桌面控件“跳转”到主机程序中的控件(如按钮或文本框)。将远程桌面控件嵌入到其他(主机)程序后,此功能非常有用。
8. 画图键盘快捷方式
Ctrl+N 创建新的图片
Ctrl+O 打开现有图片
Ctrl+S 将更改保存到图片
F12 将此图片另存为新文件
Ctrl+P 打印图片
Alt+F4 关闭图片及其画图窗口
Ctrl+Z 撤消更改
Ctrl+Y 恢复更改
Ctrl+A 选择整个图片
Ctrl+X 剪切选择内容
Ctrl+C 将选择内容复制到剪贴板
Ctrl+V 从剪贴板粘贴选择内容
向右键 将选择内容或活动图形向右移动一个像素
向左键 将选择内容或活动图形向左移动一个像素
向下键 将选择内容或活动图形向下移动一个像素
向上键 将选择内容或活动图形向上移动一个像素
Esc 取消某个选择
Delete 删除某个选择
Ctrl+B 粗体选择文本
Ctrl++ 将画笔、直线或形状轮廓的宽度增加一个像素
Ctrl+- 将画笔、直线或形状轮廓的宽度减少一个像素
Ctrl+I 将所选文本改为斜体
Ctrl+U 为所选文本添加下划线
Ctrl+E 打开“属性”对话框
Ctrl+W 打开“调整大小和扭曲”对话框
Ctrl+Page Up 放大
Ctrl+Page Down 缩小
F11 以全屏模式查看图片
Ctrl+R 显示或隐藏标尺
Ctrl+G 显示或隐藏网格线
F10 或 Alt 显示快捷键提示
Shift+F10 显示当前快捷菜单
F1 打开“画图”帮助
9. 写字板的键盘快捷方式
Ctrl+N 新建一个文档
Ctrl+O 打开一个现有文档
Ctrl+S 将更改保存到文档
F12 将此文档另存为新文件
Ctrl+P 打印文档
Alt+F4 关闭“写字板”
Ctrl+Z 撤消更改
Ctrl+Y 恢复更改
Ctrl+A 选择整个文档
Ctrl+X 剪切选择内容
Ctrl+C 将选择内容复制到剪贴板
Ctrl+V 从剪贴板粘贴选择内容
Ctrl+B 将所选文本改为粗体
Ctrl+I 将所选文本改为斜体
Ctrl+U 为所选文本添加下划线
Ctrl+= 使选择的文本成为下标
Ctrl+Shift+= 使选择的文本成为上标
Ctrl+L 向左对齐文本
Ctrl+E 向中心对齐文本
Ctrl+R 向右对齐文本
Ctrl+J 对齐文本
Ctrl+1 设置单倍行距
Ctrl+2 设置双倍行距
Ctrl+5 将行距设置为 1.5
Ctrl+Shift+> 增加字体大小
Ctrl+Shift+< 减小字体大小
Ctrl+Shift+A 将字符更改为全部使用大写字母
Ctrl+Shift+L 更改项目符号样式
Ctrl+D ** Microsoft 画图图片
Ctrl+F 在文档中查找文本
F3 在“查找”对话框中查找文本的下一个实例
Ctrl+H 在文档中替换文本
Ctrl+向左键 将光标向左移动一个字
Ctrl+向右键 将光标向右移动一个字
Ctrl+向上键 将光标移动到上一行
Ctrl+向下键 将光标移动到下一行
Ctrl+Home 移动到文档的开头
Ctrl+End 移动到文档的结尾
Ctrl+Page Up 向上移动一个页面
Ctrl+Page Down 向下移动一个页面
Ctrl+Delete 删除下一个字
F10 显示快捷键提示
Shift+F10 显示当前快捷菜单
F1 打开“写字板”帮助
10. 计算器的键盘快捷方式
Atl+1 切换到标准模式
Alt+2 切换到科学型模式
Alt+3 切换到程序员模式
Alt+4 切换到统计信息模式
Ctrl+E 打开日期计算
Ctrl+H 将计算历史记录打开或关闭
Ctrl+U 打开单位转换
Alt+C 计算或解决日期计算和工作表
F1 打开“计算器”帮助
Ctrl+Q 按下 M- 按钮
Ctrl+P 按下 M+ 按钮
Ctrl+M 按下 MS 按钮
Ctrl+R 按下 MR 按钮
Ctrl+L 按下 MC 按钮
% 按下 % 按钮
F9 按下 +/– 按钮
/ 按下 / 按钮
* 按下 * 按钮
+ 按下 + 按钮
- 按下 – 按钮
R 按下 1/× 按钮
@ 按下平方根按钮
0-9 按下数字按钮 (0-9)
= 按下 = 按钮
. 按下 .(小数点)按钮
Backspace 按下 Backspace 按钮
Esc 按下 C 按钮
Del 按下 CE 按钮
Ctrl+Shift+D 清除计算历史记录
F2 编辑计算历史记录
向上箭头键 在计算历史记录中向上导航
向下箭头键 在计算历史记录中向下导航
Esc 取消编辑计算历史记录
Enter 编辑后重新计算计算历史记录
F3 在科学型模式下选择“角度”
F4 在科学型模式下选择“弧度”
F5 在科学型模式下选择“梯度”
I 在科学型模式下按 Inv 按钮
D 在科学型模式下按 Mod 按钮
Ctrl+S 在科学型模式下按 sinh 按钮
Ctrl+O 在科学型模式下按 cosh 按钮
Ctrl+T 在科学型模式下按 tanh 按钮
( 在科学型模式下按 ( 按钮
) 在科学型模式下按 ) 按钮
N 在科学型模式下按 ln 按钮
; 在科学型模式下按 Int 按钮
S 在科学型模式下按 sin 按钮
O 在科学型模式下按 cos 按钮
T 在科学型模式下按 tan 按钮
M 在科学型模式下按 dms 按钮
P 在科学型模式下按 pi 按钮
V 在科学型模式下按 F-E 按钮
X 在科学型模式下按 Exp 按钮
Q 在科学型模式下按 x^2 按钮
Y 在科学型模式下按 x^y 按钮
# 在科学型模式下按 x^3 按钮
L 在科学型模式下按 log 按钮
! 在科学型模式下按 n! 按钮
Ctrl+Y 在科学型模式下按 y√x 按钮
Ctrl+B 在科学型模式下按 3√x 按钮
Ctrl+G 在科学型模式下按 10x 按钮
F5 在程序员模式下选择 Hex
F6 在程序员模式下选择 Dec
F7 在程序员模式下选择 Oct
F8 在程序员模式下选择 Bin
F12 在程序员模式下选择 QWord
F2 在程序员模式下选择 Dword
F3 在程序员模式下选择 Word
F4 在程序员模式下选择 Byte
K 在程序员模式下按 RoR 按钮
J 在程序员模式下按 RoL 按钮
% 在程序员模式下按 Mod 按钮
( 在程序员模式下按 ( 按钮
) 在程序员模式下按 ) 按钮
| 在程序员模式下按 Or 按钮
^ 在程序员模式下按 Xor 按钮
~ 在程序员模式下按 Not 按钮
& 在程序员模式下按 And 按钮
A-F 在程序员模式下按 A-F 按钮
空格键 在程序员模式下切换位值
A 在统计信息模式下按 Average 按钮
Ctrl+A 在统计信息模式下按 Average Sq 按钮
S 在统计信息模式下按 Sum 按钮
Ctrl+S 在统计信息模式下按 Sum Sq 按钮
T 在统计信息模式下按 S.D. 按钮
Ctrl+T 在统计信息模式下按 Inv S.D. 按钮
D 在统计信息模式下按 CAD 按钮
11. Windows 日记本键盘快捷方式
Ctrl+N 开始新的便笺
Ctrl+O 打开最近使用的便笺
Ctrl+S 将更改保存到便笺
Ctrl+Shift+V 将便笺移动到特定的文件夹
Ctrl+P 打印便笺
Alt+F4 关闭便笺及其日记本窗口
Ctrl+Z 撤消更改
Ctrl+Y 恢复更改
Ctrl+A 选择页面上的所有项目
Ctrl+X 剪切选择内容
Ctrl+C 将选择内容复制到剪贴板
Ctrl+V 从剪贴板粘贴选择内容
Esc 取消某个选择
Delete 删除某个选择
Ctrl+F 开始基本查找
Ctrl+G 转到页面
F5 刷新查找结果
F5 刷新便笺列表
F6 在便笺列表和便笺之间切换
Ctrl+Shift+C 显示便笺列表中列标题的快捷菜单
F11 以全屏模式查看便笺
F1 打开“日记本”帮助
12. Windows 帮助查看器键盘快捷方式
Alt+C 显示目录
Alt+N 显示“连接设置”菜单
F10 显示“选项”菜单
Alt+向左键 返回先前查看过的主题
Alt+向右键 向前移动到下一个(先前已查看过的)主题
Alt+A 显示客户支持页面
Alt+Home 显示帮助和支持主页
Home 移动到主题的开头
End 移动到主题的末尾
Ctrl+F 搜索当前主题
Ctrl+P 打印主题
F3 将光标移动到搜索框

274月/14

加班狗是怎样炼成的?

发布在 邵珠庆

“一家点评网站从压力指数出发,梳理了三十家压力最大的公司,其中,IT/互联网行业占比33%,成为压力最大的行业。IT行业俨然成过劳死“重灾区”,此前,由中国医师协会等联合发布的一项数据也显示,IT行业“过劳死”年龄最低,平均只有37.9岁。而京沪等一线城市六成白领过劳,有76%的白领处于亚健康状态。”

如果IT行业是重灾区,那么互联网公司更加是重灾区中的重灾区。对于国内互联网公司,加班几乎是常事,却不一定能够享受应有的法定待遇。好吧,你会说地球人都知道互联网公司加班多,但为何这么多加班呢?作为一只混迹大大小小互联网公司依然在苦逼挣扎中产品狗,今天决定在加班中百忙抽时间写篇文章深入分(tu)析(cao)一下加班狗是怎样炼成的?

 《加班狗是怎样炼成的?》卧槽!连看三遍有木有!,互联网的一些事

每个公司或每个加班者加班的历史原因、发展历程、导致结果都是多种多样的,在此我们姑且按照客观因素和主观意识将加班的人分为两种群体,一种是自主加班族,另一种是被迫加班族。

 

在主动加班族中,以下几类群体尤其常见:

 

年轻穷逼新鲜人

《加班狗是怎样炼成的?》卧槽!连看三遍有木有!,互联网的一些事

  该族群的特点是年龄低、收入低、职位低,属于三低人群。多数是刚毕业不久的社会新鲜人, 可能孤身一人在北上广打拼,同时也属于典型的三无青年:无钱、无房、无性生活...下班回家后,独自宅在出租屋里,漫漫长夜不是LOL就是撸一撸,有的还连电脑都没有,更是惨无人道。相对来说,公司的环境就高大上多了,地方干净宽敞、空调冷气、水电免费,再加上现在的互联网公司还满“人性化”——公司包三餐或者包四餐(至于为什么包餐?你懂的),这个公司福利对该族群来说简直是天赐恩泽。所以下班后基本就把公司当网吧,也算是合理利用资源吧,上上网,看看视频,玩玩游戏什么的, 也算是过的有滋有味。

 

中年乏味大叔

《加班狗是怎样炼成的?》卧槽!连看三遍有木有!,互联网的一些事
  这部分的人大概是某个部门的小主管或小组长什么的,30岁左右,通常已婚,家庭压力比较大。回到家一大堆家务琐事要处理,跟老婆的感情也淡了,夫妻生活也少了,孩子又还小。回到家比上班还累,老婆的唠叨,孩子的哭...想在家看个电影、玩个游戏什么的,那就是破坏家庭幸福和谐的滔天大罪了。与其回家做家务哄老婆带孩子,还不如在公司加班侍候老板来的轻松。

 

出卖劳力的血汗民工

《加班狗是怎样炼成的?》卧槽!连看三遍有木有!,互联网的一些事
  该种族的宗旨是“赚的一分是一分”!没别的,纯粹是为了加班费或餐补(为了餐补加班,想想也是泪呀),虽然现在很多互联网公司加班费什么的都是浮云,但加班餐补这种接近人类道德底线的福利还是有的。在多赚几个钱的利益驱使下,透支生命换取金钱,赚的一分是一分。这种心态的人的人除了在互联网占了很大比例外,其他行业也不少,例如世界百强富士康的工人们....

也有些公司,名义上是不提倡员工加班,但老板的潜规则是按加班的多少来评KPI,KPI又决定了你拿到手的钱有多少,so...加班越多拿到的钱越多,于是广大胸怀大志的有为青年纷纷走上这条加班的不归路。当然,羊毛出在羊身上,你所创造的剩余价值远远比你拿到的多。

 

随乡入俗

《加班狗是怎样炼成的?》卧槽!连看三遍有木有!,互联网的一些事
  这种人的公司通常有个一个特爱加班的老板,还有一群早就被培养成良好加班习惯的同事,所以即使没什么事做,下班后个个都都还逗留在公司,感觉正常下班就是不合群、不尽职、不道德。所以或为了融入公司、或为了惯彻企业文化、或为了在老板面前表现,这部分的人选择自愿加班或假装加班来博取表现。

 

被迫加班的群体相当的庞大,他们不仅通过加班来换取不成比例的收入,加班更是让他身心疲惫,敢怒不敢言。逼迫这帮人加班的自然是包括老板、公司高管、经理在内公司领导层,至于他们为什么要员工加班,原因也是五花八门的。

 

 剩余价值理论的狂热追随者

《加班狗是怎样炼成的?》卧槽!连看三遍有木有!,互联网的一些事
  这些领导深谙西方资本主义的价值发掘之道,致力于提高生产力,占尽员工便宜,榨干每一滴剩余价值。想尽一切方法增加员工工作量与工时,还搞什么末尾淘汰制,弄的员工身心受损,个个生怕自己肩上扛的工作不够多,生怕自己是最后一名然后被无情淘汰,最后员工个个都通过拼加班,拼工作量而获得生存的价值。

 

外行装逼型

《加班狗是怎样炼成的?》卧槽!连看三遍有木有!,互联网的一些事

  这类领导或许是关系户,或者是A业务做的不错就顺便让他管B业务,例如做市场跑去管产品。基本上啥都不懂,不懂就算了,还喜欢瞎bb,深怕别人不知道他是领导。同时又担心自己的下属偷懒,但不知道怎样去评估员工偷懒,怎样去评估工作进度,so...最粗暴直接的方式就是让员工不停的做,不停的加班,只有这样让员工一直处于忙碌状态,保持饱和的工作量,他才会舒心。你一正常下班,他就开始找你谈话,问你工作为什么不饱和,别人加班你为什么不加班...总之你不加班,他就吃不下饭。

 

昼伏夜行型

 

《加班狗是怎样炼成的?》卧槽!连看三遍有木有!,互联网的一些事
 

这种老板属于夜行侠,一到晚上就像打了鸡血那样,通常到了下午才慢悠悠的来公司上班,下午处理完上午积压的工作,到了下班的时候就先像吃了过期春药那样,开始亢奋起来。查工作、开会、过方案什么的,一大堆有的没的,急的或不急的,总之就要把大伙都耍的团团转,不到大半夜不给走,底下的人也只能拖着疲惫的身躯陪他“奋战到底”,一直持续到后半夜,他拍拍屁股开着他的奥迪扬长而去,走前还补充一句:大伙明天上班不要迟到哦~~

 

蛮干黄牛型

《加班狗是怎样炼成的?》卧槽!连看三遍有木有!,互联网的一些事
  这类的领导脑子不行,能力一般,多数是在公司混个十年八年勉强混个中层,他也想上位,但苦于自身能力不足,没突出表现取悦大老板,只能用最傻逼的方法,将勤补拙,自认为一件事做不好,做个十件八件总有一件能讨老板欢喜,殊不知这就是所谓的”战略上的懒惰导致战术上的越做越错“,这在互联网公司特别明显,带着底下一大帮人瞎折腾,加班头脑风暴、写方案,口头禅通常是“每个人起码给我出10个可行方案出来,想不出来今天不用回家了”或者“封闭式加班,上版本”等等..... 然后底下的人可怜兮兮跟着这傻逼领导瞎折腾,结果什么都没捞到......辛辛苦苦加了班,很可能都到最后老板一句不认可重做...班也白加了,不要说功劳,连苦劳也捞不到。

 

传销忽悠型

《加班狗是怎样炼成的?》卧槽!连看三遍有木有!,互联网的一些事
  这类人通常是小公司的老板,二话不说就是要大家跟着他年赚千万,去美国上市敲钟,然后改变世界。这类老板擅长激励员工,擅长画饼,就像传销头目分子一样,大家一起无偿加班吧,为了共同的理想一起奋斗吧。在互联网中,有不少创业型的公司,刚融了点小钱,就把画了得比银河系还大,说要给员工股权期权,说现在是公司的快速上升期,谁不加班谁就不是站在公司同一战线...通常,这种靠融资或天使投资的创业型十间有九间是会倒闭的,到时老板拍拍屁股申请清盘,员工不要说加班费,连工资都那不回来。老板呢?照样开着bens,住着别墅,换了名称注册一个新公司,又开始忽悠一批新的员工跟他一起改变世界。

 

写在最后,或许为生活、为梦想,我们不得已付出非人的努力与时间,倘若牺牲了健康,这种生活与梦想于你、于你家人来说,略重。

144月/14

旅游综合网站排行榜 图

发布在 邵珠庆

旅游综合网站排行榜 邵珠庆 shaozhuqing

144月/14

旅游综合网站排行榜

发布在 邵珠庆

旅游综合网站排行榜

  • 去哪儿www.qunar.com

    Alexa周排名:5591百度权重:PR:反链数:18246
    网站简介:去哪儿(Qunar.com)提供机票,特价机票,打折机票的购买全攻略,99元春秋航空特惠折扣机票,百元南航、海航惊喜特价机票任您挑选,国航、深航1折特价机票和折扣机票一网打尽,更多打折机票尽在Qunar.com。同时搜索携程,艺...
    1

    得分:4116查看榜单

  • 携程旅行网www.ctrip.com

    Alexa周排名:3798百度权重:PR:反链数:42671
    网站简介:携程旅行网是中国领先的在线旅行服务公司,向超过1400万会员提供集酒店预订、机票预订、度假预订、商旅管理、特惠商户及旅游资讯在内的全方位旅行服务。
    2

    得分:3497

  • 同程网 www.17u.cn

    Alexa周排名:1327百度权重:PR:反链数:8557
    网站简介:同程网是中国领先的一站式旅游预订平台,提供20000多家特惠酒店、特价机票、景点门票、旅游度假、演出票务、租车预订服务;预订产品发表评价可获得10~100元现金券;专业服务、品质保障,让您的旅行更安心!
    3

    得分:3491

  • 驴妈妈旅游网 www.lvmama.com

    Alexa周排名:2560百度权重:PR:反链数:12366
    网站简介:驴妈妈旅游网-中国最领先的在线旅游预订服务商,为您提供更多自助游,国内旅游线路,周边游,出境游,旅游度假和酒店预订等旅游信息,优质,个性,自由,享受只为您!
    4

    得分:3477

  • 途牛旅游网www.tuniu.com

    Alexa周排名:3067百度权重:PR:反链数:14857
    网站简介:途牛旅游网-中国最专业全面的旅游线路和自助游一站式旅游服务提供商,客户满意度96%;提供自助游,周边旅游,国内旅游,出境旅游。实时发团日期,报价,行程,全程优质的服务保障
    5

    得分:3466

  • 艺龙旅行网 www.elong.com

    Alexa周排名:7875百度权重:PR:反链数:23345
    网站简介:艺龙旅行网是中国领先的在线旅行服务提供商,致力于为消费者提供最好的酒店,机票,旅行度假产品和高效率的预订服务.在线预订酒店返现高达20%.24小时免费预订电话 4006-161616.
    6

    得分:3447

  • 蚂蜂窝 www.mafengwo.cn

    Alexa周排名:4430百度权重:PR:反链数:2401
    网站简介:旅游网,自助游,旅游攻略,自驾游,路书信息来蚂蜂窝旅游网,蚂蜂窝旅游网获取旅游网信息,自助游,旅游攻略网,自驾游网站信息更全面。
    7

    得分:3424

  • 酷讯旅游网www.kuxun.cn

    Alexa周排名:23992百度权重:PR:反链数:10619
    网站简介:酷讯旅游网(Kuxun.cn)是中国领先的旅游搜索引擎网站。为您提供低价可靠的国内国际机票查询,特价机票99元起,另提供全国8万家酒店预订查询、酒店评论,最低2折起,以及列车时刻表与火车票转让,旅游指南信息,为您的...
    8

    得分:3320

  • 欣欣旅游网www.cncn.com

    Alexa周排名:8621百度权重:PR:反链数:37997
    网站简介:欣欣旅游网(CNCN.com)是中国最大的在线旅游超市,提供超过100万条周边、国内、出境旅游线路,特价机票、酒店、景点门票、签证等预订服务…详细的旅游景点介绍、旅游攻略。
    9

    得分:3264

  • 一起游www.17u.com

    Alexa周排名:10973百度权重:PR:反链数:3900
    网站简介:一起游属于同程旗下网站,面向大众提供丰富的以目的地为中心的旅游攻略、旅游资讯、旅游博客、旅游社区等全面的旅游出行信息,并提供酒店、机票、景点门票、演出门票、租车、度假线路的在线预订服务,致力于打造全国...
    10

    得分:3229

  • 户外资料网 www.8264.com

    Alexa周排名:19998百度权重:PR:反链数:1835
    网站简介:户外运动休闲体育门户网站,包括户外运动资讯、自助旅游、登山、攀岩、自驾、骑行、滑雪、户外装备、测评、攻略、游记、品牌、俱乐部、店铺、人才、图库、地图、下载、视频、摄影等相关内容。 ,户外资料网
    11

    得分:3169

  • 到到网www.daodao.com

    Alexa周排名:29091百度权重:PR:反链数:3881
    网站简介:到到网致力于提供酒店点评,旅游景点评论,机票查询,特价机票信息,旅游攻略,全力打造中国最大旅游社区网站,为中国的旅行者提供及时、可信的全球化旅游信息。成为全球最大的中文旅游垂直媒体网站。
    12

    得分:3094

  • 乐途旅游网www.lotour.com

    Alexa周排名:1029百度权重:PR:反链数:4830
    网站简介:乐途旅游网(lotour.com)是中国领先的旅游门户,提供 “一站式采购”旅游超市服务——百万诚信旅游商家直接供货,无交易佣金。千万旅游社区驴友为你推荐精品游记攻略、目的地指南与旅游资讯,启发你的旅游灵感,实现...
    13

    得分:3087

  • 芒果网 www.mangocity.com

    Alexa周排名:2113百度权重:PR:反链数:3231
    网站简介:芒果网是香港中旅集团旗下专业旅行网站,为用户提供酒店预订、酒店查询、机票预订查询、旅游度假预订、景点门票预订、租车、签证、邮轮旅游预订全方位一站式的旅行服务.
    14

    得分:3037

  • 悠哉旅游网 www.uzai.com

    Alexa周排名:4046百度权重:PR:反链数:2648
    网站简介:悠哉旅游网(Uzai.com)-中国最专业、全面的旅游线路和自由行预订中心,一站式个性化旅游服务提供商;跟团游 自助游 公司旅游专家;出境游、周边游、国内游、酒店、签证;出发地:上海、北京、杭州、深圳、成都、南...
    15

    得分:3008

  • 相约久久旅游网www.meet99.com

    Alexa周排名:47125百度权重:PR:反链数:712
    网站简介:相约久久旅游网(meet99.com)提供最齐全的国内外旅游景点信息,您可以在这里找到关于旅游目的地最详细的图文介绍、可信赖的旅游地图、行车路线以及各类出行提示,还可以在平台广场与大家分享自己的旅行心得感受。
    16

    得分:3006

  • 米胖网www.mipang.com

    Alexa周排名:81546百度权重:PR:反链数:7738
    网站简介:米胖旅游网通过集合旅行社直销,不设400电话,只提供网络预订服务的独有模式,最大程度降低中间环节的成本,帮助游客享受高性价比的旅游。同时提供丰富的旅游景点介绍和旅游攻略供您参考。
    17

    得分:2972

  • 穷游网www.qyer.com

    Alexa周排名:10290百度权重:PR:反链数:946
    网站简介:穷游网是中国第一家,全球最大的运用互联网电子信息技术提供跨国多目的地(以海外为主)的中文旅游资讯和在线增值服务提供商。为消费能力强且追求旅游品味和质量的全球旅游者提供旅游一站式服务。 网站的服务宗旨是“...
    18

    得分:2965

  • 游多多旅行网www.yododo.com

    Alexa周排名:52391百度权重:PR:反链数:1559
    网站简介:游多多自助旅游网是全球最大的中文Web2.0自助游网站、自助游服务社区。出游前可查找自由行景点信息和自助游攻略,还可预订旅社客栈与景点打折门票,更可以寻找同伴相约同行;出游后可分享自助游旅程中的照片、视频、...
    19

    得分:2945

  • 新浪旅游travel.sina.com.cn

    Alexa周排名:15百度权重:PR:反链数:814
    网站简介:新浪网旅游频道专业旅游网,全球华语最具影响力的旅游在线媒体.为网友提供权威实用的旅游资讯和景点信息,易操作的旅行攻略分享平台,和可信赖的旅游线路、机票酒店预订服务等。
    20

    得分:2938

  • 搜狐旅游频道travel.sohu.com

    Alexa周排名:29百度权重:PR:反链数:1372
    网站简介:搜狐旅游频道是最全面最实用最有影响力的旅游媒体,为网友们提供周边游,国内游,出境游,自驾游,自助游,旅游新闻,旅行方式,游记,旅游社区等旅游资讯及互动平台
    21

    得分:2904

  • 网易旅游频道travel.163.com

    Alexa周排名:38百度权重:PR:反链数:1186
    网站简介:网易旅游频道,旅行者的个性行走指南。定位于都市活力人群,为之提供最有价值的旅行资讯以及最实用的旅行经验。我们倡导探索、睿智、开放、分享的旅行态度。强调行动与思考力,不盲从、不流于表面。在旅行中认知真实...
    22

    得分:2895

  • 绿野户外www.lvye.cn

    Alexa周排名:3159百度权重:PR:反链数:1049
    网站简介:绿野户外网(www.lvye.cn )成立于2002年,是国内最早以户外为特色的户外活动网站之一,经过8年的蓬勃发展,已经发展成为中国最大的户外旅行信息交流平台之一。
    23

    得分:2743

  • 51766旅游网www.51766.com

    Alexa周排名:53860百度权重:PR:反链数:1954
    网站简介:51766旅游网是以网站运营平台为基础,同时接口并配置51766旅游预订总机、51766业务短信、51766在线交易收银系统、51766各地各类旅游服务商,共同以完整的服务链组成直接面向游客终端的综合型休闲旅游服务体系。
    24

    得分:2644

  • 背包兔www.beibaotu.com

    Alexa周排名:85807百度权重:PR:反链数:1931
    网站简介:背包兔(www.beibaotu.com)提供最专业的旅游行程工具,便于旅游爱好者制作出行计划,和好友分享行程,同时提供自助游攻略,签证问答,酒店预订,机票预订等。
    25

    得分:2599

  • 中国工业信息网www.587766.com

    Alexa周排名:10716百度权重:PR:反链数:1447
    网站简介:中国工业信息网(587766.com)是为中小企业提供B2B电子商务服务的网上贸易平台,是企业寻求电子商务网络贸易信息的首选行业门户。
    26

    得分:2590

  • 来订吧预订网www.laidingba.com

    Alexa周排名:306566百度权重:PR:反链数:1291
    网站简介:来订吧预订网(laidingba.com)创立于2007年,总部位于上海,作为国内专业的综合性旅行服务网站,来订吧在成立近6年中,为超过500万用户提供一站式的商旅服务,期中包括酒店预订、景点门票预订、机票预订、团购及特色...
    27

    得分:2587

  • 淘宝旅行trip.taobao.com

    Alexa周排名:11百度权重:PR:反链数:625
    网站简介:淘宝旅行是淘宝网旗下的综合性旅游出行服务平台。淘宝旅行整合数千家机票代理商、航空公司、旅行社、旅行代理商资源,为旅游者提供国内机票/国际机票/酒店客栈/景点门票/国内国际度假旅游/签证(通行证)/旅游卡券/租...
    28

    得分:2578

  • 博雅旅游网www.bytravel.cn

    Alexa周排名:65635百度权重:PR:反链数:2421
    网站简介:博雅旅游网(www.bytravel.cn)。
    29

    得分:2564

  • 九游网www.9tour.cn

    Alexa周排名:67295百度权重:PR:反链数:1196
    网站简介:九游网(www.9tour.cn)提供全面、快捷的旅游攻略、目的地信息查询和用户互动功能,涵盖旅游资讯、景区介绍、交通线路、当地美食、用户点评及旅行信息的深度搜索,帮助旅行者找到性价比最高的产品和最优质的信息,全...
    30

    得分:2552

  • 旅交汇www.17u.net

    Alexa周排名:80146百度权重:PR:反链数:1876
    网站简介:中国最大的旅游电子商务平台,搭建包括旅行社、酒店、景区、航空、票务在内的近10万余家旅游企业间交流、交易的平台
    31

    得分:2551

  • 阳光旅行网www.sunnychina.com

    Alexa周排名:287219百度权重:PR:反链数:2098
    网站简介:预订免费,还返现金!在线预订全国酒店,可获最高20%现金奖励,随时提取现金或充值话费。纳斯达克上市公司旗下阳光旅行网,值得信赖。
    32

    得分:2521

  • 遨游网www.aoyou.com

    Alexa周排名:121517百度权重:PR:反链数:1190
    网站简介:遨游网-中青旅旗下专业旅游度假网站,提供丰富、高性价比旅游度假产品,包含自由行,出境度假、国内度假、邮轮旅游等。度假就上遨游网!
    33

    得分:2519

  • 磨房www.doyouhike.net

    Alexa周排名:46931百度权重:PR:反链数:548
    网站简介:磨房(www.doyouhike.net)是一个聚集众多户外运动和自助旅行爱好者的交流平台。无论你是喜欢登山、徒步、潜水、自行车,亦或是喜欢背包自助到世界各地旅行,你都能够在这里找到你所需的资讯,遇见与你志同道合的“驴...
    34

    得分:2507

  • 锦江旅行www.jinjiang.com

    Alexa周排名:45383百度权重:PR:反链数:1740
    网站简介:锦江旅行(www.jinjiang.com)是中国最有价值的品牌在线旅游预订平台,由中国最大的综合性旅游集团锦江国际为您提供酒店预订,旅游度假,汽车租赁,机票预订,锦江e卡通,4S等一站式旅行服务。
    35

    得分:2440

  • 小猪短租网www.xiaozhu.com

    Alexa周排名:11658百度权重:PR:反链数:706
    网站简介:0ID17EZ4
    36

    得分:2434

  • 悠游网www.uuyoyo.com

    Alexa周排名:11227百度权重:PR:反链数:288
    网站简介:悠游网(www.uuyoyo.com)提供港澳地区自由行、团队游、酒店、门票等旅游产品在线预订服务,强大的在线交流平台供数百万用户尽享结伴出游、互动交流体验,致力打造港澳旅游第一互动平台。
    37

    得分:2417

  • 驴评网www.lvping.com

    Alexa周排名:138139百度权重:PR:反链数:461
    网站简介:驴评网是你的个性化旅行顾问,帮你记录旅行足迹、分享旅行发现,获取你想要的个性化旅行建议;我们专门提供点评照片、游记攻略、旅行问答服务,帮你发现想去的目的地、景点、酒店和餐馆。驴评网属于携程旗下网站。
    38

    得分:2412

  • 热地带www.redidai.com

    Alexa周排名:75677百度权重:PR:反链数:2720
    网站简介:热地带网(www.redidai.com)隶属于深圳前行科技有限公司,是一个基于SNS社交概念构建的智能旅游搜索社区,提供了智能化搜索、热导航、触动计划器、热社区四个核心服务功能点。
    39

    得分:2389

  • 北京国际旅行社www.guolv.com

    Alexa周排名:200125百度权重:PR:反链数:6350
    网站简介:北京国际旅行社,国内实力雄厚的大社,提供入境旅游,出国旅游,国内旅游;承办商务旅行、国际、国内会议;代订房等热线400-600-9889
    40

    得分:2385

  • 遨游搜www.auyou.cn

    Alexa周排名:121870百度权重:PR:反链数:2474
    网站简介:遨游搜(www.auyou.cn)由杭州企盼信息科技有限公司与2005年创建,由杭州企盼信息科技有限公司所有并运营,其源于创造一个开放互动的网络旅游百科网的初衷,希望为网友搭建一个建立在自助、共享、互利基础上的非盈利...
    41

    得分:2381

  • 中华户外网www.huway.com

    Alexa周排名:27889百度权重:PR:反链数:270
    网站简介: 中华户外网(www.huway.com)创办于2003年,是目前中国综合实力最强的户外行业门户网站。
    42

    得分:2365

  • 搜旅网www.soulv.com

    Alexa周排名:1872295百度权重:PR:反链数:103
    网站简介:搜旅网(Soulv.com)是中国领先的旅游搜索引擎,搜旅网致力于通过集成旅游产业链的各相关企业信息,搭建用户互动式的信息分享平台,为用户提供航班、酒店、度假、火车票、签证及租车等旅行相关产品的价格及服务的比较...
    43

    得分:2363

  • 汇车网www.huiche.com

    Alexa周排名:16719百度权重:PR:反链数:2737
    网站简介:  汇车网(www.huiche.com)致力打造中国领先的在线汽车分享及自助租车电子商务平台。汇车网创造变革性的商业模式与经营理念,为用户提供完全区别于传统汽车租赁方式的全新汽车分享服务。
    44

    得分:2361

  • 80天环游网www.80tian.com

    Alexa周排名:14031百度权重:PR:反链数:374
    网站简介:80天环游网(www.80tian.com)聚合了全国上万家旅行社,为您提供便捷的在线旅游产品预订。
    45

    得分:2349

  • 第一旅游网www.toptour.cn

    Alexa周排名:108107百度权重:PR:反链数:324
    网站简介:第一旅游网(toptour.cn)由中国旅游业第一媒体《中国旅游报》创办,立志成为中国旅游第一网络资讯平台。第一旅游网为游客提供旅游相关服务,包含旅游新闻、资讯、攻略、投诉、分享、点评等诸多服务。
    46

    得分:2320

  • 上海泰格旅游网www.4008885166.com

    Alexa周排名:133789百度权重:PR:反链数:907
    网站简介:上海泰格旅游网(www.4008885166.com)提供上海周边旅游,长途旅游,上海出境游等服务.泰格作为一流上海旅行社_旅游公司,免费上海机场接送,免费上门签约及送票服务。
    47

    得分:2318

  • 中国旅游信息网www.cthy.com

    Alexa周排名:99634百度权重:PR:反链数:615
    网站简介:中国旅游信息网(www.cthy.com)为旅游企业提供交流、展示、导航和旅游信息化服务平台,为旅游消费者提供全方位的出行参考资讯和预订服务,促进旅游学术研究,推动中国旅游产业发展。
    48

    得分:2315

  • 十六番www.16fan.com

    Alexa周排名:61592百度权重:PR:反链数:108
    网站简介:十六番(www.16fan.com)提供各地最新的旅游经验,技巧,如何选择最合适的线路,便宜舒服的住宿,廉价的航班。同时聚合了各地旅行达人,拥有最舒适的交流环境。
    49

    得分:2286

  • 中国旅游网www.51yala.com

    Alexa周排名:283586百度权重:PR:反链数:659
    网站简介:中国旅游网(www.51yala.com)汇集百万中国旅游景点大全及行程攻略,专业查询预订中国旅游线路、旅游景点、酒店、机票等。中国旅游网荟萃中国旅游网站大全精华,是您首选的中国旅游网站第一门户。
    50

    得分:2266

  • 桂旅网www.guilin.cm

    Alexa周排名:2181901百度权重:PR:反链数:120
    网站简介:桂旅网GuiLin.cm桂林虹桥国际旅行社旗下旅游网,提供桂林各旅游景点介绍,桂林旅游线路报价,酒店预订、租车服务、会议会展服务等,并有桂林天气预报以及大量网友提供的真实桂林旅游攻略、游记。玩山水,来桂林-桂林...
    51

    得分:2255

  • 极限户外网www.xout.cn

    Alexa周排名:91687百度权重:PR:反链数:212
    网站简介:极限户外网,中国第一综合户外运动门户资讯网站,极限网涵盖越野、SUV、自驾游、自行车、单车、骑行、山地车、徒步旅行、登山等户外运动;极限网内,驴友、自助游、游记、摄影、探险、攻略、户外装备等资讯丰富,是户...
    52

    得分:2253

  • 积木游www.jimuyou.com

    Alexa周排名:6688846百度权重:PR:反链数:50
    网站简介:积木游(www.jimuyou.com)让你轻松享受自助游快乐!还在为你的旅行而烦恼么,积木游提供给您更多旅行信息,包括交通查询,酒店查询,景区,景点,旅游计划,等旅游信息。
    53

    得分:2242

  • 环球旅讯www.traveldaily.cn

    Alexa周排名:44544百度权重:PR:反链数:182
    网站简介:环球旅讯(www.traveldaily.cn)是中国专业的旅游资讯网站,立足于中国,全面报道中国及世界旅游业发展的重大新闻事件,旨在为旅游业界高层和决策者提供独立、专业、权威的新闻资讯和深度评析。
    54

    得分:2234

  • 走途旅游网www.zoutu.com

    Alexa周排名:13608百度权重:PR:反链数:313
    网站简介:
    55

    得分:2227

  • 我要去旅行网www.517huwai.com

    Alexa周排名:139659百度权重:PR:反链数:187
    网站简介:517网(www.517huwai.com)是中国最优秀,用户体验最好的驴友互动社区,提供参与和组织活动的平台,分享和交流出行经验的社区,结识和维护驴友关系的圈子,以及展示驴友风采的个性空间。
    56

    得分:2220

  • 路趣网www.roadqu.com

    Alexa周排名:97622百度权重:PR:反链数:777
    网站简介:路趣旅游网是基于旅游LBS和旅游微博的旅游社区,中国首家旅游交友网站;这里能分享旅游照片;这里有丰富的户外活动,有众多旅游景点点评;通过旅游SNS进行旅游交友互动;爱旅行,上路趣,是你户外休闲、自助游的好去...
    57

    得分:2210

  • 佰程旅行网www.byecity.com

    Alexa周排名:95747百度权重:PR:反链数:996
    网站简介:佰程旅行网(www.byecity.com)隶属于华远国际旅行社,作为中国领先的出境旅游服务提供商,我们提供出国旅游,自由行,旅游签证,国际酒店预订等全方位的出境旅游服务。
    58

    得分:2191

  • 旅程吧www.lvchengba.com

    Alexa周排名:6133637百度权重:PR:反链数:96
    网站简介:旅程吧(lvchengba.com)是中国最大的旅游一站式服务平台,旅程吧为旅游爱好者提供丰富多样的精品旅游线路,另有特价机票、酒店、车票等查询预订服务。更有知名景区景点的详细介绍以及数百万旅游爱好者原创旅游游记攻...
    59

    得分:2183

  • 梦之旅旅游网www.dreams-travel.com

    Alexa周排名:112233百度权重:PR:反链数:349
    网站简介:梦之旅旅游网(dreams-travel.com)是中国最简单,最快捷,最方便,性价比最高,旅游资讯最全的经济型旅游网!提供一站式服,自助游,周边旅游,国内旅游,出境旅游及酒店预定!
    60

    得分:2169

  • 亲和力旅游网www.qhlly.com

    Alexa周排名:250754百度权重:PR:反链数:766
    网站简介:亲和力旅游网【www.qhlly.com】咨询热线40060-22222是全国百强排名第六旅行社。长沙亲和力旅游网提供国内旅游、出境旅游线路一站式旅游服务;涵盖长沙旅游度假,长沙周边旅游,长沙出境旅游,长沙旅游景点大全。实时发团...
    61

    得分:2168

  • 远方网www.likefar.com

    Alexa周排名:95447百度权重:PR:反链数:141
    网站简介:远方网(www.likefar.com)是一个专门为自助游爱好者提供自助游攻略和交流自助旅游资讯的平台.其另外一部分是客栈联盟,该联盟为自助旅行者网罗了国内所有实惠而又饱含当地人文风情的客栈.
    62

    得分:2150

  • 拼途网www.pintour.com

    Alexa周排名:111626百度权重:PR:反链数:675
    网站简介:拼途网(www.pintour.com)是以旅行为主题的驴友网络社区,提供旅游攻略分享,旅行计划制定,结伴旅行招募活动发布,途说,手机旅行等特色服务。拼途网,体验不一样的旅行!
    63

    得分:2149

  • 旅视网www.517dv.com

    Alexa周排名:6797百度权重:PR:反链数:61
    网站简介:旅视网(www.517dv.com)是国内规模最大、视频内容最全的旅游视频网站,也是中国第一家B2C交流互动式旅游视频展示平台的旅游垂直媒体网站。
    64

    得分:2144

  • 途客圈www.tukeq.com

    Alexa周排名:1804559百度权重:PR:反链数:73
    网站简介:自助旅行,建立自己的旅程,分享旅程,寻找同游,尽在途客圈。途客圈,是为了每一个热爱自由出行的途客而成立!
    65

    得分:2144

  • 神舟国旅www.guolvol.com

    Alexa周排名:118776百度权重:PR:反链数:1261
    网站简介:北京神舟国际旅行社集团有限公司是首都旅游集团旗下的国有全资大型旅行社集团公司.业务涵盖出境旅游,国内旅游,商务旅游,团队旅游等.产品丰富,价格优惠,质量可靠。
    66

    得分:2133

  • E假海南旅行网www.ethainan.com

    Alexa周排名:20311百度权重:PR:反链数:93
    网站简介:E假海南旅行网(Ethainan.com)为您提供海南旅游,三亚旅游,海南自由行,三亚自由行,三亚酒店,三亚婚纱摄影,三亚自由人,三亚机票,三亚会议等旅游度假服务。
    67

    得分:2131

  • 中国古镇网www.sozhen.com

    Alexa周排名:131772百度权重:PR:反链数:277
    网站简介:中国古镇网(www.sozhen.com)携程旗下网站,中国排名第一最权威的古镇网站 |与中国古镇古村落旅游公司合作最紧密的古镇门户网站。
    68

    得分:2131

  • 旅人网www.lvren.cn

    Alexa周排名:426563百度权重:PR:反链数:441
    网站简介:旅人网(www.lvren.cn)成立于2008年,是一家专著于为自助游旅行者提供信息服务的网站。提供最权威的中国旅游景点、旅游线路、旅游攻略、旅游地图、游记、门票、天气、交通、电话、美食、酒店宾馆、旅行社等出行指南...
    69

    得分:2123

  • 五分旅游网www.zhcpic.com

    Alexa周排名:710729百度权重:PR:反链数:1955
    网站简介:打造全国唯一一个满分旅游网站,让旅游0投诉,细节服务打造品牌!
    70

    得分:2123

  • 出国去www.chuguoqu.com

    Alexa周排名:12399百度权重:PR:反链数:106
    网站简介:出国去是出境自由行服务预订平台,提供最具代表性、最具消费价值的境外购物、自由行、餐厅、娱乐(影剧院等)、住宿、高尔夫、酒庄、游轮、租车、当地旅行社等各类优质旅游服务,并可直接线上预定,让游客的境外旅游...
    71

    得分:2113

  • 游侠客旅游网www.youxiake.com

    Alexa周排名:76490百度权重:PR:反链数:175
    网站简介:游侠客(www.youxiake.com)是旅行者的社交网络,为旅行者、驴友、车友、摄友提供网络出游和户外交友的专业在线旅游服务平台,以策划和组织国内外独家深度游线路而闻名!
    72

    得分:2106

  • 台湾岛旅游网www.taiwandao.tw

    Alexa周排名:156703百度权重:PR:反链数:376
    网站简介:台湾岛旅游网(www.taiwandao.tw)的内容包含台湾自由行,大陆去台湾政策,台湾旅游攻略,台湾自由行攻略,台湾知识百科,台湾新闻网,台湾问答,宾馆预订。台湾岛旅游网是大陆去台湾旅游必读网站。台湾个人游最好的参考网...
    73

    得分:2073

  • 北京青年爱游旅游行网www.aiutrip.com

    Alexa周排名:53939百度权重:PR:反链数:86
    网站简介:
    74

    得分:2068

  • 走吧网www.autob.cn

    Alexa周排名:13531百度权重:PR:反链数:79
    网站简介:走吧网是国内最大的自驾车旅游垂直社交分享网站。全国各地自驾游出行者分享最新最全的路书、游记、自驾游攻略以及海量旅游照片,为即将自驾游出行车友提供最新的自驾游路线、目的地路书游记攻略等信息,便捷的自驾游...
    75

    得分:2060

  • 中华人民共和国国家旅游局www.cnta.com

    Alexa周排名:911337百度权重:PR:反链数:1810
    网站简介:中华人民共和国国家旅游局官方网站。
    76

    得分:2059

  • 朋游风景网www.upengyou.com

    Alexa周排名:3354663百度权重:PR:反链数:29
    网站简介:朋游风景网(www.upengyou.com)是一个基于真实人脉关系及共同爱好的新型旅游社交社区,为充满梦想的旅行爱好者提供全球超过2.2万个目的地和景点的信息、导游地图、游玩攻略、点评、定制旅行计划,是全球收录旅游景点...
    77

    得分:2055

  • 金色世纪商旅网www.jsj.com.cn

    Alexa周排名:142032百度权重:PR:反链数:293
    网站简介:北京金色世纪商旅网络科技股份有限公司自1998年创立至今,携15年中高端商旅服务的专业积累,推出"D2D" 商旅全程管家服务模式,即:向中高端会员提供从[出发](Departure)TO [到达](Destination)的全行程...
    78

    得分:2054

  • 旅游互联www.nettvl.com

    Alexa周排名:142512百度权重:PR:反链数:114
    网站简介:旅游互联(www.nettvl.com)取意:“旅游的互联网络(Internet Travel) ”,由具有丰富旅游行业经验的资深人士和训练有素的业务人员组成,专业提供旅游目的地资讯及相关服务。
    79

    得分:2045

  • 康辉旅行社团购tuan.cctcct.com

    Alexa周排名:174830百度权重:PR:反链数:234
    网站简介:康辉旅行社团购(tuan.cctcct.com)是深圳康辉旅行社旗下专业立足于深圳旅游团购的网站。
    80

    得分:2042

  • 旅游名店城www.yocity.cn

    Alexa周排名:53816百度权重:PR:反链数:74
    网站简介:旅游名店城(www.yocity.cn)广东银旅通信息网络发展有限公司旗下网站。
    81

    得分:2009

  • 美辰旅游网www.sh51766.com

    Alexa周排名:211462百度权重:PR:反链数:468
    网站简介:美辰旅游(www.sh51766.com)是上海市最佳国际旅行社,上海旅行社中的佼佼者,提供出境游、国内游、周边游、自助游、邮轮游、签证办理服务.
    82

    得分:2006

  • 要出发旅行网www.yaochufa.com

    Alexa周排名:163525百度权重:PR:反链数:501
    网站简介:要出发旅行网(www.yaochufa.com)是国内唯一一家细分市场,以大都市白领为核心目标用户、专业提供中高端酒店和度假产品限时特卖的网站。
    83

    得分:2003

  • 125旅行网www.125uu.com

    Alexa周排名:5233286百度权重:PR:反链数:15
    网站简介:125uu(125旅行网)是专门为全世界旅游企业单位及个人提供全面电子商务服务的网络技术平台。为旅游企业和个人开展网上营销和交易提供可靠的技术支持;为旅游产业的网络化、信息化提供全面的技术服务。
    84

    得分:2003

  • 逸行网www.yeex.cn

    Alexa周排名:44250百度权重:PR:反链数:67
    网站简介:逸行网(www.yeex.cn)是国内领先的精品旅游专家,为用户提供可自定义行程和个性化解决方案,机票、酒店、签证、落地服务一站式自助服务,国内首推先旅游,后买单。
    85

    得分:2000

  • 自在客www.zizaike.com

    Alexa周排名:77467百度权重:PR:反链数:36
    网站简介:自在客(www.zizaike.com)帮你个性化定制自助游,给你更合适的景点、更个性化的安排,更优的旅行地图路线,自在客让自助游变得更简单!
    86

    得分:1995

  • 7998沙发客7998travels.com

    Alexa周排名:1129086百度权重:PR:反链数:26
    网站简介:7998沙发客是中国最受大学生喜欢的旅游网,网站提倡大学生通过搭车,徒步,骑行、沙发客等穷游的方式来实现旅游!既是国内第一个专注国内市场穷游网站,也是国内最知名的沙发客!
    87

    得分:1973

  • 旅行者www.uutuu.com

    Alexa周排名:114699百度权重:PR:反链数:63
    网站简介:精品旅游网(www.uutuu.com)《旅行者》杂志官网,原万花筒,提供温泉酒店,春节旅游,海南度假,三亚酒店,白领度假,亲子游,室外温泉,抓绒衣,情人酒店,白领旅游,特价温泉,亚龙湾,冲锋衣,精品酒店,酒店团购,户外用品,自助游...
    88

    得分:1972

  • 画旅途www.hualvtu.com

    Alexa周排名:1221379百度权重:PR:反链数:26
    网站简介:画旅途(www.hualvtu.com)我的图片游记。
    89

    得分:1972

  • 驴小宝www.lvxiaobao.com

    Alexa周排名:5346488百度权重:PR:反链数:32
    网站简介:驴小宝(lvxiaobao.com)为自助旅游、自驾游的旅游爱好者提供优惠的景区门票、酒店住宿、及其他旅游特价活动,即使你是一个人也能享受到超值优惠喔!
    90

    得分:1971

  • 众信旅游网www.utourworld.com

    Alexa周排名:243411百度权重:PR:反链数:181
    网站简介:众信旅游网(www.utourworld.com)众信国际旅行社旗下的网站.专业提供团队游_自由行_海岛游_邮轮旅游_公司旅游_签证办理等出境旅游服务。
    91

    得分:1969

  • 贝壳出行网www.outsoo.com

    Alexa周排名:1883344百度权重:PR:反链数:49
    网站简介:贝壳出行网(www.outsoo.com)是自助游平台,为境内外自助游群体提供产品与服务。就是为用户提供丰富的高端户外运动、自驾车、周末休闲游、以及周边一日游等活动线路,以及保障安全的户外运动保险及服务等产品。
    92

    得分:1959

  • 行天下旅游网www.xtx6.com

    Alexa周排名:35196百度权重:PR:反链数:45
    网站简介:行天下旅行网(www.xtx6.com)是自助旅行类的垂直门户网站,提供专业全面的旅游线路和自助游一站式旅游服务,帮助各地驴友轻松出行,是您出外旅游的最佳选择。
    93

    得分:1958

  • 大连康辉旅游网www.52udl.com

    Alexa周排名:1331538百度权重:PR:反链数:152
    网站简介:大连康辉国际旅行社-大连旅行社排名第一,提供大连旅游、大连旅游团队报价、大连旅行社国内游、出境游、海岛旅游价格和签证服务,100%值得信任的大连旅游网。
    94

    得分:1937

  • 游比比网www.youbibi.com

    Alexa周排名:102550百度权重:PR:反链数:168
    网站简介:游比比网(www.youbibi.com)是国内知名的旅游垂直搜索网站,提供机票比价、酒店比较、旅游比较等旅游类搜索及比较服务。游比比网通过精准的搜索技术发掘更准确、更全面的机票、酒店、度假等旅游信息,让旅行者找到性...
    95

    得分:1934

  • 环视旅游网www.tvtour.com.cn

    Alexa周排名:182130百度权重:PR:反链数:156
    网站简介:环视旅游网( www.tvtour.com.cn)是一个连接旅游供应商和旅游者的综合旅游平台,我们的宗旨是为旅游供应商带来更多的游客,同时帮助旅游爱好者做出最适合的出游选择;环视旅游网是由广州环视传媒电视传播有限公司策划...
    96

    得分:1925

  • 福特佳旅游网www.ftj.cn

    Alexa周排名:1744387百度权重:PR:反链数:10
    网站简介:福特佳旅游网(ftj.cn)是中国最好的旅游网站,专助于向爱好旅游度假的朋友提供世界各地几十万条周边、国内、出境旅游线路,并提供机票比价预订、酒店比价预订、旅 游交友、旅游资讯、旅游攻略等服务。
    97

    得分:1917

  • 途野www.tuye.com

    Alexa周排名:12361193百度权重:PR:反链数:18
    网站简介:途野(tuye.com)是以户外社交、户外旅游、体育活动、野外探险、文娱商演、艺术展览、爱心公益、等综合户外活动发起及参与网络平台。
    98

    得分:1916

  • 果粒网www.guoli.com

    Alexa周排名:39239百度权重:PR:反链数:53
    网站简介: 果粒网,轻度假引领者,我们精选优质优价的酒店/度假村、特色美食以及休闲项目,让您和家人享受一个充满天伦之乐的假期;让您的出行拥有更舒适的居停;为您在陌生的目的地预订最具口碑的特色餐馆......人生重在体验...
    99

    得分:1912

  • 易联假期旅行网www.easy-linkholiday.com

    Alexa周排名:87259百度权重:PR:反链数:13
    网站简介:易联假期旅行网(www.easy-linkholiday.com)是以酒店预订,旅行度假目的地查询为主的在线旅行服务互联网站,可在线查询预订酒店宾馆,预订价格优惠的中国各地的酒店,查询目的地天气信息,查询酒店电子地图信息,浏览旅游...
    100

    得分:1907

  • 旅游财富网www.5u588.com

    Alexa周排名:90425百度权重:PR:反链数:112
    网站简介:旅游财富网(www.5u588.com)中产阶级旅游地产交易,休闲度假预订,产业资讯服务综合网络平台;旅游,地产,房地产,产权酒店,度假公寓,别墅,酒店,景区,景点,休闲养生,运动娱乐。
    101

    得分:1905

  • 游鱼www.yoyv.com

    Alexa周排名:141044百度权重:PR:反链数:174
    网站简介:游鱼(www.yoyv.com)是一个旅游爱好者分享旅途快乐,交流旅行经验的旅游社区。游鱼是一部涵盖目的地餐饮、住宿、交通、旅游景点、购物、娱乐等实用信息的旅行指南。
    102

    得分:1903

  • 张家界旅游卓越网www.e0744.com

    Alexa周排名:10180679百度权重:PR:反链数:20
    网站简介:张家界海外国际旅行社—张家界旅游卓越网,是湖南张家界旅游15年著名品牌,提供张家界旅游线路,专业承办会议;预订酒店、导游、车辆、门票、组团、自助游/张家界旅游咨询:400-015-0528
    103

    得分:1886

  • 畅游网www.hqcyw.cn

    Alexa周排名:131642百度权重:PR:反链数:445
    网站简介:畅游网(www.hqcyw.cn)作为国内最专业的精准旅游酒店机票搜索网站,为国内外的终端消费者提供全面、权威、专业的旅游酒店机票预订服务,及时地提供旅游,酒店、机票预订和查询。
    104

    得分:1878

  • 日本呦www.jpyoo.com

    Alexa周排名:24957百度权重:PR:反链数:40
    网站简介:日本呦(www.jpyoo.com)为您提供最权威的日本旅游信息,包括日本旅游资讯及城市景点介绍,日本全攻略,囊括日本娱乐,明星八卦,日本购物,日本时尚,动漫等。
    105

    得分:1877

  • 指南针旅游网www.ly321.com

    Alexa周排名:8341773百度权重:PR:反链数:153
    网站简介:指南针旅游网(www.ly321.com)以为中文地区旅游者提供最便捷的旅游相关信息查询的服务为己任,目标是把指南针网建成为中文地区旅游者进行旅游信息查询、信息比较的首选网站
    106

    得分:1873

  • 户外旅游网www.txjly.com

    Alexa周排名:1725355百度权重:PR:反链数:449
    网站简介:户外旅游网(www.txjly.com)是国内景点门票,酒店,旅游度假及租车订餐的在线旅游服务平台,2010年4月由江西省探险家旅游服务有限公司创立于美丽的英雄城南昌。
    107

    得分:1862

  • 踏客旅游网www.takely.com

    Alexa周排名:16975805百度权重:PR:反链数:26
    网站简介:踏客旅游网(www.takely.com)是中国领先的旅游线路预订服务提供商,为旅游者提供出境游,国内游,周边游,自助游,邮轮旅游等一站式预订,并且整合旅游行业资源(旅行社、航空、酒店、门票、签证等), 一对一贴心管...
    108

    得分:1856

  • 沙发客www.cnsfk.com

    Alexa周排名:1057247百度权重:PR:反链数:67
    网站简介:沙发客(www.cnsfk.com)网是国内第一家也是最大的一家沙发客网站,是一个以互助旅游为目的的交友平台,有超过25万名注册会员。旅行爱好者们在这里结交好友,共同旅行,交换住房,分享旅程,以互助的方式,达成各自的理...
    109

    得分:1854

  • 全游网www.3608.com

    Alexa周排名:1375169百度权重:PR:反链数:411
    网站简介:全游网(www.3608.com)提供吃住行娱游购、旅游活动、旅游优惠、景区景点、旅游线路、出境游、游记攻略,提供机票,车票,酒店,餐馆,购物,生活服务。
    110

    得分:1846

  • 车之旅自驾游资讯网www.chezhilv.cn

    Alexa周排名:663389百度权重:PR:反链数:237
    网站简介:车之旅自驾游资讯网,是全国最大自驾旅游资讯电子商务网站。致力于打造最专业的自驾游商业信息网络平台,服务中国自驾游景点,酒店,餐饮,购物,休闲等领域的推广需求。
    111

    得分:1843

  • 山水旅游黄页www.lvyou114.com

    Alexa周排名:267997百度权重:PR:反链数:520
    网站简介:山水旅游黄页(www.lvyou114.com)是专业的旅游交流、旅游交易平台。为旅游企业免费提供旅游电子商务平台,由旅游企业向游客提供旅游资讯,城市旅游介绍,旅游线路预订,酒店预订,旅游景点门票预订,机票预定,旅游租...
    112

    得分:1838

  • 墙根网www.qianggen.com

    Alexa周排名:2432468百度权重:PR:反链数:208
    网站简介:墙根网(www.qianggen.com)是一家致力于服务北京群众生活,倡导生活价值的北京生活旅游网站,为生活在北京的群众提供最实用的京郊旅游信息、旅游攻略、生活信息、自驾游、自助游、民俗游、文化游美食信息、便民服务...
    113

    得分:1837

  • 牛助网www.niuzhu.com

    Alexa周排名:61859百度权重:PR:反链数:22
    网站简介:牛助网(www.niuzhu.com)出国旅游、留学、移民分享交流社区,全球海量签证、娱乐、游记、出入境、景点、交通、购物、地图、美食、货币、住宿、贴士、行程、通讯、图片、旅游禁忌等信息,牛助网,助你轻松出国。
    114

    得分:1822

  • 全景客www.quanjingke.com

    Alexa周排名:382493百度权重:PR:反链数:173
    网站简介:全景客虚拟旅游网(www.quanjingke.com),拥有海内外400多个城市,2000多个景区,100000多张高清720度全景,致力于打造全球领先的虚拟旅游服务平台.
    115

    得分:1819

  • 出游客旅游网www.chuyouke.com

    Alexa周排名:433349百度权重:PR:反链数:139
    网站简介:出游客旅游网是一个基于旅行社和旅游爱好者以旅游线路为纽带的旅游电商服务网站,主要以为旅行社以及旅游服务提供商寻求更直接的有效客户,为出游者制定快捷真实的出行计划并可以更有规划的安排对比自己的行程.
    116

    得分:1816

  • 七维网www.qiwei.com

    Alexa周排名:3968983百度权重:PR:反链数:1
    网站简介:七维网是一个新型旅游分享网站,通过发现和目的地栏目让维生素们能在无目的和有目的的条件下看见自己想看的旅行照片,所有的照片分享都来自于维生素们的原创,我们对原创内容的坚持是希望分享和浏览照片的用户之间能...
    117

    得分:1815

  • 爱自由旅游网www.izy.cn

    Alexa周排名:1847103百度权重:PR:反链数:187
    网站简介:爱自由旅游网(www.izy.cn)于2005年6月1日开始进行研发,2005年10月1日正式上线,目前已成为国内较大的旅游资讯互动平台和旅游电子商务平台之一。
    118

    得分:1809

  • 周边游旅行网www.zhoubianyou.com

    Alexa周排名:3411053百度权重:PR:反链数:41
    网站简介:周边游旅行网(www.zhoubianyou.com)为您提供假日休闲旅游产品,包括城市周边及临近省份的景区门票、娱乐项目、餐饮和住宿等,通过精心挑选旅行线路,设计度假产品,让您的每个周末都100%的充实。周末不知道去哪玩就...
    119

    得分:1798

  • 四川热线www.sichuan163.com

    Alexa周排名:8995173百度权重:PR:反链数:8
    网站简介:四川热线163(sichuan163.com)是立足四川、辐射全国的综合性区域门户网站,为用户提供资讯、生活、博客、房产、汽车、财经、健康、美食、旅游、教育、时尚、娱乐、交友等20多个频道,并拥有四川最大的门户社区.四川热线...
    120

    得分:1793

  • 搜比旅游搜索www.soobb.com

    Alexa周排名:280368百度权重:PR:反链数:20
    网站简介:搜比旅游搜索(www.soobb.com)是创建和分享旅游计划的网站。用户可以根据自己的喜好创建一个旅游计划,加入航班,酒店,旅游景点等信息。然后还可以和家人朋友分享你的旅游计划。
    121

    得分:1792

  • 六只脚www.foooooot.com

    Alexa周排名:308687百度权重:PR:反链数:74
    网站简介:六只脚(www.foooooot.com)通过GPS轨迹记录仪记录户外自助游线路轨迹,航迹,航点,提供GPS轨迹分享,轨迹下载,旅游景区景点及GPS设备资讯,感受你在户外旅游中的乐趣,分享您在自助游线路的轨迹路线,并提供手机GPS轨迹记...
    122

    得分:1778

  • 星期八团游网www.eightu.com

    Alexa周排名:176306百度权重:PR:反链数:104
    网站简介:星期八团游网(www.eightu.com),每天推出限时限量精品旅游消费,使用户享受超低惠折扣。专业旅游、景点门票、酒店住宿、户外运动等团购
    123

    得分:1756

  • 德国开元国际旅行社www.kaiyuan.eu

    Alexa周排名:184212百度权重:PR:反链数:116
    网站简介:德国开元旅游(www.kaiyuan.eu)是开元网旗下的一个专业的旅游网站,是海外领先的中文在线旅游服务。我们以德国开元的欧洲本地优势为依托,建立起从国内到国外的旅游一站式旅游服务。
    124

    得分:1752

  • 悦旅行www.yuelvxing.com

    Alexa周排名:104129百度权重:PR:反链数:64
    网站简介:悦旅行(www.yuelvxing.com)是一个旅行地搜索引擎,它致力于为人们缩短挑选目的地和制定旅行计划的时间,对每一位用户提供精准的旅行地内容推荐,介绍当地的文化,好吃,好玩的地方,以及最优质的旅游产品。
    125

    得分:1742

  • 3487旅行网www.3487.com

    Alexa周排名:16456百度权重:PR:反链数:2
    网站简介:3487旅行网(www.3487.com)为广大驴友提供自驾游、自助游发布交流平台,提供旅游景点介绍、攻略和自驾游路线。
    126

    得分:1736

  • 大连UU旅行网www.uutrip.net

    Alexa周排名:815467百度权重:PR:反链数:133
    网站简介:大连UU旅行网-大连专业的旅游电子商务网站,与大连百余家旅行社、景区及酒店进行友好合作,提供各类旅游线路预订服务,涵盖国内游、周边游、自助游、自驾游、公司旅游等,上千种旅游线路产品轻松预订,高性价比,快速...
    127

    得分:1729

  • 在途网www.onthetrip.com

    Alexa周排名:14488504百度权重:PR:反链数:6
    网站简介:在途网(www.onthetrip.com)是一个活跃的自助游旅行社区,里面有无数准备旅行和旅行归来的用户,大家可以收藏、分享、获取最新鲜的旅行资讯,一起策划讨论合理的旅行计划,可以获得旅行达人的旅行指点,可以向去过的...
    128

    得分:1727

  • 酷走旅游网www.coolzou.com

    Alexa周排名:70605百度权重:PR:反链数:1
    网站简介:酷走旅游网(www.coolzou.com)致力于打造一个具有丰富交流互动功能的自助游信息分享与发布平台。
    129

    得分:1724

  • 蝉游记chanyouji.com

    Alexa周排名:177837百度权重:PR:反链数:100
    网站简介:蝉游记(chanyouji.com)旅行回忆卷轴,蝉游记与旅行推同属于上海蝉翼网络科技有限公司旗下站点,网站创始人为郭子威(纯银)。
    130

    得分:1723

  • 自游网www.ziyou.com

    Alexa周排名:279984百度权重:PR:反链数:87
    网站简介:自游网(www.ziyou.com)是一个基于真实人脉关系及共同爱好的开放式旅游社区,我们希望为所有充满梦想的旅行爱好者提供一个属于自己的窝。在这里,你可以获得最新鲜实用的旅游指南,可以让大家一起来帮你制定或完善出...
    131

    得分:1703

  • 在路上www.117go.com

    Alexa周排名:487387百度权重:PR:反链数:54
    网站简介:在路上(www.117go.com)可以为您完整记录整个旅行,特别适合旅游爱好者在旅行途中使用。可卫星定位记录坐标,全程记录线路、图片、文字,并可选择分享到微博。
    132

    得分:1696

  • 出城网www.ccyou.cn

    Alexa周排名:473347百度权重:PR:反链数:54
    网站简介:出城网(www.ccyou.cn)是由一个聚集了众多青年才俊的杰出团队创办的、并致力于打造中国最大的乡村休闲自助游信息平台的网站。
    133

    得分:1692

  • 也去旅行网www.weyup.com

    Alexa周排名:14630382百度权重:PR:反链数:3
    网站简介:也去旅行网(weyup.com),是国内领先的社交旅行网站,集社交,旅行,酒店,美食以及购物一体化帮助您快速制定自己的旅行计划,制作精美的旅行护照,查看您的朋友都在哪儿旅行,快速与你的社交网络(微博,开心网,人人...
    134

    得分:1691

  • 旅程天下网www.cnutg.com

    Alexa周排名:2439814百度权重:PR:反链数:208
    网站简介:旅程天下网(www.cnutg.com),向超过百万会员提供包括旅游度假、机票预定、酒店预定等全方位的商旅服务。
    135

    得分:1690

  • 在路上旅行网www.zls365.com

    Alexa周排名:330793百度权重:PR:反链数:46
    网站简介:在路上旅行网(www.zls365.com)为驴友提供一线的旅游资讯、实用的精彩行程、贴心的旅行服务。是旅游爱好者最知性的交流平台!旅游攻略、省钱攻略、美食攻略尽在在路上。
    136

    得分:1681

  • 古镇网www.goodzhen.com

    Alexa周排名:170026百度权重:PR:反链数:14
    网站简介:古镇网(www.goodzhen.com)是中和文化传播公司旗下网站,致力于古城古镇古村古民居的旅游信息的发布、交流,以及民俗文化方面的研究,为广大古镇和民俗旅游爱好者建立沟通的桥梁和信息的平台。
    137

    得分:1621

  • 巴西华人网www.brasilcn.com

    Alexa周排名:709953百度权重:PR:反链数:36
    网站简介:巴西中文门户站,巴西中文新闻媒体,50万巴西华人社区。作为巴西最大中文社区,是人民网、新京报、凤凰网等多家知名媒体巴西新闻提供商。随着2014年巴西世界杯和2016年奥运会临近,巴西华人网正在为越来越多的国人提...
    138

    得分:1605

  • 稻草人旅行www.54traveler.com

    Alexa周排名:1246329百度权重:PR:反链数:10
    网站简介:稻草人旅行(www.54traveler.com)对于那些不再满足于传统旅游模式的旅行者们,稻草人开辟了一个全新的世界。凭借对旅行最执著的热爱,稻草人正带领旅行者们探索我们祖国最令人惊奇的地方、发现真实的人、真正的文化...
    139

    得分:1588

  • 武隆旅游网www.wlkst.com

    Alexa周排名:1132896百度权重:PR:反链数:95
    网站简介:武隆旅游网是重庆市武隆喀斯特旅游(集团)有限公司旗下网站,由武隆县政府授权建立的最权威,也是唯一的武隆旅游官方网站,目的在于提升武隆旅游整体形象,扩大武隆旅游对外影响力及美誉度,打造国内外著名旅游品牌,...
    140

    得分:1565

  • 游景网www.yoojing.com

    Alexa周排名:115464百度权重:PR:反链数:6
    网站简介:游景网(www.yoojing.com),它有全国各地省、市、县最完备的旅游景点大全,各景点还有丰富的景点美景大图,为您的出游做好最佳参谋!
    141

    得分:1529

  • 去西藏旅行网www.quxizang.com

    Alexa周排名:884561百度权重:PR:反链数:62
    网站简介:去西藏旅行网(www.quxizang.com)是西藏自助游的发源地,为去西藏的驴友们提供西藏旅游游记、西藏自助游结伴、西藏图片等西藏旅游相关信息及服务。
    142

    得分:1474

  • 第一步旅行网www.diyibu.cn

    Alexa周排名:1890916百度权重:PR:反链数:10
    网站简介:第一步旅行网(www.diyibu.cn)是一个提供旅游攻略、旅游计划、游记的旅游网站。
    143

    得分:1465

  • 脚丫旅游网www.jiaoya.com

    Alexa周排名:1585536百度权重:PR:反链数:19
    网站简介:脚丫旅游网(www.jiaoya.com)是中国最大的旅游信息平台,提供最专业的行程安排、服务标准、线路报价,提供最全面的旅游线路搜索、比价、预订服务。
    144

    得分:1447

  • 悠会网www.inmeeting.com.cn

    Alexa周排名:2282421百度权重:PR:反链数:29
    网站简介:悠会网致力于打造中国顶级会务及商旅整合运营商,是中国最大的在线会务及商旅服务平台,面向企业级客户提供全方位的会务及其周边服务预订。打造一个线上线下结合的全方位覆盖会议前、会议中和会议后的完善服务价值链...
    145

    得分:1443

  • 友多网www.youduo.com

    Alexa周排名:293406百度权重:PR:反链数:3
    网站简介:友多网是世界上介绍横断山区最系统、最专业、最权威的网站,内容包括中国西部的甘孜州、阿坝州、大凉山、滇西北、藏东南等地的旅游、地理、文化资讯。
    146

    得分:1435

  • 传奇旅游网www.clvyou.com

    Alexa周排名:2497268百度权重:PR:反链数:32
    网站简介:传奇旅游(www.clvyou.com)是新一代专业的互联网在线旅行服务供应商,提供在线旅游产品服务的旅游企业,是上海首批A级旅行社,知名上海旅行社网站,上海市民公众满意旅游企业,为上海传奇国际旅行社有限公司官方网站。
    147

    得分:1417

  • 地球密码网www.earthpassword.com

    Alexa周排名:650703百度权重:PR:反链数:11
    网站简介:地球密码网(www.earthpassword.com)是一个新型的灵魂分享、约伴出行的旅游综合网站,网站摈弃了传统的旅行攻略和旅游线路的网站模式。为旅行者营造了一片分享灵魂的净地。可以使旅行者真正的达到用心感悟世界,用灵...
    148

    得分:1394

  • 阳羡磨坊www.yxmf.org

    Alexa周排名:1371533百度权重:PR:反链数:10
    网站简介:阳羡磨坊(www.yxmf.org)是一个以驴友为主体的宜兴户外旅游网站,多年来一直致力于户外运动的发展,从无到有,从小到大,现已是宜兴地区最大的专业户外网站!
    149

    得分:1377

  • 咕噜游旅行网www.guluyou.com

    Alexa周排名:1154225百度权重:PR:反链数:15
    网站简介:咕噜游旅游网_中国旅行社出身最专业全面的旅游线路和自助游在线旅游预定服务商,2011年荣获深圳“老字号”荣誉,提供自助游,周边旅游,国内旅游,出境旅游,多年被评为出境,东南亚线路十大批发商,自由,专业,享受全程优质服...
    150

    得分:1363

  • 麦豆旅游网www.maidou.cn

    Alexa周排名:2904151百度权重:PR:反链数:75
    网站简介:麦豆旅游网(www.maidou.cn)是中国领先的旅游线路预订服务提供商,为旅游者提供出境游,国内游,周边游,自助游,邮轮旅游等一站式预订,并且整合旅游行业资源(旅行社、航空、酒店、门票、签证等), 一对一贴心管...
    151

    得分:1293

  • 黄山自驾游网www.huangshanzjy.com

    Alexa周排名:--百度权重:PR:反链数:196
    网站简介:黄山自助游网(www.huangshanzjy.com)专业为您打造全面的黄山旅游攻略信息,为您打造完美一个的完美的黄山旅游,还有更多黄山旅游特价!
    152

    得分:1020

  • 台湾旅游网www.guolv.net

    Alexa周排名:--百度权重:PR:反链数:30
    网站简介:神舟国旅台湾旅游网:最新台湾旅游报价,台湾旅游签证办理、精彩台湾游记和问答。专业提供台湾旅游 入台证办理【1天出证 超快】,台湾旅游资讯第一平台!咨询电话:400-600-9889
    153

    得分:933

  • 好易订旅游网www.365h.com

    Alexa周排名:--百度权重:PR:反链数:25
    网站简介:好易订(www.365h.com)是中国最大的酒店团购和旅游团购服务提供商,签约酒店和旅行社超过10000家,开通超过100个城市酒店团购和旅游团购,首家承诺团购三包服务、积分返券、7x24小时客服服务。
    154

    得分:875

  • 好玩商城www.hwanw.com

    Alexa周排名:--百度权重:PR:反链数:5
    网站简介:好玩商城(www.hwanw.com)是一个旅游行业垂直B2C电子商务网站,为广大旅游企业提供了企业介绍,产品介绍以及产品交易的服务。广大游客可以通过好玩商城实现集旅游信息查询,旅游线路、酒店、航班预定以及交易等需求...
    155

    得分:843

 
94月/14

同程网吴志祥:拒绝赢在中国500万后,我是如何融资的

发布在 邵珠庆

今天是一个值得纪念的日子(同程网获腾讯、博裕、元禾5亿元的新一轮融资),就讲讲公司的第一次融资吧。融资对任何一个创业者来说都是非常重要的,而在2006年之前,我们对此却毫无概念,虽然有时也会看看国内的互联网公司融资上市的故事,但觉得那实在是太遥远,就象那个卖火柴的小女孩隔着玻璃看着有钱人吃火鸡一样,觉得这是两个世界的事。直到06年参加完赢在中国,半年多时间,接触了国内最顶级的企业家,投资人,象马云熊晓鸽阎焱徐新等,在12进5的七场商战中,每周都可以面对面与他们交流,对自己的提升帮助确实是无与伦比的。从北京回来后,我们也在更多的思考我们的商业模式(之前我们一般说如何赚钱,从北京回来后,知道了“商业模式”这个词比“如何赚钱”高大上多了,其实是一回事)。

同程网吴志祥:拒绝赢在中国500万后,我是如何融资的

这是当时参加赢在中国108进36模拟商战时的照片,他告诉我,任何时候,帐上有钱是多么重要。

前几篇讲了,我们找到了第一个产品网上名片,赚了第一个100万,可是在北京参赛的时候与投资人一交流,人家觉得你这个模式太没想象空间了,1万家旅行社老总,每家给你交1000元,只不过1000万,这只是一个能赚点钱的生意,做不大,当时不知哪个大佬说了句,同程网这个模式是苍蝇趴在玻璃上–有光明没前途。

于是回到苏州后,经过激烈讨论,我们做了个艰难的决定,放弃赢在中国的500万投资,下定决心融一笔更大的钱,做一件大事,于是一方面我们继续做网上名片把眼前的钱先赚了,另一方面尝试各种各样的模式,那时记得经常几个人在办公室的白板上画各种模型,计算市场有多大,能赚多少钱,每次计算的都热身沸腾,连夜写好商业计划书,第二天与投资人一交流又是一盆凉水从头淋到脚,那一段时间,大概谈了十几家国内知名的VC,我与和平跑了上海最高档的写字楼(风投一般都在最高档的写字楼里),但可能我们这个团队实在太土,基本回答都是你们的项目很有意思,有消息我们通知你们,但我们一般都等不到消息。

就在我们自己都快要放弃的时候,大概2007年7月的一个中午,一个投资人主动上门了,一换名片,中新创投,觉得这个名字挺大,一聊其实就是苏州园区的,当时负责我们这个案子的是刘彪,到今年他跟我们已经走了六年多了,投了齐家网,笛莎公司,从投资经理变成了知名投资人。但那时他也刚做投资不久,青涩的投资人遇到青涩的创业团队,第一次居然谈的很投缘,从那次以后,我们一两个月见一次,每次聊的也很随意,到2008年3月的时候,他告诉我们,投委会已经通过了,第一笔投资1500万,但觉得我们的价格太贵了,如果一定坚持这个价格的话,就需要加上对赌条款。这些对我们来说,完全没有概念,幸好参加赢在中国认识了很多很牛的朋友,当时的百合网的老大钱江给了我们至今我们也认为非常正确的一个建议,价格可以谈,但投资一定要一次性到帐。于是,我们接受了对赌,但要求不能分期,一定要一次性到帐。又经过1个月的最后谈判,最后签订了合同,合同签完,我与和平就放心出差了,结果三天后的中午,接到刘彪的短信,“资金调度有点问题,我们财务总监正在筹措”,当时我的感觉就是悬了,地主家怎么也会没有余粮呢?还好,两天后,2008年4月的一天,公司的第一笔融资1500万终于到帐了。我们向苏大借了个会议室,开了一次全体员工大会,请投资方代表讲话,中新创投的赵总说这是他们最大的一笔早期投资,希望我们为他们争光(现在看来,基本做到了,以后应该会争更大的光)。我宣布了公司融资后的第一项也是唯一一项福利,从今天起,公司所有同事不用轮流扫地了(之前我们都是值日部门提前15分钟到公司打扫卫生),我们请了一位扫地阿姨,我说,扫地阿姨就是我们融资成功的象征,以后大家看到阿姨,就要充满信心,因为我们是一家帐上躺着1500多万人民币的公司(当时真的觉得1500万是一笔几乎无法花完的钱,特别喜欢用“躺”这个字),所有同事热烈鼓掌,似乎美好的未来就在我们面前。

半个月后,汶川地震了,全国旅游形势急转直下,幸好,1500万已经躺在了我们的帐上。

这就是公司的第一次融资。

网上融资的心得很多,适合自己的才是最好的,下面几条是我们自己的经验,不一定对:

一、投资人的钱袋和他们的脑袋一样重要

二、商业模式是讲出来的,更是做出来的

三、你讲的商业模式可能以后证明是错的,但在你讲的时候,你一定是发自内心的相信

四、在帐上有钱的时候找钱

五、想清楚为什么拿钱比拿钱本身重要

六、拿钱的时机比拿钱的多少重要

七、不同的发展阶段找不同的投资人

八、第一轮投资找一个能长厮守的投资人比一个大牌的投资人重要

同程网吴志祥:拒绝赢在中国500万后,我是如何融资的

这是参加赢在中国36进12淘汰赛的照片,我是第一场第一号,当时2分钟限时讲商业模式,

我临时准备了四张纸,打印好。为什么能赚钱?能赚多少钱?能赚多长时间?为什么是我们?

这招让我通过了马云吴鹰熊晓鸽的考核,顺利晋级。后来很多朋友告诉我,他们融资商业计划书就是按这个思路,我听了有点小得意。

作者:吴志祥(同程网CEO)

24月/14

node.js 初体验

发布在 邵珠庆

最近写的文章收到许多朋友的反馈,感谢大家的支持和建议,让我对坚持写博客充满热情,一个月一篇文章确实有点少,所以以后尽力多做分享,做好的分享,希望能对朋友们有用。

到新公司的这段时间学到了很多新东西,有好多东西需要去总结去探索,不过事情得一件一件来,今天咱们先从Node开始。注:以后出现的Node即node.js。

先搞点前戏热热场 - 为什么写这篇文章:

1.前段时间单位有新项目启动,服务端要做的工作不多也不算麻烦,就是处理一些中间层的服务,而且我们团队里面个个都会JavaScript,领导就决定试试服务器端的JavaScript,结果本人有幸被派去研究了几天Node,怀着鸡冻的心情开始了node.js的篇章,这篇文章也就是为这几天研究的总结。

2.一个JavaScript工程师如果没听过node.js那么我想你是不是错过了什么,每个优秀的前端工程师都有必要去了解后台处理流程,那么如果又能从JavaScript出发,岂不是一件很美妙的事么。

3.互联网的火热使得JavaScript风光无限,且服务端的JavaScript也并不是什么新技术了,相关的框架也有不少,只是node.js的成功让他爆发式的出现在我们的视线中,让很多前端工程师看到了从前端写到后端的另一种实现希望。注:node.js 是一个允许开发人员使用 JavaScript 语言编写服务器端代码的框架。

4.今年8月曾在某大公司最后一轮(第五轮)的面试被问到Node.js的问题,相对应的回答那是相当之糟糕,结果怎样你们懂的,感觉这个问题是导致没有通过的关键点之一...那家公司是我在读大学的时候就无比向往的公司,现在回想起那次经历和过程,谈不上惋惜,毕竟我真的尽力了 - 其实这篇文章更多的也是为了完成自己一个小小的心结...好吧,又扯远了。

5.欢迎各种转载,不过请注明出处,谢谢。
 

  PS:此篇文章的进阶内容在此《Nodejs初阶之express》,欢迎阅读和评论:)

 

Node是个啥?

写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性的拿了些下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段。

1.Node 是一个服务器端 JavaScript 解释器,可是真的以为JavaScript不错的同学学习Node就能轻松拿下,那么你就错了,总结:水深不深我还不知道,不过确实不浅。

2.Node 的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个物理机的连接代码。处理高并发和异步I/O是Node受到开发人员的关注的原因之一。

3.Node 本身运行Google V8 JavaScript引擎,所以速度和性能非常好,看chrome就知道,而且Node对其封装的同时还改进了其处理二进制数据的能力。因此,Node不仅仅简单的使用了V8,还对其进行了优化,使其在各种环境下更加给力。(什么是V8 JavaScript 引擎?请“百度知道”)

4.第三方的扩展和模块在Node的使用中起到重要的作用。下面也会介绍下载npm,npm就是模块的管理工具,用它安装各种 Node 的软件包(如express,redis等)并发布自己为Node写的软件包 。

 

安装Node

在这简单说说在window7和linux两种环境下安装Node。安装的时候一定要注意Python的版本,多次因为Python版本的问题安装失败,建议2.6+的版本,低版本会出现Node安装错误,查询Python版本可在终端中输入:pyhton -v 

  1.先介绍linux下的安装吧,Node在Linux环境下的安装和使用都非常方便,建议在Linux下运行Node,^_^...我使用的是Ubuntu11.04

a.安装依赖包:50-100kb/s大概每个包一分钟就能下载安装完成

  sudo apt-get install g++ curl libssl-dev apache2-utils 
  sudo apt-get install git-core

b.在终端一步步运行一下命令:

  git clone git://github.com/joyent/node.git   
  cd node
  ./configure
  make   
  sudo make install

安装顺利的话到这一步Node就算安装成功了,2M的网络用了共计12分钟。

注:如果不用git下载也可以直接下载源码,不过这样下载安装需要注意Node版本问题。使用git下载安装是最方便的,所以推荐之。

 

2.在Windows下使用Cygwin安装Node,这个方式不太推荐,因为真的需要较长时间和较好的人品。我的系统是 win7旗舰版

Cygwin是一个在windows平台上运行的unix模拟环境,下载地址:http://cygwin.com/setup.exe

下载好Cygwin后开始安装,步骤:

a.选择下载的来源 - Install from Internet

b.选择下载安装的根目录

c.选择下载文件所存放的目录

d.选择连接的方式

e.选择下载的网站 - http://mirrors.163.com/cygwin

f.麻烦就麻烦在这步,考验人品的时候到了。需要的下载安装时间不确定,反正需要比较长的时间(超过20分钟),偶尔会出现安装失败的情况。单击一下各个程序包前面的旋转箭头图标选择你想要的版本,选中时会出现了"x"号表示已经选中了该程序包。选择需要下载的程序包:

复制代码
  Devel包:
    gcc-g++: C++ compiler
    gcc-mingw-g++: Mingw32 support headers and libraries for GCC C++
    gcc4-g++: G++ subpackage
    git: Fast Version Control System – core files
    make: The GNU version of the ‘make’ utility
    openssl-devel: The OpenSSL development environment
    pkg-config: A utility used to retrieve information about installed libraries
    zlib-devel: The zlib compression/decompression library (development)
  Editor包:vim: Vi IMproved – enhanced vi editor
  Python包:把Default切换成install状态即可
  Web包:
    wget: Utility to retrieve files from the WWW via HTTP and FTP
    curl: Multi-protocol file transfer command-line tool
复制代码

上个截图,以下载zlib-devel为例:

cygwin例子

其上几步走完才算把环境搭建完成,可是现在还没有到安装Node,还需要在Cywgin的ASH模式下执行rebaseall,步骤如下:

a. cmd命令行

b. 进入cygwin安装目录下的bin子目录

c. 运行ash进入shell模式

d. ./rebaseall -v

e. 没有错误就关闭命令行窗口
好了,现在到下载安装Node了,启动Cygwin.exe后输入:

复制代码
  $ wget http://nodejs.org/dist/node-v0.4.12.tar.gz
  $ tar xf node-v0.4.12.tar.gz
  $ cd node-v0.4.12
  $ ./configure
  $ make
  $ make install
复制代码

 

  3.直接下载node.exe文件

nodejs.org下载较慢所以我在网盘上传了一个,下载地址:http://www.everbox.com/f/VhyL6EiGF5Lm3ZSRx85caFDIA5

听说有不太稳定的问题,不过你假如只是想先在windows下了解Node,个人感觉这个方法比你装个Cygwin好很多。

 

注:原本不太想写安装Node这段,可是为了这篇文章的全面性还是写了,没想到一写就是那么长一段了...茶几了

 

“Hello World” - 为什么每次见到这句心情都会小激动,不解...

首先,创建个hello.js的文件,在文件中copy如下代码:

复制代码
  var http = require('http');
  http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
  }).listen(1337, "127.0.0.1");
  console.log('Server running at http://127.0.0.1:1337/');
复制代码

代码逻辑:

a. 全局方法require()是用来导入模块的,一般直接把 require() 方法的返回值赋值给一个变量,在 JavaScript 代码中直接使用此变量即可 。require("http") 就是加载系统预置的 http 模块

b. http.createServer 是模块的方法,目的就是创建并返回一个新的web server对象,并且给服务绑定一个回调,用以处理请求。

c. 通过 http.listen() 方法就可以让该 HTTP 服务器在特定端口监听。

d. console.log就不用多说了,了解firebug的都应该知道,Node实现了这个方法。

    注: 想了解具体细节请查看文档 cnodejs.org/cman/all.html#http.createServer

接着运行Node服务器,执行hello.js代码,成功启动会看见console.log()中的文本。有图有真相:

 

npm的下载和使用

除Node本身提供的API外,现在有不少第三方模块可极大的提高开发效率,npm就是Node的软件包管理器,可以用它安装所需软件包并发布自己为nodejs写的软件包。官网地址:npmjs.org

安装只需要在终端写入一行代码:

  curl http://npmjs.org/install.sh | sh

npm安装node扩展包同样是一行代码:

  npm install <包名>    //例:npm install express

注:如果安装模块的过程中报域名错误的话,请清空缓存 >npm cache clean 或重启计算机即可。

  

理解Node的模块概念

在Node中,不同的功能组件被划分成不同的模块。应用可以根据自己的需要来选择使用合适的模块。每个模块都会暴露一些公共的方法或属性。模块的使用者直接使用这些方法或属性即可,对于内部的实现细节就可以不用了解。除了Node本身提供的API外,开发人员也可以利用这个机制来将应用拆分成多个模块,以提高代码的可复用性。

1.如何使用模块?

在Node中使用模块是非常方便的,在 JavaScript 代码中可以直接使用全局函数 require() 来加载一个模块。

在刚刚”Hello World"的例子中,require("http") 可以加载系统预置的 http 模块;模块名称以 "./" 开始的,如 require("./myModule.js") 用来加载与当前 JavaScript 文件同一目录下的 myModule.js 模块。

2.自己如何开发模块?

刚刚介绍使用require()导入模块的时候,模块名称以 "./" 开始的这种,就是自己开发的模块文件。需要注意的就是JS文件的系统路径。

代码中封装了模块的内部处理逻辑,一个模块一般都会暴露一些公开的方法或属性给其他的人使用。模块的内部代码需要把这些方法或属性给暴露出来。

3.来一套简单的例子。先创建一个模块文件如myModule.js,就一行代码

  console.log('Hi Darren.')

然后创建一个test.js文件,导入这个JS文件,执行node看到结果

现在Node社区中已有不少第三方的模块,希望能有更多人通过学习Node,加入到这个大家庭中,为Node社区来添砖加瓦。先谢谢之,咱们继续。

4.来一个深点的例子。这个例子中将会针对 私有和共有 进行介绍。先创建一个myModule.js,代码如下:

  var name = "Darren";
  this.location = "Beijing";
  this.showLog = function(){
      console.log('Hi Darren.')
  };

代码中出现了三种类型,分别是: 私用属性,共有属性和共有方法,再创建一个test.js,执行Node

结果高亮的地方很清楚的告诉我们,私有方法我们在模块以外是取不到的,所以是undefined。共有属性和共有方法的声明需要在前面加上 this 关键字。

 

Node能做什么和它的优势

Node核心思想:  1.非阻塞;  2.单线程;  3.事件驱动

在目前的web应用中,客户端和服务器端之间有些交互可以认为是基于事件的,那么AJAX就是页面及时响应的关键。每次发送一个请求时(不管请求的数据多么小),都会在网络里走一个来回。服务器必须针对这个请求作出响应,通常是开辟一个新的进程。那么越多用户访问这个页面,所发起的请求个数就会越来越多,就会出现内存溢出、逻辑交错带来的冲突、网络瘫痪、系统崩溃这些问题。

Node的目标是提供一种构建可伸缩的网络应用的方案,在hello world例子中,服务器可以同时处理很多客户端连接。

Node和操作系统有一种约定,如果创建了新的链接,操作系统就将通知Node,然后进入休眠。如果有人创建了新的链接,那么它(Node)执行一个回调,每一个链接只占用了非常小的(内存)堆栈开销。    

举一个简单的异步调用的例子,把test.js和myMydule.js准备好了,^_^。把以下代码拷贝到test.js中并执行:

复制代码
  var fs = require('fs');
  fs.readFile('./myModule.js', function (err, data) {
    if (err) throw err;
    console.log('successfully');
  });
  console.log('async');
复制代码

所谓的异步,大家应该都能想得到运行时会先打先显示"async",再显示"successfully"。

Node是无阻塞的,新请求到达服务器时,不需要为这个请求单独作什么事情。Node仅仅是在那里等待请求的发生,有请求就处理请求。

Node更擅长处理体积小的请求以及基于事件的I/O。

Node不仅仅是做一个Web服务的框架,它可以做更多,比如它可以做Socket服务,可以做比方说基于文件的,然后基于像一些比方说可以有子进程,然后内部的,它是一个很完整的事件机制,包括一些异步非注射的解决方案,而不仅仅局限在网络一层。同时它可能,即使作为一个Web服务来说,它也提供了更多可以深入这个服务内核、核心的一些功能,比方说Node使用的Http Agent,这块就是它可以更深入这个服务内核来去做一些功能。

 

Node事件流概念

因为Node 采用的是事件驱动的模式,其中的很多模块都会产生各种不同的事件,可由模块来添加事件处理方法,所有能够产生事件的对象都是事件模块中的 EventEmitter 类的实例。代码是全世界通用的语言,所以我们还是用代码说话:

复制代码
  var events = require("events"); 
  var emitter = new events.EventEmitter(); 
  emitter.on("myEvent", function(msg) { 
    console.log(msg); 
  }); 
  emitter.emit("myEvent", "Hello World.");
复制代码

简单的分析这段:

1. 使用require()方法添加了events模块并把返回值赋给了一个变量

2. new events.EventEmitter()这句创建了一个事件触发器,也就是所谓的事件模块中的 EventEmitter 类的实例

3. on(event, listener)用来为某个事件 event 添加事件处理方法监听器

4. emit(event, [arg1], [arg2], [...]) 方法用来产生事件。以提供的参数作为监听器函数的参数,顺序执行监听器列表中的每个监听器函数。

 

EventEmitter 类中的方法都与事件的产生和处理相关:

1. addListener(event, listener) 和 on(event, listener) 这两个方法都是将一个监听器添加到指定事件的监听器数组的末尾

2. once(event, listener) 这个方法为事件为添加一次性的监听器。该监听器在事件第一次触发时执行,过后将被移除

3. removeListener(event, listener) 该方法用来将监听器从指定事件的监听器数组中移除出去

4. emit(event, [arg1], [arg2], [...]) 刚刚提到过了。

在Node中,存在各式各样不同的数据流,Stream(流)是一个由不同对象实现的抽象接口。例如请求HTTP服务器的request是一个流,类似于stdout(标准输出);包括文件系统、HTTP 请求和响应、以及 TCP/UDP 连接等。流可以是可读的,可写的,或者既可读又可写。所有流都是EventEmitter的实例,因此可以产生各种不同的事件。

可读流主要会产生以下事件:

  • data   当读取到流中的数据时,此事件被触发
  • end   当流中没有数据可读时,此事件被触发
  • error   当读取数据出现错误时,此事件被触发
  • close   当流被关闭时,,此事件被触发,可是并不是所有流都会触发这个事件。(例如,一个连接进入的HTTP request流就不会触发'close'事件。)

还有一种比较特殊的 fd 事件,当在流中接收到一个文件描述符时触发此事件。只有UNIX流支持这个功能,其他类型的流均不会触发此事件。

相关详细文档:http://cnodejs.org/cman/all.html#events_

 

强大的File System 文件系统模块

Node 中的 fs 模块用来对本地文件系统进行操作。文件的I/O是由标准POSIX函数封装而成。需要使用require('fs')访问这个模块。所有的方法都提供了异步和同步两种方式。

fs 模块中提供的方法可以用来执行基本的文件操作,包括读、写、重命名、创建和删除目录以及获取文件元数据等。每个操作文件的方法都有同步和异步两个版本。

异步操作的版本都会使用一个回调方法作为最后一个参数。当操作完成的时候,该回调方法会被调用。而回调方法的第一个参数总是保留为操作时可能出现的异常。如果操作正确成功,则第一个参数的值是 null 或 undefined 。

同步操作的版本的方法名称则是在对应的异步方法之后加上一个 Sync 作为后缀。比如异步的 rename() 方法的同步版本是 renameSync() 。下面列出来了 fs 模块中的一些常用方法,都只介绍异步操作的版本。

test.js和myModule.js文件准备好了木?把下面这段代码copy到test.js中执行一次

  var fs = require('fs');
  fs.unlink('./myModule.js', function (err) {
    if (err) throw err;
    console.log('successfully deleted myModule.js');
  });

如果没有报error,那么myModule.js就被删除了,就是这么简单

这只是一个简单的例子,感兴趣的话自己去多多尝试,实践出真理。由于篇幅原因就不多举例了。^_^

 

学习Node的总结:

1.对于一个linux的命令和shell知识几乎为零的我来说,这段时间又学到了不少关于linux知识;vim真是一个强大的编辑器,不用鼠标的感觉真的很好;而且有一点对我来说很重要,在linux下编程很cool,尤其是在团队中都是使用windows的,装装更健康^_^。

2.理解了服务端JavaScript的一个成功框架-Node,以及它的一些优势和使用的方式,这篇文章就是最好的总结,当然,这只会是一个开始

3.对于没有进入那么梦想的公司其实是有那么点遗憾,不过生活就应该要这样,有波折有起伏,这正是我需要并且期待的...那么新的生活还是要继续,做自己的舵手,把握好自己的方向,过去的就让它过去吧。

 

一些想对大伙说的话:

1. 在这我得打击一部分人的积极性。假如你对后台技术不够了解或者没接触过服务端语言,不知道I/O这些知识,没有后台处理流程这种概念,那么......Node并不是一门适合入门的服务端技术。为什么这么说:

a.重点就是中文实例少,文章少,想系统的学习会比较麻烦,所以在使用过程中总有一种不成熟的感觉,当然主要还是因为我对它不熟悉所造成的。国内使用Node的公司确实不多,当然国外还是有不少了,从cnodejs.org截了一个图:

b.对没有经验的朋友来说node其实并不好上手,从最简单“Hello world”就可以看出来(各种运行环境和安装细节的了解都得费点功夫),不要以jQuery库为比较,所处理的事物不同,学习的成本也不同 - 所以不太建议作为新手入门的服务端技术,如果想学习一门服务端语言PHP和Python都是不错的选择,因为:书多 例子多 框架多 上手简单 容易理解 搭建方便...

c.以上都是我个人善意的建议,由于水平有限,请大家多多指教,希望嘴下留情。

2. 关于Node的书写规范和具体技巧本人就不献丑了,自己写Node的代码也不多,不过面向对象的编程思想在哪都是好使的。

3. 希望这篇文章能对大家学习Node有用,如果觉得这文章也算用心,请劳驾点右下角的推荐。

 

 推荐几个学习Node的网址:
http://nodejs.org/ 

http://cnodejs.org/   由淘宝人建立的社区,内有Node中文文档

  http://www.oschina.net/p/nodejs/

http://www.ibm.com/developerworks/cn/opensource/os-nodejs/index.html

 注:最终领导决定放弃Node而使用Python,可是这不会影响我对Node的喜爱。我说过,这篇文章只会是一个开始。

 

 

作者:聂微东
出处:http://www.cnblogs.com/Darren_code/

263月/14

Newsletter:我的酷讯这些年

发布在 邵珠庆

在研发单元刚刚签了第五年的合同,我在这里学习,这里工作,这里生活,我也在这里实现了自己的一个五年的计划。

还记得进入酷讯前的一面,二面,三面犹如就在昨天…

或许你是刚进入社会的新人,或许你是闯荡互联网的前辈,来到这儿都在酷讯留下了时光的印记。

人生最重要的几件事:工作,买房,买车,结婚,生子。

说说我这些年做研发在酷讯的票子,房子,妻子,孩子,还有车子吧。

 

票子

当年,能学东西再苦再累钱多少都无所谓

后来,偶尔会计较自己的收入多少

现在,认为愉快而有成就感的工作比多少钱更重要

我在这里工作时有了自己的积蓄,也有了自己可以支配的零花钱,从地下室搬到了平房,从平房搬到了楼房,也从合租换成了整租。生活慢慢的在变化。

房子

我在这里工作时买了房子,从此成为了准房奴,有段时间忙着办理各种手续签字盖章,我们有了房产证。

妻子

我在这里工作时结婚了,新娘是我高中同学,从此也跟我成了北漂一族。我们在这里度了蜜月,计划了一次次快乐的旅行,过上了快乐幸福的小日子。有段时间忙着请假准备结婚,我们有了结婚证。

孩子

我在这里生了儿子,为自己父母早日完成一个长久的心愿,虽然还没有做好当爸爸的准备,但是我也高兴的告诉自己升级当爸爸了,从此一家人开始为小孩忙的团团转,又增添了一份期盼,孩子也领了张出生证。

车子

山不在高有仙则名,水不在深有龙则灵

车子不在多好,有轮能转就行… 呵呵~~

时常在想:

什么在变,什么又没有变?

时间过的可真快,时间都去哪儿了?

你现在要做什么,下一阶段目标是什么,离你当初的理想还有多远?

朋友无论你明天在哪里都要有一颗感恩的心来面对身边的每一位人,

我在酷讯完成了人生最重要的几件事情,满满的感谢,感谢大家让我成为了这里比较幸运的人。

一个个夜晚,一次次突破,研发单元的兄弟们辛苦了,我为有你们这样的好伙伴而自豪。

 

春天来了,兄弟们大家快行动起来,我们一起准备春游吧 ~

川子 《今生缘》http://www.letv.com/ptv/vplay/1630170.html

172月/14

PHP Mailer中文说明

发布在 邵珠庆

A开头:
$AltBody–属性
出自:PHPMailer::$AltBody
文件:class.phpmailer.php
说明:该属性的设置是在邮件正文不支持HTML的备用显示
AddAddress–方法
出自:PHPMailer::AddAddress(),文件:class.phpmailer.php
说明:增加收件人。参数1为收件人邮箱,参数2为收件人称呼。例AddAddress("xiaoxiaoxiaoyu@xiaoxiaoyu.cn","xiaoxiaoyu"),但参数2可选,AddAddress()也是可以的。
函数原型:public function AddAddress($address, $name = ”) {}
AddAttachment–方法
出自:PHPMailer::AddAttachment()
文件:class.phpmailer.php。
说明:增加附件。
参数:路径,名称,编码,类型。其中,路径为必选,其他为可选
函数原型:
AddAttachment($path, $name = ”, $encoding = ‘base64′, $type = ‘application/octet-stream’){}
AddBCC–方法
出自:PHPMailer::AddBCC()
文件:class.phpmailer.php
说明:增加一个密送。抄送和密送的区别请看[SMTP发件中的密送和抄送的区别] 。
参数1为地址,参数2为名称。注意此方法只支持在win32下使用SMTP,不支持mail函数
函数原型:public function AddBCC($address, $name = ”){}
AddCC –方法
出自:PHPMailer::AddCC()
文件:class.phpmailer.php
说明:增加一个抄送。抄送和密送的区别请看[SMTP发件中的密送和抄送的区别] 。
参数1为地址,参数2为名称注意此方法只支持在win32下使用SMTP,不支持mail函数
函数原型:public function AddCC($address, $name = ”) {}
AddCustomHeader–方法
出自:PHPMailer::AddCustomHeader()
文件:class.phpmailer.php
说明:增加一个自定义的E-mail头部。
参数为头部信息
函数原型:public function AddCustomHeader($custom_header){}
AddEmbeddedImage –方法
出自:PHPMailer::AddEmbeddedImage()
文件:class.phpmailer.php
说明:增加一个嵌入式图片
参数:路径,返回句柄[,名称,编码,类型]
函数原型:public function AddEmbeddedImage($path, $cid, $name = ”, $encoding = ‘base64′, $type = ‘application/octet-stream’) {}
提示:AddEmbeddedImage(PICTURE_PATH. "index_01.jpg ", "img_01 ", "index_01.jpg ");
在html中引用<img src= "cid:img_01 ">
AddReplyTo–方法
出自:PHPMailer:: AddReplyTo()
文件:class.phpmailer.php
说明:增加回复标签,如"Reply-to"
参数1地址,参数2名称
函数原型:public function AddReplyTo($address, $name = ”) {}
AddStringAttachment-方法
出自:PHPMailer:: AddStringAttachment()
文件:class.phpmailer.php
说明:增加一个字符串或二进制附件(Adds a string or binary attachment (non-filesystem) to the list.?)
参数:字符串,文件名[,编码,类型]
函数原型:public function AddStringAttachment($string, $filename, $encoding = ‘base64′, $type = ‘application/octet-stream’) {}
Authenticate–方法
出自:SMTP::Authenticate()
文件:class.smtp.php
说明:开始SMTP认证,必须在Hello()之后调用,如果认证成功,返回true,
参数1用户名,参数2密码
函数原型:public function Authenticate($username, $password) {}
B开头
$Body–属性
出自:PHPMailer::$Body
文件: class.phpmailer.php
说明:邮件内容,HTML或Text格式
C开头
$CharSet–属性
出自:PHPMailer::$CharSet
文件:class.phpmailer.php
说明:邮件编码,默认为iso-8859-1
$ConfirmReadingTo–属性
出自:PHPMailer::$ConfirmReadingTo 文件class.phpmailer.php
说明:回执?
$ContentType–属性
出自:PHPMailer::$ContentType
文件: class.phpmailer.php
说明:文档的类型,默认为"text/plain"
$CRLF–属性
出自:PHPMailer::$ContentType
文件:class.phpmailer.php
说明:SMTP回复结束的分隔符(SMTP reply line ending?)
class.phpmailer.php–对象
出自:class.phpmailer.php
文件: class.phpmailer.php
说明:phpmailer对象
class.smtp.php–对象
出自:class.smtp.php 文件: class.smtp.php
说明:SMTP功能的对象
ClearAddresses–方法
出自:PHPMailer::ClearAddresses()
文件: class.phpmailer.php
说明:清除收件人,为下一次发件做准备。返回类型是void
ClearAllRecipients–方法
出自:PHPMailer::ClearAllRecipients()
文件: class.phpmailer.php
说明:清除所有收件人,包括CC(抄送)和BCC(密送)
ClearAttachments–方法
出自:PHPMailer::ClearAttachments()
文件: class.phpmailer.php
说明:清楚附件
ClearBCCs–方法
出自:PHPMailer::ClearBCCs() 文件 class.phpmailer.php
说明:清楚BCC (密送)
ClearCustomHeaders–方法
出自:PHPMailer::ClearCustomHeaders()
文件: class.phpmailer.php
说明:清楚自定义头部
ClearReplyTos–方法
出自:PHPMailer::ClearReplyTos()
文件: class.phpmailer.php
说明:清楚回复人
Close–方法
出自:SMTP::Close()
文件: class.smtp.php
说明:关闭一个SMTP连接
Connect–方法
出自:SMTP::Connect()
文件: class.smtp.php
说明:建立一个SMTP连接[/color]Mailer.html
$ContentType–属性
出自:PHPMailer::$ContentType
文件: class.phpmailer.php
说明:文档的类型,默认为"text/plain"
D开头
$do_debug–属性
出自:SMTP::$do_debug
文件:class.smtp.php
说明:SMTP调试输出
Data-方法
出自:SMTP::Data()
文件:class.smtp.php
说明:向服务器发送一个数据命令和消息信息(sendsthemsg_datatotheserver)
E开头
$Encoding–属性
出自:PHPMailer::$Encoding
文件:class.phpmailer.php
说明:设置邮件的编码方式,可选:"8bit","7bit","binary","base64",和"quoted-printable".
$ErrorInfo–属性
出自:PHPMailer::$ErrorInfo
文件:class.phpmailer.php
说明:返回邮件SMTP中的最后一个错误信息
Expand–方法
出自:SMTP::Expand()
文件:class.smtp.php
说明:返回邮件列表中所有用户。成功则返回数组,否则返回false(Expandtakesthenameandaskstheservertolistallthepeoplewhoaremembersofthe_list_.Expandwillreturnbackandarrayoftheresultorfalseifanerroroccurs.)
F开头:
$From–属性
出自:PHPMailer::$From文件class.phpmailer.php
说明:发件人E-mail地址
$FromName–属性
出自:PHPMailer::$FromName
文件:class.phpmailer.php
说明:发件人称呼
H开头:
$Helo–属性
出自:PHPMailer::$Helo
文件:class.phpmailer.php
说明:设置SMTPHelo,默认是$Hostname(SetstheSMTPHELOofthemessage(Defaultis$Hostname).)
$Host–属性
出自:PHPMailer::$Host
文件:class.phpmailer.php
说明:设置SMTP服务器,格式为:主机名[端口号],如smtp1.example.com:25和smtp2.example.com都是合法的
$Hostname–属性
出自:PHPMailer::$Hostname
文件:class.phpmailer.php
说明:设置在Message-Id和andReceivedheaders中的hostname并同时被$Helo使用。如果为空,默认为SERVER_NAME或’localhost.localdomain"
Hello–方法
出自:SMTP::Hello()
文件:class.smtp.php
说明:向SMTP服务器发送HELO命令
Help–方法
出自:SMTP::Help()
文件:class.smtp.php
说明:如果有关键词,得到关键词的帮助信息
I开头:
IsError–方法
出自:PHPMailer::IsError()
文件:class.phpmailer.php
说明:返回是否有错误发生
IsHTML–方法
出自:PHPMailer::IsHTML()
文件:class.phpmailer.php
说明:设置信件是否是HTML格式
IsMail–方法
出自:PHPMailer::IsMail()
文件:class.phpmailer.php
说明:设置是否使用php的mail函数发件
IsQmail–方法
出自:PHPMailer::IsQmail()
文件:class.phpmailer.php
说明:设置是否使用qmailMTA来发件
IsSendmail–方法
出自:PHPMailer::IsSendmail()
文件:class.phpmailer.php
说明:是否使用$Sendmail程序来发件
IsSMTP–方法
出自:PHPMailer::IsSMTP()
文件:class.phpmailer.php
说明:是否使用SMTP来发件
M开头:
$Mailer–属性
出自:PHPMailer::$Mailer
文件:class.phpmailer.php
说明:发件方式,("mail","sendmail",or"smtp").中的一个
Mail–方法
出自:SMTP::Mail()
文件:class.smtp.php
说明:从$from中一个邮件地址开始处理,返回true或false。如果是true,则开始发件
N开头:
Noop–方法
出自:SMTP::Noop()
文件:class.smtp.php
说明:向SMTP服务器发送一个NOOP命令
P开头:
$Password–属性
出自:PHPMailer::$Password
文件:class.phpmailer.php
说明:设置SMTP的密码
$PluginDir–属性
出自:PHPMailer::$PluginDir
文件:class.phpmailer.php
说明:设置phpmailer的插件目录,仅在smtpclass不在phpmailer目录下有效
$Port–属性
出自:PHPMailer::$Port
文件:class.phpmailer.php
说明:设置SMTP的端口号
$Priority–属性
出自:PHPMailer::$Priority
文件:class.phpmailer.php
说明:设置邮件投递优先等级。1=紧急,3=普通,5=不急
PHPMailer–对象
出自:PHPMailer
文件:class.phpmailer.php
说明:PHPMailer-PHPemailtransportclass
Q开头
Quit–方法
出自:SMTP::Quit()
文件:class.smtp.php
说明:向服务器发送Quit命令,如果没有错误发生。那么关闭sock,不然$close_on_error为true
R开头
Recipient–方法
出自:SMTP::Recipient()
文件:class.smtp.php
说明:使用To向SMTP发送RCPT命令,参数为:$to
Reset–方法
出自:SMTP::Reset()
文件:class.smtp.php
说明:发送RSET命令从而取消处理中传输。成功则返回true,否则为false
S开头:
$Sender–属性
出自:PHPMailer::$Sender
文件:class.phpmailer.php
说明:SetstheSenderemail(Return-Path)ofthemessage.Ifnotempty,willbesentvia-ftosendmailoras’MAILFROM’insmtpmode.
$Sendmail–属性
出自:PHPMailer::$Sendmail
文件:class.phpmailer.php
说明:设置发件程序的目录
$SMTPAuth–属性
出自:PHPMailer::$SMTPAuth
文件:class.phpmailer.php
说明:设置SMTP是否需要认证,使用Username和Password变量
$SMTPDebug–属性
出自:PHPMailer::$SMTPDebug
文件:class.phpmailer.php
说明:设置SMTP是否调试输出?
$SMTPKeepAlive–属性
出自:PHPMailer::$SMTPKeepAlive
文件:class.phpmailer.php
说明:在每次发件后不关闭连接。如果为true,则,必须使用SmtpClose()来关闭连接
$SMTP_PORT–属性
出自:SMTP::$SMTP_PORT
文件:class.smtp.php
说明:设置SMTP端口
$Subject–属性
出自:PHPMailer::$Subject
文件:class.phpmailer.php
说明:设置信件的主题
Send–方法
出自:SMTP::Send()
文件:class.smtp.php
说明:从指定的邮件地址开始一个邮件传输
Send–方法
出自:PHPMailer::Send()
文件:class.phpmailer.php
说明:创建邮件并制定发件程序。如果发件不成功,则返回false,请使用ErrorInfo来查看错误信息
SendAndMail–方法
出自:SMTP::SendAndMail()
文件:class.smtp.php
说明:从指定的邮件地址开始一个邮件传输
SendOrMail–方法
出自:SMTP::SendOrMail()
文件:class.smtp.php
说明:从指定的邮件地址开始一个邮件传输
SetLanguage–方法
出自:PHPMailer::SetLanguage()
文件:class.phpmailer.php
说明:设置phpmailer错误信息的语言类型,如果无法加载语言文件,则返回false,默认为english
SMTP–方法
出自:SMTP::SMTP()
文件:class.smtp.php
说明:初始化一个对象以便数据处于一个已知的状态
SMTP–对象
出自:SMTP
文件:class.smtp.php
说明:SMTP对象
SmtpClose–方法
出自:PHPMailer::SmtpClose()
文件:class.phpmailer.php
说明:如果有活动的SMTP则关闭它。
T开头
$Timeout–属性
出自:PHPMailer::$Timeout
文件:class.phpmailer.php
说明:设置SMTP服务器的超时(单位:秒)。注意:在win32下,该属性无效
Turn–方法
出自:SMTP::Turn()
文件:class.smtp.php
说明:这是一个可选的SMTP参数,目前phpmailer并不支持他,可能未来支持
U开头
$Username–属性
出自:PHPMailer::$Username
文件:class.phpmailer.php
说明:设置SMTP用户名
V开头
$Version–属性
出自:PHPMailer::$Version
文件:class.phpmailer.php
说明:返回Phpmailer的版本
Verify–方法
出自:SMTP::Verify()
文件:class.smtp.php
说明:通过服务器检查用户名是否经过验证
W开头:
$WordWrap–属性
出自:PHPMailer::$WordWrap
文件:class.phpmailer.php
说明:设置每行最大字符数,超过改数后自动换行

261月/14

解析12306订票流程

发布在 邵珠庆

前言

每当春节临近时,因为网络的方便,访问12306购买火车票回家过年成了很多人的首选。但由于12306的种种不给力,给那些在官网刷票的人带来了很多的不便。从2011年未12306上线起,连续几年回家我都是靠网上购票,今年也不例外;我记得11年时我使用的是官网直接购票,到了12年则使用了新出的木鱼抢票助手,而今年我用了360与猎豹两款主流抢票浏览器,还发动了几位朋友一起帮忙,才买到了一张差强人意的票,现在感觉买票是越来越困难。而就在前几天媒体还曝出了商业黄牛使用假身份证生成器10分钟钞杀1000多张票的新闻,让人吃惊不已。于是就萌生了自己写一个抢票应用的念头,最开始设想的就是本地桌面应用,而非浏览器插件,个人觉得本地应用始终比浏览器插件敏捷,因为本地应用可以精确稳定的请求有用的链接,过滤图片和CSS等前台无用请求,可以节省网络消耗时间。于是我花了一段时间将12306的整体订票流程解析了一遍,其间还经历了一次12306的改版,幸好主体流程改动不是很大,终算有点收获。

粗略的将12306的流程划分为:登录、查询和订票三大模块,下面就这三大模块逐一说明:

1.登录

登录12306请求的URL是:https://kyfw.12306.cn/otn/login/init,可以使用Firbug抓取一下它的请求头,得到的response响应内容如下:

从中可以看到Set-Cookie信息,也就是说,如果想要登录就必须先请求https://kyfw.12306.cn/otn/login/init这个链接,以获取服务端设置的Cookie信息,而有了该Cookie信息就可以将其保存,以备下步的请求使用。

再来分析一下它的页面HTML与其对应处理登录的Javascript脚本文件(https://kyfw.12306.cn/otn/resources/merged/login_js.js),得到如下流程:

1.用户点击登录提交时先要验证请求一下:https://kyfw.12306.cn/otn/login/loginAysnSuggest链接,用于判断当前网络环境是否可以登录,得到JSON数据(通过Firebug抓包):

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. {  
  2.     "validateMessagesShowId":"_validatorMessage"  
  3.     "status":true  
  4.     "httpstatus":200,  
  5.     "data":{  
  6.         "loginCheck":"Y"  
  7.     },  
  8.     "messages":[],  
  9.     "validateMessages":{}  
  10. }  

 

这里通过判断data.loginCheck是否为字符串Y判断用户是否可以登录,如不能登录,则显示messages中的内容.

2.当用户登录信息检查成功时,则POST请求https://kyfw.12306.cn/otn/login/userLogin,得到登录请求后的HTML,对应请求的参数为:

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. "loginUserDTO.user_name":  // 用户名  
  2. "userDTO.password":        // 密码  
  3. "randCode":                // 验证码  

注:登录图片验证码的获取地址可以从登录页面的HTML中得到为:https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=login&rand=sjrand

 

3.通过解析获取的HTML可以根据id为login-txt的<span>标签来判断是否登录成功,登录成功的对应的HTML内容为:

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. <span class="login-txt" style="color: #666666">  
  2.     <span>意见反馈:  
  3.          <a class="cursor colorA" href="mailto:12306yjfk@rails.com.cn">  
  4.              12306yjfk@rails.com.cn  
  5.          </a>您好,  
  6.     </span>  
  7.     <a id="login_user" href="/otn/index/initMy12306"   
  8.        class="colorA" style="margin-left:-0.5px;"><span>登录成功用户名</span></a>|  
  9.     <a id="regist_out" href="/otn/login/loginOut">退出</a>  
  10. </span>  

失败的内容为:

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. <span class="login-txt" style="color: #666666">  
  2.     <span>意见反馈:  
  3.          <a class="cursor colorA" href="mailto:12306yjfk@rails.com.cn">  
  4.                12306yjfk@rails.com.cn  
  5.           </a>您好,请  
  6.     </span>  
  7.     <a id="login_user" href="/otn/login/init"  
  8.        class="colorA" style="margin-left:-0.5px;">登录</a> |  
  9.     <a id="regist_out" href="/otn/regist/init">注册</a>  
  10. </span>  

 

如上登录成功即可进行下一步的操作:对于车次的查询。

2,车次查询

新版车次预订的查询(这里单指单程票查询)大大减化了请求参数,只接收出发地编码,到达地编码,出发日期与旅客编码四个参数,所有的过滤操作都扔给了前台Javascript,这也说明了车次查询流程的简单,只需请求一个链接地址:

查询车次是通过GET:https://kyfw.12306.cn/otn/leftTicket/query链接获取的,对应的查询参数为(GET请求注意查询参数的顺序):

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. leftTicketDTO.train_date=2014-01-23  // 出发日期  
  2. leftTicketDTO.from_station=BJP       // 出发站编码  
  3. leftTicketDTO.to_station=SHH         // 到达站编码  
  4. purpose_codes=ADULT                  // 旅客编码:成人为ADULT,学生为:0X00  

 

对应的获取的JSON信息格式如下:

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. {"validateMessagesShowId": "_validatorMessage",  
  2.     "status": true,  
  3.     "httpstatus": 200,  
  4.     "data": [  
  5.         {"queryLeftNewDTO": {  
  6.                 "train_no": "240000G14104",          // 列车编号  
  7.                 "station_train_code": "G141",        // 车次  
  8.                 "start_station_telecode": "VNP",     // 始发站编码  
  9.                 "start_station_name": "北京南",      // 始发站名  
  10.                 "end_station_telecode": "AOH",       // 终到站编码  
  11.                 "end_station_name": "上海虹桥",      // 终到站名  
  12.                 "from_station_telecode": "VNP",      // 查询输入经过站编码  
  13.                 "from_station_name": "北京南",       // 查询输入经过站名  
  14.                 "to_station_telecode": "AOH",        // 查询输入到站编码  
  15.                 "to_station_name": "上海虹桥",       // 查询输入到站名  
  16.                 "start_time": "14:16",               // 出发时间  
  17.                 "arrive_time": "19:47",              // 到站时间  
  18.                 "day_difference": "0",               // 花费天数  
  19.                 "train_class_name": "",  
  20.                 "lishi": "05:31",                    // 历时  
  21.                 "canWebBuy": "Y",                    // 是否可以预定  
  22.                 "lishiValue": "331",  
  23.                 "yp_info": "O055300094M0933000999174800017",  
  24.                 "control_train_day": "20301231",  
  25.                 "start_train_date": "20140123",  
  26.                 "seat_feature": "O3M393",  
  27.                 "yp_ex": "O0M090",  
  28.                 "train_seat_feature": "3",  
  29.                 "seat_types": "OM9",  
  30.                 "location_code": "P3",  
  31.                 "from_station_no": "01",  
  32.                 "to_station_no": "09",  
  33.                 "control_day": 19,  
  34.                 "sale_time": "1400",                // 出票时间点hhmm  
  35.                 "is_support_card": "1",  
  36.                 "gg_num": "--",  
  37.                 "gr_num": "--",          // 高级软卧座剩余数  
  38.                 "qt_num": "--",          // 其他座剩余数  
  39.                 "rw_num": "--",          // 软卧座剩余数  
  40.                 "rz_num": "--",          // 软座座剩余数  
  41.                 "tz_num": "--",          // 特等座剩余数  
  42.                 "wz_num": "--",          // 无座座剩余数  
  43.                 "yb_num": "--",  
  44.                 "yw_num": "--",          // 硬卧座剩余数  
  45.                 "yz_num": "--",          // 硬座座剩余数  
  46.                 "ze_num": "有",          // 二等座剩余数  
  47.                 "zy_num": "有",          // 一等座剩余数  
  48.                 "swz_num": "17"          // 商务座剩余数  
  49.             },  
  50.             "secretStr": "预定请求令牌字符串",  
  51.             "buttonTextInfo": "预订或开售日期"  
  52.         },  
  53.         ..........                       // 省略其它车次,信息同上  
  54.     ],  
  55.     "messages": [],  
  56.     "validateMessages": {}  
  57. }  

注意这里的canWebBuy属性,用于标记该趟列车是否可以预订,还有对应列车的secretStr字符,它用于请求预订确认页面的令牌,

 

对于其中一直提到的列车站点编码,可以通过请求https://kyfw.12306.cn/otn/resources/js/framework/station_name.js链接,通过得到JS脚本中的station_names变量获取,对应的站点以@字符分隔,而每一个站点信息如下,这里以北京北为例:

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. bjb|北京北|VAP|beijingbei|bjb|0  

用于提取其中有用的信息是:北京北与VAP,使用查询北京北的编码就是VAP,其它站点的解析同理。

 

如上即可以查询指定出发地与到达地的车次预定信息,紧接着进行预订流程的分析。

3,车票预订

在12306的解析中,就属车票预订的解析最为费神,也是最核心的一个流程,我现在只掌握了成人单程票的预订流程,其他的比如返程,学生票等都还没有分析出来,如下讲解的就是关于成人单程票的预定基本流程:

3.1,获取预定确认页面

车票预定首先要请求获取车票的预订确认页面,如下流程图所示:


分析:该流程是在用户单击车次的“预订”按钮时触发的,如图所示,获取预订确认页面,先要判断用户是否登录,POST请求的地址是:https://kyfw.12306.cn/otn/login/checkUser,这个请求无参数,然后通过判断得到的JSON信息中的data.flag属性是否为true判断用户是否已登录,接着再根据对应列车查询时所获得的secretStr字符与用户输入的查询信息POST请求https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest,判断用户是否可以访问预定确认画面,通过得到JSON信息的status属性判断是否允许访问,如果为true说明可以访问,最后依据旅行类型为单程(dc)POST跳转获取单程车票的预订确认画面:https://kyfw.12306.cn/otn/confirmPassenger/initDc。如果登录用户不进行上述判断,直接POST请求https://kyfw.12306.cn/otn/confirmPassenger/initDc提示非法请求,只有成功获取预订确认页面后才能进行下一步的操作。

注:该流程可以查看对应JS脚本:https://kyfw.12306.cn/otn/resources/merged/queryLeftTicket_end_js.js,function L(b4, bX)方法获知。

从请求订单的确认画面还可以得到获取当前登录用户常用联系人的链接地址为:https://kyfw.12306.cn/otn/confirmPassenger/getPassengerDTOs

3.2,预订提交

在车票的预定提交之前必先要获取预定确认画面的原因是因为预订确认HTML中声明的orderRequestDTOticketInfoForPassengerForm两个Javascript变量,含有预订提交的时的必需参数信息,下面就预订提交给出粗略的流程分析图,如下:

注:图片可以右击后查看大图,该流程对应的JS文件地址为:https://kyfw.12306.cn/otn/resources/merged/passengerInfo_js.js

分析:如上图显示了车票预定提交的大体流程,可以依据请求的链接数将其分为四大块:

1.检查用户选择的乘客信息的合法性,POST请求:https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo,通过分析得到的JSON中的data.submitStatus属性是否为true判断,同时这一步的JSON信息中还会包含有一个data.isCheckOrderInfo属性将会作为下一步判断当前用户是否可排队请求的参数。对应请求参数有如下5个:

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. cancel_flag: "2",                                         // 固定值  
  2. bed_level_order_num: "000000000000000000000000000000",    // 固定值  
  3. passengerTicketStr: getpassengerTickets(),                // 旅客信息字符串  
  4. oldPassengerStr: getOldPassengers(),                      // 旅客信息字符串  
  5. tour_flag: ticketInfoForPassengerForm.tour_flag,  // 从ticketInfoForPassengerForm中获取  
  6. randCode: $("#randCode").val()                            // 前台输入验证码  

这五个参数中,有两个参数需要注意passengerTicketStroldPassengersStr

passengerTicketStr是以下划线"_"分隔当每一个乘客信息组成的字符串,对应每个乘客信息字符串组成如下:

[plain] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. 座位编号,0,票类型,乘客名,证件类型,证件号,手机号码,保存常用联系人(Y或N)  

同样oldPassengersStr也是以下划线"_"分隔每个乘客信息组成的字符串,对应每个乘客信息字符串组成如下:

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. 乘客名,证件类型,证件号,乘客类型  

在上面的信息中座位编号指的是,一等座、二等座等的编码,从ticketInfoForPassengerForm.limitBuySeatTicketDTO.seat_type_codes属性中选择获取。

 

票类型指的是,成人票,学生票等的编码,可以从ticketInfoForPassengerForm.limitBuySeatTicketDTO.ticket_type_codes属性中选择获取。

证件类型指的是二代身份证,学生证,签证等的编码,可以从ticketInfoForPassengerForm.cardTypes属性中选择获取。

最后oldPassengersStr中的乘客类型主要有如下信息:

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. adult: "1",  
  2. child: "2",  
  3. student: "3",  
  4. disability: "4"  

取上面对应的数字编码。

 

注意:在组合oldPassengersStr乘客信息字符串时,未尾会多一个下划线,提交请求是一定要补上,从上也可以看出所有的一些参数都是通过ticketInfoForPassengerForm变量获取的,这也是为什么要事先获取预定确认画面HTML的原因。

 

2.检查乘合信息合法后,接下来就会结合返回的data.isCheckOrderInfo属性,POST请求:https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue,判断当前乘客是否可以排队,对应的参数如下:

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. train_date: new Date(orderRequestDTO.train_date.time).toString(),  // 列车日期  
  2. train_no: orderRequestDTO.train_no,                                // 列车号  
  3. stationTrainCode: orderRequestDTO.station_train_code,  
  4. seatType: limit_tickets[0].seat_type,                            // 座位类型  
  5. fromStationTelecode: orderRequestDTO.from_station_telecode,      // 发站编号  
  6. toStationTelecode: orderRequestDTO.to_station_telecode,          // 到站编号  
  7. leftTicket: ticketInfoForPassengerForm.queryLeftTicketRequestDTO.ypInfoDetail,  
  8. purpose_codes: n,         // 默认取ADULT,表成人,学生表示为:0X00  
  9. isCheckOrderInfo: m       // data.isCheckOrderInfo  

 

这里的参数要注意传递列车日期的方式,及座位类型编码,这里选择的是第一个乘客的座位类型编码。最后还要确保orderRequestDTO变量的准确性。

通过返回的JSON信息的data属性值来判断是否允许当前用户进行排队下单,并提示当前的剩余票数。

其中的data属性会包含有两个重要的参数,countTticket,(ticket的格式为:1*****30314*****00001*****00003*****0000的形式):

countT表示的是排队人数,而ticket指的是当前列车对应座位的剩余票数,可以通过https://kyfw.12306.cn/otn/resources/merged/passengerInfo_js.js文件中的function L(l, m) 函数解析获取:

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. function L(l, m) {  
  2.             rt = "";  
  3.             seat_1 = -1;  
  4.             seat_2 = -1;  
  5.             i = 0;  
  6.             while (i < l.length) {  
  7.                 s = l.substr(i, 10);  
  8.                 c_seat = s.substr(0, 1);  
  9.                 if (c_seat == m) {  
  10.                     count = s.substr(6, 4);  
  11.                     while (count.length > 1 && count.substr(0, 1) == "0") {  
  12.                         count = count.substr(1, count.length)  
  13.                     }  
  14.                     count = parseInt(count);  
  15.                     if (count < 3000) {  
  16.                         seat_1 = count  
  17.                     } else {  
  18.                         seat_2 = (count - 3000)  
  19.                     }  
  20.                 }  
  21.                 i = i + 10  
  22.             }  
  23.             if (seat_1 > -1) {  
  24.                 rt += seat_1  
  25.             }  
  26.             if (seat_2 > -1) {  
  27.                 rt += "," + seat_2  
  28.             }  
  29.             return rt  
  30.         }  

函数中的l指的就是ticket,而m指的是第一位乘客所选择的座位编号。

 

如果计算的余票信息还有剩余,则会提示用户点击确认按进行订单的提交请求,如果没有充实的票,则会提示用户选择其它车次,处理该请求的方法详情见https://kyfw.12306.cn/otn/resources/merged/passengerInfo_js.js文件中的function M(n, m) 方法。

3.当提示的有充足的余票,且用户点击了确定按钮,则接下来会POST请求:https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue,进行单程票(dc)类型的排队下单操作,通过判断返回的JSON信息data.submitStatus属性判断订单是否以成功提交至服务器,对应的请求参数为:

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. passengerTicketStr: getpassengerTickets(),  
  2. oldPassengerStr: getOldPassengers(),  
  3. randCode: $("#randCode").val(),  
  4. purpose_codes: ticketInfoForPassengerForm.purpose_codes,  
  5. key_check_isChange: ticketInfoForPassengerForm.key_check_isChange,  
  6. leftTicketStr: ticketInfoForPassengerForm.leftTicketStr,  
  7. train_location: ticketInfoForPassengerForm.train_location  

这里的参数没有新意,主要是注意获取ticketInfoForPassengerForm变量的准确性。

 

 

4.订单提交至服务器后不一定说明订单已经成功了,还需要GET请求:https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime,判断系统是否已根据提交的订单信息为相应的乘客占位成功,并提示预估出票等待时间,这一步只有一个参数,就是旅行类型,由于我们主要考虑的是单程票,故提交时POST dc就行了,如下:

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片

 
  1. tourFlag: "dc"  

这一步占位的操作在12306的官网中是将其封装在了一个名为OrderQueueWaitTime的对象中,可以解压https://kyfw.12306.cn/otn/resources/merged/passengerInfo_js.js文件获知,对应的如果判断系统占位成功,将会从返的JSON信息中获取data.orderId属性,即为下单成功时的订单号。

 

如上4次请求就可以准确的模拟出12306官网订单提交的整套流程,其中其实还忽略了验证码的获取与判断操作,而这一步仅仅是判断验证码的合法性,与主体流程无关。对应订单确定页面的验证码获取链接为:https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=passenger&rand=randp,从中与登录页面的验证码链接对比,可知新版12306的验证码管理统一为了一个方法,登录与订单确认的验证码链接只是传递的module和rand参数不一样而已。

4,结束语:

根据上面的操作,基本可以全程模拟官网的订单操作,编写出一个属于自己的抢票助手。在写这篇文章时,我一直在想这样做是否有意义,因为12306随时都有可能变更,由于23:00点~07:00点的维护时间段的设置,也许今天写出来的东西明天马上就会失效过期。但仔细考虑后还是打算将他分享出来,就当是一种学习吧。同时在这里公布GitHub上使用Python3编写的一个订票项目源码:https://github.com/lzqwebsoft/trainticket,对应window下独立运行exe文件下载地址为:https://code.google.com/p/lzqwebsoft-projects/source/browse/#svn%2Ftrunk,软件运行效果如下: