golang官方嵌入文件到可执行程序

目录前言示例程序嵌入文件直接访问嵌入文件列表总结 前言 在go官方出嵌入文件的方法前我在网上找过,并且自己还研究过,虽然没有问题,但是既然官方支持还是用起来吧。 看了下go源码embed/embed.go很简单,并且看embed/internal/embedtest/embed_test.go就知道如何使用。 示例程序 嵌入文件直接访问 原理是使用go:embed标签来完成。下面是直接读取文件内容,需要注意下面几点。 文件不是utf8编码时,输出内容为中文会乱码。 测试过嵌入文件只能为源码文件同...阅读全文

博客园 2021-02-18 17:40 janbar

golang官方嵌入文件到可执行程序

目录前言示例程序嵌入文件直接访问嵌入文件列表总结前言在go官方出嵌入文件的方法前我在网上找过,并且自己还研究过,虽然没有问题,但是既然官方支持还是用起来吧。看了下go源码embed/embed.go很简单,并且看embed/internal/embedtest/embed_test.go就知道如何使用。示例程序嵌入文件直接访问原理是使用go:embed标签来完成。下面是直接读取文件内容,需要注意下面几点。文件不是utf8编码时,输出内容为中文会乱码。测试过嵌入文件只能为源码文件同级目录和子目录下...阅读全文

51CTO博客 2021-02-19 20:25:08 mb601ce0d29b15f

go-admin在线开发平台学习-2[程序结构分析]

紧接着上一篇,本文我们对go-admin下载后的源码进行分析。首先对项目所使用的第三方库进行分析,了解作者使用的库是否是通用的官方库可以有助于我们更快地阅读程序。接着对项目的main()方法进行分析,因为程序使用cli的方式启动,对cli不同的命令进行分析。基于此俩点开始工作。go-admin中使用的第三方库cobra强大的cli封装,支持命令嵌套cast简单安全的类型转换casbin轻量级开源访问控制框架,采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制 RBAC、基于...阅读全文

51CTO博客 2021-02-19 20:32:59 mb601ce0d29b15f

go-admin在线开发平台学习-3[细节解析]

本章节主要的内容是对go-admin中的一些有趣编码进行分析,为自己以后提供一些借鉴使用cli方式启动项目使用cobra[眼镜蛇]完成强壮cli的工具,确保稳定。使用cli的方式启动项目的好处显而易见,可以在进行配置的自定义化,而不是固定的使用某个配置文件中的信息。在一些需要频繁更换命令参数的场景下尤为有效。cobra的使用有一个默认的规定,即新建一个cmd文件夹,基于这个文件夹定义自己的命令结构1、小型项目cmd 文件夹-- root.go 根命令-- version.go 版本命令【子命令】...阅读全文

51CTO博客 2021-02-19 20:28:14 mb601ce0d29b15f

go-admin在线开发平台学习-3[细节解析]

本章节主要的内容是对go-admin中的一些有趣编码进行分析,为自己以后提供一些借鉴使用cli方式启动项目使用cobra[眼镜蛇]完成强壮cli的工具,确保稳定。使用cli的方式启动项目的好处显而易见,可以在进行配置的自定义化,而不是固定的使用某个配置文件中的信息。在一些需要频繁更换命令参数的场景下尤为有效。cobra的使用有一个默认的规定,即新建一个cmd文件夹,基于这个文件夹定义自己的命令结构1、小型项目cmd 文件夹-- root.go 根命令-- version.go 版本命令【子命令】...阅读全文

51CTO博客 2021-02-19 20:27:51 mb601ce0d29b15f

go get下载包失败问题

由于某些不可抗力的原因,国内使用go get命令安装包时会经常会出现timeout的问题。本文介绍几个常用的解决办法。从github克隆golang在github上建立了一个镜像库,如https://github.com/golang/net就对应是 https://golang.org/x/net的镜像库。 要下载golang.org/x/net包,可以在本地创建包的目录后使用git clone来拉取相应包的源代码文件,具体操作如下:mkdir -p $GOPATH/src/golang.or...阅读全文

Segmentfault 2021-02-23 07:32:32 happlyfox

如何提高代码的可读性 学习笔记

