当前位置: 首页 > news >正文

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

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参数

相关文章:

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

Kafka消息队列 章节一.kafka入门 4.kafka入门_消息队列两种模式 5.kafka入门_架构相关名词 Kafka 入门 _ 架构相关名词 事件 记录了世界或您的业务中 “ 发生了某事 ” 的事实。在文档中 也称为记录或消息。当您向 Kafka 读取或写入数据时&#xff0c;您以事件的 形式执行…...

Linux《基础指令》

在之前的Linux《Linux简介与环境的搭建》当中我们已经初步了解了Linux的由来和如何搭建Linux环境&#xff0c;那么接下来在本篇当中我们就要来学习Linux的基础指令。在此我们的学习是包括两个部分&#xff0c;即指令和关于Linux的基础知识&#xff1b;因此本篇指令和基础知识的…...

Avalonia+ReactiveUI跨平台路由:打造丝滑UI交互的奇幻冒险

一、引言 在当今数字化时代&#xff0c;跨平台应用开发已成为大势所趋。开发者们迫切需要一种高效、灵活的方式&#xff0c;能够让应用程序在不同操作系统上无缝运行&#xff0c;为用户提供一致的体验。Avalonia 和 ReactiveUI 的组合&#xff0c;宛如一对天作之合的舞者&…...

Ansible自动化运维实战--通过role远程部署nginx并配置(8/8)

文章目录 1、准备工作2、创建角色结构3、编写任务4、准备配置文件&#xff08;金甲模板&#xff09;5、编写变量6、编写处理程序7、编写剧本8、执行剧本Playbook9、验证-游览器访问每台主机的nginx页面 在 Ansible 中&#xff0c;使用角色&#xff08;Role&#xff09;来远程部…...

H264原始码流格式分析

1.H264码流结构组成 H.264裸码流&#xff08;Raw Bitstream&#xff09;数据主要由一系列的NALU&#xff08;网络抽象层单元&#xff09;组成。每个NALU包含一个NAL头和一个RBSP&#xff08;原始字节序列载荷&#xff09;。 1.1 H.264码流层次 H.264码流的结构可以分为两个层…...

批量解密,再也没有任何限制了

有的时候我们在网上下载了PDF文档。发现没有办法进行任何的操作&#xff0c;就连打印权限都没有。今天给大家介绍的这个软件可以一键帮你进行PDF解密&#xff0c;非常方便&#xff0c;完全免费。 PDF智能助手 批量解密PDF文件 这个软件不是很大&#xff0c;只有10MB&#xff…...

认识小程序的基本组成结构

