小编her*_*ain的帖子

更新 dockerfile 后如何重新部署 kubernetes 中的所有内容?

我对 kubernetes 很陌生,此时我想做的就是重新启动我的集群并让它运行更新的 dockerfile。顺便说一下,我正在 google-cloud-platform 中运行 kubernetes。

docker google-cloud-platform kubernetes

10
推荐指数
2
解决办法
2万
查看次数

什么是http请求多路复用器?

我一直在研究golang,我注意到很多人使用这个http.NewServeMux()函数创建服务器,我真的不明白它的作用.

我看了这个:

在go ServeMux是一个HTTP请求多路复用器.它将每个传入请求的URL与已注册模式的列表进行匹配,并调用与URL最匹配的模式的处理程序.

这与做以下事情有什么不同:

http.ListenAndServe(addr, nil)
http.Handle("/home", home)
http.Handle("/login", login)
Run Code Online (Sandbox Code Playgroud)

使用多路复用的目的是什么?

http go multiplexing servemux

8
推荐指数
2
解决办法
3007
查看次数

如何在 Go ReverseProxy 中使用 TLS?

我有站点https://a-b-c.com并分别在端口和https://www.x-y-z.com上的反向代理后面运行。44445555

我将它们配置为使用 LetsEncrypt TLS 证书,但现在使用反向代理时出现错误,我认为我需要使用&tls.config{}包含其证书的证书,但我不知道如何设置它。

我的反向代理看起来像:

  director := func(req *http.Request) {                        
    log.Println(req.Host)                                      
    switch req.Host {                                          
    case "a-b-c-.com":                                 
      req.URL.Host = "localhost:4444"                        
      req.URL.Scheme = "https"                                 
    case "x-y-z.com":                                   
      req.URL.Host = "localhost:5555"                           
      req.URL.Scheme = "https"                                                                                   
  }                                                            
  proxy := &httputil.ReverseProxy{Director: director}          
  proxy.Transport = &http.Transport{                           
    Proxy: http.ProxyFromEnvironment,                          
    Dial: (&net.Dialer{                                        
      Timeout:   30 * time.Second,                             
      KeepAlive: 30 * time.Second,                             
    }).Dial,                                                   
    TLSHandshakeTimeout: 10 * time.Second,                     
    TLSClientConfig:     &tls.Config{InsecureSkipVerify: true},
  }                                                            

  log.Fatalln(http.ListenAndServe(":443", proxy))              
Run Code Online (Sandbox Code Playgroud)

ssl reverse-proxy go

5
推荐指数
1
解决办法
2403
查看次数

如果我在两个终端中打开 vim,如何共享复制/粘贴缓冲区?

我想yy从在一个终端仿真器中运行的一个 vim 实例中添加p一行,并将该行连接到在另一个终端仿真器中运行的另一个 vim 实例中。可能的?是否有特殊设置可以使用?

vim

3
推荐指数
1
解决办法
58
查看次数

如何为Android构建命令行应用程序?

我想构建Android的小应用程序,我可以从android命令行运行,而我通过ssh远程连接到Android设备.我不想要任何类型的按钮/启动器/图标或gui界面.

如果可能的话,我更喜欢在golang中这样做.

我尝试使用gomobile(golang.org/x/mobile),但当我把apk放在我的设备上并尝试运行它时,我得到错误:

u0_a44@ghost:/data/data/berserker.android.apps.sshdroid/home $ am start gserv.apk                                         
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] pkg=gserv.apk }
java.lang.SecurityException: Permission Denial: startActivity asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
    at android.os.Parcel.readException(Parcel.java:1546)
    at android.os.Parcel.readException(Parcel.java:1499)
    at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:2504)
    at com.android.commands.am.Am.runStart(Am.java:770)
    at com.android.commands.am.Am.onRun(Am.java:307)
    at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
    at com.android.commands.am.Am.main(Am.java:98)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249)
Run Code Online (Sandbox Code Playgroud)

该应用程序只是一个小的hello world http服务器.如何安装和的方式,允许我使用它就像内置到Android其它命令行程序,不需要GUI运行它(ls,cat,cd等).

command-line android go

2
推荐指数
1
解决办法
2270
查看次数

通过Go中HTML模板中任意数量的嵌套结构片段进行范围调整

我正在尝试建立一个类似Reddit的网络论坛.有回复的顶级帖子,回复可以有回复等等.

董事会看起来像这样:

var board map[string]*Post
Run Code Online (Sandbox Code Playgroud)

和a Post:

type Post struct {
  Title string
  Body string
  ID string
  PostNum int
  Replies []*Post
}
Run Code Online (Sandbox Code Playgroud)

我将如何使用模板通过嵌套到范围Replies切片(记住,每个*Post包含一个Replies包含片*Posts含有Replies等等)?

到目前为止我所拥有的:

<div id="posts">                                              
  {{ .Title  }}  
  {{ .Body  }}    

  <ul>                                                        
  {{ range $key, $value := .Replies }}                        
    <li class="post">                                         
      <div class="postHead">                                  
        <div class="postTitle"><b>{{ $value.ID }}</b></div>   
      </div>                                                  
      <div class="postBody">{{ $value.PostNum }}</div>        
    </li>          

  <ul>                                   
  {{ range $key, $value := $value.Replies }}                  
    <li class="post">                                         
      <div class="postHead">                                  
        <div class="postTitle"><b>{{ $value.ID …
Run Code Online (Sandbox Code Playgroud)

templates nested go go-templates

2
推荐指数
1
解决办法
495
查看次数

当所有goroutines完成时退出程序

我有两个go例程函数,一个创建数据,一个将数据添加到数据库.当我完成创建数据时,我想完成添加数据,但我不知道有多少次我要调用该函数.

for {
  select {
  case c <- dataChan:
    go func() {
      if data == false {
        return // keeps the program running but never exits
      }
      createData(c.Data) // sends data to dataChan until data == false 
    }
    go func() {
      addData(c.Data) // need to keep the program running until all these goroutines finish
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

createData()创建并发送数据到dataChan基于一些变量它最终会设置datafalse通过返回一遍又一遍,并导致程序举行公开和停止创造更多的数据,但我觉得应该有一个更清洁的方式,让我所有addData()goroutines完成后退出.我见过人们为此使用了一个频道,但我不确切地知道我将调用该函数的次数.

更新:工作代码

var wg sync.WaitGroup
for {
  select {
  case c <- dataChan:
    wg.Add(1) …
Run Code Online (Sandbox Code Playgroud)

go goroutine

0
推荐指数
1
解决办法
651
查看次数