12306是不是最垃圾的app? 293回复/ 50619236 浏览

全部回帖

收起
引用 @一口毒奶飞上天 发表的:
只看此人

哥们能简单的给我科普一下吗,不是学这方面的,单纯有点感兴趣

哥们能简单的给我科普一下吗,不是学这方面的,单纯有点感兴趣

回来晚了,我简单描述下。

首先,计算机只能识别0和1,他们的运算方式就是位运算,下列用到的两种位运算是 与(运算符号 &)和或(运算符号 |),比如 0&1=0,1&1=1,0|1=1,1|1=1 等。用俗话来讲就是只要有假,与运算就为假。只要有真,或运算就为真。下文使用这两种运算方式就行。我们用到的最小内存占用的数据结构是位图(BitMap),就是用一个数组存放的二进制数据,比如我们要使用64位的内存,就可以用 long[] bm = new long[1]; 来表示(long是64位)。这玩意能干啥呢?比如我们要统计一个人上班签到,就可以用 BitMap 来表示。初始化的位图中所有位都是0,当他某天上班了,就在位图中把这天对应的那位变成1,一年下来,这张位图就记录了这个人哪天有上班,哪天在缺勤。
接下来简单介绍一下在模拟12306售票过程是如何使用位图来计算的。

在一列火车中,有很多停靠站,也有很多座位。为了简化模型,我们假定从深圳到北京的火车途径长沙、武汉、郑州、石家庄,假定有6个座位好了。

那么我们需要建立5个位图数组(下图1):


0表示当前座位没人,1表示有人。

假设有人买票了,他要从深圳到武汉。那么我们只需要把深圳到长沙的位图做或运算,得到的结果中只要是0的位就表示能坐。不用算武汉是因为到了武汉就下车了。假设他选了1号座位,那么运算结果就是:(下图2)


OK现在假设第二个人买票了,他要从长沙坐到北京。我们现在只需要计算上图中长沙、武汉、郑州、石家庄这四个位图的或运算。100000 | 000000 | 000000,运算结果是 100000,表示第一个位置不能坐。假定他选了第四个座位,那么结果就是:(下图3)


假设第三个人来买票了,他要从深圳到北京。这时候我们要把上图5个城市的位图做或运算。计算结果是 100100,表示只能选2356号座位。假定他选了2号座位,那么结果是:(下图4)


假定多人坐车之后,成了这种结果:(下图5)


那么有人要坐车从深圳到北京,有座吗?已经没有了。5个位图的或运算结果是111111。

简单的抢票逻辑就是这样,如有质疑欢迎指正。

回来晚了,我简单描述下。

首先,计算机只能识别0和1,他们的运算方式就是位运算,下列用到的两种位运算是 与(运算符号 &)和或(运算符号 |),比如 0&1=0,1&1=1,0|1=1,1|1=1 等。用俗话来讲就是只要有假,与运算就为假。只要有真,或运算就为真。下文使用这两种运算方式就行。我们用到的最小内存占用的数据结构是位图(BitMap),就是用一个数组存放的二进制数据,比如我们要使用64位的内存,就可以用 long[] bm = new long[1]; 来表示(long是64位)。这玩意能干啥呢?比如我们要统计一个人上班签到,就可以用 BitMap 来表示。初始化的位图中所有位都是0,当他某天上班了,就在位图中把这天对应的那位变成1,一年下来,这张位图就记录了这个人哪天有上班,哪天在缺勤。
接下来简单介绍一下在模拟12306售票过程是如何使用位图来计算的。

在一列火车中,有很多停靠站,也有很多座位。为了简化模型,我们假定从深圳到北京的火车途径长沙、武汉、郑州、石家庄,假定有6个座位好了。

那么我们需要建立5个位图数组(下图1):


0表示当前座位没人,1表示有人。

假设有人买票了,他要从深圳到武汉。那么我们只需要把深圳到长沙的位图做或运算,得到的结果中只要是0的位就表示能坐。不用算武汉是因为到了武汉就下车了。假设他选了1号座位,那么运算结果就是:(下图2)


