Ubuntu 新人上手 Microk8s 指南
文章目录
- 1. 什么是 Ubuntu 核心
- 2. 什么是 Kubernetes
- 3. 什么是MicroK8s
- 4. 为什么选择 Microk8s on Core
- 5. 安装Ubuntu Core
- 6. Ubuntu Core上安装 MicroK8S
- 7. 启动 Microk8s
- 8. 启用必要的 MicroK8s 插件
- 9. 部署示例容器工作负载
- 10. 检查部署状态并访问您的应用程序
- 11. 管理镜像
- 11.1 拉取
- 查看
- 打标签
看到 Microk8s
官网的插件很全,忍不住要玩一把。体验一下。
- Vcenter 6.7 创建 Ubuntu 22.10 虚拟机 顺带安装 Microk8s
1. 什么是 Ubuntu 核心
Ubuntu Core 是为物联网和嵌入式系统设计和开发的 Ubuntu 操作系统版本。它完全由 snap
包构建,以创建一个安全、健壮、受限和基于事务的操作系统,易于安装、部署和升级。
2. 什么是 Kubernetes
Kubernetes 是容器化应用程序的编排平台。Kubernetes 抽象计算、网络和存储资源,并以可靠和可扩展的方式管理容器生命周期。Kubernetes 采用 DevOps 原则构建,可自动执行操作任务,例如工作负载重新部署和升级,并提供用于精细资源控制的 API。
3. 什么是MicroK8s
MicroK8s 是一个轻量级的 CNCF 认证的 Kubernetes 发行版,适用于云、工作站、边缘和物联网设备。作为一个快照,它在本地运行所有 Kubernetes 服务(即没有虚拟机),它将所有依赖项包含在一个包中,并获得透明的关键任务安全更新。MicroK8s 针对简单性和稳健性进行了优化,因为安装、设置和操作(例如启用监控服务和高可用性集群)要么是自动化的,要么是通过单个命令完成的。
4. 为什么选择 Microk8s on Core
MicroK8s
和 Ubuntu Core
共享可靠性和安全性等优势,具有自我修复、高可用性和自动 OTA 更新等功能。Ubuntu 是云中 Kubernetes 的首选操作系统。结合 Ubuntu Core
和 MicroK8s
,创建流线型的嵌入式 Kubernetes 体验,并优化 IoT 和边缘应用程序的大小和性能。
5. 安装Ubuntu Core
现在您已经拥有方便的 IoT 设备,让我们从安装 Ubuntu Core
开始。
目前有两个指南:
- 在树莓派上安装 Ubuntu Core
- 在 Intel NUC 上安装 Ubuntu Core
请注意,为了运行 MicroK8s,您应该使用 64 位 Ubuntu Core 版本。
如果您设法成功完成了两个指南中任何一个的步骤,您现在应该可以访问您设备上的 Ubuntu Core 终端。
6. Ubuntu Core上安装 MicroK8S
安装
要在 Ubuntu Core
上安装最新版本的 Microk8s,请运行:
snap install microk8s --channel=latest/edge/strict
低于预期输出:
ubuntu@ubuntu:~$ snap install microk8s --channel=latest/edge/strictmicrok8s (edge/strict) v1.22.3 from Canonical✓ installed
安装最多可能需要几分钟,具体取决于您的硬件资源和网络连接。
此安装的 Kubernetes 版本是什么?
MicroK8s 是快速打包的,因此它将自动更新到更新的点版本。
严格限制的 MicroK8s 版本目前在专用的 snap 通道上,与上游 Kubernetes 的最新版本保持一致。
频道由轨道(或系列)和基于 MicroK8s 版本(稳定版、候选版、测试版、边缘版)的预期稳定性级别组成。有关可用版本的更多信息,请运行:
snap info microk8s
7. 启动 Microk8s
Microk8s 安装后默认不启动。要启动 MicroK8s,请运行:
sudo microk8s start
此命令启动所有 Kubernetes 服务,包括控制平面和工作程序。现在,要在安装完成后检查 MicroK8s 节点的状态,您可以使用:
sudo microk8s status --wait-ready
状态应该表明 microk8s 正在运行。
ubuntu@ubuntu:~$ sudo microk8s status
microk8s is running
high-availability: nodatastore master nodes: 127.0.0.1:19001datastore standby nodes: none
addons:enabled:ha-cluster # (core) Configure high availability on the current nodehelm # (core) Helm - the package manager for Kuberneteshelm3 # (core) Helm 3 - the package manager for Kubernetesdisabled:cert-manager # (core) Cloud native certificate managementcommunity # (core) The community addons repositorydashboard # (core) The Kubernetes dashboarddns # (core) CoreDNSgpu # (core) Automatic enablement of Nvidia CUDAhost-access # (core) Allow Pods connecting to Host services smoothlyhostpath-storage # (core) Storage class; allocates storage from host directoryingress # (core) Ingress controller for external accesskube-ovn # (core) An advanced network fabric for Kubernetesmayastor # (core) OpenEBS MayaStormetallb # (core) Loadbalancer for your Kubernetes clustermetrics-server # (core) K8s Metrics Server for API access to service metricsminio # (core) MinIO object storageobservability # (core) A lightweight observability stack for logs, traces and metricsprometheus # (core) Prometheus operator for monitoring and loggingrbac # (core) Role-Based Access Control for authorisationregistry # (core) Private image registry exposed on localhost:32000storage # (core) Alias to hostpath-storage add-on, deprecated
如果是没有魔法上网的环境,这里可能起不来。报错原因:
$ microk8s.kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-7db754646d-ml4wq 0/1 Pending 0 7m50s
calico-node-td999 0/1 Init:0/2 0 38s$ microk8s.kubectl get pods -n kube-system calico-node-td999 -oyaml
.......
Failed to create pod sandbox: rpc error: code = DeadlineExceeded desc = failed to get sandbox image "registry.k8s.io/pause:3.7": failed to pull image "registry.k8s.io/pause:3.7": failed to pull and unpack image "registry.k8s.io/pause:3.7": failed to resolve reference "registry.k8s.io/pause:3.7": failed to do request: Head "https://asia-east1-docker.pkg.dev/v2/k8s-artifacts-prod/images/pause/manifests/3.7": dial tcp 64.233.189.82:443: i/o timeout
你需要手动拉取。
microk8s.ctr images pull docker.io/ghostwritten/registry.k8s.io.pause:3.7
microk8s.ctr images tag docker.io/ghostwritten/registry.k8s.io.pause:3.7 registry.k8s.io/pause:3.7
8. 启用必要的 MicroK8s 插件
现在您已经启动并运行了 Kubernetes 服务,您应该设置其他服务,例如 Kubernetes 仪表板、CoreDNS 或本地存储,以充分利用您的 Kubernetes。其中许多服务都可以作为 MicroK8s 插件使用,并且可以通过运行 microk8s enable 命令轻松启用:
sudo microk8s enable dns dashboard storage
可以通过运行 microk8s disable 命令随时禁用这些插件:
sudo microk8s disable dns dashboard storage
您可以使用 microk8s status 命令查看可用插件列表和当前启用的插件。
最重要的插件列表
dns
:部署DNS。其他人可能需要此插件,因此我们建议您始终启用它。
dashboard
: 部署 kubernetes 仪表板。storage
:创建默认存储类。此存储类使用指向主机上目录的 hostpath-provisioner。
ingress
:创建入口控制器。gpu
:通过启用 nvidia-docker 运行时和 nvidia-device-plugin-daemonset 将 GPU 暴露给 MicroK8s。要求主机系统上已安装 NVIDIA 驱动程序。istio
:部署核心 Istio 服务。您可以使用 microk8s istioctl 命令来管理您的部署。registry
:部署一个 docker private registry 并在 localhost:32000 上公开它。存储插件将作为此插件的一部分启用。
9. 部署示例容器工作负载
您现在可以使用 microk8s kubectl 来部署您的容器。在此示例中,我们部署了 nodered,这是一种用于将硬件设备连接在一起的编程工具
sudo microk8s kubectl create deployment nodered --image=nodered/node-red
使用 kubectl 检查 pod:
ubuntu@ubuntu:~$ sudo microk8s kubectl get pods
NAME READY STATUS RESTARTS AGE
nodered-7555b955f9-68cl9 0/1 ContainerCreating 0 3s
ubuntu@ubuntu:~$ sudo microk8s kubectl get pods
NAME READY STATUS RESTARTS AGE
nodered-7555b955f9-68cl9 1/1 Running 0 16s
接下来需要使用 kubectl 命令公开部署,以使其可从网络访问:
sudo microk8s kubectl expose deployment nodered --type=NodePort --port=1880 --name=nodered-service
10. 检查部署状态并访问您的应用程序
您可以使用以下命令检查部署状态:
$ sudo microk8s kubectl get services
ubuntu@ubuntu:~$ sudo microk8s kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 81m
nodered-service NodePort 10.152.183.46 <none> 1880:30663/TCP 5s
暴露的端口是随机生成的。在上面的例子中,我们可以看到端口是30663
。
为了访问应用程序的图形界面,您需要打开浏览器并输入以下 URL 方案:http://:<EXPOSED_PORT>
示例:http://192.168.1.222:30663/
11. 管理镜像
11.1 拉取
$ microk8s ctr images pull docker.io/calico/cni:v3.23.5
docker.io/calico/cni:v3.23.5: resolved |++++++++++++++++++++++++++++++++++++++|
index-sha256:7ca5c455cff6c0d661e33918d95a1133afb450411dbfb7e4369a9ecf5e0212dc: done |++++++++++++++++++++++++++++++++++++++|
manifest-sha256:9c5055a2b5bc0237ab160aee058135ca9f2a8f3c3eee313747a02edcec482f29: done |++++++++++++++++++++++++++++++++++++++|
layer-sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1: done |++++++++++++++++++++++++++++++++++++++|
config-sha256:1c979d623de9aef043cb4ff489da5636d61c39e30676224af0055240e1816382: done |++++++++++++++++++++++++++++++++++++++|
layer-sha256:cc0e45adf05a30a90384ba7024dbabdad9ae0bcd7b5a535c28dede741298fea3: done |++++++++++++++++++++++++++++++++++++++|
layer-sha256:51729c6e2acda05a05e203289f5956954814d878f67feb1a03f9941ec5b4008b: done |++++++++++++++++++++++++++++++++++++++|
layer-sha256:7430548aa23e56c14da929bbe5e9a2af0f9fd0beca3bd95e8925244058b83748: done |++++++++++++++++++++++++++++++++++++++|
layer-sha256:47c5dbbec31222325790ebad8c07d270a63689bd10dc8f54115c65db7c30ad1f: done |++++++++++++++++++++++++++++++++++++++|
layer-sha256:8efc3d73e2741a93be09f68c859da466f525b9d0bddb1cd2b2b633f14f232941: done |++++++++++++++++++++++++++++++++++++++|
layer-sha256:4c98a4f67c5a7b1058111d463051c98b23e46b75fc943fc2535899a73fc0c9f1: done |++++++++++++++++++++++++++++++++++++++|
layer-sha256:050b055d5078c5c6ad085d106c232561b0c705aa2173edafd5e7a94a1e908fc5: done |++++++++++++++++++++++++++++++++++++++|
elapsed: 28.7s total: 103.0 (3.6 MiB/s)unpacking linux/amd64 sha256:7ca5c455cff6c0d661e33918d95a1133afb450411dbfb7e4369a9ecf5e0212dc...
done: 11.392952756s
查看
microk8s.ctr image ls
REF TYPE DIGESTSIZE PLATFORMS LABELS
docker.io/calico/cni:v3.23.5 application/vnd.docker.distribution.manifest.list.v2+json sha256:7ca5c455cff6c0d661e33918d95a1133afb450411dbfb7e4369a9ecf5e0212dc 103.0 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le io.cri-containerd.image=managed
docker.io/calico/kube-controllers:v3.23.5 application/vnd.docker.distribution.manifest.list.v2+json sha256:58cc91c551e9e941a752e205eefed1c8da56f97a51e054b3d341b67bb7bf27eb 51.3 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le io.cri-containerd.image=managed
docker.io/calico/node:v3.23.5 application/vnd.docker.distribution.manifest.list.v2+json sha256:b7f4f7a0ce463de5d294fdf2bb13f61035ec6e3e5ee05dd61dcc8e79bc29d934 71.6 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le io.cri-containerd.image=managed
docker.io/ghostwritten/registry.k8s.io.pause:3.7 application/vnd.docker.distribution.manifest.v2+json sha256:445a99db22e9add9bfb15ddb1980861a329e5dff5c88d7eec9cbf08b6b2f4eb1 301.3 KiB linux/amd64 io.cri-containerd.image=managed
registry.k8s.io/pause:3.7 application/vnd.docker.distribution.manifest.v2+json sha256:445a99db22e9add9bfb15ddb1980861a329e5dff5c88d7eec9cbf08b6b2f4eb1 301.3 KiB linux/amd64 io.cri-containerd.image=managed
sha256:1c979d623de9aef043cb4ff489da5636d61c39e30676224af0055240e1816382 application/vnd.docker.distribution.manifest.list.v2+json sha256:7ca5c455cff6c0d661e33918d95a1133afb450411dbfb7e4369a9ecf5e0212dc 103.0 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le io.cri-containerd.image=managed
sha256:221177c6082a88ea4f6240ab2450d540955ac6f4d5454f0e15751b653ebda165 application/vnd.docker.distribution.manifest.v2+json sha256:445a99db22e9add9bfb15ddb1980861a329e5dff5c88d7eec9cbf08b6b2f4eb1 301.3 KiB linux/amd64 io.cri-containerd.image=managed
sha256:b6e6ee0788f2079219fecb418f573bbaad4c07f6f82b712ccc72684db8cc2deb application/vnd.docker.distribution.manifest.list.v2+json sha256:b7f4f7a0ce463de5d294fdf2bb13f61035ec6e3e5ee05dd61dcc8e79bc29d934 71.6 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le io.cri-containerd.image=managed
sha256:ea5536b1fa4a86e5ecf0803b7a1118d797f5ef51d2f452acf0b701d64dc6fcd9 application/vnd.docker.distribution.manifest.list.v2+json sha256:58cc91c551e9e941a752e205eefed1c8da56f97a51e054b3d341b67bb7bf27eb 51.3 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le io.cri-containerd.image=managed
打标签
microk8s.ctr images tag docker.io/ghostwritten/registry.k8s.io.pause:3.7 registry.k8s.io/pause:3.7
参考:
- Getting started with MicroK8s on Ubuntu Core
相关文章:
Ubuntu 新人上手 Microk8s 指南
文章目录1. 什么是 Ubuntu 核心2. 什么是 Kubernetes3. 什么是MicroK8s4. 为什么选择 Microk8s on Core5. 安装Ubuntu Core6. Ubuntu Core上安装 MicroK8S7. 启动 Microk8s8. 启用必要的 MicroK8s 插件9. 部署示例容器工作负载10. 检查部署状态并访问您的应用程序11. 管理镜像1…...
初阶C语言——实用调试技巧【详解】
文章目录1. 什么是bug?2. 调试是什么?有多重要?2.1 调试是什么?2.2 调试的基本步骤2.3 Debug和Release的介绍3.学会使用快捷键4.调试的时候查看程序当前信息4.1 查看临时变量的值4.2 查看内存信息4.3 查看调用堆栈4.4 查看汇编信息…...
Android 绘图基础:Canvas画布——自定义View基础(绘制表盘、矩形、圆形、弧、渐变)
Canvas画布,通过它我们可以自定义一个View,设置View的相关效果之类的。感觉用法差不多,重要的是要理解方法中传入的参数的含义,比如float类型的参数,传递的是坐标,已开是没有注意传入的参数时坐标,导致我迷…...
js拷贝数组对象:浅拷贝深拷贝
前言 js拷贝数组对象:浅拷贝&深拷贝,包括:Object.assign、concat、slice、JSON.parse(JSON.stringify()) 场景:弹窗选择组织结构(树形结构),选择后显示相关数据至输入框中(每次选…...
【C++】string类的使用
目录 一、标准库中的string类 二、string类的常用接口 1、string类对象的常见构造 2、string类对象的容量操作 2.1、size 与 length 2.2、capacity 与 reserve 2.3、resize 2.4、总结 3、string类对象的访问及遍历操作 3.1、operator[] 与 at 3.2、begin end 3.3、…...
微服务架构简介
微服务 软件架构是一个包含各种组织的系统组织,这些组件包括 Web服务器, 应用服务器, 数据库,存储, 通讯层), 它们彼此或和环境存在关系。系统架构的目标是解决利益相关者的关注点。 image Conway’s law: Organizations which design systems[...] are constrained…...
【Spring源码】AOP的开端:核心对象创建的准备工作
AOP的核心成员是如何被被加载的?本篇我们主要分析使用xml的逻辑,如果使用注解,增加注解处理类即可(ConfigurationClassPostProcessor)拿之前分析循环的时候举的例子🌰,它的日志切面就是通过xml进…...
新号涨粉22w,搞笑博主再次爆火,小红书近期创作趋势是什么?
2月借势元宵、情人节,小红书平台又涌现出哪些黑马博主?品牌在投放种草方面有何亮眼表现?为洞察小红书平台的内容创作趋势及品牌营销策略,新红推出2月月度榜单,从创作者及品牌两方面入手,解析月榜数据&#…...
【C++】30h速成C++从入门到精通(内存管理、函数/类模板)
C内存分布我们先来看一下下面的一段代码相关问题int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] {1, 2, 3, 4};char char2[] "abcd";char* pChar3 "abcd";int* ptr1 (int*)mal…...
自动驾驶决策概况
文章目录1. 第一章行为决策在自动驾驶系统架构中的位置2. 行为决策算法的种类2.1 基于规则的决策算法2.1.1 决策树2.1.2 有限状态机(FSM)2.1.3 基于本体论(Ontologies-based)2.2 基于统计的决策算法2.2.1 贝叶斯网络(B…...
金山轻维表项目进展自动通知
项目经理作为项目全局把控者,经常要和时间“赛跑”。需要实时了解到目前进展如何,跟进人是那些?哪些事项还未完成?项目整体会不会逾期?特别是在一些大型公司中,优秀的项目经理已经学会使用金山轻维表做项目…...
基于上下文分析的 Python 实时 API 推荐
原文来自微信公众号“编程语言Lab”:基于上下文分析的 Python 实时 API 推荐 搜索关注 “编程语言Lab”公众号(HW-PLLab)获取更多技术内容! 欢迎加入 编程语言社区 SIG-程序分析 参与交流讨论(加入方式:添加…...
软件测试-接口测试-代码实现接口测试
文章目录 1.request1.1 request介绍1.2 发送get请求1.3 发送set请求1.4 其他请求方式1.5 传递url参数1.6 响应内容解析1.7 cookie1.8 设置session2.集成UnitTest2.1 接口测试框架开发2.2 案例:使用TPShop项目完成对登录功能的接口测试1.request 1.1 request介绍 概念 基于py…...
中村成洋《垃圾回收的算法与实现》PDF 读书笔记
观前提醒 为了能够锻炼自己,我会查阅大量外文不停的修改内容,少部分会提示成中文。 可能有误,请见谅 提示:若是觉得阅读困难,可以看如下内容 脚本之家可获取,若失效可私信浏览器的沙拉查词扩展…...
docker 网络模式
docker 网络模式主要分为四种,可以通过docker network ls 查看 ~$ docker network ls NETWORK ID NAME DRIVER SCOPE a51d97d72f10 bridge br…...
数据库开发(一文概括mysql基本知识)
Mysql 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 关系型数据库(Relational Database Management System:关系数据库管理系统)应用软件之一。mysql在问开发中,几乎必不可少,因为其他的可能是要收费的&#x…...
【JVM】详解Java内存区域和分配
这里写目录标题一、前言二、运行时数据分区2.1程序计数器(PC)2.2 Java虚拟机栈2.3 本地方法栈2.4 Java堆2.5 方法区2.5.1 运行时常量池2.6 直接内存三、HotSpot虚拟机对象探秘3.1 对象的创建3.2 对象的内存布局3.3 对象的访问定位一、前言 C/C需要自行回收和释放已经没用的对象…...
JAVA开发(史上最完整追本溯源JAVA历史、发展和学习)
(第二次世界大战1931-1945) 世界上最先进的技术往往是由于战争催生,在第二次世界大战中除了飞机,坦克和大炮的武器较量外,在隐秘战线的情报工作其实更为重要,在军队将领来往的电报中,为了防止军事情报的泄漏ÿ…...
Qt 防止程序退出
文章目录摘要QWidgetQML方法 1方法 2关键字: Qt、 eventFilter、 Close、 键盘、 任务管理器摘要 今天要聊得内容还是怎么防止别人关闭我的程序,之前都是在win下面,一般都是用过钩子连捕获键盘事件,完了吧对应的事件忽略&#x…...
【校验码 - 循环冗余校验码CRC】
水善利万物而不争,处众人之所恶,故几于道💦 目录 循环冗余校验码 1.多项式 2.CRC编码的组成 3.校验码的生成 4.例题: 循环冗余校验码 广泛地在网络通信及磁盘存储时采用。 1.多项式 在循环冗余校验(CRC)码中,无一例…...
【Rust】一文讲透Rust中的PartialEq和Eq
前言 本文将围绕对象:PartialEq和Eq,以及PartialOrd和Ord,即四个Rust中重点的Compare Trait进行讨论并解释其中的细节,内容涵盖理论以及代码实现。 在正式介绍PartialEq和Eq、以及PartialOrd和Ord之前,本文会首先介绍…...
Vulnhub靶场----9、DC-9
文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-9下载地址:https://download.vulnhub.com/dc/DC-9.zip kali:192.168.144.148 DC-9:192.168.144.158 二、渗透流程 1、信息收集nmap -T5 -A -p- -sV -sT 192.168.144.158思路&am…...
使用Containerd搭建K8s集群【v1.25】
[toc] 一、安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多集群中所有机器之间网络互通可以访问外网,需要拉取镜像禁止swap分区二、准备环境 角色IP…...
NMT - 构建双语概率词典(Probabilistic dictionaries)
文章目录一、安装依赖包mosesdecoder安装 mgiza二、数据预处理三、训练本文参考:How to train your Bicleaner https://github.com/bitextor/bicleaner/wiki/How-to-train-your-Bicleaner 一、安装依赖包 这个过程主要依赖于 mosesdecodermgiza mosesdecoder git…...
《ChatGPT是怎样炼成的》
ChatGPT 在全世界范围内风靡一时,我现在每天都会使用 ChatGPT 帮我回答几个问题,甚至有的时候在一天内我和它对话的时间比和正常人类对话还要多,因为它确实“法力无边,功能强大”。 ChatGPT 可以帮助我解读程序,做翻译…...
Streaming System是第一章翻译
GIthub链接,欢迎志同道合的小伙伴一起翻译 Chapter 1.Streaming101 如今,流数据处理在大数据中是非常重要的,其主要原因是: 企业渴望对他们的数据有更及时的了解,而转换到流处理是实现更低延迟的一个好方法…...
abap MODIFY常用语法解析
MODIFY 是既可以操作数据又可以操作内表的一个语法, 实现的逻辑都一样. 如果你内表或数据库中存在该行数据会对该行数据进行更新. 如果不存在,就会插入数据. , 1.如果it_tab是带有标题行的内表,是可以忽略FROM wa_tab工作区的 MODIFY it_tab .2.把工作区wa_tab中的数据更新…...
[媒体分流直播]媒体直播和传统直播的区别,以及媒体直播的特点
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 直播毋庸置疑已经融入到了我们生活的方方面面,小到才艺,游戏,大到政策的发布,许多企业和机构也越来越重视直播,那么一场活动怎…...
打地鼠游戏-第14届蓝桥杯STEMA测评Scratch真题精选
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第102讲。 蓝桥杯选拔赛现已更名为STEMA,即STEM 能力测试,是蓝桥杯大赛组委会与美国普林斯顿多…...
链表经典刷题--快慢指针与双指针
本篇总结链表解题思路----快慢指针,其实也就是双指针,这个快慢并不单纯指“快慢”,它更多的可以表示,速度快慢,距离长度,时间大小等等,用法很有趣也很独特,理解它的思想,…...
建设小游戏网站空间类型选择/关键词搜索排名公司
写在最前 文章标题谈到了面向协议编程(下文简称 POP),是因为前几天阅读了一篇讲 Swift 中 POP 的文章。本文会以此为出发点,聊聊相关的概念,比如接口、mixin、组合模式、多继承等,同时也会借助各种语言中的例子来阐述我的思想。 那…...
网站建设教程 三级分销/湘潭seo快速排名
2019独角兽企业重金招聘Python工程师标准>>> 这里是一个用Eclipse的JUnit4教程: 首先,在项目下建立一个test包,然后再就是新建测试类,右键,选择JUnit Test Case,如下图: 然后选择JUnit4&#…...
商务网站设计实训总结/seo优化的网站
JS 网页打印解决方案参考文章: (1)JS 网页打印解决方案 (2)https://www.cnblogs.com/sunrunzhi/p/5310020.html 备忘一下。...
静态页优秀网站/seo排名赚钱
《C4D的十万个为什么》首发于 公众号:苦七君 免费搜索查看更多问题:kuqijun.com 问题: C4D不能加载object文件,obj文件?提示未知文件格式 答案: 要显示文件名后缀看一下,有时候在文件类型里面…...
昆山做网站找哪家好/企业如何注册自己的网站
目录: 1 网络请求API和封装 2 展示弹窗和页面分享 3 设备信息和位置信息 4 小程序Storage存储 5 页面跳转和数据传递 6 小程序登录流程演练 小程序的网络请求,不管是post还是get的请求的数据都是写在data里面的。 网络请求一般写在onLoad()的页面生…...
上海网站设计开发公司/自助建站的优势
为什么80%的码农都做不了架构师?>>> 命令行多TAB页: http://www.powercmd.com/windows 资源管理器TAB页:http://ejie.me/转载于:https://my.oschina.net/hebad/blog/311183...