Xu Hướng 9/2023 # Sử Dụng Fanout Exchange Trong Rabbitmq # Top 15 Xem Nhiều | Bgxq.edu.vn

Xu Hướng 9/2023 # Sử Dụng Fanout Exchange Trong Rabbitmq # Top 15 Xem Nhiều

Bạn đang xem bài viết Sử Dụng Fanout Exchange Trong Rabbitmq được cập nhật mới nhất tháng 9 năm 2023 trên website Bgxq.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.

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. 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à Fanout Exchange.

Flow của một Message trong Fanout Exchange

Fanout exchange (định tuyến broadcast – amq.fanout) định tuyến message (copy message) tới tất cả queue mà nó được bind, với bất kể một routing key nào. Giả sử, nếu nó N queue được bind bởi một Fanout exchange, khi một message mới published, exchange sẽ định tuyến message đó tới tất cả N queues. Fanout exchange được sử dụng cho định tuyến message broadcast (quảng bá).

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

Một Producer sẽ tạo một Message và publish tới Exchange.

Một hoặc nhiều Queue bind tới Fanout Exchange không cần thông tin routing key.

Một Message tới Exchange sẽ được chuyển tiếp đến tất cả các Queue mà không có bất kỳ điều kiện kiểm tra nào.

Exchange Fanout hữu ích với trường hợp ta cần một dữ liệu được gửi tới nhiều ứng dụng khác nhau với cùng một message nhưng cách xử lý ở mỗi ứng dụng là khác nhau.

Ví dụ Fanout Exchange trong RabbitMQ

Trong ví dụ này, tôi tạo một Fanout Exchange có tên GPCoderFanoutExchange, tạo 3 Queue binding tới Fanout Exchange này: QDeveloper, QManager, QGeneral.

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

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

FanoutExchangeChannel :  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 Fanout Exchange của RabbitMQ.

ConnectionManager.java

package com.gpcoder.fanoutexchange; 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(); } }

FanoutExchangeChannel.java

package com.gpcoder.fanoutexchange; import com.rabbitmq.client.BuiltinExchangeType; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import java.io.IOException; import java.util.concurrent.TimeoutException; public class FanoutExchangeChannel { private String exchangeName; private Channel channel; private Connection connection; public FanoutExchangeChannel(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.FANOUT, true); } public void declareQueues(String ...queueNames) throws IOException { for (String queueName : queueNames) { channel.queueDeclare(queueName, true, false, false, null); } } public void performQueueBinding(String queueName) throws IOException { channel.queueBind(queueName, exchangeName, ""); } public void subscribeMessage(String queueName) throws IOException { System.out.println("[Received] [" + queueName + "]: " + new String(message.getBody())); System.out.println(consumerTag); }); } public void publishMessage(String message) throws IOException { System.out.println("[Send]: " + message); channel.basicPublish(exchangeName, "", null, message.getBytes()); } }

Constant.java

package com.gpcoder.fanoutexchange; public final class Constant { public static final String EXCHANGE_NAME = "GPCoderFanoutExchange"; public static final String DEV_QUEUE_NAME = "QDeveloper"; public static final String MANAGER_QUEUE_NAME = "QManager"; public static final String GENERAL_QUEUE_NAME = "QGeneral"; private Constant() { super(); } }

Producer.java

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

Consumer.java

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

App.java

package com.gpcoder.fanoutexchange; import java.io.IOException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; public class App { public static void main(String[] args) throws IOException, TimeoutException, InterruptedException { Producer producer = new Producer(); producer.start(); producer.send("gpcoder message 1"); Consumer consumer = new Consumer(); consumer.start(); consumer.subscribe(); TimeUnit.SECONDS.sleep(1); producer.send("gpcoder message 2"); } }

Output chương trình:

[Send]: gpcoder message 1 [Received] [QDeveloper]: gpcoder message 1 [Received] [QManager]: gpcoder message 1 [Received] [QGeneral]: gpcoder message 1 [Send]: gpcoder message 2 [Received] [QGeneral]: gpcoder message 2 [Received] [QDeveloper]: gpcoder message 2 [Received] [QManager]: gpcoder message 2

