🏋 Top Posts

👉 GPT-4: Hướng dẫn sử dụng MIỄN PHÍ không giới hạn và không cần ĐĂNG KÝ

Chat GPT-3 đã qua. Giờ chúng ta tập trung cho GPT-4. Tôi biết giờ dây đăng ký GPT3 đã khó huống hồ gì GPT-4. Chính vì vậy bài viết này dành cho những bạn nào đang có những lý do sau đây.

👉 async await giá như tôi đọc được bài viết này sớm hơn

Async await trong javascript đã có nhiều bài viết nhưng có lẽ đây là bài viết cuối cùng mà tôi muốn viết về Async await. Một lần làm cho rõ còn hơn lằng nhằng.

👉 Các ví dụ điển hình về hiệu suất vượt trội của Node

Học nodejs. Hãy tưởng tượng một công ty giống như Twitter có thể gọi là ông lớn trong việc sử dụng công nghệ, tính năng chủ yếu của Twitter là phải nhận các tweet của hàng triệu người dùng khắp thế giới và ghi chúng vào cơ sở dữ liệu mỗi ngày.

🏋 New Posts

👉 Hành trình tối ưu MySQL của Lập Trình Viên A cho dự án B - Chi tiết

Thực tế nếu như chúng ta là A, bắt đầu nhận một nhiệm vụ mới với một dự án B. Trong đó B sử dụng nhiều công nghệ trong đó và trong đó có sử dụng MySQL để làm dữ liệu tập trung cho ứng dụng. Giả sử, khi sử dụng prometheus và grafana thì chúng ta thấy hiệu suất truy vấn MySQL cực kỳ chậm, vậy A sẽ bắt đầu lộ trình tối ưu như thế nào? Nếu tôi là A thì sẽ như thế này?

👉 Khi user LOGIN với Tiktok, Instagram... Dữ liệu hàng tỷ được PULL những vẫn mượt mà | CỰU CHIẾN BINH ĐI QUA GIÔNG BÃO CÔNG NGHỆ

Sau khi một user login thành công, để người dùng có sự trải nghiệm mượt mà (như PULL list Friends, Groups) thì các lập trình viên luôn phải tối ưu hiệu suất thông qua nhiều cách, trong đó thuật toán mà họ trải nghiệm đóng góp rất quan trọng cho việc cải thiện song song với đó là cơ sở hạ tầng luôn hỗ trợ đắc lực. Hôm nay chúng ta nói về điều đó.

👉 Performance: User X login, làm sao Y, Z biết X đang Online? Dữ liệu chat trong group được tổ chức như thế nào?

Trong kỹ thuật phát triển Application đặc biệt là app về realtime giống như Messenger, WhatsApp, Line... Thì việc duy trình trạng thái online, offline giữa các User (Friends) hay Group (Chat Group) luôn đòi hỏi tính nhất quán MẠNH là một vấn đề kỹ thuật khó giải quyết trong phát triển app CHAT...

👉 Dự án đã CŨ - Tái hiện cấu trúc CODE từ MVC -> FEAT -> DDD Go Backend

Dự án MVC của chúng tôi vẫn còn hoạt động dù đã triển khai khá lâu, nhưng người dùng không hề biết nội tình trong đó chỉ có chúng tôi (be) mới hiểu được sự nghiêm trọng ần mình ở sau cấu trúc này

👉 JAVA: Đã 30 năm và hoài niệm về hành trình từ mức cơ bản

Có những thứ đơn giản nhưng lại bị bỏ quên để đi tìm những thứ rất phức tạp để học tập và giải quyết NHƯNG lại không bao giờ gặp hoặc ít những vấn đề đó trong cuộc sống.

👉 Series: 10 kịch bản đầu tiên về tối ưu hoá hiệu suất với vị trí Backend (Phần 1 - 10 Sessions)

