Golang return gzip content as API
Em đang dùng redis để cache data product (như code dưới)
<p>
</p>
<pre>
productBytes, _ := json.Marshal(product)
bf := bytes.Buffer{}
gw := gzip.NewWriter(&bf)
gw.Write(productBytes)
cacheErr := cache.Set(bgCtx, idParam, bf.Bytes(), 60*time.Second).Err()
</pre>
<p>
</p>
<p>
Giờ em muốn có 1 api trả về ngay kết quả được cache trong redis dưới dạng gzip và http sẽ tự unpack nó ra có được không ạ. Em có search thì thấy http có hỗ trợ content-encoding gzip nhưng chưa biết cách làm, a/c có code mẫu càng tốt ạ :3
</p>
Xử lý vấn đề Transaction trên nhiều Repositories
Hi anh chị em, chắc hẳn mọi người đã sử dụng Repository pattern rất nhiều trong lập trình rồi. Em cũng vậy, tuy nhiên em đang gặp phải một vấn đề về việc khi muốn transaction trên nhiều repositories, thì mình nên xử lý thế nào cho hiệu quả. Anh chị em có thể chia sẻ cùng em ở đây nhé ạ. Cảm ơn mọi người.
Socket Golang
Cho em hỏi, em sử dụng readJSON và readMessage để đọc dữ liệu từ client gửi thông qua websocket, vấn đề em đang gặp phải là khi em test sử dụng 2 func này cùn 1 lúc thì ghi gửi dữ liệu, readJSON sẽ thực thi xong sẽ dừng(các câu lệnh sau sẽ kh chạy), client phải gửi lần 2 (các câu lệnh sau mới được thực thi). Mong mn giải đáp giúp em với ạ. (Mặc dù em sử dụng 1 trong 2 thôi đã work rùi nhma test thử thì gặp case này ạ. Em cảm ơn) <img class="alignnone size-full wp-image-8112" src="https://stackask.com/wp-content/uploads/2022/11/Screenshot-2022-11-08-165956.png" alt="" />
Cập nhập dữ liệu khi call api
Em đang call api để lấy dữ liệu xong rồi sẽ thêm vào database, sử dụng cron job để sau 15' cập nhật 1 lần. Nhma làm sao để biết data nào mới để cập nhật ạ. Em đang xóa hết rồi thêm mới lại
[BadQuestionBecauseCodeInImage]Pipeline fade-out fade-in
<img class="alignnone size-full wp-image-6378" src="https://stackask.com/wp-content/uploads/2022/07/Screenshot-from-2022-07-09-11-49-30.png" alt="" /><img class="alignnone size-full wp-image-6379" src="https://stackask.com/wp-content/uploads/2022/07/Screenshot-from-2022-07-09-11-49-25.png" alt="" />Bài này tính tổng bình phương của 1 dãy số, thay vì lặp qua hết dãy thì sẽ chia thành nhiều routine để tính cho nhanh nếu nhưu chuỗi dài. Tuy nhiên chỗ hàm generatePipeline em chưa hiểu lắm ạ. Nó đẩy dãy số đó vào channel, sau đó close mà chỗ return lại out em chưa hiểu ạ
[BadQuestionBecauseCodeInImage]Channel trong Go Lang
<img class="alignnone size-full wp-image-6348" src="https://stackask.com/wp-content/uploads/2022/07/Screenshot-from-2022-07-08-14-23-32.png" alt="" />Cho em hỏi, mình gửi qua 2 channel, mà tại sao select nó có mấy giá trị 0 vậy ạ, em thấy có gọi hàm close cho mỗi channel sau khi gửi xong rồi mà
[BadQuestionBecauseCodeInImage]Append slice in Golang
<img class="alignnone wp-image-6320" src="https://stackask.com/wp-content/uploads/2022/07/Screenshot-from-2022-07-06-14-06-08.png" alt="" />
<p>
</p>
<p>
Cho em hỏi, vì sao append(a[:2], a[3:]...) mà giá trị trong slice a sau khi thực hiện câu lệnh này nó thay đổi vậy ạ. Em cảm ơn
</p>
vì sao Golang xử lý concurrency tốt
em đang muốn xử lý lượng concurrency lớn từ người dùng, mọi người nói nên chọn Golang vì Java k xử lý được như vậy, anh có thể giải thích em vì sao Golang và NodeJS có thể làm vậy mà Java k thể k ạ
Ứng dụng của zookeeper trong các hệ thống
Hi ae. AE đã từng sử dụng zookeeper có thể chia sẻ cùng em những ứng dụng thực tế của nó trong các hệ thống backend với ạ. Khi sử dụng zookeeper thì sẽ thường sử dụng với những component nào nữa và tại sao ạ?
<p>
</p>
<p>
Cảm ơn anh em.
</p>
Generic type in golang
Mình vẫn thắc mắc tại sao Golang không (chưa) hỗ trợ generic type, bạn nào biết có thể chỉ mình với được không ? Vì mình cảm giác việc duplicate code xảy ra khá thường xuyên...
[Go] Đây có phải 1 dạng thừa kế?
<pre>
type Evidence interface {
ABCI() []abci.Evidence // forms individual evidence to be sent to the application
Bytes() []byte // bytes which comprise the evidence
Hash() []byte // hash of the evidence
Height() int64 // height of the infraction
String() string // string format of the evidence
Time() time.Time // time of the infraction
ValidateBasic() error // basic consistency check
}
type DuplicateVoteEvidence struct {
VoteA *Vote `json:"vote_a"`
VoteB *Vote `json:"vote_b"`
// abci specific information
TotalVotingPower int64
ValidatorPower int64
Timestamp time.Time
}
var _ Evidence = &DuplicateVoteEvidence{}
</pre>
<p>
</p>
<p>
Đây là một dạng thừa kế à mọi người?
</p>
Go đoạn lệnh này có nghĩa là gì?
Trong đoạn lệnh dưới đây thì <code>ev, ok := ev.(<em>types.DuplicateVoteEvidence)</code> có nghĩa là gì nhỉ? Nó là gọi hàm hay là gì nhỉ?
</em>
<pre>
type Evidence interface {
ABCI() []abci.Evidence // forms individual evidence to be sent to the application
Bytes() []byte // bytes which comprise the evidence
Hash() []byte // hash of the evidence
Height() int64 // height of the infraction
String() string // string format of the evidence
Time() time.Time // time of the infraction
ValidateBasic() error // basic consistency check
}
type DuplicateVoteEvidence struct {
VoteA *Vote `json:"vote_a"`
VoteB *Vote `json:"vote_b"`
// abci specific information
TotalVotingPower int64
ValidatorPower int64
Timestamp time.Time
}
evidenceFromEachValidator := make([]types.Evidence, nValidators)
// set giá trị cho evidenceFromEachValidator
for idx, ev := range evidenceFromEachValidator {
ev, ok := ev.(*types.DuplicateVoteEvidence)
}
</pre>