OK现在假设第二个人买票了,他要从长沙坐到北京。我们现在只需要计算上图中长沙、武汉、郑州、石家庄这四个位图的或运算。100000 | 000000 | 000000,运算结果是 100000,表示第一个位置不能坐。假定他选了第四个座位,那么结果就是:(下图3)


假设第三个人来买票了,他要从深圳到北京。这时候我们要把上图5个城市的位图做或运算。计算结果是 100100,表示只能选2356号座位。假定他选了2号座位,那么结果是:(下图4)


假定多人坐车之后,成了这种结果:(下图5)


那么有人要坐车从深圳到北京,有座吗?已经没有了。5个位图的或运算结果是111111。

简单的抢票逻辑就是这样,如有质疑欢迎指正。

亮了(61)
回复
查看评论(5)
引用 @Bxrs 发表的:
只看此人

回来晚了,我简单描述下。

首先,计算机只能识别0和1,他们的运算方式就是位运算,下列用到的两种位运算是 与(运算符号 &)和或(运算符号 |),比如 0&1=0,1&1=1,0|1=1,1|1=1 等。用俗话来讲就是只要有假,与运算就为假。只要有真,或运算就为真。下文使用这两种运算方式就行。我们用到的最小内存占用的数据结构是位图(BitMap),就是用一个数组存放的二进制数据,比如我们要使用64位的内存,就可以用 long[] bm = new long[1]; 来表示(long是64位)。这玩意能干啥呢?比如我们要统计一个人上班签到,就可以用 BitMap 来表示。初始化的位图中所有位都是0,当他某天上班了,就在位图中把这天对应的那位变成1,一年下来,这张位图就记录了这个人哪天有上班,哪天在缺勤。 接下来简单介绍一下在模拟12306售票过程是如何使用位图来计算的。

在一列火车中,有很多停靠站,也有很多座位。为了简化模型,我们假定从深圳到北京的火车途径长沙、武汉、郑州、石家庄,假定有6个座位好了。

那么我们需要建立5个位图数组(下图1):

[图片]

0表示当前座位没人,1表示有人。

假设有人买票了,他要从深圳到武汉。那么我们只需要把深圳到长沙的位图做或运算,得到的结果中只要是0的位就表示能坐。不用算武汉是因为到了武汉就下车了。假设他选了1号座位,那么运算结果就是:(下图2)

[图片]

OK现在假设第二个人买票了,他要从长沙坐到北京。我们现在只需要计算上图中长沙、武汉、郑州、石家庄这四个位图的或运算。100000 | 000000 | 000000,运算结果是 100000,表示第一个位置不能坐。假定他选了第四个座位,那么结果就是:(下图3)

[图片]

假设第三个人来买票了,他要从深圳到北京。这时候我们要把上图5个城市的位图做或运算。计算结果是 100100,表示只能选2356号座位。假定他选了2号座位,那么结果是:(下图4)

[图片]

假定多人坐车之后,成了这种结果:(下图5)

[图片]

那么有人要坐车从深圳到北京,有座吗?已经没有了。5个位图的或运算结果是111111。

简单的抢票逻辑就是这样,如有质疑欢迎指正。

查看更多

回来晚了,我简单描述下。

首先,计算机只能识别0和1,他们的运算方式就是位运算,下列用到的两种位运算是 与(运算符号 &)和或(运算符号 |),比如 0&1=0,1&1=1,0|1=1,1|1=1 等。用俗话来讲就是只要有假,与运算就为假。只要有真,或运算就为真。下文使用这两种运算方式就行。我们用到的最小内存占用的数据结构是位图(BitMap),就是用一个数组存放的二进制数据,比如我们要使用64位的内存,就可以用 long[] bm = new long[1]; 来表示(long是64位)。这玩意能干啥呢?比如我们要统计一个人上班签到,就可以用 BitMap 来表示。初始化的位图中所有位都是0,当他某天上班了,就在位图中把这天对应的那位变成1,一年下来,这张位图就记录了这个人哪天有上班,哪天在缺勤。
接下来简单介绍一下在模拟12306售票过程是如何使用位图来计算的。

