Top1Dev – no1Dev
[👨💻🇻🇳] Những công cụ giúp làm việc hiệu quả hơn trên Terminal
Với những công việc cần thao tác nhiều với dòng lệnh, một Terminal nhiều màu sắc và hỗ trợ nhiều thao tác sẽ có ích hơn là một Terminal nhàm chán với nền đen và chữ trắng. Vì vậy, ...
[👨💻🇻🇳] MIME Type and Uploaded File Type Detection Problem
The story began in my previous projects. There was a requirement to develop a feature that an administrator can upload a text file containing bad words. The system used these words ...
[👨💻🇻🇳] Bàn về MIME Type và Bài toán Nhận dạng File type khi upload
Câu chuyện bắt đầu trong một dự án nọ, có một yêu cầu được đưa ra phải phát triển tính năng cho phép người quản trị upload một file text chứa các từ bị cấm. Hệ thống sau đó sẽ cập ...
[👨💻🇻🇳] Tìm đường đi ngắn nhất
Thuật toán Dijkstra là một trong những thuật toán cổ điển để giải quyết bài toán tìm đường đi ngắn nhất từ một điểm cho trước tới tất cả các điểm còn lại trong đồ thị có trọng số. ...
[👨💻🇻🇳] Tìm cây khung nhỏ nhất
Ngoài thuật toán Prim, Thuật toán Kruskal cũng là thuật toán cổ điển để giải bài toán tìm cây khung nhỏ nhất (Minimum Spanning Tree) cho đồ thị vô hướng có trọng số. Trong bài viết này ...
[👨💻🇻🇳] Cải tiến dùng Index Priority Queue
Ở phần trước Thuật toán Prim: Cài đặt thuật toán chúng ta đã tìm hiểu qua cách cài đặt thuật toán Prim dựa vào Priority Queue. Tuy nhiên, có một nhược điểm là phải duyệt các cạnh không ...
[👨💻🇻🇳] Bạn đã đặt tên biến, hàm đủ “clean”?
Mỗi lần đọc lại quyển sách Clean Code của tác giả Robert C. Martin, mình lại nhận ra những điều mới để có thể giúp bản thân viết code chuyên nghiệp hơn. Cách đặt tên biến, hàm cũng ảnh ...
[👨💻🇻🇳] Index Priority Queue: Cải tiến Priority Queue
Ở bài viết Priority Queue và những cách cài đặt, mình đã giới thiệu qua cấu trúc Priority Queue, những đặc trưng và cách cài đặt. Tuy nhiên trong một số trường hợp, chúng ta sẽ có nhu ...
[👨💻🇻🇳] Thuật toán Prim: Cài đặt thuật toán
Bài viết Thuật toán Prim: Tìm cây khung nhỏ nhất đã giới thiệu đến các bạn ý tưởng của thuật toán này cũng như từng bước chạy thuật toán. Tiếp theo sẽ là phần hướng dẫn cài đặt thuật ...
[👨💻🇻🇳] Độ phức tạp thời gian của thuật toán
Bàn về độ phức tạp thời gian, mình vẫn thường hay nghe các bạn nói “Một vòng for là $O(N)$, hai vòng for lồng nhau là $O(N^2)$". Thực ra không hẳn là như thế, nó còn phụ thuộc vào số ...
[👨💻🇻🇳] Priority Queue và những cách cài đặt
Hôm nay chúng ta cùng điểm qua một cấu trúc dữ liệu thuộc dòng họ nhà Queue có một tính chất khá đặc biệt - đẩy vào và lấy ra theo độ ưu tiên - chính là Priority Queue. Nó có rất nhiều ...
[👨💻🇻🇳] Thuật toán sort bá đạo
Nghe tên có thể bạn nghĩ rằng khi dùng thuật toán này thì chúng ta có thể rung đùi mà ngủ không cần làm gì hết? Bạn có từng nghe qua thuật toán sort nào mà số phép so sánh bằng 0 chưa? ...
[👨💻🇻🇳] Heap và một số ghi chú
Heap được ứng dụng khá nhiều trong các cấu trúc dữ liệu và giải thuật. Nếu bạn đã nghe qua Heap sort thì chắc chắn sẽ làm quen với khái niệm này. Ngoài ra, Heap cũng còn được ứng dụng ...
[👨💻🇻🇳] Tạo Progress Bar trong Java Console
Là một lập trình viên làm việc khá nhiều với terminal, mình thường xuyên thấy các lệnh chạy trên console cũng có thanh tiến trình để thể hiện phần trăm hoàn thành công việc cũng khá ...
[👨💻🇻🇳] Huffman Decoding: Quá trình giải nén
Ở bài viết Cài đặt thuật toán Huffman Coding, chúng ta đã tìm hiểu cách cài đặt thuật toán Huffman Coding để mã hóa (nén) chuỗi dữ liệu thành chuỗi nhị phân. Trong bài viết này, chúng ...
[👨💻🇻🇳] Cài đặt thuật toán Huffman Coding
Với những ý tưởng của thuật toán Huffman Coding ở bài viết Thuật toán nén Huffman Coding, trong bài viết này chúng ta cùng bàn về cách hiện thực thuật toán này với ngôn ngữ Java. ...
[👨💻🇻🇳] Thuật toán nén Huffman Coding
Nén dữ liệu là phương pháp loại bỏ những thông tin dư thừa trong việc biểu diễn dữ liệu. Nó có nhiều ứng dụng, đặc biệt là trong việc truyền tin vì giúp rút gọn thông tin gửi đi. Có ...
[👨💻🇻🇳] Thuật toán Breath First Search
Breath First Search (BFS) cùng với Depth First Search là những thuật toán cơ bản dùng để duyệt qua đồ thị. Trong bài viết này, chúng ta sẽ cùng làm rõ ý tưởng cũng như cách hiện thực ...
[👨💻🇻🇳] Thuật toán Depth First Search
Cấu trúc Graph (đồ thị) gồm tập các đỉnh kết nối với nhau qua các cạnh. Depth First Search (DFS) là một trong những thuật toán có thể dùng để duyệt qua đồ thị. Ý tưởng như sau: Từ ...
[👨💻🇻🇳] Tổng quan về Đồ thị
Cấu trúc Graph (đồ thị) có rất nhiều ứng dụng trong thực tiễn. Bài viết này sẽ note lại tổng quan những điểm chính về việc implement cấu trúc dữ liệu này. Theo định nghĩa, Đồ thị là ...
[👨💻🇻🇳] Biểu diễn dữ liệu với Box and Whisker Plot
Box and Whisker Plot (còn gọi là Boxplot) là một dạng biểu đồ hay được dùng trong khoa học dữ liệu và thống kê. Trong bài này chúng ta cùng khám phá về Boxplot và một số điểm thú vị ...
[👨💻🇻🇳] Tập tành crawl dữ liệu product của Tiki (Phần 2)
Qua một khoảng thời gian dài, nhiều bạn feedback với mình là code trong bài viết Tập tành crawl dữ liệu product của Tiki không thể chạy được nữa. Không bất ngờ lắm với vấn đề này, mình ...
[👨💻🇻🇳] Logistics Problem (Shopee Code League 2020)
Logistics Problem là challenge thứ x của Shopee Code League 2020 - một cuộc thi về Code và Data kéo dài 2 tháng với các challenge khác nhau. Bài toán Data Analytics lần này tiếp tục là ...
[👨💻🇻🇳] Order Brushing Problem (Shopee Code League 2020)
Shopee Code League là một thử thách lập trình trực tuyến kéo dài 02 tháng bao gồm một loạt các cuộc thi, câu hỏi về thuật toán trực tuyến và hội thảo đào tạo trực tuyến dành cho tất cả ...
Top1Dev – no1Dev