DongYuanxin's Blog

函数式编程递归优化专题-TOC和Trampolines

递归 递归是FP中重要组成部分。递归的重点: 基本条件,满足基本条件,递回停止,也可说是终止条件。 若未满足,呼叫自己。 每一次都逐渐往基本条件的方向收敛。 递归相较于迭代来说,代码更精简。递归是用代码去描述what,而迭代是用代码去描述how。例如对于斐波那契数列,两种写法如下: // 递归解法 function fib(n) { if (n <= 1...

函数式编程中的Function Composition

Function Composition 函数组合是FP中的重要组成部分。它是更强大的抽象化的工具,能够把命令式的how(指令式编程)抽象为可读性更好的声明式,让程式专注在what(描述式编程)。 通常,input会经过很多fn,从而转换为程序所需要的数据。可以将「很多fn」作为一个新函数,供使用者调用,从而像搭建积木一样,组装起完整程序。 因为JS只能return单值的特性,所...

在Nodejs中使用GraphQL

什么是 GraphQL? 它是一种 api 查询语言。使用者按照规范描述数据结构,可以来获取所需数据;开发者需要做的是编写获取数据的响应函数,以及声明查询字段的类型。 GraphQL 的用途 主要用于查询和聚合数据。开发者只需要声明查询字段类型,以及每个字段数据的获取函数。前端通过 graphql 语法,获取自己想要的任何字段。 这样就不需要每个字段或者新的业务模块数据,再开一个 r...

十亿级日流量--微信云开发网关架构设计

背景 本次的主题是TCB云开发网关的架构设计,分享业务型网关的技术选型、功能设计、优化演进等方面的经验。目前云开发网关的每日请求量20亿+,压测时可承受百亿峰值流量,系统整体QPS平均在 45325。 在阅读之前,需要准备具备或者了解一些前置知识: 使用/了解过 Serverless 开发/了解过 网关 or BFF 开发/了解过 NodeJS and (Express ...

分词搜索的多种解决思路

基础:中文分词 对于中文的全文索引,需要借助「分词算法」,将句子拆分为词语。再根据词语建立字典树。比较成熟的分词库是「jieba 分词」: nodejs 版本 python 版本 方法一:SQL的全文索引与 Like 原理 全文索引的单位是「词语」,Like 的基本单位是「字符」。比如对于“我爱中国”这句话,如果是全文索引,“我”、“中国”、“爱”都可以匹配到,但是“爱...