go

一、Docker概述与安装

末鹿安然 提交于 2021-02-17 02:16:53
一、概述 官网: https://www.docker.com dockerhub: https://hub.docker.com/ Docker 是一个开源的应用容器引擎,基于Go语言,并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包 他们的应用以及依赖包 到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用 沙箱机制 ,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 把项目从windows发布到linux环境并不能跨平台,以前发布一个jar或者war,需要在机器上配置redis、mysql、ES、jdk。使用docker后可以带上环境来打包(镜像)。 二、组成 镜像(image) :通过镜像来创建容器,相当于是一个 root 文件系统,创建 Docker 容器的模板。 容器(container) :独立运行应用,是镜像运行时的实体。 仓库(repository) :Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 三、安装 CentOS的安装文档: https://docs.docker.com/engine/install/centos/ 1、卸载: sudo yum remove docker \ docker-client \ docker

How to get everything within brackets in golang with regex

让人想犯罪 __ 提交于 2021-02-16 21:34:50
问题 I am trying to get everything within the outside brackets of the following sql statement in golang regular expressions. Categories (// = outside bracket PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) )//=outside bracket how would I use regex to only identify the outer brackets and return everything in between the outside brackets? 回答1: All you need is to find the first ( , then match any characters up to the last ) with `(?s)\((.*)\)`

Conditional Timeout

一个人想着一个人 提交于 2021-02-16 21:07:45
问题 I have some code, there are 3 timers, GracefulExecutionTimeout - total running time WaitTimeout - time to initial wait for first message IdleTimeout - time to wait for subsequent messages If any of the timers are reached the app should cleanly exit. I have it working below msgs := make(chan string) go func() { time.Sleep(time.Second) msgs <- "test" }() // graceful max execution time gracefulMaxTimeout := time.Second * time.Duration(10) gracefulMaxTimer := time.NewTimer(gracefulMaxTimeout) //

Conditional Timeout

旧时模样 提交于 2021-02-16 20:58:46
问题 I have some code, there are 3 timers, GracefulExecutionTimeout - total running time WaitTimeout - time to initial wait for first message IdleTimeout - time to wait for subsequent messages If any of the timers are reached the app should cleanly exit. I have it working below msgs := make(chan string) go func() { time.Sleep(time.Second) msgs <- "test" }() // graceful max execution time gracefulMaxTimeout := time.Second * time.Duration(10) gracefulMaxTimer := time.NewTimer(gracefulMaxTimeout) //

List of dependency URLs of a Go project

时光总嘲笑我的痴心妄想 提交于 2021-02-16 20:30:16
问题 I want to get a list of tarball URLs (or similar) of all dependencies in a Go project. I tried to achieve this with 'go list dependency' but I see no possibility to get the source URL of a dependency. How can I get the URL? 回答1: For the current directory you get the imports by: go list -f '{{join .Imports "\n"}}' . 来源: https://stackoverflow.com/questions/33414849/list-of-dependency-urls-of-a-go-project

go 和 rust 设计模式对比

倾然丶 夕夏残阳落幕 提交于 2021-02-16 19:06:45
定义 工厂模式可分为三类: 简单工厂模式 工厂方法模式 抽象工厂模式 简单工厂模式 属于创建型模式,不属于 23 种 GOF 设计模式之一,由一个工厂对象决定创建出哪一种产品类实例,逻辑为定义一个工厂类,根据传入的参数不同返回不同的产品实例,被创建的实例具有共同的父类或接口。 工厂方法模式 跟简单工厂模式的区别就是,定义了一些工厂子类,每个工厂子类都可以创建相对应的产品类实例,而不用工厂父类去根据参数创建,一般在产品类比较多的情况下,不想太多复杂的逻辑封装在工厂父类里面,可以用这种模式。 抽象工厂模式 顾名思义,把工厂抽象出来,根据具体的业务需求组合工厂创建产品实例的逻辑,通常为创建多个产品实例类。抽象工厂一旦要增加创建产品实例的逻辑,就需要修改抽象工厂接口的具体产品组合逻辑,所以并不符合开闭原则,如果是需要频繁增加(修改)产品实例的话,要衡量是否采用这种模式 基本结构 工厂模式从源码上总的来说可以分为 4 部分: 抽象产品: 通过声明接口(特性),定义了产品的业务方法。 具体产品: 通过 implement 接口(特性),定义了业务方法的具体逻辑。 抽象工厂: 按照相应的业务逻辑,声明了创建产品对象的业务方法(多数为组合方式)。 具体工厂: 通过 implement 接口(特性),定义了创建产品对象的具体逻辑。 结构设计的关键点: 产品只负责产品对象的创建,其他什么都不关心,

How to properly close a request and continue processing it on the background

北战南征 提交于 2021-02-16 17:57:07
问题 For an incoming HTTP request, I had to respond with a 202 Accepted status code, while continue processing the payload in the background. for example purposes this is what I am currently doing: package main import ( "fmt" "log" "net/http" "time" "github.com/nbari/violetear" ) func sleep() { time.Sleep(3 * time.Second) fmt.Println("done...") } func index(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusAccepted) go sleep() } func main() { router := violetear.New() router

高校教师应该更加关注教育扶贫

喜欢而已 提交于 2021-02-16 16:42:19
欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。 高校教师主要的工作是做科研和搞教学,和扶贫有什么关系呢?本文将和大家一起来聊一聊这个话题。 这个问题有点大,让我们做一些假设,增加一些限定条件,进一步的缩小问题范围,再来讨论这个问题。 首先缩小一下高校范围。 我们不讨论东部沿海等发达地区高校,我们只讨论 西部高校 。 我们不讨论西部211、985等教育部直属高校,我们只讨论 西部地方本科高校 。 我们不讨论建校时间较长、历史悠久的西部地方本科高校,我们只讨论 西部新建地方本科高校 。 接下来聊一聊西部新建地方本科高校的基本情况。 (1)本文所讨论的西部新建地方本科高校指的是中国西部地区,成立时间较短,主管部门为省人民政府的,公办普通本科学校,其定位是服务地方经济。 (2)西部新建地方本科高校主要的生源为西部地区,一般情况下,外地招生名额较少,主要受所属地区以及外省知名度低等因素影响。 (3)西部地区相对于中国其他地区来说,经济欠发达,全国585个国家级贫困县分布于全中国17个省级行政区内,排名前5的为西藏自治区、云南省、贵州省、四川省、陕西省均来自西部地区。 (4)西部新建地方本科高校来自贫困县等区域的生源一般均为该地区的优秀学子,承载了该地区的梦想。 (5)西部地方本科院校的数量远远高于西部教育部直属等高校

How do I convert from a slice of interface{} to a slice of my struct type in Go? [duplicate]

南楼画角 提交于 2021-02-16 15:34:14
问题 This question already has answers here : Type converting slices of interfaces (6 answers) Closed 1 year ago . func GetFromDB(tableName string, m *bson.M) interface{} { var ( __session *mgo.Session = getSession() ) //if the query arg is nil. give it the null query if m == nil { m = &bson.M{} } __result := []interface{}{} __cs_Group := __session.DB(T_dbName).C(tableName) __cs_Group.Find(m).All(&__result) return __result } call GetFromDB(T_cs_GroupName, &bson.M{"Name": "Alex"}).([]CS_Group)

Is there “pass by reference”(C++) in go?

馋奶兔 提交于 2021-02-16 14:57:47
问题 I am defined a function using pointer, like the following func concat(head1, head2 *Node) Node { } and pass in pointer. but I am wondering if Go supports pass by reference like C++ which I could use like the following func concat(head1, head2 &Node) Node 回答1: The Go Programming Language Specification Calls In a function call, the function value and arguments are evaluated in the usual order. After they are evaluated, the parameters of the call are passed by value to the function and the