View profile

#225 - Xây dựng kiến trúc Event-Driven với Kafka, Spark, và Cassandra

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ề:
  • Ý nghĩa thuật ngữ data lake
  • Lý do RisingWave chuyển từ C++ sang Rust
  • Cách xây dựng kiến trúc hướng sự kiện với Kafka, Spark, và Cassandra
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
Một trong những cách để lưu cây nhị phân vào file là ta tiến hành ghi kết quả của việc duyệt cây theo thứ tự trước (preorder traversal), với những nút là null, ta ghi giá trị “#”.
Đề bài cho một chuỗi, hãy kiểm tra chuỗi cho trước xem nó có phải là kết quả của việc duyệt cây theo thứ tự trước hay không.
Ví dụ:
Đầu vào: preorder = "9,3,4,#,#,1,#,#,2,#,6,#,#"
Kết quả: true
Lời giải đề bài tuần trướcNext Permutation
(by ndaadn)
Bài toán yêu cầu tìm hoán vị tiếp theo trong thứ tự từ điển của một số tự nhiên. Cách tiếp cận đầu tiên ta có thể nghĩ tới là sinh tất cả các hoán vị, sau đó tìm hoán vị tiếp theo của số đã cho theo thứ tự từ điển. Giải thuật này đòi hỏi phải sinh tất cả các hoán vị, vì vậy độ phức tạp về thời gian sẽ là O(n!), bởi với mỗi số tự nhiên, ta có tối đa n! hoán vị.
Để giải bài toán này với độ phức tạp thời gian O(n), ta cần áp dụng cách tiếp cận sinh hoán vị mà Donald Knuth đã nêu trong bộ sách nổi tiếng The Art of Computer Programming (TAOCP). Giải thuật gồm ba bước chính như sau:
  1. Tìm vị trí i cuối cùng, sao cho nums[i] < nums[i + 1]
  2. Từ vị trí i + 1, tìm k cuối cùng sao cho nums[k] > nums[i], đổi chỗ của số ở i với k
  3. Đảo ngược mảng con từ vị trí i + 1
Cần lưu ý ở bước 1, nếu ta không có số i nào thoả mãn điều kiện, ví dụ như mảng: [6, 4, 2, 1], thì đây là số cuối cùng theo thứ tự từ điển, ta tìm số tiếp theo bằng cách đảo ngược toàn bộ mảng.
Code & Tools
  • gh-ost - a triggerless online schema migration solution for MySQL
  • delta - an open-source storage framework that enables building a Lakehouse architecture with compute engines including Spark, PrestoDB, Flink, Trino, and Hive and APIs for Scala, Java, Rust, Ruby, and Python.
Quotes
Remember that code is really the language in which we ultimately express the requirements. We may create languages that are closer to the requirements. We may create tools that help us parse and assemble those requirements into formal structures. But we will never eliminate necessary precision—so there will always be code.
― Robert C. Martin
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)
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