我对 kubernetes 很陌生,此时我想做的就是重新启动我的集群并让它运行更新的 dockerfile。顺便说一下,我正在 google-cloud-platform 中运行 kubernetes。
我一直在研究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)
使用多路复用的目的是什么?
我有站点https://a-b-c.com
并分别在端口和https://www.x-y-z.com
上的反向代理后面运行。4444
5555
我将它们配置为使用 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) 我想yy
从在一个终端仿真器中运行的一个 vim 实例中添加p
一行,并将该行连接到在另一个终端仿真器中运行的另一个 vim 实例中。可能的?是否有特殊设置可以使用?
我想构建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
等).
我正在尝试建立一个类似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) 我有两个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
基于一些变量它最终会设置data
到false
通过返回一遍又一遍,并导致程序举行公开和停止创造更多的数据,但我觉得应该有一个更清洁的方式,让我所有addData()
goroutines完成后退出.我见过人们为此使用了一个频道,但我不确切地知道我将调用该函数的次数.
更新:工作代码
var wg sync.WaitGroup
for {
select {
case c <- dataChan:
wg.Add(1) …
Run Code Online (Sandbox Code Playgroud) go ×5
android ×1
command-line ×1
docker ×1
go-templates ×1
goroutine ×1
http ×1
kubernetes ×1
multiplexing ×1
nested ×1
servemux ×1
ssl ×1
templates ×1
vim ×1