在一列火车中,有很多停靠站,也有很多座位。为了简化模型,我们假定从深圳到北京的火车途径长沙、武汉、郑州、石家庄,假定有6个座位好了。

那么我们需要建立5个位图数组(下图1):


0表示当前座位没人,1表示有人。

假设有人买票了,他要从深圳到武汉。那么我们只需要把深圳到长沙的位图做或运算,得到的结果中只要是0的位就表示能坐。不用算武汉是因为到了武汉就下车了。假设他选了1号座位,那么运算结果就是:(下图2)


OK现在假设第二个人买票了,他要从长沙坐到北京。我们现在只需要计算上图中长沙、武汉、郑州、石家庄这四个位图的或运算。100000 | 000000 | 000000,运算结果是 100000,表示第一个位置不能坐。假定他选了第四个座位,那么结果就是:(下图3)


假设第三个人来买票了,他要从深圳到北京。这时候我们要把上图5个城市的位图做或运算。计算结果是 100100,表示只能选2356号座位。假定他选了2号座位,那么结果是:(下图4)


假定多人坐车之后,成了这种结果:(下图5)


那么有人要坐车从深圳到北京,有座吗?已经没有了。5个位图的或运算结果是111111。

简单的抢票逻辑就是这样,如有质疑欢迎指正。

好像懂了一点,感谢老哥打这么多字给我科普,辛苦老哥了

好像懂了一点,感谢老哥打这么多字给我科普,辛苦老哥了

亮了(0)
回复
查看评论(1)
引用 @你说实话就是黑 发表的:
只看此人

对对,我是外行,但我知道内行从来不说界面,只说UI,素材,面板。再说了软件功能强不强大主要是程序员的事,至于好不好用,漂不漂亮是结构工程师和UI设计师的事情,从你的字里行间就看得出你比我这外行还外行,还前端后端,这些词也只有在跟啥都不懂的人说说,别嘴硬了。

对对,我是外行,但我知道内行从来不说界面,只说UI,素材,面板。再说了软件功能强不强大主要是程序员的事,至于好不好用,漂不漂亮是结构工程师和UI设计师的事情,从你的字里行间就看得出你比我这外行还外行,还前端后端,这些词也只有在跟啥都不懂的人说说,别嘴硬了。

内行从不说界面这句话就知道你只是个道听途说的半吊子,没有在真正的团队里面待过。做过leader吗?你跟产品沟通、和领导汇报是说ui的?别人关心你说的UX/UI、PX/PT吗?

内行从不说界面这句话就知道你只是个道听途说的半吊子,没有在真正的团队里面待过。做过leader吗?你跟产品沟通、和领导汇报是说ui的?别人关心你说的UX/UI、PX/PT吗?

亮了(0)
回复
查看评论(1)
引用 @我不要听你屁话 发表的:
只看此人

每个人买一次票后台数据就需要刷新一次

每个人买一次票后台数据就需要刷新一次

嗯 双十一天猫购物后台不刷新

嗯 双十一天猫购物后台不刷新

亮了(0)
回复
查看评论(2)
引用 @认真你就输输输啦 发表的:
只看此人

不是,12306现在用户体验非常好,我认为是你太垃圾了,完毕

不是,12306现在用户体验非常好,我认为是你太垃圾了,完毕

我也觉得挺好用,12306读大学那时候用起来不太顺手,现在毕业6年了,出差买票什么方便的很,不知道楼主说的问题

我也觉得挺好用,12306读大学那时候用起来不太顺手,现在毕业6年了,出差买票什么方便的很,不知道楼主说的问题

亮了(6)
回复
引用 @Bxrs 发表的:
只看此人

……想多了真的。12306自从15年和阿里云合作以后,春运期间阿里云承担了75%的流量之后,12306的体验才有了明显好转。12306一期投入的费用为3亿,包括硬件,而淘宝/微信之类App投入起码10倍不止。只能说12306技术进步很大,但绝对称不上目前最牛逼的App。单论国内,微信淘宝所包含的技术绝对碾压12306。如果你是做IT有不同意见,起码对这行的技术有所了解,欢迎来讨论。如果啥也不懂单抓着“12306技术吊炸天,动态库存计算能力强无敌”之类的无脑吹,那我可以给你科普如何用BitMap来简单模拟一下12306的抢票算法。如果你还是听不懂,或者来一句“那你做一个看看”之类的,行吧你说得对。

