Java開發技巧雜技

雜記一

創建項目的spring initializr,要求是創建spring boot3.0,且不在支持java8語言,且要求語言大於17,所以創建項目時,無法創建srping2.0項目了;如果要創建spring2.0,需要改server url,即獲取創建模版的地址;地址使用阿里雲的:https://start.aliyun.com

雜記二

1Panel是一個和寶塔一樣的服務器管理面板,官方網站如下:

1Panel - 現代化、開源的 Linux 服務器運維管理面板

安裝地址幫助地址如下:

在線安裝 - 1Panel 文檔

1Panel會以docker容器安裝應用。

雜記三

配置prperties 編碼如下:

settings——Editor——FileEncodings配置Default encoding for prperties files:

雜記四

settings——Plugins搜索maven-search,然後安裝插件,該插件可以快速搜索jar包,可以不用上https://mvnrepository.com/網站上搜索。

安裝完,Tools會增加MavenSearch菜單。

雜記五

在安裝了docker的服務器,執行下面命令,可以進入容器內部。

docker exec -it <container-id> /bin/bash
docker exec -it fb623ac9704fb4bec8dc2a6cc84831890947728504c8fed8be57c0b5a3a6197a /bin/bash

在linux裏執行下面命令,查看安裝了哪些docker容器。

docker ps

which docker 命令用於查找 docker 命令所在的路徑。

which docker

雜記六 使用1panel安裝kafka

在maven-search中搜索kafka-clients,獲取到依賴如下:

<dependency>
   <groupId>org.apache.kafka</groupId>
   <artifactId>kafka-clients</artifactId>
   <version>3.6.0</version>
</dependency>

然後編寫連接kafka代碼。

   
    static Collection<String> topicColl = Collections.singleton("my-topic");
    //生產者:鍵編碼器
    static String keyEncoder = "org.apache.kafka.common.serialization.StringSerializer";
    //生產者:值編碼器
    static String valueEncoder = "org.apache.kafka.common.serialization.StringSerializer";
    //消費者:鍵解碼器
    static String keyDecoder = "org.apache.kafka.common.serialization.StringDeserializer";
    //消費者:值解碼器
    static String valueDecoder = "org.apache.kafka.common.serialization.StringDeserializer";
​
    public static void main(String[] args) {
        SpringApplication.run(KKafkaApplication.class, args);
        producter1();
        consumer1();
    }
​
    static void producter1() {
        Properties properties = new Properties();
        properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "10.1.0.145:9092");
        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, keyEncoder);
        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, valueEncoder);
        properties.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group-id");
        KafkaProducer<String, String> producer = new KafkaProducer<>(properties);
        String message = "hello world ";
        try {
            for (int i = 0; i < 10; i++) {
                // 異步寫入數據
                String topic = topicColl.toArray()[0].toString();
                ProducerRecord<String, String> producerRecord = new ProducerRecord<>(topic, message + i);
                producer.send(producerRecord, new Callback() {
                    @Override
                    public void onCompletion(RecordMetadata metadata, Exception exception) {
                        if (Objects.nonNull(exception)) {
                            log.error(">>>>>>>>>>Producer生產消息異常:", exception);
                        }
                        if (Objects.nonNull(metadata)) {
                            log.info(">>>>>>>>>>Producer生產消息:metadata:{},partition:{}, offset:{}", metadata, metadata.partition(), metadata.offset());
                        }
                    }
                });
            }
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        } finally {
            producer.close();
        }
    }
​
    static void consumer1() {
        try {
            Properties properties = new Properties();
            properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "10.1.0.145:9092");
            properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, keyDecoder);
            properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, valueDecoder);
            properties.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group-id");
            KafkaConsumer<String, String> consumer = new KafkaConsumer<>(properties);
            consumer.subscribe(topicColl);
            while (Boolean.TRUE) {
                ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(10000));
                for (ConsumerRecord<String, String> record : records) {
                    log.info(">>>>>>>>Consumer offset:{}, value:{}", record.offset(), record.value());
                }
            }
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        } 
    }

如果拋出異常java.net.UnknownHostException: kafka0001,則需要配置host文件。

在C:\Windows\System32\drivers\etc的host文件下,添加

10.1.0.145 kafka0001 

雜記六 flink

在linux部署Flink需要先安裝JDK。

需要到官網先下載安裝包。

官網下載地址:https://flink.apache.org/downloads/

各個版本下載地址:https://dlcdn.apache.org/flink/

然後使用final shell上傳到 soft/resources下。

然後進入soft/resources,執行命令解壓

tar -zxvf flink-1.18.0-bin-scala_2.12.tgz -C /soft/flink/

然後進入flink文件夾

 cd /soft/flink/flink-1.18.0/

然後進入conf。

cd conf

然後修改配置文件裏的localhost都改爲0.0.0.0

 vi flink-conf.yaml

然後執行命令啓動

bin/start-cluster.sh 

然後放行8081,然後jps查看進程

jps

然後訪問192.1.0.1:8081


flink使用maven快速創建java項目使用的包如下:

<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-quickstart-java -->
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-quickstart-java</artifactId>
    <version>1.18.0</version>
</dependency>

ps:flink官網學習地址:https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/

ps:flinkCDC,cdc不是flink提供的,是ververica提供的,參考地址:MySQL CDC 連接器 — CDC Connectors for Apache Flink® documentation (ververica.github.io)

----------------------------------------------------------------------------------------------------

注:此文章爲原創,任何形式的轉載都請聯繫作者獲得授權並註明出處!
若您覺得這篇文章還不錯,請點擊下方的【推薦】,非常感謝!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章