初级会员
  • 第 36480 位会员
  • deletelazy
  • 2019-05-08 21:02:51
  • Offline
  • 19 23

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 像下面这种场景,map也不太好实现 为了更具扩展性,每一层的节点按照priority排序,priority是节点的子节点(儿子节点,孙子节点等)注册的handler的数量,这样做有两个好处: - 被最多路径包含的节点会被最先评估。这样可以让尽量多的路由快速被定位。 - 有点像成本补偿。最长的路径可以被最先评估,补偿体现在最长的路径需要花费更长的时间来定位,如果最长路径的节点能被优先评估(即每次拿子节点都命中),那么所花时间不一定比短路径的路由长。下面展示了节点(每个-可以看做一个节点)评估的路径:从左到右,从上到下 可以看下这篇文章,讲得挺好的 [路由查找之Radix Tree](https://michaelyou.github.io/2018/02/10/%E8%B7%AF%E7%94%B1%E6%9F%A5%E6%89%BE%E4%B9%8BRadix-Tree/)
  • 一方面是节省内存,更重要是方便查找,像`/user/:id`这种参数会变的路由用`map`就不太好实现了
  • 评论了主题 关于切片的一个问题
    Go可以使用`s[x:y]`的形式访问数组,即使x,y超过了`len(s)`,但要求是`0<=x<=y<=cap(s)` 像`a=s[x:y]`赋值过后,`cap(a)`会变成`cap(s)-x` 而s指向的底层数组也一直都没变
  • #4 @chinahub Assign1里的s是相当于一个指针的拷贝,和main里的s是指向同一块内存的 所以在Assign1里修改s的值是会改变的main里的s的 但是Assign1里 ``` s = []int{6, 6, 6} ``` 就相当于Assign1里的指针s指向一个新的slice,只是指针改变了指向,内存里的值是没有改变的
  • @Yindaxian @huang2287832 感谢指出,已修正