本打算学一波快速排序,查了查资料,吓一大跳,说阮一峰大神的快排是不对的,以此开始了一大波大神针对这个问题的各种观点。...感兴趣的可以看看知乎这篇帖子: https://www.zhihu.com/question/276746146/answer/390729075 不管对还是错,阮一峰大神的快排思路是对的: 在数据集之中...对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。...先看看阮一峰大神的代码: var quickSort = function(arr) { if (arr.length <= 1) {return arr; }//判断数组,一个长度直接返回...但是阮一峰大神只是提供思路,这些问题都是能优化的。当时ES6也没出来,以后还会有更多的数组扩展,那不是能更简单的实现快速排序,但是快速排序的思路是不变的。
首先上交阮一峰老师的github地址,一共有15个demo,我们一个一个的进行分析,结合上文所学的知识! 其中有一些内容,我做了修改,我是先看一遍然后从新敲了一遍。.../main2.js' }, output: { filename: '[name].js' } }; 入口这里使用了对象语法 使用占位符确保每个文件具有唯一的名称 Demo3 loader...Webpack的官方文档有一个完整的加载器列表。...Webpack对CSS模块化提供了非常好的支持,只需要在CSS loader中进行简单配置即可,然后就可以直接把CSS的类名传递到组件的代码中,这样做有效避免了全局污染。...Demo7 Webpack有一个插件系统来扩展其功能。
一、为什么图像是波? 我们知道,图像由像素组成。下图是一张 400 x 400 的图片,一共包含了 16 万个像素点。 ?...如果把每一行所有像素(上例是400个)的红、绿、蓝的值,依次画成三条曲线,就得到了下面的图形。 ? 可以看到,每条曲线都在不停的上下波动。...对比一下图像就能发现,曲线波动较大的地方,也是图像出现突变的地方。 ? 这说明波动与图像是紧密关联的。图像本质上就是各种色彩波的叠加。...再看一个例子。 ? 上图有三根曲线,黄线是高频波动,红线是低频波动。它们可以合成为一根曲线,就是绿线。 ?...上图中,绿线进行低通滤波和高通滤波后,得到两根黑色的曲线,它们的波形跟原始的黄线和红线是完全一致的。
这没有统一的规定,但是常见的操作是读取一个集合,比如GET /articles(读取所有文章),这里明显应该是复数。...下面是一个例子。 ?...下面是一个例子。 ? 3.3 提供链接 API 的使用者未必知道,URL 是怎么设计的。一个解决方法就是,在回应中,给出相关链接,便于下一步操作。...HATEOAS 的格式没有统一规定,上面例子中,GitHub 将它们与其他属性放在一起。更好的做法应该是,将相关链接与其他属性分开。 ?...作者:阮一峰 http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html
一、单体软件要理解微服务,首先需要理解软件架构的演变。早期的软件,所有功能都写在一起,这称为单体架构(monolithic software)。整个软件就是单一的整体,彷佛一体化的机器。...面向服务架构"就是把一个大型的单体程序,拆分成一个个独立服务,也就是较小的程序。每个服务都是一个独立的功能单元,承担不同的功能,服务之间通过通信协议连在一起。这种架构有很多优点。...(1)每种服务功能单一,相当于一个小型软件,便于开发和测试。(2)各个服务独立运行,简化了架构,提高了可靠性。(3)鼓励和支持代码重用,同一个服务可以用于多种目的。...它依然使用"服务"作为功能单元,但是变成了轻量级实现,不需要新增服务器,只需要新建容器(一个进程),所以才叫做"微服务"。一个微服务就是一个独立的进程。...它和容器技术、云服务一起,一定会在未来的软件开发中,扮演越来越重要的角色。
作者 | 阮一峰 整理 | AI科技大本营(rgznai100) 眼下最热门的技术,绝对是人工智能。 人工智能的底层模型是"神经网络(neural network)。...上图的圆圈就代表一个感知器。它接受多个输入(x1,x2,x3...),产生一个输出(output),好比神经末梢感受各种外部环境的变化,最后产生电信号。...二、感知器的例子 下面来看一个例子。城里正在举办一年一度的游戏动漫展览,小明拿不定主意,周末要不要去参观。 他决定考虑三个因素。 天气:周末是否晴天? 同伴:能否找到人一起去?...确定输入和输出 找到一种或多种算法,可以从输入得到输出 找到一组已知答案的数据集,用来训练模型,估算w和b 一旦新的数据产生,输入模型,就可以得到结果,同时对w和b进行校正 可以看到,整个过程需要海量计算...然后,找到一种或多种图像比对算法,作为感知器。算法的得到结果是一个概率,比如75%的概率可以确定是数字1。这就需要设置一个阈值(b)(比如85%的可信度),低于这个门槛结果就无效。
想着搞一下 webpack 的构建优化,网上看到一些方法说是要 webpack4 及以上的才能用。...使用 npm 包执行器 npx 可以自动找到对应的包执行命令(一般安装了npm会自动安装npx) 2....直接命令行执行 npx eslint --fix --ext .js,.vue src 2....在 package.json 添加 script 命令 // package.json "scripts": { "lint": "eslint --fix --ext .js,.vue...如果只是一次性使用,直接使用 npx 就好;如果是项目上需要多次使用,封装到 scripts 就更方便啦 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169191
给大家报告下,阮一峰老师的《C语言入门教程》于 2021 年 9 月 7 日上线了! 对,和往常一样,这个教程是开源的,采用知识共享许可证,源码托管在 GitHub,大家可以自由使用。...而阮一峰老师的作品,想必大家都有所耳闻,硬核的同时,又通俗易懂,深受广大读者的喜欢。 福音啊!我要狂吹阮一峰了老师的这份《C语言入门教程》。 考虑到很多小伙伴喜欢 PDF 版的,我就立马给准备了!...那配上阮一峰老师的这个在线文档教程,可以说是完美! 我对这份教程是非常满意的,该讲的地方都讲到了,示例也给了很多,对初学者来说,完全够用了。...阮一峰老师在写这份《C语言入门教程》的时候还是花费了很多心思的,因为 C 代码的写法实在是太自由了,而平常工作中又确实很少有机会写 C 代码,所以前前后后花了 6 个多月的时间。...OK,今天就简单聊到这里,希望阮一峰老师的这份教程能帮助到大家。我们下期见~
本文作者:花果山瑞哥[1] 哈喽,大家好,今天给大家推荐一个学习 vue3 源码的最佳利器 也是阮一峰老师在第 144 期周刊[2]里面推荐的 ?...真让人头秃 第一次看到这个函数的同学肯定是一脸懵逼,这要怎么看嘛?我的秀发还能不能保住了?可能这个时候就有好多同学已经被劝退了(悄咪咪的关闭了 vscode) 说的是不是你 -_-!...那其实在社区里面就会有这种类型的库,只实现库的核心逻辑,可以让同学们更快速的理解库的核心逻辑,比如一个 mini 版本 但是在社区里面我并没有发现这么一个 mini 版本,所以我就索性撸起袖子自己上 为了社区...就是自己把功能实现一遍,这对于我自己的收获也是巨大的。...example 是放置了一些 demo lib 是 build 之后的文件(demo 实际执行的文件) src 是核心逻辑 Example 的食用 大家一开始的时候可以先从 example 里面的 demo
因此我写了一个插件typescript-magic-variable-plugin来使用它们, 源代码已经放到了GitHub上: https://github.com/acrazing/t…....使用方法 首先你需要安装这个包: npm install -D typescript-magic-variable-plugin 修改一下你的tsconfig: { "compilerOptions...console.log(__CLASS__) } } 用ttypescript来编译你的项目, 注意这里不能用typescript, 因为没有开放transform接口, 需要全局安装一下
Varlet 不仅获得阮一峰老师的推荐,同时也得到了国内外开源技术社区的认可,其中 Vite 核心团队的 Antfu 大神也接受了这个组件库的 PR。另外,Vue.js 的作者尤雨溪推荐了该项目。...组件属性高亮 支持 SSR 支持 Typescript 确保90%以上单元测试覆盖率,提供稳定性保证 ️ 支持暗黑模式 安装 安装 Varlet 非常简单,通过 CDN 引入的方式,引入 varlet.js...> const app...App.vue' import Varlet from '@varlet/ui' import { createApp } from 'vue' import '@varlet/ui/es/style.js...,更有一些资源收藏爱好者会分享一些优质的学习资料。
---- 「这是我参与2022首次更文挑战的第27天,活动详情查看:2022首次更文挑战」 理解 什么是模块/模块化 将一个复杂的程序按照一定的规范,封装成几个块(文件),并进行组合在一起。...还有,块的内部数据/实现是私有的,只向外部暴露一些接口(方法)与外部其它模块进行通信。 模块化的进化史 最早 最早,我们的js是写到一个文件中,想怎么写怎么写。...比如不需要轮播图的模块,我们不需要引入 模块化的好处 避免命名冲突(减少命名空间污染) 更好的分离,按需加载 更高复用性 高可维护性 页面引入script 当我们需要引入多个js...如下,如果1.js中用到jquery.js中的内容,这个加载顺序是不可以换的。...依赖模糊 难以维护 因此也就需要模块化规范
= { x: a, y: b } // or exports.x = a; exports.y = b; // b.js const a = require('..../a') console.log(a); // { a: 1, b: 2 } ESM 直到2015,es6定义了js模块标准(ESM),使之有了模块的概念。.../b.js' console.log(a) // 1 console.log(b); // 2 // b.js let a = 1; let b = 2; export { a, b } <!...模块变量类型检查:js是动态语言,不会在代码执行前检查类型错误。...所以就诞生了模块打包工具(module bundle): 解决模块间的依赖 使其打包后能在浏览器上正常运行 比较出名的: webpack rollup parcel等 AMD 在ES6模块出现之前,AMD(异步模块定义)是一种很热门地浏览器模块化方案
工程发展到一定阶段,要出现的必然会出现。 前端三剑客的模块化展望 从 js 模块化发展史,我们还看到了 css html 模块化方面的严重落后,如今依赖编译工具的模块化增强在未来会被标准所替代。...有了 ES2015 Modules 之后,JS 开发者终于可以像 Java 开始者十年前一样使用一致的方式愉快的互相引用模块。...只要遵循了最新模块化规范,就可以使项目具有最好的可维护性吗? Js 模块化的目的是支持前端日益上升的复杂度,但绝不是唯一的解决方案。...一句话,模块化仍在路上。js 模块化的矛头已经对准了 css 与 html,这两位元老也该向前卫的 js 学习学习了。...未来 css、html 的模块化会自立门户,还是赋予 js 更强的能力,让两者的模块化依附于 js 的能力呢?
阮一峰的个人网站 阮一峰,2014年出版《ECMAScript 6入门》 JavaScript 秘密花园 三生石上 囧克斯 勾三股四 w3cplus 大漠,就职淘宝,CSS3、CSS处理器和Drupal...强大的css3 Wayne Zhu 深入了解 CSS3 新特性 周 翔 Flex 布局教程:语法篇 阮一峰 Flex 布局教程:实例篇 阮一峰 如何编写轻量级 CSS 框架 叙帝利 CSS 专业技巧 一个帮你提升...React Router 使用教程 阮一峰 React Native 中文版 极客学院 React.JS教程 PHPERZ React.js 2016 最佳实践 腾讯全端 AlloyTeam 团队 Blog...Express 基于 Node.js 平台,快速、开放、极简的 web 开发框架 Express框架 阮一峰 Koa 框架 阮一峰 Koa Koajs 中文文档 十七、RequireJS 网站 说明...Javascript模块化编程 阮一峰 RequireJS学习 叶小钗 RequireJS入门 Snandy RequireJS 入门指南 参与翻译 NCThinker, 姜鹏飞, super0555
一统天下:ES6 Module 1. 什么是模块化? 模块化开发就是封装细节,提供使用接口,彼此之间互不影响,每个模块都是实现某一特定的功能。...传统模块化阶段 这一阶段,WEB 开发人员主要是利用 JS 语言的闭包、原型、函数作用域等特性,减少对全局命名空间的污染;方式方法各有不同,但结果都差不多,比较混乱... 3.1....CommonJS Node.js的诞生,使JavaScript扩展到了服务器端, 为了让JavaScript在服务器端能跟Java、Phyton一样编写大型程序,于是有了CommonJS模块化规范;...CommonJS是针对服务器端(非浏览器环境)的JavaScript开发,是Node.js的默认模块化规范; (2)....import): 总结一下 传统模块化手段:通过JS的闭包、对象、自执行函数等语言特性,避免模块间的命名冲突,提高模块的内聚性,但无统一编程标准,也无法把模块间的依赖关系描述清晰; CommonJS
最近在看一本书,里面提到js的模块化,觉得很有必要,所以记录下来 Game.js /** * This is the main class that handles the game life cycle...* 但是如果背景是一张图片,直接就可以用这个方法 */ _h._clearCanvas = function() { this...._canvas.height); }; ---- boardRenderer.js /** * 这个类负责绘制,棋盘,球 * @param context the 2d context to draw...* ps.变量名全大写表示这是常量,这是一个js程序员之间的约定,表达为 CAPITAL_CASED。..._currentPlayer; //检查这一列是否可以放球 if (column = this.
领取专属 10元无门槛券
手把手带您无忧上云