……想多了真的。12306自从15年和阿里云合作以后,春运期间阿里云承担了75%的流量之后,12306的体验才有了明显好转。12306一期投入的费用为3亿,包括硬件,而淘宝/微信之类App投入起码10倍不止。只能说12306技术进步很大,但绝对称不上目前最牛逼的App。单论国内,微信淘宝所包含的技术绝对碾压12306。如果你是做IT有不同意见,起码对这行的技术有所了解,欢迎来讨论。如果啥也不懂单抓着“12306技术吊炸天,动态库存计算能力强无敌”之类的无脑吹,那我可以给你科普如何用BitMap来简单模拟一下12306的抢票算法。如果你还是听不懂,或者来一句“那你做一个看看”之类的,行吧你说得对。

我说怎么毕业后感觉好用多了。。。15年毕业

我说怎么毕业后感觉好用多了。。。15年毕业

亮了(0)
回复
引用 @Bxrs 发表的:
只看此人

回来晚了,我简单描述下。

首先,计算机只能识别0和1,他们的运算方式就是位运算,下列用到的两种位运算是 与(运算符号 &)和或(运算符号 |),比如 0&1=0,1&1=1,0|1=1,1|1=1 等。用俗话来讲就是只要有假,与运算就为假。只要有真,或运算就为真。下文使用这两种运算方式就行。我们用到的最小内存占用的数据结构是位图(BitMap),就是用一个数组存放的二进制数据,比如我们要使用64位的内存,就可以用 long[] bm = new long[1]; 来表示(long是64位)。这玩意能干啥呢?比如我们要统计一个人上班签到,就可以用 BitMap 来表示。初始化的位图中所有位都是0,当他某天上班了,就在位图中把这天对应的那位变成1,一年下来,这张位图就记录了这个人哪天有上班,哪天在缺勤。 接下来简单介绍一下在模拟12306售票过程是如何使用位图来计算的。

在一列火车中,有很多停靠站,也有很多座位。为了简化模型,我们假定从深圳到北京的火车途径长沙、武汉、郑州、石家庄,假定有6个座位好了。

那么我们需要建立5个位图数组(下图1):

[图片]

0表示当前座位没人,1表示有人。

假设有人买票了,他要从深圳到武汉。那么我们只需要把深圳到长沙的位图做或运算,得到的结果中只要是0的位就表示能坐。不用算武汉是因为到了武汉就下车了。假设他选了1号座位,那么运算结果就是:(下图2)

[图片]

OK现在假设第二个人买票了,他要从长沙坐到北京。我们现在只需要计算上图中长沙、武汉、郑州、石家庄这四个位图的或运算。100000 | 000000 | 000000,运算结果是 100000,表示第一个位置不能坐。假定他选了第四个座位,那么结果就是:(下图3)

[图片]

假设第三个人来买票了,他要从深圳到北京。这时候我们要把上图5个城市的位图做或运算。计算结果是 100100,表示只能选2356号座位。假定他选了2号座位,那么结果是:(下图4)

[图片]

假定多人坐车之后,成了这种结果:(下图5)

[图片]

那么有人要坐车从深圳到北京,有座吗?已经没有了。5个位图的或运算结果是111111。

简单的抢票逻辑就是这样,如有质疑欢迎指正。

查看更多

回来晚了,我简单描述下。

