大数据学习之Kafka消息队列、Spark分布式计算框架一

news2025/1/30 15:30:26

Kafka消息队列

章节一.kafka入门

4.kafka入门_消息队列两种模式

5.kafka入门_架构相关名词

Kafka 入门 _ 架构相关名词
事件 记录了世界或您的业务中 发生了某事 的事实。在文档中
也称为记录或消息。当您向 Kafka 读取或写入数据时,您以事件的
形式执行此操作。从概念上讲,事件具有键、值、时间戳和可选的
元数据标头。这是一个示例事件:
事件键: 白富美
事件的值: 向土豪 支付了 520
事件时间戳: “yyyy 05 20 13:14”
生产者 是那些向 Kafka 发布(写入)事件的客户端应用程序。
消费者 是订阅(读取和处理)这些事件的那些客户端应用程
序。在 Kafka 中,生产者和消费者完全解耦并且彼此不可知,这是
实现 Kafka 众所周知的高可扩展性的关键设计元素。例如,生产者
永远不需要等待消费者。 Kafka 提供了各种 保证 ,例如一次性处理
事件的能力。
主题 :事件被组织并持久地存储在 主题 中。 Kafka 中的主题始
终是多生产者和多订阅者:一个主题可以 N(N>=0) 个向其写入事件
的生产者,以及订阅这些事件的 N(N>=0) 个消费者。主题中的事件
可以根据需要随时读取 —— 与传统的消息传递系统不同,事件在消
费后不会被删除。相反,您可以通过每个主题的配置设置来定义
Kafka 应该将您的事件保留多长时间,之后旧事件将被丢弃。 Kafka
的性能在数据大小方面实际上是恒定的,因此长时间存储数据是非
常好的

6.kafka入门_基础架构

7.kafka入门_下载安装一

8.kafka入门_下载安装二

9.kafka入门_集群启停脚本

Kafka 入门 _ 集群启停脚本
[root@node2 opt] # vim /etc/profile
# kafka 的环境变量
export KAFKA_HOME = /opt/kafka
export PATH = $PATH : $KAFKA_HOME /bin
[root@node2 opt] # source /etc/profile
[root@node2 ~] # kafka-topics.sh --version
3 .0.1 (Commit:8e30984f43e64d8b)
kafka-server-start.sh -daemon
/opt/kafka/config/server.properties
[root@node2 opt] # jps
3248 QuorumPeerMain
3761 Jps
3736 Kafka
kafka-server-stop.sh
[root@node2 opt] # cd /root/
11 [root@node2 ~] # mkdir bin/
[root@node2 ~] # cd bin/
[root@node2 bin] # vim kafka.sh
#!/bin/bash
if [ $# -lt 1 ]
then
echo "Please input arg:[start/stop]"
exit
fi
case $1 in
start )
for i in node2 node3 node4
do
   
echo "--------start $i 's kafka--------"
   
ssh $i /opt/kafka/bin/kafka-server-start.sh
-daemon /opt/kafka/config/server.properties
done
;;
stop )
for i in node2 node3 node4
do
   
echo "--------stop $i 's kafka--------"
   
ssh $i /opt/kafka/bin/kafka-server-stop.sh
done
;;
*)
echo "Arg Error Please input arg:
[start/stop]"
exit
;;  
esac

参数 描述

--bootstrap-server
node3:9092
连接的 Kafka Broker 主机名称和端口号
--topic
<String: topic> 比如: topicA
操作的 topic 名称
--list
查看所有主题
--create
创建主题
--delete
删除主题
--alter
修改主题
--describe
查看主题详细描述
--partitions
<Integer: # of partitions>
设置分区数
--replication-factor
<Integer: replication factor>
设置分区副本
--config
<String: name=value>
更新系统默认的配置
--version
查看当前系统 kafka 的版本
添加可执行权限: [root@node2 bin]# chmod +x kafka.sh
启动测试: kafka.sh start 注意:提前启动 zk 集群。
关闭测试: kafka.sh stop

10.kafka入门_Topic命令行操作

11.kafka入门_消息发送和接收

章节二.生产者

12.生产者_发送数据原理剖析一

13.生产者_发送数据原理剖析二

14.生产者_同步发送数据一

15.生产者_同步发送数据二

node2 上开启 Kafka 消费者进行消费
7
运行 SyncCustomProducer
     
