我正在构建一个blob存储系统,我选择了Go作为编程语言.我创建了一个流来执行从客户端到blob服务器的多部分文件上载.
流工作正常,但我想从请求正文中生成一个sha1哈希.我需要io.Copy身体两次.sha1被创建但是多部分在此之后流0字节.
任何想法我怎么能这样做?
客户端上传
func (c *Client) Upload(h *UploadHandle) (*PutResult, error) {
body, bodySize, err := h.Read()
if err != nil {
return nil, err
}
// Creating a sha1 hash from the bytes of body
dropRef, err := drop.Sha1FromReader(body)
if err != nil {
return nil, err
}
bodyReader, bodyWriter := io.Pipe()
writer := multipart.NewWriter(bodyWriter)
errChan := make(chan error, 1)
go func() {
defer bodyWriter.Close()
part, err := writer.CreateFormFile(dropRef, dropRef)
if err != nil {
errChan <- …Run Code Online (Sandbox Code Playgroud) 我正在构建一个小 cli 工具,可以在开发或生产中启动我的应用程序。
我希望它的工作方式是这样的:
app run --dev or app run --prod
Run Code Online (Sandbox Code Playgroud)
Atm 它不会在我的命令之后解析标志,但只在我的命令之前解析。所以这有效
app --dev run or app --prod run
Run Code Online (Sandbox Code Playgroud)
任何想法如何修复它以便我可以在我的命令后使用它?这是我的代码
func main() {
//flag.Usage := usage
flag.Parse()
args := flag.Args()
if len(args) == 0 {
Usage()
os.Exit(0)
}
if *dev {
os.Setenv("ENV", "development")
}
if *prod {
os.Setenv("ENV", "production")
}
switch {
// Run
case args[0] == "run" && len(args) == 1:
os.Setenv("port", *port)
log.Printf("Booting in %s", os.Getenv("ENV"))
Run()
// Help
case args[0] == "help" && len(args) == 1: …Run Code Online (Sandbox Code Playgroud) 我在我的数据库中有这个文件
[
{
"_id": "53dc97bf91f1f933e15d6fb1",
"attributes": {
"chilled": false,
"flammable": false,
"food": false,
"fragile": false,
"frozen": false,
"hot": false,
"outsized": false
},
"createdAt": "02/08/14 09:48:16",
"customer": "53d68bc091f1f933e15d6f90",
"location": [
{
"count": 0,
"warehouse": "53db430c91f1f933e15d6fa6"
},
{
"count": 34,
"warehouse": "53db430c91g1f933e45d6fa4"
},
],
"name": "test",
"type": "stored",
"updatedAt": ""
}
]
Run Code Online (Sandbox Code Playgroud)
如果我知道仓库ID,我该如何更新位置数组?这就是我现在拥有的
coll := p.GetDb().C("product")
changes := bson.M {
"location": bson.M {
"$elemMatch": bson.M {
"warehouse": bson.ObjectIdHex(warehouseId),
},
},
"$set": bson.M {
"location.$.count": 4,
},
}
err := coll.UpdateId(bson.ObjectIdHex(productId), changes)
if …Run Code Online (Sandbox Code Playgroud) 如果你看一下Nginx它会调用"nginx reload"重新加载自己.有没有办法从命令行向正在运行的进程发送信号?即使主进程启动子进程,如何将命令发送到主进程以通知其子进程?
例如:
myapp start -debug // starts a server
myapp reload -gracefull // stops the app gracefully
Run Code Online (Sandbox Code Playgroud)
现在我需要发送os信号通知我的服务器执行正常关机
kill -QUIT pid
kill -USR2 pid
Run Code Online (Sandbox Code Playgroud)
我希望我的问题足够清楚Thnx
我有这个 xml 文件,我似乎无法将任何数据解组到结构中。有人可以在这里帮助我。只是我以前从未使用过 xml,在 xml 之前总是更喜欢 json。刚刚用我的代码编辑了这篇文章,它仍然给我空的结构值
<Envelope>
<Data>
<Order>
<DeliveryData>
<del_country>BELGIQUE/BELGIE</del_country>
<del_country_code>BE</del_country_code>
<del_company>False</del_company>
<del_name>ADAM</del_name>
<del_contact></del_contact>
<del_firstName></del_firstName>
<del_addressLine1>Durasweg 33</del_addressLine1>
<del_addressLine2></del_addressLine2>
<del_areaCode>1000</del_areaCode>
<del_city>BRUXELLES</del_city>
<del_country>BE</del_country>
<del_language>FR</del_language>
<del_modeCode>71</del_modeCode>
<phone1>0032872180808</phone1>
<email></email>
<inv_third>438802</inv_third>
<OrderID>15787978</OrderID>
<ParcelID>NE1578797801</ParcelID>
<OrderDate>16/09/2014 14:22:54</OrderDate>
<Shipping_date>16/09/2014 14:26:55</Shipping_date>
</DeliveryData>
</Order>
</Data>
Run Code Online (Sandbox Code Playgroud)
type DeliveryData struct {
XMLName xml.Name `xml:"DeliveryData"`
Country string `xml:"del_country"`
}
type Envelope struct {
XMLName xml.Name `xml:"Envelope"`
Data Data `xml:"Data"`
}
type Data struct {
XMLName xml.Name `xml:Data`
Orders []Order `xml:Order`
}
type Order struct {
XMLName xml.Name `xml:"Order"`
DeliveryData DeliveryData `xml:"DeliveryData"` …Run Code Online (Sandbox Code Playgroud) Array
(
[0] => Array
(
[color] => Brown
)
[1] => Array
(
[color] => Green
)
[2] => Array
(
[width] => 34
)
)
Run Code Online (Sandbox Code Playgroud)
我需要这样做
[color] => Array
(
[0] => green
[1] => brown
)
[width] => Array
(
[0] => 34
)
Run Code Online (Sandbox Code Playgroud)
)
我正在尝试所有的阵列工具.但我不能让它像我想要的那样.
我正在尝试将整个目录上传到服务器.它适用于小目录,但100 + +图片它返回错误"到许多打开文件".我从中读取后立即关闭文件.知道如何解决这个问题吗?
这是我的代码
func uploadDir(path string) error {
dir, err := os.Open(path)
if err != nil {
return err
}
files, err := dir.Readdirnames(-1)
if err != nil {
return err
}
dir.Close()
errChan := make(chan error)
resChan := make(chan *client.PutResult)
remaining := len(files)
for _, file := range files {
file := file
go func() {
file, err := os.Open(path + "/" + file)
if err != nil {
errChan <- err
}
c := client.NewClient(os.Getenv("DROPS_SERVER"))
res, err …Run Code Online (Sandbox Code Playgroud) 目前我正在分别流式传输 2 个多部分请求。
如何使用多部分同时上传它们?
这是运行 2 次的请求。我想在这 1 个请求中添加 2 个文件
func(c *Client) Upload(h *UploadHandle) (*PutResult, error) {
bodyReader, bodySize, err := h.Read()
if err != nil {
return nil, fmt.Errorf("Failed to peek the body size %v", err)
}
if bodySize > constants.MaxDropSize {
return nil, errors.New("The size of the body is to big")
}
pipeReader, pipeWriter := io.Pipe()
writer := multipart.NewWriter(pipeWriter)
errChan := make(chan error, 1)
go func() {
defer pipeWriter.Close() …Run Code Online (Sandbox Code Playgroud) 我是Rust的新手,拥有以下工作代码.但我不认为我所做的是最好的方式.我正在寻找有关这段简单代码的见解.
我有一个包含一些数据的简单结构:
struct BlobRef {
hashname: String,
}
impl BlobRef {
fn hashname(self) -> String {
self.hashname
}
}
Run Code Online (Sandbox Code Playgroud)
和一个函数调用.不要担心source: &[u8],它会有时间闪耀.
fn write(bref: BlobRef, source: &[u8]) -> io::Result<String> {
let hashname = bref.hashname();
match fs::create_dir_all(&hashname) {
Ok(_) => Ok(hashname),
Err(e) => Err(e)
}
}
Run Code Online (Sandbox Code Playgroud)
我需要分配另一个范围变量hashname来阻止编译器抱怨"使用移动的变量".这是惯用的吗?
我有以下代码将一些示例文本与scikit Learn聚类。
train = ["is this good?", "this is bad", "some other text here", "i am hero", "blue jeans", "red carpet", "red dog", "blue sweater", "red hat", "kitty blue"]
vect = TfidfVectorizer()
X = vect.fit_transform(train)
clf = KMeans(n_clusters=3)
clf.fit(X)
centroids = clf.cluster_centers_
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=80, linewidths=5)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我不知道的是如何绘制聚类结果。X是一个csr_matrix。我要的是每个要绘制的结果的(x,y)坐标。
泰