text:
OPENLAB-IMAGE PROCESSING
FREE KNOWLEDGE FOR ALL PEOPLE
Tìm kiếm
Display results as :
Số bài
Chủ đề
Tags
Advanced Search
OPENLAB-IMAGE PROCESSING
::
PHÒNG SINH HOẠT CHUNG
::
KHU TÁN GẪU
Share
|
Các tiêu chuẩn của ngôn ngữ lập trình C++
Tác giả
Thông điệp
jackauk
Thành viên thường
Tổng số bài gửi
:
55
Điểm danh tiếng
:
2
Join date
:
16/08/2015
Age
:
29
Đến từ
:
TP Hồ Chí Minh
Tiêu đề: Các tiêu chuẩn của ngôn ngữ lập trình C++
Wed May 18, 2016 12:24 am
Hai tổ chức tiêu chuẩn quốc tế (the International Standards Organization (ISO) và the International Electrotechnical Commission (IEC) )đã thống nhất ra các bộ tiêu chuẩn cho ngôn ngữ lập trình C++
Cụ thể:
Year C++ Standard Informal name
1998 ISO/IEC 14882:1998[14] C++98
2003 ISO/IEC 14882:2003[15] C++03
2011 ISO/IEC 14882:2011[6] C++11
2014 ISO/IEC 14882:2014[16] C++14
2017 to be determined C++17
NHững điều quan trọng của C++01
_________________
Em gọi ta khi mùa trăng đã dứt
Nắng nhạt phai, còn thanh xuân qua rồi.
Dĩ vãng êm đềm xin trôi, trôi mãi
Để ta lớn lên, bước về trời xa
Nếu một mai quay về còn gặp lại
Nửa đời thương nhớ, nửa đời vấn vương
Hoa kia xin cài vào miền quá khứ
Để nồng nàn góc phố ta gặp nhau.
Được sửa bởi jackauk ngày Wed May 18, 2016 9:50 pm; sửa lần 4.
jackauk
Thành viên thường
Tổng số bài gửi
:
55
Điểm danh tiếng
:
2
Join date
:
16/08/2015
Age
:
29
Đến từ
:
TP Hồ Chí Minh
Tiêu đề: Re: Các tiêu chuẩn của ngôn ngữ lập trình C++
Wed May 18, 2016 4:46 pm
Sự khác biệt quan trọng giữa C++98 và C++03 với C++11
Chúng ta không bàn về sự khác nhau giữa C++98 với C++03 bởi giữa chúng có rất ít khác biệt. Khi phiên bả C++11 ra đời nó như là bản làm mới C++ bởi những khác biệt của nó với 2 bản tiêu chuẩn trước. Các trình biên dịch hiện nay đều đã cập nhật C++11.
Nguồn đoạn sau từ PCwork
http://www.pcworld.com.vn/articles/cong-nghe/cong-nghe/2014/03/1234591/chuan-c-11-nhu-mot-ngon-ngu-lap-trinh-moi/
Là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới (cùng với C, Objective-C, và Java [1]), C++ được Stroustrup tạo ra vào đầu những năm 1980. Đến năm 1998 C++ đã trở thành một chuẩn (standard) được công nhận, chuẩn này thường được gọi là C++98, qui ước đặt tên chuẩn gắn liền với năm cũng bắt đầu từ đây.
Năm 2005, ủy ban tiêu chuẩn của ISO (với các thành viên là Stroustrup và các lập trình viên C++ hàng đầu trên thế giới [2]) đã thông qua chuẩn C++0x và tới năm 2011, chuẩn C++11 đã chính thức được ban hành với khá nhiều thay đổi quan trọng. Chuẩn tiếp theo của C++ dự kiến sẽ được thông qua vào năm 2014 và sẽ có tên là C++14. Trong bài viết này, nhằm mang lại cho các bạn độc giả một cái nhìn tổng quan, tôi sẽ trình bày về các khía cạnh nổi bật nhất, cùng với một số sách, phần mềm cần thiết để có thể học, hiểu và lập trình theo chuẩn C++11.
Đầu tiên cần phải hiểu rõ mục đích của việc xây dựng các chuẩn mới (C++11, C++14) vì bản thân C++98 (với các khái niệm vẫn đang được phổ biến trong các khóa dạy về lập trình C++, lập trình hướng đối tượng trong các trường đại học và vẫn được các lập trình viên C++ dùng để viết các phần mềm) hoặc C++0x đã ổn định và khá hiệu quả, vậy tại sao lại cần thêm các chuẩn này? Có phải chỉ để đưa vào các khái niệm mới, trừu tượng hơn và chỉ phục vụ cho việc phát triển các thư viện (như STL) hay không? Mục đích của việc đưa ra các chuẩn C++ mới, thể hiện rõ nhất với C++11 (vì C++0x không có nhiều thay đổi lớn so với C++98) là nhằm:
+ Đạt được hiệu năng cao hơn (tốc độ, sử dụng bộ nhớ, tận dụng các cấu trúc phần cứng mới-các bộ xử lý đa nhân ...) với các chương trình viết bằng C++.
+ Hiệu quả lập trình cao hơn qua việc cung cấp các lớp, cú pháp và kỹ thuật lập trình mới nhằm đẩy mạnh xu hướng lập trình generic.
+ Có sự tương thích với các phiên bản C++ cũ (C++98, C++0x).
+ Không đưa thêm vào quá nhiều các khái niệm mới hoặc các tính năng chưa ổn định.
+ Có thể xem chi tiết hơn ở [3].
Trên thực tế có nhiều thứ được đưa vào chuẩn C++11 là đã có và đang được sử dụng rộng rãi như smart pointers, lambda, thread, chrono ... đa số trong số này nằm trong boost [4], một tập các thư viện C++ rất hữu dụng, vì thế những ai đã quen với boost sẽ cảm thấy rất thuận tiện với chuẩn C++11.
Vậy làm thế nào có thể học lập trình C++ theo chuẩn C++11? Đầu tiên là tài liệu, hiện nay có các tài liệu sau:
1. The C++ language, 4th edition, 2013, quyển sách này được viết bởi chính Stroustrup, rất đầy đủ và cập nhật nhưng chủ yếu có tác dụng tra cứu chứ không giúp ích nhiều cho việc triển khai công việc thực tế.
2. Professional C++ 2nd Edition, 2011, một cuốn sách cập nhật (so với C++11) và được đánh giá khá cao.
3. Data Structures and Algorithm Analysis in C++, 4th edition, 2014, một cuốn sách rất mới và hay, viết về cấu trúc dữ liệu và giải thuật với C++ của giáo sư Mark Allen Weiss, Florida International University, cập nhật chuẩn C++11.
4. The C++ Standard Library, 2nd edition, 2012. Một cuốn chuyên lập trình C++ theo chuẩn C++11 với phần lớn nội dung dành cho thư viện STL. Các bạn đang học cấu trúc dữ liệu hoặc STL có thể đọc quyển này và cuốn số 3
5. C++ Concurrency in Action, 2012, của Anthony Williams, cho tới hiện nay, vẫn là cuốn duy nhất viết về lập trình đa luồng (multithread) đầy đủ nhất với C++11. Cuốn này dành riêng cho chủ đề đa luồng, tương tranh.
Tiếp đến là phần mềm, cần phân biệt hai loại, compiler và editor. Về compiler phổ biến nhất là G++ (GNU C++) thuộc GCC, MS VC (Microsoft Visual C++ compiler) thuộc bộ phần mềm phát triển tích hợp Visual Studio của MS. Ngoài ra còn có bộ biên dịch Clang cho Mac OS, bộ compiler của Intel ... Trong khi G++ (từ bản 4.8.1 được phát hành tháng 5-2013) đã cài đặt đầy đủ các tính năng mới của chuẩn C++11 thì MS VC (dù là bản 2013) vẫn còn nhiều tính năng chưa được hỗ trợ (chẳng hạn như constexpr hay list-initialization, có thể là do các developper của MS cho rằng các tính năng đó chưa quan trọng lắm...). Tiếp đến là editor, nếu chọn bộ VS thì không cần lo vấn đề này vì VS nổi tiếng về sự tiện lợi (tất nhiên vẫn có những chỗ hơi bất tiện, nhưng là số ít), ngược lại có thể dùng Orwell DevCpp (được phát triển tiếp từ DevCpp của hãng BloodShed), rất thích hợp cho việc dùng với gcc và môi trường giáo dục, dành cho những ai mới bắt đầu hoặc đơn giản là cấu hình máy tính không thích hợp cho việc cài VS và các phần mềm khác, vì bộ này (cùng với GCC) không cần cài đặt và yêu cầu cấu hình thấp, dung lượng nhỏ. Code::Block là một IDE có nhiều tính năng tiện lợi hơn DevCpp và cũng miễn phí, tiếp đến là Qt Creator, cũng miễn phí và dễ dùng. Mạnh nhất (trong số các phần mềm miễn phí, và cũng khó dùng hơn) là Eclipse. Vì bộ compiler của MS VS không hỗ trợ đầy đủ nên theo tôi nếu có thể thì nên dùng bản VS 2012 Update 4 (đối với các hệ thống cũ 32 bit, chip Core 2 Duo, 4GB Ram) hoặc VS 2013 Update 1 cho cập nhật.
Sau đây là các đặc điểm nổi bật nhất của chuẩn C++11.
1. Khởi tạo theo kiểu danh sách (List initialization)
Tính năng này cho phép chúng ta có thể khai báo và khởi tạo các giá trị ban đầu cho một đối tượng thuộc một lớp chứa nào đó một cách linh hoạt theo cú pháp sau:
Code:
<class type> object = {arg1, arg2, …, argn};
Ví dụ:
vector<int> vi = {2, 8, 0, 3};
vector<string> vs = {“abc”, “xyz”};
Thực chất thì tính năng này C++ học tập từ C (khai báo và khởi tạo mảng) và bắt đầu đưa vào từ chuẩn C++0x, đến C++11 thì hoàn thiện với việc đưa vào lớp bản mẫu std::initializer_list<T> được gọi tới một cách tự động bởi trình biên dịch qua cú pháp {}.
2. Các hàm lambda (còn gọi là lambda expressions)
Xuất phát từ các lớp toán tử hàm (Functor classes), là các lớp cài đặt toán tử gọi hàm operator(), thường được dùng như các vị từ (predicate) cho các thuật toán của thư viện bản mẫu chuẩn STL, lambda được đưa vào chuẩn C++11 để giảm bớt công việc của các lập trình viên mà vẫn đạt được hiệu năng cao. Điều này xuất phát từ thực tế là mỗi khi cần sử dụng một vị từ, một lập trình viên cần phải viết code cho cả lớp toán tử hàm đó (cấu tử, khai báo các thành viên dữ liệu, và toán tử gọi hàm, tất nhiên) nên thường họ có xu hướng viết hẳn một vòng lặp thay vì gọi một vị từ, kết quả là việc tối ưu mã nguồn của trình biên dịch không được thực hiện, đồng nghĩa với hiệu năng chương trình không được cải thiện. Lambda đóng vai trò như một hàm không tên (anonymous/unnamed function) và trình biên dịch sẽ thay thế chúng bằng một con trỏ hàm khi dịch chương trình. Hãy xem ví dụ sau khi chúng ta cần gọi hàm sort() để sắp xếp một mảng số thực lưu trong một vector:
Code:
// kiểu Functor class
class Compare{
public:
bool operator()(const float a, const float b){
return a<b;
}
};
// gọi hàm
vector<float> vf;
// … gán giá trị cho vf;
std::sort(&vf[0], &vf[0] + vf.size(), Compare());
// kiểu mới theo chuẩn C++11 với lambda function
std::sort(&vf[0], &vf[0] + vf.size(), [](float a, float b) {
return a<b;
});
Về hiệu năng không có sự khác biệt vì cả hai hàm so sánh đều là hàm inline, nhưng rõ ràng việc sử dụng lambda cho một cú pháp linh hoạt và đơn giản hơn. Có một điều mà không phải lập trình viên C/C++ nào cũng biết là hàm qsort() nổi tiếng của C cũng hoạt động theo cách tương tự với một hàm so sánh được định nghĩa như toán tử của lớp Compare ở trên, cú pháp gọi hàm cũng tương tự nhưng tốc độ lại chậm hơn 2 lần so với hàm sort() của C++.
Cú pháp khai báo một hàm lambda được thực hiện như sau:
Code:
[<danh sách các biến ngoài và kiểu>](<danh sách các tham số>)-> <kiểu trả về của hàm>{
// câu lệnh
}
Trong đó <danh sách các biến ngoài> cho phép một hàm lambda có thể sử dụng các biến ngoài theo cách mà một hàm bình thường tác động lên các biến nằm trong phạm vi hoạt động của nó, còn <danh sách các tham số> và <kiểu trả về> thì hoàn toàn giống như các hàm C/C++ khác. Cú pháp -> <kiểu trả về của hàm> cũng là một cú pháp mới được bổ sung vào C++11 và được gọi là trailing return type. Cú pháp này cho phép khai báo kiểu trả về của một hàm sau prototype của một hàm, một kỹ thuật rất quan trọng khi dùng với các hàm, lớp bản mẫu (xem chi tiết hơn ở 8.1).
Lambda đặc biệt hữu ích khi cần viết các vị từ và Boost (Boost.Lambda và Boost.Phoenix) đã sử dụng khái niệm lambda từ lâu nhưng cho tới mãi chuẩn C++11 (tức là sau 7 năm từ khi STL ra đời) nó mới được đưa thành một chuẩn. Các lập trình viên Python, C# thậm chí đã quen thuộc với khái niệm này từ trước đó.
3. Rvalue reference và move constructor, move assignment
Khái niệm lvalue và rvalue không có gì xa lại đối với các lập trình viên C++, thường trong một câu lệnh gán:
Code:
<đối tượng> = <biểu thức>;
Thì <đối tượng> được gọi là lvalue (left value) còn <biểu thức> được gọi là rvalue (right value) của biểu thức. Một cách logic thì đối tượng lvalue sẽ có giá trị thay đổi, còn đối tượng rvalue sẽ không thay đổi giá trị. Xét chi tiết hơn trong lệnh gán trên, trình biên dịch sẽ thực hiện tính giá trị biểu thức nằm bên trái của phép gán, sau đó gán giá trị tính được vào địa chỉ của giá trị lvalue bên phải của phép gán. Như vậy về bản chất phép gán trên có kết quả lưu vào tham chiếu (qua tên) tới một đối tượng. Tổng quát hơn, bất cứ một biểu thức nào (như lệnh gán, lời gọi hàm …) cần lưu kết quả vào một tham chiếu, nó sẽ là một lvalue. Ngược lại bất cứ biểu thức nào trả về giá trị dưới dạng một đối tượng thì đó chính là một rvalue. Vấn đề của các rvalue là chúng có thời gian tồn tại rất ngắn trong chương trình, do chỉ dùng cho các biến tạm, trung gian nên cần phải gán chúng cho các lvalue để có thể dùng lại sau này.
Khái niệm rvalue reference ra đời giúp kéo dài tuổi thọ của các đối tượng rvalue và hơn thế nữa, nó giúp cho việc lập trình hiệu quả hơn rất nhiều. Chúng ta hãy xem ví dụ đơn giản sau:
Code:
vector<VerybigType> v1;
for(int i=0;i<n;++i)
{
VerybigType bigObj;
….
v1.push_back(bigObj);
}
Khi đoạn mã lệnh trên được thực hiện, mỗi lần lặp môt bản sao của bigObj sẽ được tạo ra, và sau đó được dùng để tạo ra đối tượng v1[i] qua hàm copy constructor. Tiếp đến đối tượng bản sao cũng sẽ bị hủy. Có thể thấy rằng việc truyền đối tượng bigObj như vậy sẽ là một thao tác tốn thời gian (cấp phát bộ nhớ, copy dữ liệu) vì kích thước của nó có thể rất lớn. Rvalue reference giúp chúng ta giải quyết vấn đề này như sau:
Code:
vector<VerybigType> v1;
for(int i=0;i<n;++i)
{
VerybigType bigObj;
….
v1.push_back(std::move(bigObj));
}
Ở đây, C++11 thực hiện một kỹ thuật gọi là move semantics để tối ưu code chương trình với các đối tượng rvalue reference dựa trên nguyên lý làm giảm số thao tác cấp phát (allocate) và copy dữ liệu của các đối tượng có kích thước lớn. Trong ví dụ trên khi thực hiện câu lệnh v1.push_back(std::move(bigObj)), thay vì tạo ra một bản sao của bigObj và thực hiện hàm copy constructor của lớp VerybigType, trình biên dịch sẽ thực hiện chuyển (move, không phải copy) toàn bộ nội dung của bigObj cho đối tượng v1[i], với std::move(bigObj) là một rvalue reference, điều này giúp tránh được việc loại bỏ đối tượng bigObj khỏi bộ nhớ, cũng như việc thực hiện copy dữ liệu (qua phép việc gọi hàm copy constructor) từ bigObj sang v1[i]. Rõ ràng là một công đôi việc.
Để thực hiện kỹ thuật move semantics, các lớp cần cài đặt hai hàm: move constructor và move assignment operator với prototype như sau:
Code:
<class name>::<class name>(<class name> && rhs); // C++11 move constructor
<class name> & <class name>::operator=(<class name> && rhs); // C++11 move assignment operator
Trong đó “&&” là cú pháp khai báo một rvalue reference. Dù có sự khác nhau về cách thức thực hiện và ý nghĩa, nhưng hai hàm này đều có điểm chung là tham số đầu vào là một rvalue reference và đối tượng được tham chiếu đến sẽ bị loại bỏ sau khi dữ liệu của nó được chuyển (move) cho đối tượng nhận giá trị trả về của hàm. Hầu hết các lớp chứa của thư viện STL C++11 (trừ lớp std::array) đều cài đặt hai hàm trên.
4. Delete and default functions
Một lớp C++11 sẽ có 6 loại hàm thành viên đặc biệt dùng để tạo, hủy, khởi tạo, chuyển đổi kiểu và sao chép các đối tượng:
+ Các hàm tạo mặc định (Default constructors)
+ Các hàm hủy (Destructors)
+ Các hàm tạo copy (Copy constructors)
+ Các hàm toán tử gán copy (Copy assignment operators)
+ Các hàm tạo move (Move constructors)
+ Các hàm toán tử gán move (Move assignment operators)
Một cách tự nhiên, các trình biên dịch có nhiệm vụ tự sinh các hàm này khi chúng được gọi đến mà không được lập trình viên xây dựng cho lớp của mình và thường thì nhiệm vụ này được trình biên dịch thực hiện tốt. Nhưng có hai trường hợp nảy sinh: thứ nhất là có một số hàm mà bạn không muốn trình biên dịch tự sinh vì bạn không muốn hàm đó, thứ hai là khi bạn có một hàm tạo (chẳng hạn như hàm tạo có tham số nhưng không không phải mặc định) thì trình biên dịch sẽ không tự động sinh các hàm tạo mặc định nữa nhưng bạn vẫn muốn có hàm đó. Để giải quyết hai tình huống này, C++11 đưa ra hai từ khóa chỉ định cho các hàm là default và delete, hãy xem ví dụ sau:
Code:
class X{
public:
X(int v){
// cài đặt
}
X() = default; // bạn đã có hàm tạo có tham số nhưng vẫn muốn hàm tạo mặc định
X(unsigned int) = delete; // không muốn một hàm tạo làm việc với kiểu unsigned int
X & operator=(const X& r) = delete; // không có hàm gán copy cho lớp này
};
Ngoài ra, một mục đích khác của hai từ khóa này là cho phép các hàm đặc biệt trên có thể là các hàm ảo, protected (không phải public).
5. Smart pointers
Smart pointers (tạm dịch là các con trỏ thông minh) là các đối tượng có cách làm việc giống như các con trỏ thông thường trong C/C++ (gọi là built-in/raw pointers, với các toán tử tham chiếu lại *, ->) nhưng có thêm một chức năng khác là quản lý các đối tượng được tạo ra bằng toán tử new: các đối tượng này sẽ được tự động xóa bỏ theo một cách thích hợp nhất và các lập trình viên sẽ không cần phải quan tâm tới việc quyết định xem cần loại bỏ chúng khi nào và ở đâu trong chương trình của mình. Các con trỏ thông minh thực hiện việc quản lý các đối tượng được cấp phát động dựa trên cơ chế quyền sở hữu (ownership) đối tượng: đoạn mã nào của chương trình sẽ thực hiện loại bỏ đối tượng khỏi bộ nhớ chương trình. Nếu không có các smart pointers, chúng ta chỉ có một cách duy nhất để loại bỏ các đối tượng cấp phát động bằng toán tử delete. Nhưng không phải lúc nào chúng ta cũng thực hiện được điều này một cách tường minh: một lệnh gán con trỏ sai sẽ làm mất địa chỉ của biến đã cấp phát, hoặc chương trình gặp lỗi không mong muốn trước khi có thể thực hiện lệnh delete, cả hai khả năng đều dẫn tới lỗi memory-leak. Với các smart pointers, công việc dọn dẹp này sẽ được thực hiện một cách tự động.
C++11 đưa ra 3 loại smart pointers (file header memory): shared_ptr, unique_ptr và weak_ptr. Shared_ptr thực hiện cơ chế chia sẻ quyền sở hữu tới các đối tượng mà nó trỏ tới: tất cả các con trỏ kiểu này đều có thể sở hữu một đối tượng được tạo ra và đối tượng sẽ bị loại bỏ khỏi bộ nhớ khi con trỏ cuối cùng bị loại bỏ. Weak_ptr thường kết hợp với share_ptr vì con trỏ kiểu này không sở hữu đối tượng, nó đơn giản được sử dụng để trỏ tới đối tượng (còn gọi là tài nguyên của một smart pointer) mà một share_ptr đang nắm giữ để kiểm tra xem đối tượng đó còn tồn tại hay không. Cách duy nhất để tạo ra một weak_ptr là tạo ra các share_ptr và gán cho nó. Kiểu con trỏ unique_ptr chỉ cho phép một con trỏ duy nhất có quyền sỡ hữu đối tượng tại một thời điểm, khi đối tượng có quyền sở hữu này bị loại bỏ, đối tượng mà nó sở hữu cũng sẽ bị loại bỏ.
6. Các hàm final và override
C++11 đưa ra hai từ khóa mới để kiểm soát kế thừa là final và override. Một lớp final sẽ không thể kế thừa, một hàm final sẽ không thể override. Một hàm của một lớp được khai báo với từ khóa override sẽ yêu cầu lớp cơ sở mà nó kế thừa có một hàm virtual với cùng prototype. Nhãn final sẽ giúp trình biên dịch tối ưu hóa lời gọi tới các hàm virtual tương ứng mà không cần thêm các bảng con trỏ hàm ảo để quản lý các hàm này. Còn nhãn override giúp các lập trình viên tránh khỏi các lỗi không đáng có khi một hàm mới hoàn toàn có thể được tạo ra một cách không mong muốn trong lớp kế thừa thay vì override một hàm đã có trong lớp cơ sở.
7. Lập trình song song (parallel programming) và xử lý tương tranh (concurrency management) với các luồng.
Có thể nói việc đưa vào các lớp thread, mutex, atomic, unique_lock, future là điểm nổi bật và đáng giá nhất của chuẩn C++11. Cũng như các đặc điểm đã được trình bày ở trên, đa số các khái niệm này đã có từ khá lâu và đã được sử dụng phổ biến trên thực tế (qua các thư viện như pthread, Windows thread, hay boost::thread) vì chúng cho phép tận dụng được các kiến trúc phần cứng multicores để tăng tốc độ của các chương trình qua cơ chế lập trình song song. Trong khi mục đích của lập trình song song là tăng tốc độ bằng việc chạy nhiều luồng (thread) trên các CPU core khác nhau cùng một lúc và là một lựa chọn không bắt buộc thì xử lý tương tranh là một yêu cầu có tính bắt buộc: trong đa số các chương trình có giao diện đồ họa (hoặc tương tác người dùng theo thời gian thực) và thao tác xử lý nền mất nhiều thời gian, bạn cần ít nhất 2 luồng, một để tương tác với người dùng qua giao diện (foreground thread), luồng còn lại sẽ xử lý công việc chính ở phía nền (background/worker thread).
Là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới (cùng với C, Objective-C, và Java [1]), C++ được Stroustrup tạo ra vào đầu những năm 1980. Đến năm 1998 C++ đã trở thành một chuẩn (standard) được công nhận, chuẩn này thường được gọi là C++98, qui ước đặt tên chuẩn gắn liền với năm cũng bắt đầu từ đây.
Để tạo ra một thread, có thể sử dụng một hàm, một lambda expression, một hàm thành viên của một lớp theo các cú pháp sau:
Code:
#include <thread>
// đối với các hàm
std::thread th(<tên hàm>,<danh sách tham số>);
// sử dụng lambda expression
std::thread th(<khai báo một hàm lambda>);
// đối với các phương thức của lớp
std::thread th(&<tên lớp>::<tên phương thức>,&<đối tượng>, <danh sách tham số>);
trong trường hợp luồng th được khai báo trong một phương thức của lớp thì &<đối tượng> sẽ thay bằng *this. Trong trường hợp phương thức được gọi tới là một overloading function thì ta cần khai báo một con trỏ hàm trỏ tới đúng hàm cần gọi. Để thực hiện luồng, ta gọi tới hàm join() như sau:
Code:
th.join();
Nếu có nhiều luồng, ví dụ:
std::thread th1(<…>); // khai báo luồng 1
std::thread th2(<…>); // khai báo luồng 2
// thực hiện
th1.join();
th2.join();
thì các câu lệnh join() sẽ làm cho các luồng này được thực hiện một cách đồng thời trên các luồng khác nhau của hệ điều hành (cài đặt bên dưới của C++11 thực hiện điều này).
Để tránh hiện tượng data race (còn gọi là race condition) xảy ra khi nhiều luồng cùng truy cập vào một vung dữ liệu và thay đổi nó, các lớp atomic, mutex (cùng với các hàm lock, unlock) có thể được sử dụng để tạo nên các đoạn mã thread-safe (đảm bảo không bị data-race, tại mỗi thời điểm chỉ có một luồng được phép thay đổi vùng dữ liệu chia sẻ).
Lớp future và async cho phép thực hiện các thao tác bất đồng bộ trong chương trình qua các luồng.
Cũng cần lưu ý một điều là cho tới thời điểm này (tháng 2-2014) trình biên dịch gcc 4.8.1 vẫn chưa hỗ trợ std::thread trên môi trường Windows.
8. Một phiên bản STL hiệu quả hơn
Với nhiều cải tiến dựa trên các đặc điểm mới như move semantics, smart pointers, lambda expression thư viện STL của C++11 đã hiệu quả hơn rất nhiều. Phần này trình bày một số đặc điểm khác của chuẩn C++11 được dùng để tăng hiệu năng của việc sử dụng STL, với kết thúc là một ví dụ minh họa sử dụng lớp chứa vector.
8.1. Các biến auto và khai báo kiểu decltype
Trước khi có chuẩn C++11, từ khóa auto đã được sử dụng cho các biến sẽ tự động được giải phóng khỏi bộ nhớ chương trình khi không dùng đến nữa. Mục đích của từ khóa này đã thay đổi, một biến auto của C++11 sẽ được dùng để hướng dẫn cho trình biên dịch tự suy luận ra kiểu phù hợp cho giá trị được dùng để khởi tạo biến đó vào lúc dịch chương trình, giúp tăng hiệu năng lập trình vì sẽ không phải gõ các kiểu có tên dài trong chương trình, ví dụ thay vì viết:
Code:
for(ten_lop_rat_dai it=v.begin();it!=v.end();++it)
ta sẽ viết:
for(auto it=v.begin();it!=v.end();++it)
Tuy nhiên có những trường hợp mà auto cũng không giải quyết được, ví dụ khi ta muốn xây dựng một hàm bản mẫu để nhân hai đối tượng như sau:
Code:
template<typename T1, typename T2>
void func1(T1 obj1, T2 obj2){
auto temp = obj1*obj2;
cout << temp;
}
Hàm func1 này hoạt động tốt nhưng sẽ thế nào nếu chúng ta muốn trả về giá trị là tích của obj1 và obj2 thay vì xuất ra cout? Khai báo kiểu của hàm func1 là T1 hay T2 đều không giúp được vì tích của obj1 và obj2 có thể thay đổi tùy vào kiểu của chúng: nếu T1 là kiểu số, T2 là kiểu ma trận thì kết quả trả về phải là một ma trận, hoặc nếu T1 và T2 là hai vector thì kết quả trả về phải là một số là tích vô hướng của chúng … có rất nhiều tình huống có thể xảy ra. C++11 giải quyết vấn đề này bằng cách đưa ra từ khóa decltype cho phép trình biên dịch có thể suy ra được chính xác kiểu trả về của hàm như sau:
Code:
template<typename T1, typename T2>
auto func2(T1 obj1, T2 obj2)->decltype(obj1*obj2){
return obj1*obj2;
}
Trong trường hợp này, auto không có nhằm mục đích hướng dẫn trình biên dịch tìm đúng kiểu cho hàm mà đơn giản là một phần của cú pháp trailing return type.
Như vậy, theo nghĩa mạnh hơn so với auto, decltype cho phép trình biên dịch suy ra được kiểu trả về của một biểu thức và hoàn toàn có thể dùng thay thế cho auto (trong các vòng lặp ví dụ ở trên) mặc dù điều này là không nên.
8.2. Các hàm non-member begin và end
Hầu như tất cả các lớp chứa của STL đều có các hàm thành viên là begin() và end() để trả về iterator cho phép truy cập tới các phần tử của lớp. Các hàm này cũng được sử dụng trong rất nhiều các thuật toán của STL, tuy nhiên các thuật toán này lại không thể áp dụng với các lớp chứa do người dùng tự xây dựng hoặc các mảng theo kiểu C. C++11 đưa ra hai hàm begin() và end() nhưng không phải là thành viên của bất cứ lớp chứa nào (còn gọi là các free functions). Các hàm này cũng trả về các iterator tới phần tử đầu tiên và cuối cùng của một lớp chứa, và có thể dễ dàng được overloading cho bất cứ lớp hay một mảng bất kỳ nào, thậm chí trong các trường hợp mà các lớp chứa là không thể thay đổi được. Điều này cho phép các lập trình viên viết các đoạn code có tính trừu tượng (generic) hơn. Vì vậy thay vì viết:
Code:
for(auto it=v.begin();it!=v.end();++it)
ta sẽ viết:
Code:
for(auto it=begin(v);it!=end(v);++it)
8.3. Vòng lặp cho các khoảng giá trị (Range-based for loops)
C++11 cung cấp một cú pháp mới cho vòng lặp for dựa trên khoảng giá trị mà nó làm việc như sau:
Code:
for(auto <biến lặp> : <khoảng giá trị>)
<câu lệnh>;
Ví dụ thay vì viết:
for(auto it=begin(v);it!=end(v);++it)
cout << it;
ta sẽ viết
for(auto it : v)
cout << it;
Các mảng và các lớp có cài đặt các hàm non-member begin() và end() đều có thể dùng theo cú pháp này.
8.4. Các hàm đo thời gian mới
Như đã đề cập ở đầu bài viết, rất nhiều thư viện con của boost được đưa vào chuẩn C++11, và một trong số đó là chrono, thư viện làm việc với các kiểu dữ liệu thời gian, ngày tháng. Để làm việc với thời gian thư viện này cung cấp 3 kiểu đồng hồ: system_clock, gắn với thời gian thực của hệ thống, steady_clock với tính năng gần với thời gian thực hơn (không bị giảm giá trị mà chỉ tăng), và high_resolution_clock, lớp biểu diễn đồng hồ với độ chích xác tốt nhất có thể của hệ thống. Sau đây là một ví dụ về đo thời gian thực hiện chương trình với lớp high_resolution_clock:
Code:
#include <chrono>
#include <iostream>
#include <iomanip>
int main()
{
using std::chrono::high_resolution_clock;
using std::chrono::milliseconds;
auto t0 = high_resolution_clock::now();
// thực hiện tác vụ gì đó ...
auto t1 = high_resolution_clock::now();
milliseconds total_ms = std::chrono::duration_cast<milliseconds>(t1 - t0);
std::cout <<"Thoi gian: " << total_ms.count() << " ms\n";
return 0;
}
8.5. Lớp vector: hàm emplace_back() hiệu quả hơn push_back()
Có thể nói lớp vector là một lớp bản mẫu được sử dụng nhiều và hiệu quả bậc nhất của thư viện STL. C++11 giới thiệu hai hàm mới hiệu quả hơn cho lớp vector (cùng với hai lớp chứa khác là list, deque) có tên là emplace_back và emplace_front. Về mục đích, kết quả của hai hàm emplace_back và emplace_front hoàn toàn giống với push_back và push_front. Về cú pháp cũng có sự tương đồng:
Code:
void emplace_back(Type&& _Val); // move emplace_back
void push_back(const Type& _Val); // copy push_back
void push_back(Type&& _Val); // move push_back
Tuy nhiên hàm các hàm emplace có một phiên bản overloading rất hiệu quả:
Code:
void emplace_back(Args&&… args); // in-place emplace_back
phiên bản này cho phép các tham số được dùng khi khởi tạo các đối tượng của một lớp chứa có thể được dùng theo kiểu in-place, tức là một cách trực tiếp để tạo ra một đối tượng mà lớp chứa quản lý thay vì tạo ra đối tượng rồi mới copy hoặc move giống như hàm push_back. Kết quả thực tế cho thấy hàm emplace_back thường nhanh hơn 20% so với hàm push_back (kết quả này thu được trên các lớp user-defined, còn với các kiểu dữ liệu đơn giản thuộc loại built-in như int, float, double hay complex thì hai hàm có tốc độ thực hiện như nhau).
Để kết thúc chúng ta hãy xem xét hai chương trình nhỏ sau:
chương trình C++ theo chuẩn C++0x:
Code:
#include <iostream>
#include <ctime> // clock functions
#include <vector>
using namespace std;
int main()
{
clock_t startTime = clock();
vector<vector<int> > V; // cú pháp > >, cần có một dấu cách
for(int k = 0; k < 200000; ++k) {
vector<int> vi(1000,k);
V.push_back(vi);
}
clock_t endTime = clock();
cout << "Time is:" << (float)(endTime-startTime)/CLK_TCK << endl;
return 0;
}
chương trình theo chuẩn C++11:
Code:
#include <iostream>
#include <chrono> // clock functions
#include <vector>
#define TEST_C11_COPY 0 // 1 de test push_back copy
#define TEST_C11_MOVE 1 // 1 de test push_back move
using namespace std;
int main()
{
auto startTime = chrono::high_resolution_clock::now();
vector<vector<int>> V;
// không cần dấu cách, trình biên dịch đủ thông minh để hiểu >> không phải một toán tử
for(int k = 0; k < 200000; ++k) {
vector<int> vi(1000,k);
if(TEST_C11_COPY)
V.push_back(vi);
if(TEST_C11_MOVE)
V.push_back(std::move(vi));
}
auto endTime = chrono::high_resolution_clock::now();
auto total = chrono::duration_cast<chrono::milliseconds>(endTime-startTime);
cout << "Time is:" << total.count() << endl;
return 0;
}
Và đây là kết quả thực hiện chương trình (biên dịch với Orwell DevCpp 5.6.1, Gcc 4.8.1):
Chương trình Thời gian thực hiện (mili giây) Ghi chú
Code:
C++0x push_back 1638 C++0x
C++11 push_back copy 648 ISO C++11
C++11 push_back move 578 ISO C++11
Có thể thấy rõ sự cải thiện của tốc độ thực hiện chương trình khi chuyển từ C++0x sang C++11 cũng như sự hiệu quả của việc thực hiện cơ chế move semantics trong bảng trên.
Trong một khuôn khổ của một bài viết, không có nhiều chỗ cho các chi tiết cụ thể và tất cả các tính năng khác của chuẩn C++11, vì vậy muốn biết tường tận hơn các bạn có thể tham khảo trong các tài liệu mà tôi đã liệt kê ở phần đầu. Cuối cùng tôi muốn đưa ra một vài lý do để trả lời cho câu hỏi: Tại sao nên học C++11? Tất nhiên mỗi ngôn ngữ lập trình đều có điểm mạnh riêng của nó nhưng việc học và sử dụng C++ mang lại hai ưu thế sau: thứ nhất, nếu bạn biết C++, việc học một ngôn ngữ lập trình thứ hai sẽ trở nên dễ dàng hơn rất nhiều vì cú pháp, các nguyên lý lập trình của C++ là khởi nguồn cho các ngôn ngữ lập trình hiện đại khác. Thứ hai và quan trọng nhất, lập trình C++ cho phép tạo ra các chương trình có hiệu năng cao nhất một cách hiệu quả nhất. Điều này đạt được là do C++ có một hệ thống cú pháp linh hoạt và có thể sử dụng rất nhiều các thư viện mạnh và ổn định (như Boost, STL, OpenCV, OpenCL, CUDA, AMP, TBB, MKL, OpenBLAS …) cho phép tận dụng tối đa sức mạnh của các hệ thống phần cứng đa nhân, không đồng nhất hiện nay để xử lý các bài toán dữ liệu lớn (như nhận dạng mẫu, học máy, khai phá tri thức, điều khiển tự động ..) ngày càng xuất hiện nhiều hơn và là một xu thế tất yếu của tương lai.
Mặc dù đã dành nhiều tâm huyết và thận trọng trong việc trình bày các khái niệm và các ví dụ liên quan tới chuẩn C++11 trong bài viết nhưng vẫn có thể có những thiếu sót. Rất mong nhận được sự góp ý chân thành của các bạn độc giả, mọi ý kiến, thắc mắc xin gửi về địa chỉ email:
tuannhtn@gmail.com
.
Một số thông tin sử dụng trong bài viết lấy từ các nguồn sau:
1. Chỉ số TIOBE đánh giá độ phổ biến của các ngôn ngữ lập trình,
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html.
2. “The most important C++ people… ever”,
http://www.artima.com/cppsource/top_cpp_people.html.
3. “C++ and Beyond 2011: Herb Sutter - Why C++?”,
http://channel9.msdn.com/posts/C-and-Beyond-2011-Herb-Sutter-Why-C.
4. Boost C++ libraries,
http://www.boost.org
_________________
Em gọi ta khi mùa trăng đã dứt
Nắng nhạt phai, còn thanh xuân qua rồi.
Dĩ vãng êm đềm xin trôi, trôi mãi
Để ta lớn lên, bước về trời xa
Nếu một mai quay về còn gặp lại
Nửa đời thương nhớ, nửa đời vấn vương
Hoa kia xin cài vào miền quá khứ
Để nồng nàn góc phố ta gặp nhau.
Được sửa bởi jackauk ngày Thu May 19, 2016 10:21 pm; sửa lần 2.
jackauk
Thành viên thường
Tổng số bài gửi
:
55
Điểm danh tiếng
:
2
Join date
:
16/08/2015
Age
:
29
Đến từ
:
TP Hồ Chí Minh
Tiêu đề: Re: Các tiêu chuẩn của ngôn ngữ lập trình C++
Wed May 18, 2016 9:52 pm
Dưới đây là bản dịch từ C++11 FAQ của Ngài Bjarne Stroustrup_ người đặt viên gạch đầu tiên cho C++ và dẫn hướng cho quá trình phát triển của C++ từ khi nó được thai nghén cách đây hơn 40 năm.
[markP=0]
Mục lục
[/markP]
[GoTo=1]
__cplusplus
[/GoTo]
[GoTo=2]
auto -- deduction of a type from an initializer
[/GoTo]
[GoTo=3]
Range-for statement
[/GoTo]
[GoTo=4]
right-angle brackets
[/GoTo]
[GoTo=5]
control of defaults: default and delete
[/GoTo]
[GoTo=6]
control of defaults: move and copy
[/GoTo]
[GoTo=7]
enum class -- scoped and strongly typed enums
[/GoTo]
[GoTo=8]
constexpr -- generalized and guaranteed constant expressions
[/GoTo]
decltype -- the type of an expression
10
Initializer lists
10
Preventing narrowing
12
Delegating constructors
13
In-class member initializers 13
Inherited constructors
15
Static (compile-time) assertions -- static_assert
16
long long -- a longer integer
17
nullptr -- a null pointer literal
17
Suffix return type syntax
17
template alias (formerly known as "template typedef")
18
Variadic Templates
19
Uniform initialization syntax and semantics
22
Rvalue references
23
unions (generalized)
25
PODs (generalized)
26
Raw string literals
27
User-defined literals
28
Attributes
29
Lambdas
30
Local types as template arguments
32
noexcept -- preventing exception propagation
32
alignment
34
Override controls: override
34
Override controls: final
35
C99 features
36
Extended integer types 37
Dynamic Initialization and Destruction with Concurrency 37
thread-local storage (thread_local) 37
Unicode characters 37
Copying and rethrowing exceptions 37
Extern templates 38
Inline namespace 38
Explicit conversion operators 39
Algorithms improvements 40
Container improvements 42
Scoped allocators 43
std::array 45
std::forward_list 46
Unordered containers 46
std::tuple 47
metaprogramming and type traits 48
std::function and std::bind 48
unique_ptr 49
shared_ptr 51
weak_ptr 52
Garbage collection ABI 53
Memory model 54
Threads 56
Mutual exclusion 59
Locks 61
Condition variables 63
Time utilities 63
Atomics 65
std::future and std::promise 65
std::async() 67
abandoning a process 68
Random number generation 68
Regular expressions 70
Concepts 70
Concept maps 72
Axioms 72
__cplusplus
[markP=1][/markP]
Ở C++11 macro
_cplusplus
sẽ được đặt giá trị lớn hơn giá trị hiện tại là
199711L
auto -- deduction of a type from an initializer(Suy luận kiểu từ một khởi tạo)
[markP=2][/markP]
Xem xét
Code:
auto x= 7;
Ở đây x sẽ có kiểu int vì đấy là kiểu mà nó được khởi tạo. Nói chung, chúng ta có thể viết
Code:
auto x = expression
và kiểu của x sẽ là kiểu của giá trị tính toán từ "expression".
Việc sử dụng
auto
để suy luận kiểu của biến từ khởi tạo của nó, rõ ràng là cách hiệu quả nhất khi mà kiểu của biến khó biết chính xác cũng như khó để viết ra. Hãy xem:
Code:
template<class T> void printall(const vector<T>& v)
{
for (auto p = v.begin(); p!=v.end(); ++p)
cout << *p << "\n";
}
Ở C++98, chúng ta thường viết
Code:
template<class T> void printall(const vector<T>& v)
{
for (typename vector<T>::const_iterator p = v.begin(); p!=v.end(); ++p)
cout << *p << "\n";
}
KHi mà kiểu của biến phụ thuộc rất nhiều vào template của đối số, thực sự rất khó để viết code nếu không có
auto
. Ví dụ:
Code:
template<class T, class U> void multiply(const vector<T>& vt, const vector<U>& vu)
{
// ...
auto tmp = vt[i]*vu[i];
// ...
}
Kiểu của
tmp
là thứ bạn nhận về từ phép nhân của
T
và
U
, nhưng chính xác là gì thì khó cho người đọc tính ra, dĩ nhiên là trình biên dịnh tính toán ra cụ thể T và U và nó xử lý chúng.
Tính năng
auto
được phân biệt sớm nhất để được đề xuất và hiện thực.
Trong C++98 và C99,
auto
chỉ có nghĩa là "đây là biến cục bộ". Rõ ràng là nó không còn hợp lý trong thực tế nữa. Từ C++11 nó có nghĩa là "khai báo kiểu một cách tự động".
Range-for statement
[markP=3][/markP]
Một loạt những câu lệnh cho phép bạn lặp lại thông qua một "range", Đấy là thứ mà bạn lặp lại tương tự nhưu một STL-sequence định nghĩa bởi begin() và end(). Các lớp/ tổ chức chứa dữ liệu tiêu chuẩn có thể sử dụng như là một "range" ví dụ như là std::string, list, array hay bất kế thứ gì mà mà bạn có thể định nghĩa được begin() và end(), ví như một istream. Ví dụ:
Code:
void f(vector<double>& v)
{
for (auto x : v) cout << x << '\n';
for (auto& x : v) ++x; // using a reference to allow us to change the value
}
Bạn có thể đọc là "cho tất cả x thuộc v" thực hiên từ v.begin() lặp lại tới v.end(). Ví dụ khác
Code:
for (const auto x : { 1,2,3,5,8,13,21,34 }) cout << x << '\n';
.
begin()
( và
end()
) có thể là một thành viên được gọi
x.begin()
hay một hàm độc lập được gọi
begin(x)
. Mà phiên bản đầu được ưu tiên.
right-angle brackets
[markP=5][/markP]
Hãy xem:
Code:
list<vector<string>> lvs;
Ở C++98 đâu là lỗi cú pháp vì không có khoảng trắng giữa 2 dấu >. C++11 nhận dạng rằng 2 dấu > như là một điểm kết thúc đúng của hai list với các mẫu đối số.
Tại sao điều này từng là một vấn đề? Một trình biên dịch front-end được tổ chức dạng phân tích cú pháp/công đoạn. Đây là một mô hình đơn giản nhất:
+Phân tích từ vựng (cập nhật các mã thông báo từ các ký tự)
+Phân tích cú pháp ( kiểm tra ngữ pháp)
+Kiểu tra kiểu (kiểm tra các kiểu của tên hay dấu hiệu)
Các giai đoạn này là trên lý thuyết và thỉnh thoảng tách rời nhau trong thực tế, do vây bộ phân tích từ vừng xác định >> là một token (thường có nghĩa là dịch bit phải hay là ngõ nhập liệu) mà không quan tâm về ý nghĩa của nó; cụ thể nó không không cho rằng đây là một nguyên mẫu hay mẫu đối số của cấu trúc list. Tuy nhiên, để ví dụ trên "đúng" ba gia đoạn có nhiều cách để phối hợp. Nhiều trình biên dịch giải quyết vấn đề này bằng các cảnh báo lỗi hợp lệ.
control of defaults: default and delete
[markP=4][/markP]
Thuật ngữ thông dụng "prohibiting copying" (cấm sao chép) giờ được thể hiện một cách trực tiếp
Code:
class X {
// ...
X& operator=(const X&) = delete; // Disallow copying
X(const X&) = delete;
};
Ngược lại, chúng ta có thể nói trực tiếp là chúng ta muốn có các hành vi copy mặc định
Code:
class Y {
// ...
Y& operator=(const Y&) = default; // default copy semantics
Y(const Y&) = default;
};
Điều rõ ràng về default (mặc định) là không cần thiết. Tuy nhiên, ý kiến về các tiến trình sao chép và việc một người sử dụng xác định một cách rõ ràng về hoạt động sao chép là để đưa ra các hành vi mặc định không phải là hiếm. Để nó cho trình biên dịch để thực hiện các hành vi mặc định thì đơn giản hơn, ít dễ bị lỗi, và thường dẫn đến mã đối tượng tốt hơn.
Cơ chế "mặc định" có thể được sử dụng cho bất kỳ chức năng mà có một mặc định. Cơ chế "delete" có thể được sử dụng cho một số chức năng . Ví dụ, chúng ta có thể loại bỏ một chuyển đổi không mong muốn như thế này:
Code:
struct Z {
// ...
Z(long long); // can initialize with an long long
Z(long) = delete; // but not anything less
};
control of defaults: move and copy
[markP=6][/markP]
Mặc định, một class có 5 tiến trình:
+ copy assignment
+ copy constructor
+move assignment
+ move constructor
+ destructor
Nếu bạn khai báo một vài trong số chúng thì bạn phải xem xét hết và định nghĩa rõ ràng hay mặc định từng cái mà bạn muốn. Nói về copy, move, và destruction với các tiến trình có liên quan, hơn việc bản thân tiến trình mà bạn có thể tự do trộn lẫn và kết hợp_ bạn có thể kết hợp tùy ý, nhưng chỉ có một vài kết hợp có ý nghĩa về mặt ngữ pháp.
Nếu bất kỳ move, copy, hoặc destructor được quy định rõ ràng (khai báo, định nghĩa, =default hay =delete) bởi người dùng, thì không hoạt động move được tạo ra mặc định, bất cứ hoạt động copy không khai báo thì được tạo theo mặc định, nhưng điều này không được khuyến khích, do đó không nên dựa vào điều đó. Ví dụ:
Code:
class X1 {
X1& operator=(const X1&) = delete; // Disallow copying
};
Đoạn code mặc nhiên không cho phép move của những phần tử X1. Sao chép khởi tạo được cho phép nhưng mà bị phản đối.
Code:
class X2 {
X2& operator=(const X2&) = delete;
};
Đoạn code mặc nhiên không cho phép move của những phần tử X2. Sao chép khởi tạo được cho phép nhưng mà bị phản đối.
Code:
class X3 {
X3& operator=(X3&&) = delete; // Disallow moving
};
Điều này mặc nhiên cũng không cho phép sao chép các X3.
Code:
class X4 {
~X4() = delete; // Disallow destruction
};
Điều này mặc nhiên cũng không cho phép di chuyển của X4s. Sao chép được cho phép, nhưng bị phản đối.
Tôi đề nghị rằng nếu bạn khai báo một trong những năm chức năng, bạn khai báo rõ ràng cho tất cả. Ví dụ:
Code:
template<class T>
class Handle {
T* p;
public:
Handle(T* pp) : p{pp} {}
~Handle() { delete p; } // user-defined destructor: no implicit copy or move
Handle(Handle&& h) :p{h.p} { h.p=nullptr; } // transfer ownership
Handle& operator=(Handle&& h) { delete p; p=h.p; h.p=nullptr; return *this; } // transfer ownership
Handle(const Handle&) = delete; // no copy
Handle& operator=(const Handle&) = delete;
// ...
};
enum class -- scoped and strongly typed enums
[markP=7][/markP]
Một lớp kiểu liệt kê ("new enums","strong enums") đặt ra 3 vấn đề với liệt kê với C++ truyền thống:
* Những enum thông thường có thể chuyển đổi ngầm sang kiểu int, gây ra lỗi khi một ai đó không muốn liệt kê này đóng vai trò như một số integer.
* Những enum thông thường xuất các thành phần liệt kê sang các tầm nhìn xung quanh có thể gây xung đột về tên của liệt kê.
* Loại dữ liệu cơ bản của một enum không thể chỉ định, gây ra nhầm lẫn, vấn đề về tương thích, và làm cho việc khai báo tiếp theo là không có khả năng.
Lớp enum ("strong enums") là một kiểu và tầm nhìn mạnh mẽ:
Code:
enum Alert {green, yellow, orange, red}; // Kiểu liệt kê truyền thống
enum class Color {red, blue}; // kiểu và tầm nhìn mạnh mẽ
// không có xuất các tên liệt kê sang cá tầm nhìn đóng
// không có chuyển đổi ngầm sang kiểu int
enum class TrafficLight { red, yellow, green};
Alert a = 7; // error (as ever in C++)
Color c = 7; // error: no int->Color conversion
int a2 = red; // ok: Alert->int conversion
int a3 = Alert::red; // error in C++98; ok in C++11
int a4 = blue; // error: blue not in scope
int a5 = Color::blue; // error: not Color->int conversion
Color a6 = Color::blue; // ok
_________________
Em gọi ta khi mùa trăng đã dứt
Nắng nhạt phai, còn thanh xuân qua rồi.
Dĩ vãng êm đềm xin trôi, trôi mãi
Để ta lớn lên, bước về trời xa
Nếu một mai quay về còn gặp lại
Nửa đời thương nhớ, nửa đời vấn vương
Hoa kia xin cài vào miền quá khứ
Để nồng nàn góc phố ta gặp nhau.
Được sửa bởi jackauk ngày Sun Apr 02, 2017 9:39 pm; sửa lần 12.
jackauk
Thành viên thường
Tổng số bài gửi
:
55
Điểm danh tiếng
:
2
Join date
:
16/08/2015
Age
:
29
Đến từ
:
TP Hồ Chí Minh
Tiêu đề: Re: Các tiêu chuẩn của ngôn ngữ lập trình C++
Thu May 19, 2016 11:03 pm
Giới thiệu về C++14
Xem chất lượng cao nhất ở trang:
https://channel9.msdn.com/Events/CPP/CppCon-2015/Writing-Good-C-14
Đây là phiên bản youtube:
_________________
Em gọi ta khi mùa trăng đã dứt
Nắng nhạt phai, còn thanh xuân qua rồi.
Dĩ vãng êm đềm xin trôi, trôi mãi
Để ta lớn lên, bước về trời xa
Nếu một mai quay về còn gặp lại
Nửa đời thương nhớ, nửa đời vấn vương
Hoa kia xin cài vào miền quá khứ
Để nồng nàn góc phố ta gặp nhau.
Sponsored content
Tiêu đề: Re: Các tiêu chuẩn của ngôn ngữ lập trình C++
Các tiêu chuẩn của ngôn ngữ lập trình C++
Trang
1
trong tổng số
1
trang
Similar topics
Similar topics
»
Hướng dẫn thiết kế lắp đặt điện theo tiêu chuẩn IEC
»
Bài bình luận của thuyền trưởng Tiếu Văn Kinh
»
Các tiêu chuẩn đánh giá ổn định nguyên vẹn tàu
»
Tóm tắt nội dung công ước SOLAS
»
IMO Standard Marine Communication Phrases (SMCP) on CD
Permissions in this forum:
Bạn
không có quyền
trả lời bài viết
OPENLAB-IMAGE PROCESSING
::
PHÒNG SINH HOẠT CHUNG
::
KHU TÁN GẪU
OPENLAB-IMAGE PROCESSING
::
PHÒNG SINH HOẠT CHUNG
::
KHU TÁN GẪU
Chuyển đến
:
Chọn Diễn Đàn
|
|--TIỀN SẢNH
| |--THÔNG BÁO CHUNG
| |--CÁC QUY ĐỊNH CỦA PHÒNG NGHIÊN CỨU MỞ
| |--KHEN THƯỞNG VÀ XỬ PHẠT THÀNH VIÊN
|
|--KHO TÀI LIỆU
| |--TÀI LIỆU VỀ XỬ LÝ ẢNH CƠ BẢN
| |--TÀI LIỆU VỀ NHẬN DẠNG TRONG XỬ LÝ ẢNH
| |--CÁC THƯ VIỆN LẬP TRÌNH XỬ LÝ ẢNH
|
|--PHÒNG HỌC TẬP
| |--HỌC TẬP THEO CHUYÊN ĐỀ
| | |--Những vấn đề cơ bản về máy tính
| |
| |--HỎI ĐÁP VÀ TƯ VẤN
|
|--PHÒNG DỰ ÁN
| |--HCMUTE
|
|--PHÒNG SINH HOẠT CHUNG
| |--KHU TÁN GẪU
| |--ĐOÀN, ĐỘI, HỘI, NHÓM
|
|--HOẠT ĐỘNG XÃ HỘI
|--HOẠT ĐỘNG TỪ THIỆN
Free forum
|
©
phpBB
|
Free forum support
|
Liên hệ
|
Report an abuse
|
Create your own blog