Trong khi làm việc hay phỏng vấn thì chúng ta sẽ bắt gặp những câu hỏi như, bạn đã tối ưu hệ thống của bạn bao giờ chưa? Nếu có thì tối ưu ở cấp độ (ngôn ngữ hay tham gia stack hệ thống) nào? Và làm như thế nào? Thì đây là câu trả lời cho những bạn gặp trường hợp này.

👉 Tôi sử dụng Redis để lưu thông tin Cart( giỏ hàng) nhưng String hay Hash thì tốt hơn? Tình huống như sau...

Thông thường các lập trình viên sử dụng Redis để lưu thông tin giỏ hàng của khách hàng. Không có gì bàn cãi ở đây, vì giỏ hàng theo thống kê của hệ thống luôn có tỷ lệ truy cập xác xuất luôn cao, vì vậy tránh tình trạng query vào điểm cuối của dữ liệu thì dùng redis sẽ cung cấp và đáp ứng như cầu này. Nhưng việc lưu trữ nó như thế nào cho đúng? Chúng ta ta sẽ xem kịch bản sau đây.

👉 Phân tích chuyên sâu về chức năng Upload Large File: Đến lượt Backend nhờ vả ANH EM FrontEnd

Khi upload một File chúng tôi nhận thấy với 100Mb thì mất 5 giây, rất nhanh sau đó commit và đưa vào version Prod. Nhưng một sự việc đã xảy ra đó là khách hàng VIP muốn upload File có dung lượng 1Gb. Như vậy theo logic thì 5 * 10 = 50 seconds mới có thể upload được File. Sự phàn nàn là điều chính xác

👉 Phân tích chuyên sâu về chức năng đăng nhập: Quy trình thiết kế dữ liệu, xác minh bảo mật và phòng chống MA CÔ | CỰU CHIẾN BINH ĐI QUA GIÔNG BÃO CÔNG NGHỆ

