修改一下文章,标题也修改一下,之前叫《决定软件不是技术》,其实主要是写决定软件并不是技术本身,而是你对软件本身的定义或者说是对软件解决问题的定义,而技术只是实现的一种手段,感觉自己表达能力太烂,还是直接吐槽一下12306好了。

在深圳工作,每年过年都免不了要抢火车票,最开始思考这个抢火车票问题是15年底。一年内离职两次,在家呆了有四个月,过年回家的意愿并不太高,下了几个抢票软件用手机慢慢在抢,突然无聊想到自己为什么要抢票?——因为回家需要火车票;那为什么要抢?——因为火车运力有限,总有人拿不到,只能靠这个来选人。

然后突然感叹了一把:“火车票作为特定时间内的稀缺资源,就应该摇号。每天一个身份提交一次就够了,根据其最近订票、退票、联程需要、要求时间、随机因子等信息加权处理。要不就所有人都订阅,然后内部随机排序,有票时挑前面的人进行推送,反正看脸,也省得浪费时间。硬要所有人都开着软件狂刷你的服务器,打破各种没有商业意义记录,体现你们的技术含量才爽。”

当时刚吐槽完不久,12306开始走商业化广告,现在好像撤了,反正我很少自己登陆上去抢票,基本也是手机软件。

12306开推出时,便遇到各种问题,网上也流行过一波为其解决刷票的技术讨论,但从那个时候开始,我不再认为12306是一个海量并发请求问题,而认为是一个海量筛选信息筛选问题,如何选出真正需要火车票的人,而只所以成了海量并发请求问题,不过是系统设计者设计成了这样。

抢火车票根因是运力问题,但这个根因很难解决,涉及方面也非常多,所以不讨论根因,只讨论问题。对于竞价市场调节机制都忽略,因为这是一种公共社会资源,还不敢明目张胆。

将12306视为一个筛选系统,那抢不过只是一种筛选手段,以速度来决定,看起来也非常公平,也符合逻辑,但引发的问题也很糟糕:火车票可能随时放出,没有票的人就会一直查询,因为快慢决定结果,所以会用各种插件来加快,从而带来恶性循环。这个行为很正常,但却没有意义!抢火车票是一个只在乎结果不在乎过程的问题,不会因为你手工抢几万次而产生价值。

采用摇号机制便不会再有上述问题,但会引入其他问题。信息被盗用是目前最常见,虽然现在可能也存在盗用真身份证信息锁其他区间票,但摇号会这问题影响扩大,所以身份认证和信用机制对行为加以惩戒;无手机号者可让代售点进行预约;算法中的加权因子对外公布保证公平性,采用加权因子来规范订票过程中的屯票行为。

做为一个筛选系统,筛选出正确的人才是系统价值所在,如果能降消耗便更好。首先是正确的人,对于花精力抢票的人,每一个都需要火车票,给谁都是正确的;然后便是消耗,抢票最大消耗在服务器和人们花在抢上面的精力,摇号最大问题在核心算法公平性。

抢行为的无意义性就不讨论了,说说摇号算法公平性。摇号决定优先级的因子很难做到绝对公平,如买票后退票,很可能是客观原因造成,却影响后面再抢优先级,对当事人肯定不公平,但如速度决定一样,你也没有绝对把握能抢第二次,甚至系统可以剔除这个因子,直接所有人随机,之所以引入因子是引导行为,有时软件并不只是实现功能,她本身就可以体现设计者意志与初衷。可预见的是算法的复杂度会非常高,场景也会非常多,可能从某种意义上倒和现在的人工智能或大数据比较贴切。

当下黄牛盛行,各种云抢票软件猖狂,但从某种意义救了12306。当年12306刚出来,被各种刷票软件刷崩,一直在提升后台技术应对,拉高门槛。现在一些抢票软件并未大面积流行,而且高性抢票软件并未流入到个人,全民刷票时代结束,转而进入黄牛时代,让量级得到收敛。云抢票盛行,让通道也得到收敛,他们并不敢太过分,云抢票可以控制大量账号在1s内用不同账号到毫秒级别的查询,有票时根据加价来筛选下单账号,这也就是他们的资源,至于查询次数随便写也一样。

上面的方法并没有什么不对,每个号查了去下单,和一个号查了所有号去下单一样,只是在之前的速度筛选,由于黄牛的存在已经变成了金钱筛选,而筛选的人是云平台,而参与筛选的人是用云平台的人,双方都是你情我愿,和12306无关。12306甚至可以站在道德角度斥责黄牛(云平台也是黄牛),但这和没有买卖就没有伤害是一个道理,更应该斥责找黄牛的人吧。

其实这些年,铁路局也做了不少事,首先火车票收益是随着运力在变的,尤其是春节这种时候从一开始便注定了多少收益(票全部售完是必然事件)。但为了更好的购票从最传统排队买票到电话订票,再到互联网订票,一直在方便用户,但资源的有限让这种方便成了更好的死循环,没有票所以一直要打电话,而且一堆人帮着打,没有票所以一直要抢票,而且是一堆工具帮着抢。看似减少的社会消耗却在另一些地方增长,并扩大至整个预售期。

当年想着摇号机制是先交钱的,这样在整个售票期便会形成一个很大的资金池,想着还能赚个利息钱,然后明白了当年60天售票期的意义。

