text:
Lập trình với Mô hình 3 lớp (3 layers) – n-tiers , 3-tiers, multi tiers
Mô hình 3 lớp (3 layers) – n-tiers , 3-tiers, multi tiers
Trong bài viết này không có tham vọng trình bày lại chi tiết mô hình thiết kế ứng dụng đa lớp/tầng là như thế nào. Chỉ tóm tắt ngắn gọn lại những điểm chính của mô hình 3 lớp, mà cụ thể là 3 lớp logic.
Lưu ý: Các bạn không nên nhầm lẫn khái niệm lớp(layer) trong phần này với khái niệm lớp(class) của các ngôn ngữ lập trình hướng đối tượng.
Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau. Ví dụ trong một công ty bạn có từng phòng ban, mỗi phòng ban sẽ chịu trách nhiệm một công việc cụ thể nào đó, phòng này không được can thiệp vào công việc nội bộ của phòng kia như Phòng tài chính thì chỉ phát lương, còn chuyện lấy tiền đâu phát cho các anh phòng Marketing thì các anh không cần biết. Trong phát triển phần mềm, người ta cũng áp dụng cách phân chia chức năng này. Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất. 3 lớp này là gì? Là Presentation, Business Logic, và Data Access. Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.
Mô hình 3 lớp mà Microsoft đề nghị dùng cho các hệ thống phát triển trên nền .NET như sau:
Bạn có thể tham khảo chi tiết các đề nghị thiết kế các thành phần trong lớp này như thế nào ở đây:
http://www.microsoft.com/Downloads/details.aspx?familyid=A08E4A09-7AE3-4942-B466-CC778A3BAB34&displaylang=en
Presentation Layer
Lớp này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị kết quả/dữ liệu thông qua các thành phần trong giao diện người sử dụng. Lớp này sẽ sử dụng các dịch vụ do lớp Business Logic cung cấp. Trong .NET thì bạn có thể dùng Windows Forms, ASP.NET hay Mobile Forms để hiện thực lớp này.
Trong lớp này có 2 thành phần chính là User Interface Components và User Interface Process Components.
UI Components là những phần tử chịu trách nhiệm thu thập và hiển thị thông tin cho người dùng cuối. Trong ASP.NET thì những thành phần này có thể là các TextBox, các Button, DataGrid…
UI Process Components: là thành phần chịu trách nhiệm quản lý các qui trình chuyển đổi giữa các UI Components. Ví dụ chịu trách nhiệm quản lý các màn hình nhập dữ liệu trong một loạt các thao tác định trước như các bước trong một Wizard…
Lưu ý : lớp này không nên sử dụng trực tiếp các dịch vụ của lớp Data Access mà nên sử dụng thông qua các dịch vụ của lớp Business Logic vì khi bạn sử dụng trực tiếp như vậy, bạn có thể bỏ qua các ràng buộc, các logic nghiệp vụ mà ứng dụng cần phải có.
Business Logic Layer
Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do lớp Data Access cung cấp, và cung cấp các dịch vụ cho lớp Presentation. Lớp này cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd parties) để thực hiện công việc của mình(ví dụ như sử dụng dịch vụ của các cổng thanh tóan trực tuyến như VeriSign, Paypal…).
Trong lớp này có các thành phần chính là Business Components, Business Entities và Service Interface.
Service Interface là giao diện lập trình mà lớp này cung cấp cho lớp Presentation sử dụng. Lớp Presentation chỉ cần biết các dịch vụ thông qua giao diện này mà không cần phải quan tâm đến bên trong lớp này được hiện thực như thế nào.
Business Entities là những thực thể mô tả những đối tượng thông tin mà hệ thống xử lý. Trong ứng dụng chúng ta các đối tượng này là các chuyên mục(Category) và bản tin(News). Các business entities này cũng được dùng để trao đổi thông tin giữa lớp Presentation và lớp Data Access.
Business Components là những thành phần chính thực hiện các dịch vụ mà Service Interface cung cấp, chịu trách nhiệm kiểm tra các ràng buộc logic(constraints), các qui tắc nghiệp vụ(business rules), sử dụng các dịch vụ bên ngoài khác để thực hiện các yêu cầu của ứng dụng.
Trong ứng dụng của chúng ta, lớp này sẽ chứa các thành phần là CategoryService và NewsService làm nhiệm vụ cung cấp các dịch vụ quản lý chuyên mục và các bản tin (thêm, xóa, sửa, xem chi tiết, lấy danh sách…).
Data Access Layer
Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu của ứng dụng. Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu như SQL Server, Oracle,… để thực hiện nhiệm vụ của mình. Trong lớp này có các thành phần chính là Data Access Logic, Data Sources, Servive Agents).
Data Access Logic components (DALC) là thành phần chính chịu trách nhiệm lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ liệu – Data Sources như RDMBS, XML, File systems…. Trong .NET Các DALC này thường được hiện thực bằng cách sử dụng thư viện ADO.NET để giao tiếp với các hệ cơ sở dữ liệu hoặc sử dụng các O/R Mapping Frameworks để thực hiện việc ánh xạ các đối tượng trong bộ nhớ thành dữ liệu lưu trữ trong CSDL. Chúng ta sẽ tìm hiểu các thư viện O/R Mapping này trong một bài viết khác.
Service Agents là những thành phần trợ giúp việc truy xuất các dịch vụ bên ngòai một cách dễ dàng và đơn giản như truy xuất các dịch vụ nội tại.
Chúng ta đã tìm hiểu qua các lớp của mô hình 3 lớp. Lý thuyết hơi nhiều một chút có thể làm bạn khó hiểu vì khả năng trình bày có hạn, nên bây giờ thử tìm hiểu một qui trình cụ thể hơn để biết các lớp này giao tiếp với nhau như thế nào. Ví dụ trong ứng dụng của chúng ta có thao tác tạo một chuyên mục mới, thì các lớp sẽ ltương tác với nhau như sau:
Lớp Presentation
– Trình bày một web form, có các text box cho phép người sử dụng nhập tên và mô tả cho chuyên mục
– Khi người dùng nhấn nút tạo trên form này, ứng dụng sẽ thực hiện việc tạo một Business Entity Category mới như đoạn code sau minh họa:
public void CreateNewCategory()
{
Category category = new Category();
category.Name = name.Text;
category.Description = description.Text;
// sử dụng dịch vụ do lớp Business cung cấp để tạo chuyên mục
CategoryService.CreateCategory(category);
}
Lớp Business Logic
Để cung cấp dịch vụ tạo một chuyên mục, thành phần CategoryService sẽ cung cấp hàm sau:
public static void CreateCategory(Category category)
{
// kiểm tra xem tên khóa của chuyên mục đã tồn tại chưa?
…
// kiểm tra tên khóa của chuyên mục có hợp lệ không?
…
// sử dụng DV của lớp Data Access để lưu chuyên mục mới này vào CSDL
CategoryDAO categoryDAO = new CategoryDAO();
categoryDAO.CreateCategory(category);
}
Lớp Data Access
Tương tự, để cung cấp dịch vụ lưu một chuyên mục mới vào CSDL, thành phần CategoryDAO sẽ cung cấp hàm sau (sử dụng ADO.NET để kết nối với CSDL):
public void CreateCategory(Category category)
{
// tạo connection
…
// tạo command, khởi tạo các tham số…
command.Parameters.Add(new SqlParameter(“@KeyName”, category.KeyName));
command.Parameters.Add(new SqlParameter(“@Name”, category.Name));
command.Parameters.Add(new SqlParameter(“@Description”, category.Description));
// lưu dữ liệu
command.ExecuteNonQuery();
}
Phân tích và thiết kế
Ứng dụng của chúng ta sẽ viết bằng ASP.NET 2.0 và SQL Server 2000/2005. Ngôn ngữ được dùng là C#.
Chúng ta đã tìm hiểu qua các thành phần chính trong mô hình 3 lớp, giờ đến lúc bắt tay vào thiết kế các thành phần đó cho ứng dụng tin tức của chúng ta. Trong ứng dụng tin tức mà chúng ta đã tìm hiểu yêu cầu qua bài viết trước, chúng ta thấy có hai đối tượng thông tin chính mà chúng ta cần quản lý là các chuyên mục(category) và tin tức(news). Ứng dụng quản lý của chúng ta sẽ thu thập những đối tượng dữ liệu này từ người dùng(phóng viên, biên tập viên) và trình bày lại cho người sử dụng khác xem(độc giả). Giờ chúng ta bắt tay vào thiết kế các thành phần Business Entities.
Business Entities
Ứng dụng của chúng ta sẽ bao gồm 2 entity chính là Category và News.
Trước hết là Category. Một chuyên mục (Category) sẽ gồm những thông tin sau:
CategoryId: Mã chuyên mục – sẽ được sinh tự động khi tạo mới
Name: Tên chuyên mục. VD: Vi tính, Kinh tế…
KeyName: Tên gợi nhớ dùng để phân biệt chuyên mục với nhau (không được trùng nhau). VD với VNExpress bạn sẽ thấy có Vi-tinh, Suc-khoe…
Description: Mô tả cho chuyên mục. VD: Description cho Vi-tinh là: thông tin mới nhất về công nghệ thông tin của Việt Nam và thế giới…
Picture: Hình ảnh đại diện cho chuyên mục
Trong ứng dụng đơn giản này, chúng ta chỉ thiết kế chuyên mục có một cấp, không có các chuyên mục con, cháu… Và ứng dụng này cũng không có phần quản lý các nhà biên tập viên, nhà báo và cơ chế cấp quyền hạn duyệt bài, gửi bài…Tôi dành phần này cho các bạn phát triển thêm, nhưng tôi cũng sẽ gợi ý cho các bạn cách thiết kế trong phần mở rộng ứng dụng.
Tiếp theo là News. Mỗi một bản tin sẽ có các thông tin sau:
NewsId: mã bản tin. Sẽ được sinh tự động khi tạo mới.
Title: tiêu đề chính của bản tin. VD: Microsoft tuyên bố phá sản!
Subtitle: tiêu đề phụ của bản tin. VD: Bill Gates từ chức!
Excerpt: phần giới thiệu ngắn gọn của bản tin
Authors: danh sách tác giả bản tin. VD: Nguyễn Văn A, Hoàng Thị B
Keywords: danh sách từ khóa chính trong bản tin dùng để tìm kiếm. VD: Microsoft, broken
Body: Đây là phần nội dung chính của bản tin.
Picture: Hình ảnh minh họa cho bản tin.
CreationTime: Ngày giờ tạo bản tin
LastModificationTime: Ngày giờ chỉnh sửa cuối cùng của bản tin
PublishedTime: Ngày giờ bản tin được đăng
TotalViews: Tổng số lượt người xem bản tin
TotalRates: Tổng số lượt người đánh giá bản tin
Rate: Điểm đánh giá trung bình của bản tin
Status: Trạng thái hiện tại của bản tin. Có thể là Writting(Đang viết), Approving(Đang chờ duyệt), Published(Đã được đăng)
Business Service Components
Bước tiếp theo chúng ta sẽ phân tích và thiết kế các Business Service Components. Các thành phần này sẽ làm nhiệm vụ chính cung cấp các dịch vụ cho lớp Presentation dùng để lấy và lưu trữ thông tin.
Lớp CategoryService
Chúng ta cần những thao tách chính trên đối tượng dữ liệu Category:
Tạo mới – CreateCategory(Category category)
Cập nhật – UpdateCategory(Category category)
Xóa – DeleteCategory(int categoryId)
Lấy thông tin chi tiết – GetCategory(int categoryId)
Lấy danh sách các category – GetCategories()
Kiểm tra một Key xem có trong database chưa – CheckKey(string keyName). Thao tác này dùng để kiểm tra xem khi tạo mới một category thì KeyName đã tồn tại trong hệ thống chưa. Thao tác này có thể dùng trên lớp Presentation để kiểm tra và thông báo lỗi cho người dùng khi họ nhập một tên khóa đã có trong hệ thống
Lưu ý: Chúng ta sẽ thực hiện các business logic của hệ thống trong lớp này.
Tương tự đối với lớp NewsService, dựa trên những gì yêu cầu chúng ta phân tích ở bài viết đầu tiên, chúng ta cần những thao tác chính sau đây trên đối tượng News:
Tạo mới – CreateNews(News news)
Cập nhật – UpdateNews(News news)
Xóa – DeleteNews(int newsId)
Lấy thông tin chi tiết – GetNews(int newsId)
Lấy danh sách các bản tin thuộc một chuyên mục nào đó, sắp xếp theo tin mới nhất – GetNewsOfCategory(int categoryId, int page, int pageSize, out int totalRecords)
Cập nhật số lần xem của một bản tin – UpdateTotalViews(int newsId)
Cập nhật đánh giá cho một bản tin – UpdateRate(int newsId, int rate)
Tìm bài viết dựa trên từ khóa – SearchNews(string keyWords, int page, int pageSize, out int totalRecords)
Trong các hàm trên, các bạn chú ý đến hàm GetNewsOfCategory. Trong hàm này có các tham số dùng để phân trang các bản tin. Chúng ta cần đến chức năng này vì khi trình bày trên trang tin, chúng ta chỉ trình bày một số lượng có hạn các bản tin của một chuyên mục nào đó chứ không thể trình bày tất cả trên màn hình được. Khi người dùng muốn xem thêm, họ có thể chọn trang tiếp theo hoặc nhấp vào link Xem tiếp, lúc đó ứng dụng sẽ trình bày các bản tin ở các trang tiếp theo. Tham số totalRecords cho chúng ta biết được tổng số bản tin thật sự có trong chuyên mục đó.
Lưu ý: Khi phân tích thiết kế ban đầu bạn không thể nào hình dung được hết các yêu cầu phát sinh để thiết kế trước các thao tác cần thiết. Bạn phải cập nhật bản thiết kế thường xuyên để phù hợp với yêu cầu. Bản thiết kế này vẫn còn thiếu một số chức năng cần thiết mà tôi sẽ trình bày cho các bạn trong bài viết tiếp theo, chúng ta sẽ chỉnh sửa bản thiết kế này trong quá trình phát triển ứng dụng để phù hợp với các yêu cầu phát sinh mà chúng ta chưa nhìn thấy hết khi thiết kế.
Data Access Components
Bây giờ chúng ta sẽ thiết kế các lớp dùng để truy xuất và cập nhật dữ liệu. Các hàm của các lớp DAO cũng khá đơn giản, chỉ làm nhiệm vụ cập nhật dữ liệu vào database và truy xuất dữ liệu từ database. Các bạn cũng thấy chức năng nó giống như trên lớp Business Logic, nhưng ở đây chúng ta không có bất kỳ ràng buộc logic gì, chỉ đơn giản thực hiện việc truy xuất dữ liệu mà thôi. Các business logic đã được kiểm tra trên lớp Business Logic.
Chúng ta tách biệt 2 lớp CategoryDAO (DAO – Data Access Object) và NewsDAO để dễ quản lý và thay đổi khi cần thiết. VD nếu bạn muốn thêm một thao tác truy xuất dữ liệu mới trên đối tượng News, bạn sẽ biết ngay mình phải thay đổi lớp NewsDAO. Nhưng có những thao tác bạn phải cân nhắc nên để nó lớp nào vì nó liên quan đến nhiều đối tượng, lúc đó bạn phải xét xem mục đích chính của thao tác đó là gì, thao tác trên đối tượng dữ liệu chính nào để đưa thao tác đó vào lớp phù hợp.
Thiết kế cơ sở dữ liệu
Do ứng dụng của chúng ta đơn giản nên chỉ có 2 bảng dữ liệu ánh xạ gần như 1-1 với các entities trên lớp Business Logic như sau:
Hiện thực lớp Business Logic & Data Access
Sau khi đã xong bước thiết kế, chúng ta sẽ tiến hành hiện thực 2 lớp Business và Data Access. Các bạn có thể xem source code đính kèm để biết chi tiết cách hiện thực 2 lớp này như thế nào. Lớp Presentation sẽ được thiết kế và hiện thực trong bài viết tiếp theo. Phần bên dưới tôi sẽ trình bày một số điểm chính trong cách hiện thực.
Hiện thực Data Access Components
Do ứng dụng của chúng ta đơn giản nên được giới hạn sẽ dùng với CSDL SQL Server 2000/2005 nên lớp này không được thiết kế để chạy cùng lúc với nhiều loại database khác nhau. Chúng ta sẽ dùng cái Stored Procedures để truy xuất dữ liệu an toàn và dễ thay đổi hơn, tránh bị các lỗi như SQL Injection(không thể tránh hoàn toàn nếu bạn không hiện thực đúng). Các bạn có thể xem qua một cách hiện thực một hàm cơ bản như thế nào:
public void CreateCategory(Category category)
{
using (SqlConnection connection = GetConnection())
{
SqlCommand command = new SqlCommand(“spCategoriesCreate”, connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter(“@KeyName”, category.KeyName));
command.Parameters.Add(new SqlParameter(“@Name”, category.Name));
command.Parameters.Add(new SqlParameter(“@Description”, category.Description));
command.Parameters.Add(new SqlParameter(“@Picture”, category.Picture));
SqlParameter paramCategoryId = new SqlParameter(“@CategoryId”, SqlDbType.Int, 4);
paramCategoryId.Direction = ParameterDirection.Output;
command.Parameters.Add(paramCategoryId);
connection.Open();
command.ExecuteNonQuery();
if (paramCategoryId.Value != DBNull.Value)
category.CategoryId = (int)paramCategoryId.Value;
else
throw new DataAccessException(String.Format(Resources.Strings.CreateEntityException, “Category”));
}
}
Stored Procedure spCategoriesCreate đơn giản được viết như sau:
CREATE PROCEDURE dbo.spCategoriesCreate
@Name nvarchar(50),
@KeyName varchar(30),
@Description ntext,
@Picture varchar(256),
@CategoryId int output
AS
INSERT INTO Categories
(
Name,
KeyName,
Description,
Picture
)
VALUES
(
@Name,
@KeyName,
@Description,
@Picture
)
SELECT @CategoryId = SCOPE_IDENTITY()
Hiện thực lớp Business Logic
Hiện thực lớp Business Logic đòi hỏi bạn phải nắm rõ các business logic của ứng dụng. Ví dụ đối với ứng dụng tin tức của chúng ta thì khi tạo một chuyên mục mới, bạn phải kiểm tra xem KeyName của chuyên mục đó đã có trong hệ thống chưa? Nếu có rồi thì phải báo lỗi, và nếu chưa có thì chúng ta kiểm tra KeyName đó có hợp lệ hay không? (Chỉ chứa kí tự alphabet, chữ số, gạch dưới và gạch ngang…).
public static void CreateCategory(Category category)
{
// Has this key name existed?
if (!CheckKey(category.KeyName))
throw new BusinessException(String.Format(Resources.Strings.KeyNameExisted, category.KeyName));
// is this key name valid?
if (!ValidateKey(category.KeyName))
throw new BusinessException(String.Format(Resources.Strings.InvalidKeyName, category.KeyName));
// ok , now save it to database
CategoryDAO categoryDAO = new CategoryDAO();
categoryDAO.CreateCategory(category);
}