markdown:
OPENLAB-IMAGE PROCESSING
FREE KNOWLEDGE FOR ALL PEOPLE
![]()
![]()
Thành viên thường
![]()
![]()
![]()
![]()
![]()
Dưới đây là bản dịch từ C++11 FAQ của Ngài Bjarne Stroustrup_ người đặt viên gạch đầu tiên cho C++ và dẫn hướng cho quá trình phát triển của C++ từ khi nó được thai nghén cách đây hơn 40 năm.
[markP=0]
Mục lục[/markP]
[GoTo=1]
__cplusplus[/GoTo]
[GoTo=2]
auto -- deduction of a type from an initializer [/GoTo]
[GoTo=3]
Range-for statement[/GoTo]
[GoTo=4]
right-angle brackets [/GoTo]
[GoTo=5]
control of defaults: default and delete [/GoTo]
[GoTo=6]
control of defaults: move and copy [/GoTo]
[GoTo=7]
enum class -- scoped and strongly typed enums[/GoTo]
[GoTo=8]
constexpr -- generalized and guaranteed constant expressions [/GoTo] decltype -- the type of an expression 10 Initializer lists 10 Preventing narrowing 12 Delegating constructors 13 In-class member initializers 13 Inherited constructors 15 Static (compile-time) assertions -- static_assert 16 long long -- a longer integer 17 nullptr -- a null pointer literal 17 Suffix return type syntax 17 template alias (formerly known as "template typedef") 18 Variadic Templates 19 Uniform initialization syntax and semantics 22 Rvalue references 23 unions (generalized) 25 PODs (generalized) 26 Raw string literals 27 User-defined literals 28 Attributes 29 Lambdas 30 Local types as template arguments 32 noexcept -- preventing exception propagation 32 alignment 34 Override controls: override 34 Override controls: final 35 C99 features 36
Extended integer types 37
Dynamic Initialization and Destruction with Concurrency 37
thread-local storage (thread_local) 37
Unicode characters 37
Copying and rethrowing exceptions 37
Extern templates 38
Inline namespace 38
Explicit conversion operators 39
Algorithms improvements 40
Container improvements 42
Scoped allocators 43
std::array 45
std::forward_list 46
Unordered containers 46
std::tuple 47
metaprogramming and type traits 48
std::function and std::bind 48
unique_ptr 49
shared_ptr 51
weak_ptr 52
Garbage collection ABI 53
Memory model 54
Threads 56
Mutual exclusion 59
Locks 61
Condition variables 63
Time utilities 63
Atomics 65
std::future and std::promise 65
std::async() 67
abandoning a process 68
Random number generation 68
Regular expressions 70
Concepts 70
Concept maps 72
Axioms 72
__cplusplus [markP=1][/markP]
Ở C++11 macro
_cplusplus sẽ được đặt giá trị lớn hơn giá trị hiện tại là 199711L auto -- deduction of a type from an initializer(Suy luận kiểu từ một khởi tạo) [markP=2][/markP]
Xem xét
Ở đây x sẽ có kiểu int vì đấy là kiểu mà nó được khởi tạo. Nói chung, chúng ta có thể viết
và kiểu của x sẽ là kiểu của giá trị tính toán từ "expression".
Việc sử dụng
auto để suy luận kiểu của biến từ khởi tạo của nó, rõ ràng là cách hiệu quả nhất khi mà kiểu của biến khó biết chính xác cũng như khó để viết ra. Hãy xem:
Ở C++98, chúng ta thường viết
KHi mà kiểu của biến phụ thuộc rất nhiều vào template của đối số, thực sự rất khó để viết code nếu không có
auto. Ví dụ:
Kiểu của
tmp là thứ bạn nhận về từ phép nhân của T và U, nhưng chính xác là gì thì khó cho người đọc tính ra, dĩ nhiên là trình biên dịnh tính toán ra cụ thể T và U và nó xử lý chúng.
Tính năng
auto được phân biệt sớm nhất để được đề xuất và hiện thực.
Trong C++98 và C99,
auto chỉ có nghĩa là "đây là biến cục bộ". Rõ ràng là nó không còn hợp lý trong thực tế nữa. Từ C++11 nó có nghĩa là "khai báo kiểu một cách tự động". Range-for statement [markP=3][/markP]
Một loạt những câu lệnh cho phép bạn lặp lại thông qua một "range", Đấy là thứ mà bạn lặp lại tương tự nhưu một STL-sequence định nghĩa bởi begin() và end(). Các lớp/ tổ chức chứa dữ liệu tiêu chuẩn có thể sử dụng như là một "range" ví dụ như là std::string, list, array hay bất kế thứ gì mà mà bạn có thể định nghĩa được begin() và end(), ví như một istream. Ví dụ:
Bạn có thể đọc là "cho tất cả x thuộc v" thực hiên từ v.begin() lặp lại tới v.end(). Ví dụ khác
.
begin() ( và end()) có thể là một thành viên được gọi x.begin() hay một hàm độc lập được gọi begin(x). Mà phiên bản đầu được ưu tiên. right-angle brackets [markP=5][/markP]
Hãy xem:
Ở C++98 đâu là lỗi cú pháp vì không có khoảng trắng giữa 2 dấu >. C++11 nhận dạng rằng 2 dấu > như là một điểm kết thúc đúng của hai list với các mẫu đối số.
Tại sao điều này từng là một vấn đề? Một trình biên dịch front-end được tổ chức dạng phân tích cú pháp/công đoạn. Đây là một mô hình đơn giản nhất:
+Phân tích từ vựng (cập nhật các mã thông báo từ các ký tự)
+Phân tích cú pháp ( kiểm tra ngữ pháp)
+Kiểu tra kiểu (kiểm tra các kiểu của tên hay dấu hiệu)
Các giai đoạn này là trên lý thuyết và thỉnh thoảng tách rời nhau trong thực tế, do vây bộ phân tích từ vừng xác định >> là một token (thường có nghĩa là dịch bit phải hay là ngõ nhập liệu) mà không quan tâm về ý nghĩa của nó; cụ thể nó không không cho rằng đây là một nguyên mẫu hay mẫu đối số của cấu trúc list. Tuy nhiên, để ví dụ trên "đúng" ba gia đoạn có nhiều cách để phối hợp. Nhiều trình biên dịch giải quyết vấn đề này bằng các cảnh báo lỗi hợp lệ.
control of defaults: default and delete [markP=4][/markP]
Thuật ngữ thông dụng "prohibiting copying" (cấm sao chép) giờ được thể hiện một cách trực tiếp
Ngược lại, chúng ta có thể nói trực tiếp là chúng ta muốn có các hành vi copy mặc định
Điều rõ ràng về default (mặc định) là không cần thiết. Tuy nhiên, ý kiến về các tiến trình sao chép và việc một người sử dụng xác định một cách rõ ràng về hoạt động sao chép là để đưa ra các hành vi mặc định không phải là hiếm. Để nó cho trình biên dịch để thực hiện các hành vi mặc định thì đơn giản hơn, ít dễ bị lỗi, và thường dẫn đến mã đối tượng tốt hơn.
Cơ chế "mặc định" có thể được sử dụng cho bất kỳ chức năng mà có một mặc định. Cơ chế "delete" có thể được sử dụng cho một số chức năng . Ví dụ, chúng ta có thể loại bỏ một chuyển đổi không mong muốn như thế này:
control of defaults: move and copy [markP=6][/markP]
Mặc định, một class có 5 tiến trình:
+ copy assignment
+ copy constructor
+move assignment
+ move constructor
+ destructor
Nếu bạn khai báo một vài trong số chúng thì bạn phải xem xét hết và định nghĩa rõ ràng hay mặc định từng cái mà bạn muốn. Nói về copy, move, và destruction với các tiến trình có liên quan, hơn việc bản thân tiến trình mà bạn có thể tự do trộn lẫn và kết hợp_ bạn có thể kết hợp tùy ý, nhưng chỉ có một vài kết hợp có ý nghĩa về mặt ngữ pháp.
Nếu bất kỳ move, copy, hoặc destructor được quy định rõ ràng (khai báo, định nghĩa, =default hay =delete) bởi người dùng, thì không hoạt động move được tạo ra mặc định, bất cứ hoạt động copy không khai báo thì được tạo theo mặc định, nhưng điều này không được khuyến khích, do đó không nên dựa vào điều đó. Ví dụ:
Đoạn code mặc nhiên không cho phép move của những phần tử X1. Sao chép khởi tạo được cho phép nhưng mà bị phản đối.
Đoạn code mặc nhiên không cho phép move của những phần tử X2. Sao chép khởi tạo được cho phép nhưng mà bị phản đối.
Điều này mặc nhiên cũng không cho phép sao chép các X3.
Điều này mặc nhiên cũng không cho phép di chuyển của X4s. Sao chép được cho phép, nhưng bị phản đối.
Tôi đề nghị rằng nếu bạn khai báo một trong những năm chức năng, bạn khai báo rõ ràng cho tất cả. Ví dụ:
enum class -- scoped and strongly typed enums [markP=7][/markP]
Một lớp kiểu liệt kê ("new enums","strong enums") đặt ra 3 vấn đề với liệt kê với C++ truyền thống:
* Những enum thông thường có thể chuyển đổi ngầm sang kiểu int, gây ra lỗi khi một ai đó không muốn liệt kê này đóng vai trò như một số integer.
* Những enum thông thường xuất các thành phần liệt kê sang các tầm nhìn xung quanh có thể gây xung đột về tên của liệt kê.
* Loại dữ liệu cơ bản của một enum không thể chỉ định, gây ra nhầm lẫn, vấn đề về tương thích, và làm cho việc khai báo tiếp theo là không có khả năng.
Lớp enum ("strong enums") là một kiểu và tầm nhìn mạnh mẽ:
_________________
Em gọi ta khi mùa trăng đã dứt
Nắng nhạt phai, còn thanh xuân qua rồi.
Dĩ vãng êm đềm xin trôi, trôi mãi
Để ta lớn lên, bước về trời xa
Nếu một mai quay về còn gặp lại
Nửa đời thương nhớ, nửa đời vấn vương
Hoa kia xin cài vào miền quá khứ
Để nồng nàn góc phố ta gặp nhau.
Được sửa bởi jackauk ngày Sun Apr 02, 2017 9:39 pm; sửa lần 12.
![]()
![]()
![]()
Giới thiệu về C++14
Xem chất lượng cao nhất ở trang:
Đây là phiên bản youtube:
_________________
Em gọi ta khi mùa trăng đã dứt
Nắng nhạt phai, còn thanh xuân qua rồi.
Dĩ vãng êm đềm xin trôi, trôi mãi
Để ta lớn lên, bước về trời xa
Nếu một mai quay về còn gặp lại
Nửa đời thương nhớ, nửa đời vấn vương
Hoa kia xin cài vào miền quá khứ
Để nồng nàn góc phố ta gặp nhau.
![]()
![]()
![]()
Các tiêu chuẩn của ngôn ngữ lập trình C++
![]()
|» |
»
»
»
»

