go源码分析(三) 使用go http包开发web时遇到的坑之卸载插件,重启插件管理,仍然可以访问已经卸载的插件
2024-10-19 21:23:37
问题描述:
web页面下发重启指令后,对卸载插件的处理不完整(虽然列表已经没有插件描述,但是在HandleFunc的路由列表中依然存在)
我们需要清空路由列表map
路由列表结构见代码:
net/http/server.go
type ServeMux struct {
mu sync.RWMutex
m map[string]muxEntry
es []muxEntry // slice of entries sorted from longest to shortest.
hosts bool // whether any patterns contain hostnames
}
由于map是私有变量,我们不能在自己的程序中实现清空的动作,同时这个变量使用范围可能很广泛,不能确定,所以我们采取给golang标准库中进行添加方法
将路由列表清空,再重新添加路由列表
// 清除已经绑定的路由表 目前只测试了HandeFunc的
func CleanServeMuxMap(){
for k,_ = range defaultServeMux.m {
delete(defaultServeMux.m,k)
}
}
参见 https://github.com/Bin-DuS/go/commit/4d3ee4568c2d6cfff11dc76409084b82468af5a5 该仓库fork自golang/go仓库
最新文章
- 用SignalR 2.0开发客服系统[系列5:使用SignalR的中文简体语言包和其他技术点]
- 算法系列:寻找最大的 K 个数
- Eloquent ORM笔记
- 使用mybatis-generator自动生成model、dao、mapping文件
- NYOJ之算菜价
- 7个惊艳的HTML5 Canvas动画效果及源码
- 双程动态规划 nyoj61
- linux下,FTP服务相关
- java应用程序远程登录linux并执行其命令(ssh jar包)
- Linux云自动化运维第二课
- MapReduce框架Hadoop应用(一)
- 设计模式-模板方法模式(Head First)
- Python网络编程(2)-粘包现象及socketserver模块实现TCP并发
- Java多线程访问共享资源类及类之间关系设计
- Eclipse安装springsource-tool-suite插件及spring helloworld入门实例
- 前端工程化系列[01]-Bower包管理工具的使用
- jQuery-2.DOM---节点的复制与替换
- Office web apps 打补丁后(安装PDF在线浏览) 错误解决
- centos6.5下安装mysql5.6
- SAP接口的调用
热门文章
- 基于Jquery的textarea滚动条插件(原创)
- unittest(7)-作业- 全局变量传递cookie
- Ionic3学习笔记(九)关于 Android 端软键盘弹出后界面被压缩的问题
- Soulwail
- 天哪!毫无思绪!令人感到恐惧的数学(水题?)(TOWQs)
- Vue.observable()使用方法
- 6——PHP顺序结构&&字符串连接符
- unittest实战(三):用例编写
- AI:拿来主义——预训练网络(二)
- 大厂面试官问你META-INF/spring.factories要怎么实现自动扫描、自动装配?