首先,计算机只能识别0和1,他们的运算方式就是位运算,下列用到的两种位运算是 与(运算符号 &)和或(运算符号 |),比如 0&1=0,1&1=1,0|1=1,1|1=1 等。用俗话来讲就是只要有假,与运算就为假。只要有真,或运算就为真。下文使用这两种运算方式就行。我们用到的最小内存占用的数据结构是位图(BitMap),就是用一个数组存放的二进制数据,比如我们要使用64位的内存,就可以用 long[] bm = new long[1]; 来表示(long是64位)。这玩意能干啥呢?比如我们要统计一个人上班签到,就可以用 BitMap 来表示。初始化的位图中所有位都是0,当他某天上班了,就在位图中把这天对应的那位变成1,一年下来,这张位图就记录了这个人哪天有上班,哪天在缺勤。
接下来简单介绍一下在模拟12306售票过程是如何使用位图来计算的。

在一列火车中,有很多停靠站,也有很多座位。为了简化模型,我们假定从深圳到北京的火车途径长沙、武汉、郑州、石家庄,假定有6个座位好了。

那么我们需要建立5个位图数组(下图1):


0表示当前座位没人,1表示有人。

假设有人买票了,他要从深圳到武汉。那么我们只需要把深圳到长沙的位图做或运算,得到的结果中只要是0的位就表示能坐。不用算武汉是因为到了武汉就下车了。假设他选了1号座位,那么运算结果就是:(下图2)


OK现在假设第二个人买票了,他要从长沙坐到北京。我们现在只需要计算上图中长沙、武汉、郑州、石家庄这四个位图的或运算。100000 | 000000 | 000000,运算结果是 100000,表示第一个位置不能坐。假定他选了第四个座位,那么结果就是:(下图3)


假设第三个人来买票了,他要从深圳到北京。这时候我们要把上图5个城市的位图做或运算。计算结果是 100100,表示只能选2356号座位。假定他选了2号座位,那么结果是:(下图4)


假定多人坐车之后,成了这种结果:(下图5)


那么有人要坐车从深圳到北京,有座吗?已经没有了。5个位图的或运算结果是111111。

简单的抢票逻辑就是这样,如有质疑欢迎指正。

楼主辛苦了,看起来逻辑不是特别复杂,可能数据量和运算量比较大,这个才是接入阿里云解决的本质问题啦

楼主辛苦了,看起来逻辑不是特别复杂,可能数据量和运算量比较大,这个才是接入阿里云解决的本质问题啦

亮了(0)
回复
查看评论(2)
引用 @黄桃果干 发表的:
只看此人

就招行的还可以,我也用工行民生的,还有邮储的,简直一坨屎

就招行的还可以,我也用工行民生的,还有邮储的,简直一坨屎

浦发的不也还可以,

浦发的不也还可以,

亮了(1)
回复
查看评论(1)
引用 @虎扑JR0594524587 发表的:
只看此人

恕我说话比较直接,微信算是app吗?12306超微信?还没有之一?就愣吹显得自己很有文化?

恕我说话比较直接,微信算是app吗?12306超微信?还没有之一?就愣吹显得自己很有文化?

微信扫个健康码都点无数次的填写信息,就这技术,也别和12306比了,怪不得金融做不起来,健康码信息都保存不了的软件,谁敢把大钱放进去。。。

微信扫个健康码都点无数次的填写信息,就这技术,也别和12306比了,怪不得金融做不起来,健康码信息都保存不了的软件,谁敢把大钱放进去。。。

亮了(4)
回复
查看评论(1)
引用 @呵呵二笑泯恩仇 发表的:
只看此人

12306是目前最牛逼的APP,甚至没有之一。

12306是目前最牛逼的APP,甚至没有之一。

想想看 平时节假日 几乎是几亿人在那上 居然没奔溃 而且不管你是什么身份 都得老老实实 有票就是有票 没票谁也买不到

想想看 平时节假日 几乎是几亿人在那上 居然没奔溃 而且不管你是什么身份 都得老老实实 有票就是有票 没票谁也买不到

亮了(10)
回复
查看评论(1)
引用 @我喜欢你但更想打篮球 发表的:
只看此人

[图片]

为啥对自己不懂得领域这么自信呢 ?

查看更多

为啥对自己不懂得领域这么自信呢 ?

这个……人家说的没问题吧……

为啥这么多人灭

12306的前端做的垃圾是事实啊 服务端牛逼也是事实