Như bạn thấy, tất cả các Consumer đều nhận được Message.

Lưu ý: Chúng ta có thể sử dụng phương thức queueDeclare() để tạo một Queue non-durable, exclusive, autodelete và tên được tạo một cách ngẫu nhiên.

Pips Trong Forex Là Gì? Hướng Dẫn Cách Sử Dụng

Tìm hiểu về pips trong forex: Khái niệm và cách sử dụng pips để đo lường biến động giá, đặt mục tiêu và quản lý rủi ro.

Pips trong forex là một thuật ngữ quan trọng mà nhà giao dịch forex cần hiểu. Nó đóng vai trò quan trọng trong việc đo lường sự biến động giá của các cặp tiền tệ. Trên thực tế, việc hiểu và sử dụng pips một cách hiệu quả có thể giúp bạn đưa ra quyết định giao dịch thông minh và tối ưu hóa lợi nhuận. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về pips trong forex và cách sử dụng chúng.

Pips (Percentage in Point) là đơn vị đo lường nhỏ nhất của sự biến động giá trong foreNó thường được sử dụng để đo lường lợi nhuận hoặc lỗ sau mỗi giao dịch. Một pips tương đương với 0,0001 đối với các cặp tiền tệ chính và 0,01 đối với các cặp tiền tệ phụ. Ví dụ, nếu giá EUR/USD tăng từ 1.2000 lên 1.2001, thì giá đã tăng 1 pip.

Pips trong forex giúp nhà giao dịch hiểu rõ hơn về sự biến động giá của các cặp tiền tệ. Nó cung cấp thông tin quan trọng về mức độ dao động của thị trường và có vai trò quyết định trong việc đặt mục tiêu lợi nhuận và rủi ro.

Để tính pips, chúng ta sử dụng công thức đơn giản: pips = (Giá mới – Giá cũ) / Giá cũ. Chẳng hạn, nếu giá một cặp tiền tệ tăng từ 1.3000 lên 1.3002, ta có thể tính được rằng giá đã tăng 2 pips.

Hãy xem một ví dụ minh họa để hiểu rõ hơn cách tính pips. Giả sử bạn mở một vị thế mua EUR/USD ở mức giá 1.2000 và đóng vị thế tại mức giá 1.2050. Để tính lợi nhuận của bạn trong pips, ta sử dụng công thức trên: pips = (1.2050 – 1.2000) / 1.2000 = 0.0042 = 42 pips.

Pips có mối quan hệ trực tiếp với giá trị tiền tệ. Với các cặp tiền tệ chính, một pips tương đương với một đơn vị tiền tệ. Ví dụ, một pips trên cặp EUR/USD tương đương với 0,0001 USD. Tuy nhiên, đối với các cặp tiền tệ phụ, một pips tương đương với 0,01 đơn vị tiền tệ. Ví dụ, một pips trên cặp USD/JPY tương đương với 0,01 JPY.

Pips đóng vai trò quan trọng trong việc xác định lợi nhuận và rủi ro trong giao dịch foreKhi bạn mở một vị thế, mỗi pips tăng hoặc giảm có thể ảnh hưởng đến giá trị vốn đầu tư của bạn. Điều này có nghĩa là việc rủi ro và phần thưởng trong giao dịch cũng được tính dựa trên pips.

Khi bạn đặt mục tiêu lợi nhuận và rủi ro, việc sử dụng pips là một công cụ hữu ích. Bằng cách đặt mục tiêu lợi nhuận dựa trên số pips thay vì số tiền, bạn có thể quản lý rủi ro một cách hiệu quả hơn và đạt được mục tiêu lợi nhuận mong đợ

Khi bạn thực hiện một giao dịch, việc xác định mục tiêu lợi nhuận và rủi ro dựa trên pips giúp bạn có kế hoạch giao dịch cụ thể. Bằng cách xác định một mức tiêu chuẩn về pips mà bạn muốn đạt được, bạn có thể dễ dàng tính toán được lợi nhuận và rủi ro tiềm năng.