1.基本组成结构 2.页面的组成部分 3.json配置文件 4.app.json文件(全局配置文件&#xff09; 5.project.config.json文件 6.sitemap.json文件 7.页面的.json配置文件 通过window节点可以控制小程序的外观...

模型I/O

文章目录 什么是模型I/O模型I/O功能之输出解析器输出解析器的功能输出解析器的使用Pydantic JSON输出解析器结构化输出解析器 什么是模型I/O 模型I/O在所有LLM应用中&#xff0c;核心元素无疑都是模型本身。与模型进行有效的交互是实现高效、灵活和可扩展应用的关键。LangChain…...

DeepSeek模型:开启人工智能的新篇章

DeepSeek模型&#xff1a;开启人工智能的新篇章 在当今快速发展的技术浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;已经成为了推动社会进步和创新的核心力量之一。而DeepSeek模型&#xff0c;作为AI领域的一颗璀璨明珠&#xff0c;正以其强大的功能和灵活的用法&…...

git push到远程仓库时无法推送大文件

一、错误 remote: Error: Deny by project hooks setting ‘default’: size of the file ‘scientific_calculator’, is 164 MiB, which has exceeded the limited size (100 MiB) in commit ‘4c91b7e3a04b8034892414d649860bf12416b614’. 二、原因 本地提交过大文件&am…...

初识ExecutorService

设计目的 ExecutorService是Java并发包(java.util.concurrent)的一部分&#xff0c;旨在提供一种更高层次的抽象来管理线程和任务执行。它解决了手动创建和管理线程带来的复杂性和资源浪费问题&#xff0c;通过复用固定数量的线程池来处理大量短生命周期的任务&#xff0c;从而…...

初二回娘家

昨天下午在相亲相爱一家人群里聊天&#xff0c;今天来娘家拜年。 聊天结束后&#xff0c;开始准备今天的菜肴&#xff0c;梳理了一下&#xff0c;凉菜&#xff0c;热菜&#xff0c;碗菜。 上次做菜&#xff0c;粉丝感觉泡的不透&#xff0c;有的硬&#xff0c;这次使用开水浸泡…...

js基础(黑马程序员)

Web APIs&#xff08;day6&#xff09; 一、正则表达式 1.介绍 正则表达式&#xff08;Regular Expression&#xff09;&#xff1a;是用于匹配字符串中字符组合的模式。在 JavaScript中&#xff0c;正则表达式也是对象 通常用来查找、替换那些符合正则表达式的文本&#x…...

Java---猜数字游戏

本篇文章所实现的是Java经典的猜数字游戏 , 运用简单代码来实现基本功能 目录 一.题目要求 二.游戏准备 三.代码实现 一.题目要求 随机生成一个1-100之间的整数(可以自己设置区间&#xff09;&#xff0c;提示用户猜测&#xff0c;猜大提示"猜大了"&#xff0c;…...

Oracle Primavera P6 最新版 v24.12 更新 2/2

目录 一. 引言 二. P6 EPPM 更新内容 1. 用户管理改进 2. 更轻松地标准化用户设置 3. 摘要栏标签汇总数据字段 4. 将里程碑和剩余最早开始日期拖到甘特图上 5. 轻松访问审计数据 6. 粘贴数据时排除安全代码 7. 改进了状态更新卡片视图中的筛选功能 8. 直接从活动电子…...

【React】 react路由

这一篇文章的重点在于将React关于路由的问题都给搞清楚。 一个路由就是一个映射关系&#xff0c;key:value。key是路径&#xff0c;value 可能是function或者component。 安装react-router-dom包使用路由服务&#xff0c;我这里想要用的是6版本的包&#xff0c;因此后面加”6&q…...

Linux的常用指令的用法

目录 Linux下基本指令 whoami ls指令&#xff1a; 文件&#xff1a; touch clear pwd cd mkdir rmdir指令 && rm 指令 man指令 cp mv cat more less head tail 管道和重定向 1. 重定向&#xff08;Redirection&#xff09; 2. 管道&#xff08;Pipes&a…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.18 逻辑运算引擎:数组条件判断的智能法则

1.18 逻辑运算引擎&#xff1a;数组条件判断的智能法则 1.18.1 目录 #mermaid-svg-QAFjJvNdJ5P4IVbV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QAFjJvNdJ5P4IVbV .error-icon{fill:#552222;}#mermaid-svg-QAF…...

C语言实现库函数strlen

size_t是 unsigned int fgets会读入\n&#xff0c;用strcspn函数除去 assert判读指针是否为空指针&#xff0c;使用前要引头文件<assert.h> #include <stdio.h> #include <assert.h> size_t mystrlen(const char* str) {assert(str);size_t count 0;while …...

18 大量数据的异步查询方案

在分布式的应用中分库分表大家都已经熟知了。如果我们的程序中需要做一个模糊查询&#xff0c;那就涉及到跨库搜索的情况&#xff0c;这个时候需要看中间件能不能支持跨库求交集的功能。比如mycat就不支持跨库查询&#xff0c;当然现在mycat也渐渐被摒弃了(没有处理笛卡尔交集的…...

FastExcel使用详解

文章目录 FastExcel使用详解一、引言二、环境准备与依赖引入1、Maven 依赖引入2、实体类定义 三、核心操作&#xff1a;读写 Excel1、读取 Excel1.1 自定义监听器1.2 读取文件 2、写入 Excel2.1 简单写入2.2 模板写入 四、Spring Boot 集成示例1、文件上传&#xff08;导入&…...

深度学习python基础(第四节) 元组、字符串、集合和字典

本节主要介绍元组,字符串,集合,字典的基本语法定义,以及相关的操作. 元组的定义和操作 元组一旦定义完成就不可修改. """ # 定义元组字面量 (元素&#xff0c;元素&#xff0c;....,元素) # 元素可以不同的数据类型# 定义元组变量 变量名称 (元素&#xff0c;…...

QT串口通信,实现单个温湿度传感器数据的采集

1、硬件设备 RS485中继器(一进二出),usb转485模块、电源等等 => 累计115元左右。 2、核心代码 #include "MainWindow.h" #include "ui_MainWindow.h"MainWindow::...

绘制决策树尝试3

目录 代码解读AI 随机状态 种子 定义决策树回归模型 tree的decision regressor fit 还可用来预测 export 效果图 我的X只有一个特征 为何这么多分支 &#xff1f;&#xff1f;&#xff1f; 这是CART回归 CART回归 为什么说代码是CART回归&#xff1f; 不是所有的决…...

【逻辑学导论第15版】A. 推理

识别下列语段中的前提与结论。有些前提确实支持结论&#xff0c;有些并不支持。请注意&#xff0c;前提可能直接或间接地支持结论&#xff0c;而简单的语段也可能包含不止一个论证。 例题&#xff1a; 1.管理得当的民兵组织对于一个自由国家的安全是必需的&#xff0c;因而人民…...

qt-C++笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别

qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别 code review! 参考笔记 1.qt-C笔记之重写QGraphicsItem的paint方法(自定义QGraphicsItem) 文章目录 qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphic…...

[Java]泛型(二)泛型方法

1.定义 在 Java 中&#xff0c;泛型方法是指在方法声明中使用泛型类型参数的一种方法。它使得方法能够处理不同类型的对象&#xff0c;而不需要为每种类型写多个方法&#xff0c;从而提高代码的重用性。 泛型方法与泛型类不同&#xff0c;泛型方法的类型参数仅仅存在于方法的…...

ProfibusDP主机与从机交互

ProfibusDP 主机SD2索要数据下发&#xff1a;68 08 F7 68 01 02 03 21 05 06 07 08 1C 1668&#xff1a;SD2 08&#xff1a;LE F7&#xff1a;LEr 68&#xff1a;SD2 01:目的地址 02&#xff1a;源地址 03:FC_CYCLIC_DATA_EXCHANGE功能码 21&#xff1a;数据地址 05,06,07,08&a…...

jQuery小游戏(二)

jQuery小游戏&#xff08;二&#xff09; 今天是新年的第二天&#xff0c;本人在这里祝大家&#xff0c;新年快乐&#xff0c;万事胜意&#x1f495; 紧接jQuery小游戏&#xff08;一&#xff09;的内容&#xff0c;我们开始继续往下咯&#x1f61c; 游戏中使用到的方法 key…...

【MQ】如何保证消息队列的高可用?

RocketMQ NameServer集群部署 Broker做了集群部署 主从模式 类型&#xff1a;同步复制、异步复制 主节点返回消息给客户端的时候是否需要同步从节点 Dledger&#xff1a;要求至少消息复制到半数以上的节点之后&#xff0c;才给客户端返回写入成功 slave定时从master同步数据…...

简易计算器(c++ 实现)

前言 本文将用 c 实现一个终端计算器&#xff1a; 能进行加减乘除、取余乘方运算读取命令行输入&#xff0c;输出计算结果当输入表达式存在语法错误时&#xff0c;报告错误&#xff0c;但程序应能继续运行当输出 ‘q’ 时&#xff0c;退出计算器 【简单演示】 【源码位置】…...

AI大模型开发原理篇-4:神经概率语言模型NPLM

神经概率语言模型&#xff08;NPLM&#xff09;概述 神经概率语言模型&#xff08;Neural Probabilistic Language Model, NPLM&#xff09; 是一种基于神经网络的语言建模方法&#xff0c;它将传统的语言模型和神经网络结合在一起&#xff0c;能够更好地捕捉语言中的复杂规律…...

SpringBoot 基础特性

SpringBoot 基础特性 SpringApplication 相关特性 自定义 banner 在主配置文件写 banner.txt 的地址 #也可以不写默认路径就是 banner.txt #从类路径下找 banner #类路径就是 编译的target 目录 还有导入的第三方类路径。 spring.banner.locationclasspath:banner.txt#控制…...

网站快速收录:提高页面加载速度的重要性

本文转自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/32.html 网站快速收录中&#xff0c;提高页面加载速度具有极其重要的意义。以下从多个方面详细阐述其重要性&#xff1a; 一、提升用户体验 减少用户等待时间&#xff1a;页面加载速度直接…...

如何使用formlinker,重构微软表单创建的数字生产力法则?

仅需三步&#xff1a;上传文件-下载文件-导入文件到微软表单 凌晨两点的格式炼狱&#xff1a;被浪费的300万小时人类创造力 剑桥大学的实验室曾捕捉到一组震撼数据&#xff1a;全球教育工作者每年花在调整试题格式上的时间&#xff0c;足够建造3座迪拜哈利法塔。当北京某高校的…...

从零搭建一个Vue3 + Typescript的脚手架——day3

3.项目拓展配置 (1).配置Pinia Pinia简介 Pinia 是 Vue.js 3 的状态管理库&#xff0c;它是一个轻量级、灵活、易于使用的状态管理库。Pinia 是 Vue.js 3 的官方状态管理库&#xff0c;它可以帮助开发者更好地管理应用的状态。Pinia 是一个开源项目&#xff0c;它有丰富的文档…...

Three.js实战项目02:vue3+three.js实现汽车展厅项目

文章目录 实战项目02项目预览项目创建初始化项目模型加载与展厅灯光加载汽车模型设置灯光材质设置完整项目下载实战项目02 项目预览 完整项目效果: 项目创建 创建项目: pnpm create vue安装包: pnpm add three@0.153.0 pnpm add gsap初始化项目 修改App.js代码&#x…...

Linux——网络(tcp)

文章目录 目录 文章目录 前言 一、TCP逻辑 1. 面向连接 三次握手&#xff08;建立连接&#xff09; 四次挥手&#xff08;关闭连接&#xff09; 2. 可靠性 3. 流量控制 4. 拥塞控制 5. 基于字节流 6. 全双工通信 7. 状态机 8. TCP头部结构 9. TCP的应用场景 二、编写tcp代码函数…...

Ubuntu Server 安装 XFCE4桌面

Ubuntu Server没有桌面环境&#xff0c;一些软件有桌面环境使用起来才更加方便&#xff0c;所以我尝试安装桌面环境。常用的桌面环境有&#xff1a;GNOME、KDE Plasma、XFCE4等。这里我选择安装XFCE4桌面环境&#xff0c;主要因为它是一个极轻量级的桌面环境&#xff0c;适合内…...

分享|通过Self-Instruct框架将语言模型与自生成指令对齐

结论 在大型 “指令调整” 语言模型依赖的人类编写指令数据存在数量、多样性和创造性局限&#xff0c; 从而阻碍模型通用性的背景下&#xff0c; Self - Instruct 框架&#xff0c; 通过 自动生成 并 筛选指令数据 微调预训练语言模型&#xff0c; 有效提升了其指令遵循能…...

指针空值——nullptr(C++11)——提升指针安全性的利器

C11引入的nullptr是对指针空值的正式支持&#xff0c;它提供了比传统NULL指针更加安全和明确的指针空值表示方式。在C语言中&#xff0c;指针操作是非常基础且常见的&#xff0c;而如何安全地处理指针空值&#xff0c;一直是开发者关注的重要问题。本文将详细讲解nullptr的引入…...

C++游戏开发

C 是游戏开发中广泛使用的编程语言&#xff0c;因其高性能、灵活性和对硬件的直接控制能力而备受青睐。以下是 C 游戏开发的一些关键点&#xff1a; 1. 游戏引擎 Unreal Engine&#xff1a;使用 C 作为主要编程语言&#xff0c;适合开发高质量 3D 游戏。Unity&#xff1a;虽然…...

【Docker】ubuntu中 Docker的使用

之前记录了 docker的安装 【环境配置】ubuntu中 Docker的安装&#xff1b; 本篇博客记录Dockerfile的示例&#xff0c;docker 的使用&#xff0c;包括镜像的构建、容器的启动、docker compose的使用等。   当安装好后&#xff0c;可查看docker的基本信息 docker info ## 查…...

Linux C openssl aes-128-cbc demo

openssl 各版本下载 https://openssl-library.org/source/old/index.html#include <stdio.h> #include <string.h> #include <openssl/aes.h> #include <openssl/rand.h> #include <openssl/evp.h>#define AES_KEY_BITS 128 #define GCM_IV_SIZ…...

【卫星通信】链路预算方法

本文介绍卫星通信中的链路预算方法&#xff0c;应该也适用于地面通信场景。 更多内容请关注gzh【通信Online】 文章目录 下行链路预算卫星侧参数信道参数用户侧参数 上行链路预算链路预算计算示例 下行链路预算 卫星侧参数 令卫星侧天线数为 M t M_t Mt​&#xff0c;每根天线…...

【Elasticsearch】 索引模板 ignore_missing_component_templates

解释 ignore_missing_component_templates 配置 在Elasticsearch中&#xff0c;ignore_missing_component_templates 是一个配置选项&#xff0c;用于处理索引模板中引用的组件模板可能不存在的情况。当您创建一个索引模板时&#xff0c;可以指定一个或多个组件模板&#xff0…...

Github 2025-01-30 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2025-01-30统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Ollama: 本地大型语言模型设置与运行 创建周期:248 天开发语言:Go协议类型:MIT LicenseStar数量:42421 个Fork数量:2724 次关注人…...

Linux 下注册分析(4)

系列文章目录 Linux 设备树 Linux 下注册分析&#xff08;1&#xff09; Linux 下注册分析&#xff08;2&#xff09; Linux 下注册分析&#xff08;3&#xff09; Linux 下注册分析&#xff08;4&#xff09; 文章目录 系列文章目录1、device_create简介device_createdevice_c…...

PhotoShop中JSX编辑器安装

1.使用ExtendScript Tookit CC编辑 1.安装 打开CEP Resource链接&#xff1a; CEP-Resources/ExtendScript-Toolkit at master Adobe-CEP/CEP-Resources (github.com) 将文件clone到本地或者下载到本地 点击AdobeExtendScriptToolKit_4_Ls22.exe安装&#xff0c;根据弹出的…...

目前市场主流的AI PC对于大模型本地部署的支持情况分析-Deepseek

以下是目前市场主流AI PC对**大模型本地部署支持情况**的综合分析&#xff0c;结合硬件能力、软件生态及厂商动态进行总结&#xff1a; --- ### **一、硬件配置与算力支持** 1. **核心处理器架构** - **异构计算方案&#xff08;CPUGPUNPU&#xff09;**&#xff1a;主流…...