Fork me on GitHub

开发笔记-01-sdk/api

开发笔记-01-sdk/api

前言

  • 本系列笔记用于记录刚入职,开发过程中遇到的问题
  • 本系列持续更新

1. api

  1. api
  • 研发人员A开发了软件A,研发人员B正在研发软件B。
  • 有一天,研发人员B想要调用软件A的部分功能来用,但是他又不想从头看一遍软件A的源码和功能实现过程,怎么办呢?
  • 研发人员A想了一个好主意:我把软件A里你需要的功能打包好,写成一个函数。你按照我说的流程,把这个函数放在软件B里,就能直接用我的功能了!

img

  • 其中,API就是研发人员A说的那个函数。

2. sdk

  • SDK 就是 Software Development Kit 的缩写,翻译过来——软件开发工具包。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。SDK被开发出来是为了减少程序员工作量的。
  • 有公司开发出某种软件的某一功能,把它封装成SDK(比如数据分析SDK就是能够实现数据分析功能的SDK),出售给其他公司做开发用,其他公司如果想要给软件开发出某种功能,但又不想从头开始搞开发,直接付钱省事。
阅读更多...

rpc-02-grpc

rpc-02-grpc

前言

  • RPC 框架的目标就是让远程服务调用更加简单、透明,RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(XML/Json/ 二进制)和通信细节。服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。

业界主流的 RPC 框架整体上分为三类:

  • 支持多语言的 RPC 框架,比较成熟的有 Google 的 gRPCApache(Facebook)的 Thrift;
  • 只支持特定语言的 RPC 框架,例如新浪微博的 Motan;
  • 支持服务治理等服务化特性的分布式服务框架,其底层内核仍然是 RPC 框架, 例如阿里的 Dubbo。
阅读更多...

rpc-01-简介

rpc-01-简介

前言

  • rpc并不是一种协议,而是一种开发的理念
  • 底层本质都是传输二进制流(TCP可以进行传输)

概念阐述

  • RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
  • 比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求 当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。

最终解决的问题:让分布式或者微服务系统中不同服务之间的调用像本地调用一样简单。

阅读更多...

Leetcode-671-二叉树第二小的节点

Leetcode-671-二叉树中第二小的节点

题目描述

  • 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 20。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。
  • 更正式地说,root.val = min(root.left.val, root.right.val) 总成立。

  • 给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1

示例 1:

示例2:

1
2
3
4
5
6
7
8
9
示例 1:
输入:root = [2,2,5,null,null,5,7]
输出:5
解释:最小的值是 2 ,第二小的值是 5 。

示例 2:
输入:root = [2,2,2]
输出:-1
解释:最小的值是 2, 但是不存在第二小的值。
阅读更多...

Leetcode-LCP007-传递信息

Leetcode-LCP007-传递信息

题目描述

  • 小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:
  • 有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0
    每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。
  • 传信息的关系是单向的(比如 A 可以向 B 传信息,但 B 不能向 A 传信息)。
  • 每轮信息必须需要传递给另一个人,且信息可重复经过同一个人
1
2
3
4
5
6
7
8
9
10
11
12
给定总玩家数 n,以及按 [玩家编号,对应可传递玩家编号] 关系组成的二维数组 relation。返回信息从小 A (编号 0 ) 经过 k 轮传递到编号为 n-1 的小伙伴处的方案数;若不能到达,返回 0。


示例 1:
输入:n = 5, relation = [[0,2],[2,1],[3,4],[2,3],[1,4],[2,0],[0,4]], k = 3
输出:3
解释:信息从小 A 编号 0 处开始,经 3 轮传递,到达编号 4。共有 3 种方案,分别是 0->2->0->4, 0->2->1->4, 0->2->3->4。

示例 2:
输入:n = 3, relation = [[0,2],[2,1]], k = 2
输出:0
解释:信息不能从小 A 处经过 2 轮传递到编号 2
阅读更多...

Leetcode-645-错误的集合

Leetcode-645-错误的集合

题目描述

  • 集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。
  • 给定一个数组 nums 代表了集合 S 发生错误后的结果。
  • 请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
1
2
3
4
5
6
7
8
9
示例 1:

输入:nums = [1,2,2,4]
输出:[2,3]

示例 2:

输入:nums = [1,1]
输出:[1,2]
阅读更多...

Leetcode-231-2的幂

Leetcode-231-2的幂

题目描述

  • 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
  • 如果存在一个整数 x 使得 n == 2^x ,则认为 n 是 2 的幂次方。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
示例 1:
输入:n = 1
输出:true
解释:20 = 1

示例 2:

输入:n = 16
输出:true
解释:24 = 16

示例 3:

输入:n = 3
输出:false

示例 4:

输入:n = 4
输出:true

示例 5:

输入:n = 5
输出:false
阅读更多...

Leetcode-872-叶子相似的树

Leetcode-872-叶子相似的树

题目描述

  • 请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列

    mark
  • 举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。

  • 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。

  • 如果给定的两个根结点分别为 root1root2 的树是叶相似的,则返回 true;否则返回 false

阅读更多...
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信