Pips cũng được sử dụng để đặt các mức stop loss và take profit trong giao dịch foreKhi bạn đặt một mức stop loss, bạn xác định một mức giá mà nếu thị trường di chuyển đến, bạn sẽ cắt lỗ và đóng vị thế. Tương tự, khi bạn đặt một mức take profit, bạn xác định một mức giá mà nếu thị trường đạt được, bạn sẽ thu lợi nhuận và đóng vị thế.

Pips trong forex là đơn vị đo lường nhỏ nhất của sự biến động giá. Nó giúp nhà giao dịch đo lường lợi nhuận hoặc lỗ sau mỗi giao dịch.

Pipettes là một đơn vị đo lường nhỏ hơn của pips. Một pipette tương đương với 1/10 của một pips.

Để tính pips, bạn cần biết giá mới và giá cũ. Sử dụng công thức pips = (Giá mới – Giá cũ) / Giá cũ để tính toán pips một cách chính xác.

Trên thị trường forex, pips là một khái niệm quan trọng được sử dụng để đo lường sự biến động giá của các cặp tiền tệ. Bằng cách hiểu và sử dụng pips một cách hiệu quả, bạn có thể đưa ra quyết định giao dịch thông minh và tối ưu hóa lợi nhuận.

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!

Tp Trong Forex Là Gì? Hướng Dẫn Cách Sử Dụng

Tìm hiểu TP trong forex là gì và cách sử dụng hiệu quả. Hướng dẫn chi tiết về TP trong giao dịch ngoại hối trên Nào Tốt Nhất.

Trong thế giới giao dịch ngoại hối, TP (Take Profit) là một khái niệm quan trọng mà nhà giao dịch cần hiểu và sử dụng một cách hiệu quả. TP đại diện cho mức giá mà nhà giao dịch muốn đạt được để thu lợi nhuận từ một giao dịch ngoại hốTuy nhiên, để sử dụng TP một cách chính xác, bạn cần hiểu rõ về cách tính toán TP và cách sử dụng nó trong giao dịch ngoại hố

Để tính toán TP trong forex, bạn cần xác định điểm vào và điểm ra của một giao dịch. Điểm vào là mức giá bạn mở một vị thế giao dịch, trong khi điểm ra là mức giá mà bạn muốn đạt được để đóng giao dịch với lợi nhuận mong muốn.

Có nhiều cách tính TP phổ biến trong forex như:

Tính theo tỷ lệ risk/reward (rủi ro/điểm thưởng): Bạn xác định tỷ lệ giữa mức rủi ro và mức điểm thưởng mà bạn mong muốn. Ví dụ, nếu bạn chấp nhận rủi ro 50 pips và muốn đạt được 100 pips lợi nhuận, tỷ lệ risk/reward sẽ là 1:2. Bạn có thể đặt TP ở mức giá 100 pips từ điểm vào.

Sử dụng các đường hỗ trợ và kháng cự: Bạn có thể xác định các mức giá hỗ trợ và kháng cự trên biểu đồ và đặt TP ở những mức giá này. Điều này giúp bạn tận dụng các điểm mạnh trên biểu đồ để đạt được lợi nhuận mong muốn.

Sử dụng chỉ báo kỹ thuật: Các chỉ báo kỹ thuật như Moving Average (MA), Relative Strength Index (RSI) hay Bollinger Bands có thể giúp bạn xác định mức giá thích hợp để đặt TP. Thông qua việc phân tích các tín hiệu từ các chỉ báo này, bạn có thể xác định điểm ra lợi nhuận một cách chính xác hơn.

Xác định mục tiêu giao dịch và đặt TP phù hợp: Trước khi mở một giao dịch, hãy xác định mục tiêu lợi nhuận của bạn. Điều này giúp bạn biết được mức giá mà bạn muốn đạt được và đặt TP ở mức giá đó. Hãy nhớ rằng TP không chỉ giới hạn bạn trong việc thu lợi nhuận, mà còn giúp bảo vệ bạn khỏi việc mất lợi nhuận khi thị trường dao động không như dự đoán.

