Mo1a's blog

归档 · 2021

首页

关于

归档

algorithm

Knuth洗牌算法

Knuth算法是一种非常常用的洗牌算法,它在很多方面都有着广泛的应用。本文需要一定的概率论知识,包括排列组合、古典概型和条件概率。 问题分析洗牌其实是一种取随机的算法,只有每一面牌在序列中的任意位置出现的概率都相同的时候,我们才可以说一个随机算法是公平的。 最容易想到的公平洗牌方式大概是这种:有n张牌,这n张牌自由组合共有n!个组合,每次只要随机且等可能地从这n!种情况内选取一项,就可以得到一种随机的排列,也就是一次洗牌。那么问题就来了,n在小的时候,n!的数值大小仍可计算,而当n逐渐增大到一定值的时候,n!就会变得不可计算了起来,要随机取得一个情况要耗费的开支太大,时间复杂度达到了o(n!)。 那么,有没有别的方法可以保证一次洗牌开销没那么大而每张牌在任一位置的概率都相等呢? 算法分析我们可以借鉴下插..

更多
loading..
server

一篇文章快速上手Nginx服务器

一篇文章解决Nginx基础操作 本文基于Debian操作系统演示。(不要问我服务器为啥不用CentOS,问就是它无了 【恶 灵 退 散】前方灵魂画手出没 啥是Nginx比如你写了个HTML丢在服务器上,你输入这个服务器的域名去访问,服务器不知道要拿什么给你,也就不能访问到页面。Nginx就跟Apache一样,会监听服务器的80端口(就是http协议浏览器默认端口),有人发请求,它就把它一个特殊文件夹里的网页文件返回回去。也就是说,它是一个Web服务器应用。 Nginx的并发量非常大,能达到50000左右,是Tomcat的很多倍,在部署JavaWeb服务的时候,一个Tomcat处理的并发量有限,如果想要同时处理更多的请求,就需要有一个中间的服务器作为转发。Nginx很强(它是老毛子写的),它有两个很重要的..

更多
web

一篇文章快速上手JavaScript

观此文,你仍需有C语言、HTML、CSS基础之基础。 本文规范基本上基于ECMAScript2015(就是ES6)。 你需要认识C语言的分支与循环处理、HTML的常见标签以及CSS的基础选择器。如果你对C语言的函数指针或者函数式编程常用的lambda表达式有所理解的话,将有助你快速上手JavaScript。 (事件那边你要是懂一点WPF的event原理就更好了……不过没人学C#吧…… 如何输出console.log(); //输出信息 console.warn(); //输出警告,是黄色的 console.error(); //输出报错,是红色的(虽然也不会导致程序中止 它们可以通过传入多个参数来实现一次性输出更多数据。 数据类型通过let声明/定义变量,通过const声明常量。(不再推荐使用var)..

更多