亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript模擬訂火車票和退票示例

2019-11-20 20:47:39
字體:
來源:轉載
供稿:網友

之前看到有人分析12306后臺的邏輯。?;疖嚻钡念A定和退訂不同于普通的購物。
一個難題就是火車票可以分站來賣。比如,一張北京到上海的火車票,沿途可以有很多站,可以北京-濟南,濟南-南京...等等。如何設計數據模型來存取這些票是一個問題。而不是簡單的數量+-1.

其中看到一條思路挺好:用二進制字符串來表示一張火車票,比如,北京到上海共10站,那么一張全程票初始狀態表示為:'1111111111';
賣出一張全程票,則該票變為'0000000000';
賣出一張半程票,比如北京-濟南三站(第一站-第三站),則票變為'0011111111';
再賣出一張半程票,比如徐州-南京(第6站-第9站),則上一張票變為:'0011100011';

退訂票的邏輯就很簡單了,我要退一張(徐州-南京)的票,則從票池中找到第一張不能買
(徐州-南京)的票,更改它就OK(買票的逆向).比如,找到了上面的一張票'0011100011',
退票后,此票變為(0011111111);

基本邏輯如上,12306要保證多入口,而同時數據的一致性,需要很高效的邏輯來處理查票,
買票,退票的業務,據說高峰每秒會有20萬請求。將票的數據結構保存在內存中。而非數據庫。
小而高效的數據結變得很重要。

復制代碼 代碼如下:

if(jQuery){}else{
 //document.write
}

function Server(){
 var self = this;

 self.ticketsPool = [];

 self._init= function(number){
  if(typeof(number) != 'number')
   throw ('type error');
  for(i=0;i<number;i++){
   self.ticketsPool.push(new Ticket());
  }
 };

 //判斷一張票是否可以買,通過與或運算來實現。
 //比如:訂單o為北京-濟南(001111111),某張票為(0000000011)(已賣出北京-南京),那么返回false
 //比如:訂單o為北京-濟南(001111111),某張票為(1111100011)(已賣出徐州-南京),那么返回true
 self.canBuy = function(o,t){
  var _o = ''
  for(j=0; j<o.length; j++){
   _o += o[j]=='0'?1:0;
  }
  var r1 = (parseInt(t.tic,2) | parseInt(o,2)) & parseInt(_o,2);
  var r2 = parseInt(_o,2);
  return r1 == r2;
 };

 //賣出一張票
 self.pop1Ticket = function(o){
   for(i=0;i < self.ticketsPool.length;i++){
    if(self.canBuy(o,self.ticketsPool[i])){
     self.buy(self.ticketsPool[i],o);
     return i;
   }
  };
  return -1;
 };

 //賣出票的實現,改變二進制字符串,比如'111111111'->'001111111';
 self.buy = function(t,o){
  t.tic = (parseInt(t.tic,2) & parseInt(o,2)).toString(2);
  //alert(t.tic);

 };

 //查詢余票
 self.remainTics = function(o){
   var count=0;
   for(i=0;i < self.ticketsPool.length;i++){
    count += self.canBuy(o,self.ticketsPool[i])?1:0;
  };
  return count;
 }

 //退票,或 運算
 self.refund = function(o){
   for(i=0;i < self.ticketsPool.length;i++){
    if(!self.canBuy(o,self.ticketsPool[i])){
     var _o = ''
     for(j=0; j<o.length; j++){
      _o += o[j]=='0'?1:0;
     }
     self.ticketsPool[i].tic = (parseInt(self.ticketsPool[i].tic,2) | parseInt(_o,2)).toString(2);
     return i;
   } 
  };

  return -1;
 }
}

//數據模型:票
function Ticket(){
 var self = this;
 //票的初始為全程票
 self.tic = '1111111111';
}

//數據模型:訂單
function Order(from, to){
 var self = this;
 var s = '';
 for(i=0;i<10;i++){
  s += (i>=from && i<to)?0:1;
 }
 return s;
}