P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"

Cache-Control: no-cache

Vary: User-Agent


text:
Top từ khóa: iPhone 7 chính hãng iPhone 6S Oppo F1S trả góp 0% Samsung J7 Prime iPhone cũ
Giỏ hàng của bạn
iPhone 6 16GB Mới 99% Quốc Tế - Máy Zin 100%
Bảo hành 6 tháng, Bao test 7 ngày - Giá: 5.200.000đ
Điện thoại Asus Zenfone chính hãng
GIẢM GIÁ ĐỒNG LOẠT TẤT CẢ CÁC DÒNG
Tặng VOUCHER 1.200.000đ khi mua OPPO F3 PLUS
Danh mục: Tin công nghệ
Đánh giáBình luận
Đánh giá: (4.6 trên 15 bình chọn)
23:25:15 03-03-2017
06:36:40 22-12-2016
05:50:56 19-12-2016
06:58:03 24-11-2016
13:37:34 05-11-2016
03:18:35 08-10-2016
Cửa hàng 1: 631 Đường 3 tháng 2, Phường 8, Quận 10.
Cửa hàng 2: 147 Nguyễn Văn Đậu, Phường 5, Q.Bình Thạnh.
Cửa hàng 3: 87 Trần Quang Khải, Phường Tân Định, Quận 1.
Giờ mở cửa: 08h30 - 20h00

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Truncated: length