Quản lý rủi ro và đặt TP dựa trên tỷ lệ risk/reward: Để đảm bảo rủi ro được kiểm soát, hãy xác định tỷ lệ risk/reward phù hợp cho mỗi giao dịch của bạn. Điều này giúp bạn đạt được cân bằng giữa việc kiếm lợi nhuận và bảo vệ vốn đầu tư của mình. Hãy chắc chắn rằng tỷ lệ risk/reward của bạn hợp lý và phù hợp với chiến lược giao dịch của bạn.

Sử dụng các công cụ và chỉ báo hỗ trợ xác định TP: Trong forex, có nhiều công cụ và chỉ báo hỗ trợ giúp bạn xác định mức giá thích hợp để đặt TP. Hãy tận dụng các công cụ như Fibonacci Retracement, Pivot Point, hay các chỉ báo kỹ thuật để có cái nhìn toàn diện về thị trường và đưa ra quyết định thông minh về TP.

Tối ưu hóa lợi nhuận và giảm rủi ro: TP giúp bạn kiểm soát lợi nhuận của mình bằng cách đóng giao dịch khi đạt được mục tiêu lợi nhuận. Điều này giúp bạn tối ưu hóa lợi nhuận và giảm rủi ro bằng cách hạn chế việc mất lợi nhuận khi thị trường dao động không theo dự đoán.

Tạo sự tự tin và kiểm soát tâm lý giao dịch: Khi bạn đặt TP, bạn đã có một kế hoạch cụ thể cho giao dịch của mình. Điều này tạo ra sự tự tin và giúp bạn kiểm soát tâm lý giao dịch. Bạn sẽ không cảm thấy bối rối hoặc hoang mang khi thị trường dao động, vì bạn đã chuẩn bị trước và biết chính xác điểm ra lợi nhuận của mình.

Tăng cơ hội thành công trong giao dịch ngoại hối: Sử dụng TP giúp bạn xác định được mức lợi nhuận mà bạn muốn đạt được từ mỗi giao dịch. Điều này giúp bạn tăng cơ hội thành công trong giao dịch ngoại hối và đảm bảo rằng bạn không bỏ lỡ cơ hội để thu lợi nhuận.

TP (Take Profit) trong forex đại diện cho mức giá mà nhà giao dịch muốn đạt được để đóng giao dịch với lợi nhuận mong muốn.

TP quan trọng trong forex vì nó giúp bạn kiểm soát lợi nhuận và giảm rủi ro trong giao dịch ngoại hốNó cũng tạo ra sự tự tin và giúp bạn kiểm soát tâm lý giao dịch.

Bạn có thể tính TP hiệu quả bằng cách xác định mục tiêu lợi nhuận của mình, sử dụng tỷ lệ risk/reward phù hợp và sử dụng các công cụ và chỉ báo kỹ thuật để xác định mức giá thích hợp để đặt TP.

Có nhiều phần mềm và công cụ giao dịch tự động trong forex cho phép bạn đặt TP tự động. Tuy nhiên, việc sử dụng TP tự động cần cẩn thận và bạn nên kiểm tra và điều chỉnh các cài đặt để đảm bảo rằng TP được đặt một cách chính xác và phù hợp với chiến lược giao dịch của bạn.

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!

Cách Sử Dụng Count Và Countif Trong Excel Để Đếm Số Lượng.

Advertisement

Excel là một công cụ văn phòng đồng thời cũng là một phần mềm tính toán hỗ trợ rất nhiều trong công việc kế toán, quản lý dữ liệu hay giải trí. Đối với những người làm việc với Excel, cách sử dụng các công thức tính toán là rất quan trọng. Trong đó, Count và Countif là hai công thức quen thuộc được sử dụng để đếm số lượng. Việc nắm rõ cách sử dụng chúng sẽ giúp cho công việc của bạn trở nên hiệu quả hơn và tiết kiệm thời gian. Bài viết này sẽ giúp bạn hiểu rõ hơn về cách sử dụng Count và Countif trong Excel.

Việc thường xuyên phải xử lý tính toán dữ liệu với bảng tính Excel, sẽ có rất nhiều khi các bạn cần sử dụng hàm đếm. COUNT và COUNTIF là 2 hàm đếm cơ bản nhất, dễ sử dụng nhưng với những bạn mới tìm hiểu về Excel thì có thể các bạn chưa biết cách sử dụng chúng.

