日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

MQ黃金三劍客 Rabbit Rocket Kafka深入解密常見(jiàn)問(wèn)題及功能對(duì)比指南

來(lái)源: 責(zé)編: 時(shí)間:2023-09-20 21:55:48 381觀看
導(dǎo)讀1、消息丟失問(wèn)題RabbitMQ解決消息丟失的問(wèn)題:RabbitMQ通過(guò)消息持久化和消息確認(rèn)機(jī)制來(lái)確保消息的可靠傳遞。生產(chǎn)者可以選擇將消息標(biāo)記為持久化,使得即使在消息隊(duì)列服務(wù)器故障后,消息也能被保存并傳遞給消費(fèi)者。RabbitMQ

uza28資訊網(wǎng)——每日最新資訊28at.com

1、消息丟失問(wèn)題

RabbitMQ解決消息丟失的問(wèn)題:

  • RabbitMQ通過(guò)消息持久化和消息確認(rèn)機(jī)制來(lái)確保消息的可靠傳遞。生產(chǎn)者可以選擇將消息標(biāo)記為持久化,使得即使在消息隊(duì)列服務(wù)器故障后,消息也能被保存并傳遞給消費(fèi)者。
  • RabbitMQ還提供了多種消息確認(rèn)機(jī)制,如發(fā)布確認(rèn)(Publish Confirm)和事務(wù)機(jī)制(Transaction),生產(chǎn)者可以通過(guò)這些機(jī)制獲取消息是否成功被RabbitMQ接收和處理的確認(rèn)。

RocketMQ解決消息丟失的問(wèn)題:

  • RocketMQ通過(guò)持久化存儲(chǔ)和副本機(jī)制來(lái)保證消息的可靠傳遞。消息在發(fā)送前會(huì)被持久化存儲(chǔ)到磁盤(pán)上,即使在消息服務(wù)器故障時(shí)也能夠恢復(fù)消息。
  • RocketMQ支持多副本機(jī)制,將消息復(fù)制到多個(gè)Broker節(jié)點(diǎn)上,即使其中一個(gè)Broker節(jié)點(diǎn)發(fā)生故障,仍然可以從其他副本節(jié)點(diǎn)讀取和傳遞消息。

Kafka解決消息丟失的問(wèn)題:

  • Kafka通過(guò)持久化存儲(chǔ)和副本機(jī)制來(lái)保證消息的可靠傳遞。消息在發(fā)送前被持久化存儲(chǔ)到磁盤(pán)上,即使在服務(wù)器重啟后也不會(huì)丟失。
  • Kafka采用多副本機(jī)制,將消息復(fù)制到多個(gè)Broker節(jié)點(diǎn)上,即使其中一個(gè)Broker節(jié)點(diǎn)故障,仍然可以從其他副本節(jié)點(diǎn)讀取和傳遞消息。

2、消息積壓?jiǎn)栴}

RabbitMQ解決消息積壓的問(wèn)題:

  • RabbitMQ通過(guò)調(diào)整消費(fèi)者的消費(fèi)速率來(lái)控制消息積壓??梢允褂肣oS(Quality of Service)機(jī)制設(shè)置每個(gè)消費(fèi)者的預(yù)取計(jì)數(shù),限制每次從隊(duì)列中獲取的消息數(shù)量,以提升消費(fèi)者的處理速度。
  • RabbitMQ還支持消費(fèi)者端的流量控制,通過(guò)設(shè)置basic.qos參數(shù)來(lái)提升消費(fèi)者的處理速度,避免消息過(guò)多導(dǎo)致積壓。

RocketMQ解決消息積壓的問(wèn)題:

  • RocketMQ通過(guò)動(dòng)態(tài)提升消費(fèi)者的消費(fèi)速率來(lái)控制消息積壓。可以根據(jù)系統(tǒng)的負(fù)載情況和消息隊(duì)列的堆積情況,動(dòng)態(tài)調(diào)整消費(fèi)者的并發(fā)消費(fèi)線程數(shù),以適應(yīng)消息的處理需求。
  • RocketMQ還提供了消息拉取和推拉模式,消費(fèi)者可以根據(jù)自身的處理能力主動(dòng)拉取消息,避免消息積壓過(guò)多。

