站内搜索

本次搜索找到结果 14 条

在写干货之前,我想先探(qiang)讨(diao)两个问题,模式的局限性?模式有什么用?

最近看到一篇文章对我启发很大,许来西在知乎的回答《哲学和科学有什么关联?》,全篇较长,这里摘录我要引出的一点:

科学作为一种经验主义的认识论,有着经验主义的巨大缺陷:它永远不能产生绝对正确的真理。这是归纳法的本质决定的。而且值得注意的是,归纳不具有唯一性。

举一个简单的例子,我们假设一个世界,如下图:

一个青蛙世界

科学家很快有了两种归纳方式:

  • 世界上所有的青蛙都戴眼镜
  • 世界上所有戴眼镜的都是青蛙

在没有更多的信息的时候,我们应该如何选择正确的理论呢?答案是无法选择。

原文:https://imnerd.org/svg-animation-in-action.html

SVG 是基于 XML 的矢量图形描述语言,可以近似理解成 HTML,所以能和 JS 以及 CSS 进行交互。 特别是 CSS,配合 CSS Animation 就能实现一些令人心旷神怡的动画,这实在是让人兴奋。下面我们就来看看 SVG 配合 CSS 实现动画的一些方法。

本文内容主要是我之前分享的文字版,若想看重点的话可以看之前的 Slide:

也可以查看分享视频:http://cloud.live.360vcloud.net/theater/play?roomid=2079

原文:https://www.h5jun.com/post/multiply7.html

这是今天早晨来公司无意中听到的题目,据说是某部门 C++ 工程师的面试题。作为爱思考的小前端,听到了也不免会想如果是自己遇到这样一道面试题该怎样做。

原文:https://www.h5jun.com/post/integer-break.html

今天是部门活动,去了石林峡,爬山累成狗。不过,在这么好的天气里,外出走走实在是一件有益身心健康的事情。爬山回来之后,身体虽疲惫,思路竟格外敏捷,正好将这篇文章一气呵成。

自然数拆分(Integer Break

给定一个自然数 n (n ≥ 2),将它拆分成不少于两个自然数之和,对这些拆分后的自然数求积,要求算出最大的乘积。

例如:

  • n = 2,得到 1(2 = 1 + 1)
  • n = 10,得到 36(10 = 3 + 3 + 4)

解题思路

这道题,咋一看之下,比前两期的题目似乎要难一些。因为对于一个较大的自然数,存在很多种拆分方法,怎么找到乘积最大的拆分方法呢?

原文:https://cooxa.com/post/count_bits.html

问题描述

给定一个非负整数 num,对于任意 i0 ≤ i ≤ num,计算 i 的二进制数中 1 的个数,将这些结果返回为一个数组。

原文:https://www.h5jun.com/post/power-of-four.html

这是 leetcode.com 的第二篇。与上一篇一样,我们讨论一道相对简单的问题,因为学习总讲究循序渐进。而且,就算是简单的问题,追求算法的极致的话,其中也是有大学问的。

“4”的整数次幂

给定一个32位有符号整数(32 bit signed integer),写一个函数,检查这个整数是否是“4”的N次幂,这里的N是非负整数。

例如:

  • 给定 num = 16,返回 true,因为 16 = 42
  • 给定 num = 5,返回 flase

附加条件: 你能够不用循环和递归吗?

原文:https://www.h5jun.com/post/counting-bits.html

小胡子哥 @Barret李靖 给我推荐了一个写算法刷题的地方 leetcode.com,没有 ACM 那么难,但题目很有趣。而且据说这些题目都来源于一些公司的面试题。好吧,解解别人公司的面试题其实很好玩,既能整理思路锻炼能力,又不用担心漏题 ╮(╯▽╰)╭。

长话短说,让我们来看一道题

统计“1”的个数

给定一个非负整数 num,对于任意 i,0 ≤ i ≤ num,计算 i 的值对应的二进制数中 “1” 的个数,将这些结果返回为一个数组。

例如:

当 num = 5 时,返回值为 [0,1,1,2,1,2]。

/**
 * @param {number} num
 * @return {number[]}
 */
var countBits = function(num) {
    //在此处实现代码
};

原文:https://www.h5jun.com/post/to-be-a-good-frontend-engineer

前端工程师是做什么的?

前端工程师是互联网时代软件产品研发中不可缺少的一种专业研发角色。从狭义上讲,前端工程师使用 HTML、CSS、JavaScript 等专业技能和工具将产品UI设计稿实现成网站产品,涵盖用户PC端、移动端网页,处理视觉和交互问题。从广义上来讲,所有用户终端产品与视觉和交互有关的部分,都是前端工程师的专业领域。

原文:https://www.h5jun.com/post/array-shuffle

Array.prototype.sort 方法被许多 JavaScript 程序员误用来随机排列数组。最近做的前端星计划挑战项目中,一道实现 blackjack 游戏的问题,就发现很多同学使用了 Array.prototype.sort 来洗牌。就连最近一期 JavaScript Weekly上推荐的一篇文章也犯了同样的错误。

洗牌

以下就是常见的完全错误的随机排列算法:

function shuffle(arr){
    return arr.sort(function(){
        return Math.random() - 0.5;
    });
}

以上代码看似巧妙利用了 Array.prototype.sort 实现随机,但是,却有非常严重的问题,甚至是完全错误。

原文:https://www.h5jun.com/post/left-pad

说明:之前关于算法复杂度的描述部分不严谨,引起某些同学的疑义,在这里特别声明了算法仅考虑循环次数,并不包括String的concat操作,由于v8引擎对字符串concat的时间复杂度接近于常量(测试代码),因此循环次数对算法效率的影响比较大,后面的benchmark测试也可以说明问题。最后,算法时间复杂度减小,并不一定快,不一样的指令耗费的时间不一样,所以实际工程中还需要以实际测试为准。特别感谢:@flowmemoString.prototype.repeat在V8和Chakra中的实现 —— 月影 2016-03-29

最近NPM社区出了一件大事,一个开发者对NPM公司不满,unpublish了自己的所有模块。其中包括被广泛使用的left-pad,导致Babel、ReactNative、Ember等大量工具构建失败。

这件事件本身不是我们这篇文章要讨论的主要内容,关注事件的同学可以移步知乎参与相关讨论。

本文讨论的内容是关于 left-pad 这个函数的实现。