您现在的位置: 首页>> 动态 >> 正文

对于12306系统的核心分票段模型,别把它想得太复杂了

来源: 鼠尾

【本文来自《在外行看来,铁路自主选座非常容易实现,但懂行的程序员才知道这根本做不到》评论区,标题为小编添加】


(相关资料图)

你把问题想复杂了。下面几个需求,12306是不需要实现的。

1. 把几个座位的不同段行程合成一个完整的全程行程。

2.买一张票包含两个及以上不连续行程。

3.一张票包含两种或以上席位级别。

抛除这几个问题后,其实基本模型比较简单:

一列车座位(铺位)总数,乘降站数。构成了一个基本矩阵,行对应座位,列对应乘降区间。比如,一列500个席位的列车,有二十个站,那么就是十九个乘降区间。这就得到一个500*19的矩阵,每个元素有三个状态:空,锁,占。

那么卖票就是对这9500个元素的操作。每次操作的元素都是同一行(座位)的连续若干元素。

这不就是C语言基本内存分配模型么?一毛一样。一次分配若干长度的一段连续内存,分配成功返回首地址,不成功返回零…

中间不断做统计,统计各区间间存在的对应内存段的数量。这就是对外显示的可购票量。

购票请求经排队后,一个个来,成功就返回成功,失败就返回失败。反正看到显示有票并不保证能买到。

回到选座问题上来。统计区间可售票数的时候,分abcdf位置分别统计,要哪个位置的座就先从这个位置的列表中找一个,没有就找其他表里。哪个位置都没有就是查找失败,没票了。

12306的难度主要在于并发量大,请求分流与排队系统。至于核心分票段模型,别把它想得太复杂了。你们所认为的复杂性,不过是是那三个“不需要实现的问题”带来的。

相关新闻
智赢定投_对于智赢定投简单介绍

1、“智赢定投”是国内首款引入了“止盈策略”的基金智能定投工具,其核心策略可以概括为“涨时了结,跌时多买”。2、能够根据

魔兽世界绿色始祖幼龙_绿色始祖幼龙

1、要神谕者声望你杀右边的怪接左边的任务然后去中心湖上面点的地方接日常就OK了日常没有的话估计要等你要等小的被控制了再杀死巫妖。本文到此

短毛绒 独家焦点

1、短毛绒,一种新型研发的针织经编绒类面料短毛绒,进行深度开发以后,系列产品为超柔绒、闪光超柔、扁平丝、扁平绒,短毛