Kafka解決消息積壓的問(wèn)題:

  • Kafka通過(guò)分區(qū)和副本機(jī)制來(lái)實(shí)現(xiàn)消息的并行處理和負(fù)載均衡??梢愿鶕?jù)消息的負(fù)載情況和消費(fèi)者的處理能力,通過(guò)增加分區(qū)數(shù)量、調(diào)整副本分配策略等方式來(lái)提高系統(tǒng)的處理能力。
  • Kafka還提供了消息清理(compaction)和數(shù)據(jù)保留策略,可以根據(jù)時(shí)間或者數(shù)據(jù)大小來(lái)自動(dòng)刪除過(guò)期的消息,避免消息積壓過(guò)多。

3、消息重復(fù)消費(fèi)問(wèn)題

RabbitMQ:

  • 冪等性處理:在消費(fèi)者端實(shí)現(xiàn)冪等性邏輯,即無(wú)論消息被消費(fèi)多少次,最終的結(jié)果應(yīng)該保持一致。這可以通過(guò)在消費(fèi)端進(jìn)行唯一標(biāo)識(shí)的檢查或者記錄已經(jīng)處理過(guò)的消息來(lái)實(shí)現(xiàn)。
  • 消息確認(rèn)機(jī)制:消費(fèi)者在處理完消息后,發(fā)送確認(rèn)消息(ACK)給RabbitMQ,告知消息已經(jīng)成功處理。RabbitMQ根據(jù)接收到的確認(rèn)消息來(lái)判斷是否需要重新投遞消息給其他消費(fèi)者。

RocketMQ:

  • 使用消息唯一標(biāo)識(shí)符(Message ID):在消息發(fā)送時(shí),為每條消息附加一個(gè)唯一標(biāo)識(shí)符。消費(fèi)者在處理消息時(shí),可以通過(guò)判斷消息唯一標(biāo)識(shí)符來(lái)避免重復(fù)消費(fèi)。可以將消息ID記錄在數(shù)據(jù)庫(kù)或緩存中,用于去重檢查。
  • 消費(fèi)者端去重處理:消費(fèi)者在消費(fèi)消息時(shí),可以通過(guò)維護(hù)一個(gè)已消費(fèi)消息的列表或緩存,來(lái)避免重復(fù)消費(fèi)已經(jīng)處理過(guò)的消息。

Kafka:

  • 冪等性處理:在消費(fèi)者端實(shí)現(xiàn)冪等性邏輯,即多次消費(fèi)同一條消息所產(chǎn)生的結(jié)果與單次消費(fèi)的結(jié)果一致。這可以通過(guò)在業(yè)務(wù)邏輯中引入唯一標(biāo)識(shí)符或記錄已處理消息的狀態(tài)來(lái)實(shí)現(xiàn)。
  • 消息確認(rèn)機(jī)制:消費(fèi)者在處理完消息后,提交已消費(fèi)的偏移量(Offset)給Kafka,Kafka會(huì)記錄已提交的偏移量,以便在消費(fèi)者重新啟動(dòng)時(shí)從正確的位置繼續(xù)消費(fèi)。消費(fèi)者可以定期提交偏移量,確保消息只被消費(fèi)一次。

4、消息順序性

rabbitmq 的消息順序性主要依賴(lài)于以下幾個(gè)方面:

  • 單個(gè)隊(duì)列:rabbitmq 保證了同一個(gè)隊(duì)列中的消息按照發(fā)布的順序進(jìn)入和出隊(duì)。

rokcetmq 的消息順序性主要依賴(lài)于以下幾個(gè)方面:

  • 有序分區(qū):rokcetmq 保證了同一個(gè)隊(duì)列(topic + queueId)中的消息按照發(fā)布的順序存儲(chǔ)和消費(fèi)。

