# 作用       本工程仅供个人学习记录,刚开始学习go(之前是java),本工程积累一些反射的用法。后期查询更加快捷        # 更新日志 2020/4/24 :创建FiledValueTool.go四个方法,分别处理【结构体对象】、【结构体指针对象】的字段名-字段值的map获取以及 【结构体类型】、【结构体指针类型】的字段名获取 2020/4/27 :创建FileUtil.go、FileReadTool.go、FileWriteTool.go文件,添加文件文件夹操作、读写文件操作方法 2020/4/27 :创建ColorUtil:颜色输出工具、修改目录层级、添加数据库表字段处理工具(需要已连接数据库) 2020/4/28 : 创建IniTool.go:包装int工具类,进行文件配置数据结构的读取,包括对应的使用例子(工具地址:https://ini.unknwon.cn/docs/howto/work_with_sections) 2020/4/30 :添加FileUtil.go、FileReadTool.go单测类代码,修改相应bug-----IniTool.go依赖获取不到,注释掉代码 2020/4/30 : 创建ArrayUtil.go,添加数组对应方法 2020/5/6 : 创建ArrayUtils测试类,修改对应方法 2020/5/7 : 创建timed包相关时间操作工具,实现时间戳、时间格式化操作。创建timed测试类 2020/6/15: 创建Set,实现相关方法 2020/6/30: ArrayList添加深度复制方法以及单测类、添加Rand随机获取参数方法、RandByWeight根据权重随机获取奖励方法 2020/7/8: 增加读取json文件方法及其单测类 2020/7/13: 增加计算获取字符串哈希值的方法(这个是之前用于做分表系统的方法,搬到这边来看一下) 2020/7/13: 修改FileUtil的报错 2020/7/20: 添加深度优先搜索算法工具类以及变种,分别对应以下场景 - 在N个道具中,提取所有M个道具的组合方案,这种方式可以用在 权重一样的 N个道具中选择一定的数量的道具组合(这种方案就是权重一样) - 在N个道具中,提取超过一定价值V的所有组合方案,道具的数量没有限制,但是必须超过最低价值,也就是我们说的保底方案 - 在N个道具中,提取超过一定价值VMin,但是不超过一定价值VMax的组合方案,道具的数量没有限制,必须在最低价值和最高价值之间. - 在N个道具中,提取超过一定价值V并且个数大小为M的所有组合方案,这个就是保证 保底的一定数量的道具 类似上面的方案,在游戏中可以在活动创建的时候,初始化所有的方案放到redis,然后每一次抽取都筛选下标来确认方案.这样就可以保证在一定的范围或者数量内确认对应的方案。 2020/8/6: 添加求背包问题最优解三种方式(KnapsackOptimizationUtil.go)及其单测类,添加求背包问题最优解过程路径(KnapsackSearchAnswerUtil.go)及其单测类.添加背包问题的readme相关说明 2020/8/18: 修改单测位置,添加lomuto查找第k小元素算法代码及其单测(分治法) 2020/8/20:新增二分法查找算法及其单测、插入查询及其单测、lomuto划分查询第k小元素及其单测、归并排序及其单测、快速排序及其单测. 2020/8/20: 新增选择排序及其单测、冒泡排序及其单测、堆排序及其单测 2020/8/26: 新增Horspool字符串查找算法及其单测、新增Horspool字符串查找算法及其单测、新增计数排序及其单测 2020/10/28: 新增根据二进制位数来存储奖励领取情况工具类,BitStoreTool、使用说明及其单测 2020/11/9: 新增lomute划分算法效率单测,结果:多次查找,元素多的情况下由末尾开始查找效率更高 2020/11/12:新增linq包使用示例(未完成) 2020/11/16:新增项目案例(按照一定规则对一组数据进行排序分组) 2020/11/25:完善linq包使用示例 2020/12/7 :更新bit位操作工作 BitTool 2020/12/15:添加前缀树工具,实现前缀搜索和字符串搜索功能 2020/12/16: 添加YAML和结构体转换工具 2020/12/31:新增项目案例(角色技能树) 2021/2/5: 新增二分查找区间内数值方法 # 修复日志 2020/11/23:修改项目案例(按照一定规则对一组数据进行排序分组) 2020/12/16: 修复bitStore越位溢出的问题 2020/12/31: 修改diliver包结构 2020/12/31:删除源码学习部分,挪到Go-Study工程 2021/1/4 :reflectM包添加indirect处理指针和非指针,获取type、value # mod vendor模式加载包 通过go mod的方式加载的github上面的包会有报红的问题,但是包本身是可以运行的,这样就是会有一个问题,如果你想要点击去看方法的内容,没办法做到 查阅了网上提供的处理方式,通过设置GOPATH 和Go Modules(vgo)可以解决相应的问题,但是我在这样处理之后依然会出现报红的问题 后面通过使用vendor包的方式来处理,就避免了报红的问题 处理步骤如下 : - 通过 go get github.com/kardianos/govendor 命令下载govendor命令 - 把vendor文件夹删除了 - 通过 go mod vendor 切换到vendor管理 - 在文件中import引用对应的路径 - vendor加载对应的包