不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

缘起

2022.8.24(周三)晚上,我参加了Zadig的线下MeetUp。

而与Zadig结缘是因为关注了一个云原生公众号,他们推送了有关Zadig的消息后,我想,既然在成都,而且是晚上,那就去参加一下呗,见一见各位大佬,结果确实是大佬云集的一次线下聚会。

缘聚

周三晚上,我和周如约而至在成都市大跃啤酒。

阅读全文 »

题目

剑指 Offer 32 - I. 从上到下打印二叉树

题解

队列

  • 初始化队列queue和结果数组res,从二叉树根节点3开始
  • 先将3推入到队列queue中,看3有没有左子树和右子树
  • 有的话,将3从队列queue中取出,放入结果数组res的第一位,此时res = []int{3}
  • 访问3的左子树节点9,将9推入到队列queue
  • 此时看9有没有左子树和右子树,没有,将9从队列queue中取出放入结果数组res中,此时res = []int{3,9}
  • 访问3的右子树节点20,将20推入到队列queue
  • 此时看20有没有左子树和右子树,有,将左子树15推入队列queue
  • 看15有没有左子树和右子树,没有,将队列中的20,15依次取出放入结果数组res,此时res = []int{3,9,20,15}
  • 访问20的右子树7,发现7没有左子树和右子树,将7推入进队列queue中,然后取出放入res,此时res = []int{3,9,20,15,7}
阅读全文 »

题目

剑指 Offer 26. 树的子结构

题解

一次遍历

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//Java
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSubStructure(TreeNode A, TreeNode B) {
// 一开始如果 A 或者 B为空,直接返回false
// 因为题目约定空树不是任意一个树的子结构
if (A == null || B == null) return false;

// 接下来考虑以下几种情况
// A的根节点 VS B的根节点
// 1、A的根节点和B的根节点相同情况,依次比较它们的子节点
// 2、A的根节点和B的根节点不相同情况,A的左子树 VS B的根节点
// 3、A的根节点和B的根节点不相同情况,A的右子树 VS B的根节点
return isSub(A,B) || isSubStructure(A.left,B) || isSubStructure(A.right,B);
}

boolean isSub(TreeNode A,TreeNode B) {
// A和B 不匹配的情况有很多,我们需要一开始去找它们完全匹配的情况
// 即遍历完B,直接为null,说明B的全部节点和A的子结构匹配上
if (B == null) return true;

// A中的节点为空,但B中的节点不为空,说明不匹配
if (A == null) return false;

// A和B都不为空,但数值不同,说明不匹配
if (A.val != B.val) return false;

// 此时,当前这个点是匹配的,继续递归判断左子树和右字树是否 分别匹配
return isSub(A.left,B.left) && isSub(A.right,B.right);
}
}

数据绑定介绍

Gin提供了两类绑定方法:

Must bind

  • Methods: Bind,BindJSON,BindXML,BindQuery,BindYAML
  • 这些方法属于MustBindWith的具体调用。 如果发生绑定错误,则请求终止,并触发 c.AbortWithError(400, err).SetType(ErrorTypeBind) 。响应状态码被设置为 400 并且Content-Type被设置为text/plain; charset=utf-8 。 如果您在此之后尝试设置响应状态码,Gin会输出日志[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 422 。 如果您希望更好地控制绑定,考虑使用ShouldBind等效方法。

Should bind

阅读全文 »

gin框架介绍

gin是用go语言开发的一个web框架,简单易用,是一个轻量级框架。

为什么选择Gin

  • 1.运行响应非常快
  • 2.快速开发
  • 3.文档齐全
  • 4.社区活跃

特性

阅读全文 »