kafka 的消息順序性主要依賴(lài)于以下幾個(gè)方面:

  • 有序分區(qū):kafka 保證了同一個(gè)分區(qū)(topic + partition)中的消息按照發(fā)布的順序存儲(chǔ)和消費(fèi)。

5、事務(wù)消息

RabbitMQ的事務(wù)消息:

  • RabbitMQ支持事務(wù)消息的發(fā)送和確認(rèn)。在發(fā)送消息之前,可以通過(guò)調(diào)用"channel.txSelect()"來(lái)開(kāi)啟事務(wù),然后將要發(fā)送的消息發(fā)布到交換機(jī)中。如果事務(wù)成功提交,消息將被發(fā)送到隊(duì)列,否則事務(wù)會(huì)回滾,消息不會(huì)被發(fā)送。
  • 在消費(fèi)端,可以通過(guò)"channel.txSelect()"開(kāi)啟事務(wù),然后使用"basicAck"手動(dòng)確認(rèn)消息的處理結(jié)果。如果事務(wù)成功提交,消費(fèi)端會(huì)發(fā)送ACK確認(rèn)消息的處理;否則,事務(wù)回滾,消息將被重新投遞。
public class RabbitMQTransactionDemo {    private static final String QUEUE_NAME = "transaction_queue";    public static void main(String[] args) {        try {            // 創(chuàng)建連接工廠            ConnectionFactory factory = new ConnectionFactory();            factory.setHost("localhost");            // 創(chuàng)建連接            Connection connection = factory.newConnection();            // 創(chuàng)建信道            Channel channel = connection.createChannel();            // 聲明隊(duì)列            channel.queueDeclare(QUEUE_NAME, false, false, false, null);            try {                // 開(kāi)啟事務(wù)                channel.txSelect();                // 發(fā)送消息                String message = "Hello, RabbitMQ!";                channel.basicPublish("", QUEUE_NAME, null, message.getBytes());                // 提交事務(wù)                channel.txCommit();            } catch (Exception e) {                // 事務(wù)回滾                channel.txRollback();                e.printStackTrace();            }            // 關(guān)閉信道和連接            channel.close();            connection.close();        } catch (Exception e) {            e.printStackTrace();        }    }}

RocketMQ的事務(wù)消息:

  • RocketMQ提供了事務(wù)消息的機(jī)制,確保消息的可靠性和一致性。發(fā)送事務(wù)消息時(shí),需要將消息發(fā)送到半消息隊(duì)列,然后執(zhí)行本地事務(wù)邏輯。事務(wù)執(zhí)行成功后,通過(guò)調(diào)用"TransactionStatus.CommitTransaction"提交事務(wù)消息;若事務(wù)執(zhí)行失敗,則通過(guò)調(diào)用"TransactionStatus.RollbackTransaction"回滾事務(wù)消息。事務(wù)消息的最終狀態(tài)由消息生產(chǎn)者根據(jù)事務(wù)執(zhí)行結(jié)果進(jìn)行確認(rèn)。
public class RocketMQTransactionDemo {    public static void main(String[] args) throws Exception {        // 創(chuàng)建事務(wù)消息生產(chǎn)者        TransactionMQProducer producer = new TransactionMQProducer("group_name");        producer.setNamesrvAddr("localhost:9876");                // 設(shè)置事務(wù)監(jiān)聽(tīng)器        producer.setTransactionListener(new TransactionListener() {            @Override            public LocalTransactionState executeLocalTransaction(Message msg, Object arg) {                // 執(zhí)行本地事務(wù)邏輯,根據(jù)業(yè)務(wù)邏輯結(jié)果返回相應(yīng)的狀態(tài)                // 返回 LocalTransactionState.COMMIT_MESSAGE 表示事務(wù)提交                // 返回 LocalTransactionState.ROLLBACK_MESSAGE 表示事務(wù)回滾                // 返回 LocalTransactionState.UNKNOW 表示事務(wù)狀態(tài)未知            }            @Override            public LocalTransactionState checkLocalTransaction(MessageExt msg) {                // 根據(jù)消息的狀態(tài),來(lái)判斷本地事務(wù)的最終狀態(tài)                // 返回 LocalTransactionState.COMMIT_MESSAGE 表示事務(wù)提交                // 返回 LocalTransactionState.ROLLBACK_MESSAGE 表示事務(wù)回滾                // 返回 LocalTransactionState.UNKNOW 表示事務(wù)狀態(tài)未知            }        });                // 啟動(dòng)事務(wù)消息生產(chǎn)者        producer.start();        // 構(gòu)造消息        Message msg = new Message("topic_name", "tag_name", "Hello, RocketMQ!".getBytes());        // 發(fā)送事務(wù)消息        TransactionSendResult sendResult = producer.sendMessageInTransaction(msg, null);        System.out.println("Send Result: " + sendResult);        // 關(guān)閉事務(wù)消息生產(chǎn)者        producer.shutdown();    }}

Kafka的事務(wù)消息:

