Lập trình Socket TCP với C++ trên môi trường Linux

Lập trình mạng trên Linux thường dựa trên giao diện Socket API. Socket đóng vai trò là một điểm cuối (endpoint) để thiết lập giao tiếp giữa hai thực thể trên mạng. Đối với giao thức TCP (Transmission Control Protocol), quy trình giao tiếp diễn ra theo mô hình hướng kết nối, đảm bảo tính tin cậy của dữ liệu. Quy trình thiết lập kết nối TCP Mô ...

Đăng vào ngày 29 tháng 10 lúc 06:52

C++ - Tự xây dựng lớp String

Giới thiệu Bài viết này sẽ hướng dẫn cách tự xây dựng các hàm thành viên phổ biến của lớp String trong C++. I. Các biến thành viên và hàm mặc định 1. Biến thành viên class MyString { private: char* m_buffer; // Con trỏ lưu trữ chuỗi size_t m_capacity; // Dung lượng bộ nhớ size_t m_length; // Độ dài thực tế của chuỗi ...

Đăng vào ngày 21 tháng 10 lúc 14:30

Kỹ thuật sử dụng SAFEARRAY trong lập trình COM và ADO với C++

Khi làm việc với các công nghệ như ADO (ActiveX Data Objects) để tương tác với cơ sở dữ liệu trong C++, việc truyền tải các tập hợp dữ liệu thường yêu cầu sử dụng cấu trúc SAFEARRAY. Đây là một kiểu mảng an toàn trong COM, cho phép truyền dữ liệu giữa các tiến trình hoặc các ngôn ngữ lập trình khác nhau. Thực chất, SAFEARRAY thường không đứng đ ...

Đăng vào ngày 13 tháng 10 lúc 01:37

Triển khai Mạng Phát Hiện Đối Tượng OBB với YOLOv8 bằng OpenCV C++

Để triển khai mô hình phát hiện đối tượng xoay (Oriented Bounding Box – OBB) dựa trên kiến trúc YOLOv8 trong môi trường C++, chỉ sử dụng thư viện cv::dnn của OpenCV, bước đầu tiên là có được mô hình ở định dạng ONNX — có thể từ mô hình tiền huấn luyện chính thức hoặc từ phiên bản đã huấn luyện riêng. Mô hình OBB thường nhận đầu vào dạng tensor ...

Đăng vào ngày 11 tháng 10 lúc 01:16

Tối ưu hóa thời gian hoàn thành công việc trên DAG bằng Quy hoạch động

Bài toán lập lịch công việc với các ràng buộc phụ thuộc thực chất là bài toán tìm đường đi dài nhất trên Đồ thị có hướng không chu trình (DAG). Mặc dù hướng tiếp cận tiêu chuẩn thường sử dụng Thuật toán Sắp xếp tô pô (Topological Sort) kết hợp với BFS/DFS, chúng ta hoàn toàn có thể giải quyết vấn đề này một cách tối ưu và gọn gàng thông qua tư ...

Đăng vào ngày 6 tháng 10 lúc 03:36

Chuyển Đổi Số Thành Phiên Âm Tiếng Trung

Trong xử lý dữ liệu gen, các nhà khoa học thường làm việc với các chuỗi số rất lớn, có thể lên tới hàng trăm triệu hoặc thậm chí hàng tỷ. Việc đọc trực tiếp những con số như vậy là điều không dễ dàng. Do đó, cần thiết kế một chương trình giúp chuyển đổi số thành phiên âm tiếng Trung chuẩn xác. Ví dụ: số 1234567009 sẽ được đọc là: 十二亿三千四 ...

Đăng vào ngày 5 tháng 10 lúc 04:05

Chiến lược tìm kiếm DFS và BFS trong giải quyết bài toán không gian trạng thái

1. Khái niệm cốt lõi về tìm kiếm Trong lập trình thuật toán, tìm kiếm (Search) là chiến lược khám phá hệ thống một không gian các lời giải khả thi để tìm ra một hoặc toàn bộ các cấu hình thỏa mãn điều kiện cho trước. Đây là nền tảng của các bài toán tối ưu hóa và tổ hợp khi không có công thức giải trực tiếp. Tìm kiếm theo chiều sâu (Depth-Fir ...

Đăng vào ngày 15 tháng 9 lúc 09:50

Cơ chế Kế thừa và Chuyển đổi Kiểu dữ liệu trong Lập trình Hướng đối tượng C++

Kế thừa là một trong những cột trụ quan trọng nhất của lập trình hướng đối tượng (OOP), đóng vai trò then chốt trong việc tái sử dụng và mở rộng mã nguồn. Thông qua cơ chế này, chúng ta có thể xây dựng các lớp mới dựa trên các đặc tính của những lớp đã tồn tại, giúp cấu trúc chương trình trở nên phân cấp và dễ quản lý hơn. 1. Bản chất của ...

Đăng vào ngày 9 tháng 9 lúc 20:12

C++(socket) phát triển phía server

Bài viết này trình bày về việc phát triển một server sử dụng sockets trong C++. Mục tiêu là tạo một server mạnh mẽ hỗ trợ các chức năng như gửi nhận tin nhắn, thực thi命令, chuyển phát file lớn và giám sát trạng thái client. Cấu trúc tổng quan Kỹ thuật chính: Sử dụng Qt để phát triển giao diện người dùng và xử lý sockets Các lớp chính: MainWin ...

Đăng vào ngày 2 tháng 9 lúc 10:50

Thuật toán nhân hai số nguyên lớn dưới dạng chuỗi

Trong lập trình, việc xử lý các số nguyên cực lớn vượt quá giới hạn của kiểu dữ liệu long long thường yêu cầu chúng ta phải làm việc trực tiếp trên chuỗi (string). Bài toán "Multiply Strings" yêu cầu thực hiện phép nhân hai chuỗi số nguyên không âm mà không được sử dụng các thư viện hỗ trợ số lớn có sẵn hoặc ép kiểu trực tiếp toàn bộ chuỗi sang ...

Đăng vào ngày 23 tháng 8 lúc 14:02