zoukankan      html  css  js  c++  java
  • goloader

    github地址:https://github.com/dearplain/goloader

    这里有以前的一些思路:http://www.cnblogs.com/dearplain/p/8145985.html,不过改了好多,具体还是要看代码。

    这个动态加载库是很有意思的项目,它直接重用了golang编译器的输出,不需要自己写编译器,就能支持所有golang的语言特征,免费使用编译器的优化。

    因为这个库只进行符号重定位,和提供runtime信息,所有这些逻辑是很少改动的,这样使得这个库兼容能力特别强,比如golang出新版本时候,只需要做很少的改动或者不改动,就能支持新版本。

    同时它也重用了不少go的内部库,特别是读取object文件的库,这些重用使得它变得轻量和便于维护。

     

    它对比plugin的优势,一是它是可以卸载加载的代码,二是它复用了runtime,不像plugin那么大,三是它同时支持windows、macos、linux。

    它也是唯一一个能动态加载卸载原生golang的库。

    另外,它加载的代码是可以调试的,而且支持pprof,就是说你可以在pprof工具里面看到加载的代码!

    目前goloader支持>=1.8的go版本,支持x86/x64、arm32指令集,支持windows、linux、macos。

     

    整个项目花了笔者不少时间,不过结果看起来还算满意,它的小巧和可卸载性、和golang一样的高性能、可调试性、可以pprof,使得它有自己的优点。

  • 相关阅读:
    SQL SERVER 如何处理带字母的自增列--【叶子】
    实现对数据进行分组小计并计算合计的实例 asp.net
    sql 随笔
    事务
    游标
    触发器
    Session的生命周期
    ASP.NET 推荐书籍
    asp.net 查询本地excel 获取信息
    使用DotNetZip压缩与解压缩
  • 原文地址:https://www.cnblogs.com/dearplain/p/8543804.html
Copyright © 2011-2022 走看看