Grokking Newsletter

By Grokking Vietnam

#227 - Thiết kế retry consumer cho Kafka

#230・
10.2K

subscribers

246

issues

Subscribe to our newsletter

By subscribing, you agree with Revue’s Terms of Service and Privacy Policy and understand that Grokking Newsletter will receive your email address.

Grokking Vietnam
Grokking Vietnam
Chào các bạn độc giả của Grokking Newsletter.
Mời các bạn truy cập vào Grokking Knowledge Graph để đọc lại toàn bộ các bài viết của Grokking Newsletter nhé: https://knowledge.grokking.org/
Tại website này, chúng tôi đã tổng hợp toàn bộ 1000 bài viết của newsletter từ trước tới nay, ngoài ra các bài viết đều được phân loại, gán nhãn theo từng chủ đề quan trọng. Qua đó chúng tôi hy vọng các bạn có thể dễ dàng tìm kiếm được những bài viết mà mình quan tâm.
Mọi ý kiến đóng góp xin gửi về newsletter@grokking.org
Trong số này, chúng ta cùng tìm hiểu về:
  • Cách LinkedIn xây dựng API versioning cho Marketing APIs của họ
  • Thiết kế retry consumer cho Kafka
  • Chi tiết về C++ dequeue
  • Lời giải bài Making File Names Unique
Ngoài ra các bạn vẫn có thể tiếp tục đặt mua ấn phẩm Dijkstra tập 2 tại đây nhé.

Những bài viết hay
Góc Lập Trình
Đề ra tuần này: Max Consecutive Ones III
(by ndaadn)
Cho một chuỗi nhị phân và một số k, bạn được phép đổi nhiều nhất k số 0 thành số 1. Hãy trả lại độ dài lớn nhất của chuỗi số 1 liên tiếp mà bạn có thể tạo được.
Ví dụ:
Input: nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2
Output: 6
Ta có thể đổi 2 số 0 thành số 1 như sau (số được gạch chân)
[1,1,1,0,0,1,1,1,1,1,1]
Lời giải đề bài tuần trước: Making File Names Unique
(by phucnh)
Trước hết ta cần xác định rằng: ta không thể sắp xếp lại mảng đầu vào. Ví dụ với mảng đầu vào như dưới đây, ta sẽ có kết quả hoàn toàn khác nếu thứ tự của các phần tử khác nhau.
original input = ["a", "a(1)", "a(2)", "a"]
output = ["a", "a(1)", "a(2)", "a(3)"]
Nếu ta thay đổi thứ tự của các phần tử, ta có kết quả như sau:
sorted input = ["a", "a", "a(1)", "a(2)"]
output = ["a", "a(1)", "a(1)(1)", "a(2)"]
Như vậy, để xác định xem tên thư mục đã được sử dụng hay chưa, ta có thể sử dụng Set. Nếu tên thư mục đã được sử dụng trước đó, ta tăng giá trị hậu tố lên một đơn vị, rồi tiến hành kiểm tra cho tới khi tên thư mục hoàn toàn mới. Ta có giả mã như sau: https://pastebin.com/fNTxfKT1
Với giải thuật trên, trong trường hợp mảng đầu vào chỉ chứa một giá trị (ví dụ: tất cả phần tử đều là chữ cái “a”), giải thuật có độ phức tạp thời gian lên tới O(n^2 * S), với n là độ dài của mảng đầu vào, S là độ dài tối đa của một phần tử.
Ta có thể tối ưu bằng cách sử dụng HashMap để lưu lại giá trị hậu tố tiếp theo như sau: https://pastebin.com/nbMc35D3
Độ phức tạp thời gian của giải thuật sẽ trở thành amortized O(n*S)
Code & Tools
Feedback
Bạn đánh giá nội dung số newsletter này thế nào?
(1 = Rất tệ / 5 = Rất tốt)
👎 1 ——-2 —— 3 —— 4 —— 5 👍
(Việc đánh giá của các bạn là rất quan trọng, sẽ giúp chúng tôi liên tục cải thiện nội dung newsletter tốt hơn)
Grokking mang lại cho các bạn những kiến thức mới mẻ và hữu ích thông qua:
  • Tech Talk: Là một hoạt động thường xuyên của Grokking từ những ngày đầu thành lập. Tại đây các diễn giả chia sẻ kiến thức xoay quanh Computer Science và Software Engineer. Các buổi Tech Talk đều được record và upload lên kênh youtube.
  • Knowledge Graph: Tập hợp những nguồn kiến thức phong phú với hơn 1000 bài viết chọn lọc, các đầu sách, khóa học, v.v… Các bài viết đều được gán nhãn để giúp bạn đọc dễ dàng tìm kiếm.
  • Webinar: Là chương trình kết nối các kỹ sư Việt Nam và các kỹ sư đang làm việc tại các công ty công nghệ hàng đầu thế giới.
  • Dijkstra: Một ấn phẩm được xuất bản bởi các thành viên của Grokking. Với những bài viết đào sâu vào kỹ thuật và kiến thức khoa học máy tính.
  • Kipalog: Nền tảng chia sẻ kiến thức dành cho các lập trình viên.
  • Newsletter: Những bài viết hay về công nghệ sẽ được gửi tới bạn hàng tuần qua email.
Chúc các bạn sẽ tìm được nhiều điều mới mẻ khi đến với Grokking và xin hẹn gặp lại các bạn vào tuần sau.
Quotes
A good programmer is someone who always looks both ways before crossing a one-way street.
– Doug Linder
Did you enjoy this issue? Yes No
Grokking Vietnam
Grokking Vietnam

Cảm ơn bạn đã dành thời gian đọc newsletter kỳ này và chúng tôi hi vọng rằng bạn đã khám phá ra một số điều mới mẻ từ các bài viết trên. Các bạn có thể đọc lại các số cũ tại website newsletter.grokking.org

In order to unsubscribe, click here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Created with Revue by Twitter.
Viet Nam