prop . put ( ProducerConfig . KEY_SERIALIZER_CL
ASS_CONFIG ,
StringSerializer . class . getName ());
     
prop . put ( ProducerConfig . VALUE_SERIALIZER_
CLASS_CONFIG ,
StringSerializer . class . getName ());
       
//TODO 3. 声明并实例化生产者对象
       
KafkaProducer < String , String >
producer =
           
new KafkaProducer < String ,
String > ( prop );
       
//TODO 4. 发送消息
       
for ( int i = 0 ; i < 5 ; i ++ ){
           
// 同步发送消息
           
producer . send ( new
ProducerRecord <>
( "topicA" , "sync_msg" + i )). get ();
      }
       
//TODO 5. 关闭生产者
       
producer . close ();
  }
}
[root@node2 ~] # kafka-console-consumer.sh
--bootstrap-server node2:9092 --topic
topicA
22 8
观察 node2 Kafka 消费者消费消息的情况
生产者 _ 异步发送数据
代码实现
1
创建类 UnSyncCustomProducer
2
编写代码
[root@node2 ~]# kafka-console-consumer.sh
--bootstrap-server node2:9092 --topic
topicA
sync_msg0
sync_msg1
sync_msg2
sync_msg3
sync_msg4

16.生产者_异步发送数据

17.生产者_异步回调发送数据

代码实现
1
创建类 UnSyncCallBackCustomProducer
2
编写代码
[root@node2 ~] # kafka-console-consumer.sh
--bootstrap-server node2:9092 --topic
topicA
unsync_msg0
unsync_msg1
unsync_msg2
unsync_msg3
unsync_msg4
package com . itbaizhan . kafka . producer ;
26 import
org . apache . kafka . clients . producer . * ;
import
org . apache . kafka . common . serialization . Stri
ngSerializer ;
import java . util . Properties ;
import
java . util . concurrent . ExecutionException ;
public class UnSyncCallBackCustomProducer
{
   
public static void main ( String [] args )
throws ExecutionException ,
InterruptedException {
       
//TODO 1. 声明并实例化 Kafka Producer
配置文件对象
       
Properties prop = new
Properties ();
       
//TODO 2. 为配置文件对象设置参数
       
// 2.1 配置 bootstrap_servers
     
prop . put ( ProducerConfig . BOOTSTRAP_SERVERS
_CONFIG , "node2:9092,node3:9092,node4:9092"
);
       
// 2.2 配置 key value 的序列化类
     
prop . put ( ProducerConfig . KEY_SERIALIZER_CL
ASS_CONFIG ,
StringSerializer . class . getName ());
27      
prop . put ( ProducerConfig . VALUE_SERIALIZER_
CLASS_CONFIG ,
StringSerializer . class . getName ());
       
//TODO 3. 声明并实例化生产者对象
       
KafkaProducer < String , String >
producer = new KafkaProducer < String ,
String > ( prop );
       
//TODO 4. 发送消息
       
for ( int i = 0 ; i < 5 ; i ++ ){
           
// 异步发送消息 不调用 get() 方法
           
producer . send ( new
ProducerRecord <> ( "topicA" , "unsync_msg" +
i ),
               
new Callback () {
                   
// 如下方法在生产者收到 acks
确认时异步调用
                   
@Override
                   
public void
onCompletion ( RecordMetadata
recordMetadata , Exception e ) {
                       
if ( e == null ){
                           
// 无异常信息,输
出主题和分区信息到控制台
                         
System . out . println ( "topic:" + recordMetadat
a . topic ()
                                 
+ ",partition:" + recordMetadata . partition ()
);
                      } else { // 打印异常信息
28 3
node2 上开启 Kafka 消费者进行消费
4
运行 UnSyncCallBackCustomProducer
5
观察 node2 Kafka 消费者消费消息的情况
6
控制台输出信息
                         
System . out . println ( e . getMessage ());
                      }
                  }
              });
           
Thread . sleep ( 5 );
      }
       
//TODO 5. 关闭生产者
       
producer . close ();
  }
}
[root@node2 ~] # kafka-console-consumer.sh
--bootstrap-server node2:9092 --topic
topicA
[root@node2 ~] # kafka-console-consumer.sh
--bootstrap-server node2:9092 --topic
topicA
unsync_msg0
unsync_msg1
unsync_msg2
unsync_msg3
unsync_msg4
29 生产者 _ 拦截器
拦截器 (Interceptor) kafka0.10.0.0 版本中引入的新功能,主
要用于实现 clients 端的定制化控制逻辑。它可以使得用户在消息发
送前以及 producer 回调逻辑前有机会对消息做一些定制化需求,比
如修改消息等。同时允许指定多个 Interceptor 按序作用于同一条消
息从而形成一个拦截器链( Interceptor Chain )。
自定义拦截器需要实现
org.apache.kafka.clients.producer.ProducerInterceptor 接口。
topic:topicA,partition:1
topic:topicA,partition:1
topic:topicA,partition:0
topic:topicA,partition:0
topic:topicA,partition:0