markdown:
## Lập trình với Mô hình 3 lớp (3 layers) – n-tiers , 3-tiers, multi tiers
**Mô hình 3 lớp (3 layers) – n-tiers , 3-tiers, multi tiers**
Trong bài viết này không có tham vọng trình bày lại chi tiết mô hình thiết kế ứng dụng đa lớp/tầng là như thế nào. Chỉ tóm tắt ngắn gọn lại những điểm chính của mô hình 3 lớp, mà cụ thể là 3 lớp logic.
*Lưu ý:* * Các bạn không nên nhầm lẫn khái niệm lớp(layer) trong phần này với khái niệm lớp(class) của các ngôn ngữ lập trình hướng đối tượng.*
Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau. Ví dụ trong một công ty bạn có từng phòng ban, mỗi phòng ban sẽ chịu trách nhiệm một công việc cụ thể nào đó, phòng này không được can thiệp vào công việc nội bộ của phòng kia như Phòng tài chính thì chỉ phát lương, còn chuyện lấy tiền đâu phát cho các anh phòng Marketing thì các anh không cần biết. Trong phát triển phần mềm, người ta cũng áp dụng cách phân chia chức năng này. Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất. 3 lớp này là gì? Là
**Presentation**, **Business Logic**, và **Data Access**. Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.
Mô hình 3 lớp mà Microsoft đề nghị dùng cho các hệ thống phát triển trên nền .NET như sau:
Bạn có thể tham khảo chi tiết các đề nghị thiết kế các thành phần trong lớp này như thế nào ở đây:
[http://www.microsoft.com/Downloads/details.aspx?familyid=A08E4A09-7AE3-4942-B466-CC778A3BAB34&displaylang=en](http://www.microsoft.com/Downloads/details.aspx?familyid=A08E4A09-7AE3-4942-B466-CC778A3BAB34&displaylang=en)
**Presentation Layer**
Lớp này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị kết quả/dữ liệu thông qua các thành phần trong giao diện người sử dụng. Lớp này sẽ sử dụng các dịch vụ do lớp Business Logic cung cấp. Trong .NET thì bạn có thể dùng
**Windows Forms**, **ASP.NET** hay **Mobile Forms** để hiện thực lớp này.
Trong lớp này có 2 thành phần chính là
**User Interface Components** và **User Interface Process Components**.
**UI Components** là những phần tử chịu trách nhiệm thu thập và hiển thị thông tin cho người dùng cuối. Trong ASP.NET thì những thành phần này có thể là các TextBox, các Button, DataGrid…
**: là thành phần chịu trách nhiệm quản lý các qui trình chuyển đổi giữa các UI Components. Ví dụ chịu trách nhiệm quản lý các màn hình nhập dữ liệu trong một loạt các thao tác định trước như các bước trong một Wizard…
UI Process Components** __: lớp này không nên sử dụng trực tiếp các dịch vụ của lớp Data Access mà nên sử dụng thông qua các dịch vụ của lớp Business Logic vì khi bạn sử dụng trực tiếp như vậy, bạn có thể bỏ qua các ràng buộc, các logic nghiệp vụ mà ứng dụng cần phải có. Lưu ý __
**Business Logic Layer**
Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do lớp
**Data Access** cung cấp, và cung cấp các dịch vụ cho lớp **Presentation**. Lớp này cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd parties) để thực hiện công việc của mình(ví dụ như sử dụng dịch vụ của các cổng thanh tóan trực tuyến như VeriSign, Paypal…).
Trong lớp này có các thành phần chính là
**Business Components**, **Business Entities** và **Service Interface**.
**Service Interface** là giao diện lập trình mà lớp này cung cấp cho lớp **Presentation **sử dụng. Lớp **Presentation **chỉ cần biết các dịch vụ thông qua giao diện này mà không cần phải quan tâm đến bên trong lớp này được hiện thực như thế nào.
** là những thực thể mô tả những đối tượng thông tin mà hệ thống xử lý. Trong ứng dụng chúng ta các đối tượng này là các chuyên mục(
Business Entities** **Category**) và bản tin( **News**). Các business entities này cũng được dùng để trao đổi thông tin giữa lớp **Presentation**và lớp **Data Access**. **là những thành phần chính thực hiện các dịch vụ mà**
Business Components
Business Components
**Service Interface**cung cấp, chịu trách nhiệm kiểm tra các ràng buộc logic(constraints), các qui tắc nghiệp vụ(business rules), sử dụng các dịch vụ bên ngoài khác để thực hiện các yêu cầu của ứng dụng.
Trong ứng dụng của chúng ta, lớp này sẽ chứa các thành phần là
**CategoryService **và **NewsService **làm nhiệm vụ cung cấp các dịch vụ quản lý chuyên mục và các bản tin (thêm, xóa, sửa, xem chi tiết, lấy danh sách…).
**Data Access Layer**
Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu của ứng dụng. Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu như SQL Server, Oracle,… để thực hiện nhiệm vụ của mình. Trong lớp này có các thành phần chính là
**Data Access Logic**, **Data Sources**, **Servive Agents**). **Data Access Logic components (DALC)** là thành phần chính chịu trách nhiệm lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ liệu – Data Sources như RDMBS, XML, File systems…. Trong .NET Các **DALC **này thường được hiện thực bằng cách sử dụng thư viện ADO.NET để giao tiếp với các hệ cơ sở dữ liệu hoặc sử dụng các O/R Mapping Frameworks để thực hiện việc ánh xạ các đối tượng trong bộ nhớ thành dữ liệu lưu trữ trong CSDL. Chúng ta sẽ tìm hiểu các thư viện O/R Mapping này trong một bài viết khác.
** là những thành phần trợ giúp việc truy xuất các dịch vụ bên ngòai một cách dễ dàng và đơn giản như truy xuất các dịch vụ nội tại.
Service Agents**
Chúng ta đã tìm hiểu qua các lớp của mô hình 3 lớp. Lý thuyết hơi nhiều một chút có thể làm bạn khó hiểu vì khả năng trình bày có hạn, nên bây giờ thử tìm hiểu một qui trình cụ thể hơn để biết các lớp này giao tiếp với nhau như thế nào. Ví dụ trong ứng dụng của chúng ta có thao tác tạo một chuyên mục mới, thì các lớp sẽ ltương tác với nhau như sau:
**Lớp Presentation**
– Trình bày một web form, có các text box cho phép người sử dụng nhập tên và mô tả cho chuyên mục
– Khi người dùng nhấn nút tạo trên form này, ứng dụng sẽ thực hiện việc tạo một Business Entity
**Category **mới như đoạn code sau minh họa:
public void CreateNewCategory()
{
Category category = new Category();
category.Name = name.Text;
category.Description = description.Text;
// sử dụng dịch vụ do lớp Business cung cấp để tạo chuyên mục
CategoryService.CreateCategory(category);
}
**Lớp Business Logic**
Để cung cấp dịch vụ tạo một chuyên mục, thành phần
**CategoryService **sẽ cung cấp hàm sau:
public static void CreateCategory(Category category)
{
// kiểm tra xem tên khóa của chuyên mục đã tồn tại chưa?
…
// kiểm tra tên khóa của chuyên mục có hợp lệ không?
…
// sử dụng DV của lớp Data Access để lưu chuyên mục mới này vào CSDL
CategoryDAO categoryDAO = new CategoryDAO();
categoryDAO.CreateCategory(category);
}
**Lớp Data Access**
Tương tự, để cung cấp dịch vụ lưu một chuyên mục mới vào CSDL, thành phần
**CategoryDAO **sẽ cung cấp hàm sau (sử dụng ADO.NET để kết nối với CSDL):
public void CreateCategory(Category category)
{
// tạo connection
…
// tạo command, khởi tạo các tham số…
command.Parameters.Add(new SqlParameter(“@KeyName”, category.KeyName));
command.Parameters.Add(new SqlParameter(“@Name”, category.Name));
command.Parameters.Add(new SqlParameter(“@Description”, category.Description));
// lưu dữ liệu
command.ExecuteNonQuery();
}
**Phân tích và thiết kế**
Ứng dụng của chúng ta sẽ viết bằng ASP.NET 2.0 và SQL Server 2000/2005. Ngôn ngữ được dùng là C#.
Chúng ta đã tìm hiểu qua các thành phần chính trong mô hình 3 lớp, giờ đến lúc bắt tay vào thiết kế các thành phần đó cho ứng dụng tin tức của chúng ta. Trong ứng dụng tin tức mà chúng ta đã tìm hiểu yêu cầu qua bài viết trước, chúng ta thấy có hai đối tượng thông tin chính mà chúng ta cần quản lý là các chuyên mục(category) và tin tức(news). Ứng dụng quản lý của chúng ta sẽ thu thập những đối tượng dữ liệu này từ người dùng(phóng viên, biên tập viên) và trình bày lại cho người sử dụng khác xem(độc giả). Giờ chúng ta bắt tay vào thiết kế các thành phần
**Business Entities**.
**Business Entities**
Ứng dụng của chúng ta sẽ bao gồm 2 entity chính là
**Category **và **News**.
Trước hết là
**Category**. Một chuyên mục ( **Category**) sẽ gồm những thông tin sau: **CategoryId**: Mã chuyên mục – sẽ được sinh tự động khi tạo mới
**Name**: Tên chuyên mục. VD: Vi tính, Kinh tế…
**KeyName**: Tên gợi nhớ dùng để phân biệt chuyên mục với nhau (không được trùng nhau). VD với VNExpress bạn sẽ thấy có Vi-tinh, Suc-khoe…
**Description**: Mô tả cho chuyên mục. VD: Description cho Vi-tinh là: thông tin mới nhất về công nghệ thông tin của Việt Nam và thế giới…
**Picture**: Hình ảnh đại diện cho chuyên mục
Trong ứng dụng đơn giản này, chúng ta chỉ thiết kế chuyên mục có một cấp, không có các chuyên mục con, cháu… Và ứng dụng này cũng không có phần quản lý các nhà biên tập viên, nhà báo và cơ chế cấp quyền hạn duyệt bài, gửi bài…Tôi dành phần này cho các bạn phát triển thêm, nhưng tôi cũng sẽ gợi ý cho các bạn cách thiết kế trong phần mở rộng ứng dụng.
Tiếp theo là
**News**. Mỗi một bản tin sẽ có các thông tin sau: **NewsId**: mã bản tin. Sẽ được sinh tự động khi tạo mới.
**Title**: tiêu đề chính của bản tin. VD: Microsoft tuyên bố phá sản!
**Subtitle**: tiêu đề phụ của bản tin. VD: Bill Gates từ chức!
**Excerpt**: phần giới thiệu ngắn gọn của bản tin
**Authors**: danh sách tác giả bản tin. VD: Nguyễn Văn A, Hoàng Thị B
**Keywords**: danh sách từ khóa chính trong bản tin dùng để tìm kiếm. VD: Microsoft, broken
**Body**: Đây là phần nội dung chính của bản tin.
**Picture**: Hình ảnh minh họa cho bản tin.
**CreationTime**: Ngày giờ tạo bản tin
**LastModificationTime**: Ngày giờ chỉnh sửa cuối cùng của bản tin
**PublishedTime**: Ngày giờ bản tin được đăng
**TotalViews**: Tổng số lượt người xem bản tin
**TotalRates**: Tổng số lượt người đánh giá bản tin
**Rate**: Điểm đánh giá trung bình của bản tin
**Status**: Trạng thái hiện tại của bản tin. Có thể là Writting(Đang viết), Approving(Đang chờ duyệt), Published(Đã được đăng)
**Business Service Components**
Bước tiếp theo chúng ta sẽ phân tích và thiết kế các Business Service Components. Các thành phần này sẽ làm nhiệm vụ chính cung cấp các dịch vụ cho lớp Presentation dùng để lấy và lưu trữ thông tin.
Lớp
**CategoryService**
Chúng ta cần những thao tách chính trên đối tượng dữ liệu Category:
Tạo mới –
**CreateCategory(Category category)**
Cập nhật –
**UpdateCategory(Category category)**
Xóa –
**DeleteCategory(int categoryId)**
Lấy thông tin chi tiết –
**GetCategory(int categoryId)**
Lấy danh sách các category –
**GetCategories()**
Kiểm tra một Key xem có trong database chưa –
**CheckKey(string keyName)**. Thao tác này dùng để kiểm tra xem khi tạo mới một category thì KeyName đã tồn tại trong hệ thống chưa. Thao tác này có thể dùng trên lớp Presentation để kiểm tra và thông báo lỗi cho người dùng khi họ nhập một tên khóa đã có trong hệ thống *. Lưu ý: Chúng ta sẽ thực hiện các business logic của hệ thống trong lớp này*
Tương tự đối với lớp
**NewsService**, dựa trên những gì yêu cầu chúng ta phân tích ở bài viết đầu tiên, chúng ta cần những thao tác chính sau đây trên đối tượng News:
Tạo mới –
**CreateNews(News news)**
Cập nhật –
**UpdateNews(News news)**
Xóa –
**DeleteNews(int newsId)**
Lấy thông tin chi tiết –
**GetNews(int newsId)**
Lấy danh sách các bản tin thuộc một chuyên mục nào đó, sắp xếp theo tin mới nhất –
**GetNewsOfCategory(int categoryId, int page, int pageSize, out int totalRecords)**
Cập nhật số lần xem của một bản tin –
**UpdateTotalViews(int newsId)**
Cập nhật đánh giá cho một bản tin –
**UpdateRate(int newsId, int rate)**
Tìm bài viết dựa trên từ khóa –
**SearchNews(string keyWords, int page, int pageSize, out int totalRecords)**
Trong các hàm trên, các bạn chú ý đến hàm GetNewsOfCategory. Trong hàm này có các tham số dùng để phân trang các bản tin. Chúng ta cần đến chức năng này vì khi trình bày trên trang tin, chúng ta chỉ trình bày một số lượng có hạn các bản tin của một chuyên mục nào đó chứ không thể trình bày tất cả trên màn hình được. Khi người dùng muốn xem thêm, họ có thể chọn trang tiếp theo hoặc nhấp vào link
**Xem tiếp**, lúc đó ứng dụng sẽ trình bày các bản tin ở các trang tiếp theo. Tham số **totalRecords **cho chúng ta biết được tổng số bản tin thật sự có trong chuyên mục đó.
**Khi phân tích thiết kế ban đầu bạn không thể nào hình dung được hết các yêu cầu phát sinh để thiết kế trước các thao tác cần thiết. Bạn phải cập nhật bản thiết kế thường xuyên để phù hợp với yêu cầu. Bản thiết kế này vẫn còn thiếu một số chức năng cần thiết mà tôi sẽ trình bày cho các bạn trong bài viết tiếp theo, chúng ta sẽ chỉnh sửa bản thiết kế này trong quá trình phát triển ứng dụng để phù hợp với các yêu cầu phát sinh mà chúng ta chưa nhìn thấy hết khi thiết kế. Lưu ý: **
**Data Access Components**
Bây giờ chúng ta sẽ thiết kế các lớp dùng để truy xuất và cập nhật dữ liệu. Các hàm của các lớp DAO cũng khá đơn giản, chỉ làm nhiệm vụ cập nhật dữ liệu vào database và truy xuất dữ liệu từ database. Các bạn cũng thấy chức năng nó giống như trên lớp Business Logic, nhưng ở đây chúng ta không có bất kỳ ràng buộc logic gì, chỉ đơn giản thực hiện việc truy xuất dữ liệu mà thôi. Các business logic đã được kiểm tra trên lớp Business Logic.
Chúng ta tách biệt 2 lớp CategoryDAO (DAO – Data Access Object) và NewsDAO để dễ quản lý và thay đổi khi cần thiết. VD nếu bạn muốn thêm một thao tác truy xuất dữ liệu mới trên đối tượng News, bạn sẽ biết ngay mình phải thay đổi lớp NewsDAO. Nhưng có những thao tác bạn phải cân nhắc nên để nó lớp nào vì nó liên quan đến nhiều đối tượng, lúc đó bạn phải xét xem mục đích chính của thao tác đó là gì, thao tác trên đối tượng dữ liệu chính nào để đưa thao tác đó vào lớp phù hợp.
**Thiết kế cơ sở dữ liệu**
Do ứng dụng của chúng ta đơn giản nên chỉ có 2 bảng dữ liệu ánh xạ gần như 1-1 với các entities trên lớp Business Logic như sau:
**Hiện thực lớp Business Logic & Data Access**
Sau khi đã xong bước thiết kế, chúng ta sẽ tiến hành hiện thực 2 lớp Business và Data Access. Các bạn có thể xem source code đính kèm để biết chi tiết cách hiện thực 2 lớp này như thế nào. Lớp Presentation sẽ được thiết kế và hiện thực trong bài viết tiếp theo. Phần bên dưới tôi sẽ trình bày một số điểm chính trong cách hiện thực.
**Hiện thực Data Access Components**
Do ứng dụng của chúng ta đơn giản nên được giới hạn sẽ dùng với CSDL SQL Server 2000/2005 nên lớp này không được thiết kế để chạy cùng lúc với nhiều loại database khác nhau. Chúng ta sẽ dùng cái Stored Procedures để truy xuất dữ liệu an toàn và dễ thay đổi hơn, tránh bị các lỗi như SQL Injection(không thể tránh hoàn toàn nếu bạn không hiện thực đúng). Các bạn có thể xem qua một cách hiện thực một hàm cơ bản như thế nào:
public void CreateCategory(Category category)
{
using (SqlConnection connection = GetConnection())
{
SqlCommand command = new SqlCommand(“spCategoriesCreate”, connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter(“@KeyName”, category.KeyName));
command.Parameters.Add(new SqlParameter(“@Name”, category.Name));
command.Parameters.Add(new SqlParameter(“@Description”, category.Description));
command.Parameters.Add(new SqlParameter(“@Picture”, category.Picture));
SqlParameter paramCategoryId = new SqlParameter(“@CategoryId”, SqlDbType.Int, 4);
paramCategoryId.Direction = ParameterDirection.Output;
command.Parameters.Add(paramCategoryId);
connection.Open();
command.ExecuteNonQuery();
if (paramCategoryId.Value != DBNull.Value)
category.CategoryId = (int)paramCategoryId.Value;
else
throw new DataAccessException(String.Format(Resources.Strings.CreateEntityException, “Category”));
}
}
Stored Procedure
**spCategoriesCreate **đơn giản được viết như sau:
CREATE PROCEDURE dbo.spCategoriesCreate
@Name nvarchar(50),
@KeyName varchar(30),
@Description ntext,
@Picture varchar(256),
@CategoryId int output
AS
INSERT INTO Categories
(
Name,
KeyName,
Description,
Picture
)
VALUES
(
@Name,
@KeyName,
@Description,
@Picture
)
SELECT @CategoryId = SCOPE_IDENTITY()
**Hiện thực lớp Business Logic**
Hiện thực lớp
**Business Logic** đòi hỏi bạn phải nắm rõ các business logic của ứng dụng. Ví dụ đối với ứng dụng tin tức của chúng ta thì khi tạo một chuyên mục mới, bạn phải kiểm tra xem **KeyName **của chuyên mục đó đã có trong hệ thống chưa? Nếu có rồi thì phải báo lỗi, và nếu chưa có thì chúng ta kiểm tra **KeyName **đó có hợp lệ hay không? (Chỉ chứa kí tự alphabet, chữ số, gạch dưới và gạch ngang…).
public static void CreateCategory(Category category)
{
// Has this key name existed?
if (!CheckKey(category.KeyName))
throw new BusinessException(String.Format(Resources.Strings.KeyNameExisted, category.KeyName));
// is this key name valid?
if (!ValidateKey(category.KeyName))
throw new BusinessException(String.Format(Resources.Strings.InvalidKeyName, category.KeyName));
// ok , now save it to database
CategoryDAO categoryDAO = new CategoryDAO();
categoryDAO.CreateCategory(category);
}