Tham Khảo Thêm:

 

Danh sách 10 bộ phim kinh dị khiến bạn rùng mình trên Netflix

Mục Lục Bài Viết

3. Ví dụ.

Hàm COUNTIF

1. Chức năng.

2. Cú pháp.

3. Ví dụ.

Hàm Count dùng để đếm số ô chứa dữ liệu số trong vùng được chọn.

Ngoài ra còn có các hàm đếm sau:

Hàm Counta: Đếm số ô chứa dữ liệu trong vùng được chọn.

Hàm Countifs: Hàm thống kê có điều kiện.

Hàm Countblank: Đếm số ô trống trong vùng được chọn.

Trong đó value1, value2 … là những ô cần đếm, hoặc các bạn có thể nhập các vùng cần đếm.

Cho một bảng dữ liệu, yêu cầu đếm số sinh viên đã có điểm trong cột Điểm (bạn nào chưa có điểm là những bạn nợ).

Sử dụng hàm đếm Count: =COUNT(E5:E14)

Hàm Countif dùng để đếm số ô thỏa mãn điều kiện (criteria) trong vùng cần đếm (range).

Trong đó: range là vùng cần đếm, criteria là điều kiện đếm.

Cho bảng dữ liệu như sau:

Yêu cầu đếm số sinh viên có điểm lớn hơn hoặc bằng 8?

COUNT và COUNTIF là 2 hàm đếm khá đơn giản, với bài hướng dẫn trên các bạn đã có thể sử dụng hàm đếm COUNT và COUNTIF cho công việc của mình.

Trong Excel, Count và Countif là các công cụ vô cùng hữu ích để đếm số lượng mục trong một tập hợp dữ liệu. Sử dụng đúng cách, chúng giúp bạn nhanh chóng và dễ dàng xác định và đếm các mục cần thực hiện phân tích và xử lý. Thông qua bài viết này, bạn đã học được cách sử dụng Count và Countif trong Excel một cách hiệu quả và chính xác. Hãy áp dụng kiến thức này để nâng cao kỹ năng của mình trong việc phân tích dữ liệu và đảm bảo rằng các phân tích của bạn được dựa trên các dữ liệu chính xác và đầy đủ.

Advertisement

Từ Khoá Tìm Kiếm Liên Quan: 

10. Tổng hợp cách sử dụng Count và Countif để đếm số lượng trong Excel

Advertisement

Kiểu Enum Trong Typescript: Làm Việc Như Thế Nào, Sử Dụng Ra Sao

Các khái niệm căn bản của enum

Javascript chỉ có đúng một kiểu mà giá trị bị ràng buộc rất cụ thể: boolean, giá trị chỉ được phép là true hoặc false, không chấp nhận một giá trị nào khác. Enum là phiên bản mở rộng với công dụng tương tự như boolean

enum NoYes { No, Yes }

2 giá trị No Yes được gọi là thành viên của hội enum NoYes. Dùng nó như một object, chúng ta có thể chấm đến giá trị đó

function toGerman(value: NoYes) { switch (value) { case NoYes.No: return 'Nein'; case NoYes.Yes: return 'Ja'; } }

enum NoYes { No, Yes, } enum NoYes { No = 0, Yes = 1, } assert.equal(NoYes.No, 0); assert.equal(NoYes.Yes, 1);

Nếu cà khịa, khai báo như thế này

enum Enum { A, B, C = 4, D, E = 8, F, }

Đồng nghĩa là các giá trị kế tiếp sẽ tự động tăng lên một, so với giá trị khai báo trước đó

assert.deepEqual( [Enum.A, Enum.B, Enum.C, Enum.D, Enum.E, Enum.F], [0, 1, 4, 5, 8, 9] );

Về cách đặt tên (name) trong enum, cũng có vài ba lựa chọn

Đặt theo kiểu JavaScript, viết hoa hết, Number,MAX_VALUE

Đặt theo kiểu symbol, con lạc đà, chữ đầu viết thường, Symbol.asyncIterator