本文整理自 taowen 师傅在滴滴内部的分享。1.Why对一线开发人员来说,每天工作内容大多是在已有项目的基础上继续堆代码。当项目实在堆不动时就需要寻找收益来重构代码。既然我们的大多数时间都花在坐在显示器前读写代码这件事上,那可读性不好的代码都是在谋杀自己or同事的生命,所以不如一开始就提炼技巧,努力写好代码; )2.How为提高代码可读性,先来分析代码实际运行环境。代码实际运行于两个地方:cpu和人脑。对于cpu,代码优化需理解其工作机制,写代码时为针对cpu特性进行优化;对于人脑,我们在读...阅读全文

Segmentfault 2021-02-22 22:32:34 薯条

型模式

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。 // 示例结构体 type Example struct { Content string...阅读全文

简书 2021-02-19 15:32:36 小幸运Q

go的值类型和引用类型2——内存分配规则

什么是逃逸分析?把本该分配在栈上的变量分配到了堆,则发生了逃逸。分析这种情况的行为就是逃逸分析。go为变量分配内存的规则:全局变量,引用类型的分配在堆上,值类型的分配在栈上。局部变量,一般分配在栈上。如果局部变量太大,则分配在堆上。如果函数执行完,仍然有外部引用此局部变量,则分配在堆上。案例:var global *int func f() { var x int x = 1 global = &x } func g() { y := new(int) *y = 1 }函数里的x变量必须在堆上分...阅读全文

Segmentfault 2021-02-22 21:32:33 煮酒

go的值类型和引用类型1——传递和拷贝

首先,我们了解一些基本概念。值类型:基本数据类型,数组,结构体,接口。引用类型:map,slice,channel,func,指针。函数调用时,传参数的方式:值传递:拷贝值,递给函数的是变量的副本。引用传递:拷贝指针,递给函数的是变量的指针。函数内部,给新变量赋值的时候:深拷贝:拷贝值,也叫值拷贝。浅拷贝:拷贝指针。拷贝规则:值类型一般都是深拷贝,引用类型都是浅拷贝。传递规则:go里面都是值传递。注意:切片在一定条件下也是值拷贝。注意:针对结构体类型的变量,如果里面有指针字段。发生了拷贝,新变量...阅读全文

Segmentfault 2021-02-22 09:32:32 煮酒

谈一谈 ID 发号器原理及期使用场景

最近在研究分布式架构方面的技术。看到 ID 发号器这个东西。早在四五年前,就看过一版讲 Java 发号器的东西。当时对这个发号器并不是特别理解。也不知道何种场景会使用到它。于是,今天再度回首这个东西。想看看它到底怎样影响我们的开发生活。 一、数据库自增 ID 在深入了解 ID 发号器之前,我们先来了解一下经常用到的数据库自增 ID。自增 ID 对开发同学来说,是我们非常熟悉的一个东西。 它有三个特性: 1)唯一性。 2)递增性。 3)步长固定。 在我们在编程中,经常会利用到这三个特性。帮助我们编...阅读全文

简书 2021-02-19 13:32:45 fingerQin

Golang 创建守护进程以及平滑重启

