Flink on K8S集群搭建及StreamPark平台安装
1.环境准备
1.1 介绍
在使用 Flink&Spark 时发现从编程模型, 启动配置到运维管理都有很多可以抽象共用的地方, 目前streampark提供了一个flink一站式的流处理作业开发管理平台, 从流处理作业开发到上线全生命周期都做了支持, 是一个一站式的流出来计算平台。
未来spark开发也在规划范围内,目前还不支持
1.2 下载
StreamPark安装包下载:https://streampark.apache.org/download
StreamPark官网:https://streampark.apache.org/docs/intro
最新版为2.1.2,本次安装为2.1.2版本
1.3 已有组件及版本
| 序号 | 名称 | 配置 |
|---|---|---|
| 1 | K8S(TEK) | CPU:316,Me:361.57G,Storage:349.1G,Pods:3253,IP:3*273 (v1.26.1) |
| 2 | NFS(CFS) | 40G磁盘(目前,可扩充) |
| 3 | Harbor(容器仓库) | 未知 |
| 4 | flink | flink-(1.13.0/1.14.4/1.16.2) |
| 5 | StreamPark | 2.1.2 |
| 6 | Mysql | 5.7 |
2.挂载与权限
2.1 k8s挂载
找运维开通权限,主要是kubectl的权限
下载kubectl
权限文件:/root/.kube/config
2.2 nfs挂载
找运维要服务ip
#挂载前,请确保系统中已经安装了nfs-utils或nfs-common
sudo yum install nfs-utils
#创建待挂载目标目录
mkdir <待挂载目标目录> mkdir /localfolder/
#挂载文件系统
#挂载 CFS 根目录
#以下命令可以到 CFS 控制台-文件系统详情-挂载点详情中获取,由于部分旧版本文件系统不支持 noresvport 参数,具体挂载命令请以控制台建议命令为主。配置 norevsport 参数后,在网络重连时使用新的 TCP 端口,可以保障在网络异常到恢复期间、客户端和文件系统的连接不会中断,建议启用该参数。
#另,部分旧版本 Linux 内核需要使用 vers=4 挂载,若使用 vers=4.0 挂载有异常,可以尝试修改为 vers=4。
sudo mount -t nfs -o vers=4.0,noresvport <挂载点 IP>:/ <待挂载目录>
sudo mount -t nfs -o vers=4.0,noresvport 10.0.24.4:/ /localfolder
#挂载 CFS 子目录
#以下命令可以到 CFS 控制台-文件系统详情-挂载点详情中获取,由于部分旧版本文件系统不支持 noresvport 参数,具体挂载命令请以控制台建议命令为主。配置 norevsport 参数后,在网络重连时使用新的 TCP 端口,可以保障在网络异常到恢复期间、客户端和文件系统的连接不会中断,建议启用该参数。
#另,部分旧版本 Linux 内核需要使用 vers=4 挂载,若使用 vers=4.0 挂载有异常,可以尝试修改为 vers=4。
sudo mount -t nfs -o vers=4.0,noresvport 10.0.24.4:/subfolder /localfolder
腾讯nfs(CFS)使用文档:https://cloud.tencent.com/document/product/582/11523
2.3 Harbor
需要找运维开通权限
此处注意:项目库要公开才可以使用
3.测试Flink
在k8s为flink单独开通命名空间,并创建相应账户
kubectl create clusterrolebinding flink-role-bind --clusterrole=edit --serviceaccount=flink:flink
在有k8s操作权限的节点运行flink-session
bin/flink run \
-e kubernetes-session \
-Dkubernetes.namespace=flink \
-Dkubernetes.rest-service.exposed.type=NodePort \
-Dkubernetes.cluster-id=flink-cluster \
-c WordCount1 \
/data/package/jar/flink_test-1.0-SNAPSHOT.jar#参考配置
bin/kubernetes-session.sh \
-Dkubernetes.namespace=flink \
-Dkubernetes.jobmanager.service-account=flink \
-Dkubernetes.rest-service.exposed.type=NodePort \
-Dkubernetes.cluster-id=flink-cluster \
-Dkubernetes.jobmanager.cpu=0.2 \
-Djobmanager.memory.process.size=1024m \
-Dresourcemanager.taskmanager-timeout=3600000 \
-Dkubernetes.taskmanager.cpu=0.2 \
-Dtaskmanager.memory.process.size=1024m \
-Dtaskmanager.numberOfTaskSlots=1
4.安装StreamPark
4.1 streampark(k8s)镜像打包
#编译
./build #注意maven 镜像配置,要不找不到依赖包同时要安装npm
#测试npm是否安装
npm -v#streampark安装包添加mysql连接包
cp /data/module/streampart_2.12-2.1.2/lib/mysql-connector-java-8.0.30.jar lib/
#配置maven配置拷贝
cp /data/module/maven-3.6.3/conf/settings.xml /data/module/docker/streampark-docker/
#修改application.yml
profiles.active: mysql #[h2,pgsql,mysql]
lark-url: https://open.feishu.cn
workspace:local: /opt/streampark_workspace
#配置application-mysql.yml
tee /data/module/docker/streampark-docker/streampark-2.1.2/conf/application-mysql.yml <<-'EOF'
spring.datasource.driver-class-name: com.mysql.cj.jdbc.Driver
streampark.docker.http-client.docker-host: ${DOCKER_HOST:}
streampark.maven.settings: ${MAVEN_SETTINGS_PATH:/root/.m2/settings.xml}
streampark.workspace.local: ${WORKSPACE_PATH:/opt/streampark_workspace}
EOF# 编写Dockerfile
#需要提前准备kubectl、settings.xml 、config(kubectl的密钥)
tee docker<<-'EOF'
FROM flink:1.17.1-scala_2.12-java8
WORKDIR /opt/streampark/
ADD ./streampark-2.1.2/ /opt/streampark/
ADD ./kubectl /opt/streampark/
ADD ./settings.xml /root/.m2/
USER root
RUN sed -i -e 's/eval $NOHUP/eval/' bin/streampark.sh \&& sed -i -e 's/>> "$APP_OUT" 2>&1 "&"//' bin/streampark.sh \&& install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl \&& mkdir -p ~/.kube
WORKDIR /opt/streampark/
ADD ./config /root/.kube/
RUN chown -R flink /opt/streampark/EXPOSE 10000
EOF
#构建镜像
docker build -f Dockerfile -t apache/streampark-flink:2.1.2 .
#推送镜像到仓库
docker tag apache/streampark-flink:2.1.2 storage/bigdata/streampark-flink:2.1.2
docker push storage/bigdata/streampark-flink:2.1.2docker tag apache/streampark-flink:2.1.2-rc4 storage/bigdata/streampark-flink:2.1.2-rc4
docker push storage/bigdata/streampark-flink:2.1.2-rc4
4.2部署MySQL的pod
#k8s上创建mysql的namespace
#含义:kubectl create clusterrolebinding ClusterRoleBinding名 --clusterrole=绑定的Role serviceaccount=被绑定的SA -n 命名空间
kubectl create namespace mysql
kubectl create serviceaccount mysql
kubectl create clusterrolebinding mysql-role-bind --clusterrole=edit --serviceaccount=mysql:mysql -n mysql
clusterrolebinding.rbac.authorization.k8s.io/mysql-role-bind created
#查看角色绑定
kubectl get clusterrolebinding flink-role-bind -n flink -o yaml
kubectl get clusterrolebinding mysql-role-bind -n mysql -o yaml
kubectl get clusterrolebinding mysql-role-bind -n flink -o yaml
#配置pvc和pv和nfs指定(腾讯nfs可直接使用)
apiVersion: v1
kind: PersistentVolume
metadata:name: data-mysql
spec:accessModes:- ReadWriteManycapacity:storage: 10Gicsi:driver: com.tencent.cloud.csi.cfsvolumeAttributes:host: x x xpath: /data_mysqlvers: "4"volumeHandle: cfs #此处需要每个pv都不相同,否则挂载两个pvc会报错persistentVolumeReclaimPolicy: RetainstorageClassName: data-mysqlvolumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: data-mysqlnamespace: mysql
spec:accessModes:- ReadWriteManyresources:requests:storage: 10GistorageClassName: data-mysql
#docker拉去mysql镜像并上传至镜像库
docker tag mysql:5.7 storage/bigdata/mysql:5.7
docker push storage/bigdata/mysql:5.7
#查看集群的node ip
kubectl get node
# 编写mysql的yaml文件,并做配置
sudo mkdir -p /data/module/docker/mysql/{conf,data}/
sudo tee /data/module/docker/mysql/conf/pod-db-mysql.yaml <<-'EOF'
apiVersion: v1
kind: ConfigMap
metadata:name: conf-mysqlnamespace: mysql
data:mysql.cnf: |[mysqld]#Mysql服务的唯一编号 每个mysql服务Id需唯一server-id=1# 允许访问的IP网段bind-address=0.0.0.0#设置时区default-time_zone='+8:00'#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)character-set-server=utf8mb4#数据库字符集对应一些排序等规则,注意要和character-set-server对应collation-server=utf8mb4_general_ci#设置client连接mysql时的字符集,防止乱码init_connect='SET NAMES utf8mb4'#是否对sql语句大小写敏感,1表示不敏感lower_case_table_names=1#最大连接数max_connections=400#最大错误连接数max_connect_errors=1000#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值explicit_defaults_for_timestamp=true#SQL数据包发送的大小,如果有BLOB对象建议修改成1Gmax_allowed_packet=128M#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效interactive_timeout=3600wait_timeout=3600
---
apiVersion: v1
kind: Pod
metadata:name: pod-db-mysqlnamespace: mysql
spec:#serviceAccount: mysqlnodeName: xxxhostNetwork: true #主机网络可见(会占用node端口)containers:- name: mysql-k8simage: storage/bigdata/mysql:5.7env:- name: TZvalue: "Asia/Shanghai"- name: LANGvalue: "zh_CN.UTF-8"- name: MYSQL_ROOT_PASSWORDvalue: "xxxx"ports:#- containerPort: 3306volumeMounts:- mountPath: /var/lib/mysqlsubPath: mysqlname: data-mysql- mountPath: /etc/mysql/conf.dname: conf-volumereadOnly: truevolumes:- name: data-mysqlpersistentVolumeClaim:claimName: data-mysql- name: conf-volumeconfigMap:name: conf-mysql
EOF#kubectl delete -f /opt/module/k3s/conf/pod-db-mysql-k3s100.yaml
#启动pod
kubectl apply -f /data/module/docker/mysql/conf/pod-db-mysql.yaml
kubectl delete -f /data/module/docker/mysql/conf/pod-db-mysql.yaml
# 稍等片刻
kubectl get pod -A -owide
kubectl describe pod pod-db-mysql
kubectl logs --tail=100 -f pod-db-mysql -n mysql
4.3 mysql 数据库初始化
# 复制数据库文件
cp -r /data/software/incubator-streampark-2.1.2-rc3/streampark-console/streampark-console-service/src/main/assembly/script/ /localnfs/data_mysql/mysql/streampark-sql/
cp -r /data/module/docker/streampark-docker/streampark-2.2.0/script/ /localnfs/data_mysql/mysql/streampark-sql/
# 创建用户及数据库
# 进入mysql容器
kubectl exec -n mysql -it pod-db-mysql -- bash
#------------------------进入mysql容器----------------------------
mysql -uroot -proot
create database if not exists `streampark` character set utf8mb4 collate utf8mb4_general_ci;
create user 'xxxx'@'%' IDENTIFIED WITH mysql_native_password by 'xxx';
grant ALL PRIVILEGES ON streampark.* to 'xxxx'@'%';
flush privileges;
-- 导入数据文件
use streampark;
source /var/lib/mysql/streampark-sql/schema/mysql-schema.sql
source /var/lib/mysql/streampark-sql/data/mysql-data.sql
-- 退出mysql
quit
#------------------------退出mysql容器------------------------
exit#查看mysql 的建表
vim /data/module/docker/streampark-docker/streampark-2.2.0/script/schema/mysql-schema.sql
vim /data/module/docker/streampark-docker/streampark-2.2.0/script/data/mysql-data.sql
4.4 创建StreamPark的pod
#k8s上创建mysql的namespace
#含义:kubectl create clusterrolebinding ClusterRoleBinding名 --clusterrole=绑定的Role serviceaccount=被绑定的SA -n 命名空间
kubectl create namespace streampark
kubectl create serviceaccount streampark
kubectl create clusterrolebinding streampark-role-bind --clusterrole=edit --serviceaccount=streampark:streampark -n streampark
clusterrolebinding.rbac.authorization.k8s.io/mysql-role-bind created#配置pvc和pv和nfs指定
vim pv-pvc-streampark.yamlapiVersion: v1
kind: PersistentVolume
metadata:name: data-streampark
spec:accessModes:- ReadWriteManycapacity:storage: 10Gicsi:driver: com.tencent.cloud.csi.cfsvolumeAttributes:host: xxxpath: /data_streamparkvers: "4"volumeHandle: cfs #此处需要每个pv都不相同,否则挂载两个pvc会报错persistentVolumeReclaimPolicy: RetainstorageClassName: data-streamparkvolumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: data-streamparknamespace: streampark
spec:accessModes:- ReadWriteManyresources:requests:storage: 10GistorageClassName: data-streampark#执行
kubectl apply -f /data/module/docker/k8s/pv-pvc-streampark.yaml
kubectl delete -f /data/module/docker/k8s/pv-pvc-streampark.yaml
# 在xxx 上执行,在指定 节点 xxx 安装StreamPark
sudo tee /data/pod-app-streampark.yaml <<-'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: pod-app-streamparkname: pod-app-streamparknamespace: streampark
spec:replicas: 1selector:matchLabels:app: pod-app-streamparktemplate:metadata:labels:app: pod-app-streamparkspec:nodeName: xxxhostNetwork: true #主机网络可见(会占用node端口)containers:- name: streamparkimage: storage/bigdata/streampark-flink:2.1.2-rc4imagePullPolicy: Alwaysenv:- name: TZvalue: "Asia/Shanghai"- name: LANGvalue: "zh_CN.UTF-8"- name: SPRING_PROFILES_ACTIVEvalue: "mysql"- name: SPRING_DATASOURCE_URLvalue: "jdbc:mysql://xxx:3306/streampark?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8"- name: SPRING_DATASOURCE_USERNAMEvalue: "xxxx"- name: SPRING_DATASOURCE_PASSWORDvalue: "xxxx"- name: DOCKER_HOSTvalue: "tcp://xxx:2375"- name: DEBUG_OPTS #调试端口参数value: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:10001"ports:#- containerPort: 10000volumeMounts:- mountPath: /root/.kubesubPath: .kubename: conf-volume- mountPath: /opt/streampark_workspacesubPath: streampark_workspacename: data-volumecommand: ["sh","-c","bash bin/startup.sh debug"]volumes:- name: conf-volumehostPath:path: /roottype: DirectoryOrCreate- name: data-volumenfs:path: /data_streamparkserver: xxxEOF#kubectl delete -f /opt/module/k3s/conf/pod-app-streampark-k3s100.yaml
#启动pod
kubectl apply -f /data/pod-app-streampark.yaml
kubectl delete -f /data/pod-app-streampark.yaml
# 稍等片刻
kubectl get pod -A -o wide -n mysql
kubectl describe pod pod-app-streampark-k3s100
kubectl logs --tail=1000 -f pod-app-streampark -n mysql
# 进入mysql容器中创建用户及数据库
kubectl exec -n mysql -it pod-app-streampark -- bash
#-c streampark-k3s100# 为默认命名空间添加权限 kubectl create clusterrolebinding flink-role-binding-default --clusterrole=edit --serviceaccount=flink_dev:default
kubectl create clusterrolebinding flink-role-binding-default --clusterrole=edit --serviceaccount=default:default
相关文章:
Flink on K8S集群搭建及StreamPark平台安装
1.环境准备 1.1 介绍 在使用 Flink&Spark 时发现从编程模型, 启动配置到运维管理都有很多可以抽象共用的地方, 目前streampark提供了一个flink一站式的流处理作业开发管理平台, 从流处理作业开发到上线全生命周期都做了支持, 是一个一站式的流出来计算平台。 未来spark开…...
SpringBoot如何优雅的处理免登录接口
在项目开发过程中,会有很多API接口不需要登录就能直接访问,比如公开数据查询之类的 ~ 常规处理方法基本是 使用拦截器或过滤器,拦截需要认证的请求路径。在拦截器中判断session或token信息,如果存在则放行,否则跳转到…...
元旦档首日票房超4.69亿,“下雪场尴尬”上热搜!
哇塞,元旦假期终于来啦!🎉在这个喜庆的时刻,电影院也热闹非凡,据猫眼专业版数据显示,截至12月30日,2023年元旦档首日票房竟然超过了4.69亿!这简直是个天文数字啊!&#x…...
CentOS系统中设置IP地址的方式和存在的问题
在CentOS系统中设置IP地址通常涉及以下步骤: 打开网络接口配置文件: 使用文本编辑器(如vi、nano或emacs)打开 /etc/sysconfig/network-scripts/ifcfg-eth0 文件。这里的"eth0"是网卡的名称,如果你的系统中有…...
使用vmware,在ubuntu18.04中使用笔记本的摄像头
步骤1:在windows中检查相机状态 win10系统中,在左下的搜索栏,搜索“相机”,点击进入即可打开相机,并正常显示图像。 注意:如果相机连接到了虚拟机,则不能显示正常。 步骤2:在ubuntu…...
中间件系列 - Redis入门到实战(高级篇-分布式缓存)
前言 学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记,如有侵扰,联系删除 学习目标 Redis持久化Redis主从…...
使用Visual Studio调试VisionPro脚本
使用Visual Studio调试VisionPro脚本 方法一 : 修改项目文件 csproj步骤: 方法二 : Visual Studio附加功能步骤: 方法一 : 修改项目文件 csproj 步骤: 开启VisionPro脚本调试功能 创建一个VisionPro程序…...
Ubuntu安装K8S的dashboard(管理页面)
原文网址:Ubuntu安装k8s的dashboard(管理页面)-CSDN博客 简介 本文介绍Ubuntu安装k8s的dashboard(管理页面)的方法。 Dashboard的作用有:便捷操作、监控、分析、概览。 相关网址 官网地址:…...
zookeeper之集群搭建
1. 集群角色 zookeeper集群下,有3种角色,分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader): 事务请求(写操作)的唯一调度者和处理者,保…...
从0开始界面设计师 Qt Designer
QT程序界面的 一个个窗口、控件,就是像上面那样用相应的代码创建出来的。 但是,把你的脑海里的界面,用代码直接写出来,是有些困难的。 很多时候,运行时呈现的样子,不是我们要的。我们经常还要修改代码调整界…...
Html / CSS刷题笔记
WebKit是一个开源的浏览器引擎,它最初是由苹果公司开发的,并且被广泛用于Safari浏览器和其他基于WebKit的浏览器,比如Google Chrome的早期版本。它也是构建许多移动设备浏览器的基础。WebKit的主要功能是解析HTML和CSS,并将其渲染…...
关于“Python”的核心知识点整理大全51
目录 17.2.2 添加自定义工具提示 bar_descriptions.py 17.2.3 根据数据绘图 python_repos.py 17.2.4 在图表中添加可单击的链接 python_repos.py 17.3 Hacker News API hn_submissions.py 17.4 小结 往期快速传送门👆(在文章最后)&a…...
Termius for Mac/Win:一站式终端模拟器、SSH 和 SFTP 客户端软件的卓越选择
随着远程工作和云技术的普及,对于高效安全的远程访问和管理服务器变得至关重要。Termius,一款强大且易用的终端模拟器、SSH 和 SFTP 客户端软件,正是满足这一需求的理想选择。 Termius 提供了一站式的解决方案,允许用户通过单一平…...
vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间
vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间 一、软件程序问答 如下图,软件以 佳易王vr体验馆计时计费软件V17.9为例说明 1、软件如何计时间? 点击相应编号的开始计时按钮即可 2、遇到停电再打开软件时间可以恢复吗&…...
HTML---JavaScript基础
文章目录 目录 文章目录 本章目标 一.JavaScript基础 概述 特点 JavaScript 基本机构 语法 网页中引用JavaScript的方式 二. JavaScript核心语法 变量 编辑 数据类型 数组 练习 本章目标 掌握JavaScript的组成掌握JavaScript的基本语法会定义和使用函数会使用工具进行…...
2023年03月17日_微软和谷歌办公AI的感慨
2023年3月17日 最近这个科技圈的消息 有点爆炸的让人应接不暇了 各种大公司简直就是神仙打架 你从来没有见过这么密集的 这么高频的产品发布 昨天微软是发布了Office 365 Copilot 在里边提供了大量的AI的功能 然后谷歌呢也发布了这个Google Workspace AI 也是跟365 Cop…...
2023年新一代开发者工具 Vue ,正式开源!
以下文章来源于前端充电宝 ,作者CUGGZ 近日,Vue 新一代开发者工具(DevTools)正式开源!Vue DevTools 是一个旨在增强 Vue 开发人员体验的工具,它提供了一些功能来帮助开发者更好地了解 Vue 应用。下面就来看…...
springboot(ssm校园组团平台 高校组团系统 Java系统
springboot(ssm校园组团平台 高校组团系统 Java系统 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0) 数据库…...
QT 利用开源7z 实现解压各种压缩包,包括进度条和文件名的显示(zip,7z,rar,iso等50多种格式)
想做一个winRAR一样的解压软件吗?很简单,利用开源的7z库就能实现。我看网上其他人说的方法不敢苟同,误人子弟。以前自己在项目中使用过7z,这次又有需要,就想记录下来。如果你研究过如何用7z的话,一定知道7z的每一个GUID都代表了一种格式,50多种GUID也就有50多个格式,最…...
androidStudio 没有新建flutter工程的入口?
装了flutter dart 插件 执行了 flutter doctor 也执行了 flutter doctor --android-license 最后重启了 androidStudio 还是没发现在哪新建flutter项目工程 原来 plugins 下的 Android APK Support没有勾选...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)
Name:3ddown Serial:FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名:Axure 序列号:8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...
结合PDE反应扩散方程与物理信息神经网络(PINN)进行稀疏数据预测的技术方案
以下是一个结合PDE反应扩散方程与物理信息神经网络(PINN)进行稀疏数据预测的技术方案,包含完整数学推导、PyTorch/TensorFlow双框架实现代码及对比实验分析。 基于PINN的反应扩散方程稀疏数据预测与大规模数据泛化能力研究 1. 问题定义与数学模型 1.1 反应扩散方程 考虑标…...
详解ZYNQ中的 RC 和 EP
详解ZYNQ中的 RC 和 EP 一、ZYNQ FPGA 开发板基础( ZC706 ) 1. 核心特点 双核大脑 灵活积木: ZC706 集成了 ARM Cortex-A9 双核处理器(相当于电脑 CPU)和 FPGA 可编程逻辑单元(相当于可自定义的硬件积木…...