18.生产者_拦截器

19.生产者_拦截器二

20.生产者_消息序列化一

21.生产者_消息序列化二

添加依赖
  }
   
public void setName ( String name ) {
       
this . name = name ;
  }
   
public int getAge () {
       
return age ;
  }
   
public void setAge ( int age ) {
       
this . age = age ;
  }
   
public String getAddress () {
       
return address ;
  }
   
public void setAddress ( String address )
{
       
this . address = address ;
  }
}
39 3
编写自定义序列化类
<dependency>
<groupId> org.codehaus.jackson </groupId>
   
<artifactId> jackson-mapper
asl </artifactId>
   
<version> 1.9.13 </version>
</dependency>
package com . itbaizhan . kafka . producer ;
import
org . apache . kafka . common . serialization . Seri
alizer ;
import
org . codehaus . jackson . map . ObjectMapper ;
import java . io . IOException ;
import java . nio . charset . StandardCharsets ;
import java . util . Map ;
public class UserSerializer implements
Serializer < UserVo > {
   
private ObjectMapper objectMapper ;
   
@Override
   
public void configure ( Map < String , ?>
configs , boolean isKey ) {
       
objectMapper = new ObjectMapper ();
     
//Serializer.super.configure(configs,
isKey);
  }
40 4
编写生产者程序
   
@Override
   
public byte [] serialize ( String topic ,
UserVo data ) {
       
byte [] ret = null ;
       
try {
           
ret =
objectMapper . writeValueAsString ( data )
                 
. getBytes ( StandardCharsets . UTF_8 );
      } catch ( IOException e ) {
           
throw new
SerializationException ( "Error when
serializing UserVo to byte[],exception is
" + e . getMessage ());
      }
       
return ret ;
  }
   
@Override
   
public void close () {
       
objectMapper = null ;
       
//Serializer.super.close();
  }
}
package com . itbaizhan . kafka . producer ;
import
org . apache . kafka . clients . producer . * ;
41 import
org . apache . kafka . common . serialization . Stri
ngSerializer ;
import java . util . Properties ;
import
java . util . concurrent . ExecutionException ;
public class UserSerProducer {
   
public static void main ( String [] args )
throws ExecutionException ,
InterruptedException {
       
//TODO 1. 声明并实例化 Kafka Producer
配置文件对象
       
Properties prop = new
Properties ();
       
//TODO 2. 为配置文件对象设置参数
       
// 2.1 配置 bootstrap_servers
     
prop . put ( ProducerConfig . BOOTSTRAP_SERVERS
_CONFIG , "node2:9092,node3:9092,node4:9092"
);
       
// 2.2 配置 key value 的序列化类
     
prop . put ( ProducerConfig . KEY_SERIALIZER_CL
ASS_CONFIG ,
StringSerializer . class . getName ());
     
prop . put ( ProducerConfig . VALUE_SERIALIZER_
CLASS_CONFIG ,
UserSerializer . class . getName ());
42        
//TODO 3. 声明并实例化生产者对象 注意
value 的泛型类型
       
KafkaProducer < String , UserVo >
producer = new KafkaProducer < String ,
UserVo > ( prop );
       
//TODO 4. 发送消息
       
UserVo userVo = new
UserVo ( "tuhao" , 18 , " 北京 " );
       
producer . send ( new
ProducerRecord < String , UserVo > ( "topicA" ,
userVo ),
           
new Callback () {
               
// 如下方法在生产者收到 acks 确认
时异步调用
               
@Override
               
public void
onCompletion ( RecordMetadata
recordMetadata , Exception e ) {
                   
if ( e == null ){
                       
// 无异常信息,输出主题
和分区信息到控制台
                     
System . out . println ( "topic:" + recordMetadat
a . topic ()
                             
+ ",partition:" + recordMetadata . partition ()
);
                  } else { // 打印异常信息
                     
System . out . println ( e . getMessage ());
                  }
              }
43 5
node2 上开启 Kafka 消费者进行消费
6
运行 UserSerProducer
7
观察 node2 Kafka 消费者消费消息的情况
实时效果反馈
1. 关于 Kafka 生产者消息序列化的描述,正确的是:
A
默认提供了序列化类,如 BytesSerializer
IntegerSerializer StringSerializer 等。
B
自定义序列化类需要实现
org.apache.kafka.common.serialization.Serializer
C
生产者序列化机制使用起来比较简单,需要在构造 producer
对象之前指定参数 key.serializer value.serializer
          });
       
Thread . sleep ( 50 );
       
//TODO 5. 关闭生产者
       
producer . close ();
  }
}