X-ac: 1.dca _dca

X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.

Link: <http://wp.me/p3TeQ-2S>; rel=shortlink


text:
1. Định nghĩa:
Xác suất của biến cố A được tính với điều kiện biến cố B đã xảy ra được gọi là xác suất có điều kiện của A. Và kí hiệu là P(A/B).
Thí du: Cho một hộp kín có 6 thẻ ATM của ACB và 4 thẻ ATM của Vietcombank. Lấy ngẫu nhiên lần lượt 2 thẻ (lấy không hoàn lại). Tìm xác suất để lần thứ hai lấy được thẻ ATM của Vietcombank nếu biết lần thứ nhất đã lấy được thẻ ATM của ACB.
Giải: Gọi A là biến cố “lần thứ hai lấy được thẻ ATM Vietcombank“, B là biến cố “lần thứ nhất lấy được thẻ ATM của ACB“. Ta cần tìm P(A/B).
Sau khi lấy lần thứ nhất (biến cố B đã xảy ra) trong hộp còn lại 9 thẻ (trong đó 4 thẻ Vietcombank) nên :
2. Công thức nhân xác suất
a. Công thức: Xác suất của tích hai biến cố A và B bằng tích xác suất của một trong hai biến cố đó với xác suất có điều kiện của biến cố còn lại:
Chứng minh: Giả sử phép thử có n kết quả cùng khả năng có thể xảy ra mA kết quả thuận lợi cho A, mB kết quả thuận lợi cho B. Vì A và B là hai biến cố bất kì, do đó nói chung sẽ có k kết quả thuận lợi cho cả A và B cùng đồng thời xảy ra. Theo định nghĩa cổ điển của xác suất ta có:
Ta đi tính P(B/A).
Với điều kiện biến cố A đã xảy ra, nên số kết quả cùng khả năng của phép thử đối với biến B là mA, số kết quả thuận lợi cho B là k. Do đó:
Như vậy:
Vì vai trò của hai biến cố A và B như nhau. Bằng cách chứng minh tương tự ta được: P(A.B) = P(B).P(A/B)♦
(chứng minh trên được tham khảo từ giáo trình Xác suất thống kê của tác giả Hoàng Ngọc Nhậm – NXB Thống Kê)
Ví dụ:
1. Trong hộp có 20 nắp khoen bia Tiger, trong đó có 2 nắp ghi “Chúc mừng bạn đã trúng thưởng xe BMW”. Bạn được chọn lên rút thăm lần lượt hai nắp khoen, tính xác suất để cả hai nắp đều trúng thưởng.
Giải: Gọi A là biến cố “nắp khoen đầu trúng thưởng”. B là biến cố “nắp khoen thứ hai trúng thưởng”. C là biến cố “cả 2 nắp đều trúng thưởng”.
Khi bạn rút thăm lần đầu thì trong hộp có 20 nắp trong đó có 2 nắp trúng. p(A) = 2/20
Khi biến cố A đã xảy ra thì còn lại 19 nắp trong đó có 1 nắp trúng thưởng. Do đó: p(B/A) = 1/19.
Từ đó ta có: p(C) = p(A). p(B/A) = (2/20).(1/19) = 1/190 ≈ 0.0053
2. Áo Việt Tiến trước khi xuất khẩu sang Mỹ phải qua 2 lần kiểm tra, nếu cả hai lần đều đạt thì chiếc áo đó mới đủ tiêu chuẩn xuất khẩu. Biết rằng bình quân 98% sản phẩm làm ra qua được lần kiểm tra thứ nhất, và 95% sản phẩm qua được lần kiểm tra đầu sẽ tiếp tục qua được lần kiểm tra thứ hai. Tìm xác suất để 1 chiếc áo đủ tiêu chuẩn xuất khẩu?
Giải:
Gọi A là biến cố ” qua được lần kiểm tra đầu tiên”, B là biên cố “qua được lần kiểm tra thứ 2”, C là biến cố “đủ tiêu chuẩn xuất khẩu”
Thì: p(C) = p(A). p(B/A) = 0,98.0,95 = 0,931
3. Lớp Lý 2 Sư Phạm có 95 Sinh viên, trong đó có 40 nam và 55 nữ. Trong kỳ thi môn Xác suất thống kê có 23 sinh viên đạt điểm giỏi (trong đó có 12 nam và 11 nữ). Gọi tên ngẫu nhiên một sinh viên trong danh sách lớp. Tìm xác suất gọi được sinh viên đạt điểm giỏi môn XSTK, biết rằng sinh viên đó là nữ?
Giải:
Gọi A là biến cố “gọi được sinh viên nữ”, B là biến cố gọi được sinh viên đạt điểm giỏi môn XSTK”, C là biến cố “gọi được sinh viên nữ đạt điểm giỏi”
Thì ta có: p(C) = P(B/A)
Do đó:
b. Các định nghĩa về các biến cố độc lập:
* Định nghĩa 1: Hai biến cố A và B gọi là độc lập nhau nếu việc xảy ra hay không xảy ra biến cố này không làm thay đổi xác suất xảy ra của biến cố kia và ngược lại.
* Ta có thể dùng khái niệm xác suất có điều kiện để định nghĩa các biến cố độc lập như sau:
Nếu P(A/B) = P(A) và P(B/A) = P(B) thì A và B độc lập với nhau.
Trong trường hợp việc biến cố này xảy ra hay không xảy ra làm cho xác suất xảy ra của biến cố kia thay đổi thì hai biến cố đó gọi là phụ thuộc nhau.
Thí dụ: Trong bình có 4 quả cầu trắng và 5 quả cầu xanh, lấy ngẫu nhiên từ bình ra 1 quả cầu. Gọi A là biến cố “lấy được quả cầu xanh“. Hiển nhiên P(A) = 5/9 . Quả cầu lấy ra được bỏ lại vào bình và tiếp tục lấy 1 quả cầu. Gọi B là biến cố “lần thứ 2 lấy được quả cầu xanh“, P(B) = 5/9. Rõ ràng xác suất của biến cố B không thay đổi khi biến cố A xảy ra hay không xảy ra và ngược lại. Vậy hai biến cố A và B độc lập nhau.
Ta chú ý rằng: nếu A và B độc lập, thì hoặc hoặc cũng độc lập với nhau.
Trong thực tế việc nhận biết tính độc lập, phụ thuộc, xung khắc của các biến cố. chủ yếu dựa vào trực giác.
* Định nghĩa 2: Các biến cố A1, A2, …, An, được gọi là độc lập từng đôi nếu mỗi cặp hai biến cố bất kỳ trong n biến cố đó độc lập với nhau.
Thí dụ: Xét phép thử từng đồng xu 3 lần. Gọi Ai là biến cố: “được mặt sấp ở lần tung thứ i” (i = 1, 2, 3). Rõ ràng mỗi cặp hai trong 3 biến cố đó độc lập với nhau. Vậy A1, A2, A3 độc lập từng đôi.
* Định nghĩa 3: các biến cố A1, A2, …, An, được gọi là độc lập từng phần nếu mỗi biến cố độc lập với tích của một tổng hợp bất kỳ trong các biến cố còn lại.
Ta chú ý là các biến cố độc lập từng đội thì chưa chắc độc lập toàn phần. Điều kiện độc lập toàn phần mạnh hơn độc lập từng đôi.
c) Hệ quả: Từ định lý trên ta có thể suy ra một số hệ quả sau đây:
Hệ quả 1:
Xác suất của tích hai biến cố độc lập bằng tích xác suất của các biến cố đó: P(A.B) = P(A).P(B).
Hệ quả 2:
Xác suất của tích n biến cố bằng tích xác suất của các biến cố đó, trong đó xác suất của mỗi biến cố tiếp sau đều được tính với điều kiện tấc cả các biến cố trước đó đã xảy ra:
Hệ quả 3:
Xác suất của tích n biến cố độc lập toàn phần bằng tích xác suất của các biến cố đó:
P(A1.A2 … An) = P(A1).P(A2) … P(An)
thầy giúp em bài này với ạ
Bắn 3 viên đạn đọc lập vào cùng một bia. xác suất trúng đích của viên thứ nhất, viên thứ hai và viên thứ ba tương ứng bằng 0,3; 0,5;0,7.
a) Tìm xác suất sao cho trong 3 viên đạn có đúng 1 viên trúng đích.
b) Tím xác suất để có ít nhất 1 viên đạn trúng đích.
LikeLike
1 hộp có 20 quả cầu: 9 quả ghi số 1, 5 quả ghi số 2, 6 quả ghi số 3. lấy ngẫu nhiên lần lượt ra 10 quả (có hoàn lại) thì thấy lấy được ít nhất 3 quả ghi số 3. tính xác xuất để lấy được đúng 3 quả ghi số 3. xin thầy và các p giải giúp mình bài này với. plz
LikeLike
thầy ơi thầy giúp em bài này với ạ:
Tỉ lệ phế phẩm của một lô hàng là 3%. Chọn ngẫu nhiên có hoàn lại lần lượt từng sản phẩm cho đến khi gặp phế phẩm thì dừng:
a) Tính xác suất phải chọn đến lần thứ tư.
b) Phải chọn bao nhiêu lần để xác suất chọn được ít nhất 1 phế phẩm không nhỏ hơn 0,9.
LikeLike
Không biết ai giải câu này chưa, có phải kết quả của câu a là 0.9730.03 không vậy mọi người
LikeLike
chào thầy. em có bài toán này mà nghĩ mãi không ra nhờ thầy giúp em với được không ạ?
có 2 lô hàng. lô I có 4 sản phẩm tốt và 1 sản phẩm xấu, lô II có 3 sản phẩm tốt và c2 sản phẩm xấu. lấy từ lô II ra 1 sản phẩm. Tiếp đó lấy 1 sp từ lô I bỏ sang lô II. sau đó lấy ra 1 sản phẩm từ lô II. tính sx để sản phẩm đó là tốt
LikeLike
Bài này dựa vào cả xác suất độc lập và xác suất có điều kiện. Kết quả là : P=3/54/52/5*3/5=72/125.
LikeLike
nho moi nguoi giai dum minh nhung bai nay voi
.Đề thi trắc nghiệm 40 câu hỏi, mỗi câu hỏi có 5 phương án trả lời và trong đó có 1 phương án đúng. Một thí sinh đi thi do không học bài nên đã chọn ngẫu nhiên phương án trả lời cho mỗi câu hỏi. Gọi X là số câu mà thí sinh trả lời đúng,
a. Tìm Kỳ vọng E(X) và độ lệch chuẩn .
b. Tính xác suất để thí sinh này trả lời đúng ít nhất 1 câu hỏi.
4./ Để đánh giá về tỷ lệ công trình có vi phạm các quy định về xây dựng, bộ phận thanh tra tiến hành kiểm tra ngẫu nhiên 36 công trình thì có 6 công trình bị xử lý vi phạm.
a. Ước lượng khoảng của tỷ lệ công trình xây dựng vi phạm với độ tin cậy 97%.
b. Nếu nhận định tỷ lệ công trình xây dựng có vi phạm là 18% thì có chấp nhận được không với mức ý nghĩa 3%?
LikeLike

