240 发简信
IP属地:山东
  • 现在的版本确实改了,看的是之前的版本,1.9 还是 1.8 忘了。

    // 通过给定的 path 从 handler hash 结构中查找 handler
    // 最长模式优先
    func (mux *ServeMux) match(path string) (h Handler, pattern string) {
    var n = 0
    // 遍历
    for k, v := range mux.m {
    if !pathMatch(k, path) {
    continue
    }
    // len(k) > n 即还能找到更长的 pattern,满足最长模式优先
    if h == nil || len(k) > n {
    n = len(k)
    // 返回 handler
    h = v.h
    pattern = v.pattern
    }
    }
    return
    }

    // 匹配
    func pathMatch(pattern, path string) bool {
    if len(pattern) == 0 {
    // should not happen
    return false
    }
    n := len(pattern)
    if pattern[n-1] != '/' {
    return pattern == path
    }
    // 是否匹配,mux 的 key(pattern)和给定的 path比较,按照最长原则
    return len(path) >= n && path[0:n] == pattern
    }

    golang echo 框架路由分析

    几个问题 在分析之前,带着问题去查找答案。 官方 http 包已经提供了server的功能,为什么要用框架? 路由注册 简单的程序 我们来看看 echo 的三种匹配模式和优先...

  • 120
    dubbogo中的TPS Limit设计与实现

    前言 Apache Dubbo是由阿里开源的一个RPC框架,除了基本的RPC功能以外,还提供了一整套的服务治理相关功能。目前它已经是Apache基金会下的顶级项目。 而dub...

  • 怎么设置?恰好一次做不到吧

    面试官问:为什么kafka这么快,又能保证消息不丢失?

    小菜鸡最近在疯狂面试中,就是为了能拿到一份满意的offer,这不上周又去头条受虐了。 面试过程中,由于小菜鸡的充分准备(letcode各种刷),各种算法题不在话下,顺利的通过...

  • 120
    最大子数组问题的几种解法

    分治算法 最近看到《算法导论》的分治策略一节,看到的一个题目可以优化引申出来多种解法,同时也可以帮助理解分治策略的化整为零和动态规划的动态转移方程的思维。 最大子数组问题 最...

  • Go:实现经典排序算法

    经典排序算法 排序算法在时间复杂度上分为三个档次:O(n),O(nlgn),O(n^2) 排序算法的稳定性。如果待排序的列表中存在相同排序值的元素,在排序前后相同排序值的元素...

  • 120
    golang sync.Pool 分析

    在 echo 官网的手册上可以看到 echo 框架的路由性能主要依赖于 radix tree 和 sync.pool 对内存的复用。 Echo 的路由基于 radix tre...

  • 120
    golang pprof 使用简介

    golang 的 pprof 是性能分析的神器,包括交互命令行和 UI 图像化的分析。主要来看看 pprof 支持哪些功能,以及我们如何用他来分析性能。 pprof 使用 使...

  • 120
    golang echo 框架路由分析

    几个问题 在分析之前,带着问题去查找答案。 官方 http 包已经提供了server的功能,为什么要用框架? 路由注册 简单的程序 我们来看看 echo 的三种匹配模式和优先...

  • golang http 路由

    来看看 http 自带的路由功能。 阅读前留几个问题 如果要自己实现路由,该怎么做? 默认路由的结构,搜索方式是什么? 例子 我们经常在示例中看到如下两种写法,示例来自于 s...

  • golang new 函数的使用

    今天看到一道题,先来看看题目 问这个为什么会 panic? 其实很简单,从报错内容可以看出是空指针引用,所以问题出在这里 为什么这么改就可以呢,我们看看定义,大致意思是,ne...

  • 120
    golang sql 包连接池分析

    golang 在使用 mysql 的时候会用到 database/sql 这个库,每次都在黑盒使用它,有必要来梳理一下整个请求流程和细节,以免以后碰到问题会有解决的思路。 阅...

  • 120
    golang 并发原语[草稿]

    总结一下昨天 鸟窝 在《Go 同步和并发设计模式》 分享的 golang 并发开发相关的知识。主要分为四个部分,同步原语,分布式同步原语,channel,内存模型。这里主要从...

  • golang 队列和栈的实现

    在 python 中实现队列或者栈非常简单,用list就可以用来做一个简单的栈和队列,如下 那么,在 golang 中我们要怎么实现这种简单的队列和栈呢。这个基本和 pyth...

  • golang http server 源码阅读

    http 包怎么用 使用 golang 的 http 包可以很简易的实现一个 web 服务,如下 main.go 那如果我想看看整个服务是怎么实现的,该怎么办呢?Listen...

  • Go中的HTTP请求处理概述

    原文地址:官方文档 context译文地址:https://github.com/watermelo/dailyTrans译者:咔叽咔叽\译者水平有限,如有翻译或理解谬误,烦...

  • 好文待看

    1,如何勾结grpc微服务https://medium.com/@amsokol.com/tutorial-how-to-develop-go-grpc-microservi...

  • HTTP中间件的实现和使用

    在构建 Web 应用程序时,可能需要为很多(甚至所有)的 HTTP 请求运行一些共有的函数。在执行一些繁重的处理之前,你可能想给每个请求记录日志,用 gzip 压缩每个返回数...