kafkaApi

Kafka安全认证:SASL/GSSAPI (kerberos) 文章目录kafka和zookeeper开启kerberos认证1. 环境2. 创建主体并生成keytab3. 配置jaas.conf4. 配置kafka server.properties5. 配置kafka zookeeper.properties6. kafka broker+zookeeper启动脚本7. kafka client的使用7.1 producer7.2 consumer kaf... 阅读详情
package kafka;


import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;

import java.util.Properties;

public class KafkaProducerDemo {
//生产者api 简单demo 搬自官网
    public static void main(String[] args) {

    //===producer统一配置
    //        http://kafka.apache.org/documentation/#producerapi 官网
        Properties properties = new Properties();//创建配置实例
        properties.put("bootstrap.servers","192.168.1.201:6667,192.168.1.202:6667");//多写俩个防止其中一个宕机
//        properties.put("acks","1");//指定ack机制的等级 0为速度极快但是安全性很差 1为速度还可以安全性可保证 -1为最安全 速度较慢 但没必要
//        properties.put("retries","0");//重试发送消息次数 默认为0
//        properties.put("batch.size", 16384);//一批获取的数据量 16k
//        properties.put("linger.ms", 1);//
//        properties.put("buffer.memory", 33554432);//缓存大小
        properties.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");//key的序列化
        properties.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer");//value的序列化

        
        KafkaProducer<String, String> kk = new KafkaProducer<String, String>(properties);//将配置加载进来
       for(int i=0;i<30;i++) {

           kk.send(new ProducerRecord<String, String>("test", Integer.toString(i%6), "hello"));
       }
        kk.close();
    }
}

========================================
package kafka;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;


import java.util.Arrays;
import java.util.Properties;

public class KafkaConsumerDemo {

    public static void main(String[] args) {
	//        http://kafka.apache.org/documentation/#producerapi 官网
        Properties props = new Properties();
        props.put("bootstrap.servers", "192.168.1.201:6667,192.168.1.202:6667");//
        props.put("group.id", "test");//设置消费组id ,组id可以重新设置以获取从头到位的消息
        props.put("auto.offset.reset","earliest");//此设置的earliest是从上次订阅到的地方继续订阅 latest是从头部开始订阅 仅限于新的消费组 如果消费组已经把前面的订阅过了 那么将无法再次重新订阅前面的内容 只能申请一个新的消费组就可以从头开始在订阅一次
        props.put("enable.auto.commit", "false");//自动拉取 一般不设置为ture 这样无法控制订阅的offset
        props.put("auto.commit.interval.ms", "1000");//提交offset的时间间隔为1000ms一次
        props.put("session.timeout.ms", "30000");//会话时长为30000
        props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");


        //通过配置,新建一个消费者实例
        KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
        //订阅topic主题test001
        consumer.subscribe(Arrays.asList("test"));

        while (true){//死循环 内部
            ConsumerRecords<String, String> polls = consumer.poll(100);//消费者,主动去拉去数据,参数为轮询间隔,也就是100ms拉取一次.
            for(ConsumerRecord<String, String> po:polls){//poll是一个容器 只能遍历

                System.out.println(po.key()+po.topic()+po.value()+po.offset()+po.partition());//相当于消费了订阅
            }

            consumer.commitSync();//提交当前订阅的offset
        }
    }
}

/*
在这里会遇到一个问题
如果是先消费然后在维护offset那么网络闪断等一些不确定因素导致没有成功提交当前消费的offset导致下一次重复消费(在这里官网提供了一套api关于每个分区的offset下面为核心代码)
 try {
         while(running) {
             ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(Long.MAX_VALUE));
             for (TopicPartition partition : records.partitions()) {
                 List<ConsumerRecord<String, String>> partitionRecords = records.records(partition);
                 for (ConsumerRecord<String, String> record : partitionRecords) {
                     System.out.println(record.offset() + ": " + record.value());
                 }
                 long lastOffset = partitionRecords.get(partitionRecords.size() - 1).offset();
                 consumer.commitSync(Collections.singletonMap(partition, new OffsetAndMetadata(lastOffset + 1)));
             }
         }
     } finally {
       consumer.close();
     }

如果是先维护offset在消费如果有不确定因素发生导致当期的消费没有消费完整,下一次消费的时候会跳过本次没有消费的内容直接走下一批的订阅
这两种问题最好根据业务需求调整
*/
c++使用librdkafka kerberos认证 sasl.kerberos.kinit.cmd命令不用加,文档上面写的是默认执行:kinit -R -t "%{sasl.kerberos.keytab}" -k %{sasl.kerberos.principal} || kinit -t "%{sasl.kerberos.keytab}" -k %{sasl.kerberos.principal}把krb5.conf拷贝到/etc/目录替换到原来的krb5.conf文件。设置环境变量 KRB5_CONFIG=/***/krb5.conf。 阅读详情