说说12306,呆在深圳就只能一直抢票相关推荐

  1. 12306候补购票功能怎么用?抢票软件依旧能抢到票

    实际上,铁道部开发的铁路售票及订单系统的使用及推广,已经缓解了不少购票者的压力.而为了迎合互联网的快速发展,铁路客票系统多次升级.不过,目前存在的购票人数上涨.恶意抢票及占票及屯票的现象仍然很严重,很 ...

  2. python自动抢票的原理_Python突破12306最后一道防线,实现自动抢票(附源码)

    一年一度的春运又来了,今年我自己写了个抢票脚本.使用Python+Splinter自动刷新抢票,可以成功抢到.(依赖自己的网络环境太厉害,还有机器的好坏) Splinter是一个使用Python开发的 ...

  3. python抢票12306源码_Python突破12306最后一道防线,实现自动抢票(附源码)

    一年一度的春运又来了,今年我自己写了个抢票脚本.使用Python+Splinter自动刷新抢票,可以成功抢到.(依赖自己的网络环境太厉害,还有机器的好坏) Splinter是一个使用Python开发的 ...

  4. Python突破12306最后一道防线,实现自动抢票(附源码)

    一年一度的春运又来了,今年我自己写了个抢票脚本.使用Python+Splinter自动刷新抢票,可以成功抢到.(依赖自己的网络环境太厉害,还有机器的好坏) Splinter是一个使用Python开发的 ...

  5. c# 模拟 网页实现12306登陆、自动刷票、自动抢票完全篇(转)

    这一篇文章,我将从头到尾教大家使用c#模拟网页面登陆12306网站,自动刷票,选择订票人,到最后一步提交订单.研究过HTTP协议的童鞋们都 知道,我们在访问网站时,是有两种方式的,POST和GET方式 ...

  6. c#模拟网页实现12306登陆、自动刷票、自动抢票完全篇

    这一篇文章,我将从头到尾教大家使用c#模拟网页面登陆12306网站,自动刷票,选择订票人,到最后一步提交订单.研究过HTTP协议的童鞋们都知道,我们在访问网站时,是有两种方式的,POST和GET方式, ...

  7. c# 模拟 网页实现12306登陆、自动刷票、自动抢票完全篇

    这一篇文章,我将从头到尾教大家使用c#模拟网页面登陆12306网站,自动刷票,选择订票人,到最后一步提交订单.研究过HTTP协议的童鞋们都知道,我们在访问网站时,是有两种方式的,POST和GET方式, ...

  8. python 秒杀12306课程_Python攻破12306网站,实现2020最强抢票模式!

    python版本支持 2.7.10 - 2.7.15 依赖库 依赖若快 若快注册地址: 推荐用若快,打码兔平台已经关闭 项目依赖包 requirements.txt 安装方法-Windows: 安装方 ...

  9. 我要回家软件_超4成受访网友认可候补购票:抢票软件难了,还是12306靠谱

    自1月10日正式进入2020春运时间,有的人已经感受到站台的摩肩接踵,而有的人还对着遥遥无期的购票结果望眼欲穿. 在购票时,不少旅客发现,自己想买的票"瞬间被秒",然后找到号称可以 ...

最新文章

  1. php暂停函数sleep()和usleep的区别
  2. WCF 第六章 序列化与编码 编码选择
  3. 【Linux】一步一步学Linux——rmdir命令(22)
  4. java射击游戏_Java Swing打猎射击游戏源码
  5. 数据库的嵌套查询和统计查询
  6. CATia对计算机配置要求,【2人回答】求CATIA对电脑的详细配置要求-3D溜溜网
  7. 生态系统长期观测数据产品体系
  8. 穿墙透视真的来了!MIT华人团队超强动作检测模型,小黑屋照样夜视
  9. idea存在包但是运行项目一直报java.lang.NoClassDefFoundError的问题
  10. word 中 给日文汉字标注假名 。 ( ルビ )
  11. 米小爱团队负责人王刚:语音交互背后,有多少人工就有多少智能
  12. Protable 自定义添加搜索栏和toolbar
  13. vs2010使用教程c语言编程,VS2010的使用
  14. hilbert方程组matlab,数值分析(Hilbert矩阵)病态线性方程组的求解Matlab程序
  15. Ubuntu使用systemd设置开机自启动
  16. 内网实现电视盒子访问PC
  17. 坐标方位角计算通用公式
  18. 【程序人生】这是 2017 关于程序员薪酬最详尽的调查报告
  19. ️ 后羿采集器——最良心的爬虫软件
  20. TP-LINK TL-WDN7200H ubuntu18.04驱动安装

热门文章

  1. 微型计算机点火系统的摘要,丰田汽车点火系统故障诊断与排除的毕业论文教案.doc...
  2. 设计模式-策略模式-java-中文版
  3. 我爱计算机:张俊林专访
  4. comma是什么键(trailing comma是什么意思)
  5. 深度学习中的mask操作
  6. linux hid 设备驱动,linux hid驱动
  7. 首届河南青少年读书成才奖颁发决定
  8. 体验国产Linux系统,开局就翻车了…
  9. arduino为何流行?
  10. Hadoop平台关闭THP解决服务器高负载问题