WARC-Identified-Payload-Type: text/html

Server: nginx

Connection: close

Pragma: no-cache

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Vary: Accept-Encoding

Content-Type: text/html; charset=UTF-8


text:
Với hơn 10 năm kinh nghiệm trong lĩnh vực thu mua phế liệu, Công ty Thiên Phát là đối tác tin cậy của nhiều khách hàng thu mua phế liệu tại khu vực miền nam, đặc biệt là TPHCM, Bình Dương, Đồng Nai, Long An... bởi chúng tôi mang đến mức gia thu mua cao nhất & thu mua vận chuyển tận nơi cho quý khách hàng. Chúng tôi rất hân hạnh được làm đối tác thu mua phế liệu lâu dài của quý khách. Chúc quý khách hàng sức khỏe & thành đạt!
LIÊN HỆ TƯ VẤN & BÁO GIÁ PHẾ LIỆU 0933.378.266 - 0976.671.266

Vary: Accept-Encoding,Cookie,User-Agent


text:
Thu mua phế liệu nhựa – Bạn đang cần bán nhựa phế liệu HD, PP, PE, PS, PVC,E…? các loại nhựa phế liệu này thường có ở các công ty sản xuất các sản phẩm nhựa hoặc sản phẩm có một số bộ phận bằng nhựa..
Công ty Thiên Phát chuyên thu mua phế liệu giá cao. Tất cả các chủng loại phế liệu nhựa PVC, HD, PE, PS, PP thường có ở các công ty, xưởng sản xuất gia công đồ nhựa đều được chúng tôi thu mua lại với giá cao và cạnh tranh nhất trên thị trường.
Chúng tôi có xe vận tại đến thu mua phế liệu nhựa tại địa điểm theo yêu cầu cho quý khách hàng!
Nếu quý Công ty hoặc quý khách có nhu cầu thanh lý nhựa phế liệu thì hãy LIÊN HỆ ĐỂ ĐƯỢC TƯ VẤN & BÁO GIÁ PHẾ LIỆU 0976.671.266 (Mr Thiên) – 0933.378.266 (Mr Sơn)