  • Kafka引入了事務(wù)功能來(lái)確保消息的原子性和一致性。事務(wù)消息的發(fā)送和確認(rèn)在生產(chǎn)者端進(jìn)行。生產(chǎn)者可以通過(guò)初始化事務(wù),將一系列的消息寫(xiě)入事務(wù),然后通過(guò)"commitTransaction()"提交事務(wù),或者通過(guò)"abortTransaction()"中止事務(wù)。Kafka會(huì)保證在事務(wù)提交之前,寫(xiě)入的所有消息不會(huì)被消費(fèi)者可見(jiàn),以保持事務(wù)的一致性。
public class KafkaTransactionDemo {    public static void main(String[] args) {        Properties props = new Properties();        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());        props.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transactional_id");        Producer<String, String> producer = new KafkaProducer<>(props);        // 初始化事務(wù)        producer.initTransactions();        try {            // 開(kāi)啟事務(wù)            producer.beginTransaction();            // 發(fā)送消息            ProducerRecord<String, String> record = new ProducerRecord<>("topic_name", "Hello, Kafka!");            producer.send(record);            // 提交事務(wù)            producer.commitTransaction();        } catch (ProducerFencedException e) {            // 處理異常情況            producer.close();        } finally {            producer.close();        }    }}

6、ACK機(jī)制

RabbitMQ的ACK機(jī)制:

RabbitMQ使用ACK(消息確認(rèn))機(jī)制來(lái)確保消息的可靠傳遞。消費(fèi)者收到消息后,需要向RabbitMQ發(fā)送ACK來(lái)確認(rèn)消息的處理狀態(tài)。只有在收到ACK后,RabbitMQ才會(huì)將消息標(biāo)記為已成功傳遞,否則會(huì)將消息重新投遞給其他消費(fèi)者或者保留在隊(duì)列中。uza28資訊網(wǎng)——每日最新資訊28at.com

以下是RabbitMQ ACK的Java示例:uza28資訊網(wǎng)——每日最新資訊28at.com

public class RabbitMQAckDemo {    public static void main(String[] args) throws Exception {        // 創(chuàng)建連接工廠        ConnectionFactory factory = new ConnectionFactory();        factory.setHost("localhost");        // 創(chuàng)建連接        Connection connection = factory.newConnection();        // 創(chuàng)建信道        Channel channel = connection.createChannel();        // 聲明隊(duì)列        String queueName = "queue_name";        channel.queueDeclare(queueName, false, false, false, null);        // 創(chuàng)建消費(fèi)者        String consumerTag = "consumer_tag";        boolean autoAck = false; // 關(guān)閉自動(dòng)ACK        // 消費(fèi)消息        channel.basicConsume(queueName, autoAck, consumerTag, new DefaultConsumer(channel) {            @Override            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {                // 消費(fèi)消息                String message = new String(body, "UTF-8");                System.out.println("Received message: " + message);                try {                    // 模擬處理消息的業(yè)務(wù)邏輯                    processMessage(message);                    // 手動(dòng)發(fā)送ACK確認(rèn)消息                    long deliveryTag = envelope.getDeliveryTag();                    channel.basicAck(deliveryTag, false);                } catch (Exception e) {                    // 處理消息異常,可以選擇重試或者記錄日志等操作                    System.out.println("Failed to process message: " + message);                    e.printStackTrace();                    // 手動(dòng)發(fā)送NACK拒絕消息,并可選是否重新投遞                    long deliveryTag = envelope.getDeliveryTag();                    boolean requeue = true; // 重新投遞消息                    channel.basicNack(deliveryTag, false, requeue);                }            }        });    }    private static void processMessage(String message) {        // 模擬處理消息的業(yè)務(wù)邏輯    }}

RocketMQ的ACK機(jī)制:

RocketMQ的ACK機(jī)制由消費(fèi)者控制,消費(fèi)者從消息隊(duì)列中消費(fèi)消息后,可以手動(dòng)發(fā)送ACK確認(rèn)消息的處理狀態(tài)。只有在收到ACK后,RocketMQ才會(huì)將消息標(biāo)記為已成功消費(fèi),否則會(huì)將消息重新投遞給其他消費(fèi)者。uza28資訊網(wǎng)——每日最新資訊28at.com

以下是RocketMQ ACK的Java示例:

public class RocketMQAckDemo {    public static void main(String[] args) throws Exception {        // 創(chuàng)建消費(fèi)者        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("group_name");        consumer.setNamesrvAddr("localhost:9876");        // 訂閱消息        consumer.subscribe("topic_name", "*");        // 注冊(cè)消息監(jiān)聽(tīng)器        consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {            for (MessageExt message : msgs) {                try {                    // 消費(fèi)消息                    String msgBody = new String(message.getBody(), "UTF-8");                    System.out.println("Received message: " + msgBody);                    // 模擬處理消息的業(yè)務(wù)邏輯                    processMessage(msgBody);                    // 手動(dòng)發(fā)送ACK確認(rèn)消息                    return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;                } catch (Exception e) {                    // 處理消息異常,可以選擇重試或者記錄日志等操作                    System.out.println("Failed to process message: " + new String(message.getBody()));                    e.printStackTrace();                    return ConsumeConcurrentlyStatus.RECONSUME_LATER;                }            }            return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;        });        // 啟動(dòng)消費(fèi)者        consumer.start();    }    private static void processMessage(String message) {        // 模擬處理消息的業(yè)務(wù)邏輯    }}

Kafka的ACK機(jī)制:

Kafka的ACK機(jī)制用于控制生產(chǎn)者在發(fā)送消息后,需要等待多少個(gè)副本確認(rèn)才視為消息發(fā)送成功。這個(gè)機(jī)制可以通過(guò)設(shè)置acks參數(shù)來(lái)進(jìn)行配置。uza28資訊網(wǎng)——每日最新資訊28at.com

在Kafka中,acks參數(shù)有三個(gè)可選值:

  • acks=0:生產(chǎn)者在發(fā)送消息后不需要等待任何確認(rèn),直接將消息發(fā)送給Kafka集群。這種方式具有最高的吞吐量,但是也存在數(shù)據(jù)丟失的風(fēng)險(xiǎn),因?yàn)樯a(chǎn)者不會(huì)知道消息是否成功發(fā)送給任何副本。
  • acks=1:生產(chǎn)者在發(fā)送消息后只需要等待首領(lǐng)副本(leader replica)確認(rèn)。一旦首領(lǐng)副本成功接收到消息,生產(chǎn)者就會(huì)收到確認(rèn)。這種方式提供了一定的可靠性,但是如果首領(lǐng)副本在接收消息后但在確認(rèn)之前發(fā)生故障,仍然可能會(huì)導(dǎo)致數(shù)據(jù)丟失。
  • acks=all:生產(chǎn)者在發(fā)送消息后需要等待所有副本都確認(rèn)。只有當(dāng)所有副本都成功接收到消息后,生產(chǎn)者才會(huì)收到確認(rèn)。這是最安全的確認(rèn)機(jī)制,確保了消息不會(huì)丟失,但是需要更多的時(shí)間和資源。acks=-1與acks=all是等效的。

下面是一個(gè)使用Java編寫(xiě)的Kafka生產(chǎn)者示例代碼:uza28資訊網(wǎng)——每日最新資訊28at.com

public class KafkaProducerDemo {    public static void main(String[] args) {        // 配置Kafka生產(chǎn)者的參數(shù)        Properties props = new Properties();        props.put("bootstrap.servers", "localhost:9092"); // Kafka集群的地址和端口        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // 鍵的序列化器        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // 值的序列化器        props.put("acks", "all"); // 設(shè)置ACK機(jī)制為所有副本都確認(rèn)        // 創(chuàng)建生產(chǎn)者實(shí)例        KafkaProducer<String, String> producer = new KafkaProducer<>(props);        // 構(gòu)造消息        String topic = "my_topic";        String key = "my_key";        String value = "Hello, Kafka!";        // 創(chuàng)建消息記錄        ProducerRecord<String, String> record = new ProducerRecord<>(topic, key, value);        // 發(fā)送消息        producer.send(record, new Callback() {            @Override            public void onCompletion(RecordMetadata metadata, Exception exception) {                if (exception != null) {                    System.err.println("發(fā)送消息出現(xiàn)異常:" + exception.getMessage());                } else {                    System.out.println("消息發(fā)送成功!位于分區(qū) " + metadata.partition() + ",偏移量 " + metadata.offset());                }            }        });        // 關(guān)閉生產(chǎn)者        producer.close();    }}

本文鏈接:http://m.www897cc.com/showinfo-26-10561-0.htmlMQ黃金三劍客 Rabbit Rocket Kafka深入解密常見(jiàn)問(wèn)題及功能對(duì)比指南

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Github的一個(gè)奇技淫巧,你學(xué)會(huì)了嗎?

下一篇: 圖解「正向代理」的原理 + 實(shí)踐應(yīng)用

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • K60至尊版剛預(yù)熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛?cè)缁鹑巛钡男麄髁薑60 Ultra的各種技術(shù)和硬件配置,作為競(jìng)品的一加也坐不住了。一加中國(guó)區(qū)總裁李杰發(fā)布了兩條微博,表示在自家的一加Ace2上早就已經(jīng)采用了和PixelWo
  • 小米官宣:2023年上半年出貨量中國(guó)第一!

