[返回] [最新] [最热门] [最高评价]

彩票的数学知识

彩票怎样才能中奖?

理论上,只能靠运气。但是,如果规则设计得不好,就可以钻漏洞。

2005年2月,美国的一个彩票品种,就出现了漏洞,被麻省理工学院的学生发现了。随后的七年,这个学生反复购买这个品种,一共赚到了300万美元。

本文介绍他怎么做的,以及其中的数学原理。我依据的材料,主要来自数学教授 Jordan Ellenberg 在斯坦福大学的一次演讲(Youtube)。

一、期望值

彩票
...

阮一峰 2018-04-07 23:22 | 查看: 301

Systemd 定时器教程

Systemd 作为 Linux 的系统启动器,功能强大。

本文通过一个简单例子,介绍 Systemd 如何设置定时任务。这不仅实用,而且可以作为 Systemd 的上手教程。

一、定时任务

所谓定时任务,就是未来的某个或多个时点,预定要执行的任务,比如每五分钟收一次邮件、每天半夜两点分析一下日志等等。

Linux 系统通常都使用 cron 设置定时任务,但是 Systemd 也有这个功能
...

阮一峰 2018-03-30 08:01 | 查看: 291

Node 调试工具入门教程

JavaScript 程序越来越复杂,调试工具的重要性日益凸显。客户端脚本有浏览器,Node 脚本怎么调试呢?

2016年,Node 决定将 Chrome 浏览器的"开发者工具"作为官方的调试工具,使得 Node 脚本也可以使用图形界面调试,这大大方便了开发者。

本文介绍如何使用 Node 脚本的调试工具。

一、示例程序

为了方便讲解,下面是一个示例脚本。首先,新建一个工作目录,并进入该目
...

阮一峰 2018-03-20 08:11 | 查看: 359

日本70岁退休谈起

1、

2018年初,日本政府修改法律,推迟公务员的退休年龄。

现在,日本的公务员是60岁~63岁退休。新法律生效后,退休年龄立刻推迟到65岁,然后逐步推迟到70岁。

更厉害的是,日本政府同时宣布,养老金制度也要改革。现在是65岁领取养老金,将来只有到了70岁才能领。

如果我是一个刚刚毕业的日本大学生,听到这种消息,恐怕腿都要软了。日本那种毕恭毕敬、论资排辈的社会里面,上班简直像受罪一样。你
...

阮一峰 2018-03-08 08:15 | 查看: 394

HTTP/2 服务器推送(Server Push)教程

HTTP/2 协议的主要目的是提高网页性能。

头信息(header)原来是直接传输文本,现在是压缩后传输。原来是同一个 TCP 连接里面,上一个回应(response)发送完了,服务器才能发送下一个,现在可以多个回应一起发送。

服务器推送(server push)是 HTTP/2 协议里面,唯一一个需要开发者自己配置的功能。其他功能都是服务器和浏览器自动实现,不需要开发者关心。

本文详细介绍
...

阮一峰 2018-03-05 07:58 | 查看: 396

Nginx 容器教程

春节前,我看到 Nginx 加入了 HTTP/2 的 server push 功能,就很想试一下。

正好这些天,我在学习 Docker,就想到可以用 Nginx 容器。万一哪里改乱了,直接删掉,再重启一个容器就可以了。

下面就是我搭建 Nginx 容器的过程,以及如何加入 SSL 证书。你会看到 Docker 用来测试软件的新功能,真的很方便,很值得学习。如果你还不会 Docker,可以先看《
...

阮一峰 2018-02-27 08:05 | 查看: 391

Node 定时器详解

JavaScript 是单线程运行,异步操作特别重要。

只要用到引擎之外的功能,就需要跟外部交互,从而形成异步操作。由于异步操作实在太多,JavaScript 不得不提供很多异步语法。这就好比,有些人老是受打击, 他的抗打击能力必须变得很强,否则他就完蛋了。

Node 的异步语法比浏览器更复杂,因为它可以跟内核对话,不得不搞了一个专门的库 libuv 做这件事。这个库负责各种回调函数的执行时间
...

阮一峰 2018-02-23 08:43 | 查看: 406

Docker 微服务教程

Docker 是一个容器工具,提供虚拟环境。很多人认为,它改变了我们对软件的认识。

站在 Docker 的角度,软件就是容器的组合:业务逻辑容器、数据库容器、储存容器、队列容器......Docker 使得软件可以拆分成若干个标准化容器,然后像搭积木一样组合起来。

这正是微服务(microservices)的思想:软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务的调度中心和
...

阮一峰 2018-02-13 09:31 | 查看: 791

Docker 入门教程

2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业。

但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?本文就来详细解释,帮助大家理解它,还带有简单易懂的实例,教你如何将它用于日常开发。

一、环境配置的难题

软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?

用户必须保证两件事:操
...

阮一峰 2018-02-09 05:53 | 查看: 582

汇编语言入门教程

学习编程其实就是学高级语言,即那些为人类设计的计算机语言。

但是,计算机不理解高级语言,必须通过编译器转成二进制代码,才能运行。学会高级语言,并不等于理解计算机实际的运行步骤。

计算机真正能够理解的是低级语言,它专门用来控制硬件。汇编语言就是低级语言,直接描述/控制 CPU 的运行。如果你想了解 CPU 到底干了些什么,以及代码的运行步骤,就一定要学习汇编语言。

汇编语言不容易学习,就连简明
...

阮一峰 2018-01-21 18:17 | 查看: 660

加密货币的本质

去年,比特币暴涨,其他币也像雨后春笋一样冒出来,已经有1000多种了。

很多人都在问,加密货币(cryptocurrency)的时代,真的来临了吗?将来会不会人类不再使用美元、人民币,改用加密货币?那么多品种,我应该使用哪一种币?要不要现在就去投资一些?

这些问题的答案,我也想知道,就花了很多时间查阅资料、研究协议。前两周发表的《区块链入门教程》和《比特币入门教程》,是我的学习心得。但是,那两
...

阮一峰 2018-01-11 08:02 | 查看: 724

比特币入门教程

比特币(bitcoin)诞生于2008年的一篇论文。

一个署名为中本聪的人,提出了革命性的构想:让我们创造一种不受政府或其他任何人控制的货币!这个想法堪称疯狂:一串数字,背后没有任何资产支持,也没有任何人负责,你把它当作钱付给对方,怎么会有人愿意接受?

但是,狂想居然变成了现实。随后的几年,在全世界无数爱好者的支持下,比特币网络运行起来了,越来越多的人和资本参与,星星之火,终成燎原。刚刚过去的
...

阮一峰 2018-01-04 08:07 | 查看: 808

...更多...