markdown:
**Thu mua phế liệu nhựa** – Bạn đang cần bán **nhựa phế liệu** HD, PP, PE, PS, PVC,E…? các loại nhựa phế liệu này thường có ở các công ty sản xuất các sản phẩm nhựa hoặc sản phẩm có một số bộ phận bằng nhựa..
Công ty Thiên Phát chuyên
**. Tất cả các chủng loại phế liệu nhựa PVC, HD, PE, PS, PP thường có ở các công ty, xưởng sản xuất gia công đồ nhựa đều được chúng tôi thu mua lại với giá cao và cạnh tranh nhất trên thị trường. thu mua phế liệu giá cao**
Chúng tôi có xe vận tại đến thu mua
**phế liệu nhựa** tại địa điểm theo yêu cầu cho quý khách hàng!
Nếu quý Công ty hoặc quý khách có nhu cầu
** thanh lý nhựa phế liệu** thì hãy **LIÊN HỆ ĐỂ ĐƯỢC TƯ VẤN & BÁO GIÁ PHẾ LIỆU 0976.671.266 (Mr Thiên) – 0933.378.266 (Mr Sơn)**


text:
Bắt kẻ sử dụng giấy tờ giả để thế chấp ở tiệm cầm đồ
Tin tức từ cơ quan công an Thị xã Thuận An (Bình Dương), ngày 2/4, qua kiểm tra, công an thị xã Thuận An phát hiện đối tượng Trần Văn Chung (23 tuổi), quê Tiền Giang đang có hành vi sử dụng bộ giấy tờ giả , gồm có: chứng minh nhân dân, giấy chứng nhận đăng ký xe, giấy phép lái xe, có dán hình của đối tượng nhưng sử dụng tên giả để thế chấp tại tiệm cầm đồ Năm Khỏe (địa chỉ: khu dân cư Việt Sing, phường An Phú, Thị xã Thuận An) với giá 500.000 đồng.
Lật tẩy thủ đoạn dùng giấy tờ giả, ăn cắp trắng trợn.
Hiện, công an thị xã Thuận An đang tạm giữ tên Chung về hành vi làm giả con dấu, tài liệu của cơ quan, tổ chức để điều tra.
Mộc Miên
www.nguoiduatin.vn