    今日早間,小米電視官方微博帶來(lái)消息,稱(chēng)2023年小米電視上半年出貨量達(dá)到了中國(guó)第一,同時(shí)還表示小米電視的巨屏風(fēng)暴即將開(kāi)始?!肮家粋€(gè)好消息2023年#小米電視上半年出貨量中國(guó)
  • 小米平板5 Pro 12.4簡(jiǎn)評(píng):多專(zhuān)多能 兼顧影音娛樂(lè)的大屏利器

    疫情帶來(lái)了網(wǎng)課,網(wǎng)課盤(pán)活了安卓平板,安卓平板市場(chǎng)雖然中途停滯了幾年,但好的一點(diǎn)就是停滯的這幾年行業(yè)又有了新的發(fā)展方向,例如超窄邊框、高刷新率、多攝鏡頭組合等,這就讓安卓
  • 學(xué)習(xí)JavaScript的10個(gè)理由...

    作者 | Simplilearn編譯 | 王瑞平當(dāng)你決心學(xué)習(xí)一門(mén)語(yǔ)言的時(shí)候,很難選擇到底應(yīng)該學(xué)習(xí)哪一門(mén),常用的語(yǔ)言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 深度探索 Elasticsearch 8.X:function_score 參數(shù)解讀與實(shí)戰(zhàn)案例分析

    在 Elasticsearch 中,function_score 可以讓我們?cè)诓樵?xún)的同時(shí)對(duì)搜索結(jié)果進(jìn)行自定義評(píng)分。function_score 提供了一系列的參數(shù)和函數(shù)讓我們可以根據(jù)需求靈活地進(jìn)行設(shè)置。近期
  • 這款新興工具平臺(tái),讓你的電腦效率翻倍