如果铁路局愿意开放接口或者sdk 我敢肯定三方的app完毕本尊好用
这个……人家说的没问题吧……

为啥这么多人灭

12306的前端做的垃圾是事实啊 服务端牛逼也是事实

如果铁路局愿意开放接口或者sdk 我敢肯定三方的app完毕本尊好用
亮了(2)
回复
查看评论(1)
我特么要不是几天前刚重置过密码我就信了你的了。
我特么要不是几天前刚重置过密码我就信了你的了。
亮了(0)
回复
引用 @车速六十迈 发表的:
只看此人

想想看 平时节假日 几乎是几亿人在那上 居然没奔溃 而且不管你是什么身份 都得老老实实 有票就是有票 没票谁也买不到

想想看 平时节假日 几乎是几亿人在那上 居然没奔溃 而且不管你是什么身份 都得老老实实 有票就是有票 没票谁也买不到

有身份的人都去火车站要票了

有身份的人都去火车站要票了

亮了(0)
回复
引用 @认真你就输输输啦 发表的:
只看此人

不是,12306现在用户体验非常好,我认为是你太垃圾了,完毕

不是,12306现在用户体验非常好,我认为是你太垃圾了,完毕

大概用了一年的12306了,非常好用

大概用了一年的12306了,非常好用

亮了(1)
回复

无根据乱黑某些公司,尤其是国有大公司的话---------楼主,请小心公司的法务找上门来

无根据乱黑某些公司,尤其是国有大公司的话---------楼主,请小心公司的法务找上门来

亮了(0)
回复

我觉得挺好用的啊

我觉得挺好用的啊

亮了(0)
回复
我觉得还行吧
我觉得还行吧
亮了(0)
回复

12306神级软件。你觉得不牛逼,但是全世界能做出来的公司屈指可数。

12306神级软件。你觉得不牛逼,但是全世界能做出来的公司屈指可数。

亮了(0)
回复
引用 @马超 发表的:
只看此人

引用内容可能违规暂时被隐藏

引用内容可能违规暂时被隐藏

超哥 急坏了 都发两条了

超哥 急坏了 都发两条了

亮了(0)
回复
引用 @虎扑JR0594524587 发表的:
只看此人

所以我们讨论的不应该是如何评价一款app优秀吗,扯什么访问量大和安全可靠不就是底层数据库服务器安全做得好,和app这个软件有啥关系?

所以我们讨论的不应该是如何评价一款app优秀吗,扯什么访问量大和安全可靠不就是底层数据库服务器安全做得好,和app这个软件有啥关系?

杠杠滴

杠杠滴

亮了(3)
回复
Re:12306是不是最垃圾的app?
虎扑游戏中心
步行街主干道最热帖
有一说一,成都武汉哪个更强
211体育生找工作是真有罪啊
铁头这次是真头铁
手头上房产股票现金150W美金,50岁打算2000W人民币回广州退休现实吗?
那些淘宝上的流量卡,有坑吗?告诉我
剧情里葬身火海的反角有哪些?
兄弟们打算在今年618期间给自己买点啥?
一栗小莎子
英雄
输入ngm,看看你纯不纯洁
步行街主干道最新帖
磨砂黑与亮面黑的区别
就很难评…
防沉迷技术走向尽头,接下来,需要的是家庭的共同参与
兄弟们,我刚刚夜跑碰到大明星胡克群了,对粉丝挺和善,唯独不怎么搭理我
今晨是不是这里面最丑的
未成年人防沉迷已取得阶段性成果,未成年人保护未来走向何方?
大佬们给康康,这个是捷安特吗?
我是真的服了,马上毕业了,我班搞的跟坨史样的黑板报,还不让说,还说嫌难看就自己画呗,我气不过,就自己花钱买的颜料,他们还在那阴阳怪气我
赵美延宋雨琦同框你更喜欢谁?
欣赏周的最后颜值和嗓子巅峰,摩天轮的青花瓷!
热门游戏-即点即玩
无需下载,足球经理模式一键即玩
《NBA英雄》教练系统上线啦!我选好了,看看你的