相关推荐

Unity3D 集成 SQLite 数据库实战:从零搭建到数据可视化

本文详细介绍了在Unity3D项目中集成SQLite数据库的完整实战流程。从SQLite的轻量、稳定、易用特性讲起,逐步指导开发者完成环境配置、驱动集成、C#脚本编写(涵盖连接、建表、增删改查),并进阶演示了数据模型封装与在Unity UI中实现数据可视化的方法。最后提供了多线程访问、路径差异、性能优化等关键避坑指南,帮助开发者构建可靠高效的本地数据管理方案。

weixin_29291069的博客 91

oracle 生成目录树,生成目录信息树 - 使用 Oracle® Solaris 11.2 目录和命名服务:LDAP...

生成目录信息树下表列出了 west.example.com 的服务器信息。表4-1为 west.example.com 域定义的服务器变量变量针对示例网络的定义安装了目录服务器实例的端口号389(缺省值)服务器名称myserver(来自 FQDN myserver.west.example.com 或 192.168.0.1 的主机名)副本服务器(IP 号:端口号)192.168.0.2 [对于...

weixin_28909503的博客 247

3D IC中Memory-on-Logic堆叠测试的DFT解决方案与工程实践

在半导体行业,随着摩尔定律逼近物理极限,3D IC技术通过芯片垂直堆叠实现性能提升和异构集成,已成为重要发展方向。其核心原理是利用硅通孔(TSV)或微凸块实现芯片间电气互连,将多个不同功能的芯片(如逻辑芯片与存储芯片)集成在一个封装内。这项技术的核心价值在于能大幅提升系统性能、降低功耗并实现更小的封装尺寸。然而,芯片堆叠后,传统的测试方法面临巨大挑战,尤其是测试访问存在物理屏障,无法直接探测被覆盖的芯片接口。为此,可测试性设计(DFT)成为确保3D IC可靠性与量产可行性的关键技术。它通过在设计阶段植入专用

weixin_42521058的博客 632

java sasl例子_Java SaslConfigs類代碼示例

本文整理匯總了Java中org.apache.kafka.common.config.SaslConfigs類的典型用法代碼示例。如果您正苦於以下問題:Java SaslConfigs類的具體用法?Java SaslConfigs怎麽用?Java SaslConfigs使用的例子?那麽恭喜您, 這裏精選的類代碼示例或許可以為您提供幫助。SaslConfigs類屬於org.apache.kafka....

weixin_29429691的博客 1345

BUCK电路的大信号模型与小信号模型推导

推导开关电源信号模型的核心是将非线性开关过程线性化,常用。如需具体拓扑的推导细节,可进一步说明!

创新改变世界! 1169

π0.5部署实战(一) ------ 在Thor上使用NVFP4量化

此篇文章是pi05模型在thor上部署系列文章的第一篇.主要介绍如何对pi05 2.6B LLM(Gemma)使用nvfp4进行量化.所有操作使用开源工具可以先参考进行环境的准备和安装,在上完成以下操作.

happyAnger6的专栏 403

kafka消息中间件Java API调用

参考: https://www.orchome.com/451 Kafka集群的安装见上文,本文介绍使用Java API通过kafka发送和接收消息。 1. kafka客户端依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <version>1.0.1</version> </dependenc

sjhuangx的专栏 572

深入解析机器人软件开发中的核心:状态机管理(FSM)—— 理论、实践与优化

状态机(FSM)是机器人软件开发中管理复杂行为逻辑的核心工具,广泛应用于导航、任务执行、故障处理等场景。本文系统探讨状态机的基础理论(定义、要素)、主流设计模式(经典FSM、分层状态机HSM、行为树BT),以及工业级实现方法(代码架构、线程安全、调试技巧)。通过移动机器人导航和机械臂任务执行的案例,分析分层状态机的实际应用,并总结常见陷阱(如状态爆炸、阻塞操作)与优化策略(异步化、事件过滤)。

郑伟强dev的专栏 292

apache kafka系列之源码分析走读-kafkaApi详解

Kafka源码中数据交互流程 图1 1.概述 kafka启动时做很多初始化运行环境工作,具体请参考:apache kafka系列之源码分析走读-kafka内部模块分析 其中SockeServer类启动时,首先初始化NIO网络环境、启动监听、创建主线程、工作线程池、设置参数等等。 从上图1中可以看到整个交互过程中,kafka的所有逻辑处理和交互实际是交给

yjh314的专栏 586

C#里使用NModbus来创建一个TCP从站服务

摘要:本文介绍了一个用C#实现的Modbus TCP从站服务器,基于.NET Framework 4.6.1开发。代码使用NModbus库创建TcpListener和ModbusSlaveNetwork,支持设置IP地址、端口号和从站ID。服务器实现了数据存储初始化功能(包括线圈和保持寄存器),并提供了启动/停止操作的UI界面和日志记录功能。该解决方案适用于需要调试Modbus TCP协议的场景,特别适合无法升级到更高版本.NET Framework的环境。

大坡3D软件开发 478

[QMT量化交易小白入门]-二、如何用miniQMT获取沪深A股的板块列表、历史行情数据和实时行情数据

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 5655

KafkaAPI实战

新旧API使用 Flume和Kafka集成: Kafka有两套API: 过时的API 和新API 准备工作1234567891011121314151617181920<dependencies> <dependency> <groupId>org.apache.kaf...

菜鸟清风http://www.hphblog.cn/ 5878

YOLOv11改进,YOLOv11结合DynamicConv(动态卷积),CVPR2024,二次创新C3k2结构

DynamicConv(动态卷积)是一个用于提高卷积神经网络(CNN)性能的技术,核心思想是动态地生成卷积核(filter),而不是使用固定的卷积核。通过引入更多的计算灵活性和适应性来增强卷积操作的表达能力,进而提升模型的性能。专家选择:DynamicConv 通过引入多个“专家”(experts),每个专家学习特定的卷积模式。输入图像的不同部分会选择不同的专家进行卷积。动态卷积核生成:根据输入的不同特征,专家网络动态地生成卷积核,而不是使用固定的卷积核。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2263

KafkaAPI案例

主题是消息的逻辑容器,而分区是主题的物理存储单元。每个分区都是有序的,并且可以在不同的机器上进行分布式存储。的高吞吐量、可扩展性和容错性使其成为构建实时数据管道和流式处理应用程序的理想选择。:Kafka集群的地址列表,用于初始化与Kafka集群的连接。:Kafka集群的地址列表,用于初始化与Kafka集群的连接。:键的反序列化器,用于将字节数组反序列化为键对象。:值的反序列化器,用于将字节数组反序列化为值对象。:键的序列化器,用于将键序列化为字节数组。:值的序列化器,用于将值序列化为字节数组。

互联网知识分享 362

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

kafkaAPI学习

kafkaAPI学习 kafka版本为kafka_2.11-0.10.1.1 官方API文档地址:http://kafka.apache.org/23/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html

qq_32358105的博客 169

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Excel彩色进度条制作:条件格式、REPT与图标集实战

在Excel中,条件格式是一种按规则自动改变单元格样式的功能,数据条则通过长度映射数值大小。由于单条数据条规则仅支持一种填充色,直接实现彩色分档并不可行。结合公式条件格式、REPT字符条、辅助列分段与图标集,可以按阈值动态换色。这一思路在KPI完成率分档、项目进度预警和库存水位监控中尤为实用,能快速识别异常与达标情况。下面从数据条边界、参数调整到分段拼装,给出可直接套用的配置方案。

weixin_33795743的博客 378

kafkaAPI使用以及常用配置介绍

这篇文章主要介绍kafka中JAVA API的使用,这里面为了介绍配置,所以使用的是原生的javaapi操作,kafka可以与spring通过xml配置集成,或者更加简单通过spring boot引入starter,通过(AutoConfiguration)自动配置完成集成。但其实无论何种使用方式,其根本都是使用原生pai进行操作。 使用maven依赖管理,引入kafka依赖 &lt...

嘎嘎的博客 3047

KafkaAPI的使用

1、创建主题 ./kafka-topics.sh --create --topic baizhi --partitions 1 --replication-factor 1 --bootstrap-server node01:9092 2、生产者 引入依赖 <dependency> <groupId>org.apache.kafka</groupId> ...

qq_36811160的博客 175

KafkaAPI之消费者Consumer

1、最简单消费者 package tyh.consumer; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; import org.apache.kafka.clients.consumer.KafkaCons

tyh1579152915的博客 632

KafkaAPI 和 KafkaStreamAPI

生产者producer代码 import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord; import java.util.Properties; /** * @author dell * @version v 1.0 * @...

hongchenshijie的博客 323

kafkaAPI

使用方法见官网API介绍: https://kafka.apache.org/22/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html 转载于:https://www.cnblogs.com/f-society/p/10730475.html

weixin_30883311的博客 84

kafkaApI的简单使用

kafka生产者 public class Producer { public static void main(String[] args) { Properties props=new Properties(); props.put("bootstrap.servers","bigdata-pro-001:9092,bigdata-pro-002:...

南弥陀的博客 397

KafkaAPI生产和消费数据

一、生产数据 首先创建一个Maven的quickstart工程 编辑pow.xml配置,导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/

hetry_liang的博客 488
上一篇: scala正则
下一篇: with
Alwaysdazz
博客等级 码龄8年 24粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值