Kiểu TypeScript, con lạc đà, chữ đầu viết hoa, Number.MaxValue

Tương tự như object, chúng ta có thể truy xuất đến một thành viên của hội bằng cách viết sau

enum HttpRequestField { 'Accept', 'Accept-Charset', 'Accept-Datetime', 'Accept-Encoding', 'Accept-Language', } assert.equal(HttpRequestField['Accept-Charset'], 1);

Giá trị value của enum, không bắt buộc là một number, có thể là một string

enum NoYes { No = 'No', Yes = 'Yes', } assert.equal(NoYes.No, 'No'); assert.equal(NoYes.Yes, 'Yes');

Còn một cách khai báo, ít được sử dụng, là kiểu xăng pha nhớt, các giá trị trong enum có thể là số cũng có thể là chữ

enum Enum { A, B, C = 'C', D = 'D', E = 8, F, } assert.deepEqual( [Enum.A, Enum.B, Enum.C, Enum.D, Enum.E, Enum.F], [0, 1, 'C', 'D', 8, 9] );

Theo như kinh nghiệm từ các bật tiền bối, sử dụng enum thì nên dùng kiểu giá trị string

enum NoYes { No = 'NO', Yes = 'YES' }

Nếu có log ra chúng ta cũng biết được giá trị chính xác là gì, đỡ hack não ngồi đếm số thứ tự

console.log(NoYes.No); console.log(NoYes.Yes);

Thêm nữa, ràng buộc được luôn kiểu giá trị

function func(noYes: NoYes) {} func('abc'); func('Yes'); Trường hợp sử dụng enum hằng số nhiều giá trị

Nếu chúng ta có một mớ các hằng số, có quan hệ họ hàng gần với nhau

const fatal = Symbol('fatal'); const error = Symbol('error'); const warn = Symbol('warn'); const info = Symbol('info'); const debug = Symbol('debug'); const trace = Symbol('trace');

Có thể dùng enum

enum LogLevel { fatal = 'fatal', error = 'error', warn = 'warn', info = 'info', debug = 'debug', trace = 'trace', }

Lợi ích mang lại: nhóm lại với nhau một cục, TypeScript dễ đàng kiểm tra giúp chúng ta

Tường minh hơn boolean

Chúng ta hay dùng boolean để làm cờ bật tắt hoặc đảo ngược giá trị

class List1 { isOrdered: boolean; }

Nếu dùng enum, nó sẽ rõ nghĩa hơn, nhiều lựa chọn hơn

enum ListKind { ordered, unordered } class List2 { listKind: ListKind; } String là một hằng số đúng nghĩa, an toàn hơn vì không thể thay đổi được giá trị

Ví dụ hàm bên dưới dùng const

const GLOBAL = 'g'; const NOT_GLOBAL = ''; function createRegExp(source: string, globalness: Globalness = NOT_GLOBAL) { return new RegExp(source, 'u' + globalness); } assert.deepEqual( createRegExp('abc', GLOBAL), /abc/ug);

dùng enum tiện hơn

enum Globalness { GLOBAL = 'g', NOT_GLOBAL = '', } function createRegExp(source: string, globalness = Globalness.NOT_GLOBAL) { return new RegExp(source, 'u' + globalness); } assert.deepEqual( createRegExp('abc', Globalness.GLOBAL), /abc/ug);

Enum lúc chạy thì sẽ trở thành gì?

Sau khi TypeScript đã compile, enum sẽ được được chuyển thành javascript object