    隨著信息技術(shù)的發(fā)展,我們獲取信息的渠道越來(lái)越多,但是處理信息的效率卻成為一個(gè)瓶頸。于是各種工具應(yīng)運(yùn)而生,都在爭(zhēng)相解決我們的工作效率問(wèn)題。今天我要給大家介紹一款效率
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會(huì)涉及各種各樣的安全任務(wù),包括但不限于:開(kāi)發(fā)某些安全工具的插件,滿(mǎn)足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 零售大模型“干中學(xué)”,攀爬數(shù)字化珠峰

    文/侯煜編輯/cc來(lái)源/華爾街科技眼對(duì)于絕大多數(shù)登山愛(ài)好者而言,攀爬珠穆朗瑪峰可謂終極目標(biāo)。攀登珠峰的商業(yè)路線有兩條,一是尼泊爾境內(nèi)的南坡路線,一是中國(guó)境內(nèi)的北坡路線。相
  • AI芯片初創(chuàng)公司Tenstorrent獲三星和現(xiàn)代1億美元投資

    Tenstorrent是一家由芯片行業(yè)資深人士Jim Keller領(lǐng)導(dǎo)的加拿大初創(chuàng)公司,專(zhuān)注于開(kāi)發(fā)人工智能芯片,該公司周三表示,已經(jīng)從現(xiàn)代汽車(chē)集團(tuán)和三星投資基金等
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久国产直播| 一本色道久久综合亚洲精品小说| 欧美午夜不卡| 国产精品视频免费在线观看| 国产午夜亚洲精品理论片色戒| 激情久久一区| 亚洲精品美女在线观看| 亚洲欧美bt| 久久综合福利| 国产精品国产亚洲精品看不卡15| 国产日韩欧美在线视频观看| 亚洲国产精品久久久久秋霞不卡| 亚洲午夜电影在线观看| 久久精品免费看| 欧美精品一区二区三区高清aⅴ| 国产精品成人观看视频国产奇米| 狠狠爱综合网| 99视频+国产日韩欧美| 欧美在线国产精品| 欧美区一区二区三区| 国产麻豆91精品| 亚洲国产精品视频一区| 亚洲一二三区在线| 老牛嫩草一区二区三区日本| 欧美午夜性色大片在线观看| 黄色精品网站| 亚洲午夜精品网| 免费欧美日韩国产三级电影| 国产精品视频内| 亚洲精品一区在线| 久久精品国产999大香线蕉| 欧美乱人伦中文字幕在线| 国产亚洲欧美日韩一区二区| 99v久久综合狠狠综合久久| 久久久激情视频| 欧美网站在线观看| 亚洲国产欧美另类丝袜| 午夜国产不卡在线观看视频| 欧美黑人多人双交| 国产一区二区三区四区五区美女 | 欧美噜噜久久久xxx| 国产亚洲精品久久飘花| 夜夜爽av福利精品导航| 久久综合九色九九| 国产精品任我爽爆在线播放| 亚洲片国产一区一级在线观看| 久久国产精品99国产| 国产精品播放| 亚洲久久在线| 免费观看成人www动漫视频| 国产精品一区二区三区免费观看| 亚洲精品乱码久久久久久黑人 | 国产欧美亚洲日本| av不卡在线观看| 蜜月aⅴ免费一区二区三区| 国产日韩欧美亚洲| 亚洲午夜伦理| 欧美日韩一区在线视频| 亚洲欧洲一区二区三区久久| 卡一卡二国产精品| 国产专区一区| 欧美一级免费视频| 国产精品扒开腿做爽爽爽视频| 亚洲狼人精品一区二区三区| 免费欧美高清视频| 激情久久婷婷| 久久精品毛片| 国产一区二区精品久久91| 午夜精品网站| 国产精品综合色区在线观看| 在线亚洲+欧美+日本专区| 欧美精品在线视频| 亚洲日本中文字幕免费在线不卡| 免费日韩一区二区| 在线观看日韩专区| 麻豆91精品| 91久久国产自产拍夜夜嗨| 蜜桃伊人久久| 亚洲茄子视频| 欧美精品色一区二区三区| 亚洲精品欧美精品| 欧美激情一二区| 亚洲精品视频啊美女在线直播| 欧美韩日一区二区| 亚洲卡通欧美制服中文| 欧美精品尤物在线| 一本色道88久久加勒比精品| 欧美午夜剧场| 亚洲一二三区精品| 国产农村妇女精品一区二区 | 国产精品yjizz| 亚洲在线观看免费| 国产精品久久中文| 午夜精品视频一区| 国产一区二区欧美| 久久综合九色综合网站| 亚洲国产精品v| 欧美激情按摩| 99精品欧美一区| 国产精品久久久久aaaa九色| 性欧美暴力猛交另类hd| 国产专区欧美精品| 欧美91精品| 99热这里只有精品8| 国产精品啊v在线| 欧美一乱一性一交一视频| 韩日成人在线| 欧美国产在线电影| 一区二区三区高清在线| 国产精品一区二区三区久久| 久久影院亚洲| 99re66热这里只有精品3直播| 国产精品久久久久9999高清| 久久国产精品久久精品国产| 亚洲国产成人在线| 欧美日韩在线三区| 欧美一区网站| 亚洲国产高清高潮精品美女| 欧美精品亚洲精品| 亚洲欧美国产一区二区三区| 国外成人性视频| 欧美精品一区二区三区在线播放| 亚洲一区免费在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 欧美激情亚洲自拍| 亚洲欧美日韩在线播放| 一区在线播放| 欧美亚洲成人网| 久久天堂av综合合色| 一本色道久久综合亚洲精品不卡| 国产日韩欧美综合一区| 欧美黄在线观看| 性高湖久久久久久久久| 亚洲人www| 国产亚洲毛片| 欧美三级韩国三级日本三斤| 久久久国产精品一区| 一区二区三区精品| 精品51国产黑色丝袜高跟鞋| 欧美日韩在线大尺度| 久久久99精品免费观看不卡| 日韩天堂av| 黄网动漫久久久| 国产精品久久久久久久久果冻传媒| 久久女同精品一区二区| 亚洲香蕉视频| 亚洲国语精品自产拍在线观看| 国产美女高潮久久白浆| 欧美日韩性生活视频| 久久先锋资源| 欧美一区二区国产| 一本色道久久综合亚洲精品小说| 一区在线电影| 国产农村妇女精品一二区| 欧美日韩福利在线观看| 久久亚洲综合色一区二区三区| 亚洲午夜影视影院在线观看| 亚洲精品久久久久久久久| 国外成人在线| 国产精品一区二区女厕厕| 欧美人与性动交cc0o| 久久综合狠狠综合久久综合88| 午夜精品成人在线| 中文国产亚洲喷潮| 亚洲人成在线观看网站高清| 韩日视频一区| 国产日本欧美一区二区| 欧美日韩在线第一页| 欧美大片一区| 久久久久久久波多野高潮日日| 亚洲一区二区精品视频| 亚洲精品久久久久中文字幕欢迎你 | 亚洲一区二区三区乱码aⅴ| 亚洲黄一区二区三区| 国产午夜精品美女毛片视频| 欧美亚洲成人网| 欧美久久综合| 欧美波霸影院| 久久综合伊人77777尤物| 欧美一区二区三区久久精品茉莉花| 一区二区免费在线播放| 亚洲精品男同| 亚洲欧洲精品一区二区三区不卡 | 欧美日韩一区在线播放| 欧美激情一区二区| 欧美成人精品1314www| 久久综合狠狠| 久久夜色精品国产亚洲aⅴ| 久久不射2019中文字幕| 欧美一级免费视频| 亚洲欧美一区二区原创| 亚洲一区国产精品| 亚洲网址在线| 亚洲网站在线看| 亚洲一区二区三区高清| 亚洲一区二区三区高清| 亚洲系列中文字幕| 亚洲已满18点击进入久久| 亚洲一区二区高清视频| 亚洲一区二区高清| 午夜精品国产更新| 先锋资源久久| 欧美一区二区三区在线看 | 久久aⅴ国产欧美74aaa|