markdown:
#
[Bắt kẻ sử dụng giấy tờ giả để thế chấp ở tiệm cầm đồ](http://quangcaogoogle.ttv.vn/2015/04/bat-ke-su-dung-giay-to-gia-e-chap-o.html)
[Tin tức](http://ift.tt/1h7P9vQ) từ cơ quan công an Thị xã Thuận An (Bình Dương), ngày 2/4, qua kiểm tra, công an thị xã Thuận An phát hiện đối tượng Trần Văn Chung (23 tuổi), quê Tiền Giang đang có hành vi sử dụng bộ [, gồm có: chứng minh nhân dân, giấy chứng nhận đăng ký xe, giấy phép lái xe, có dán hình của đối tượng nhưng sử dụng tên giả để thế chấp tại tiệm giấy tờ giả ](http://ift.tt/1IUbABQ) [Năm Khỏe (địa chỉ: khu dân cư Việt Sing, phường An Phú, Thị xã Thuận An) với giá 500.000 đồng.](http://ift.tt/1EKHXnX) **cầm đồ** **Lật tẩy thủ đoạn dùng giấy tờ giả, ăn cắp trắng trợn.**
Hiện, công an thị xã Thuận An đang tạm giữ tên Chung về hành vi làm giả con dấu, tài liệu của cơ quan, tổ chức để điều tra.
**Mộc Miên**
www.nguoiduatin.vn

WARC-Identified-Payload-Type: application/xhtml+xml

Server: GSE

X-Content-Type-Options: nosniff

Cache-Control: private, max-age=0

X-XSS-Protection: 1; mode=block


text:
Một thiết kế logo chuyên nghiệp, sáng tạo, đơn giản dễ nhận biết góp phần quan trọng tạo nên sự khác biệt, hoàn toàn nổi bật trước nhiều đối thủ kinh doanh tạo nên sự thành công của thương hiệu đó. Khi một công ty, tổ chức hay một doanh nghiệp có ý định thành lập thì việc quan tâm hàng đầu là có một thiết kế logo đẹpvà sáng tạo giúp gây ấn tượng tới khách hàng tiềm năng của mình, một thiết kế logo chuyên nghiệp thể hiện tinh thần, mục tiêu phấn đấu, tầm nhìn cũng như sản phẩm dịch vụ của mình.
Vậy logo là gì? Logo là một yếu tố đồ họa được thiết kế và kết hợp với cách thức thể hiện phông chữ tạo thành một biểu tượng đặc trưng cho thương hiệu của công ty doanh nghiệp, một tổ chức hay chỉ đơn giản là một nhà hàng, khách sạn, cửa hàng v.v. Để có mộtlogo chuyên nghiệpgía rẻ cùng với sự khác biệt giúp gây ấn tượng với khách hàng tiềm năng là một điều không hề dễ dàng trong khi thiết kế logo Quận Tân Phú cần đáp ứng các tiêu chí đơn giản dễ nhớ, đẹp mắt và sáng tạo. Chính vì vậy Trường Thịnh có mặt ở đây để giúp bạn.
Thiết Kế Logo không chỉ là một biểu tượng nhận diện của công ty mà còn là những gì cô đọng nhất mà khách hàng muốn nhớ tới. Logo chính là:
• Sản phẩm sáng tạo giúp doanh nghiệp xây dựng hình ảnh thương hiệu trong tâm trí khách hàng
• Biểu tượng truyền tải được những thông điệp về công ty
• Thông điệp ý nghĩa truyền tải đến các khách hàng tiềm năng
• Tài sản quý giá nhất một khi Doanh nghiệp phát triển
Ưu điểm khi sử dụng dịch vụ của công ty thiết kế logo giá rẻ tai Quận Tân Phú
Với đội ngũ thiết kế chuyên nghiệp trong lĩnh vực tư vấn thiết kế logo đẹp cũng như thiết kế website, thiết kế bao bì và các ấn phẩm in ấn khác, đặc biệt với dịch vụ thiết kế logo online nhanh chóng và hiệu quả. Trường Thịnh cam kết tạo ra những thiết kế chất lượng, sáng tạo và thẩm mỹ tốt nhất.
Công Ty ITS chuyên thiet ke web gia re tai tphcm - thiet ke web dep chuan seo tai quan tan phu / Chuyên sua chua may tinh tan noi tan quan tan phu / Chuyên nap muc may in tan noi tan quan tan phu / Chuyên gan camera quan sat gia re tai quan tan phu / đơn vị sua camera quan sat gia re tai quan tan phu nhanh/ ban cuc sac adapter laptop gia re tai quan tan phu giá sỉ |Chuyên ban camera tron bo gia re quan tan phu, Ban camera analog gia re quan tan phu - ban dau ghi hinh analog gia re quan tan phu ,chuyên ban camera ip gia re quan tan phu - cong ty ban dau ghi hinh ip tai quan tan phu | dv thay man hinh laptop gia re tai quan tan phu | dv thay pin laptop gia re tan noi tai quan tan phu nhanh chong.
►Xem Thêm :
thiet ke web cho cua hang ao cuoi gia re tai tphcm
thiet ke website cho phong kham benh vien gia re tai tphcm
thiet ke website cho quan cafe gia re tai tphcm
thiet ke website cho nha hang khach san gia re tai tphcm
thiet ke website ban hoa tuoi gia re tai tphcm
thiet ke website ban vang bac da quy gia re tai tphcm
thiet ke website ban dong ho gia re tai tphcm
thiet ke website mua ban oto xe may gia re tai tphcm
thiet ke website ban dien thoai online gia re tai tphcm
thiet ke website lam dep spa gia re tai tphcm
thiet ke website ban may tinh laptop gia re tai tphcm
thiet ke website ban thoi trang online gia re tai tphcm
cong ty thiet ke website bat dong san gia re tai tphcm
thiet ke website ban my pham online gia re tai tphcm
cong ty thiet ke website ban hang gia re tai tphcm
thiet ke website cho van phong luat su gia re tai tphcm
cty thiet ke web du lich gia re tphcm
cong ty thiet ke website cho nha sach gia re tai tphcm
thiet ke website cho cua hang noi that gia re tai tphcm
cong ty thiet ke website ban mat kinh online chuan seo
thiet ke website kinh doanh dien thoai,sim so dep tai hcm
dich vu thiet ke website phong kham benh chuan seo tai hcm
cty thiet ke web spa chuan seo tai hcm
cty thiet ke website cho tiem vay cuoi chuan seo tai hcm
thiet ke web kinh doanh thoi trang online chuan seo tai hcm
dịch vụ thiết kế website cho spa làm đẹp chuyên nghiệp tphcm
cty thiết kế website bán mỹ phẩm chuyên nghiệp tphcm
dịch vụ thiết kế website bất động sản chuyên nghiệp hcm
dịch vụ thiết kế website bán hàng online chuyên nghiệp tphcm
công ty thiết kế website nhà hàng chuyên nghiệp tphcm
thiết kế website cho nhà hàng nhanh đẹp tại tphcm
dịch vụ thiết kế web nhà sách chuyên nghiệp tphcm
thiết kế wed bán mắt kính chuyên nghiệp hcm
thiết kế wed nội thất chuyên nghiệp hcm
dịch vụ thiết kế wed bán điện thoại online chuyên nghiệp tphcm
công ty thiết kế wed oto chuyên nghiệp hcm
dịch vụ thiết kế wed cửa hàng bán hoa chuyên nghiệp hcm
dịch vụ thiết kế wedsite bán vàng bạc đá quý chuyên nghiệp tại tphcm
cty thiết kế website phòng khám chuyên nghiệp tại tphcm
dịch vụ thiết kế cho spa làm đẹp chuyên nghiệp hcm
dịch vụ thiết kế website cửa hàng váy cưới chuyên nghiệp tphcm
cty thiết kế web bán máy tính laptop chuyên nghiệp tại tphcm
công ty thiết kế website dịch vụ giá rẻ tại tphcm
cong ty thiet ke website ban dien thoai nhanh chong hcm
thiet ke website cho tiem hoa nhanh chong tai tphcm
thiet ke website ban dong ho dep nhanh chong tai hcm
thiet ke website cho tiem vang uy tin nhanh chong tphcm
thiet ke website cho nha hang nhanh dep tai hcm
THIET KE WEBSITE BAN HANG ONLINE DEP VA NHANH CHONG TPHCM
THIET KE WEB CHO LUAT SU DEP VA NHANH CHONG TAI HCM
THIET KE WEBSITE NHA DAT DEP VA NHANH CHONG TAI TPHCM
CONG TY THIET KE WEBSITE BAN HANG ONLINE DEP VA NHANH CHONG TAI HCM
THIET KE WEB BAN MY PHAM ONLINE DEP VA NHANH CHONG TAI TPHCM
DICH VU THIET KE WEBSITE BAN MAT KINH DEP VA NHANH CHONG TẠI TPHCM
THIET KE WEBSITE CHO QUAN CAFE DEP VA NHANH CHONG TAI TPHCM
THIET KE WEBSITE BAN DO DIEN TU GIA RE TPHCM
THIET KE WEBSITE XAY DUNG KIEN TRUC DEP NHANH CHONG HCM
THIET KE WED GIAY DEP NHANH CHONG HCM
CTY THIET KE WEBSITE GIAY DEP DEP CHUAN SEO TPHCM
THIET KE WEBSITE TRUONG HOC NHANH CHONG TAI HCM
THIET KE WEBSITE DAO TAO GIAO DUC GIA RE TAI TPCHM
CONG TY THIET KE WEB BAN DO TRE EM GIA RE HCM

markdown:
Một
** thiết kế logo chuyên nghiệp**, sáng tạo, đơn giản dễ nhận biết góp phần quan trọng tạo nên sự khác biệt, hoàn toàn nổi bật trước nhiều đối thủ kinh doanh tạo nên sự thành công của thương hiệu đó. Khi một công ty, tổ chức hay một doanh nghiệp có ý định thành lập thì việc quan tâm hàng đầu là có một **thiết kế logo đẹp**và sáng tạo giúp gây ấn tượng tới khách hàng tiềm năng của mình, một **thiết kế logo chuyên nghiệp** thể hiện tinh thần, mục tiêu phấn đấu, tầm nhìn cũng như sản phẩm dịch vụ của mình.
Vậy
**logo** là gì? Logo là một yếu tố đồ họa được thiết kế và kết hợp với cách thức thể hiện phông chữ tạo thành một biểu tượng đặc trưng cho thương hiệu của công ty doanh nghiệp, một tổ chức hay chỉ đơn giản là một nhà hàng, khách sạn, cửa hàng v.v. Để có một **logo chuyên nghiệpgía rẻ** cùng với sự khác biệt giúp gây ấn tượng với khách hàng tiềm năng là một điều không hề dễ dàng trong khi *thiết kế logo Quận Tân Phú* cần đáp ứng các tiêu chí đơn giản dễ nhớ, đẹp mắt và sáng tạo. Chính vì vậy **Trường Thịnh** có mặt ở đây để giúp bạn.
Thiết Kế Logo không chỉ là một biểu tượng nhận diện của công ty mà còn là những gì cô đọng nhất mà khách hàng muốn nhớ tới. Logo chính là:
• Sản phẩm sáng tạo giúp doanh nghiệp xây dựng hình ảnh thương hiệu trong tâm trí khách hàng
• Biểu tượng truyền tải được những thông điệp về công ty
• Thông điệp ý nghĩa truyền tải đến các khách hàng tiềm năng
• Tài sản quý giá nhất một khi Doanh nghiệp phát triển
Ưu điểm khi sử dụng dịch vụ của công ty thiết kế logo giá rẻ tai Quận Tân Phú
Với đội ngũ
*thiết kế chuyên nghiệp* trong lĩnh vực tư vấn *thiết kế logo đẹp* cũng như thiết kế website, thiết kế bao bì và các ấn phẩm in ấn khác, đặc biệt với **dịch vụ thiết kế logo online** nhanh chóng và hiệu quả. **Trường Thịnh** cam kết tạo ra những thiết kế chất lượng, sáng tạo và thẩm mỹ tốt nhất. **Công Ty ITS** chuyên [thiet ke web gia re tai tphcm](http://suamaytinhits.com/Thiet-Ke-Website/dich-vu-thiet-ke-website-tai-tphcm-gia-re-nhat.html) - [thiet ke web dep chuan seo tai quan tan phu](https://truongthinh.info/thiet-ke-website/dich-vu-thiet-ke-website-gia-re-tai-quan-tan-phu/) / Chuyên [sua chua may tinh tan noi tan quan tan phu](http://suamaytinhits.com/Sua-May-Tinh-Quan-Tan-Phu/sua-may-tinh-tan-noi-quan-tan-phu.html) / Chuyên [nap muc may in tan noi tan quan tan phu](http://napmucmayintannoi.info/may-in/dich-vu-nap-muc-may-in-tan-noi-quan-tan-phu) / Chuyên [gan camera quan sat gia re tai quan tan phu ](https://truongthinh.info/quan-tan-phu-724/lap-dat-camera-quan-sat-quan-tan-phu-gia-re-nhat/) / đơn vị [sua camera quan sat gia re tai quan tan phu](https://truongthinh.info/quan-tan-phu-724/sua-chua-camera-gia-re-tai-quan-tan-phu/) nhanh/ [ban cuc sac adapter laptop gia re tai quan tan phu](http://suamaytinhits.com/Quan-Tan-Phu/ban-cuc-sac-laptop-adapter-laptop-gia-re-tai-quan-tan-phu.html) giá sỉ |Chuyên [ban camera tron bo gia re quan tan phu](https://truongthinh.info/camera-tr0n-b0-gia-re/), [Ban camera analog gia re quan tan phu](https://truongthinh.info/camera-analog-570/vn) - [ban dau ghi hinh analog gia re quan tan phu](https://truongthinh.info/dau-ghi-hinh-analog-589/) ,chuyên [ban camera ip gia re quan tan phu](https://truongthinh.info/camera-ip/) - [cong ty ban dau ghi hinh ip tai quan tan phu](https://truongthinh.info/dau-ghi-hinh-ip/) | dv [thay man hinh laptop gia re tai quan tan phu](http://suamaytinhits.com/Quan-Tan-Phu/thay-man-hinh-laptop-gia-re-tan-noi-quan-tan-phu.html) | dv [thay pin laptop gia re tan noi tai quan tan phu](http://suamaytinhits.com/Quan-Tan-Phu/thay-pin-laptop-gia-re-quan-tan-phu.html) nhanh chong.
►
**Xem Thêm :** [thiet ke web cho cua hang ao cuoi gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-cho-cua-hang-ao-cuoi-gia-re-tai-tphcm/) [thiet ke website cho phong kham benh vien gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-cho-phong-kham-benh-vien-gia-re-tai-tphcm/) [thiet ke website cho quan cafe gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-cho-quan-cafe-gia-re-tai-tphcm/) [thiet ke website cho nha hang khach san gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-cho-nha-hang-khach-san-gia-re-tai-tphcm/) [thiet ke website ban hoa tuoi gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-ban-hoa-tuoi-gia-re-tai-tphcm/) [thiet ke website ban vang bac da quy gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-ban-vang-bac-da-quy-gia-re-tai-tphcm/) [thiet ke website ban dong ho gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-ban-dong-ho-gia-re-tai-tphcm/) [thiet ke website mua ban oto xe may gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-mua-ban-0to-xe-may-gia-re-tai-tphcm/) [thiet ke website ban dien thoai online gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-ban-dien-thoai-online-gia-re-tai-tphcm/) [thiet ke website lam dep spa gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-lam-dep-spa-gia-re-tai-tphcm/) [thiet ke website ban may tinh laptop gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-ban-may-tinh-laptop-gia-re-tai-tphcm/) [thiet ke website ban thoi trang online gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-ban-thoi-trang-gia-re-tai-tphcm/) [cong ty thiet ke website bat dong san gia re tai tphcm](https://truongthinh.info/gia-re/cong-ty-thiet-ke-website-bat-dong-san-gia-re-tai-tphcm/) [thiet ke website ban my pham online gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-ban-my-pham-online-gia-re-tai-tphcm/) [cong ty thiet ke website ban hang gia re tai tphcm](https://truongthinh.info/gia-re/cong-ty-thiet-ke-website-ban-hang-gia-re-tai-tphcm/) [thiet ke website cho van phong luat su gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-cho-van-phong-luat-su-gia-re-tai-tphcm/) [cty thiet ke web du lich gia re tphcm](https://truongthinh.info/gia-re/cong-ty-thiet-ke-website-du-lich-gia-re-tai-tphcm/) [cong ty thiet ke website cho nha sach gia re tai tphcm](https://truongthinh.info/gia-re/cong-ty-thiet-ke-website-cho-nha-sach-gia-re-tai-tphcm/) [thiet ke website cho cua hang noi that gia re tai tphcm](https://truongthinh.info/gia-re/thiet-ke-website-cho-cua-hang-noi-that-gia-re-tai-tphcm/) [cong ty thiet ke website ban mat kinh online chuan seo](https://truongthinh.info/chuan-seo/cong-ty-thiet-ke-web-ban-mat-kinh-online-chuan-seo-tai-hcm/) [thiet ke website kinh doanh dien thoai,sim so dep tai hcm](https://truongthinh.info/chuan-seo/thiet-ke-website-kinh-doanh-dien-thoaisim-so-dep-tai-hcm/) [dich vu thiet ke website phong kham benh chuan seo tai hcm](https://truongthinh.info/chuan-seo/dich-vu-thiet-ke-website-phong-kham-benh-chuan-seo-hcm/) [cty thiet ke web spa chuan seo tai hcm](https://truongthinh.info/chuan-seo/cong-ty-thiet-ke-web-spa-chuan-seo-tai-hcm/) [cty thiet ke website cho tiem vay cuoi chuan seo tai hcm](https://truongthinh.info/chuan-seo/cty-thiet-ke-website-cho-tiem-vay-cuoi-chuan-seo-hcm/) [thiet ke web kinh doanh thoi trang online chuan seo tai hcm](https://truongthinh.info/chuan-seo/thiet-ke-website-kinh-doanh-thoi-trang-online-chuan-seo-hcm/) [dịch vụ thiết kế website cho spa làm đẹp chuyên nghiệp tphcm](https://truongthinh.info/chuyen-nghiep/dich-vu-thiet-ke-website-cho-spa-lam-dep-chuyen-nghiep-tphcm/) [cty thiết kế website bán mỹ phẩm chuyên nghiệp tphcm](https://truongthinh.info/chuyen-nghiep/cty-thiet-ke-web-ban-my-pham-chuyen-nghiep-tai-tphcm/) [dịch vụ thiết kế website bất động sản chuyên nghiệp hcm](https://truongthinh.info/chuyen-nghiep/dich-vu-thiet-ke-website-bat-dong-san-chuyen-nghiep-tai-tphcm/) [dịch vụ thiết kế website bán hàng online chuyên nghiệp tphcm](https://truongthinh.info/chuyen-nghiep/dich-vu-thiet-ke-website-ban-hang-chuyen-nghiep-tai-tphcm/) [công ty thiết kế website nhà hàng chuyên nghiệp tphcm](https://truongthinh.info/chuyen-nghiep/cong-ty-thiet-ke-web-nha-hang-khach-san-chuyen-nghiep-hcm/) [thiết kế website cho nhà hàng nhanh đẹp tại tphcm](https://truongthinh.info/nhanh/thiet-ke-website-cho-nha-hang-nhanh-dep-tai-tphcm/) [dịch vụ thiết kế web nhà sách chuyên nghiệp tphcm](https://truongthinh.info/chuyen-nghiep/dich-vu-thiet-ke-web-nha-sach-chuyen-nghiep-tai-tphcm/) [thiết kế wed bán mắt kính chuyên nghiệp hcm](https://truongthinh.info/chuyen-nghiep/thiet-ke-web-ban-mat-kinh-dep-chuyen-nghiep-tai-tphcm/) [thiết kế wed nội thất chuyên nghiệp hcm](https://truongthinh.info/chuyen-nghiep/thiet-ke-web-noi-that-dep-chuyen-nghiep-tai-tphcm/) [dịch vụ thiết kế wed bán điện thoại online chuyên nghiệp tphcm](https://truongthinh.info/chuyen-nghiep/dich-vu-thiet-ke-web-ban-dien-thoai-online-chuyen-nghiep-hcm/) [công ty thiết kế wed oto chuyên nghiệp hcm](https://truongthinh.info/chuyen-nghiep/cong-ty-thiet-ke-web-0to-xe-may-chuyen-nghiep-tai-hcm/) [dịch vụ thiết kế wed cửa hàng bán hoa chuyên nghiệp hcm](https://truongthinh.info/chuyen-nghiep/dich-vu-thiet-ke-web-cua-hang-ban-hoa-chuyen-nghiep-tai-hcm/) [dịch vụ thiết kế wedsite bán vàng bạc đá quý chuyên nghiệp tại tphcm](https://truongthinh.info/chuyen-nghiep/dich-vu-thiet-ke-web-vang-bac-da-quy-chuyen-nghiep-tai-hcm/) [cty thiết kế website phòng khám chuyên nghiệp tại tphcm](https://truongthinh.info/chuyen-nghiep/cong-ty-thiet-ke-website-phong-kham-chuyen-nghiep-tai-tphcm/) [dịch vụ thiết kế cho spa làm đẹp chuyên nghiệp hcm](https://truongthinh.info/chuyen-nghiep/dich-vu-thiet-ke-website-cho-spa-lam-dep-chuyen-nghiep-tphcm/) [dịch vụ thiết kế website cửa hàng váy cưới chuyên nghiệp tphcm](https://truongthinh.info/chuyen-nghiep/dich-vu-thiet-ke-website-cua-hang-vay-cuoi-chuyen-nghiep-hcm/) [cty thiết kế web bán máy tính laptop chuyên nghiệp tại tphcm](https://truongthinh.info/chuyen-nghiep/cty-thiet-ke-web-ban-may-tinh-laptop-chuyen-nghiep-tphcm/) [công ty thiết kế website dịch vụ giá rẻ tại tphcm](https://truongthinh.info/gia-re/cong-ty-thiet-ke-website-dich-vu-gia-re-tai-tphcm/) [cong ty thiet ke website ban dien thoai nhanh chong hcm](https://truongthinh.info/nhanh/cong-ty-thiet-ke-website-ban-dien-thoai-nhanh-chong-tai-hcm/) [thiet ke website cho tiem hoa nhanh chong tai tphcm](https://truongthinh.info/nhanh/thiet-ke-web-cho-tiem-hoa-dep-nhanh-chong-tai-tphcm/) [thiet ke website ban dong ho dep nhanh chong tai hcm](https://truongthinh.info/nhanh/thiet-ke-website-dong-ho-dep-nhanh-chong-tai-tphcm/) [thiet ke website cho tiem vang uy tin nhanh chong tphcm](https://truongthinh.info/nhanh/thiet-ke-web-cho-tiem-vang-uy-tin-nhanh-chong-tai-hcm/) [thiet ke website cho nha hang nhanh dep tai hcm](https://truongthinh.info/nhanh/thiet-ke-website-cho-nha-hang-nhanh-dep-tai-tphcm/) [THIET KE WEBSITE BAN HANG ONLINE DEP VA NHANH CHONG TPHCM](https://truongthinh.info/nhanh/thiet-ke-website-ban-hang-online-dep-va-nhanh-chong-tphcm/) [THIET KE WEB CHO LUAT SU DEP VA NHANH CHONG TAI HCM](https://truongthinh.info/nhanh/thiet-ke-website-cho-luat-su-dep-va-nhanh-chong-tai-hcm/) [THIET KE WEBSITE NHA DAT DEP VA NHANH CHONG TAI TPHCM](https://truongthinh.info/nhanh/thiet-ke-website-nha-dat-dep-va-nhanh-chong-tai-tphcm/) [CONG TY THIET KE WEBSITE BAN HANG ONLINE DEP VA NHANH CHONG TAI HCM](https://truongthinh.info/nhanh/cong-ty-thiet-ke-web-ban-thoi-trang-onlne-dep-va-nhanh-0-hcm/) [THIET KE WEB BAN MY PHAM ONLINE DEP VA NHANH CHONG TAI TPHCM](https://truongthinh.info/nhanh/thiet-ke-web-ban-my-pham-dep-va-chong-tai-tphcm/) [DICH VU THIET KE WEBSITE BAN MAT KINH DEP VA NHANH CHONG TẠI TPHCM](https://truongthinh.info/nhanh/dich-vu-thiet-ke-web-cho-tiem-mat-kinh-nhanh-chong-hcm/) [THIET KE WEBSITE CHO QUAN CAFE DEP VA NHANH CHONG TAI TPHCM](https://truongthinh.info/nhanh/thiet-ke-wed-quan-cafe-dep-nhanh-chong-tai-hcm/) [THIET KE WEBSITE BAN DO DIEN TU GIA RE TPHCM](https://truongthinh.info/gia-re/thiet-ke-website-ban-do-dien-tu-gia-re-tai-tphcm/) [THIET KE WEBSITE XAY DUNG KIEN TRUC DEP NHANH CHONG HCM](https://truongthinh.info/nhanh/thiet-ke-website-kien-truc-xay-dung-dep-nhanh-chong-hcm/) [THIET KE WED GIAY DEP NHANH CHONG HCM](https://truongthinh.info/nhanh/thiet-ke-web-giay-dep-thoi-trang-dep-nhanh-chong-hcm/) [CTY THIET KE WEBSITE GIAY DEP DEP CHUAN SEO TPHCM](https://truongthinh.info/chuan-seo/cong-ty-thiet-ke-website-giay-dep-dep-chuan-seo-tphcm/) [THIET KE WEBSITE TRUONG HOC NHANH CHONG TAI HCM](https://truongthinh.info/nhanh/thiet-ke-website-truong-dai-hoc-dep-nhanh-chong-hcm/) [THIET KE WEBSITE DAO TAO GIAO DUC GIA RE TAI TPCHM](https://truongthinh.info/gia-re/thiet-ke-website-dao-tao-giao-duc-gia-re-tai-tphcm/) [CONG TY THIET KE WEB BAN DO TRE EM GIA RE HCM](https://truongthinh.info/chuyen-nghiep/cty-thiet-ke-website-ban-do-dung-tre-em-chuyen-nghiep-tphcm/)

Vary: Accept-Encoding,User-Agent

Content-Type: text/html


text:
.
Mua xe Jupiter cũ giá rẻ
Tư vấn kinh nghiệm mua xe Jupiter cũ giá rẻ Với kinh nghiệm và mẹo mua xe Jupiter cũ sẽ giúp bạn mua được một chiếc xe ngon. Để tư vấn kinh nghiệm mua xe Jupiter cũ chúng tôi xin nói về ưu và nhược điểm khi mua xe cũ: Tư vấn mua xe Jupiter cũ giá
Mua xe Yamaha Sirius cũ giá rẻ
Đánh giá sơ lược Yamaha Sirius 2014 cũ với nhiều ưu điểm Xe Yamaha Sirius có 4 màu, bao gồm đỏ, xám, trắng và đen, phù hợp với sở thích của nhiều người. Trong khi đó, các thông số kỹ thuật khác của xe vẫn giữ nguyên như mẫu Sirius RC phanh đĩa. Đánh
Hướng dẫn chạy xe côn tay Exciter 150 an toàn
Giới thiệu xe côn tay Exiter 150 Xe côn tay là gì? Xe côn tay là loại xe có hệ thống đóng ngắt ly hợp bằng tay, cụ thể là ở bên trái tay lái xe có cần côn, bóp vào để ngắt và thả ra để đóng ly hợp. Côn tay hay còn gọi là ambrayage tay có nhiều ưu

markdown:
.
##
##
##
![ Mua xe Jupiter cũ giá rẻ](http://cdn.quasinhnhat.com.vn/asset/home/img/250/mua_xe_jupiter_cu_gia_re20160309143519.jpg)
##
[Mua xe Jupiter cũ giá rẻ](http://quasinhnhat.com.vn/mua-xe-jupiter-cu-gia-re-114.html)
Tư vấn kinh nghiệm mua xe Jupiter cũ giá rẻ Với kinh nghiệm và mẹo mua xe Jupiter cũ sẽ giúp bạn mua được một chiếc xe ngon. Để tư vấn kinh nghiệm mua xe Jupiter cũ chúng tôi xin nói về ưu và nhược điểm khi mua xe cũ: Tư vấn mua xe Jupiter cũ giá
![ Mua xe Yamaha Sirius cũ giá rẻ](http://cdn.quasinhnhat.com.vn/asset/home/img/250/mua_xe_yamaha_sirius_cu_gia_re20160302130422.jpg)
##
[Mua xe Yamaha Sirius cũ giá rẻ](http://quasinhnhat.com.vn/mua-xe-yamaha-sirius-cu-gia-re-109.html)
Đánh giá sơ lược Yamaha Sirius 2014 cũ với nhiều ưu điểm Xe Yamaha Sirius có 4 màu, bao gồm đỏ, xám, trắng và đen, phù hợp với sở thích của nhiều người. Trong khi đó, các thông số kỹ thuật khác của xe vẫn giữ nguyên như mẫu Sirius RC phanh đĩa. Đánh
![ Hướng dẫn chạy xe côn tay Exciter 150 an toàn](http://cdn.quasinhnhat.com.vn/asset/home/img/250/huong_dan_chay_xe_con_tay_exciter_150_an_toan20160301145605.jpg)
##
[Hướng dẫn chạy xe côn tay Exciter 150 an toàn](http://quasinhnhat.com.vn/huong-dan-chay-xe-con-tay-exciter-150-an-toan-108.html)
Giới thiệu xe côn tay Exiter 150 Xe côn tay là gì? Xe côn tay là loại xe có hệ thống đóng ngắt ly hợp bằng tay, cụ thể là ở bên trái tay lái xe có cần côn, bóp vào để ngắt và thả ra để đóng ly hợp. Côn tay hay còn gọi là ambrayage tay có nhiều ưu


text:
Ngày 27/2, Tổng hội người Campuchia gốc Việt Nam tại Campuchia và Hội Thầy thuốc Campuchia gốc Việt Nam ở Campuchia đã tổ chức họp mặt nhân kỷ niệm 63 năm ngày Thầy thuốc Việt Nam (27/2/1955-27/2/2018).
Đại sứ Vũ Quang Minh phát biểu tại cuộc họp mặt (Ảnh: Danh Chanh Đa/TTXVN)
Tham dự buổi họp mặt có nhiều thầy thuốc gốc Việt đang làm việc tại Campuchia, đại diện Đại sứ quán Việt Nam tại Campuchia, các cơ quan bên cạnh Đại sứ quán, cộng đồng doanh nghiệp đang đầu tư, kinh doanh tại Campuchia.Phát biểu tại buổi họp mặt, Phó Chủ tịch Hội người Campuchia gốc Việt Nam tại Campuchia, Chủ tịch Ban chấp hành lâm thời Hội Thầy thuốc Campuchia gốc Việt Nam, Bác sỹ Hoàng Hoa cho biết sau một năm thành lập (26/2/2017-26/2/2018), với phương châm, mục đích hoạt động của hội không chỉ gắn kết các thầy thuốc gốc Việt, mà còn là một tổ chức tình nguyện hoạt động từ thiện, hội đã có những đóng góp nhất định trong việc góp phần chăm lo sức khỏe cộng đồng.Với kinh phí đóng góp tự nguyện và từ các mạnh thường quân, Hội đã tổ chức các hoạt động miễn phí như tuyên truyền giáo dục y học thường thức; khám, tư vấn sức khỏe, cấp thuốc, tiêm vắcxin cơ bản; giúp đỡ, hỗ trợ bà con người Việt gặp khó khăn, hoạn nạn...Hội còn tổ chức các hoạt động như khám, chữa bệnh miễn phí và tặng quà cho bà con người Việt và người Khmer ở tỉnh Takeo; phối hợp với Tổng hội hỗ trợ đoàn thiện nguyện của Lương y Võ Hoàng Yên khám chữa bệnh miễn phí cho gần 1.000 bà con người Việt và Khmer tại trụ sở Tổng hội; làm cầu nối và trực tiếp hỗ trợ cho một số đoàn từ thiện trong nước sang khám, chữa bệnh miễn phí và tặng quà cho bà con cộng đồng.Cũng tại buổi họp mặt, Đại sứ Việt Nam tại Campuchia Vũ Quang Minh và Chủ tịch Tổng hội người Campuchia gốc Việt Nam tại Campuchia Châu Văn Chi đã chúc mừng các thầy thuốc gốc Việt đang hoạt động trong ngành nghề cao quý chữa bệnh cứu người khi định cư ở Campuchia; đồng thời biểu dương những đóng góp đáng ghi nhận của Hội Thầy thuốc Việt Nam tại Campuchia và các thầy thuốc Việt Nam trong việc góp phần chăm lo sức khỏe cộng đồng.Đại sứ và Chủ tịch Tổng hội bày tỏ sự ủng hộ các hoạt động sắp tới của Hội, trong đó có việc nhanh chóng tổ chức Đại hội để bầu ra ban chấp hành chính thức, phát triển thêm hội viên, có nhiều hoạt động kết nối với giới thầy thuốc nước sở tại, trong nước và nước ngoài để có thể hoạt động hiệu thực chất và hiệu quả hơn; góp phần vào việc bảo vệ sức khỏe cộng đồng cũng như công tác xã hội, y tế khi hoạt động nghề nghiệp ở Campuchia./.
(Theo TTXVN)
Tối 26/2, Câu lạc bộ đồng hương Xiangkhouang thủ đô Vientiane, Lào, đã tổ chức buổi gặp mặt mừng Xuân Mậu Tuất 2018.
Với thông điệp “Đi để trở về - Cận kề yêu thương,” chương trình ca nhạc “Concert 20 giờ bay” của cộng đồng du học sinh Việt Nam tại thành phố Toronto, Canada, không chỉ thổi sinh khí mới vào đời sống tinh thần của các em mà còn khơi nguồn yêu thương trước những hoàn cảnh khó khăn của các bệnh nhi tại Canada.
Ngày 25/2, tại thành phố Bologna của Italy, Hiệp hội Italy-Việt Nam Nhịp cầu Văn hóa đã tổ chức gặp mặt đầu xuân, mừng Tết Nguyên đán Mậu Tuất 2018 với nhiều hoạt động văn hóa truyền thống đậm đà bản sắc dân tộc.
Chào mừng Ngày Thầy thuốc Việt Nam 27/2, Hội Y dược Việt Nam tại Liên bang Nga đã tổ chức kỷ niệm 20 năm ngày thành lập và phục vụ cộng đồng.
Một ngày đầu năm, nhân chuyến công tác khảo sát, xác định vị trí Nhà nổi, dùng làm lớp học cho con em kiều bào tại ấp Koh Keo, xã Reng Tuel, huyện Kan Dieng, tỉnh Pursat. Theo giới thiệu của ông Lê Hoàng, Chủ tịch Hội người Việt tại tỉnh Pursat, tôi đến thăm chùa Long Hải. Ngôi chùa nằm trên vị trí heo hút, bên bờ Biển Hồ Tông Lê Sap, Campuchia với dáng vẻ thật cổ kính và có lẽ hiếm người biết ngôi chùa này được xây dựng từ bao giờ.
"Lễ hội mừng Xuân Mậu Tuất” đang diễn ra tại thành phố cảng Odessa bên bờ Biển Đen, miền Nam Ukraine là một trong những hoạt động mở đầu cho Năm Văn hóa Việt Nam tại Ukraine.
Ngày 23/2, Lãnh sự danh dự Việt Nam tại Italy, Phòng Thương mại Italy-Việt Nam và cộng đồng người Việt Nam tại thành phố Turin đã tổ chức buổi gặp mặt đầu Xuân Mậu Tuất 2018.
Cùng với nhân dân cả nước và kiều bào khắp nơi trên thế giới, kiều bào ta tại các địa phương trên khắp đất nước Thái Lan tổ chức đón Tết cổ truyền Mậu Tuất 2018 trong không khí rộn ràng và ấm cúng.
Ngày 21/2, Đoàn thanh niên cộng sản Hồ Chí Minh tại Viện Tiếng Nga quốc gia mang tên A.X. Pushkin đã tổ chức chương trình văn hóa, văn nghệ chào năm mới Mậu Tuất 2018 với chủ đề: “Tết Việt Nam - Câu chuyện đầu năm” tại hội trường lớn của nhà trường ở thủ đô Moskva.
Hòa cùng không khí vui tươi đón Tết cổ truyền dân tộc của cộng đồng người Việt trong nước cũng như ở nước ngoài, chiều ngày 16/2 (Mùng Một Tết), tại trường Kinh tế thương mại Kiev, Ucraina, Hội người Việt Nam thành phố Kiev đã tổ chức đón Tết cổ truyền Mậu Tuất 2018 cho bà con cộng đồng người Việt đang sinh sống, làm việc và học tập tại thành phố Kiev.
Trước thềm chuyến thăm cấp nhà nước tới Việt Nam của Tổng thống Hàn Quốc Moon Jae-in từ ngày 22-24/3, Phu nhân Tổng thống, bà Kim Jung-sook đã dành cho đại diện sinh viên Việt Nam tại Hàn Quốc một buổi gặp tại Phủ Tổng thống Hàn Quốc ở thủ đô Seoul.
Ngày 17/3, tại Tổ hợp Đa chức năng Hà Nội-Moskva (Incentra), Hiệp hội doanh nghiệp Việt Nam tại Liên bang Nga (VBA) đã tổ chức buổi gặp mặt đầu Xuân Mậu Tuất 2018.
Sáng 18/3, tại chùa Khánh An ở tỉnh Udon Thani, Đông Bắc Thái Lan, diễn ra Đại lễ cầu siêu các anh hùng hy sinh vì Tổ quốc và đồng bào tử nạn.
Tiếp tục trong chuỗi hoạt động, sáng 18/3, Đoàn kiều bào trẻ về tham dự Tọa đàm “Giao lưu giữa kiều bào trẻ lập nghiệp tại Việt Nam và thanh niên trong nước” đã tới thăm Khu dự trữ sinh quyển rừng ngập mặn Cần Giờ để tìm hiểu về môi trường. Đây là hệ sinh thái duy nhất tại Việt Nam được UNESCO công nhận là khu dự trữ sinh quyển thế giới.
Chiều ngày 17/3 tại TP. Hồ Chí Minh, lãnh đạo Ủy ban Nhân dân thành phố (UBNDTP) đã tổ chức gặp mặt Đoàn kiều bào trẻ, thể hiện tình cảm nồng ấm, trân trọng và sự quan tâm của Lãnh đạo Thành phố đối với các bạn trẻ về lập nghiệp và phát triển tại quê hương.
Sáng ngày 17/3 tại TP. Hồ Chí Minh, Ủy ban Nhà nước về người Việt Nam ở nước ngoài, Bộ Ngoại giao (Ủy ban) đã tổ chức Tọa đàm “Giao lưu giữa kiều bào trẻ lập nghiệp tại Việt Nam và thanh niên trong nước”.
Ngày 16/3, Tổng Lãnh sự quán Việt Nam tại Battambang, Camphuchia đã chủ trì tổ chức Lễ Khánh thành, bàn giao, đưa vào sử dụng Lớp học (Nhà nổi) phục vụ nhu cầu học tập của con em người Campuchia gốc Việt và tham gia hoạt động từ thiện tại ấp Koh Keo, xã Reng Teul, huyện Kan Dieng, tỉnh Pursat.
Đã thành một thông lệ từ nhiều năm nay, cứ tới dịp 14/3 hằng năm, các Phật tử và bà con trong cộng đồng Việt Nam tại Hungary lại có mặt và tham gia lễ cầu siêu anh linh các liệt sỹ đã hy sinh tại đảo Gạc Ma-quần đảo Trường Sa trong cuộc chiến đấu bảo vệ chủ quyền và toàn vẹn lãnh thổ của Tổ quốc.
Ngay từ đầu nhiệm kỳ, Thủ tướng đã đưa ra chủ trương Chính phủ kiến tạo và những người làm nghiên cứu khoa học tại Australia cảm thấy vui mừng.
Nhân dịp đầu Xuân Mậu Tuất, ngày 11/03, tại Chùa Phụng Ân ở thủ đô Seoul – Hàn Quốc, đông đảo Phật tử Việt Nam tại Hàn Quốc đã tham gia Đại lễ cầu an cho cộng đồng người Việt Nam tại Hàn Quốc, Đại lễ cầu siêu các anh hùng liệt sỹ đã hy sinh vì độc lập tự do, vì chủ quyền của Tổ quốc và Lễ công nhận Hội Phật tử Việt Nam tại Hàn Quốc.
Tháng Ba e ấp cánh hoa sưa/ Điểm xuyết dịu dàng dưới nắng trưa...
Trong số hoạt động mở đầu chuyến thăm chính thức New Zealand, chiều 12/3, Thủ tướng Nguyễn Xuân Phúc và Phu nhân đã tới thăm Đại học Công nghệ Auckland (AUT) và gặp gỡ kiều bào tại New Zealand.
Hương bưởi thơm... trong phút giây tĩnh lặng/ Phương trời Âu... em nhớ quê nhà...
Phải từ bỏ quốc tịch Việt Nam mới được nhập quốc tịch Nga, luôn là điều mà kiều bào sinh sống ở nước Nga bao năm nay trăn trở, cân nhắc và khó xử.
Phát biểu tại cuộc gặp với đại biểu kiều bào tiêu biểu về tham dự Xuân Quê hương 2018 chiều 7/2, Tổng Bí thư Nguyễn Phú Trọng khẳng định: Đảng và Nhà nước luôn trân trọng những đóng góp, tấm lòng hướng về đất nước của bà con kiều bào ta trên toàn thế giới; Đảng và Nhà nước luôn giang rộng cánh tay đón chào người Việt ở nước ngoài về với quê hương cội nguồn.
Chiều 07/02 (nhằm ngày 22 tháng Chạp âm lịch), tại Ao cá Bác Hồ trong khuôn viên Khu di tích Phủ Chủ tịch, Chủ tịch nước Trần Đại Quang và phu nhân cùng đại biểu kiều bào thực hiện nghi thức thả cá chép tiễn ông Công, ông Táo về trời. Đây là một trong những trong những hoạt động trong Chương trình Xuân Quê hương 2018 do Ủy ban Nhà nước về người Việt Nam ở nước ngoài, Bộ Ngoại giao tổ chức với ước mong hạnh phúc đến với mọi người, mọi gia đình Việt Nam nhân dịp Xuân về Tết đến.
Tiếp nối thành công của chương trình Đoàn cựu giáo viên kiều bào tại Thái Lan về thăm Việt Nam vào năm 2016 và 2017, đồng thời để tri ân những kiều bào Thái Lan đã có những đóng góp cho công cuộc giải phóng dân tộc và gìn giữ tiếng Việt, Ủy ban Nhà nước về người Việt Nam ở nước ngoài tiếp tục tổ chức chuyến thăm quê hương cho Đoàn gồm 83 cựu giáo viên kiều bào tại Thái Lan từ ngày 5-12/2/2018.
Chiều 03/02, tại Mukdahan, Thái Lan, Ủy ban Nhà nước về người Việt Nam ở nước ngoài, Bộ Ngoại giao phối hợp với các cơ quan hữu quan đã tổ chức buổi lễ trao tặng Huân, Huy chương, Bằng khen của Thủ tướng Chính phủ, Bộ trưởng Bộ Ngoại giao cho gần 700 cá nhân và gia đình người Việt có thành tích xuất sắc trong đoàn kết, phát triển cộng đồng, đóng góp cho sự phát triển của đất nước Thái Lan và quê hương Việt Nam; đồng thời trao tặng Bằng khen của Bộ trưởng Bộ Ngoại giao Việt Nam cho một số cá nhân người Thái Lan có nhiều đóng góp cho việc tăng cường quan hệ hữu nghị giữa nhân dân hai nước Việt Nam - Thái Lan.

Cache-Control: private

Content-Type: text/html; charset=utf-8


text:
Trang chủ
Quảng Cáo
Giới Thiệu
Điều Kiện Sử Dụng
Hướng dẫn up ảnh
Đặt phòng
Đăng tin
Đăng ký
Liên hệ
Tìm kiếm:
trong
Tất cả sản phẩm
Mua bán nhà đất
Thị Trường Chứng Khoán
Sang Quán - Tiệm
Thuê và Cho Thuê
Bán Chung Cư
Đào tạo - Học hành
Lao động - việc làm
Dạy Kèm - Gia Sư
Văn phòng phẩm
Du Học Nước Ngoài
Máy tính - T Bị Máy Tính - Latop
Điện thoại - Sim card
Máy Ảnh KTS - Máy Quay
Phần mềm & Web
Thiết Bị Khác
Nội thất - Hàng gia dụng
Thủ công mỹ nghệ
Thiết bị, vật tư, tài sản khác
In ấn - Thiết kế
Đồ Cổ - Hàng Độc
Ôtô - Xe máy
Điện tử - Điện lạnh
Cơ Khí - Chế Tạo
Thiết Kế - Xây Dựng
Tìm kiếm đối tác
Du lịch - Khách sạn - Nhà hàng
Giải trí - Phim ảnh - Băng đĩa
Dịch vụ tài chính
Dịch Vụ - Sửa Chữa
Các dịch vụ khác
Vàng bạc trang sức
Thời trang - Mỹ phẩm
Rượu bia-Giải khát
Nhạc Cụ - Âm Thanh
Hoa - Cây Cảnh
Thú Cưng - Vật Nuôi
Khuyến mại
Dịch vụ, giải trí
Hàng nông sản
nơi tìm
Tất cả
Toàn Quốc
Hồ Chí Minh
Thừa Thiên - Huế
Hà Nội
Cần Thơ
Đà Nẵng
Quảng Nam
Hải Phòng
Thăng Bình
Nam Giang
Nông Sơn
Phú Ninh
Phước Sơn
Quế Sơn
Hiệp Đức
TP Tam Kỳ
Hội An
Tiên Phước
Núi Thành
Tây Giang
Đại Lộc
Duy Xuyên
Điện Bàn
Đông Giang
Nam Trà My
Bắc Trà My
Thái Binh
Đồng Nai
An Giang
Bà Rịa - Vũng Tàu
Bắc Giang
Bắc Ninh
Bình Phước
Bình Thuận
Cà Mau
Đắk Lắk
Đắk Nông
Điện Biên
Đồng Tháp
Gia Lai
Hà Tỉnh
Hải Dương
Hậu Giang
Hưng Yên
Khánh Hoà
Kon Tum
Lạng Sơn
Lâm Đồng
Long An
Nam Định
Nghệ An
Ninh Bình
Ninh Thuận
Phú Thọ
Phú Yên
Quảng Ngãi
Quảng Ninh
Thái Nguyên
Tiền Giang
Vĩnh Long
Vĩnh Phúc
Quảng Trị
Bình Dương
Quảng Bình
Bình Định
Hà Nam
Thanh Hóa
Loại tin
---Chọn loại tin---
Tuyển dụng việc làm
Cần bán
Cần mua
Thuê và cho thuê
Tin bất động sản
Các loại khác
Đất nền giá rẻ trung tâm Đà Nẵng - Khu Aurora DaNang city - Hòa Minh 5- Giá chỉ từ 520 triệu/ lô. Nhanh chân đặt chổ ưu tiên để có vị trí đẹp...
QUẢN LÝ THÀNH VIÊN
*
Quên mật khẩu?
*
Đăng ký thành viên
*
Đặt làm trang chủ của bạn !
Bất động sản, OTC
Mua bán nhà đất
Thị Trường Chứng Khoán
Sang Quán - Tiệm
Thuê và Cho Thuê
Bán Chung Cư
Việc làm, giáo dục
Đào tạo - Học hành
Lao động - việc làm
Dạy Kèm - Gia Sư
Văn phòng phẩm
Du Học Nước Ngoài
Viễn thông
Máy tính - T Bị Máy Tính - Latop
Điện thoại - Sim card
Máy Ảnh KTS - Máy Quay
Phần mềm & Web
Thiết Bị Khác
Nội, ngoại thất
Nội thất - Hàng gia dụng
Thủ công mỹ nghệ
Thiết bị, vật tư, tài sản khác
In ấn - Thiết kế
Đồ Cổ - Hàng Độc
Ôtô - Xe máy - Điện Tử
Ôtô - Xe máy
Điện tử - Điện lạnh
Cơ Khí - Chế Tạo
Thiết Kế - Xây Dựng
Tìm kiếm đối tác
Công nghiệp, xây dựng
Du lịch - Khách sạn - Nhà hàng
Giải trí - Phim ảnh - Băng đĩa
Dịch vụ tài chính
Dịch Vụ - Sửa Chữa
Các dịch vụ khác
Giải trí - Mua sắm
Vàng bạc trang sức
Thời trang - Mỹ phẩm
Rượu bia-Giải khát
Nhạc Cụ - Âm Thanh
Hoa - Cây Cảnh
Các Nhóm khác
Thú Cưng - Vật Nuôi
Khuyến mại
Dịch vụ, giải trí
Hàng nông sản
.
.
>> Các dịch vụ khác
Chuột không dây giá rẻ cho sinh viên
(267)
Ngày cập nhật.:
17/03/18
Loại tin:
Các loại khác
Liên hệ 098.3366.015 để
để nâng tin này thành
VIP và up tin tự với ưu đãi cực lớn
!
Copy link tin này gởi cho bạn bè:
Chuột không dây
- Pin siêu bền.
- Bán kính tiếp sóng lên đến 15m
- Chuột nhạy được trên mặt kính
- Bảo hành 6 tháng.
>>> Giá 110.000đ . Nếu mua số lượng lớn sẽ trợ giá tốt.
>>> Miễn phí ship hàng > 2 con.
Liên hệ: Công Ty Việt Trực Tuyến
ĐT: 0983.366015 - 0905.729141
Thông tin người đăng tin
Họ tên
Ngô Thị Hồng Thắm
Địa chỉ
120/9 Lý Thái Tổ - Q. Thanh Khê- TP. Đà Nẵng
Điện thoại
0905729141
Nick Yahoo
Gửi mail cho người đăng tin
tygonblue@gmail.com
Các chức năng kèm theo
Xem tất cả tin của
Ngô Thị Hồng Thắm
Gửi cho bạn bè
Báo tin xấu
Thông báo cho ban quản trị
Họ và tên của bạn
*
Ý kiến của bạn về tin này
*
Nhập chuỗi bên cạch
Liên hệ người đăng tin
Bạn có thể liên lạc thư điện tử với
Ngô Thị Hồng Thắm .
Off
Telex
VNI
VIQR
Họ và tên của bạn
*
Email
*
Nội dung
*
Nhập chuỗi bên cạch
Tôi đồng ý với các điều khoản ghi trong bản
Điều kiện sử dụng
*
Tin
VIP
mới nhất
Nơi rao
Giấy cuộn tính tiền ở Đà Nẵng
(2194)
Toàn Quốc
Giấy in bill giá rẻ tại Quảng Trị
(2546)
Quảng Trị
Giấy in tính tiền quán bida tại Đà Nẵng
(19639)
Đà Nẵng
Giấy in nhiệt SAZAKI tại Huế
(37582)
Thừa Thiên - Huế
Chuột không dây giá rẻ
(551)
Đà Nẵng
Mỡ trăn nguyên chất tại Đà Nẵng
(3720)
Toàn Quốc
Giấy in hóa đơn K80
(2771)
Đà Nẵng
Cục gỡ tem từ cứng giá rẻ tại Đà Nẵng
(92353)
Đà Nẵng
Phần mềm bán hàng cho quán cafe
(1797)
Toàn Quốc
Giấy in bill giá rẻ tại Tam Kỳ
(87133)
Quảng Nam
Đầu đọc mã vạch opticon tại Đà Nẵng
(107948)
Đà Nẵng
Phần mềm quản lý bán hàng VIETSHOP
(221)
Đà Nẵng
BỘ ĐÀM GIÁ RẺ ĐÀ NẴNG
(257)
Đà Nẵng
Phần mềm bán hàng cho nhà hàng
(1986)
Toàn Quốc
TUYỂN SỈ MÁY IN BILL, MÁY IN MÃ VẠCH
(169)
Đà Nẵng
Giấy in nhiệt giá rẻ tại Hà Tỉnh
(2141)
Hà Tỉnh
Giấy in nhiệt giá rẻ tại Quảng Bình
(37586)
Quảng Bình
Giấy in K80 giá rẻ tại Huế
(27780)
Thừa Thiên - Huế
Giấy in nhiệt K80 tại Tam Kỳ
(27854)
TP Tam Kỳ
Giấy cuộn tính tiền Đà Nẵng
(1723)
Toàn Quốc
Giấy nhiệt tính tiền Đà Nẵng
(1860)
Toàn Quốc
Mỡ trăn trị bỏng
(2392)
Toàn Quốc
Mua giấy in bill tại Đà Nẵng ở đâu.
(3179)
Đà Nẵng
Giấy cuộn in nhiệt
(1844)
Toàn Quốc
LẮP ĐẶT CAMERA GIÁ RẺ TẠI ĐÀ NẴNG
(140)
Đà Nẵng
Giấy in bill SAZAKI tại Đà Nẵng
(4770)
Đà Nẵng
GIấy in bill K57 giá rẻ cho quán cà phê Đà Nẵng
(22283)
Đà Nẵng
Dịch vụ nhắn tin quảng cáo giá rẻ tại Đà Nẵng
(78377)
Đà Nẵng
Sáp wax triệt lông shinny
(3674)
Toàn Quốc
Giấy in bill giá rẻ tại Đà Nẵng
(104258)
Đà Nẵng
Giấy in hóa đơn giá rẻ tại Đà Nẵng
(18237)
Đà Nẵng
Giấy in nhiệt giá rẻ tại Quảng Ngãi
(2663)
Quảng Ngãi
Giấy in bill giá sỉ tại Đà Nẵng
(6309)
Đà Nẵng
CHƯƠNG TRÌNH ĐỔI CAMERA CŨ CỰC SỐC
(288)
Toàn Quốc
Giấy in bill K57 tại Đà Nẵng
(24202)
Đà Nẵng
Cổng từ an ninh giá rẻ tại Đà Nẵng
(3018)
Đà Nẵng
Bán tên miền hay
(2864)
Đà Nẵng
Giấy in bill giá rẻ tại Huế
(113532)
Thừa Thiên - Huế
Máy quét mã vạch opticon tại Đà Nẵng
(87707)
Đà Nẵng
Tem từ, bộ gỡ tem từ cứng, cổng từ an ninh giá rẻ tại Tam Kỳ
(98453)
Đà Nẵng
Máy in bill giá rẻ tại Đà Nẵng
(326)
Đà Nẵng
Phần mềm quản lý bán hàng cho shop thời trang, cafe, nhà hàng, karaoke, khách sạn
(122098)
Đà Nẵng
Giấy in kết quả xét nghiệm ở Đà Nẵng
(2009)
Toàn Quốc
Giấy in kết quả xét nghiệm tại Đà Nẵng
(2766)
Đà Nẵng
Giấy cuộn tính tiền tại Quảng Trị
(2598)
Toàn Quốc
Cho thuê nhà nguyên căn hai mặt tiền Đường Trần Hữu Dực
(258)
Thừa Thiên - Huế
Dịch vụ SEO và chạy quảng cáo Facebook và Google
(2150)
Toàn Quốc
Khuyến mại tháng 06/2017 khi mua xe Mitsubishi ở Đà Nẵng - Hotline: 0901.17.15.15 ( Mr. Hưng )
(6076)
Toàn Quốc
Nam Việt Pest Control dịch vụ diệt mối, diệt muỗi tại tp hồ chí minh
(115303)
Hồ Chí Minh
Dịch vụ vệ sinh máy lạnh tại các quận ở HCM
(1507)
Hồ Chí Minh
Hổ trợ - 098 3366 015
Kinh Doanh - 0996 930 390
Tư Vấn Thiết Kế Tổng Hợp (098.3366.015)
QUẢNG CÁO
Thống Kê
Số thành viên:
27858
Trực tuyến :
54
Truy cập:
chung cư ecolife capitol
|
goldmark city
|
tai nghe ba bau
|
cho thue xe may da nang
|
thuoc dai mi Careprost
|
Vay tieu dung da nang
|
Giấy in bill giá sỉ
|
Cổng từ an ninh siêu thị
|
tai zalo
|
SMS marketing
|
Thời trang trẻ Online
|
Giấy in nhiệt tính tiền ở Đà Nẵng
|
Quần thời trang FMSTYLE
|
Book tour Đà Nẵng Giá rẻ & khách sạn Đà Nẵng
|
Thoi trang sinh vien
|
Lap dat camera gia re
|
Mo tran nguyen chat
|
SMS thuong hieu
|
thiet bi shop thoi trang
|
Giay cuon tinh tien
|
Nội dung bài viết và sản phẩm đăng bởi các thành viên. Chúng tôi không chịu trách nhiệm về tính pháp lý.
Mọi liên hệ xin gửi về địa chỉ mail : info@raovathue.vn - Hotline 098.3366.015 - 0948.55.00.33
Copyright ©2009-2010
Rao Vặt Huế
Website được xây dựng bởi CÔNG TY TNHH Công Nghệ
Việt Trực Tuyến

Server: Apache/2.2.3 (CentOS)


text:
Shop hoa tươi Quận 3 trân trọng đem tới anh chị lời chúc thành tâm, thông tin cụ thể: Gọi ngay: 0968.856.319.
Mang tới sự thoải mái người mua là niềm vui của tiệm. Trang web hoa tươi Quận 3 ra đời mục đích hoàn thành sứ mệnh trên.
Hoa tươi Quận 3 luôn có mặt như một món quà tinh thần vô giá của người bạn. Bạn sẽ mang đến một bó hoa dịp sinh nhật của bạn bè. Lời chúc mừng khai trương đến những người bạn. kệ hoa tươi sẽ là sự đồng cảm thầm kín.
Hoa tươi Quận 3 sẽ luôn phấn đấu nâng cao dịch vụ hiệu quả khách hàng ngày càng chất lượng.
Dịch vụ Hoa tươi Quận 3 là cơ sở tập trung của những loại hoa của Việt Nam được chọn tỉ mỉ thực hiện bởi bàn tay chuyên nghiệp nhiều nghệ sĩ với 18 năm thiết kế hoa, đem đến vô số bó hoa đậm chất sáng tạo mang dấu ấn tinh tế. Những kỹ thuật thiết kế hoa mới, cộng với cách thiết kế hoa lạ mắt, Điện hoa tươi sài gòn tin là đem đến một kệ hoa nhiều giá trị cho người mua.
Những kệ hoa khách mang đến luôn nhận được tình yêu của đối tác không cảm xúc nào có thể thay thế. Điện hoa ở Quận 3 giờ sẽ giúp anh chị mang những lời thương yêu với bằng hữu. Tiệm cung cấp: Hoa hội nghị, hội thảo, hoa chúc mừng, hoa khai trương, hoa sinh nhật, hoa viếng đám ma, hoa cưới…. Nhất là Điện hoa tại Quận 3 luôn học hỏi để làm ra một số kiểu hoa mới đáp ứng yêu cầu của Khách hàng. Tại Quận 3 hoa tươi sẽ thiết kế kệ hoa tận nơi cho anh chị về dịch vụ hoa cầm tay cô dâu.
Dịch vụ Hoa tươi Quận 3 đem lại dấu ấn trong văn hóa người Việt.
Hoa tác phẩm vô giá mà tự nhiên đã mang lại cho con người. Các kiểu hoa có một vẻ đẹp. Đồng thời, mỗi kiểu hoa luôn chứa đựng ý nghĩa cao cả, hoặc có thể là sự sẽ chia thành tâm…
Điện hoa giá rẻ Quận 3 hướng tới mang tới cho người nhận một số mẫu cao cấp góp phần cho hương vị cuộc sống đầy sức sống. Thêm vào đó, giá cả hợp lí sẽ tạo điều kiện quý khách có thêm sự lựa chọn khả quan nhất cho sản phẩm mình lựa chọn. Hoa tươi Quận 3 sẵn lòng đáp ứng nhu cầu người mua, với sự uy tín, qua sản phẩm đẹp dịch vụ ship hoa đúng giờ.
Hoa tươi Quận 3 gửi các thông điệp điều tốt đẹp đến người nhận.
Bạn không ở gần, bạn không thể trực tiếp gửi tặng Hoa tươi Quận 3 sẽ thay mặt bạn gửi những những lời nhắn thay bạn một cách trọn vẹn nhất. Hoa tươi Quận 3 là cây cầu để kết nối phong cách khác biệt trong cuộc sống và công việc hoặc để chia ngọt sẻ bùi...
Dù bạn đang ở nơi nào 1 cuộc gọi bạn sẽ hoàn toàn yên tâm để shop sẽ đem đến cho bạn bè. Đơn giản để sở hữu giỏ hoa đẹp đi kèm là một tấm thiệp độc đáo cùng những lời chúc ngọt ngào dành tặng cho những người thân yêu mà không phải tốn nhiều chi phí, thời gian.
Điện hoa Quận 3 chân thành cảm ơn khách đã quan tâm trong thời gian qua. Để chuyển hoa Liên hệ: 0968.856.319 để đặt hoa trực tiếp đặt hoa trên Zalo hoặc facebook.


text:
Use this control to limit the display of threads to those newer than the specified time frame.
Cho phép bạn chọn dữ liệu mà danh sách chủ đề sẽ được sắp xếp.
Hiện chủ đề theo...
Chú ý: khi sắp xếp bởi ngày, 'thứ tự giảm dần' sẽ hiển thị kết quả mới nhất trên cùng.
Nội quy - Quy định

Pragma: private


text:
Logged in as Anonymous. Lần truy cập trước của bạn:
Tiền Giang
Global announcement&Thông báo & Chú ý [0]
Chủ đề []
Người Điều Hành : KhôngĐang truy cập Diễn Đàn này: Không
Permissions in this forum:
Bạn không có quyền gửi bài viết
Bạn không có quyền trả lời bài viết
- Bài viết mới
- Bài viết mới [được ưa thích]
- Bài viết mới [đã bị khoá]
- Không có bài viết mới
- Không có bài viết mới [được ưa thích]
- Không có bài viết mới [đã bị khoá]
- Thông báo
- Chú ý
- Global announcement

markdown:
Logged in as
**Anonymous**. Lần truy cập trước của bạn:
## Tiền Giang
|Diễn Đàn||Chủ đề||Số bài||Bài gửi sau cùng|
![]()
|0||0|
![]()
|0||0|
# Global announcement&Thông báo & Chú ý [0]
No message.
Chủ đề []
Người Điều Hành : KhôngĐang truy cập Diễn Đàn này: Không
**Permissions in this forum:**
Bạn
**không có quyền** gửi bài viết
Bạn
**không có quyền** trả lời bài viết
Bài viết mới
Bài viết mới [được ưa thích]
Bài viết mới [đã bị khoá]
Không có bài viết mới
Không có bài viết mới [được ưa thích]
Không có bài viết mới [đã bị khoá]
Thông báo
Chú ý
Global announcement

Cache-Control: no-cache, no-store