作为一名 PHP 开发老兵。使用过命令行对 nginx、PHP-FPM 进行启动/重启/停止等操作。印象非常深刻。让我用 C/C++ 开发这样的系统肯定是没精力搞了。然而,自从 Golang 进入了我的视野之后。我发现这一切都变得非常的容易。 1)生成守护进程 直接上代码: package main import ( "os" "os/exec" "path/filepath" ) func main() { //判 断当其是否是子进程,当父进程return之后,子进程会被 系统1 号进程接管 ...阅读全文

简书 2021-02-19 13:32:45 fingerQin

go-admin在线开发平台学习-2[程序结构分析]

紧接着上一篇,本文我们对go-admin下载后的源码进行分析。 首先对项目所使用的第三方库进行分析,了解作者使用的库是否是通用的官方库可以有助于我们更快地阅读程序。接着对项目的main()方法进行分析,因为程序使用cli的方式启动,对cli不同的命令进行分析。基于此俩点开始工作。 go-admin中使用的第三方库 cobra 强大的cli封装,支持命令嵌套 cast 简单安全的类型转换 casbin 轻量级开源访问控制框架,采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制...阅读全文

简书 2021-02-19 13:32:45 HapplyFox

Go Event

事件驱动架构是计算机科学中一种高度可扩展的范例,能实现多方系统的异步处理。 事件是由事件源触发并由事件处理消费 事件系统可以将事件派发者和事件处理者进行解耦,一个完整的事件系统需要拥有如下特性: 实现事件的一方可根据事件ID或名字注册对应的事件 事件发起者可根据注册信息通知注册者 一个事件可以具有多个实现方响应 事件系统 事件注册 事件系统需要为外部提供一个注册的入口,注册入口传入注册事件名称和对应事件的响应函数后,将事件名称和响应函数关联保存。 //实例化字符串映射函数切片的事件 var ev...阅读全文

简书 2021-02-19 13:32:44 JunChow520

Go Singleton

单例模式 单例模式(单子模式)是常用的软件设计模式,其核心结构中只包括一个被称之为单例的特殊类,通过单例模式可以保证系统中一个类有且仅有一个实例,同时该实例化需要易于外界访问,从而方便对实例个数的控制来节约系统资源。 单例对象的类型必须保证只有一个实例存在,全局具有唯一接口访问。 单例模式具有两种加载方式分别是懒汉加载和饿汉加载 懒汉加载(Lazy Loading) 懒汉加载通俗来讲,就是创建对象是比较懒,先不急着创建对象,而是在需要加载配置文件时再去创建。 懒汉模式是指全局的单例实例只会在第一...阅读全文

简书 2021-02-19 13:32:38 JunChow520

Go:实现秒级读取16GB文件

【译文】原文地址 如今任何计算机系统每天都会产生大量的日志或数据。随着系统的增长,将调试数据存储到数据库中是不可行的,因为它们是不可变的,主要用于分析和解决故障的目的。因此,企业倾向于将其存储在文件中,并保存在本地磁盘中。 我们将使用Golang从大小为16 GB的.txt或.log文件中提取日志,该文件有数百万行。 直接上代码,首先打开文件,将使用标准Go os.File来读取文件IO: f, err := os.Open(fileName) if err != nil { fmt.Print...阅读全文

简书 2021-02-19 13:32:38 汪明军_3145

2021-02-18:给定一个字符串str,给定一个字符串类型的数组arr,

<p>2021-02-18:给定一个字符串str,给定一个字符串类型的数组arr,出现的字符都是小写英文。arr每一个字符串,代表一张贴纸,你可以把单个字符剪开使用,目的是拼出str来。返回需要至少多少张贴纸可以完成这个任务。例子:str= "babac",arr = {"ba","c","abcd"}。a + ba + c 3 abcd + abcd 2 abcd+ba 2。所以返回2。</p><p/><p>福哥答案2021-02-18:</p><p>自然智慧即可。</p><p>带记忆的递归。...阅读全文

简书 2021-02-19 13:32:37 福大大架构师每日一题

手撸golang 基本数据结构与算法 堆

手撸golang 基本数据结构与算法 堆 缘起 最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一) 本系列笔记拟采用golang练习之 堆 堆是一种图的树形结构, 被用于实现“优先队列”(priority queues)。 优先队列是一种数据结构, 可以自由添加数据, 但取出数据时要从最小值开始按顺序取出。 在堆中存储数据时必须遵守这样一条规则:子结点必定大于父结点。 摘自 <<我的第一本算法书>> 【日】石田保辉;宫崎修一 补充知识 堆又名二叉堆, 是一种无序完全二叉树 所谓完全, ...阅读全文

简书 2021-02-19 13:32:37 老罗话编程

2021-02-18:给定一个字符串str,给定一个字符串类型的数组arr,出现的字符都是小写英文。arr每一个字符串,代表一张贴纸,你可以把单个字符剪开使用,目的是拼出str来。返回需要至少多...

2021-02-18:给定一个字符串str,给定一个字符串类型的数组arr,出现的字符都是小写英文。arr每一个字符串,代表一张贴纸,你可以把单个字符剪开使用,目的是拼出str来。返回需要至少多少张贴纸可以完成这个任务。例子:str= "babac",arr = {"ba","c","abcd"}。a + ba + c 3 abcd + abcd 2 abcd+ba 2。所以返回2。 福哥答案2021-02-18: 自然智慧即可。 带记忆的递归。对“babac”排序,变成“aabbc”,然后根据...阅读全文

简书 2021-02-19 13:32:37 福大大架构师每日一题