Grokking Newsletter

By Grokking Vietnam

#226 - Giải pháp Cache Invalidation tại Facebook

#229・
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ề:
  • Quá trình hợp nhất xử lý đăng ký và đăng nhập của Uber.
  • Chu kỳ phát triển phần mềm ở Netflix.
  • Giải pháp cache invalidation tại Facebook.
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: Making File Names Unique
(by ndaadn)
Khi tạo một thư mục mới, nếu tên thư mục trùng với tên thư mục hiện có, hệ thống sẽ tự động đổi tên thư mục thành dạng <tên thư mục>(số thứ tự tiếp theo).
Ví dụ:
Thư mục hiện có: “gta”
Thư mục được tạo: “gta” -> hệ thống sẽ tự đổi tên thư mục mới thành “gta(1)”
Đề bài cho một mảng, mỗi phần tử là tên một thư mục sẽ được tạo lần lượt từ trái sang phải. Yêu cầu trả về mảng kết quả bao gồm tên các thư mục sau khi hệ thống đã xử lý đổi tên.
Ví dụ:
- input: names = [“gta”,“gta(1)”,“gta”,“avalon”]
- output: names = [“gta”,“gta(1)”,“gta(2)”,“avalon”]
Lời giải đề bài tuần trước: Verify Preorder Serialization of a Binary Tree
(by ndaadn)
Giả sử mỗi một nút trong cây ứng với một “chỗ trống”, ta có quan sát như sau:
  • Mỗi nút không phải là nút rỗng sẽ chiếm 1 chỗ trống và cung cấp 2 chỗ trống (ứng với 2 nút lá).
  • Mỗi nút lá sẽ chiếm một chỗ trống và không cung cấp chỗ trống nào.
  • Từ mảng đã cho trước, ta chỉ cần xây dựng bằng cách duyệt từ trái sang phải và ứng với mỗi phần tử, kiểm tra số chỗ trống còn lại có đủ để thực hiện xây dựng cây cho phần tử tiếp theo hay không.
Thuật toán như sau, thực hiện duyệt mảng đầu vào từ trái sang phải:
  • Trường hợp nếu gặp một số, ta tăng số chỗ trống lên 2 vì nó cung cấp 2 vị trí cho 2 nút lá, đồng thời giảm số chỗ trống đi 1 vì chính nút này chiếm 1 chỗ trống trong cây.
  • Trường hợp nếu gặp kí tự “#”, tức là nút lá, ta giảm số chỗ trống đi 1.
Nếu mảng đã cho là một cây nhị phân theo thứ tự preorder, thì chỉ sau khi duyệt toàn bộ mảng, số chỗ trống sẽ bằng 0. 
Thuật toán có độ phức tạp thời gian O(N), độ phức tạp không gian O(1). 
Mời các bạn tham khảo cài đặt sau: https://pastebin.com/A0qGJR1m
Code & Tools
  • free-for.dev - Thời nay có một lượng khổng lồ các dịch vụ OpenSource hoặc free dành cho lập trình viên, nhưng không dễ để tìm thấy chúng. free-for.dev giúp chọn lọc và cung cấp danh sách các phần mềm (SaaS, PaaS, IaaS, …) có free tier cho bạn
  • Miro - Một ứng dụng bảng trắng ảo cho phép nhóm của bạn có thể thảo luận, chia sẻ và lên ý tưởng một cách trực tuyến
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 của Grokking.
  • Grokking 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
Punishments include such things as flashbacks, flooding of unbearable emotions, painful body memories, flooding of memories in which the survivor perpetrated against others, self-harm, and suicide attempts.
―Alison Miller, Healing the Unimaginable: Treating Ritual Abuse and Mind Control
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