函数式编程递归优化专题-TOC和Trampolines
递归 递归是FP中重要组成部分。递归的重点: 基本条件,满足基本条件,递回停止,也可说是终止条件。 若未满足,呼叫自己。 每一次都逐渐往基本条件的方向收敛。 递归相较于迭代来说,代码更精简。递归是用代码去描述what,而迭代是用代码去描述how。例如对于斐波那契数列,两种写法如下: // 递归解法 function fib(n) { if (n <= 1...
递归 递归是FP中重要组成部分。递归的重点: 基本条件,满足基本条件,递回停止,也可说是终止条件。 若未满足,呼叫自己。 每一次都逐渐往基本条件的方向收敛。 递归相较于迭代来说,代码更精简。递归是用代码去描述what,而迭代是用代码去描述how。例如对于斐波那契数列,两种写法如下: // 递归解法 function fib(n) { if (n <= 1...
函数柯里化定义:将一个多参数函数拆解成一串连续的链式函数,每个小函数接受单一参数Arity = 1,并return另一个函数接受下一个参数。一种特殊的偏函数。 这种技巧,就叫Currying (柯里化)。 柯里化实现: function curry(fn, argsLength = fn.length) { let args = [] // 保留函数参数 // 返回一...
Function Composition 函数组合是FP中的重要组成部分。它是更强大的抽象化的工具,能够把命令式的how(指令式编程)抽象为可读性更好的声明式,让程式专注在what(描述式编程)。 通常,input会经过很多fn,从而转换为程序所需要的数据。可以将「很多fn」作为一个新函数,供使用者调用,从而像搭建积木一样,组装起完整程序。 因为JS只能return单值的特性,所...
FP的要求 在函数式编程语言世界里面: function必须是一等公民。一等公民是指function可以作为一个function参数,也可以作为function返回值,也可以赋值给变量或者其他对象属性。 JavaScript中,function就是一等公民。 引用透明。同样的in params,不论多少次,返回必须要一样,没有造成副作用(si...
什么是 GraphQL? 它是一种 api 查询语言。使用者按照规范描述数据结构,可以来获取所需数据;开发者需要做的是编写获取数据的响应函数,以及声明查询字段的类型。 GraphQL 的用途 主要用于查询和聚合数据。开发者只需要声明查询字段类型,以及每个字段数据的获取函数。前端通过 graphql 语法,获取自己想要的任何字段。 这样就不需要每个字段或者新的业务模块数据,再开一个 r...
位图(bitmap)介绍 什么是位图? 用 1 个(或多个)bit 位,来表示某个值。 位图的好处? 1、使用 bit 位,相较于使用原生数据结构,占用内存更少。 例如,对于 0、6 这 2 个数字,一个 int 类型的数字,是 4 个字节,也就是 2*8=16 个 bit 位。如果用 bitmap 表示呢?只需要申请一个字节,一个字节有 8 个 bit 位,初始全部置 0,从最低...
什么inversify 它是JavaScript最大的DI库。在项目中引入inversify,可以使用Ioc和DI的方式来开发项目,开发体验和NestJS非常相近。 具体的配置可以参考 inversify的中文文档。 开发体验 @cloudbase/lcap-business-sdk 是基于此开发的行业侧工具库,里面封装常见的日志、缓存、并发控制台、上下文、文件存储等基础模块,也有像...
背景 本次的主题是TCB云开发网关的架构设计,分享业务型网关的技术选型、功能设计、优化演进等方面的经验。目前云开发网关的每日请求量20亿+,压测时可承受百亿峰值流量,系统整体QPS平均在 45325。 在阅读之前,需要准备具备或者了解一些前置知识: 使用/了解过 Serverless 开发/了解过 网关 or BFF 开发/了解过 NodeJS and (Express ...
技术复杂度 对于一个直播间(头部主播): 在线人数100w 弹幕频率 1000条/秒 那么服务端推送频率就是:100w * 1000条/秒 = 10亿条/秒 如果是N个直播间,那么推送频率是:10N亿条/秒 方案对比:拉 vs 推 (客户端)拉模式 (服务端)推模式:基于websocket协议,可以看Web端通信-websocket协议(已整理)了解ws协议。 ...
基础:中文分词 对于中文的全文索引,需要借助「分词算法」,将句子拆分为词语。再根据词语建立字典树。比较成熟的分词库是「jieba 分词」: nodejs 版本 python 版本 方法一:SQL的全文索引与 Like 原理 全文索引的单位是「词语」,Like 的基本单位是「字符」。比如对于“我爱中国”这句话,如果是全文索引,“我”、“中国”、“爱”都可以匹配到,但是“爱...