22.生产者_分区的优势

23.生产者_分区策略

24.生产者_分区实战一

25.生产者_分区实战二

26.生产者_自定义分区机制一

27.生产者_自定义分区机制二

28.生产者_消息无丢失

29.生产者_数据去重

30.生产者_数据去重_幂等性

31.生产者_数据去重_事务原理分析

32.生产者_数据去重_事务代码实现

章节三.BROKER

33.BROKER_ZOOKEEPER存储信息

34.BROKER_工作流程

35.BROKER_服役新节点

36.BROKER_退役节点

37.BROKER_replica

章节四.消费者

38.消费者_消费方式

39.消费者_消费规则

40.消费者_独立消费主题实战

41.消费者_独立消费主题实战一

package com . itbaizhan . kafka . consumer ;
import
org . apache . kafka . clients . consumer . Consumer
Config ;
import
org . apache . kafka . clients . consumer . Consumer
Record ;
import
org . apache . kafka . clients . consumer . Consumer
Records ;
99 import
org . apache . kafka . clients . consumer . KafkaCon
sumer ;
import
org . apache . kafka . common . serialization . Stri
ngDeserializer ;
import java . time . Duration ;
import java . util . ArrayList ;
import java . util . Arrays ;
import java . util . Properties ;
// 创建一个独立消费者,消费 topicA 主题下的数据
public class CustomTopicConsumer {
   
public static void main ( String [] args )
{
       
//1. 创建消费者属性文件对象
       
Properties prop = new
Properties ();
       
//2. 为属性对象设置相关参数
       
// 设置 kafka 服务器
     
prop . put ( ConsumerConfig . BOOTSTRAP_SERVERS
_CONFIG , "node2:9092" );
       
// 设置 key value 的序列化类
     
prop . put ( ConsumerConfig . KEY_DESERIALIZER_
CLASS_CONFIG ,
             
StringDeserializer . class . getName ());
100      
prop . put ( ConsumerConfig . VALUE_DESERIALIZE
R_CLASS_CONFIG ,
             
StringDeserializer . class . getName ());
       
// 设置消费者的消费者组的名称
     
prop . put ( ConsumerConfig . GROUP_ID_CONFIG , "
testCg" );
       
//3. 创建消费者对象
       
KafkaConsumer < String , String >
kafkaConsumer =
               
new KafkaConsumer < String ,
String > ( prop );
       
//4. 注册要消费的主题
       
/*ArrayList<String> topics = new
ArrayList<>();
       
topics.add("topicA");
       
kafkaConsumer.subscribe(topics);*/
     
kafkaConsumer . subscribe ( Arrays . asList ( "to
picA" ));
       
//5. 拉取数据并打印输出
       
while ( true ){
           
//6. 设置 1s 消费一批数据
           
ConsumerRecords < String ,
String > consumerRecords =
                 
kafkaConsumer . poll ( Duration . ofSeconds ( 1 ))
;
           
//7. 打印输出消费到的数据
101 6
运行 CustomTopicConsumer
7
Kafka 集群控制台,创建 Kafka 生产者,并输入数据。
8
IDEA 控制台观察接收到的数据。
9
Ctrl+C 关闭生产者
10
消费者程序

42.消费者_独立消费主题实战二

43.消费者_消费者组概述

44.消费者_消费者组实战

45.消费者_offset剖析

46.消费者_offset自动提交

47.消费者_offset手动提交

48.消费者_offset手动提交实战

同步提交:
package com . itbaizhan . kafka . consumer ;
import
org . apache . kafka . clients . consumer . ConsumerConfi
g ;
import
org . apache . kafka . clients . consumer . ConsumerRecor
d ;
import
org . apache . kafka . clients . consumer . ConsumerRecor
ds ;
118 import
org . apache . kafka . clients . consumer . KafkaConsumer
;
import
org . apache . kafka . common . serialization . StringDes
erializer ;
import java . time . Duration ;
import java . util . Arrays ;
import java . util . Properties ;
public class ConsumerHandSyncCommit {
   
public static void main ( String [] args ) {
       
//1. 创建属性对象
       
Properties prop = new Properties ();
       
//2. 设置相关参数
     
prop . put ( ConsumerConfig . BOOTSTRAP_SERVERS_CONF
IG ,
             
"node2:9092,node3:9092,node4:9092" );
     
prop . put ( ConsumerConfig . KEY_DESERIALIZER_CLASS
_CONFIG ,
             
StringDeserializer . class . getName ());
     
prop . put ( ConsumerConfig . VALUE_DESERIALIZER_CLA
SS_CONFIG ,
             
StringDeserializer . class . getName ());
       
// 配置消费者组
119 异步提交:
     
prop . put ( ConsumerConfig . GROUP_ID_CONFIG , "cghan
dSyncCommit" );
       
// 设置为非自动提交
     
prop . put ( ConsumerConfig . ENABLE_AUTO_COMMIT_CON
FIG , false );
       
//3. 创建消费者对象
       
KafkaConsumer < String , String > consumer =
               
new KafkaConsumer < String ,
String > ( prop );
       
//4. 注册消费主题
     
consumer . subscribe ( Arrays . asList ( "topicA" ));
       
//5. 消费数据
       
while ( true ){
           
ConsumerRecords < String , String >
records =
                 
consumer . poll ( Duration . ofSeconds ( 1 ));
           
for ( ConsumerRecord record : records ){
             
System . out . println ( record . value ());
          }
           
//6. 同步提交 offset
           
consumer . commitSync ();
      }
  }
}
package com . itbaizhan . kafka . consumer ;
120 import
org . apache . kafka . clients . consumer . ConsumerConfi
g ;
import
org . apache . kafka . clients . consumer . ConsumerRecor
d ;
import
org . apache . kafka . clients . consumer . ConsumerRecor
ds ;
import
org . apache . kafka . clients . consumer . KafkaConsumer
;
import
org . apache . kafka . common . serialization . StringDes
erializer ;
import java . time . Duration ;
import java . util . Arrays ;
import java . util . Properties ;
public class ConsumerHandASyncCommit {
   
public static void main ( String [] args ) {
       
//1. 创建属性对象
       
Properties prop = new Properties ();
       
//2. 设置相关参数
     
prop . put ( ConsumerConfig . BOOTSTRAP_SERVERS_CONF
IG ,
             
"node2:9092,node3:9092,node4:9092" );
121      
prop . put ( ConsumerConfig . KEY_DESERIALIZER_CLASS
_CONFIG ,
             
StringDeserializer . class . getName ());
     
prop . put ( ConsumerConfig . VALUE_DESERIALIZER_CLA
SS_CONFIG ,
             
StringDeserializer . class . getName ());
       
// 配置消费者组
     
prop . put ( ConsumerConfig . GROUP_ID_CONFIG , "cghan
dAsyncCommit" );
       
// 设置为非自动提交
     
prop . put ( ConsumerConfig . ENABLE_AUTO_COMMIT_CON
FIG , false );
       
//3. 创建消费者对象
       
KafkaConsumer < String , String > consumer =
               
new KafkaConsumer < String ,
String > ( prop );
       
//4. 注册消费主题
     
consumer . subscribe ( Arrays . asList ( "topicA" ));
       
//5. 消费数据
       
while ( true ){
           
ConsumerRecords < String , String >
records =
                 
consumer . poll ( Duration . ofSeconds ( 1 ));
           
for ( ConsumerRecord record : records ){
122              
System . out . println ( record . value ());
          }
           
//6. 同步提交 offset
           
consumer . commitAsync ();
      }
  }
}

Spark分布式计算框架一

章节一.概述

1.课程介绍

2.概述_什么是Spark?

3.概述_Spark主要功能

4.概述_SPARK与hadoop

5.概述_spark技术栈

6.概述_PYSPARK VS SPARK

章节二.运行模式

7.运行模式_概述

8.运行模式_WORDCOUNT一

9.运行模式_WORDCOUNT二

10.运行模式_local模式安装

11.运行模式_local模式webui

12.运行模式_Spark目录介绍

13.运行模式_spark源码解析

14.运行模式_spark-submit

15.运行模式_standalone架构分析

16.运行模式_standalone模式安装一

17.运行模式_standalone模式安装二

18.运行模式_standalone启动测试

19.运行模式_standalone执行任务

20.运行模式_查看历史日志webui

21.运行模式_standaloneHA安装

22.运行模式_standalone测试

23.运行模式_YARN模式概述

​​​​​​​

24.运行模式_YARN模式安装

25.运行模式_yarn client

26.运行模式_yarn cluster

27.运行模式_spark submit参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2286482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL Server查询计划操作符(7.3)——查询计划相关操作符(5)

7.3. 查询计划相关操作符 38)Flow Distinct:该操作符扫描其输入并对其去重。该操作符从其输入得到每行数据时即将其返回(除非其为重复数据行,此时,该数据行会被抛弃),而Distinct操作符在产生任何输出前将消费所有输入。该操作符为逻辑操作符。该操作符具体如图7.2-38中…

单片机基础模块学习——NE555芯片

一、NE555电路图 NE555也称555定时器,本文主要利用NE555产生方波发生电路。整个电路相当于频率可调的方波发生器。 通过调整电位器的阻值,方波的频率也随之改变。 RB3在开发板的位置如下图 测量方波信号的引脚为SIGHAL,由上面的电路图可知,NE555已经构成完整的方波发生电…

ts 进阶

吴悠讲编程 : 20分钟TypeScript进阶&#xff01;无废话快速提升水平 前端速看 https://www.bilibili.com/video/BV1q64y1j7aH

【C++】STL介绍 + string类使用介绍 + 模拟实现string类

目录 前言 一、STL简介 二、string类 1.为什么学习string类 2.标准库中的string类 3.auto和范围for 4.迭代器 5.string类的常用接口说明 三、模拟实现 string类 前言 本文带大家入坑STL&#xff0c;学习第一个容器string。 一、STL简介 在学习C数据结构和算法前&#xff0c;我…

【Redis】List 类型的介绍和常用命令

1. 介绍 Redis 中的 list 相当于顺序表&#xff0c;并且内部更接近于“双端队列”&#xff0c;所以也支持头插和尾插的操作&#xff0c;可以当做队列或者栈来使用&#xff0c;同时也存在下标的概念&#xff0c;不过和 Java 中的下标不同&#xff0c;Redis 支持负数下标&#x…

【愚公系列】《循序渐进Vue.js 3.x前端开发实践》033-响应式编程的原理及在Vue中的应用

标题详情作者简介愚公搬代码头衔华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xff0c;阿里云签约作者&#xff0c;腾讯云优秀博主&…

PETSc源码分析: Optimization Solvers

本文结合PETSc源代码&#xff0c;分析PETSc中的优化求解器。 注1&#xff1a;限于研究水平&#xff0c;分析难免不当&#xff0c;欢迎批评指正。 注2&#xff1a;文章内容会不定期更新。 参考文献 Balay S. PETSc/TAO Users Manual, Revision 3.22. Argonne National Labora…

面向对象设计(大三上)--往年试卷题+答案

目录 1. UML以及相关概念 1.1 动态图&静态图 1.2 交互图 1.3 序列图 1.4 类图以及关联关系 1.4.1类图 1.4.2 关系类型 (1) 用例图中的包含、扩展关系(include & extend) (2) 类图中的聚合、组合关系(aggragation & composition) 1.5 图对象以及职责划…

芯片AI深度实战:进阶篇之vim内verilog实时自定义检视

本文基于Editor Integration | ast-grep&#xff0c;以及coc.nvim&#xff0c;并基于以下verilog parser(my-language.so&#xff0c;文末下载链接), 可以在vim中实时显示自定义的verilog 匹配。效果图如下&#xff1a; 需要的配置如下&#xff1a; 系列文章&#xff1a; 芯片…

几种K8s运维管理平台对比说明

目录 深入体验**结论**对比分析表格**1. 功能对比****2. 用户界面****3. 多租户支持****4. DevOps支持** 细对比分析1. **Kuboard**2. **xkube**3. **KubeSphere**4. **Dashboard****对比总结** 深入体验 KuboardxkubeKubeSphereDashboard 结论 如果您需要一个功能全面且适合…

TikTok 推出了一款 IDE,用于快速构建 AI 应用

字节跳动(TikTok 的母公司)刚刚推出了一款名为 Trae 的新集成开发环境(IDE)。 Trae 基于 Visual Studio Code(VS Code)构建,继承了这个熟悉的平台,并加入了 AI 工具,帮助开发者更快、更轻松地构建应用——有时甚至无需编写任何代码。 如果你之前使用过 Cursor AI,T…

【MySQL — 数据库增删改查操作】深入解析MySQL的 Retrieve 检索操作

Retrieve 检索 示例 1. 构造数据 创建表结构 create table exam1(id bigint, name varchar(20) comment同学姓名, Chinesedecimal(3,1) comment 语文成绩, Math decimal(3,1) comment 数学成绩, English decimal(3,1) comment 英语成绩 ); 插入测试数据 insert into ex…

强大到工业层面的软件

电脑数据删不干净&#xff0c;简直是一种让人抓狂的折磨&#xff01;明明已经把文件扔进了回收站&#xff0c;清空了&#xff0c;可那些残留的数据就像牛皮癣一样&#xff0c;怎么也除不掉。这种烦恼简直无处不在&#xff0c;让人从头到脚都感到无比烦躁。 首先&#xff0c;心…

全面解析文件包含漏洞:原理、危害与防护

目录 前言 漏洞介绍 漏洞原理 产生条件 攻击方式 造成的影响 经典漏洞介绍 防御措施 结语 前言 在当今复杂的网络安全环境中&#xff0c;文件包含漏洞就像潜藏在暗处的危险陷阱&#xff0c;随时可能对防护薄弱的 Web 应用发起致命攻击。随着互联网的迅猛发展&#xff…

基于Django的Boss直聘IT岗位可视化分析系统的设计与实现

【Django】基于Django的Boss直聘IT岗位可视化分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统采用Python作为主要开发语言&#xff0c;利用Django这一高效、安全的W…

【Rust自学】14.6. 安装二进制crate

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 14.6.1. 从cratea.io安装二进制crate 通过cargo_install命令可以从crates.io安装二进制crate。 这并不是为了替换系统包&#xff0c;它应…

【Redis】hash 类型的介绍和常用命令

1. 介绍 Redis 中存储的 key-value 本身就是哈希表的结构&#xff0c;存储的 value 也可以是一个哈希表的结构 这里每一个 key 对应的一个 哈希类型用 field-value 来表示 2. 常用命令 命令 介绍 时间复杂度 hset key field value 用于设置哈希表 key 中字段 field 的值为…

低代码产品表单渲染架构

在React和Vue没有流行起来的时候&#xff0c;低代码产品的表单渲染设计通常会使用操作Dom的方式实现。 下面是一个表单的例子&#xff1a; 产品层 用户通过打开表单&#xff0c;使用不同业务场景业务下的表单页面&#xff0c;中间的Render层就是技术实现。 每一个不同业务的表单…

多线程-线程池的使用

1. 线程池 1.1 线程状态介绍 当线程被创建并启动以后&#xff0c;它既不是一启动就进入了执行状态&#xff0c;也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么 Java 中的线程存在哪几种状态呢&#xff1f;Java 中的线程 状态被定义在了 java.lang.Thread.…

计算机网络 IP 网络层 2 (重置版)

IP的简介&#xff1a; IP 地址是互联网协议地址&#xff08;Internet Protocol Address&#xff09;的简称&#xff0c;是分配给连接到互联网的设备的唯一标识符&#xff0c;用于在网络中定位和通信。 IP编制的历史阶段&#xff1a; 1&#xff0c;分类的IP地址&#xff1a; …