//12306后臺
Server = new Server();
//初始狀態,票池有400張全程票
Server._init(400);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人综合一区二区三区| 91sao在线观看国产| 午夜精品99久久免费| 亚洲欧美制服中文字幕| 亚洲精品一区中文| 亚洲欧美在线免费观看| 日韩电影大全免费观看2023年上| 久久久久久这里只有精品| 国产精品日韩在线观看| 91在线无精精品一区二区| 成年无码av片在线| 亚洲白拍色综合图区| 91欧美视频网站| 国产精品久久久久久av福利| 国产亚洲视频在线| 日韩中文字幕网址| 色噜噜狠狠狠综合曰曰曰| 色无极亚洲影院| 中文字幕日韩在线播放| 久久91亚洲精品中文字幕| 欧美日韩免费观看中文| 日韩欧美在线视频观看| 国产欧美日韩亚洲精品| 亚洲丝袜一区在线| 日本精品在线视频| 欧美重口另类videos人妖| 91久久久久久久| 欧美天堂在线观看| 成人午夜激情网| 国产精品91久久久久久| 57pao国产成人免费| 一区二区国产精品视频| 国产亚洲一区二区在线| 国产精品久久久久久久久久三级| 日韩美女激情视频| 亚洲国产精品va在线看黑人| 国产成人精品久久亚洲高清不卡| 久久人人爽人人爽人人片av高清| 精品美女久久久久久免费| 久久国产精品电影| 国产精品专区h在线观看| 国产精品丝袜久久久久久高清| 国产欧美精品一区二区| 日韩精品中文字幕在线播放| 国产区精品视频| 国产精品入口免费视频一| 欧美孕妇孕交黑巨大网站| 国产69久久精品成人看| 亚洲人午夜精品免费| 97国产suv精品一区二区62| 91免费的视频在线播放| 日韩有码视频在线| 国产激情综合五月久久| 韩国精品久久久999| 成人动漫网站在线观看| 亚洲老板91色精品久久| 国产精品十八以下禁看| 81精品国产乱码久久久久久| 中文字幕日韩有码| 色综合视频网站| 日韩中文字幕欧美| 一本一本久久a久久精品牛牛影视| 国产精品久久99久久| 欧美一级淫片videoshd| 色综合天天狠天天透天天伊人| 97热精品视频官网| 久久综合久久美利坚合众国| 欧美成人在线免费| 国产99久久精品一区二区| 国内成人精品一区| 最新69国产成人精品视频免费| 日韩精品在线视频观看| 久久精品中文字幕| 精品久久久一区二区| 久久九九国产精品怡红院| 欧美国产中文字幕| 久久综合九色九九| 日韩中文av在线| 久久久久久久久久久久久久久久久久av| 成人伊人精品色xxxx视频| 视频直播国产精品| 亚洲天堂av在线播放| 日本sm极度另类视频| 青青草原成人在线视频| 国模精品一区二区三区色天香| 亚洲国产精品一区二区久| 国产一区二区三区在线播放免费观看| 中文字幕九色91在线| 国产精品久久久久久亚洲影视| 色yeye香蕉凹凸一区二区av| 久久久久久com| 精品久久久久久久久久ntr影视| 亚洲国产精品福利| 日韩一区av在线| 日韩高清免费在线| 伊人久久大香线蕉av一区二区| 亚洲国产成人久久综合一区| 日韩av免费一区| 91青草视频久久| 国产精品电影一区| 亚洲色图五月天| 精品国偷自产在线| 91在线观看免费观看| 久久久免费精品视频| 精品一区二区三区三区| 国产精品91久久久久久| 国产精品吹潮在线观看| 精品亚洲国产视频| 一区二区三区美女xx视频| 91亚洲精品在线观看| 在线成人激情视频| 欧美激情视频给我| 亚洲一区二区少妇| 国产精品自拍偷拍| 精品欧美激情精品一区| 中文字幕日韩在线播放| 91老司机在线| 一区二区三区天堂av| 欧日韩不卡在线视频| 亚洲美腿欧美激情另类| 欧美成人第一页| 亚洲自拍小视频| 色琪琪综合男人的天堂aⅴ视频| 国产999精品视频| 欧美成人免费全部观看天天性色| 中文字幕在线国产精品| 国产精品 欧美在线| 亚洲一区二区三区四区视频| 色妞一区二区三区| 欧美国产亚洲精品久久久8v| 久久精品99久久久香蕉| 欧美乱大交xxxxx另类电影| 亚洲欧洲国产精品| 欧美激情一级精品国产| 欧美日韩在线视频观看| 亚洲欧洲激情在线| 在线观看精品国产视频| 尤物九九久久国产精品的特点| 91久久久久久久久久久| 日本国产欧美一区二区三区| 久久久免费精品视频| 欧美性色19p| 国产一区二区三区毛片| 国产精品稀缺呦系列在线| 国产精品一久久香蕉国产线看观看| 欧美有码在线观看视频| 久热在线中文字幕色999舞| 国产亚洲综合久久| 中文字幕精品一区二区精品| 亚洲最大福利视频| 日韩电影第一页| 欧美日韩国产区| 91性高湖久久久久久久久_久久99| www国产精品视频| 久久久久久中文字幕| 亚洲欧美国产精品va在线观看| 色老头一区二区三区| 欧美午夜美女看片| 国产精品扒开腿做爽爽爽男男| 国内精品国产三级国产在线专| 亚洲欧美激情另类校园| 91高清视频免费观看| 欧美性猛交xxxxx免费看| 国产精品青草久久久久福利99|