我正在尝试使用Golang写入日志文件.
我尝试了几种方法,但都失败了.这是我尝试过的:
func TestLogging(t *testing.T) {
if !FileExists("logfile") {
CreateFile("logfile")
}
f, err := os.Open("logfile")
if err != nil {
t.Fatalf("error: %v", err)
}
// attempt #1
log.SetOutput(io.MultiWriter(os.Stderr, f))
log.Println("hello, logfile")
// attempt #2
log.SetOutput(io.Writer(f))
log.Println("hello, logfile")
// attempt #3
log.SetOutput(f)
log.Println("hello, logfile")
}
func FileExists(name string) bool {
if _, err := os.Stat(name); err != nil {
if os.IsNotExist(err) {
return false
}
}
return true
}
func CreateFile(name string) error {
fo, err := os.Create(name)
if err != …Run Code Online (Sandbox Code Playgroud) 假设我有一个网站example.com是通过通用域名注册机构购买的nomcheap.com。
我希望所有流向特定子域的流量app.example.com都进入名称服务器,ns1.appserver.com以便为特定的用户应用提供服务。
我也希望所有其他流量(www.example.com,hello.example.com,*.example.com等)去一个不同的名称服务器从不同的供应商ns1.squaresites.com,所以我可以成为一个综合性网站(认为像一个电子商务WordPress站点)。
原始域注册表没有提供任何名称服务器nomcheap.com。
这可能吗?如果是这样,有什么建议吗?
场景:
我想快速读取一个大文本文件(lorem.txt例如下面的例子中有4.5毫米的行).我在下面的代码中尝试了三种不同的方法.
伪基准: 这是我在下面运行时获得的典型输出; 下面的输出是快速和肮脏的时间增量,而不是完整的剖析/台架标记/测试.
sequential: 43.541828091 secs 4714074 lines
queued channel: 80.986544385 secs 4714074 lines
wait group: 260.200473751 secs 4712266 lines
Run Code Online (Sandbox Code Playgroud)
问题: 为什么顺序循环比下面的其他两种方法更快?我错过了什么吗?
更新 我在更大的文本文件上运行示例代码(请参阅方案).我还为每个示例"重置"记录器,以防万一不这样做会在示例函数之间产生一些复合内存问题.还有其他人注意到,我的电脑是双核的,这可能是我的代码的许多问题之一.感谢所有反馈/答案.
package main
import (
"bufio"
"bytes"
"fmt"
"log"
"os"
"sync"
"time"
)
var (
textFile = "lorem.txt"
buf bytes.Buffer
l = log.New(&buf, "logger: ", log.Lshortfile)
wg sync.WaitGroup
delta1 float64
delta2 float64
delta3 float64
cnt1 = 0
cnt2 = 0
cnt3 = 0
)
func main() {
// …Run Code Online (Sandbox Code Playgroud) AWS Glue 是否提供将数据从 S3 存储桶移动到 RDS 数据库的能力?
我正在尝试设置无服务器应用程序,以获取上传到 S3 的动态数据并将其迁移到 RDS。
Glue 提供确定架构的爬虫服务。
Glue 还提供 ETL 作业,但这似乎是目标源只是另一个 S3 存储桶的地方。
有任何想法吗?
go ×2
amazon-rds ×1
amazon-s3 ×1
aws-glue ×1
concurrency ×1
dns ×1
logging ×1
nameservers ×1
subdomain ×1