enum NoYes { No, Yes, } var NoYes; (function (NoYes) { NoYes[NoYes["No"] = 0] = "No"; NoYes[NoYes["Yes"] = 1] = "Yes";

THam khảo các vị trí tuyển lập trình Typescript cho bạn.

TopDev via Vuilaptrinh

Macro Trong Excel Là Gì? Cách Sử Dụng, Có Ví Dụ Minh Họa

Việc lặp đi lặp lại các thao tác trong lúc sử dụng Excel có thể khiến bạn nhàm chán, cho nên bạn rất muốn làm cho mọi thứ trở nên tự động để có thể thao tác 1 cách nhanh nhẹn và chuyên nghiệp. Vậy thì bạn đừng lo, Thế Giới Di Động sẽ hướng dẫn bạn làm việc đó bằng Macro.

Bài hướng dẫn được triển khai trên máy tính với phiên bản Excel 2013, ngoài những cũng hoàn toàn có thể thực thi trên những phiên bản Excel 2003, 2007, 2010, năm nay và trên MacOS với thao tác tựa như .

I. Macro là gì và lợi ích của Macro trong Excel

Macro hay còn gọi là VBA Macro là những chương trình nhỏ giúp cho bạn tự động hóa các thao tác lặp đi lặp lại ở 1 vùng dữ liệu, thay vì bạn sẽ là người thực hiện chúng mọi lúc thì Macro sẽ thay bạn làm điều đó. Ví dụ như nhập chữ hoặc số, chọn ô, chọn lệnh trong thanh ribbon hay trong menu, định dạng ô, định dạng cột hoặc hàng, import dữ liệu từ nguồn ngoài như Access, ngoài ra việc sử dụng Macro cũng đem lại rất nhiều lợi ích cho bạn:

Luôn luôn định dạng mặc định cho một vùng dữ liệu.

Phục vụ tự động cho công việc nhờ các tính năng đã thiết lập sẵn.

Có thể chỉnh sửa cho phù hợp bất cứ lúc nào.

II. Cách sử dụng Macro trong Excel 1. Cách để tạo Macro trong Excel

Mẹo:

Khi bạn tạo một Macro để làm một số thao tác, Excel sẽ chỉ chạy thao tác đó trong vùng được xác định sẵn. Điều này có nghĩa là nếu bạn thêm bất kỳ hàng hay cột mới nào vào trong vùng đã tạo, Macro sẽ không chạy thao tác cho vùng mới thêm vào.

Nếu bạn muốn xử lý một thao tác dài, hãy chia những thao tác đó thành những thao tác nhỏ hơn để đưa vào từng lệnh Macro nhỏ, chứ đừng nên đưa tất cả vào 1 Macro.

Macro không chỉ áp dụng trong phạm vi Excel. Bạn có thể tạo một bản ghi liên kết tới các ứng dụng Office khác có hỗ trợ VBA. Chẳng hạn như ghi một macro để tạo bảng trong Excel, sau đó đưa vào Outlook để gửi tới địa chỉ trong bảng.

Để tạo 1 Macro ta làm như sau :

Bước 1: Trong thẻ Developer, nhóm Code, chọn Record Macro

Trong thẻ Developer, nhóm Code, chọn Record Macro

Bước 2: Trong mục Macro name, điền tên theo ý muốn.

Trong mục Macro name, điền tên theo ý muốn

Bước 3: Để liên kết với một tổ hợp phím tắt, trong mục Shortcut key, dùng bất cứ phím nào theo ý muốn. Và khi phím tắt này trùng với các phím tắt mặc định, chẳng hạn như Ctrl + Z, bạn sẽ mất đi tính năng Ctrl + Z có sẵn trong Excel (Undo).

Lưu ý:

Liên kết với một tổng hợp phím tắt

Bước 4: Tại Store macro in, chọn vị trí bạn muốn đặt bản ghi.

Tại Store macro in, chọn vị trí bạn muốn đặt bản ghi

Trong mục Description, ghi những ghi chú về bản ghi

2. Cách dừng Macro trong Excel

Lưu ý: Việc nhấn dừng sẽ không ảnh hưởng hay xóa bất kỳ tác vụ nào của Macro mà bạn đã cài sẵn

Để ngừng việc ghi, vào lại thẻ Developer, nhóm Code và chọn Stop Recording.

Để ngừng việc ghi, vào lại thẻ Developer, nhóm Code và chọn Stop Recording.

3.Cách chạy Macro trong Excel

Nhấn vào Visual Basic

Nhấp chuột phải vào phần Module và chọn Export File

File Macro của bạn sẽ được lưu dưới đuôi. bas

5. Cách xóa Macro trong Excel

Cập nhật thông tin chi tiết về Sử Dụng Fanout Exchange Trong Rabbitmq trên website Bgxq.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!