markdown:
**1. Định nghĩa: ** **Xác suất của biến cố A được tính với điều kiện biến cố B đã xảy ra được gọi là xác suất có điều kiện của A. Và kí hiệu là P(A/B).** **Thí du:** Cho một hộp kín có 6 thẻ ATM của ACB và 4 thẻ ATM của Vietcombank. Lấy ngẫu nhiên lần lượt 2 thẻ (lấy không hoàn lại). Tìm xác suất để lần thứ hai lấy được thẻ ATM của Vietcombank nếu biết lần thứ nhất đã lấy được thẻ ATM của ACB. **Giải:** Gọi A là biến cố “ *lần thứ hai lấy được thẻ ATM Vietcombank*“, B là biến cố “ *lần thứ nhất lấy được thẻ ATM của ACB*“. Ta cần tìm P(A/B).
Sau khi lấy lần thứ nhất (biến cố B đã xảy ra) trong hộp còn lại 9 thẻ (trong đó 4 thẻ Vietcombank) nên :
**2. Công thức nhân xác suất** **a. Công thức:** Xác suất của tích hai biến cố A và B bằng tích xác suất của một trong hai biến cố đó với xác suất có điều kiện của biến cố còn lại: **Chứng minh:** Giả sử phép thử có n kết quả cùng khả năng có thể xảy ra m A kết quả thuận lợi cho A, m B kết quả thuận lợi cho B. Vì A và B là hai biến cố bất kì, do đó nói chung sẽ có k kết quả thuận lợi cho cả A và B cùng đồng thời xảy ra. Theo định nghĩa cổ điển của xác suất ta có:
Ta đi tính P(B/A).
Với điều kiện biến cố A đã xảy ra, nên số kết quả cùng khả năng của phép thử đối với biến B là m
A, số kết quả thuận lợi cho B là k. Do đó:
Như vậy:
Vì vai trò của hai biến cố A và B như nhau. Bằng cách chứng minh tương tự ta được: P(A.B) = P(B).P(A/B)♦
*(chứng minh trên được tham khảo từ giáo trình Xác suất thống kê của tác giả Hoàng Ngọc Nhậm – NXB Thống Kê)* **Ví dụ:**
1. Trong hộp có 20 nắp khoen bia Tiger, trong đó có 2 nắp ghi “Chúc mừng bạn đã trúng thưởng xe BMW”. Bạn được chọn lên rút thăm lần lượt hai nắp khoen, tính xác suất để cả hai nắp đều trúng thưởng.
**Giải:** Gọi A là biến cố “nắp khoen đầu trúng thưởng”. B là biến cố “nắp khoen thứ hai trúng thưởng”. C là biến cố “cả 2 nắp đều trúng thưởng”.
Khi bạn rút thăm lần đầu thì trong hộp có 20 nắp trong đó có 2 nắp trúng. p(A) = 2/20
Khi biến cố A đã xảy ra thì còn lại 19 nắp trong đó có 1 nắp trúng thưởng. Do đó: p(B/A) = 1/19.
Từ đó ta có:
**p(C) = p(A). p(B/A) = (2/20).(1/19) = 1/190 ≈ 0.0053**
2. Áo Việt Tiến trước khi xuất khẩu sang Mỹ phải qua 2 lần kiểm tra, nếu cả hai lần đều đạt thì chiếc áo đó mới đủ tiêu chuẩn xuất khẩu. Biết rằng bình quân 98% sản phẩm làm ra qua được lần kiểm tra thứ nhất, và 95% sản phẩm qua được lần kiểm tra đầu sẽ tiếp tục qua được lần kiểm tra thứ hai. Tìm xác suất để 1 chiếc áo đủ tiêu chuẩn xuất khẩu?
**Giải:**
Gọi A là biến cố ” qua được lần kiểm tra đầu tiên”, B là biên cố “qua được lần kiểm tra thứ 2”, C là biến cố “đủ tiêu chuẩn xuất khẩu”
Thì:
**p(C) = p(A). p(B/A) = 0,98.0,95 = 0,931**
3. Lớp Lý 2 Sư Phạm có 95 Sinh viên, trong đó có 40 nam và 55 nữ. Trong kỳ thi môn Xác suất thống kê có 23 sinh viên đạt điểm giỏi (trong đó có 12 nam và 11 nữ). Gọi tên ngẫu nhiên một sinh viên trong danh sách lớp. Tìm xác suất gọi được sinh viên đạt điểm giỏi môn XSTK, biết rằng sinh viên đó là nữ?
**Giải:**
Gọi A là biến cố “gọi được sinh viên nữ”, B là biến cố gọi được sinh viên đạt điểm giỏi môn XSTK”, C là biến cố “gọi được sinh viên nữ đạt điểm giỏi”
Thì ta có: p(C) = P(B/A)
Do đó:
**b. Các định nghĩa về các biến cố độc lập:** *** Định nghĩa 1:** Hai biến cố A và B gọi là độc lập nhau nếu việc xảy ra hay không xảy ra biến cố này không làm thay đổi xác suất xảy ra của biến cố kia và ngược lại.
* Ta có thể dùng khái niệm xác suất có điều kiện để định nghĩa các biến cố độc lập như sau:
Nếu P(A/B) = P(A) và P(B/A) = P(B) thì A và B độc lập với nhau.
Trong trường hợp việc biến cố này xảy ra hay không xảy ra làm cho xác suất xảy ra của biến cố kia thay đổi thì hai biến cố đó gọi là phụ thuộc nhau.
**Thí dụ**: Trong bình có 4 quả cầu trắng và 5 quả cầu xanh, lấy ngẫu nhiên từ bình ra 1 quả cầu. Gọi A là biến cố “ **lấy được quả cầu xanh**“. Hiển nhiên P(A) = 5/9 . Quả cầu lấy ra được bỏ lại vào bình và tiếp tục lấy 1 quả cầu. Gọi B là biến cố “ **lần thứ 2 lấy được quả cầu xanh**“, P(B) = 5/9. Rõ ràng xác suất của biến cố B không thay đổi khi biến cố A xảy ra hay không xảy ra và ngược lại. Vậy hai biến cố A và B độc lập nhau.
Ta chú ý rằng: nếu A và B độc lập, thì
hoặc
hoặc
cũng độc lập với nhau.
**Trong thực tế việc nhận biết tính độc lập, phụ thuộc, xung khắc của các biến cố. chủ yếu dựa vào trực giác.** *** Định nghĩa 2:** Các biến cố A1, A2, …, An, được gọi là độc lập từng đôi nếu mỗi cặp hai biến cố bất kỳ trong n biến cố đó độc lập với nhau. **Thí dụ**: Xét phép thử từng đồng xu 3 lần. Gọi Ai là biến cố: “được mặt sấp ở lần tung thứ i” (i = 1, 2, 3). Rõ ràng mỗi cặp hai trong 3 biến cố đó độc lập với nhau. Vậy A1, A2, A3 độc lập từng đôi. *** Định nghĩa 3**: các biến cố A1, A2, …, An, được gọi là độc lập từng phần nếu mỗi biến cố độc lập với tích của một tổng hợp bất kỳ trong các biến cố còn lại.
Ta chú ý là các biến cố độc lập từng đội thì chưa chắc độc lập toàn phần. Điều kiện độc lập toàn phần mạnh hơn độc lập từng đôi.
**c) Hệ quả:** Từ định lý trên ta có thể suy ra một số hệ quả sau đây: **Hệ quả 1:**
Xác suất của tích hai biến cố độc lập bằng tích xác suất của các biến cố đó: P(A.B) = P(A).P(B).
**Hệ quả 2**:
Xác suất của tích n biến cố bằng tích xác suất của các biến cố đó, trong đó xác suất của mỗi biến cố tiếp sau đều được tính với điều kiện tấc cả các biến cố trước đó đã xảy ra:
**Hệ quả 3**:
Xác suất của tích n biến cố độc lập toàn phần bằng tích xác suất của các biến cố đó:
P(A1.A2 … An) = P(A1).P(A2) … P(An)
thầy giúp em bài này với ạ
Bắn 3 viên đạn đọc lập vào cùng một bia. xác suất trúng đích của viên thứ nhất, viên thứ hai và viên thứ ba tương ứng bằng 0,3; 0,5;0,7.
a) Tìm xác suất sao cho trong 3 viên đạn có đúng 1 viên trúng đích.
b) Tím xác suất để có ít nhất 1 viên đạn trúng đích.
LikeLike
1 hộp có 20 quả cầu: 9 quả ghi số 1, 5 quả ghi số 2, 6 quả ghi số 3. lấy ngẫu nhiên lần lượt ra 10 quả (có hoàn lại) thì thấy lấy được ít nhất 3 quả ghi số 3. tính xác xuất để lấy được đúng 3 quả ghi số 3. xin thầy và các p giải giúp mình bài này với. plz
LikeLike
thầy ơi thầy giúp em bài này với ạ:
Tỉ lệ phế phẩm của một lô hàng là 3%. Chọn ngẫu nhiên có hoàn lại lần lượt từng sản phẩm cho đến khi gặp phế phẩm thì dừng:
a) Tính xác suất phải chọn đến lần thứ tư.
b) Phải chọn bao nhiêu lần để xác suất chọn được ít nhất 1 phế phẩm không nhỏ hơn 0,9.
LikeLike
Không biết ai giải câu này chưa, có phải kết quả của câu a là 0.97
30.03 không vậy mọi người
LikeLike
chào thầy. em có bài toán này mà nghĩ mãi không ra nhờ thầy giúp em với được không ạ?
có 2 lô hàng. lô I có 4 sản phẩm tốt và 1 sản phẩm xấu, lô II có 3 sản phẩm tốt và c2 sản phẩm xấu. lấy từ lô II ra 1 sản phẩm. Tiếp đó lấy 1 sp từ lô I bỏ sang lô II. sau đó lấy ra 1 sản phẩm từ lô II. tính sx để sản phẩm đó là tốt
LikeLike
Bài này dựa vào cả xác suất độc lập và xác suất có điều kiện. Kết quả là : P=3/5
4/52/5*3/5=72/125.
LikeLike
nho moi nguoi giai dum minh nhung bai nay voi
.Đề thi trắc nghiệm 40 câu hỏi, mỗi câu hỏi có 5 phương án trả lời và trong đó có 1 phương án đúng. Một thí sinh đi thi do không học bài nên đã chọn ngẫu nhiên phương án trả lời cho mỗi câu hỏi. Gọi X là số câu mà thí sinh trả lời đúng,
a. Tìm Kỳ vọng E(X) và độ lệch chuẩn .
b. Tính xác suất để thí sinh này trả lời đúng ít nhất 1 câu hỏi.
4./ Để đánh giá về tỷ lệ công trình có vi phạm các quy định về xây dựng, bộ phận thanh tra tiến hành kiểm tra ngẫu nhiên 36 công trình thì có 6 công trình bị xử lý vi phạm.
a. Ước lượng khoảng của tỷ lệ công trình xây dựng vi phạm với độ tin cậy 97%.
b. Nếu nhận định tỷ lệ công trình xây dựng có vi phạm là 18% thì có chấp nhận được không với mức ý nghĩa 3%?
LikeLike

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Truncated: length

Connection: close

Server: nginx

Link: <http://wp.me/P8gtr-bb>; rel=shortlink

Vary: Cookie

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


text:
2074 Shoemaker
Bách khoa toàn thư mở Wikipedia
2074 Shoemaker (1974 UA) là một tiểu hành tinh bay qua Sao Hỏa được phát hiện ngày 17 tháng 10, 1974 bởi Eleanor F. Helin ở Palomar. Nó được đặt theo tên bạn của người khám phá là nhà thiên văn học Gene Shoemaker.

markdown:
# 2074 Shoemaker
Bách khoa toàn thư mở Wikipedia
|Khám phá và chỉ định|
|Khám phá bởi||
|[Palomar](/wiki/%C4%90%C3%A0i_thi%C3%AAn_v%C4%83n_Palomar) [Tên chỉ định tiểu hành tinh](/w/index.php?title=T%C3%AAn_ch%E1%BB%89_%C4%91%E1%BB%8Bnh_ti%E1%BB%83u_h%C3%A0nh_tinh&action=edit&redlink=1) [Eugene Merle Shoemaker](/wiki/Eugene_Merle_Shoemaker) [Tên thay thế](/w/index.php?title=T%C3%AAn_ch%E1%BB%89_%C4%91%E1%BB%8Bnh_t%E1%BA%A1m_th%E1%BB%9Di_trong_thi%C3%AAn_v%C4%83n_h%E1%BB%8Dc&action=edit&redlink=1) [Đặc trưng quỹ đạo](/wiki/Qu%E1%BB%B9_%C4%91%E1%BA%A1o_m%E1%BA%ADt_ti%E1%BA%BFp) [Kỷ nguyên](/wiki/K%E1%BB%B7_nguy%C3%AAn_(thi%C3%AAn_v%C4%83n_h%E1%BB%8Dc))14 tháng 5, 2008 [Cận điểm quỹ đạo](/wiki/C%E1%BB%A7ng_%C4%91i%E1%BB%83m_qu%E1%BB%B9_%C4%91%E1%BA%A1o) [Viễn điểm quỹ đạo](/wiki/C%E1%BB%A7ng_%C4%91i%E1%BB%83m_qu%E1%BB%B9_%C4%91%E1%BA%A1o) [Độ lệch tâm](/wiki/%C4%90%E1%BB%99_l%E1%BB%87ch_t%C3%A2m_qu%E1%BB%B9_%C4%91%E1%BA%A1o) [Chu kỳ quỹ đạo](/wiki/Chu_k%E1%BB%B3_qu%E1%BB%B9_%C4%91%E1%BA%A1o) [Độ bất thường trung bình](/wiki/%C4%90%E1%BB%99_b%E1%BA%A5t_th%C6%B0%E1%BB%9Dng_trung_b%C3%ACnh) [Độ nghiêng quỹ đạo](/wiki/%C4%90%E1%BB%99_nghi%C3%AAng_qu%E1%BB%B9_%C4%91%E1%BA%A1o) [Kinh độ của điểm nút lên](/wiki/Kinh_%C4%91%E1%BB%99_c%E1%BB%A7a_%C4%91i%E1%BB%83m_n%C3%BAt_l%C3%AAn) [Acgumen của cận điểm](/wiki/Acgumen_c%E1%BB%A7a_c%E1%BA%ADn_%C4%91i%E1%BB%83m) [Đặc trưng vật lý chuẩn của tiểu hành tinh](/w/index.php?title=%C4%90%E1%BA%B7c_tr%C6%B0ng_v%E1%BA%ADt_l%C3%BD_chu%E1%BA%A9n_c%E1%BB%A7a_ti%E1%BB%83u_h%C3%A0nh_tinh&action=edit&redlink=1) [Cấp sao tuyệt đối](/wiki/C%E1%BA%A5p_sao_tuy%E1%BB%87t_%C4%91%E1%BB%91i) *(H)* **2074 Shoemaker** (1974 UA) là một tiểu hành tinh bay qua [Sao Hỏa](/wiki/Sao_H%E1%BB%8Fa) được phát hiện ngày 17 tháng 10, 1974 bởi [Eleanor F. Helin](/w/index.php?title=Eleanor_F._Helin&action=edit&redlink=1) ở [Palomar](/wiki/%C4%90%C3%A0i_thi%C3%AAn_v%C4%83n_Palomar). Nó được đặt theo tên bạn của người khám phá là nhà thiên văn học [Gene Shoemaker](/wiki/Gene_Shoemaker).
## Liên kết ngoài[
[sửa](/w/index.php?title=2074_Shoemaker&veaction=edit&vesection=1) | [sửa mã nguồn](/w/index.php?title=2074_Shoemaker&action=edit§ion=1)]
|
|
|
|
|Danh sách/danh mục
|

Set-Cookie: GeoIP=US:VA:Ashburn:39.04:-77.49:v4; Path=/; secure; Domain=.wikipedia.org

X-Content-Type-Options: nosniff

Cache-Control: private, s-maxage=0, max-age=0, must-revalidate

P3P: CP="This is not a P3P policy! See https://vi.wikipedia.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:CentralAutoLogin/P3P for more info."

Via: 1.1 varnish, 1.1 varnish

Content-Language: vi

X-UA-Compatible: IE=Edge

X-Cache: cp1065 miss, cp1054 miss

Vary: Accept-Encoding,Cookie,Authorization

Accept-Ranges: bytes


text:
Agastache urticifolia
Bách khoa toàn thư mở Wikipedia
Agastache urticifolia là một loài thực vật có hoa trong họ Hoa môi. Loài này được (Benth.) Kuntze mô tả khoa học đầu tiên năm 1891.[1]
Hình ảnh[sửa | sửa mã nguồn]
Chú thích[sửa | sửa mã nguồn]
- ^ The Plant List (2010). “Agastache urticifolia”. Truy cập ngày 5 tháng 6 năm 2013.
Liên kết ngoài[sửa | sửa mã nguồn]
- Phương tiện liên quan tới Agastache urticifolia tại Wikimedia Commons
- Dữ liệu liên quan tới Agastache urticifolia tại Wikispecies

markdown:
*Agastache urticifolia*
Bách khoa toàn thư mở Wikipedia
|
|Agastache urticifolia
|
|![]()
[Phân loại khoa học](/wiki/Ph%C3%A2n_lo%E1%BA%A1i_sinh_h%E1%BB%8Dc) [Giới](/wiki/Gi%E1%BB%9Bi_(sinh_h%E1%BB%8Dc))( *regnum*) [Plantae](/wiki/Th%E1%BB%B1c_v%E1%BA%ADt) [Angiospermae](/wiki/Th%E1%BB%B1c_v%E1%BA%ADt_c%C3%B3_hoa) [Eudicots](/wiki/Th%E1%BB%B1c_v%E1%BA%ADt_hai_l%C3%A1_m%E1%BA%A7m_th%E1%BA%ADt_s%E1%BB%B1) [Bộ](/wiki/B%E1%BB%99_(sinh_h%E1%BB%8Dc))( *ordo*) [Lamiales](/wiki/B%E1%BB%99_Hoa_m%C3%B4i) [Họ](/wiki/H%E1%BB%8D_(sinh_h%E1%BB%8Dc))( *familia*) [Lamiaceae](/wiki/H%E1%BB%8D_Hoa_m%C3%B4i) [Chi](/wiki/Chi_(sinh_h%E1%BB%8Dc))( *genus*) [Agastache](/wiki/Agastache) [Loài](/wiki/Lo%C3%A0i)( *species*) **A. urticifolia** [Danh pháp hai phần](/wiki/Danh_ph%C3%A1p_hai_ph%E1%BA%A7n) *Agastache urticifolia*
(
[Benth.](/wiki/George_Bentham)) [Kuntze](/w/index.php?title=Carl_Ernst_Otto_Kuntze&action=edit&redlink=1), 1891 * là một loài Agastache urticifolia* [thực vật có hoa](/wiki/Th%E1%BB%B1c_v%E1%BA%ADt_c%C3%B3_hoa)trong [họ Hoa môi](/wiki/H%E1%BB%8D_Hoa_m%C3%B4i). Loài này được (Benth.) Kuntze mô tả khoa học đầu tiên năm 1891. [[1]](#cite_note-1)
## Hình ảnh[
[sửa](/w/index.php?title=Agastache_urticifolia&veaction=edit&vesection=1) | [sửa mã nguồn](/w/index.php?title=Agastache_urticifolia&action=edit§ion=1)]
## Chú thích[
[sửa](/w/index.php?title=Agastache_urticifolia&veaction=edit&vesection=2) | [sửa mã nguồn](/w/index.php?title=Agastache_urticifolia&action=edit§ion=2)] **The Plant List (2010).** [^](#cite_ref-1) [“](http://www.theplantlist.org/tpl1.1/record/kew-4499). Truy cập ngày 5 tháng 6 năm 2013. *Agastache urticifolia*”
## Liên kết ngoài[
[sửa](/w/index.php?title=Agastache_urticifolia&veaction=edit&vesection=3) | [sửa mã nguồn](/w/index.php?title=Agastache_urticifolia&action=edit§ion=3)]
Phương tiện liên quan tới
[Agastache urticifolia](//commons.wikimedia.org/wiki/Category:Agastache_urticifolia)tại [Wikimedia Commons](/wiki/Wikimedia_Commons)
Dữ liệu liên quan tới
[Agastache urticifolia](//species.wikimedia.org/wiki/Agastache_urticifolia)tại [Wikispecies](/wiki/Wikispecies)


text:
Chó rừng lưng đen
Chó rừng lưng đen, tên khoa học Canis mesomelas, là loài chó rừng kích thước nhỏ nhất và được xem là thành viên cổ xưa nhất của chi Chó.[1] Nó cũng là loài chó rừng hung hăng nhất, chúng được ghi nhận từng tấn công các loài thú có cân nặng lớn gấp nhiều lần [3] Loài chó này phân bố ở vùng Nam Phi và vùng duyên hải phía Đông của Kenya, Somalia và Ethiopia.
Đặc điểm[sửa | sửa mã nguồn]
Là các loài ăn thịt "cơ hội": chúng săn bắt các động vật kích thước nhỏ tới trung bình và cũng là các loài động vật ăn xác thối. Chúng có những chiếc chân dài cũng như răng nanh cong rất thích hợp với việc săn các loài thú, chim, bò sát nhỏ; còn bàn chân lớn và việc xương chân dính liền với nhau giúp chúng có thể hình cực tốt thích hợp cho việc chạy đường trường mà không bị mất sức: chúng có thể chạy với tốc độ 16 km/h (9,9 mph) trong một thời gian rất dài. Chó rừng là động vật hoàng hôn, chúng hoạt động tích cực nhất vào lúc bình minh hoặc lúc chạng vạng tối.
Đơn vị xã hội thông dụng nhất của chó rừng là một cặp chó đực-cái, chúng xác lập biên giới lãnh thổ bằng phân và nước tiểu và sẵn sàng tấn công quyết liệt những kẻ xâm nhập lạ mặt. Phần lãnh thổ này đủ lớn cho các con non mới trưởng thành sống tạm với cha mẹ trước khi chúng "ra ở riêng". Chó rừng nhiều khi cũng tụ tập thành những nhóm nhỏ, ví dụ như trong trường hợp cùng nhau chia chác một xác động vật chết; tuy nhiên chúng vẫn thường đi săn một mình hay theo cặp hơn.
Săn mồi[sửa | sửa mã nguồn]
Trong cuộc sống sinh tồn ở thảo nguyên châu Phi, Chó rừng lưng đen đôi khi phải đụng độ và giành giật miếng mồi với các loại thú ăn thịt khác như kền kền, có trường hợp một con chó rừng lưng đen đã nhanh chân cướp được thức ăn trước khi chim kền kền bay tới và cuộc chiến tranh giành thức ăn giữa chúng xảy ra. Chim kền kền bay lên và lao vào tấn công chó rừng nhằm lấy lại thức ăn của nó, con chó rừng lưng đen cũng nhe hàm răng sắc nhọn đe dọa và lao vào tấn công đáp trả chim kền kền. Cuối cùng, chim kền kền đành chịu thua nhường lại thức ăn cho chó rừng.[4]
Chó rừng lưng đen cũng không bỏ qua con mồi gà gô, trong những cuộc săn gà gô cho thấy, mặc dù có họ hàng gần với loài sói hoang, nhưng chó rừng không khéo léo và xảo quyệt như họ hàng của chúng. Mặc dù đàn gà gô tụ tập rất đồng để uống nước, nhưng chó rừng tỏ ra vụng về khi săn con mồi biết bay, lao thẳng vào đàn gà gô đang tập trung quanh hố nước, nhưng nó không vồ được con mồi nào, tuy chúng tập trung hết sức, nhưng chúng dường như thiếu sự xảo quyệt và gà gô cát tỏ ra rất nhanh nhẹn tránh được những cú đớp và vồ của chó rừng đàn gà gô bay tán loạn tránh được chúng.[5]
Hình ảnh[sửa | sửa mã nguồn]
Chú thích[sửa | sửa mã nguồn]
- ^ a ă Macdonald, David (1992). The Velvet Claw. tr. 256. ISBN 0563208449.
- ^ Hoffmann, M. (2014). “Canis mesomelas”. Sách đỏ IUCN các loài bị đe dọa. Phiên bản 2014.3. Liên minh Bảo tồn Thiên nhiên Quốc tế. Truy cập ngày 7 tháng 1 năm 2015.
- ^ The behavior guide to African mammals: including hoofed mammals, carnivores, primates by Richard Estes, published by University of California Press, 1992, ISBN 0-520-08085-8
- ^ Huy Phong (ngày 8 tháng 3 năm 2013). “Cuộc chiến giành thức ăn giữa kền kền và chó rừng”. Tạp chí Khám phá điện tử. Truy cập ngày 8 tháng 1 năm 2014.
- ^ Chó rừng săn gà gô trên sa mạc châu Phi
Tham khảo[sửa | sửa mã nguồn]
- Dữ liệu liên quan tới Canis mesomelas tại Wikispecies
- Phương tiện liên quan tới Canis mesomelas tại Wikimedia Commons

markdown:
# Chó rừng lưng đen
|
|Canis mesomelas
|Thời điểm hóa thạch:
| - nay ![ 2012-bb-jackal-1.jpg](//upload.wikimedia.org/wikipedia/commons/thumb/d/df/2012-bb-jackal-1.jpg/280px-2012-bb-jackal-1.jpg)
![ 2012-bb-jackal-1.jpg](http://upload.wikimedia.org/wikipedia/commons/thumb/d/df/2012-bb-jackal-1.jpg/280px-2012-bb-jackal-1.jpg)
[Tình trạng bảo tồn](/wiki/T%C3%ACnh_tr%E1%BA%A1ng_b%E1%BA%A3o_t%E1%BB%93n) [Phân loại khoa học](/wiki/Ph%C3%A2n_lo%E1%BA%A1i_sinh_h%E1%BB%8Dc) [Giới](/wiki/Gi%E1%BB%9Bi_(sinh_h%E1%BB%8Dc))( *regnum*) [Animalia](/wiki/%C4%90%E1%BB%99ng_v%E1%BA%ADt) [Ngành](/wiki/Ng%C3%A0nh_(sinh_h%E1%BB%8Dc))( *phylum*) [Chordata](/wiki/%C4%90%E1%BB%99ng_v%E1%BA%ADt_c%C3%B3_d%C3%A2y_s%E1%BB%91ng) [Lớp](/wiki/L%E1%BB%9Bp_(sinh_h%E1%BB%8Dc))( *class*) [Mammalia](/wiki/L%E1%BB%9Bp_Th%C3%BA) [Bộ](/wiki/B%E1%BB%99_(sinh_h%E1%BB%8Dc))( *ordo*) [Carnivora](/wiki/B%E1%BB%99_%C4%82n_th%E1%BB%8Bt) [Họ](/wiki/H%E1%BB%8D_(sinh_h%E1%BB%8Dc))( *familia*) [Canidae](/wiki/H%E1%BB%8D_Ch%C3%B3) [Chi](/wiki/Chi_(sinh_h%E1%BB%8Dc))( *genus*) [Canis](/wiki/Canis) [Loài](/wiki/Lo%C3%A0i)( *species*) **C. mesomelas** [Danh pháp hai phần](/wiki/Danh_ph%C3%A1p_hai_ph%E1%BA%A7n) *Canis mesomelas* [Schreber](/w/index.php?title=Johann_Christian_Daniel_von_Schreber&action=edit&redlink=1), [1775](/wiki/1775) ![ Nơi phân bố](//upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black-backed_Jackal_area.png/280px-Black-backed_Jackal_area.png)
![ Nơi phân bố](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black-backed_Jackal_area.png/280px-Black-backed_Jackal_area.png)
[Phân loài](/wiki/Ph%C3%A2n_lo%C3%A0i) [text](#Subspecies) **Chó rừng lưng đen**, tên khoa học *, là loài Canis mesomelas* [chó rừng](/wiki/Ch%C3%B3_r%E1%BB%ABng)kích thước nhỏ nhất và được xem là thành viên cổ xưa nhất của [chi Chó](/wiki/Chi_Ch%C3%B3). Nó cũng là loài chó rừng hung hăng nhất, chúng được ghi nhận từng tấn công các loài thú có cân nặng lớn gấp nhiều lần [[1]](#cite_note-CLAW-1) Loài chó này phân bố ở vùng [[3]](#cite_note-estes-3) [Nam Phi](/wiki/C%E1%BB%99ng_h%C3%B2a_Nam_Phi)và vùng duyên hải phía Đông của [Kenya](/wiki/Kenya), [Somalia](/wiki/Somalia)và [Ethiopia](/wiki/Ethiopia).
## Đặc điểm[
[sửa](/w/index.php?title=Ch%C3%B3_r%E1%BB%ABng_l%C6%B0ng_%C4%91en&veaction=edit&vesection=1) | [sửa mã nguồn](/w/index.php?title=Ch%C3%B3_r%E1%BB%ABng_l%C6%B0ng_%C4%91en&action=edit§ion=1)]
Là các loài ăn thịt "cơ hội": chúng săn bắt các động vật kích thước nhỏ tới trung bình và cũng là các loài động vật ăn xác thối. Chúng có những chiếc chân dài cũng như răng nanh cong rất thích hợp với việc săn các loài thú, chim, bò sát nhỏ; còn bàn chân lớn và việc xương chân dính liền với nhau giúp chúng có thể hình cực tốt thích hợp cho việc chạy đường trường mà không bị mất sức: chúng có thể chạy với tốc độ 16 km/h (9,9 mph) trong một thời gian rất dài. Chó rừng là động vật hoàng hôn, chúng hoạt động tích cực nhất vào lúc bình minh hoặc lúc chạng vạng tối.
Đơn vị xã hội thông dụng nhất của chó rừng là một cặp chó đực-cái, chúng xác lập biên giới lãnh thổ bằng phân và nước tiểu và sẵn sàng tấn công quyết liệt những kẻ xâm nhập lạ mặt. Phần lãnh thổ này đủ lớn cho các con non mới trưởng thành sống tạm với cha mẹ trước khi chúng "ra ở riêng". Chó rừng nhiều khi cũng tụ tập thành những nhóm nhỏ, ví dụ như trong trường hợp cùng nhau chia chác một xác động vật chết; tuy nhiên chúng vẫn thường đi săn một mình hay theo cặp hơn.
## Săn mồi[
[sửa](/w/index.php?title=Ch%C3%B3_r%E1%BB%ABng_l%C6%B0ng_%C4%91en&veaction=edit&vesection=2) | [sửa mã nguồn](/w/index.php?title=Ch%C3%B3_r%E1%BB%ABng_l%C6%B0ng_%C4%91en&action=edit§ion=2)]
Trong cuộc sống sinh tồn ở thảo nguyên châu Phi, Chó rừng lưng đen đôi khi phải đụng độ và giành giật miếng mồi với các loại thú ăn thịt khác như
[kền kền](/wiki/K%E1%BB%81n_k%E1%BB%81n), có trường hợp một con chó rừng lưng đen đã nhanh chân cướp được thức ăn trước khi chim kền kền bay tới và cuộc chiến tranh giành thức ăn giữa chúng xảy ra. Chim kền kền bay lên và lao vào tấn công chó rừng nhằm lấy lại thức ăn của nó, con chó rừng lưng đen cũng nhe hàm răng sắc nhọn đe dọa và lao vào tấn công đáp trả chim kền kền. Cuối cùng, chim kền kền đành chịu thua nhường lại thức ăn cho chó rừng. [[4]](#cite_note-kp1-4)
Chó rừng lưng đen cũng không bỏ qua con mồi gà gô, trong những cuộc săn gà gô cho thấy, mặc dù có họ hàng gần với loài sói hoang, nhưng chó rừng không khéo léo và xảo quyệt như họ hàng của chúng. Mặc dù đàn gà gô tụ tập rất đồng để uống nước, nhưng chó rừng tỏ ra vụng về khi săn con mồi biết bay, lao thẳng vào đàn gà gô đang tập trung quanh hố nước, nhưng nó không vồ được con mồi nào, tuy chúng tập trung hết sức, nhưng chúng dường như thiếu sự xảo quyệt và gà gô cát tỏ ra rất nhanh nhẹn tránh được những cú đớp và vồ của chó rừng đàn gà gô bay tán loạn tránh được chúng.
[[5]](#cite_note-5)
## Hình ảnh[
[sửa](/w/index.php?title=Ch%C3%B3_r%E1%BB%ABng_l%C6%B0ng_%C4%91en&veaction=edit&vesection=3) | [sửa mã nguồn](/w/index.php?title=Ch%C3%B3_r%E1%BB%ABng_l%C6%B0ng_%C4%91en&action=edit§ion=3)]
## Chú thích[
[sửa](/w/index.php?title=Ch%C3%B3_r%E1%BB%ABng_l%C6%B0ng_%C4%91en&veaction=edit&vesection=4) | [sửa mã nguồn](/w/index.php?title=Ch%C3%B3_r%E1%BB%ABng_l%C6%B0ng_%C4%91en&action=edit§ion=4)]
- ^
**a** [Macdonald, David (1992).](#cite_ref-CLAW_1-1) **ă** *The Velvet Claw*. tr. 256. [ISBN](/wiki/ISBN) [0563208449](/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Ngu%E1%BB%93n_s%C3%A1ch/0563208449). **Hoffmann, M. (2014).** [^](#cite_ref-iucn_2-0) [“](http://www.iucnredlist.org/apps/redlist/details/3755). *Canis mesomelas*” *.* [Sách đỏ IUCN các loài bị đe dọa.](/wiki/S%C3%A1ch_%C4%91%E1%BB%8F_IUCN)Phiên bản 2014.3 [Liên minh Bảo tồn Thiên nhiên Quốc tế](/wiki/Li%C3%AAn_minh_B%E1%BA%A3o_t%E1%BB%93n_Thi%C3%AAn_nhi%C3%AAn_Qu%E1%BB%91c_t%E1%BA%BF). Truy cập ngày 7 tháng 1 năm 2015. [^](#cite_ref-estes_3-0) *The behavior guide to African mammals: including hoofed mammals, carnivores, primates*by Richard Estes, published by University of California Press, 1992, [ISBN 0-520-08085-8](/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Ngu%E1%BB%93n_s%C3%A1ch/0520080858) **Huy Phong (ngày 8 tháng 3 năm 2013).** [^](#cite_ref-kp1_4-0) [“Cuộc chiến giành thức ăn giữa kền kền và chó rừng”](http://khampha.vn/giai-tri/cuoc-chien-gianh-thuc-an-giua-ken-ken-va-cho-rung-c7a67414.html). *Tạp chí Khám phá điện tử*. Truy cập ngày 8 tháng 1 năm 2014. [^](#cite_ref-5) [Chó rừng săn gà gô trên sa mạc châu Phi](http://thvl.vn/?p=401732)
## Tham khảo[
[sửa](/w/index.php?title=Ch%C3%B3_r%E1%BB%ABng_l%C6%B0ng_%C4%91en&veaction=edit&vesection=5) | [sửa mã nguồn](/w/index.php?title=Ch%C3%B3_r%E1%BB%ABng_l%C6%B0ng_%C4%91en&action=edit§ion=5)]
Dữ liệu liên quan tới
[Canis mesomelas](//species.wikimedia.org/wiki/Canis_mesomelas)tại [Wikispecies](/wiki/Wikispecies)
Phương tiện liên quan tới
[Canis mesomelas](//commons.wikimedia.org/wiki/Category:Canis_mesomelas)tại [Wikimedia Commons](/wiki/Wikimedia_Commons)
|
|

X-Cache: cp1067 hit/2, cp1054 miss


text:
Diplocyclos palmatus
Bách khoa toàn thư mở Wikipedia
Diplocyclos palmatus là một loài thực vật có hoa trong họ Cucurbitaceae. Loài này được (L.) C.Jeffrey mô tả khoa học đầu tiên năm 1962.[1]
Hình ảnh[sửa | sửa mã nguồn]
Chú thích[sửa | sửa mã nguồn]
- ^ The Plant List (2010). “Diplocyclos palmatus”. Truy cập ngày 13 tháng 9 năm 2013.
Liên kết ngoài[sửa | sửa mã nguồn]
- Phương tiện liên quan tới Diplocyclos palmatus tại Wikimedia Commons
- Dữ liệu liên quan tới Diplocyclos palmatus tại Wikispecies
- Vườn thực vật hoàng gia Kew; Đại học Harvard; Australian Plant Name Index (biên tập). “Diplocyclos palmatus”. International Plant Names Index. Truy cập ngày 13 tháng 9 năm 2013.

markdown:
*Diplocyclos palmatus*
Bách khoa toàn thư mở Wikipedia
|
|Diplocyclos palmatus
|
|![]()
[Phân loại khoa học](/wiki/Ph%C3%A2n_lo%E1%BA%A1i_sinh_h%E1%BB%8Dc) [Giới](/wiki/Gi%E1%BB%9Bi_(sinh_h%E1%BB%8Dc))( *regnum*) [Plantae](/wiki/Th%E1%BB%B1c_v%E1%BA%ADt) [Angiospermae](/wiki/Th%E1%BB%B1c_v%E1%BA%ADt_c%C3%B3_hoa) [Eudicots](/wiki/Th%E1%BB%B1c_v%E1%BA%ADt_hai_l%C3%A1_m%E1%BA%A7m_th%E1%BA%ADt_s%E1%BB%B1) [Bộ](/wiki/B%E1%BB%99_(sinh_h%E1%BB%8Dc))( *ordo*) [Cucurbitales](/wiki/B%E1%BB%99_B%E1%BA%A7u_b%C3%AD) [Họ](/wiki/H%E1%BB%8D_(sinh_h%E1%BB%8Dc))( *familia*) [Cucurbitaceae](/wiki/Cucurbitaceae) [Tông](/wiki/T%C3%B4ng_(sinh_h%E1%BB%8Dc))( *tribus*) [Benincaseae](/w/index.php?title=Benincaseae&action=edit&redlink=1) [Chi](/wiki/Chi_(sinh_h%E1%BB%8Dc))( *genus*) [Diplocyclos](/wiki/Diplocyclos) [Loài](/wiki/Lo%C3%A0i)( *species*) **D. palmatus** [Danh pháp hai phần](/wiki/Danh_ph%C3%A1p_hai_ph%E1%BA%A7n) *Diplocyclos palmatus*
(
[L.](/wiki/Carl_von_Linn%C3%A9)) [C.Jeffrey](/w/index.php?title=Charles_Jeffrey&action=edit&redlink=1), [1962](/wiki/1962) * là một loài Diplocyclos palmatus* [thực vật có hoa](/wiki/Th%E1%BB%B1c_v%E1%BA%ADt_c%C3%B3_hoa)trong họ [Cucurbitaceae](/wiki/Cucurbitaceae). Loài này được (L.) C.Jeffrey mô tả khoa học đầu tiên năm 1962. [[1]](#cite_note-1)
## Hình ảnh[
[sửa](/w/index.php?title=Diplocyclos_palmatus&veaction=edit&vesection=1) | [sửa mã nguồn](/w/index.php?title=Diplocyclos_palmatus&action=edit§ion=1)]
## Chú thích[
[sửa](/w/index.php?title=Diplocyclos_palmatus&veaction=edit&vesection=2) | [sửa mã nguồn](/w/index.php?title=Diplocyclos_palmatus&action=edit§ion=2)] **The Plant List (2010).** [^](#cite_ref-1) [“](http://www.theplantlist.org/tpl1.1/record/kew-2771003). Truy cập ngày 13 tháng 9 năm 2013. *Diplocyclos palmatus*”
## Liên kết ngoài[
[sửa](/w/index.php?title=Diplocyclos_palmatus&veaction=edit&vesection=3) | [sửa mã nguồn](/w/index.php?title=Diplocyclos_palmatus&action=edit§ion=3)]
Phương tiện liên quan tới
[Diplocyclos palmatus](//commons.wikimedia.org/wiki/Category:Diplocyclos_palmatus)tại [Wikimedia Commons](/wiki/Wikimedia_Commons)
Dữ liệu liên quan tới
[Diplocyclos palmatus](//species.wikimedia.org/wiki/Diplocyclos_palmatus)tại [Wikispecies](/wiki/Wikispecies) [Vườn thực vật hoàng gia Kew](/wiki/V%C6%B0%E1%BB%9Dn_th%E1%BB%B1c_v%E1%BA%ADt_ho%C3%A0ng_gia_Kew); [Đại học Harvard](/wiki/%C4%90%E1%BA%A1i_h%E1%BB%8Dc_Harvard); [Australian Plant Name Index](/wiki/Australian_Plant_Name_Index)(biên tập). [“Diplocyclos palmatus”](http://www.ipni.org/ipni/idPlantNameSearch.do?id=292565-1). *. Truy cập ngày 13 tháng 9 năm 2013.* [International Plant Names Index](/wiki/International_Plant_Names_Index)

X-Cache: cp1067 miss, cp1054 miss


text:
Thể loại:Họ Rắn mống
Bách khoa toàn thư mở Wikipedia
Bài chính thể loại: Họ Rắn mống
Thể loại con
Thể loại này gồm thể loại con sau.
X
- ► Xenopeltis (2 tr.)
Các trang trong thể loại “Họ Rắn mống”
Thể loại này gồm trang sau.
Thể loại này gồm thể loại con sau.
Thể loại này gồm trang sau.

markdown:
# Thể loại:Họ Rắn mống
Bách khoa toàn thư mở Wikipedia
*Bài chính thể loại:* [Họ Rắn mống](/wiki/H%E1%BB%8D_R%E1%BA%AFn_m%E1%BB%91ng)
|
|![]()
|Wikimedia Commons có thêm thư viện hình ảnh và phương tiện truyền tải về
|
## Thể loại con
Thể loại này gồm thể loại con sau.
### X
- ►
[Xenopeltis](/wiki/Th%E1%BB%83_lo%E1%BA%A1i:Xenopeltis) (2 tr.)
## Các trang trong thể loại “Họ Rắn mống”
Thể loại này gồm trang sau.

X-Cache: cp1052 miss, cp1054 miss


text:
Thể loại:Lý thuyết thông tin
Bách khoa toàn thư mở Wikipedia
Bài chính thể loại: Lý thuyết thông tin
Thể loại con
Thể loại này gồm 7 thể loại con sau, trên tổng số 7 thể loại con.
Đ
- ► Đơn vị thông tin (1 t.l., 18 tr.)
E
- ► Entropy thông tin (2 tr.)
L
- ► Lý thuyết mã hóa (1 t.l., 15 tr.)
- ► Lý thuyết phát hiện (4 tr.)
N
- ► Nén dữ liệu (3 t.l., 6 tr.)
- ► Nền tảng mạng (1 t.l., 3 tr.)
X
- ► Xử lý tín hiệu (6 t.l., 24 tr.)
Các trang trong thể loại “Lý thuyết thông tin”
10 trang sau nằm trong thể loại này, trên tổng số 10 trang.

markdown:
# Thể loại:Lý thuyết thông tin
Bách khoa toàn thư mở Wikipedia
*Bài chính thể loại:* [Lý thuyết thông tin](/wiki/L%C3%BD_thuy%E1%BA%BFt_th%C3%B4ng_tin)
## Thể loại con
Thể loại này gồm 7 thể loại con sau, trên tổng số 7 thể loại con.
### Đ
- ►
[Đơn vị thông tin](/wiki/Th%E1%BB%83_lo%E1%BA%A1i:%C4%90%C6%A1n_v%E1%BB%8B_th%C3%B4ng_tin) (1 t.l., 18 tr.)
### E
- ►
[Entropy thông tin](/wiki/Th%E1%BB%83_lo%E1%BA%A1i:Entropy_th%C3%B4ng_tin) (2 tr.)
### L
- ►
[Lý thuyết mã hóa](/wiki/Th%E1%BB%83_lo%E1%BA%A1i:L%C3%BD_thuy%E1%BA%BFt_m%C3%A3_h%C3%B3a) (1 t.l., 15 tr.)
- ►
[Lý thuyết phát hiện](/wiki/Th%E1%BB%83_lo%E1%BA%A1i:L%C3%BD_thuy%E1%BA%BFt_ph%C3%A1t_hi%E1%BB%87n) (4 tr.)
### N
- ►
[Nén dữ liệu](/wiki/Th%E1%BB%83_lo%E1%BA%A1i:N%C3%A9n_d%E1%BB%AF_li%E1%BB%87u) (3 t.l., 6 tr.)
- ►
[Nền tảng mạng](/wiki/Th%E1%BB%83_lo%E1%BA%A1i:N%E1%BB%81n_t%E1%BA%A3ng_m%E1%BA%A1ng) (1 t.l., 3 tr.)
### X
- ►
[Xử lý tín hiệu](/wiki/Th%E1%BB%83_lo%E1%BA%A1i:X%E1%BB%AD_l%C3%BD_t%C3%ADn_hi%E1%BB%87u) (6 t.l., 24 tr.)
## Các trang trong thể loại “Lý thuyết thông tin”
10 trang sau nằm trong thể loại này, trên tổng số 10 trang.

X-Cache: cp1068 miss, cp1054 miss


text:
Trợ giúp
Thể loại:Sách 1957
Bách khoa toàn thư mở Wikipedia
Bước tới:
menu
,
tìm kiếm
Thể loại con
Thể loại này gồm thể loại con sau.
T
►
Tiểu thuyết năm 1957
(6 tr.)
Lấy từ “
https://vi.wikipedia.org/w/index.php?title=Thể_loại:Sách_1957&oldid=17361615
”
Thể loại
:
Sách xếp theo năm
Sách thập niên 1950
Tác phẩm 1957
Trình đơn chuyển hướng
Công cụ cá nhân
Chưa đăng nhập
Thảo luận cho địa chỉ IP này
Đóng góp
Mở tài khoản
Đăng nhập
Không gian tên
Thể loại
Thảo luận
Biến thể
Các hiển thị
Đọc
Sửa đổi
Sửa mã nguồn
Xem lịch sử
Khác
Tìm kiếm
Xem nhanh
Trang Chính
Nội dung chọn lọc
Tin tức
Bài viết ngẫu nhiên
Thay đổi gần đây
Phản hồi lỗi
Quyên góp
Tương tác
Hướng dẫn
Giới thiệu Wikipedia
Cộng đồng
Thảo luận chung
Giúp sử dụng
Liên hệ
Công cụ
Các liên kết đến đây
Thay đổi liên quan
Các trang đặc biệt
Liên kết thường trực
Thông tin trang
Khoản mục Wikidata
In/xuất ra
Tạo một quyển sách
Tải về dưới dạng PDF
Bản để in ra
Tại dự án khác
Wikimedia Commons
Ngôn ngữ khác
العربية
Asturianu
Bosanski
Български
Čeština
Cymraeg
Dansk
English
Español
Esperanto
Euskara
فارسی
Français
한국어
Հայերեն
Íslenska
עברית
ქართული
မြန်မာဘာသာ
Nederlands
Norsk bokmål
Norsk nynorsk
Português
Română
Русский
Simple English
Slovenčina
Slovenščina
Српски / srpski
Srpskohrvatski / српскохрватски
Suomi
Svenska
తెలుగు
Türkçe
Українська
اردو
中文
Sửa liên kết
Trang này được sửa đổi lần cuối lúc 09:01 ngày 26 tháng 6 năm 2014.
Văn bản được phát hành theo
Giấy phép Creative Commons Ghi công–Chia sẻ tương tự
; có thể áp dụng điều khoản bổ sung. Với việc sử dụng trang web này, bạn chấp nhận
Điều khoản Sử dụng
và
Quy định quyền riêng tư
.
Wikipedia® là thương hiệu đã đăng ký của
Wikimedia Foundation, Inc.
, một tổ chức phi lợi nhuận.
Quy định quyền riêng tư
Giới thiệu Wikipedia
Lời phủ nhận
Nhà phát triển
Tuyên bố về cookie
Phiên bản di động

X-Cache: cp1066 miss, cp1054 miss


text:
Uherský Ostroh
Bách khoa toàn thư mở Wikipedia
Uherský Ostroh là một thị trấn thuộc huyện Uherské Hradiště, vùng Zlínský, Cộng hòa Séc.[1]
Tham khảo[sửa | sửa mã nguồn]
- ^ “Struktura území ČR od 1.1.2008 do 1.1.2012 - xls”. Truy cập ngày 8 tháng 8 năm 2012.

markdown:
# Uherský Ostroh
Bách khoa toàn thư mở Wikipedia
|Uherský Ostroh|
|—
|![ Uherský Ostroh-náměstí.jpg](//upload.wikimedia.org/wikipedia/commons/thumb/5/50/Uhersk%C3%BD_Ostroh-n%C3%A1m%C4%9Bst%C3%AD.jpg/250px-Uhersk%C3%BD_Ostroh-n%C3%A1m%C4%9Bst%C3%AD.jpg)
![ Uherský Ostroh-náměstí.jpg](http://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Uhersk%C3%BD_Ostroh-n%C3%A1m%C4%9Bst%C3%AD.jpg/250px-Uhersk%C3%BD_Ostroh-n%C3%A1m%C4%9Bst%C3%AD.jpg)
|
|![]()
**Cờ hiệu** ![ ](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Flag_of_the_Czech_Republic.svg/23px-Flag_of_the_Czech_Republic.svg.png)
[Cộng hòa Séc](/wiki/C%E1%BB%99ng_h%C3%B2a_S%C3%A9c) [Vùng](/w/index.php?title=V%C3%B9ng_c%E1%BB%A7a_C%E1%BB%99ng_h%C3%B2a_S%C3%A9c&action=edit&redlink=1) [Zlínský](/wiki/Zl%C3%ADn_(v%C3%B9ng)) [Huyện](/w/index.php?title=Huy%E1%BB%87n_c%E1%BB%A7a_C%E1%BB%99ng_h%C3%B2a_S%C3%A9c&action=edit&redlink=1) [Uherské Hradiště](/wiki/Uhersk%C3%A9_Hradi%C5%A1t%C4%9B_(huy%E1%BB%87n)) [Múi giờ](/wiki/M%C3%BAi_gi%E1%BB%9D) [CET](/wiki/Gi%E1%BB%9D_chu%E1%BA%A9n_Trung_%C3%82u)( [UTC+1](/wiki/UTC%2B1)) [DST](/wiki/Quy_%C6%B0%E1%BB%9Bc_gi%E1%BB%9D_m%C3%B9a_h%C3%A8)) [CEST](/wiki/Gi%E1%BB%9D_M%C3%B9a_h%C3%A8_Trung_%C3%82u)( [UTC+2](/wiki/UTC%2B2)) [NUTS 5](/wiki/C%C3%A1c_v%C3%B9ng_c%E1%BB%A7a_Li%C3%AAn_minh_ch%C3%A2u_%C3%82u) **Uherský Ostroh** là một [thị trấn](/w/index.php?title=Th%E1%BB%8B_tr%E1%BA%A5n_c%E1%BB%A7a_C%E1%BB%99ng_h%C3%B2a_S%C3%A9c&action=edit&redlink=1) thuộc huyện [Uherské Hradiště](/wiki/Uhersk%C3%A9_Hradi%C5%A1t%C4%9B_(huy%E1%BB%87n)), vùng [Zlínský](/wiki/Zl%C3%ADn_(v%C3%B9ng)), [Cộng hòa Séc](/wiki/C%E1%BB%99ng_h%C3%B2a_S%C3%A9c). [[1]](#cite_note-1)
## Tham khảo[
[sửa](/w/index.php?title=Uhersk%C3%BD_Ostroh&veaction=edit&vesection=1) | [sửa mã nguồn](/w/index.php?title=Uhersk%C3%BD_Ostroh&action=edit§ion=1)] [^](#cite_ref-1) [“Struktura území ČR od 1.1.2008 do 1.1.2012 - xls”](http://www.czso.cz/csu/klasifik.nsf/i/ii_struktura_uzemi_ceske_republiky/). Truy cập ngày 8 tháng 8 năm 2012.

X-Cache: cp1055 miss, cp1054 miss


text:
Xã Cedar, Quận Martin, Minnesota
Bách khoa toàn thư mở Wikipedia
Xã Cedar (tiếng Anh: Cedar Township) là một xã thuộc quận Martin, tiểu bang Minnesota, Hoa Kỳ. Năm 2010, dân số của xã này là 223 người.[1]
Tham khảo[sửa | sửa mã nguồn]
- ^ “2010 Census Gazetteer Files”. Cục Thống kê Dân số Hoa Kỳ. Truy cập ngày 11 tháng 10 năm 2012.

markdown:
# Xã Cedar, Quận Martin, Minnesota
Bách khoa toàn thư mở Wikipedia
|Xã Cedar
|
Cedar Township
|—
|![ Vị trí quận Martin trong tiểu bang Minnesota ở Hoa Kỷ](//upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Map_of_Minnesota_highlighting_Martin_County.svg/250px-Map_of_Minnesota_highlighting_Martin_County.svg.png)
![ Vị trí quận Martin trong tiểu bang Minnesota ở Hoa Kỷ](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Map_of_Minnesota_highlighting_Martin_County.svg/250px-Map_of_Minnesota_highlighting_Martin_County.svg.png)
Vị trí quận Martin trong tiểu bang Minnesota ở Hoa Kỷ
[Quốc gia](/wiki/Qu%E1%BB%91c_gia) [Hoa Kỳ](/wiki/Hoa_K%E1%BB%B3) [Tiểu bang](/wiki/Ti%E1%BB%83u_bang_Hoa_K%E1%BB%B3) [Minnesota](/wiki/Minnesota) [Quận](/w/index.php?title=Danh_d%C3%A1ch_c%C3%A1c_qu%E1%BA%ADn_%E1%BB%9F_Minnesota&action=edit&redlink=1) [Quận Martin](/wiki/Qu%E1%BA%ADn_Martin,_Minnesota) [Múi giờ](/wiki/M%C3%BAi_gi%E1%BB%9D) [CST](/wiki/M%C3%BAi_gi%E1%BB%9D_mi%E1%BB%81n_Trung_(B%E1%BA%AFc_M%E1%BB%B9))( [UTC-6](/wiki/UTC-6)) [DST](/wiki/Quy_%C6%B0%E1%BB%9Bc_gi%E1%BB%9D_m%C3%B9a_h%C3%A8)) **CDT**( [UTC-5](/wiki/UTC-5)) **Xã Cedar** ( [tiếng Anh](/wiki/Ti%E1%BA%BFng_Anh): *Cedar Township*) là một [xã](/wiki/X%C3%A3_c%E1%BB%A7a_Hoa_K%E1%BB%B3) thuộc [quận Martin](/wiki/Qu%E1%BA%ADn_Martin,_Minnesota), tiểu bang [Minnesota](/wiki/Minnesota), [Hoa Kỳ](/wiki/Hoa_K%E1%BB%B3). Năm 2010, dân số của xã này là 223 người. [[1]](#cite_note-1)
## Tham khảo[
[sửa](/w/index.php?title=X%C3%A3_Cedar,_Qu%E1%BA%ADn_Martin,_Minnesota&veaction=edit&vesection=1) | [sửa mã nguồn](/w/index.php?title=X%C3%A3_Cedar,_Qu%E1%BA%ADn_Martin,_Minnesota&action=edit§ion=1)] [^](#cite_ref-1) [“2010 Census Gazetteer Files”](http://www.census.gov/geo/www/gazetteer/gazetteer2010.html). [Cục Thống kê Dân số Hoa Kỳ](/wiki/C%E1%BB%A5c_Th%E1%BB%91ng_k%C3%AA_D%C3%A2n_s%E1%BB%91_Hoa_K%E1%BB%B3). Truy cập ngày 11 tháng 10 năm 2012.