Nhìn vào thì tôi đoán rằng ai cũng rõ vì sao lại sử dụng đúng không? Nó cho chúng ta biết? Thằng nào vào nhà mình, đi bằng cửa nào? đi bằng phương tiện gì? Lúc mấy giờ và để lại dấu vân tay hay không? Điều đó rất tốt cho quá trình lấy dữ liệu để cung cấp cho police điều tra phá án rằng: `Thằng nào vào nhà mình thăm dò, mà không phải là hợp pháp?

👉 Cung cấp câu hỏi phỏng vấn: Bạn đọc tuyển dụng của Bank này, bạn thấy muốn vượt qua thì phải làm gì đúng không?

Bạn đã đọc và thấy đúng không? Chính xác là những nhà tuyển dụng họ rất quan tâm đến việc triển khai nhiều `transaction` cùng một lúc. Vì vậy trọng tâm là bạn muốn apply vào vị trí đó thì nếu như có kịch bản đó xảy ra thì bạn sẽ làm gì?

👉 4 Mức Độ Cô Lập Theo Chuẩn SQL (và MySQL hỗ trợ tất cả!) | CỰU CHIẾN BINH ĐI QUA GIÔNG BÃO CÔNG NGHỆ

Để đơn giản cho việc hiểu về MVCC thì có một kịch bản như sau, cùng một thời điểm thì sẽ xảy ra hiện tượng gì? User X đang xem giá và số lượng sản phẩm Z còn hay không trên hệ thống YYYY, User Y đang order sản phẩm Z và giảm số lượng tồn kho trên hệ thông YYYY...

👉 [JAVA - Excel] Tăng hiệu suất x lần import/export với cách truyền thống: CỰU CHIẾN BINH ĐI QUA GIÔNG BÃO CÔNG NGHỆ

OK xem như đã nắm được kịch bản với 1.000.000 rows và khoảng 50M. Bắt tay vào. NHIỆM VỤ CHÍNH đó là chúng ta phải cải thiện từ `2 phút theo cách thông thường, chúng ta phải giảm xuống 10 seconds`, sau đó sẽ cải thiện tiếp theo cho từng version.

👉 [Kafka - RabbitMQ] Message Queue: CỰU CHIẾN BINH ĐI QUA GIÔNG BÃO CÔNG NGHỆ

Lúc đầu hệ thống triển khai chấm công trên `10.000 công nhân`. Hiện tại API đã cung cấp cho nhiều dịch vụ khác đến lấy dữ liệu của trung tâm. Tôi có thể tóm tắt như sau và hy vọng bạn sẽ hiểu được bản chất của MQ cụ thể là Kafka, RabbitMQ.

👉 API timeline: RPC vs GRPC - Tản mạn ngày xa xưa

RPC vs GRPC: Mặc dù hơi thô nhưng nó đúng là vậy, muốn hiểu về nguyên lý bom ba càng thì hay hỏi các CỰU CHIẾN BINH là có thể hiểu rõ nhất, có đúng không?

👉 [Chuyện cuối tuần #16] - 100% là ai cũng có thể trở thành LẬP TRÌNH VIÊN. Kẻ yếu hay phàn nàn về môi trường...

Kẻ yếu phàn nàn về môi trường, kẻ mạnh tự thay đổi bản thân. Nó đơn giản tới mức hầu như tôi không thể nào áp dụng đúng 100%.

👉 Phỏng vấn GO Backend: Nếu MySQL gặp sự cố trong khi thực hiện transaction, điều gì sẽ xảy ra khi nó được khôi phục (restored)?

Phỏng vấn GO Backend: Hôm nay quả là một ngày thật tuyệt, tôi đã nhận được một câu trả lời từ một anh chàng và có thể nói rằng với câu phỏng vấn "Nếu MySQL gặp sự cố trong khi thực hiện transaction" thì anh ấy đã làm tốt hơn tôi rất nhiều.

👉 MySQL: Tình tờ TEAM đi mua sắm là lụm được bí kíp Table lưu trữ và truy vấn nhanh với hàng trăm triệu dữ liệu

Điều cần làm lúc này là gì? Hôm nay chúng ta sẽ tham khảo một thủ thuật của những người đi trước, họ không có nguồn lực, không có chi phí cao như ngày nay. Nhưng đổi lại họ đã tìm cách vượt qua điều này như thế nào, chúng ta cùng xem xét.

👉 [Chuyện cuối tuần #15] - Sau 6 năm tôi từ bỏ GraphQL, cuộc cãi vã nảy lửa..

Với GraphQL. Tôi cảm thấy đã đủ mệt mỏi với những làn danh giới giữa FE và BE. Việc tự build linh kiện máy tính, bắt buộc bạn phải là người chuyên nghiệp về khía cạnh đó. Hãy trở thành người chơi GAME xuất sắc, thay vì trở thành người mua máy tính chuyên nghiệp, nếu làm tốt bạn là con người tuyệt vời.

👉 [Chuyện cuối tuần #14] - 2025 năm nay chúng tôi sẽ tốt nghiệp và tôi đã sẵn sàng.

Có bạn comment rằng, `lớp chúng tôi 70% không xin được việc làm`. Uhm, tôi nghĩ rằng còn lại 30% là có nghĩa rằng sẽ có việc làm NHƯNG đi đúng ngành thì chắc 20% còn lại 10% là sẽ chọn không đúng NGÀNH.

👉 Hệ thống ĐỒNG THỜI CAO là phải đạt bao nhiêu? QPS = 1.000.000 req/second đúng không?

Hôm nay tôi và các đại ca bàn luận về `high concurrency` và nhân tiện trong bài viết này tôi cũng nói thêm về một số trường hợp xử lý khi bạn bị mặc kẹt trong vấn đề này, thông qua một số biện pháp của một số anh em backend

👉 Cải thiện hiệu suất SELECT COUNT(*) từ 4,2s xuống 0.002s với 13 triệu dữ liệu có đánh đổi gì không?

Tôi có hai table mỗi table có 13 triệu records. Và vẫn là câu lệnh SELECT COUNT(*) nhưng một table mất 4.2s và một table mất 0.002s... Vì sao? Chúng ta sẽ đi tìm hiểu

👉 Với 13 triệu dữ liệu và 4Gb chúng tôi cải thiện tìm kiếm từ 6s còn 1s trong MYSQL không sử dụng ElasticSearch

Đây là một kịch bản có thật được thực hiện lại với một table `(products)` trong MySQL có 13 triệu dữ liệu. Và có 3 tính huống tìm kiếm. Và mỗi tình huống có 3 cách, trong đó có 2 cách sử dụng toán tử `LIKE = '%keySearch%'` và `LIKE = 'keySearch%'`. Như sau:

👉 40 tuổi của ngành lập trình viên tôi chấp nhận buông bỏ...

Tôi biết tôi đang ở đâu và hơn 15 năm kinh nghiệm trong lĩnh vực lập trình dường như không mang lại lợi thế gì khi bạn chấp nhận trong ngành nghề này.

👉 Source Go JAVA API: vetautet - Tích hợp master, slave, sentinel và local cache cải thiện performance API (Link đính kèm)

Dự án vetautet giải quyết bài toán cải thiện hiệu suất READ API, WRITE API, Data consistency, Distributed Transactions, Distributed data... Ngoài java, go còn có nestjs và nodejs...

👉 Thu hồi JWT - Cách hiệu quả vô hiệu hoá devices (iPad, iMac) khi iPhone thay đổi password!

CV quá tốt, như vậy thì hệ thống xxxx.com bạn triển khai cho phép một user login trên được nhiều thiết bị phải không?

👉 JWT Skills: Kịch bản tốt nhất ở đây là gì? Khi JWT khi User logout trên iPhone mà iPad, iMac vẫn hoạt động

Ngoài ra một kịch bản khác nữa được đưa ra ngoài chuyện Logout. Khi logout thì token này đã có trong `tokenBlackList` vì vậy khi một ai đó vô tình lấy lại token này để sử dụng or token này bị rò rỉ (leak) và thời gian token này chưa hết hạn...

👉 #07: OpenSource ShareScreen Go và Nodejs Low latency / High resolution

Mục này sẽ cung cấp hai `OpenSource` về web app ShareScreen được phát triển bởi Go và Nodejs với nhiều tính năng được cải thiện về hình ảnh, độ trễ...

👉 DDD - Project: vetautet - Điều gì khiến bạn lo lắng khi đi phỏng vấn với vị trí Senior? Khấu trừ hàng tồn kho?

Đầu tiên, đừng vội vồ vập, vì chúng ta là những người đã kinh qua không gì phải vội. Hãy nhấn mạnh với họ rằng, công ty bạn đang trừ hàng tồn kho ở giai đoạn nào?

👉 Ở vị trí Front-End gần 2 năm và giờ đây tôi ở vị trí Full-Stack tiệm cận Backend nay tôi muốn chia sẻ lộ trình...

Nhưng nói thêm rằng, nếu từ FE muốn chuyển qua `Back-End(BE)` thì Nest.js không đủ để làm chuyện đó. Vì sao? Tôi có thể kết luận như thế này..

👉 Nestjs, JAVA vì sao chúng ta phải cần IoC (Inverse of Control)

Nếu bạn xuất thấn từ JAVA`, GO và Nestjs thì có lẽ cụm từ `IoC` sẽ xuất hiện tấn suất rất nhiều trong dự án và trong các lần phỏng vấn đúng không?

