前端开发者指南(2017)前端开发者是如何诞生的 第二部分:学习前端开发 自学 关于互联网/WEB 学习 Web 浏览器 学习域名系统(又叫 DNS) 学习 HTTP/Networks(包括 CORS 和 WebSockets) 学习网页寄存(通称虚拟主机) 学习前端开发 学习用户界面/交互设计 学习 HTML 和 CSS 学习搜索引擎优化 学习 JavaScript 学习 Web 动画 学习 DOM、BOM 和 jQuery 1.37 1.6.1.38 1.6.2 1.6.2.1 1.6.3 1.6.4 1.7 1.7.1 1.7.2 1.7.3 1.7.4 学习可访问性相关知识 学习 web/浏览器 API 学习 JSON (JavaScript 对象表示法) 学习 JS 模板 学习静态网页生成器 通过JS学习计算机科学 学习前端应用架构 学习数据(例如,JSON)API 的设计 学习 学习命令行的使用 学习 Node.js 学习 JS 模块系统 学习模块加载和打包工具 学习包管理工具 学习版本控制 学习构建及任务自动化技术 学习网站性能优化 学习测试 学习无头浏览器 学习离线开发 学习网络/浏览器/应用的安全 多平台开发学习 导向学习 前端课程 前端开发学习的起点 前端资讯、新闻站和播客 第三部分:前端开发工具 Doc/API 浏览工具 SEO0 码力 | 164 页 | 6.43 MB | 1 年前3
2019-2021 美团技术年货 前端篇CODE A BETTER LIFE 【前端篇】 前端 | 2021 1 让 Flutter 在鸿蒙系统上跑起来 1 FlutterWeb 在美团外卖的实践 14 FlutterWeb 性能优化探索与实践 36 设计稿(UI 视图)自动生成代码方案的探索 56 美团外卖终端容器无关化研发框架 74 一款可以让大型 iOS 工程编译速度提升 50% 的工具 96 从预编译的角度理解 中的实践 459 开源 React Native 组件库 beeshell 2.0 发布 473 React Native 在美团外卖客户端的实践 506 Android 静态代码扫描效率优化与实践 530 Probe:Android 线上 OOM 问题定位组件 560 活动 Web 页面人机识别验证的探索与实践 580 React Native 工程中 TSLint 静态检查工具的探索之路 715 让 Flutter 在鸿蒙系统上跑起来 作者:杨超 前言 鸿蒙系统 (HarmonyOS)是华为推出的一款面向未来、面向全场景的分布式操作系 统。在传统单设备系统能力的基础上,鸿蒙提出了基于同一套系统能力、适配多种终 端形态的分布式理念。自 2020 年 9 月 HarmonyOS 2.0 发布以来,华为加快了鸿 蒙系统大规模落地的步伐,预计 2021 年底,鸿蒙系统会覆盖包括手机、平板、智能0 码力 | 738 页 | 50.29 MB | 1 年前3
阮一峰 《ECMAScript 6入门》 第三版Netscape 公司,决定将 JavaScript 提交给国际标准化组织ECMA,希望这种语言能够成为国 际标准。次年,ECMA 发布262号标准文件(ECMA-262)的第一版,规定了浏览 器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是1.0版。 该标准从一开始就是针对 JavaScript 语言制定的,但是之所以不叫 JavaScript,有 两个原因。一是商标,Java 正式通过,成为国际标准。从2000年算起,这时已经 过去了15年。 部署进度 各大浏览器的最新版本,对 ES6 的支持可以查看kangax.github.io/es5-compat- table/es6/。随着时间的推移,支持度已经越来越高了,超过90%的 ES6 语法特性 都实现了。 Node 是 JavaScript 的服务器运行环境(runtime)。它对 ES6 的支持度更高。除 了那些默认打 上面命令的输出结果,会因为版本的不同而有所不同。 我写了一个工具 ES-Checker,用来检查各种运行环境对 ES6 的支持情况。访问 ruanyf.github.io/es-checker,可以看到您的浏览器支持 ES6 的程度。运行下面的 命令,可以查看你正在使用的 Node 环境对 ES6 的支持程度。 ECMAScript 6简介 10 $ npm install -g es-checker0 码力 | 679 页 | 2.66 MB | 1 年前3
新语⾔,新思维 解读⼀个并发问题的多种实现 - 陶召胜关键点 1 JavaScript 不不再有回调地狱,变异步为顺序化思维,程序更更加可读 2 Go ⾼高并发调度,通道让异步编程更更简单 3 Scala (1)简洁的异步编程 (2)AKKA:分布式计算框架 4 Java (1)fork/join (2)CompletableFuture (3)反应式编程(Reactive Programming ) next: JavaScript goroutine gorutine在逻辑处理理器器上执⾏行行 逻辑处理理器器, GOMAXPROCS gorutine OS线程, SetMaxThreads • Go运⾏行行时(runtime),有⾃自⼰己的 调度器器 • 可以将⼀一个goroutine分配给⼀一 个OS线程并使其执⾏行行,或者把 它挂起⽽而不不与OS线程关联。 处理理阻塞 逻辑处理理器器 P0 线 程 M2 正在运⾏行行的 正在运⾏行行的 G1 G2 G3 G4 逻辑处理理器器 P0 线 程 M3 正在运⾏行行的 G2 G3 G4 线 程 M2 被阻塞的 G1 如果是⽹网络I/O,会移到集 成了了⽹网络轮询器器的运⾏行行时 通道是gorutine沟通的桥梁梁 通道(channel) calculate 协程1 result calculate 协程2 result calculate0 码力 | 42 页 | 9.85 MB | 1 年前3
Hello 算法 1.1.0 JavaScript版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 10.5 重识搜索算法 . . . 时间效率:算法运行速度的快慢。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.0.0 JavaScript版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 10.5 重识搜索算法 . . . 时间效率:算法运行速度的快慢。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输0 码力 | 376 页 | 17.57 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 10.5 重识搜索算法 . . . 时间效率:算法运行时间的长短。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 图 2‑4 递归调用深度 在实际中,编程语言允许的递归深度通常是有限的,过深的递归可能导致栈溢出错误。 2. 尾递归 有趣的是,如果函数在返回前的最后一步才进行递归调用,则该函数可以被编译器或解释器优化,使其在空 间效率上与迭代相当。这种情况被称为尾递归(tail recursion)。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.0.0b5 JavaScript版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.5 重识搜索算法 . . . 时间效率:算法运行速度的快慢。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样我们才能将各种算法进行对比,从而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 图 2‑4 递归调用深度 在实际中,编程语言允许的递归深度通常是有限的,过深的递归可能导致栈溢出报错。 2. 尾递归 有趣的是,如果函数在返回前的最后一步才进行递归调用,则该函数可以被编译器或解释器优化,使其在空 间效率上与迭代相当。这种情况被称为「尾递归 tail recursion」。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。0 码力 | 375 页 | 30.68 MB | 1 年前3
Hello 算法 1.0.0b1 JavaScript版时间效率,即算法的运行速度的快慢。 ‧ 空间效率,即算法占用的内存空间大小。 数据结构与算法追求“运行速度快、占用内存少”,而如何去评价算法效率则是非常重要的问题,因为只有知 道如何评价算法,才能去做算法之间的对比分析,以及优化算法设计。 2.1.2. 效率评估方法 实际测试 假设我们现在有算法 A 和 算法 B ,都能够解决同一问题,现在需要对比两个算法之间的效率。我们能够想到 的最直接的方式,就是找一台计算机, 难以排除测试环境的干扰因素。硬件配置会影响到算法的性能表现。例如,在某台计算机中,算法 A 比算法 B 运行时间更短;但换到另一台配置不同的计算机中,可能会得到相反的测试结果。这意味着我们需要在各种机 器上展开测试,而这是不现实的。 展开完整测试非常耗费资源。随着输入数据量的大小变化,算法会呈现出不同的效率表现。比如,有可能输入 数据量较小时,算法 A 运行时间短于算法 B ,而在输入数据量较大时,测试结果截然相反。因此,若想要达 === File: time_complexity.js === /* 平方阶(冒泡排序) */ function bubbleSort(nums) { let count = 0; // 计数器 // 外循环:待排序元素数量为 n-1, n-2, ..., 1 for (let i = nums.length - 1; i > 0; i--) { // 内循环:冒泡操作 for (let0 码力 | 185 页 | 14.70 MB | 1 年前3
JavaScript 正则表达式迷你书 老姚 - v1.1match(regex)[0]); // => id="container" 当然,这样也会有个问题。效率比较低,因为其匹配原理会涉及到“回溯”这个概念(这里也只是顺便提一 下,第四章会详细说明)。可以优化如下: var regex = /id="[^"]*"/ var string = ''; console.log(string regex.test("\1\2\3\4\5\6\7\8\9") ); console.log( "\1\2\3\4\5\6\7\8\9".split("") ); Chrome 浏览器打印的结果(不同的浏览器和版本,打印的结果可能不一样): 3.3.4. 分组后面有量词会怎样? 分组后面有量词的话,分组最终捕获到的数据是最后一次的匹配。比如如下的测试案例: JavaScript 正则表达式迷你书 和判空。那样的话,也许那个错误正则也就够用了。也可以进一步改写成: /^[+-]?(\d+)?(\.)?\d+$/,这样我们就需要考虑可读性和可维护性了。 6.4. 效率 保证了准确性后,才需要是否要考虑要优化。大多数情形是不需要优化的,除非运行的非常慢。什么情形正 则表达式运行才慢呢?我们需要考察正则表达式的运行过程(原理)。 正则表达式的运行分为如下的阶段: • 1. 编译; • 2. 设定起始位置; •0 码力 | 89 页 | 3.42 MB | 11 月前3
共 20 条
- 1
- 2













