Kubernetes + Docker 部署一个yolov5检测服务(基于FastDeploy)
Kubernetes + Docker 从零部署一个yolov5检测服务,服务基于PaddlePaddle/FastDeploy的服务化部署;所有软件从零安装。
文章目录
- 1.说明
- 2.环境
- 3.安装过程
- · 3.1安装 Docker
- · 3.2安装 minikube
- · 3.3安装 Kubectl
- 4.部署过程
- · 4.1 Docker相关
- · 4.2 k8s相关
- · 4.3 启动服务
- · 4.4 客户端测试
- 五.总结
- 六.引用
1.说明
- 基于k8s的minikube部署一个单节点服务,重了解在部署流程和细节。
- 服务基于CPU部署。
2.环境
WSL2 Ubuntu 18.04
kubernetes v1.23.8
Docker 23.0.0
PaddlePaddle/FastDeploy
3.安装过程
· 3.1安装 Docker
#1. 新软件列表和允许使用https
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
#2.添加阿里源的GPG
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg#3.设置阿里源的docker仓库echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null#4.安装docker:#4.1更新apt-get
sudo apt-get update#4.2安装最新的docker版本
sudo apt-get install docker-ce docker-ce-cli containerd.io#4.3启动docker
sudo service docker start#4.4查看docker服务状态
sudo service docker status
· 3.2安装 minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
- 这里启动大约要5分钟
#启动k8s,使用docker为引擎.
minikube start --force --driver=docker --kubernetes-version=v1.23.8
- 验证minikube启动情况
minikube kubectl get ns
#显示一下说明成功
root@DESKTOP-4J64IFF:~# minikube kubectl get ns
NAME STATUS AGE
default Active 8d
kube-node-lease Active 8d
kube-public Active 8d
kube-system Active 8d
kubernetes-dashboard Active 8d
· 3.3安装 Kubectl
- 安装
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client
- 测试
kubectl get pod -A
4.部署过程
· 4.1 Docker相关
- 下载CPU镜像,仅支持Paddle/ONNX模型在CPU上进行服务化部署,支持的推理后端包括OpenVINO、Paddle Inference和ONNX Runtime。
docker pull registry.baidubce.com/paddlepaddle/fastdeploy:1.0.2-cpu-only-21.10
- 下载部署代码,及模型等
#下载部署示例代码
git clone https://github.com/PaddlePaddle/FastDeploy.git
cd FastDeploy/examples/vision/detection/yolov5/serving/#下载yolov5模型文件和测试图片
wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/000000014439.jpg
wget https://bj.bcebos.com/paddlehub/fastdeploy/yolov5s.onnx# 将模型放入 models/runtime/1目录下, 并重命名为model.onnx
mv yolov5s.onnx models/runtime/1/model.onnx
- 启动docker测试服务(可跳过)
######################### 服务端 ##############################
cd FastDeploy/examples/vision/detection/yolov5/serving/
# 手动启动docker
docker run -it --net=host --name fd_serving -v `pwd`/:/yolov5_serving registry.baidubce.com/paddlepaddle/fastdeploy:x.y.z-cpu-only-21.10 bash
#启动服务
fastdeployserver --model-repository=/yolov5_serving/models --backend-config=python,shm-default-byte-size=10485760#服务启动成功后, 会有以下输出:
#I0928 04:51:15.784517 206 grpc_server.cc:4117] Started GRPCInferenceService at 0.0.0.0:8001
#I0928 04:51:15.785177 206 http_server.cc:2815] Started HTTPService at 0.0.0.0:8000
#I0928 04:51:15.826578 206 http_server.cc:167] Started Metrics Service at 0.0.0.0:8002
######################### 客户端 ##############################
cd FastDeploy/examples/vision/detection/yolov5/serving/
#安装端依赖
python3 -m pip install tritonclient[all]
# 发送请求
python3 yolov5_grpc_client.py#发送请求成功后,会返回json格式的检测结果并打印输出:
#output_name: detction_result
#{'boxes': [[268.48028564453125, 81.05305480957031, 298.69476318359375, 169.43902587890625], [104.73116302490234, 45.66197204589844, 127.58382415771484, 93.44938659667969], [378.9093933105469, 39.75013732910156, 395.6086120605469, 84.24342346191406], [158.552978515625, 80.36149597167969, 199.18576049804688, 168.18191528320312], [414.37530517578125, 90.94805908203125, 506.3218994140625, 280.40521240234375], [364.00341796875, 56.608917236328125, 381.97857666015625, 115.96823120117188], [351.7251281738281, 42.635345458984375, 366.9103088378906, 98.04837036132812], [505.8882751464844, 114.36674499511719, 593.1248779296875, 275.99530029296875], [327.7086181640625, 38.36369323730469, 346.84991455078125, 80.89302062988281], [583.493408203125, 114.53289794921875, 612.3546142578125, 175.87353515625], [186.4706573486328, 44.941375732421875, 199.6645050048828, 61.037628173828125], [169.6158905029297, 48.01460266113281, 178.1415557861328, 60.88859558105469], [25.81019401550293, 117.19969177246094, 59.88878631591797, 152.85012817382812], [352.1452941894531, 46.71272277832031, 381.9460754394531, 106.75212097167969], [1.875, 150.734375, 37.96875, 173.78125], [464.65728759765625, 15.901412963867188, 472.512939453125, 34.11640930175781], [64.625, 135.171875, 84.5, 154.40625], [57.8125, 151.234375, 103.0, 174.15625], [165.890625, 88.609375, 527.90625, 339.953125], [101.40625, 152.5625, 118.890625, 169.140625]], 'scores': [0.8965693116188049, 0.8695310950279236, 0.8684297800064087, 0.8429877758026123, 0.8358422517776489, 0.8151364326477051, 0.8089362382888794, 0.801361083984375, 0.7947245836257935, 0.7606497406959534, 0.6325908303260803, 0.6139386892318726, 0.5906146764755249, 0.505328893661499, 0.40457233786582947, 0.3460320234298706, 0.33283042907714844, 0.3325657248497009, 0.2594234347343445, 0.25389009714126587], 'label_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 24, 24, 33, 24], 'masks': [], 'contain_masks': False}
- 编写Dockerfile
FROM registry.baidubce.com/paddlepaddle/fastdeploy:1.0.2-cpu-only-21.10## 编写人MAINTAINER xxx# 在docker容器构建时拷贝程序ADD ./FastDeploy-develop /opt/FastDeploy-develop# 容器暴露的端口号,需要在容器中运行使用端口号一致EXPOSE 8000EXPOSE 8001# 容器启动之后执行的命令, java -jar ROOT.jarCMD ["cd /opt/FastDeploy-develop/examples/vision/detection/yolov5/serving"]CMD ["fastdeployserver","--model-repository=/opt/FastDeploy-develop/examples/vision/detection/yolov5/serving/models","--backend-config=python,shm-default-byte-size=10485760"]
- 打包images
docker build -t k8s_yolo_demo:latest .
· 4.2 k8s相关
- 生成Deployment yaml
kubectl create deployment demo --image=k8s_yolo_demo:latest -o yaml --dry-run=client > demo.yaml
#在本地路径下会生成demo.yaml
- 修改demo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:creationTimestamp: nulllabels:app: demoname: demo
spec:replicas: 1selector:matchLabels:app: demostrategy: {}template:metadata:creationTimestamp: nulllabels:app: demospec:containers:- image: k8s_yolo_demoimagePullPolicy: IfNotPresentname: k8s_yolo_demoresources: {} ports:- containerPort: 8001
status: {}
- 编写server yaml
apiVersion: v1
kind: Service
metadata:name: demo
spec:type: NodePort #这里代表是NodePort类型的,另外还有ingress,LoadBalancer(这里映射到本机IP)ports:- port: 8001 #这里的端口和clusterIP(kubectl describe service service-hello中的IP的port)对应,即在集群中所有机>器上curl 10.98.166.242:80可访问发布的应用服务。targetPort: 8001 #端口一定要和container暴露出来的端口对应,nodejs暴露出来的端口是8081,所以这里也应是8081nodePort: 31111 # 所有的节点都会开放此端口30000--32767,此端口供外部调用。selector:app: demo #这里选择器一定要选择容器的标签,之前写name:kube-node是错的。
· 4.3 启动服务
# 首先启动
kubectl apply -f demo.yaml
# 可能会报错 获取不到images
# 这里demo.yaml 中添加 imagePullPolicy: IfNotPresent (已添加过了)
# 这里使用cache方式获取images# 1.添加环境变量 使得k8s 使用docker
eval $(minikube docker-env)
# 2.把images添加到k8s的cache中去
minikube cache add k8s_yolo_demo
# 3.从新加载启动
kubectl apply -f demo.yaml
# 4.查看启动的pod 是否running
kubectl get pods
# 5.把images从k8s的cache中删掉
minikube cache delete k8s_yolo_demo# 6.启动server
kubectl apply -f demo_server.yaml
如图这里看到pod和server都正常启动了:
· 4.4 客户端测试
# 查看本机IP
ifconfig
#修改客户端代码中的url
url = "192.168.49.1:31111"
python3 yolov5_grpc_client.py#发送请求成功后,会返回json格式的检测结果并打印输出:
#output_name: detction_result
#{'boxes': [[268.48028564453125, 81.05305480957031, 298.69476318359375, 169.43902587890625], [104.73116302490234, 45.66197204589844, 127.58382415771484, 93.44938659667969], [378.9093933105469, 39.75013732910156, 395.6086120605469, 84.24342346191406], [158.552978515625, 80.36149597167969, 199.18576049804688, 168.18191528320312], [414.37530517578125, 90.94805908203125, 506.3218994140625, 280.40521240234375], [364.00341796875, 56.608917236328125, 381.97857666015625, 115.96823120117188], [351.7251281738281, 42.635345458984375, 366.9103088378906, 98.04837036132812], [505.8882751464844, 114.36674499511719, 593.1248779296875, 275.99530029296875], [327.7086181640625, 38.36369323730469, 346.84991455078125, 80.89302062988281], [583.493408203125, 114.53289794921875, 612.3546142578125, 175.87353515625], [186.4706573486328, 44.941375732421875, 199.6645050048828, 61.037628173828125], [169.6158905029297, 48.01460266113281, 178.1415557861328, 60.88859558105469], [25.81019401550293, 117.19969177246094, 59.88878631591797, 152.85012817382812], [352.1452941894531, 46.71272277832031, 381.9460754394531, 106.75212097167969], [1.875, 150.734375, 37.96875, 173.78125], [464.65728759765625, 15.901412963867188, 472.512939453125, 34.11640930175781], [64.625, 135.171875, 84.5, 154.40625], [57.8125, 151.234375, 103.0, 174.15625], [165.890625, 88.609375, 527.90625, 339.953125], [101.40625, 152.5625, 118.890625, 169.140625]], 'scores': [0.8965693116188049, 0.8695310950279236, 0.8684297800064087, 0.8429877758026123, 0.8358422517776489, 0.8151364326477051, 0.8089362382888794, 0.801361083984375, 0.7947245836257935, 0.7606497406959534, 0.6325908303260803, 0.6139386892318726, 0.5906146764755249, 0.505328893661499, 0.40457233786582947, 0.3460320234298706, 0.33283042907714844, 0.3325657248497009, 0.2594234347343445, 0.25389009714126587], 'label_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 24, 24, 33, 24], 'masks': [], 'contain_masks': False}
五.总结
- 最有问题的还是pod IP映射的问题,没搞清k8s的端口映射逻辑。
- 本机由于虚拟机启动IP会变动为 192.168.49.1,实际服务是之前启动的,已经映射到了192.168.49.2上,这里需要从新启动下server,就会从新映射到当前IP。
- 这里k8s获取docker image的方式也有问题,这是测试无所谓了;正式部署不会存在这种问题。
- GPU方式还没尝试,有空了再试试,主要是搭建环境比较麻烦。
六.引用
https://github.com/PaddlePaddle/FastDeploy/blob/develop/examples/vision/detection/yolov5/serving/README_CN.md
https://www.jianshu.com/p/c8b42d5cda2d
相关文章:
Kubernetes + Docker 部署一个yolov5检测服务(基于FastDeploy)
Kubernetes Docker 从零部署一个yolov5检测服务,服务基于PaddlePaddle/FastDeploy的服务化部署;所有软件从零安装。 文章目录1.说明2.环境3.安装过程 3.1安装 Docker 3.2安装 minikube 3.3安装 Kubectl4.部署过程 4.1 Docker相关 4.2 k8s相关 4.3 启动服…...
【C++/QT】QT5.6解析Excel教程(qtxlsx)
这里写目录标题【背景】【下载qtxlsx】【安装perl】【编译qtxlsx】【添加模块】【使用qtxlsx】【背景】 新接触QT,很多东西都不会,刚接触一个解析Excel的demo,记录一下安装、编译、解析Excel的过程 【下载qtxlsx】 在解析之前,…...
C++之智能指针
前言普通指针的不足new和new门的内存需要用delete和delete[释放。程序员的主观失误,忘了或漏了释放程序员也不确定何时释放(例如多个线程共享同一个对象,没办法确定什么时候释放)普通指针的释放类内的指针,在析构函数中…...
Redis实战-session共享之修改登录拦截器
在上一篇中Redis实战之session共享,我们知道了通过Redis实现session共享了,那么token怎么续命呢?怎么刷新用户呢?本来咱们就通过拦截器来实现这两个功能。 登录拦截器优化: 先来看看现在拦截器情况: 拦截…...
数据可视化,流程化处理pycharts-
本文直接进入可视化,输入讲解输入列表生成图片,关于pandas操作看这篇pandas matplotlib 导包后使用 import matplotlib.pyplot as plt饼图 使用 plt.figure 函数设置图片的大小为 15x15 使用 plt.pie 函数绘制饼图,并设置相关的参数&…...
1626_MIT 6.828 lab1课程大纲学习过程整理
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 现在lab1的内容全都学习完了,该做的练习也都做了。接下来,整理一下自己看这一部分课程讲义的一些笔记。 整理之前,先把自己完成…...
12月无情被辞:想给还不会自动化测试的技术人提个醒
公司前段时间缺人,也面了不少测试,结果竟没有一个合适的。一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但是平均水平很让人失望。基本能用一句话概括就是:3年测…...
开发必备技术--docker(使用篇)
文章目录前言Docker的基本概念概念数据卷虚拟网络镜像操作镜像名称镜像命令容器操作基本操作容器创建数据卷操作创建和查看数据卷其他指令实战前言 续接上一篇博文: 开发必备技术–docker(一) 这也是开学了,假期的最后一篇博文&a…...
2023备战金三银四,Python自动化软件测试面试宝典合集(三)
马上就又到了程序员们躁动不安,蠢蠢欲动的季节~这不,金三银四已然到了家门口,元宵节一过后台就有不少人问我:现在外边大厂面试都问啥想去大厂又怕面试挂面试应该怎么准备测试开发前景如何面试,一个程序员成长之路永恒绕…...
TortoiseGit 使用教程
一、下载工具 这里给大家准备了所有安装包自取 链接:https://pan.baidu.com/s/1xrxxgyNXNQEGD_RjwKnPMg 提取码:qwer 也可在官网自行下载最新版 1.下载git,直接去官网下载Git - Downloads,根据自己的系统合理下载,…...
Linux项目自动化构建工具make/Makefile
本文已收录至《Linux知识与编程》专栏! 作者:ARMCSKGT 演示环境:CentOS 7 目录 前言 正文 makefile文件与语法规则 make指令与执行逻辑 makefile任务刷新策略 .PHONY修饰为伪目标 最后 前言 会不会写makefile,从一个侧面…...
M100嵌入式自动吞吐式读写器|电动读卡机如何通过C#程序读取社保卡号
M100嵌入式自动吞吐式读写器|电动读卡机是一款双保护门功能读卡器,第一层防尘防异物机械门,第二层电动门。 M100嵌入式自动吞吐式读写器|电动读卡机采用耐高温、耐磨擦、高强度、抗老化的复合型塑胶为主体,在走卡通道两侧镶有不锈钢金属&…...
STM32----搭建Arduino开发环境
搭建Arduino开发环境前言一、Arduino软件1.软件下载2.软件安装3.软件操作二、Cortex官方内核三、烧录下载四、其他第三方内核1.Libmaple内核2.Steve改进的LibMaple 内核3.STMicroelectronics(ST)公司编写的内核总结前言 本章介绍搭建STM32搭建Arduino开发环境,包括…...
华为OD机试 - 事件推送(Python),真机试题
事件推送 题目 同一个数轴 X 上有两个点的集合 A={A1, A2, …, Am} 和 B={B1, B2, …, Bn}, Ai 和 Bj 均为正整数,A、B 已经按照从小到大排好序,A、B 均不为空, 给定一个距离 R (正整数), 列出同时满足如下条件的所有(Ai, Bj)数对: Ai <= BjAi, Bj 之间的距离小于…...
论如何获取CSDN原力
0x00 前言 因为个人需求,所以需要增长原力值,故对原力值的增长方式进行探索和总结。 0x01 正文 参考:https://blog.csdn.net/SoftwareTeacher/article/details/114499372 1.举报了劣质内容(博客,下载的资源&#x…...
流程引擎之发展史及对比总结
流程引擎渊源市场上比较有名的开源流程引擎有 jBPM、Activiti、Camunda、Flowable 和 Compileflow。其中 jBPM、Activiti、Flowable、camunda 四个框架同宗同源,祖先都是 jbpm4,开发者只要用过其中一个框架,基本上就会用其它三个。而 Compile…...
【DSView逻辑分析抓取波形CAN步骤-硬件连接-数据解析-底层波形认识CAN-工具使用】
【DSView逻辑分析抓取波形CAN步骤-硬件连接-数据解析-底层波形认识CAN】1、概述2、实验环境3、写在前面的一个问题4、实验准备(1)硬件连接1)CAN卡连接开发板(2)逻辑分析仪连接开发板(2) CAN卡连接软件&…...
C++中的模板
1.模板C 的模板一直是这门语言的一种特殊的艺术,模板甚至可以独立作为一门新的语言来进行使用。模板的哲学在于将一切能够在编译期处理的问题丢到编译期进行处理,仅在运行时处理那些最核心的动态服务,进而大幅优化运行期的性能。因此模板也被…...
Maven_第四章 使用Maven:IDEA环境
目录第一节 创建父工程第二节 配置Maven信息第三节 创建Java模块工程第四节 创建Web模块工程1、创建模块2、修改打包方式3、Web 设定4、借助IDEA生成web.xml5、设置 Web 资源的根目录6、测试6.1 创建文件6.2 配置tomcat第五节 其他操作1、在IDEA中执行Maven命令①直接执行②手动…...
RocketMQ基础学习
前言: RocketMQ阿里开源的,一款分布式的消息中间件,它经过阿里的生产环境的高并发、高吞吐的考验,同时,还支持分布式事务等场景。RocketMQ使用Java语言进行开发,方便Java开发者学习源码。但是,R…...
I.MX6ULL内核开发4:设备号的组成与哈希表
目录 一、设备号 二、hash table 一、设备号 文件夹:/home/geralt/linux_driver/kernel/ebf_linux_kernel_6ull_depth1/include/linux/kdev.h 这里面是linux中关于设备号的具体描述 #define MINORBITS 20 #define MINORMASK ((1U << MINORBITS) - 1)#defin…...
【博学谷学习记录】大数据课程-学习第六周总结
Hadoop 3.x的版本架构和模型介绍 由于Hadoop 2.0是基于JDK 1.7开发的,而JDK 1.7在2015年4月已停止更新,这直接迫使Hadoop社区基于JDK 1.8重新发布一个新的Hadoop版本,即hadoop 3.0。Hadoop 3.0中引入了一些重要的功能和优化,包括…...
Cordova
一、简介 Cordova 是用 Web 技术( HTML,CSS 和 JS )构建移动应用的平台。我们可以认为Cordova 是一个容器,用于将的 Web 应用移植到移动端,同时支持移动端的功能(例如:定位、蓝牙、摄像头等&am…...
9.语义HTMLVScode扩展推荐
语义HTML 定义: 一个元素使用我们并不是只关心他是什么样子的,而是要去关心这个元素名称的实际意义或者代表什么 我们使用标签并不是他仅代表导航栏,只是将导航栏部分归为一个块。现实生活中,多使用之前都是使用div这个元素去构…...
一款非常不错的微信系统垃圾清理工具:微信清理大师,操作简单,清除较快。
微信清理大师 微信清理大师是一款专为微信所推出的系统垃圾清理工具。它的功能十分强大,可快捷清理微信内储存垃圾文件,操作十分简单,只需要轻轻一点,即可删除清理。 功能特点: 【一键清理】一键搞定无用垃圾&#x…...
PMP考前冲刺2.11 | 2023新征程,一举拿证
承载2023新一年的好运让我们迈向PMP终点一起冲刺!一起拿证!每日5道PMP习题助大家上岸PMP!!!题目1-2:1.以下哪三种情况是Scrum主管应该注意的障碍?(选择三个)A. 阻碍敏捷能力的技术B. 缺乏团队授…...
yalc(比 yarn/npm link 更加友好的前端依赖库 link 方案)
参考链接: 【yalc 官方文档】:https://github.com/wclr/yalc 【yalc-watch 官方文档】:https://github.com/johot/yalc-watch 链接依赖库背景 以 D-SASS 前端框架为例,当我们在修改 D-SASS 前端框架时,当想着马上就要预览到修改的内容是否生效,于是在前端框架目录下进…...
Github | 个人资料自述文件配置的不完全总结
本文简单总结配置 Github 主页上个人资料自述文件的流程和参考文件。 更新:2022 / 02 / 11 Github | 配置个人主页的信息总览方法的不完全总结创建、删除个人资料自述文件编辑个人资料自述文件参考链接创建、删除个人资料自述文件 首推自然是官方说明文档 1&#…...
2022年12月电子学会Python等级考试试卷(二级)答案解析
目录 一、单选题(共25题,共50分) 二、判断题(共10题,共20分) 三、编程题(共2题,共30分) 青少年软件编程(Python)等级考试试卷(二级) 一、单选题(共25题,共50分) 1. 运行下列程序…...
SpringCloud第二讲 Ribbon负载均衡源码分析
前言介绍: 这一讲我们将依据Eureka的负载均衡规则,Eureka的具体服务搭建以及服务注册和服务发现可以参考基于Eureka实现服务注册和服务发现_热爱Java的编程小白的博客-CSDN博客 Eureka的服务搭建之后便可以在这上面进行服务注册,如果存在两个…...
域名解析工具/游戏优化大师官方下载
金融危机引发的全球范围的经济危机正在不断向实体经济蔓延,已经成为企业经理人们所面对的最为严峻的挑战,同时,也迫使我们重新认识企业资金管理。 “安全性”、“流动性”和“盈利性”是商业银行经营三原则,它们同样是企业资金…...
网站怎么让百度收录一张图做封面/seo搜索引擎优化视频
只是想把最近移动平台web开发的一点经验和大家分享下。 1.iScroll控件 这个控件可以说是非常不错的一个使用mobile webkit开发的一个实现滑动效果的控件。官方网站:http://cubiq.org/iscroll 它是纯粹的js写的,不依赖其它js框架。下面几个例子是在ipad的…...
p2p网上贷款网站建设方案.docx/网络推广靠谱吗
EventBus用法及源码解析 目录介绍1.EventBus简介1.1 EventBus的三要素1.2 EventBus的四种ThreadMode(线程模型)1.3 EventBus怎么调用2.EventBus使用2.1 最简单的使用3.EventBus注册源码解析3.1 EventBus.getDefault()获取对象3.2 register(this)注册源码…...
产品内页设计/宁波seo公司网站推广
解决办法: 方法一、修改.aspx文件 在.aspx文件中加入validateRequest"false",形如: <%Page validateRequest"false" language"c#" Codebehind"WriteNews.aspx.cs" AutoEventWireup"false&qu…...
怎么推销自己的网站/超链接友情外链查询
目录 一、原理 1.1 卷积神经网络 1.2 Lenet 二、数据分析 三、结果分析 一、原理 1.1 卷积神经网络 卷积神经网络的层级结构 1.2 Lenet LeNet-5 ,用于实现手写识别的7层CNN(不包含输入层) 输入原始图像的大小是3232,卷积…...
软件的开发流程和测试流程/seo关键词排名怎么提升
问题:当一个线程组下有多个请求,比如线程数设置100,线程组下面有请求1,请求2,请求3,那么如何实现对请求1进行100并发,再对请求2进行100并发,再对请求3进行100并发呢?实际…...