ThanhNT Blog's

Computer, Networking, Embedded Systems, PCB Design

Computer Posts

4 tính chất đặc thù của lập trình hướng đối tượng

Tính chất đặc thù của lập trình hướng đối tượng Với lập trình hướng đối tượng (OOP), có 2 câu hỏi thực dụng: Nó có những tính chất đặc thù gì? Để ta có thể dễ nhớ, dễ hiểu, dễ hình dung về nó. Khi học một ngôn ngữ OOP nào đó, làm sao để kiểm tra xem ta đã nắm bắt được ngôn ngữ này hay chưa, bằng cách viết thử code để diễn tả các đặc thù này bằng cú pháp của ngôn ngữ này?

Từ khóa Static trong lập trình C/C++

Từ khóa Static Mở đầu Khi học C cơ bản, chắc hẳn bạn sẽ gặp cách dùng từ khoá static như ví dụ dưới đây: #include <stdio.h> void count(int i) { static int num = 0; num += i; printf("current value of num: %d\n", num); } int main() { count(1); count(3); return 0; } Kết quả khi chạy chương trình sẽ là: current value of num: 1 current value of num: 4 Biến num khai báo static như trên có 2 đặc điểm:

Từ khóa virtual trong C++

# Tác dụng của từ khoá virtual, tại sao cần có virtual function Một số tài liệu có viết công dụng của Virtual Function như sau: Virtual Function là để khai báo một function ở class cha (base class) mà sau đó các class kế thừa (derived class) có thể override function đó. Nhưng chờ đã, có gì không ổn ở chỗ này, nếu chỉ là để override thôi thì mình hoàn toàn có thể khai báo function ở base class mà không cần virtual thì vẫn được cơ mà.

Cách hiểu đơn giản về Logic Mờ (Fuzzy Logic)

Logic mờ (Fuzzy Logic) Thực sự mà nói, khái niệm này đối với chúng ta (những người không am hiểu sâu về điều khiển tự động) thì quả là cao siêu. (Nghe rất “Mờ” đúng không? :D) Sau bài viết này tôi nghĩ bạn cũng sẽ đỡ mờ hơn giống như tôi. Bài viết này tôi note lại từ một bài viết của 1 thầy bên Đại học Sư Phạm Kỹ Thuật.

WPF - Hiển thị văn bản trong RichTextBox

Hiển thị văn bản trong RichTextBox Bạn có thể để ý rằng trong WPF, RichTextBox không có phương thức add văn bản vào như Text hoặc Contents. Vì vây, bạn sẽ phải điều chỉnh lại một chút để có thể thuần phục control này, ngoài ra bạn cũng có thể hiển thị văn bản đã được định dạng như là in nghiêng, đậm, tô màu cho chữ… vân vân và vân vân.

[C/C++] Include guard trong C và C++

Khi làm quen với C hoặc C++ chắc bạn sẽ rất quen với mấy dòng kiểu như sau ở đầu và cuối mỗi file thư viện .h #ifndef _file_name_h #define _file_name_h /* file content */ #endif Những dòng trên được gọi là Include Guard (thực ra chính xác hơn là #include guard), đến đây thì bạn cũng lờ mờ đoán ra mớ code nhiều dấu thăng ở trên để làm cái gì rồi.

[Dev] Hàm đếm bit nhanh - Fast bit counter

Fast bit counter Mở đầu Bạn đang chăm chú ngắm nghía 1 đoạn code, bỗng nhiên bạn gặp một hàm trông có vẻ rất nguy hiểm như sau: int fbc(unsigned int data) { data = (data & 0x55555555) + ((data >> 1) & 0x55555555); data = (data & 0x33333333) + ((data >> 2) & 0x33333333); data = (data & 0x0F0F0F0F) + ((data >> 4) & 0x0F0F0F0F); data = (data & 0x00FF00FF) + ((data >> 8) & 0x00FF00FF); data = (data & 0x0000FFFF) + ((data >> 16) & 0x0000FFFF); return data; } Một đoạn hàm rất bí ẩn với một loạt các phép toán logic >>, &, +.

[Dev] Tính căn bậc 2 theo cách khác

Tính căn bậc 2 mà không dùng sqrt Vấn đề Trong một buổi phỏng vấn, có một câu hỏi như sau: Hãy viết chương trình C tính căn bậc 2 của số nguyên x Trong chớp mắt, bạn có thể đưa ra ngay lời giải với đoạn code ngắn gọn sau: #include <stdio.h> #include <math.h> int main() { int x; printf("Input x: "); scanf("%d", &x); printf("Sqrt of %d = %f\n", x, sqrt(x)); } Input x: 3 Sqrt of 3 = 1.

Cách thiết lập bonding interface trong RHEL6

Bonding Interface RHEL (Redhat enterprise Linux) cho phép quản trị hệ thống kết hợp nhiều network interface vào thành 1 interface sử dụng bonding module của Linux kernel và một interface bonding. Điều này cho phép 2 network interface hoạt động như 1 interface. Điều này đem lại 2 lợi ích. Tăng độ tin cậy. Bonding module có thể cho phép 2 interface hoạt động ở chế độ active-standby. Khi đường truyền active interface bị lỗi, dẫn đến việc không truyền tải được nội dung, Linux kernel sẽ tự động chuyển qua standby interface.

Lập trình firmware: Từ khóa Volatile trong C

Giới thiệu Trong lập trình nhúng (Embedded system development), ta rất thường hay gặp khai báo biến với từ khóa volatile. Việc khai báo biến volatile là rất cần thiết để tránh những lỗi sai khó phát hiện do tính năng optimization của compiler. Trong bài viết này, ta sẽ tìm hiểu ý nghĩa của từ khóa này, cách sử dụng nó và giải thích tại sao nó quan trọng trong một số trường hợp lập trình với hệ thống nhúng và lập trình ứng dụng đa luồng.