👉 Khấu trừ hàng tồn kho thì backend sẽ chọn cách nào trong 3 cách sau đây.

Nếu một lập trình viên backend hiểu về hệ thông bán hàng đồng thời CAO hoặc kiến ​​trúc đồng thời cao, bạn có thể thấy rằng khấu trừ hàng tồn kho trong Database này không hoàn hảo và nó có vấn đề ở đây.

👉 Đánh bại sự mông lung của ngành nghề Lập Trình Viên

Trường hợp thứ hai ví dụ muốn xử lý một data trong một `Array()` thì bạn cần phải nắm hai khái niệm chính đó là xử lý `for` với cấp độ bình thường, nhưng khi xử lý một `Array()` lớn thì `for` thôi là chưa đủ, mà thêm khái niệm `Stream()`...

👉 DDD - Project: vetautet.com: Redis Master/Slave: Từng Bước Để Đạt Hiệu Năng Cao (50,000 Orders/Giây)

Vì vậy hãy suy nghĩ nếu như Master bị hẻo thì ai sẽ là người ghi `Slave-01` hay `Slave-02` hoặc `Slave-0N`... Là ai? Công thức nào? Và setup thế nào?

👉 [Cuối tuần #13] - Chúng tôi phụ thuộc quá nhiều vào AI, để bây giờ không thể tự suy nghĩ mỗi ngày...

Vì sao tôi vẫn là một nông dân CODE. Với tôi, tôi sẽ cố gắng không phụ thuộc vào AI trừ khi tôi không còn suy nghĩ được vấn đề gì nữa...

👉 DDD - Project: vetautet.com: Kafka ở cấp độ doanh nghiệp, bài viết này là đủ hãy thêm vào CV của chúng ta.

Thật sự mà nói thời điểm đó khi tôi bắt đầu học về kafka thì lúc đó trên internet có khác ít những blog hay video để triển khai những khái niệm rất mơ hồ như `HW, LEO, LSO, LW` hoặc `ISR và AR là viết tắt của từ gì trong Kafka? Tỷ lệ ISR có nghĩa là gì?` rất khó tìm được đáp án.

👉 Nguyên tắc phân trang trong MySQL với limit X,Y? Vì sao X càng lớn thì timeResponse lại cao...

Chúng ta đều đồng ý rằng, trong MySQL dữ liệu càng nhiều thì query càng chậm. Thực tế như sau, khi sử dụng `limit X,Y` để truy vấn, giá trị `X` càng lớn thì tốc độ truy vấn càng chậm.

👉 [Chuyện cuối tuần #7] - Docker is damaged, kẹt xe làm buổi sáng mất hết năng lượng và nhân vật Anh CAO trong Upstream

Họ đã đưa ra những kiến thức chuẩn bị cho việc `ngồi ghế nóng` kiểu giống như đề mở vậy. Đó là `k8s`, `docker`, và quan trọng là `kafka`. Nhưng đột nhiên hãy xem hình ảnh tôi đang làm

👉 Kafka: Hướng dẫn phỏng vấn dưới góc nhìn của một DEV chuẩn bị layoff (phần 2)

Ngoài trời đang mưa rả rích, tiếng mưa rơi lộp độp trên của kính của văn phòng của một công ty lớn trong ngành sản xuất phần mềm. Trong phòng phỏng vấn, Senior - một kỹ sư dày dạn kinh nghiệm đang trao đổi với Intern - một ứng viên trẻ tiềm năng.

👉 Kafka: Hướng dẫn phỏng vấn dưới góc nhìn của một DEV chuẩn bị layoff.

Gần đây, hiện tại và sắp tới sau khi kỳ tết 2025 thì chuần bị là mùa cao điểm của việc nhảy việc, và nhiều anh em đã gửi các câu hỏi or đã hỏi tôi về các câu hỏi của các stacks ví dụ như phỏng vấn của NVIDIA..

👉 Lập trình đồng thời và Vật cực tất phản - Chuyện cuối tuần

Chuyện cuối tuần - Vật cực tất phản, hôm nay tôi muốn đề cập đến một khái niệm mà tôi đọc qua trong cuộc sống là đúng, nhưng trong lập trình cấp độ ngôn ngữ thì tôi thấy nó chưa đúng, nhưng lạ thay với cấp độ doanh nghiệp thì nó lại đúng. Khái niệm được đề cập như sau: