Xu Hướng 10/2023 # Tạo Giao Diện Linh Hoạt Và Tái Sử Dụng Được Trong Swing # Top 10 Xem Nhiều | Efjg.edu.vn

Xu Hướng 10/2023 # Tạo Giao Diện Linh Hoạt Và Tái Sử Dụng Được Trong Swing # Top 10 Xem Nhiều

Bạn đang xem bài viết Tạo Giao Diện Linh Hoạt Và Tái Sử Dụng Được Trong Swing được cập nhật mới nhất tháng 10 năm 2023 trên website Efjg.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.

Khi phát triển phần mềm trên Swing nhiều lập trình viên gặp khó khăn trong việc thay đổi diện và tái sử dụng giao diện bởi họ đã thiết kế ngay trên JFrame. Có một cách khác là chúng ta sẽ thiết kế từng giao diện trên các JPanel. Sau đó sẽ dùng phương thức setContentPane() của JFrame để thay đổi nội dung của JFrame chính.

1. Tạo một java application 2. Tạo một JFrame (Main) và 2 JPanel (PnLogin , PnHome) 3. PnLogin

Thiết kế giao diện cho PnLogin

Ở giao diện này khi người dùng đăng nhập đúng thì sẽ chuyển sang giao diện Home, bởi thế panel này cần có thuộc tính JPanel cần chuyển tới.

private JPanel pnLoginSuccess; /** * Xác định panel sẽ hiển thị khi đăng nhập thành công * @param pnLoginSuccess */ public void setPnLoginSuccess(JPanel pnLoginSuccess) { this.pnLoginSuccess = pnLoginSuccess; }

if (parent != null) { parent.setContentPane(pnLoginSuccess); parent.pack(); } else { JOptionPane.showMessageDialog(parent, “Panel Login only used for JFrame”); System.exit(1); }

Phương thức Utitilities.findJFrameOf(this) là để tìm JFrame chứa một component

package tap.chi.lap.trinh; import java.awt.Component; import java.awt.Container; import javax.swing.JFrame; /** * * @author cibervn */ public class Utitilities { /** * * @param component * @return top level container JFrame *that contains component */ public static JFrame findJFrameOf(Component component) { Container c = component.getParent(); while (c.getParent() != null) { c = c.getParent(); } if (c instanceof JFrame) { return (JFrame) c; } return null; } } 4. Main

JFrame này chứa các panel có thể có, và cần phải xác định navigation giữa các giao điện

private PnLogin pnLogin; private PnHome pnHome; /** * Creates new form Main */ public Main() { initComponents(); initPanels(); setContentPane(pnLogin); pack(); } private void initPanels() { pnLogin = new PnLogin(); pnHome = new PnHome(); pnLogin.setPnLoginSuccess(pnHome); }

Source code

Bài viết gốc được đăng tải tại Tạp chí Lập Trình

Các Sử Dụng Phân Tích Đa Khung Thời Gian Trong Giao Dịch

Tìm hiểu cách sử dụng phân tích đa khung thời gian trong giao dịch để tăng hiệu quả và đưa ra quyết định giao dịch thông minh.

Khám phá cách phân tích đa khung thời gian có thể nâng cao hiệu quả giao dịch của bạn

Giao dịch trên thị trường tài chính đòi hỏi sự hiểu biết sâu sắc và kỹ năng để đưa ra quyết định mua/bán chính xác. Phân tích đa khung thời gian là một phương pháp phổ biến giúp nhà giao dịch có cái nhìn tổng quan về xu hướng và diễn biến giá của tài sản trong thời gian dài và ngắn. Bài viết này sẽ giới thiệu về phân tích đa khung thời gian và các sử dụng của nó trong giao dịch.

Phân tích đa khung thời gian là quá trình xem xét biểu đồ và dữ liệu giá trên nhiều khung thời gian khác nhau để có cái nhìn toàn diện về xu hướng và tình hình thị trường. Thay vì chỉ tập trung vào một khung thời gian duy nhất, phân tích đa khung thời gian cho phép nhà giao dịch nhìn vào các khung thời gian lớn hơn và nhỏ hơn để tìm kiếm các cơ hội giao dịch tiềm năng.

Phân tích đa khung thời gian mang lại nhiều lợi ích cho nhà giao dịch. Đầu tiên, nó cung cấp một cái nhìn tổng thể về xu hướng dài hạn của tài sản, giúp xác định xu hướng chính và tránh các tín hiệu giả mạo. Thứ hai, phân tích đa khung thời gian cho phép nhà giao dịch xác định các điểm mua/bán chính xác hơn bằng cách sử dụng khung thời gian nhỏ hơn để tìm kiếm các tín hiệu giao dịch hợp lý. Cuối cùng, nó giúp tăng khả năng dự đoán và đưa ra quyết định giao dịch thông qua việc phân tích cả xu hướng ngắn hạn và dài hạn của thị trường.

Để bắt đầu, bạn cần xác định khung thời gian chính mà bạn muốn tập trung vào. Điều này phụ thuộc vào phong cách giao dịch và thời gian mà bạn có sẵn. Ví dụ, nếu bạn là một nhà giao dịch ngắn hạn, bạn có thể chọn khung thời gian như 15 phút hoặc 1 giờ. Ngược lại, nếu bạn là một nhà giao dịch dài hạn, bạn có thể chọn khung thời gian từ ngày đến tuần.

Sau khi xác định khung thời gian chính, sử dụng khung thời gian nhỏ hơn để phân tích và tìm kiếm các điểm mua/bán tiềm năng. Ví dụ, nếu bạn chọn khung thời gian chính là 1 giờ, bạn có thể sử dụng khung thời gian 15 phút để xác định các tín hiệu giao dịch như cắt quãng giá, điểm mua/bán theo hình thành của nến Nhật Bản, hoặc sử dụng các chỉ báo kỹ thuật như đường trung bình di động (Moving Average) và RSI (Relative Strength Index).

Ngoài việc xác định điểm mua/bán, phân tích đa khung thời gian cũng giúp bạn đánh giá xu hướng dài hạn của thị trường. Bằng cách sử dụng khung thời gian lớn hơn, như hàng ngày hoặc hàng tuần, bạn có thể nhận biết được các xu hướng chính và xác định liệu giá có đang đi theo xu hướng tăng hay giảm. Điều này giúp bạn đưa ra quyết định giao dịch thông minh và tránh các tín hiệu giả mạo.

Đồ thị nến Nhật Bản là một công cụ phổ biến trong phân tích kỹ thuật. Nó cung cấp thông tin về giá mở, giá đóng, giá cao, và giá thấp trong một khoảng thời gian nhất định. Sử dụng đồ thị nến Nhật Bản, bạn có thể nhận biết các mô hình nến như nến doji, nến hammer, nến engulfing, và nhiều mô hình khác để xác định điểm mua/bán tiềm năng.

Đường trung bình di động là một chỉ báo kỹ thuật phổ biến giúp nhà giao dịch xác định xu hướng và tín hiệu giao dịch. Bằng cách tính trung bình các giá đóng trong một khoảng thời gian nhất định, đường trung bình di động giúp làm mờ các biến động ngắn hạn và cung cấp một cái nhìn tổng quan về xu hướng dài hạn.

RSI là một chỉ báo kỹ thuật khác giúp xác định mức độ quá mua hoặc quá bán của một tài sản. Chỉ báo này đo lường sức mạnh và sự biến động của giá, giúp nhà giao dịch xác định điểm mua/bán hợp lý. Khi RSI vượt qua mức 70, tài sản có thể đang quá mua và có thể xuất hiện cơ hội bán. Ngược lại, khi RSI xuống dưới mức 30, tài sản có thể đang quá bán và có thể có cơ hội mua.

Các vùng hỗ trợ và kháng cự là các mức giá quan trọng trong biểu đồ giá. Vùng hỗ trợ đại diện cho mức giá mà tài sản thường không giảm thêm, trong khi vùng kháng cự đại diện cho mức giá mà tài sản thường không tăng thêm. Bằng cách xác định các vùng này, bạn có thể đưa ra quyết định mua/bán thông minh dựa trên sự phản ứng của giá khi tiếp cận các vùng này.

Giả sử bạn quan tâm đến việc giao dịch cặp tiền EUR/USD. Đầu tiên, bạn xem xét biểu đồ hàng ngày để xác định xu hướng chính. Nếu bạn nhận thấy xu hướng là tăng, bạn có thể chuyển sang khung thời gian 4 giờ để tìm điểm mua hợp lý. Sử dụng các công cụ phân tích như đường trung bình di động hoặc đồ thị nến Nhật Bản, bạn có thể xác định điểm mua vào khi giá hồi phục sau một sự điều chỉnh và tiếp tục theo xu hướng tăng dài hạn.

Trong trường hợp bạn đã mua một cặp tiền và muốn xác định thời điểm tốt để thoát khỏi thị trường, phân tích đa khung thời gian cũng rất hữu ích. Ví dụ, nếu bạn đã mua cặp tiền GBP/JPY và đang giao dịch trên khung thời gian 1 giờ, bạn có thể xem xét khung thời gian 15 phút để tìm điểm bán chính xác. Sử dụng các công cụ phân tích như đường trung bình di động và RSI, bạn có thể xác định khi giá tiến gần vùng kháng cự hoặc khi RSI vượt quá mức 70, cho thấy cơ hội thoát khỏi thị trường.

Phân tích đa khung thời gian quan trọng trong giao dịch vì nó cho phép nhà giao dịch nhìn vào toàn bộ diễn biến giá trên nhiều khung thời gian khác nhau. Điều này giúp xác định xu hướng dài hạn, điểm mua/bán chính xác hơn và tăng khả năng dự đoán và đưa ra quyết định giao dịch thông minh.

Việc chọn khung thời gian phù hợp phụ thuộc vào phong cách giao dịch và thời gian mà bạn có sẵn. Nếu bạn là một nhà giao dịch ngắn hạn, các khung thời gian nhỏ hơn như 15 phút hoặc 1 giờ có thể phù hợp. Ngược lại, nếu bạn là một nhà giao dịch dài hạn, các khung thời gian từ ngày đến tuần có thể phù hợp hơn. Tuy nhiên, việc chọn khung thời gian phù hợp cũng phụ thuộc vào kinh nghiệm và sở thích cá nhân của bạn.

Phân tích đa khung thời gian là một công cụ hữu ích giúp nhà giao dịch có cái nhìn tổng quan về xu hướng và diễn biến giá của tài sản trong thời gian dài và ngắn. Bằng cách sử dụng phương pháp này, bạn có thể xác định xu hướng dài hạn, tìm điểm mua/bán chính xác hơn và đưa ra quyết định giao dịch thông minh. Đừng bỏ lỡ cơ hội tăng cường hiệu quả giao dịch của bạn bằng cách áp dụng phân tích đa khung thời gian.

Nào Tốt Nhất – Nơi đánh giá và review các sản phẩm, dịch vụ tốt nhất.

Có hàng triệu khách hàng Tiềm Năng đang xem bài viết này

Bạn muốn có muốn đưa sản phẩm/dịch vụ thương hiệu của mình lên website của chúng tôi

Liên Hệ Ngay!

Khối Lượng Giao Dịch (Volume Là Gì) – Cách Sử Dụng Và Ý Nghĩa

Khối lượng Giao dịch (Volume) là một trong những khái niệm quan trọng trong giao dịch chứng khoán. Với sự phát triển của thị trường tài chính, hiểu rõ và sử dụng Khối lượng Giao dịch đúng cách có thể giúp nhà đầu tư và người giao dịch nắm bắt được xu hướng và biểu đồ giá cả, từ đó đưa ra quyết định giao dịch chính xác. Trong bài viết này, chúng ta sẽ tìm hiểu về Khối lượng Giao dịch, cách sử dụng và ý nghĩa của nó trong giao dịch chứng khoán.

Khối lượng Giao dịch, hay còn được gọi là Volume, đơn giản là số lượng cổ phiếu hoặc tài sản được giao dịch trong một khoảng thời gian nhất định. Đây là một chỉ số quan trọng cho biết mức độ sôi động của thị trường và sự quan tâm của nhà đầu tư đối với cổ phiếu hoặc tài sản đó.

Khối lượng Giao dịch đóng vai trò quan trọng trong việc phân tích và đưa ra quyết định giao dịch. Khi khối lượng giao dịch tăng cao, điều này cho thấy có sự quan tâm lớn từ phía các nhà đầu tư, và giá cả có thể có sự biến động mạnh. Ngược lại, khi khối lượng giao dịch thấp, thị trường có thể trở nên ít sôi động và dễ bị ảnh hưởng bởi các nhà đầu tư có quy mô nhỏ.

Có nhiều yếu tố có thể ảnh hưởng đến khối lượng giao dịch của một cổ phiếu hoặc tài sản:

Tin tức và sự kiện kinh tế: Các sự kiện kinh tế quan trọng như báo cáo tài chính, thông tin về công ty, hoặc tin tức toàn cầu có thể tác động đến sự quan tâm của nhà đầu tư và làm tăng khối lượng giao dịch.

Sự biến động giá cả: Khi giá cả tăng hoặc giảm mạnh, nhà đầu tư thường có xu hướng giao dịch nhiều hơn, dẫn đến tăng khối lượng giao dịch.

Thời gian giao dịch: Khối lượng giao dịch có thể thay đổi theo từng thời điểm trong ngày, tuần, hoặc tháng.

Phân tích khối lượng giao dịch theo thời gian có thể giúp nhà đầu tư nhìn nhận được xu hướng của thị trường. Ví dụ, nếu khối lượng giao dịch tăng đột ngột trong một thời gian ngắn, điều này có thể cho thấy có sự quan tâm đột xuất từ các nhà đầu tư hoặc có tin tức quan trọng được công bố. Ngược lại, nếu khối lượng giao dịch liên tục giảm, điều này có thể cho thấy sự mất quan tâm từ phía thị trường.

Khối lượng giao dịch có thể giúp nhà đầu tư xác định xu hướng của thị trường. Nếu khối lượng giao dịch tăng trong một thời gian dài, điều này cho thấy có sự quan tâm và sự gia tăng của nguồn cung cầu. Điều này có thể là một tín hiệu cho thấy xu hướng giá cả sẽ tiếp tục tăng. Ngược lại, nếu khối lượng giao dịch giảm trong một thời gian dài, điều này có thể cho thấy sự mất quan tâm và sự yếu đuối của nguồn cung cầu. Điều này có thể là một tín hiệu cho thấy xu hướng giá cả sẽ tiếp tục giảm.

Khi sử dụng khối lượng giao dịch, việc đối chiếu với giá cả có thể giúp nhà đầu tư hiểu rõ hơn về sự tương quan giữa sự quan tâm của thị trường và biến động giá cả. Nếu khối lượng giao dịch tăng đột ngột trong khi giá cả không thay đổi hoặc giảm, điều này có thể cho thấy có sự quan tâm đột xuất từ các nhà đầu tư và có thể là một tín hiệu cho thấy giá cả sẽ tăng trong tương laNgược lại, nếu khối lượng giao dịch giảm trong khi giá cả tăng, điều này có thể cho thấy sự mất quan tâm từ phía thị trường và có thể là một tín hiệu cho thấy giá cả sẽ giảm trong tương la

Khối lượng giao dịch là một chỉ số quan trọng để đo lường độ thanh khoản của một cổ phiếu. Độ thanh khoản cao cho thấy có sự dễ dàng trong việc mua bán cổ phiếu và giá cả có thể không bị biến động đáng kể. Điều này hấp dẫn nhà đầu tư và giúp tăng tính thanh khoản của cổ phiếu. Ngược lại, độ thanh khoản thấp có thể khiến việc mua bán cổ phiếu trở nên khó khăn và giá cả có thể bị biến động lớn.

Khối lượng giao dịch có thể giúp nhà đầu tư nhận biết sự tăng trưởng hoặc suy giảm giá trị của một cổ phiếu. Nếu khối lượng giao dịch tăng đột ngột và giá cả tăng theo, điều này cho thấy có sự quan tâm và sự gia tăng giá trị của cổ phiếu. Ngược lại, nếu khối lượng giao dịch giảm và giá cả giảm theo, điều này cho thấy sự mất quan tâm và sự suy giảm giá trị của cổ phiếu.

Khối lượng giao dịch cũng cho biết mức độ quan tâm của thị trường đối với một cổ phiếu. Nếu khối lượng giao dịch tăng đột ngột, điều này cho thấy có sự quan tâm đột xuất từ các nhà đầu tư và có thể là một tín hiệu cho thấy sự tăng trưởng tiềm năng của cổ phiếu. Ngược lại, nếu khối lượng giao dịch giảm, điều này có thể cho thấy sự mất quan tâm từ phía thị trường và có thể là một tín hiệu cho thấy sự suy giảm tiềm năng của cổ phiếu.

Khối lượng giao dịch được tính bằng cách lấy tổng số lượng cổ phiếu hoặc tài sản được giao dịch trong một khoảng thời gian nhất định. Thông thường, khối lượng giao dịch được tính theo số cổ phiếu được giao dịch trong một phiên giao dịch.

Khối lượng giao dịch có thể biến đổi do nhiều yếu tố khác nhau. Các yếu tố này bao gồm tin tức và sự kiện kinh tế, biến động giá cả, và thời gian giao dịch. Nếu có sự quan tâm lớn từ phía các nhà đầu tư hoặc có tin tức quan trọng được công bố, khối lượng giao dịch có thể tăng đột ngột. Ngược lại, khi sự quan tâm từ phía thị trường giảm, khối lượng giao dịch có thể giảm.

Để tìm hiểu khối lượng giao dịch của một cổ phiếu, bạn có thể sử dụng các công cụ phân tích thị trường hoặc các trang web chuyên về giao dịch chứng khoán. Các biểu đồ và đồ thị thường cung cấp thông tin về khối lượng giao dịch theo thời gian. Bạn cũng có thể theo dõi thông tin này trên các trang web tài chính hoặc sàn giao dịch.

Khối lượng giao dịch là một chỉ số quan trọng, nhưng không phải là yếu tố duy nhất để xem xét khi giao dịch. Nhà đầu tư cần xem xét cả các yếu tố khác như xu hướng giá cả, tin tức và sự kiện kinh tế, và các chỉ báo kỹ thuật khác để đưa ra quyết định giao dịch chính xác.

Các cổ phiếu có khối lượng giao dịch thấp có thể dễ bị ảnh hưởng bởi các nhà đầu tư có quy mô nhỏ và có thể có biến động giá cả lớn. Khi giao dịch các cổ phiếu như vậy, cần cẩn trọng và xem xét kỹ lưỡng để tránh rủi ro không cần thiết.

Mặc dù khối lượng giao dịch là một chỉ số quan trọng, nhưng không nên dựa quá nhiều vào nó trong việc đưa ra quyết định giao dịch. Nhà đầu tư cần xem xét toàn bộ các yếu tố khác và sử dụng khối lượng giao dịch như một trong nhiều công cụ để đánh giá thị trường và đưa ra quyết định giao dịch.

Trong giao dịch chứng khoán, Khối lượng Giao dịch đóng vai trò quan trọng trong việc phân tích và đưa ra quyết định giao dịch chính xác. Khối lượng giao dịch không chỉ giúp đo lường độ thanh khoản, nhận biết sự tăng trưởng hoặc suy giảm giá trị của cổ phiếu, mà còn cho thấy sự quan tâm của thị trường đối với cổ phiếu. Tuy nhiên, khi sử dụng Khối lượng Giao dịch, cần xem xét cả các yếu tố khác và không nên dựa quá nhiều vào nó trong việc đưa ra quyết định giao dịch.

Có hàng triệu khách hàng Tiềm Năng đang xem bài viết này

Bạn muốn có muốn đưa sản phẩm/dịch vụ thương hiệu của mình lên website của chúng tôi

Liên Hệ Ngay!

Từ Nối Trong Tiếng Anh Và Cách Sử Dụng Từ Nối

1. Từ nối trong tiếng anh là gì?

(Từ nối trong tiếng anh – Linking verd)

2. Các sử dụng từ nối trong tiếng anh:

First/ firstly, second/ secondly, third/ thirdly etc : Đầu tiên/ thứ nhất, thứ hai/ thứ hai, thứ ba/ thứ ba vv…

Next, lastly, finally: Tiếp theo, cuối cùng, cuối cùng

Further/ furthermore: Thêm vào đó/ Hơn nữa

In conclusion: Trong kết luận, tóm lại, kết luận

Từ nối dùng để thêm thông tin: Là những từ nối trong tiếng anh dùng để kết nối ý nghĩa của câu trước đó với mục đích bổ sung thêm lượng thông tin hoặc giải thích cho người đọc, người nghe hiểu hơn về những gì đã được nhắc trước đó.

Besides: Ngoài ra

Furthermore: Xa hơn nữa

Moreover: Thêm vào đó

Accordingly: Theo như

And so: Và vì thế

Consequently: Do đó

For this reason: Vì lý do này nên

Then: Sau đó

Because: Bởi vì

(Các dạng từ nối trong tiếng anh)

Từ nối mang ý nghĩa nhấn mạnh: Theo đúng như tên gọi, chúng là từ nối trong tiếng anh được dùng để nhấn mạnh ý nghĩa của việc đang được nói đến. Một số trường hợp, nó cũng có thể sử dụng để giải thích, bổ sung thêm cho ý nghĩa của vế trước đó.

Indeed: Thực sự

Obviously: Rõràng

Admittedly: Sự thật là, thực ra là

In fact: Trong thực tế

Especially: Đặc biệt là

Clearly: Rõ ràng

Từ nối mang ý nghĩa đối lập: là những từ nối dùng để liên kết hai vế có ý nghĩa trái hoàn toàn ngược nhau.

But, yet: Nhưng

In contrast, on the contrary: Đối lập với

Instead: Thay vì

Still: vẫn

Từ nối chỉ địa điểm, phương hướng: Khi sử dụng những từ nối trong tiếng anh này, người đọc có thể hiểu sự việc, sự vật được nhắc đến đang ở đâu, nói đơn giản, giống như chúng ta đang miêu tả nơi chốn của sự việc, sự vật đó.

Alongside: dọc

Beneath: ngay phía dưới

Farther along: xa hơn dọc theo…

In back: phía sau

Nearby: gần

On top of: trên đỉnh của

To the right: về phía bên phải

Under: phía dưới

(Các dạng từ nối trong tiếng anh)

Afterward: về sau

At the same time: cùng thời điểm

Earlier: sớm hơn

Formerly: trước đó

In the future : trong tương lai

In the meantime : trong khichờ đợi

Later : muộn hơn

Meanwhile : trong khi đó

Simultaneously : đồng thời

Subsequently : sau đó

Until now : cho đến bây giờ

Từ nối dùng để nêu lên quan điểm: Những từ nối này sử dụng để trình bày, diễn đạt những ý tưởng, quan điểm của bản thân.

Personally: Theo cá nhân…

From my point of view: theo quan điểm của tôi…

It seems to me that: theo tôi thì…

I believe that: Tôi tin rằng…

Khi soạn văn bản, bạn cũng không hoàn toàn bắt buộc phải sử dụng từ nối ở đâu. Chúng có thể được đặt ở giữa câu, hoặc thậm chí cuối câu tùy hoàn cảnh và mục đích cụ thể, Cùng với những cách diễn đạt khác nhau, cộng thêm việc nếu bạn biết cách sử dụng từ nối trong tiếng anh để kết hợp chúng lại với nhau một cách thật linh hoạt thì bài văn của bạn sẽ trở nên mạch lạc hơn và phát huy tác dụng trong việc nâng cao khả năng truyền tải thông tin của một văn bản. Bên cạnh đó, đối với các kì thi luận tiếng anh, việc sử dụng từ nối trong tiếng anh một cách hợp lý để tránh các lỗi lặp từ và có thể gấy được ấn tượng với người chấm thi.

Tuyền Trần

Trong Võ Cổ Truyền, 18 Loại Binh Khí Hay Được Sử Dụng Là Gì?

Làm bằng gỗ, tre, mây, cũng có khi làm bằng kim loại, chia làm trường côn và đoản côn. Trường côn là roi dài gồm hai thứ là roi đấu (trường tiên) dài khoảng 3m và roi chiến (trung bình tiên) dài khoảng 1,5m.

Võ cổ truyền Gồm 18 môn tương ứng với 18 món binh khí: Côn, kiếm, đao, thương, giáo, kích, xà mâu, đinh ba, bồ cào, thiết bản, song tô, song xỉ, song câu, bút, phủ (búa), chuỳ, cung tên, lăn khiên

1- Kiếm:

Gồm chuôi kiếm, lưỡi kiếm và bao kiếm. Phần lưỡi dài, phiến dẹt, bề rộng chừng 3 – 4cm, cạnh mảnh và cực bén, rèn bằng kim loại tốt như sắt, thép, hợp kim. Phần cán (chuôi) bằng gỗ, có khi cán cũng được đúc bằng kim loại hoặc mạ vàng, chạm trỗ rất đẹp. Vỏ kiếm được chế tạo cũng bằng kim loại mỏng và cứng, dùng để bao ngoài lưỡi kiếm, một đầu kín một đầu hở khi gài vào ăn khớp với cổ chuôi kiếm.

Kiếm thuộc hàng vũ khí thanh nhã, sang trọng, được rèn theo yêu cầu của người sử dụng. Thường phải đảm bảo ba yếu tố: sắc bén, đẹp, có độ nặng, độ dài phù hợp với sức vóc người cầm. Kiếm lệnh là kiếm chỉ huy, lược trận, phân biệt với kiếm trận ở chỗ kiếm lệnh lưỡi cong, còn kiếm trận lưỡi thẳng. Lại tùy theo độ dài ngắn mà phân thành trường kiếm và đoản kiếm.

Trường kiếm độ dài xê dịch trong khoảng 1,2m đến 1,5m, có thể giao tranh trên mặt đất hoặc trên ngựa đều tiện lợi. Đoản kiếm là kiếm ngắn, từ chuôi đến ngọn dài chừng năm, bảy tấc, thích hợp với lối đánh cận chiến, giáp chiến. Thường con nhà võ chỉ tuốt kiếm khỏi bao khi giao đấu. Trong giao đấu, vỏ kiếm cũng là một vũ khí để đánh, đỡ, gạt, hất rất lợi hại. Tuy vậy, cũng có không ít những thanh kiếm để trần.

Thời chống Pháp trở về trước, kiếm là môn binh khí rất phổ biến trong võ thuật Bình Định. Nữ tướng Bùi Thị Xuân chuyên đánh song kiếm. Ở Bảo tàng Quang Trung hiện còn lưu bức tranh Bà cưỡi voi trận, tay cầm song kiếm, uy phong lẫm liệt.

2- Côn (roi)

Còn có một loại côn nữa là côn nhị khúc, làm bằng hai thanh gỗ cứng hoặc kim loại dài bằng nhau, nối với nhau bởi một sợi dây dài tết bằng tóc người hoặc bằng lông đuôi ngựa. Loại côn này gọn, mạnh, thích hợp cho lối đánh gần, có thể đổi tay phải tay trái tùy ý. Khi đánh dùng một thanh làm trụ, đánh bằng thanh kia, phóng ra thu về, biến hoá linh hoạt.

3- Đao:

Có cán bằng gỗ cứng, lưỡi đao càng về phía trước càng to bản, được vát hơi cong dần về phía mũi. Về chủng loại có đơn đao, song đao, đại đao, phác đao. Đại đao là vũ khí nặng, cán dài. Người sử dụng đại đao phải có sức vóc hơn người. Triều Tây Sơn có bốn người nổi tiếng về đại đao là Nguyễn Huệ, Võ Văn Dũng, Trần Quang Diệu và Đặng Văn Long. Đặc biệt là Võ Văn Dũng, tài sử đao của ông được Nguyễn Nhạc khen ngợi: “Phá sơn trung tặc dị, thắng Văn Dũng đao nan” nghĩa là Phá giặc trong núi dễ, thắng ngọn đao Văn Dũng mới khó.

4- Thương:

Là vũ khí dài, cán làm bằng gỗ cứng, ở đầu có mũi hình thoi nhọn ở đầu đúc bằng sắt. Cách dùng côn và thương về căn bản giống nhau, nhưng côn thiên về đả, tức đánh xuống, còn thương thiên về đâm.

5- Giáo:

Là loại vũ khí dài khoảng 2 – 2,5m bằng một loại tre đực đặc ruột có đầu vót nhọn bịt kim loại, dùng trong trận mạc. Cách đánh như côn, nhưng lợi thế hơn ở chỗ có mũi nhọn để đâm. Tương truyền đây là vũ khí đắc dụng của nghĩa binh Mai Xuân Thưởng, vì vùng nông thôn Bình Định rất sẵn tre.

6- Kích:

Là vũ khí dài, cán bằng gỗ cứng hoặc đúc bằng kim loại nặng. Phương thiên hoạ kích có một mũi nhọn ở giữa giống ngọn giáo, hai bên là hai vành đao lưỡi liềm day lưng vào nhau. Bán thiên kích thì chỉ có mũi nhọn với một vành đao lưỡi liềm. Kích nặng ở đầu nên sử dụng không được linh động như thương.

7- Xà mâu:

Là loại vũ khí dài, nhọn, phần trên cùng đúc kim loại uốn khúc như hình rắn.

8- Đinh ba:

Là loại vũ khí cán dài, một đầu tra lưỡi sắt có ba răng nhọn xỉa thẳng về trước. Đinh ba vận dụng các chiêu thức của côn, thiên về phóng, đâm, xóc.

9- Bồ cào:

Cũng là vũ khí cán dài, một đầu tra lưỡi sắt hình răng lược, giống như cái cào cỏ ở nông thôn Bình Định. Bồ cào cũng vận dụng chiêu thức của côn nhưng lại thiên về đập, giật.

10- Thiết bản:

Là một thanh kim loại vuông cạnh, dài chừng 1m, tiện dụng ở chỗ gọn gàng, con nhà võ có thể giắt bên hông hoặc sau lưng khi di chuyển.

11- Song tô:

Là hai lưỡi dao thép to bản, ở cán cầm có phần bảo vệ tay. Thích hợp đánh cận chiến.

12- Song xỉ:

Song xỉ là vũ khí dùng cho hai tay, gồm hai thanh sắt dài, hai đầu nhọn như lưỡi dao găm, phần thân bo theo cánh tay từ chỏ ra bàn tay, phía chỏ có dây da quấn vào bắp tay, phía trước có đai sắt để luồn bàn tay vào cầm cho chắc. Đặc điểm riêng của song xỉ là gọn, sắc, mạnh, thích hợp lối đánh gần, đòi hỏi người sử dụng phải tinh mắt, giỏi quyền cước, di chuyển mau lẹ.

13- Song câu:

Là vũ khí đôi gồm các phần câu, phần hộ thủ, phần lưỡi được đúc liền nhau. Phần câu cong như rựa quéo, để móc, hãm vũ khí hoặc một số vùng trên cơ thể địch thủ như cổ, vai, cổ tay, cổ chân, bắp đùi, hông… Phần thân giống như lưỡi kiếm. Chuôi cầm được bọc vải, da hoặc gỗ, có một lưỡi liềm để bảo vệ tay, gọi là phần hộ thủ. Song câu được sử dụng biến ảo linh hoạt, thích hợp lối đánh vừa công vừa thủ.

14- Bút:

Đúc bằng kim loại nặng, dài khoảng 5-7 tấc, phần cán tròn, đặc ruột, phần ngọn hình búp sen, cuối cán có sợi dây để buộc vào cổ tay người sử dụng, sau khi phóng ra có thể thu về. Dùng đôi gọi là song bút, dùng đơn gọi là độc bút.

15- Búa (phủ):

Búa là loại vũ khí gần giống với rìu chặt cây của tiều phu. Cán búa làm bằng gỗ cứng dài chừng một cánh tay. Lưỡi búa đúc hoặc rèn bằng sắt, thép tốt, rất nặng. Búa đơn gọi là độc phủ, búa đôi gọi là song phủ. Những chiếc búa đặc biệt trên sống còn được chạm đầu hổ hay đầu rồng rất tinh vi, gọi là hổ đầu phủ hoặc long đầu phủ. Chiêu thức của búa gồm các đòn ngắn, mạnh, trực diện, khả năng sát thương kẻ địch rất lớn, thích hợp với lối đánh thấp, cận chiến, trên bộ. Người sử dụng búa phải có sức lực hơn người, thân pháp cực kỳ mau lẹ.

16- Chuỳ:

Là loại vũ khí có tay cầm ở giữa là một thanh gỗ cứng hoặc kim loại, hai đầu là hai khối kim loại (sắt, thép, đồng) đặc ruột hình thuẫn hoặc hình tròn, ngoài mặt đúc nổi gai lục giác hoặc xẻ cạnh khế. Bề ngang có đường kính chừng 10 – 15cm. Chuỳ cũng có chùy đơn và chuỳ đôi.

17- Cung tên:

Cung đầu tiên là công cụ săn bắn, sau mới thành vũ khí chiến đấu. Thân cung và hai cánh cung làm bằng gỗ cứng, có khi là gốc tre lâu năm. Giữa thân cung có rãnh lắp tên. Đầu hai cánh cung được khoét lỗ tròn hoặc đính khuy sắt để căng dây cung. Dây cung thường làm bằng gân trâu hoặc một loại sợi đặc biệt dẻo và cứng, có tính đàn hồi cao, khi kéo mạnh sẽ làm cánh cung cong lại, tạo sức bật đẩy mũi tên bay xa. Tên làm bằng gỗ cứng hoặc tre già, mũi vót nhọn. Về sau, người ta bịt kim loại ở đầu mũi tên hoặc đúc tên sắt, tên đồng để tăng hiệu lực, xuyên thủng được vật cứng.

Môn bắn cung phải qua nhiều giai đoạn tập luyện: giương cung, nhắm đích, quỳ bắn, đứng bắn, dưới đất, trên ngựa. Mục tiêu bắn cũng đa dạng: từ gần tới xa, từ diện đến điểm, từ cố định đến di động. Lại được dạy các mánh khóe đánh lừa kẻ địch như giương đông kích tây, giương nam kích bắc v.v. Người bắn cung giỏi có thể bắn chim đang bay, hoặc còn nói trước được mình sẽ bắn rơi con thứ mấy trong đàn. Nổi danh về bắn cung ở Tây Sơn xưa từng có La Xuân Kiều, Đặng Xuân Phong, Lý Văn Bưu.

18- Lăn khiên:

Khiên là một tấm chắn bằng gỗ hoặc đan bằng cật tre, mây, dùng để đỡ gạt trong khi giao chiến, nhất là trong đánh trận, công thành. Nghĩa quân Tây Sơn rất thành thạo môn lăn khiên – một tay cầm khiên để hứng tên bắn từ xa hoặc đỡ gươm giáo khi đánh xáp lá cà, trong khi tay kia sử dụng một vũ khí khác để tấn công kẻ địch.

Đăng bởi: Nguyễn Thành Trung

Từ khoá: Trong võ cổ truyền, 18 loại binh khí hay được sử dụng là gì?

Sử Dụng Topic Exchange (Publish/Subscribe) Trong Rabbitmq

Bài viết được sự cho phép của tác giả Giang Phan

Trong các bài viết trước, chúng ta đã cùng tìm hiểu về Direct Exchange và Fanout Exchange. Trong bài này, tôi sẽ giới thiệu với các bạn một loại exchange khác là Topic Exchange.

Flow của một Message trong Topic Exchange

Topic exchange (amq.topic) định tuyến message tới một hoặc nhiều queue dựa trên sự trùng khớp giữa routing key và pattern. Topic exchange được sử dụng để thực hiện định tuyến thông điệp multicast. Loại Exchange này thường được sử dụng để thực hiện các biến thể của Pub/Sub pattern.

Ví dụ một vài trường hợp sử dụng:

Xử lý tác vụ nền được thực hiện bởi nhiều workers, mỗi công việc có khả năng xử lý các nhóm tác vụ cụ thể.

Điều phối các dịch vụ của các loại khác nhau trong cloud.

Một topic exchange sẽ sử dụng wildcard để gắn routing key với một routing pattern khai báo trong binding. Consumer có thể đăng ký những topic mà nó quan tâm.

Routing Key trong Topic Exchange:

Một Routing Key trong Topic Exchange phải bao gồm 0 hoặc nhiều từ phân cách bởi dấu chấm (.).

Routing Key trong Topic Exchange còn gọi là Routing Pattern.

Routing Pattern tương tự như Regular expression, nhưng chỉ các wildcard *, . và # được sử phép.

Ý nghĩa các wildcard được sử dụng là:

* : có nghĩa là chính xác một từ được phép.

# : có nghĩa là 0 hoặc nhiều số từ được phép.

. : có nghĩa là dấu phân cách từ. Nhiều từ chính được phân tách bằng dấu phân cách dấu chấm.

Ví dụ:

java.* : được đăng ký bởi tất cả những key với pattern bắt đầu bằng java và theo sau là chính xác một từ bất kỳ.

Những key sau là hợp lệ: java.core, java.gpcoder.

Những key sau là không hợp lệ: java, java.core.gpcoder.

java.*.gpcoder : được đăng ký bởi tất cả những key với pattern bắt đầu bằng java, theo sau là chính xác một từ bất kỳ và kết thúc là gpcoder.

Những key sau là hợp lệ: java.core.gpcoder, java.collection.gpcoder.

Những key sau là không hợp lệ: java.gpcoder, java.core.variable.gpcoder.

java.# : được đăng ký bởi tất cả các key bắt đầu với java.

Những key sau là hợp lệ: java, java.gpcoder, java.core.gpcoder.

java.#.gpcoder : được đăng ký bởi tất cả những key với pattern bắt đầu bằng java và kết thúc là gpcoder.

Những key sau là hợp lệ: java.gpcoder, java.core.gpcoder, java.collection.map.gpcoder.

Flow của một Message trong Topic Exchange như sau:

Một Queue được tạo và binding tới một Topic Exchange với một routing key pattern (P).

Một Producer sẽ tạo một Message với một routing key (K) và publish tới Exchange.

Một Message được Exchange chuyển đến Queue nếu Pattern P match với Key K.

Consumer đăng ký tới Queue để nhận Message.

Ví dụ Topic Exchange trong RabbitMQ

Trong ví dụ này, tôi tạo một Topic Exchange có tên GPCoderTopicExchange, tạo 2 Queue binding tới Topic Exchange này:

Một số class của chương trình:

ConnectionManager : hỗ trợ tạo Connection đến RabbitMQ.

TopicExchangeChannel :  class util hỗ trợ tạo Echange, Queue, binding Queue đến Exchange, publish/ subscribe message, …

Constant : định nghĩa constant chứa các thông tin về tên Exchange, Queue.

Producer: để gửi Message đến Exchange.

Consumer: để nhận Message từ Queue.

App: giả lập việc gửi nhận Message thông qua Topic Exchange của RabbitMQ.

ConnectionManager.java

package com.gpcoder.topicexchange; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import java.io.IOException; import java.util.concurrent.TimeoutException; public class ConnectionManager { private ConnectionManager() { super(); } public static Connection createConnection() throws IOException, TimeoutException { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); return factory.newConnection(); } }

TopicExchangeChannel.java

package com.gpcoder.topicexchange; import com.rabbitmq.client.BuiltinExchangeType; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import java.io.IOException; public class TopicExchangeChannel { private String exchangeName; private Channel channel; private Connection connection; public TopicExchangeChannel(Connection connection, String exchangeName) throws IOException { this.exchangeName = exchangeName; this.connection = connection; this.channel = connection.createChannel(); } public void declareExchange() throws IOException { channel.exchangeDeclare(exchangeName, BuiltinExchangeType.TOPIC, true); } public void declareQueues(String ...queueNames) throws IOException { for (String queueName : queueNames) { channel.queueDeclare(queueName, true, false, false, null); } } public void performQueueBinding(String queueName, String routingKey) throws IOException { channel.queueBind(queueName, exchangeName, routingKey); } public void subscribeMessage(String queueName) throws IOException { System.out.println("[Received] [" + queueName + "]: " + consumerTag); System.out.println("[Received] [" + queueName + "]: " + new String(message.getBody())); System.out.println(consumerTag); }); } public void publishMessage(String message, String messageKey) throws IOException { System.out.println("[Send] [" + messageKey + "]: " + message); channel.basicPublish(exchangeName, messageKey, null, message.getBytes()); } }

Constant.java

package com.gpcoder.topicexchange; public final class Constant { public static final String EXCHANGE_NAME = "GPCoderTopicExchange"; public static final String JAVA_QUEUE_NAME = "QJava"; public static final String GENERAL_QUEUE_NAME = "QAll"; private Constant() { super(); } }

Producer.java

package com.gpcoder.topicexchange; import com.rabbitmq.client.Connection; import java.io.IOException; import java.util.concurrent.TimeoutException; import static com.gpcoder.topicexchange.Constant.*; public class Producer { private TopicExchangeChannel channel; public void start() throws IOException, TimeoutException { Connection connection = ConnectionManager.createConnection(); channel = new TopicExchangeChannel(connection, EXCHANGE_NAME); channel.declareExchange(); channel.declareQueues(JAVA_QUEUE_NAME, GENERAL_QUEUE_NAME); channel.performQueueBinding(JAVA_QUEUE_NAME, JAVA_ROUTING_KEY); channel.performQueueBinding(GENERAL_QUEUE_NAME, GPCODER_ROUTING_KEY); } public void send(String message, String messageKey) throws IOException { channel.publishMessage(message, messageKey); } }

Consumer.java

package com.gpcoder.topicexchange; import com.rabbitmq.client.Connection; import java.io.IOException; import java.util.concurrent.TimeoutException; import static com.gpcoder.topicexchange.Constant.*; public class Consumer { private TopicExchangeChannel channel; public void start() throws IOException, TimeoutException { Connection connection = ConnectionManager.createConnection(); channel = new TopicExchangeChannel(connection, EXCHANGE_NAME); channel.declareExchange(); channel.declareQueues(JAVA_QUEUE_NAME, GENERAL_QUEUE_NAME); channel.performQueueBinding(JAVA_QUEUE_NAME, JAVA_ROUTING_KEY); channel.performQueueBinding(GENERAL_QUEUE_NAME, GPCODER_ROUTING_KEY); } public void subscribe() throws IOException { channel.subscribeMessage(JAVA_QUEUE_NAME); channel.subscribeMessage(GENERAL_QUEUE_NAME); } }

App.java

package com.gpcoder.topicexchange; import java.io.IOException; import java.util.concurrent.TimeoutException; import static com.gpcoder.topicexchange.Constant.*; public class App { public static void main(String[] args) throws IOException, TimeoutException { Producer producer = new Producer(); producer.start(); producer.send("[1] A new Java Core topic is published", JAVA_CORE_MSG_KEY); producer.send("[2] A new Java general topic is published", JAVA_MSG_KEY); producer.send("[3] A new Design Pattern topic is published", DESIGN_PATTERN_MSG_KEY); producer.send("[4] Not matching any routing key", NOT_MATCHING_MSG_KEY); Consumer consumer = new Consumer(); consumer.start(); consumer.subscribe(); } }

Output chương trình:

[Received] [QJava]: amq.ctag-LiUyX8m4KIJu0Gb9WlpLdg [Received] [QJava]: [1] A new Java Core topic is published [Received] [QAll]: amq.ctag-nmlzYAixFEwB4P0-N6nltw [Received] [QAll]: [1] A new Java Core topic is published [Received] [QAll]: amq.ctag-nmlzYAixFEwB4P0-N6nltw [Received] [QAll]: [2] A new Java general topic is published [Received] [QAll]: amq.ctag-nmlzYAixFEwB4P0-N6nltw [Received] [QAll]: [3] A new Design Pattern topic is published

Như bạn thấy:

Cập nhật thông tin chi tiết về Tạo Giao Diện Linh Hoạt Và Tái Sử Dụng Được Trong Swing trên website Efjg.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!