2013-06-13 Robert Zhang
分析:此题不难,但特别容易超时!——这正是困难之处:有n个元素的集合的子集共有2^n个,枚举算法的时间复杂度在O(2^n),且本题除枚举外别无他法(NP完全),因此必须尽一切可能性优化,着力在降低计算中n的值(以下1、2项优化)。关键的优化有以下几点(按重要性排列): 继续阅读 »
2016-05-26 JustWe
你的问题在于读书太少,想的太多 —— 杨绛 昨天惊闻杨绛先生去世,突然想到了几年前看到的杨绛先生的这句话。我觉得在计算机领域理论知识更是尤为重要,现在某乎上盛行的计算机理论知识(尤指算法)无用论当真特别可悲。在这里我觉得讨论科班非科班的人都是别有用心的,重要的问题在于这些基础的训练,而不是科班非科班,我们知道很多大神都不是计算机相关专业的,但是他们的基础的深厚程度,确是很多科班出身的人无法能及的,所以说一切的问题还是要积累知识。 这学期一直在学编译原理的课程,我实实在在的感觉到了这个课程和相关内容的有趣。尤其是我在学习之前试着自己不借助任何的理论去写一个解释器,竟然也命中了不少的知识,这让 继续阅读 »
2019-05-11 geekspeng
隔离CPU核心 从一般内核 SMP 平衡和调度算法中删除指定的 cpu (由cpu_number定义)。 将进程移动到或移出“独立” CPU 的唯一方法是通过 CPU 亲和系统调用。 cpu 数量从0开始,因此最大值比系统上的 cpu 数量少1 此选项是隔离 cpu 的首选方法。 另一种方法是手动设置系统中所有任务的 CPU 掩码,这可能会导致问题和次优的负载均衡器性能 继续阅读 »
2015-10-24 Eric Wang
最近邻居 解题思路: 1. 使用JDK中的Point2D类,该类定义了坐标系空间中的一个点 2. Point2D是一个抽象类,但是在该类内部定义了静态的Double类,并且Double继承自Point2D 3. 可以通过Double的构造方法来实例化空间中的某个点 4. 将所有的输入数据全部实例化并存放在一个Point2D.Double的数组中 5. 对该数组进行暴力破解,计算其中任意两个点之间的距离,时间复杂度为$O(n^2)$,并保留下最小的两个点的编号,且编号小的在前 Java算法实现: ```java import java.awt.geom.Point2D; import java.util.Scanner; /* 继续阅读 »
2016-10-12 曹强
定义:定义一系列算法,把他们一个个封装起来,并且使他们可以相互替换。 需求:绩效为S的人年终奖有4倍工资,绩效为A的人年终奖有3倍工资,绩效为B的人年终奖有2倍工资。 var calculateBonus = function(performanceLevel, salary) { if (performanceLevel === 'S') { return salary * 4; } if (performanceLevel === 'A') { return salary * 3; } if (performanceLevel === 'B') { 继续阅读 »
2016-09-27 Alex Sun
Hash 哈希函数(散列函数)主要用于生成消息摘要(Message Digest),即将任意大小的数据映射到一个固定大小的数据。最常见的如MD5,SHA1等。 ``` --------- hash function -------------- | input |---------------->| hash value | ``` 在Node中,通过crypto.getHashes()可以查看所支持的哈希算法: js crypto.getHashes() // => [ 'DSA', 'DSA-SHA', 'DSA-SHA1', ... ] 下面是一个MD5的例子: ```js var hash = crypt 继续阅读 »
2016-06-14 刘太华
用redis造一个分布式rate limiter 号称分布式, 其实是装逼了呢。我也潮流用一发高逼格词 =。= 场景是: 我有一个服务, 需要对用户请求进行限速, 根据uid或者其他user信息, 服务进程是多节点的 经典的限速方式有很多种, token bucket(令牌桶), leaky bucket(漏桶), 它们的区别基本是对Burst(突发流量)的限制不一样,token bucket能允许一定突发流量, 具体算法查看wiki描述吧。 继续阅读 »
2017-09-14 Alex Sun
1. 优化目标 SVM 即支持向量机(Support Vector Machines),是一种大间距分类算法。 回顾在逻辑回归中,一个样本的损失函数为: $$ Cost(h_\theta(x),y)=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x)) $$ 继续阅读 »
2015-04-17 W.Y.
Flexbox 布局是 CSS3 中一种新的布局模型,被称为弹性盒模型。该模型是为了改进容器中内容的对齐、方向和排序方式,即使是动态,甚至是未知大小的容器。弹性盒模型的主要特点是,可以在不同屏幕尺寸下以最佳的方式,修改其子项的高度或宽度来填充容器的可用空间。 许多设计师和开发人员认为这种布局使用起来更加简单,弹性盒模型的使元素的定位更加简单,从而某些复杂的布局可以用更少的代码来实现,进而简化了开发过程。Flexbox 布局算法是基于方向的,这与基于垂直和水平的 block 和 inline 布局不同。弹性盒模型可用于小应用或组建的布局,然而对于大型应用应该使用 Grid 布局。 本文将用可视化的方式介绍 Flex 如何影响我们的 继续阅读 »
2016-09-19 曹强
Javascript语言的设计不够严谨,很多地方一不小心就会出错。 举例来说,请考虑以下情况。 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明。用自然语言描述的算法如下: javascript if (myObj不存在){ 声明myObj; } 你可能会觉得,写出这段代码很容易。但是实际上,它涉及的语法问题,远比我们想象的复杂。Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法。只有对Javascript语言的实现细节非常清楚,才可能分得清它们的区别。 more 第一种写法 根据直觉,你可能觉得可以这样写: javascript if (!myObj) 继续阅读 »