Go - Interface Satisfaction

Trong Golang, việc implement interface không phải là bắt buộc và không cần phải chỉ rõ là một struct đang thực hiện implement interface nào, mà việc đó được thực hiện ngầm định. Khi struct của bạn đủ các method của interface thì nó sẽ được coi là implement interface đó. Chính điều này giúp Go có khả năng flexible cách chúng ta implement một interface cũng như gây khó khăn khi chúng ta muốn tìm ra các struct nào implement interface đó. Vì vậy, bài viết này sẽ đi qua hai phần, phần đầu là tìm hiểu về cách tìm ra các struct nào implement interface đó, phần hai là một thủ thuật nhỏ để bạn có thể truyền implement interface vào một function của thư viện mà bạn viết. ...

20/06/2025

Tối ưu hiệu suất .NET Core In-Process và Out-of-Process

Trong quá trình phát triển phần mềm, việc tối ưu hiệu suất luôn là vấn đề được quan tâm khi triển khai, đặc biệt trong .Net Core. Việc bạn lựa chọn các hosting model nào để chạy sẽ ảnh hưởng quan trọng đến hiệu suất của ứng dụng. Trong .Net có 2 phương pháp để hosting là In Process và Out Of Process. Với từng model sẽ có những ưu và nhược điểm riêng để phù hợp cho nhiều trường hợp khác nhau. Nhưng trước hết, ta hãy thử nghiên cứu về các khái niệm liên quan đến hosting model nhé. ...

10/11/2024

Lazy giúp khởi tạo trong multithread

Ở bài viết Singleton Pattern, tôi có trình bày về một cách đơn giản để tạo Singleton Pattern trong môi trường thread-safe bằng cách sử dụng Lazy. Trong .Net, đây là một class được dùng để khởi tạo an toàn trong môi trường đa luồng. Lazy là gì? Lazy<T> là một lớp giúp bạn trì hoãn việc tạo đối tượng cho đến khi sử dụng đối tượng đó lần đầu tiên, chúng ta có thể gọi là Lazy Initialization hay là khởi tạo chậm đều được. ...

11/08/2024

Lưu trữ dữ liệu tốn ít tài nguyên hơn dựa vào bit trong CSharp

Việc sử dụng bit trong C/C++ có lẽ các bạn đã quá quen thuộc rồi. Trong C/C++ có 1 phần khá hay là bit fields, bạn có thể tạo được nhiều biến chỉ với 1 byte, đương nhiên là trong khuôn khổ số bit đó thể hiện. Nay mình lên thêm một bài dành cho C#. Nói 1 cách chính xác thì nó không giống như bit fields trong C/C++. Nó không tối ưu size của biến trong quá trình runtime, nó dùng để tối ưu khi sử dụng để lưu trữ dữ liệu. Do đó, bài viết này không mô tả khái niệm bit fields mà là thủ thuật sử dụng bit để tối ưu dữ liệu để lưu trữ. Chúng ta sẽ đi xuyên suốt bài viết này và cùng so sánh điểm khác biệt giữa C/C++ và C#. ...

06/08/2024

Hiểu về từ khoá this trong Javascript

Với các bạn từng học các ngôn ngữ hướng đối tượng khác ví dụ như C#, Java,.. thì chắc hẳn bạn đã rất quen với khái niệm this . Và khi mình tìm hiểu một chút về từ khoá này thì mỗi ngôn ngữ sẽ có cách sử dụng khá khác nhau. Nhưng nhìn chung, mọi ngôn ngữ đều chung một mục đích hay sử dụng là phân biệt parameter của function và properties của class, ngoài ra còn một số cách sử dụng khác. Tuy nhiên, trong bài viết này, tôi sẽ trình bày với các bạn từ khoá this trong Javascript. ...

29/04/2024

Đổi grub boot mặc định

Nhiều bạn cài song song hai hệ điều hành cho công việc và học tập như Windows và Linux. Một số bạn thích cài đặt Linux làm hệ điều hành mặc định. Tuy nhiên, cũng có những bạn muốn hệ điều hành chính là Windows. Sau khi bạn cài song song hai OS trên máy tính, thì khi bạn bắt đầu khởi động máy, Grub sẽ xuất hiện để bạn chọn OS mà bạn muốn truy cập vào. Nếu như bạn là người sử dụng Windows làm hệ điều hành mặc định thì việc này sẽ khiến bạn khó chịu. Nhưng đừng lo, bạn vẫn có thể tùy chỉnh menu boot này theo ý thích của mình. ...

23/03/2024

Bit Fields trong C chia nhiều biến chỉ với 1 byte

Struct là một phần không thể thiếu ở trong ngôn ngữ C/C++ nó giúp chúng ta tạo ra kiểu dữ liệu mới để dễ dàng quản lý các biến hơn. Tuy nhiên, có một số điều có thể các bạn chưa biết bí thuật về struct của C/C++. Chúng ta cùng tìm hiểu một trong các bí thuật đó là về Bit Fields, và cách áp dụng nó để tạo ra nhiều biến khác nhau với số bit nhất định nhé. ...

12/04/2021