Kubernetes-running app on kube
Docker
安装Docker
首先,您需要在Linux机器上安装Docker。如果您不使用Linux,则需要启动一个Linux虚拟机(VM)并在该虚拟机中运行Docker。如果你使用的是Mac或Windows系统,并按照指令安装Docker, Docker将为你建立一个虚拟机,并在该虚拟机中运行Docker守护进程。Docker客户端可执行文件将在您的主机操作系统上可用,并将与虚拟机中的守护进程通信。
要安装Docker,请按照您的特定操作系统http://docs.docker.com/engine/ installation/的说明进行安装。安装完成后,您可以使用Docker客户端可执行文件运行各种Docker命令。例如,您可以尝试从Docker Hub中提取并运行一个现有的image
Docker注册表,其中包含许多知名软件包的现成容器image。其中之一是busybox image,您将使用它来运行一个简单的echo“Hello world”命令。
如果您不熟悉busybox,它是一个可执行文件,它结合了许多标准的UNIX命令行工具,如echo、ls、gzip等。除了busybox images,您还可以使用任何其他成熟的操作系统容器images,例如
Fedora、Ubuntu或其他类似的镜像,只要它包含echo可执行文件。
如何运行busybox映像?您不需要下载或安装任何东西。使用docker run命令并指定要下载和运行的映像以及(可选地)要执行的命令,如下面的Listing 2:
在你的例子中,应用程序是一个单一的可执行程序(busybox),但它也可能是一个具有许多依赖项的极其复杂的应用程序。set up和运行应用程序的整个过程将完全相同。同样重要的是,应用程序是在容器中执行的,与机器上运行的所有其他进程完全隔离。
docker run发生了什么?
首先,Docker检查busybox:latest映像是否已经存在于您的本地机器上。它不是,所以Docker从Docker Hub注册表http://docker.io中提取了它。在映像下载到您的机器之后,Docker从该映像创建了一个容器,并在其中运行命令。echo命令将文本打印到STDOUT,然后进程终止,容器停止。
看Figure 2.1
运行其他images
运行其他现有容器映像的方式与运行busybox映像的方式大致相同。实际上,它通常更简单,因为您通常不需要像在示例中那样指定要执行什么命令(echo "Hello world")。应该执行的命令通常包含在映像本身中,但是如果需要,也可以覆盖它。
$ docker run <image>
给image打tag
所有的软件包都会更新,所以一个软件包通常不止一个版本。Docker支持以相同的名称拥有相同映像的多个版本或变体。每个变体必须有一个唯一的标记。
$ docker run <image>:<tag>
创建Dockerfile
要将应用程序打包成镜像,首先需要创建一个名为Dockerfile的文件,其中包含Docker在构建镜像时执行的指令列表。Dockerfile需要与app.js(相当于你的main文件或者启动类)文件在同一个目录下,并且应该包含如下清单所示的命令。
FROM行定义了将用作起点的容器映像(要在其上构建的基本映像)。
在本例中,使用的是节点容器映像标记7。
在第二行中,将本地目录中的app.js文件以相同的名称(app.js)添加到图像中的根目录中。
最后,在第三行中,定义在运行映像时应该执行什么命令。在您的示例中,命令是node app.js。
选择基本图像(base image node:7)
你可能想知道为什么我们选择这个特定的图像作为你的基础。因为你的应用程序是一个node .js应用程序,你需要你的镜像包含节点二进制可执行文件来运行应用程序。你可以使用任何包含该二进制文件的镜像,或者你甚至可以使用Linux发行版基础镜像,如fedora或ubuntu并安装
在构建映像时将Node.js装入容器。但由于节点映像是专门为运行node .js应用而制作的,并且包含了运行应用所需的所有内容,因此您将使用它作为基础映像。
或者你也可以选择Ubuntu Golang等其他base-image
创建Container
现在你有了Dockerfile和app.js文件,你就有了构建镜像所需的一切。要构建它,运行以下Docker命令:
$ docker build -t kubia .
Figure2.2显示了构建过程中发生的情况。您告诉Docker基于当前目录的内容构建一个名为kubia的映像(注意build命令末尾的点)。Docker将在目录中查找Dockerfile,并根据文件中的说明构建镜像。
如何构建image
构建过程不是由Docker客户端执行的。相反,整个目录的内容被上传到Docker守护进程,并在那里构建镜像。
客户机和守护进程根本不需要在同一台机器上。如果你正在使用Docker在非linux操作系统上,客户端在您的主机操作系统上,但守护进程在虚拟机中运行。因为构建目录中的所有文件都被上传到守护进程,如果它包含许多大文件,并且守护进程不在本地运行,则上传可能需要更长的时间。
TIP:不要在构建目录中包含任何不必要的文件,因为它们会减慢构建过程——尤其是当Docker守护进程在远程机器上时。
在构建过程中,Docker将首先从公共映像存储库(Docker Hub)中提取基本映像(node:7),除非该映像已经被提取并存储在您的机器上。
image不是单个的、大的二进制 blob,而是由多个层组成的,您可能已经在运行 busybox 示例时注意到了这一点(有多个 Pull complete 行,每个层一个)。
例如,如果你基于同一个基础image(例如本例中的node:7)创建多个images,那么所有组成基础image的层只会被存储一次,而且,当拉取一个image时,Docker会单独下载每个层,有些层可能已经存储在你的机器上,所以Docker只会下载那些没有存储的层。
你可能认为每个 Dockerfile 只创建一个新层,但事实并非如此。
在构建image时,将为每个单独的命令创建一个新层。
在Dockerfile中。在构建image期间,在拉出基础的所有层之后
Docker会在它们上面创建一个新层,并将app.js文件添加进去。
然后,它将创建另一个层,该层将指定在运行image时应该执行的命令。最后一层将被标记为kubia:latest。这是Figure2.3所示,它还显示了另一个名为other:latest的image将如何使用与您自己的image相同的Node.js image层。
构建过程完成后,本地存储了一个新image。您可以通过让Docker列出所有本地存储的image来查看它,如下面的Listing所示。
Running the container image
# 以kubia作为image 创建 一个kubia-container
# 本地机器上的8080端口将映射到容器内的8080端口(-p 8080:8080选项)
# 通过http://localhost:8080访问该应用程序。$ docker run --name kubia-container -p 8080:8080 -d kubia
列出所有正在运行的容器
在当前容器中运行shell
# -i 它确保STDIN保持打开状态。在shell中输入命令时需要它。
# -t 分配一个伪终端(TTY)。
$ docker exec -it kubia-container bash
进入容器查看进程
停止或者移除容器
$ docker stop kubia-container
$ docker rm kubia-container
创建Kubernetes集群
使用Minikub运行本地单节点Kubernetes集群
安装MINIKUBE
Minikube是一个单独的二进制文件,需要下载并放到您的路径上。它适用于OSX、Linux和Windows。要安装它,最好从GitHub上的Minikube存储库(http://github.com/kubernetes/minikube)开始,并按照那里的说明进行安装。
例如,在OSX和Linux上,Minikube可以通过一个命令下载和设置。对于OSX,如下:
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/
➥ v0.23.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube
➥ /usr/local/bin/
在Linux上,您可以下载不同的版本(URL中将“darwin”替换为“Linux”)。在Windows上,您可以手动下载该文件,将其重命名为minikube.exe,并将其放在您的路径中。Minikube在虚拟机中通过VirtualBox或KVM运行Kubernetes,因此您还需要安装其中一个,然后才能启动Minikube集群。
在本地安装了Minikube之后,可以使用以下清单中的命令立即启动Kubernetes集群。
安装kubernetes客户端(kubectl)
要与Kubernetes交互,还需要kubectl CLI客户端。同样,您所需要做的就是下载它并将其放在您的路径上。例如,OSX的最新稳定版本可以使用以下命令下载和安装:
$ curl -LO https://storage.googleapis.com/kubernetes-release/release
➥ /$(curl -s https://storage.googleapis.com/kubernetes-release/release
➥ /stable.txt)/bin/darwin/amd64/kubectl
➥ && chmod +x kubectl
➥ && sudo mv kubectl /usr/local/bin/
要下载Linux版本的kubectl,请将URL中的darwin替换为Linux。对于Windows,将其替换为Windows并在末尾添加.exe。
检查cluster是否up
$ kubectl cluster-info
Kubernetes master is running at https://192.168.99.100:8443
KubeDNS is running at https://192.168.99.100:8443/api/v1/proxy/...
kubernetes-dashboard is running at https://192.168.99.100:8443/api/v1/...
创建3-nodes的clsuter
$ gcloud container clusters create kubia --num-nodes 3
➥ --machine-type f1-micro
Creating cluster kubia...done.
Created [https://container.googleapis.com/v1/projects/kubia1-
1227/zones/europe-west1-d/clusters/kubia].
kubeconfig entry generated for kubia.
NAME ZONE MST_VER MASTER_IP TYPE NODE_VER NUM_NODES STATUS
kubia eu-w1d 1.5.3 104.155.92.30 f1-micro 1.5.3 3 RUNNING
下图是一个集群交互的草图:
$ kubectl get nodes
NAME STATUS AGE VERSION
gke-kubia-85f6-node-0rrx Ready 1m v1.5.3
gke-kubia-85f6-node-heo1 Ready 1m v1.5.3
gke-kubia-85f6-node-vs9f Ready 1m v1.5.3
查看当前node状态
$ kubectl describe node gke-kubia-85f6-node-0rrx
将image部署在kubernetes上
尝试运行您之前创建并推送到Docker Hub的image。下面是如何在Kubernetes中运行它
$ kubectl run kubia --image=luksa/kubia --port=8080 --generator=run/v1
replicationcontroller "kubia" created
什么是pod?
pod是一组由一个或多个紧密相关的容器,它们总是在相同的工作节点和相同的Linux名称空间中一起运行。每个pod就像一台独立的机器,有自己的IP、主机名、进程等等,运行单个应用程序。
应用程序可以是在单个容器中运行的单个进程,也可以是一个主应用程序进程和其他支持进程,每个进程在自己的容器中运行。
为了更好地理解容器、pod和节点之间的关系,请查看Figure2.5。如您所见,每个pod都有自己的IP,并包含一个或多个容器,每个容器运行一个应用程序进程。pod分布在不同的工作节点上。
# 查看所有pods
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
kubia-4jfyf 0/1 Pending 0 1m
kubelet-09fyf 1/1 Running 0 10m
下图是Kubernetes中运行容器image必须执行的步骤:
- 首先将构建好的image推送到Docker Hub,这个推送是为了你的worker nodes 去使用,本地的话你可以直接放在本地仓库
-
当您运行kubectl命令时,它通过向Kubernetes API服务器发送REST HTTP请求,在集群中创建了一个新的ReplicationController对象。
-
ReplicationController创建一个新的pod,然后由Scheduler将其调度到其中一个工作节点
-
该节点上的Kubelet看到pod被调度到它,并指示Docker从注册表中提取指定的映像,因为该映像在本地不可用。
每个pod都有自己的IP地址,但是这个地址位于集群内部,不能从集群外部访问。为了让pod能从外面进入,你要通过一个服务对象。您将创建一个LoadBalancer类型的特殊服务,因为如果您创建一个常规服务(一个ClusterIP服务),比如pod,那么它也只能从集群内部访问。通过创建loadbalancer类型的服务,将创建一个外部负载平衡器,您可以通过负载平衡器的公共IP连接到pod。
$ kubectl expose rc kubia --type=LoadBalancer --name kubia-http
service "kubia-http" exposed
查看服务
$ kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.3.240.1 <none> 443/TCP 34m
kubia-http 10.3.246.185 <pending> 8080:31348/TCP 4s$ kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.3.240.1 <none> 443/TCP 35m
kubia-http 10.3.246.185 104.155.74.57 8080:31348/TCP 1m
要从集群外部访问该pod,您告诉Kubernetes将由该ReplicationController管理的所有pod公开为一个服务。这三个要素的大致情况见Figure2.7
水平扩展应用程序
使用Kubernetes的主要好处之一是可以简单地扩展部署,将运行实例的数量增加到3个。
$ kubectl get replicationcontrollers
NAME DESIRED CURRENT AGE
kubia 1 1 17m$ kubectl scale rc kubia --replicas=3
replicationcontroller "kubia" scaled$ kubectl get rc
NAME DESIRED CURRENT READY AGE
kubia 3 3 2 17m$ kubectl get pods
NAME READY STATUS RESTARTS AGE
kubia-hczji 1/1 Running 0 7s
kubia-iq9y6 0/1 Pending 0 7s
kubia-4jfyf 1/1 Running 0 18m
图2.8显示了系统的新状态,你仍然有单一的服务和单一的RC,但是现在有三个pod实例,都由ReplicationController管理。该服务不再将所有请求发送到单个pod,而是将它们分散到所有三个pod中。
$ kubectl describe pod kubia-hczji
Name: kubia-hczji
Namespace: default
Node: gke-kubia-85f6-node-vs9f/10.132.0.3
Start Time: Fri, 29 Apr 2016 14:12:33 +0200
Labels: run=kubia
Status: Running
IP: 10.1.0.2
Controllers: ReplicationController/kubia
Containers: ...
Conditions:Type StatusReady True
Volumes: ...
Events: ...$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubia-hczji 1/1 Running 0 7s 10.1.0.2 gke-kubia-85...
$ kubectl cluster-info | grep dashboard
kubernetes-dashboard is running at https://104.155.108.191/api/v1/proxy/
➥ namespaces/kube-system/services/kubernetes-dashboard
未完待续。。。。。
相关文章:
Kubernetes-running app on kube
Docker 安装Docker 首先,您需要在Linux机器上安装Docker。如果您不使用Linux,则需要启动一个Linux虚拟机(VM)并在该虚拟机中运行Docker。如果你使用的是Mac或Windows系统,并按照指令安装Docker, Docker将为你建立一个虚拟机,并在…...
简述如何系统地学习Python
随着人工智能、大数据和云计算等技术的快速发展,编程已经成为了当今社会中不可或缺的一项技能。Python作为一种高级编程语言,因其简洁明了的语法、强大的功能和广泛的应用领域,成为了许多初学者和专业人士的首选。那么,如何系统地…...
bsd猜想 Murmuration of Eliptic Curves(笔记)
BSD Alexey Pozdnyakov (University of Connecticut) YUTUBE视频, B站搬运地址新生代女数学家Nina Zubrilina得到椭圆曲线椋鸟群飞模式精确公式与证明 Arithmetic Geometry算术几何 希尔伯特第十问题 希尔伯特第十问题(Hilbert’s Tenth Problem&#…...
小米汽车正式发布:开启智能电动新篇章
随着科技的不断进步,汽车产业正经历着前所未有的变革。智能电动汽车作为这一变革的重要方向,正吸引着越来越多的目光。在这个充满机遇和挑战的时代,小米汽车凭借其卓越的技术实力和深厚的市场底蕴,终于迈出了坚实的一步。今天&…...
线性代数笔记25--复数矩阵、快速傅里叶变换
1. 复数矩阵 复向量 Z [ z 1 z 2 z 3 z 4 ⋯ ] Z\begin{bmatrix} z_1\\z_2\\z_3\\z_4\\ \cdots \end{bmatrix} Z z1z2z3z4⋯ 复向量的模长 ∣ z ∣ z ‾ ⊤ z [ z ‾ 1 z ‾ 2 z ‾ 3 ] [ z 1 z 2 z 3 ] \lvert z\rvert\overline z^{\top}z \begin{bmatrix…...
洛谷 P8783 [蓝桥杯 2022 省 B] 统计子矩阵
题目描述 给定一个 NM 的矩阵 A,请你统计有多少个子矩阵 (最小 1111, 最大 NM 满足子矩阵中所有数的和不超过给定的整数 K。 输入格式 第一行包含三个整数 N,M 和 K。 之后 N 行每行包含 M 个整数, 代表矩阵 A。 输出格式 一个整数代表答案。 输入输出样例 …...
Rust 实战练习 - 8. 内存,ASM,外挂 【重磅】
目标: C写一个Demo版本的游戏由浅入深,了解外挂原理Linux/Android下实现内存读取ptrace实现内存修改(依赖第三方库) 先准备一个C写的小游戏 #include <stdio.h> #include <string.h>struct Role {float pos_x; // …...
XUbuntu22.04之Typora快捷键Ctrl+5不生效问题(二百二十六)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...
GRE_MGRE综合实验
目录 1、R5为ISP,只能进行IP地址配置,其所有地址均配为公有IP地址。 IP配置 配置公网全网通 2、(1)R1和R5间使用PPP的PAP认证,R5为主认证方。 PAP认证 (2)R2与R5之间使用ppp的CHAP认证&am…...
把组合损失中的权重设置为可学习参数
目前的需求是:有一个模型,准备使用组合损失,其中有2个或者多个损失函数。准备对其进行加权并线性叠加。但想让这些权重进行自我学习,更新迭代成最优加权组合。 目录 1、构建组合损失类 2、调用组合损失类 3、为其构建优化器 …...
用Bat启动jar程序
前情提要:在使用冰蝎、哥斯拉等一些列工具时(PS:一系列需要利用Java环境并打开的jar),我就在想能不能写一段代码点一下,就能打开程序而不用去输入命令 echo off echo 程序启动中... start javaw -noverif…...
网站维护页404源码
网站维护页404源码,布局简洁,上传即可使用。 网站维护页404源码...
jmeter链路压测
比如登录后返回token,业务打印上传的操作需要用到token 线程组中添加登录请求,并执行 1、添加登录并执行,查看结果 2、结果树中下拉选择正则表达式,将token参数和值复制粘贴到下方,将token值改为(.*?)࿰…...
香港服务器怎么看是CN2 GT线路还是CN2 GIA线路?
不知道有没有小伙伴们注意过,很多人在租用香港服务器的时候都习惯性选择 CN2 线路?仿佛香港服务器是否采用 CN2 线路成为个人企业选择香港服务器的一个标准。其实,香港服务器有CN2、优化直连(163)、BGP多线(包含了国际和国内线路),…...
CrossOver软件2024免费 最新版本详细介绍 CrossOver软件好用吗 Mac电脑玩Windows游戏
CrossOver是一款由CodeWeavers公司开发的软件,它可以在Mac和Linux等操作系统上运行Windows软件,而无需在计算机上安装Windows操作系统。这款软件的核心技术是Wine,它是一种在Linux和macOS等操作系统上运行Windows应用程序的开源软件。 Cross…...
harbor api v2.0
harbor api v2.0 v2.0 v2.0 “harbor api v2.0”与原来区别较大,此处harbor也做了https。另外,通过接口拿到的数据也是只能默认1页10个,所以脚本根据实际情况一页页的抓取数据 脚本主要用于统计repo、image,以及所有镜像的tag数&…...
Vue 表单数据双向绑定 v-mode
每一个Vue项目,每一个系统,肯定涉及到表单的双向数据绑定问题,这一部分是 vue 的重中之重,不是因为知识点复杂,而是因为只要参与 vue 项目的开发,那么就必不可少。 单项绑定 :数据变࿰…...
tab切换组件,可横向自适应滑动
示例图: 注:需要引入Jquery <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.tabs-box {width: 100%;height: auto;}.tab-header-box {display: flex;overflow: hidden…...
设计模式---单例模式
目录 一、五种单例模式的实现方式 1.饿汉模式 2.饿汉枚举类型 3.懒汉式 4.双检锁懒汉式 5.内部类懒汉式 二、JDK 中单例的体现 一、五种单例模式的实现方式 1.饿汉模式 public class Singleton1 implements Serializable {private Singleton1() {if (INSTANCE ! null) {thro…...
HarmonyOS 应用开发之启动/停止本地PageAbility
启动本地PageAbility PageAbility相关的能力通过featureAbility提供,启动本地Ability通过featureAbility中的startAbility接口实现。 表1 featureAbility接口说明 接口名接口描述startAbility(parameter: StartAbilityParameter)启动Ability。startAbilityForRes…...
BaseDao封装增删改查
文章目录 什么是BaseDao操作代码增删改查询单个数据查询多个数据 总结 什么是BaseDao BaseDao是: 数据库里负责增加,删除,修改,查询 具体来说是一种接口代码,公共方法的接口类。 在dao层新建basedao,其他dao层接口继承basedao 相…...
Redis入门到实战-第十三弹
Redis入门到实战 Redis中JSON数据类型常见操作官网地址Redis概述JSON常见操作更新计划 Redis中JSON数据类型常见操作 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是…...
深度学习InputStreamReader类
咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好…...
2023年后端面试总结
备注:这篇文章是我在2023年年初在自己的网站上写的,最近在迁移技术文章,我感觉这个也是和咱程序员相关,所以今天就决定把它迁移过来。 .......................................................................分割线..........…...
axios实现前后端通信报错Unsupported Media
使用axios向SpringBoot的后端使用post请求发送数据,发现报错Unsupported Media,最终解决方案如下: 检查变量名字是否一样,即前端传给后端的json数据键名要与后端接收的对象的成员变量名字一致检查Content-Type,post请…...
网络套接字补充——TCP网络编程
六、TCP网络编程 6.1IP地址字符串和整数之间的转换接口 //字符串转整数接口 #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int inet_aton(const char *cp, struct in_addr *inp); int inet_pton(int af, const char *strptr, …...
Nginx-记
Nginx是一个高性能的web服务器和反向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 (1)更快 这表现在两个方面:一方面,在正常情况下&…...
JS面试题:call,apply,bind区别
1. 共同点 三者共同点都是改变函数内部this指向的方法 2. call用法 ini 复制代码 var a 2; var b 2; function func() { console.log(this.a, this.b) } let obj { a: 1, b: 1 } func.call(obj) func.call() 输出结果: 复制代码 1 1 2 2 解析࿱…...
Charles抓包配置代理手机连接
Charles下载地址: Charles_100519.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘123云盘为您提供Charles_100519.zip最新版正式版官方版绿色版下载,Charles_100519.zip安卓版手机版apk免费下载安装到手机,支持电脑端一键快捷安装https://www.123pan.com…...
NA555、NE555、SA555和SE555系列精密定时器
这份文件是关于德州仪器(Texas Instruments)生产的NA555、NE555、SA555和SE555系列精密定时器(Precision Timers)的数据手册。以下是该文件的核心内容概述: 产品特性: 德州仪器的NA555、NE555、SA555和SE55…...
分销系统什么意思/安徽seo网络优化师
简单的C语言编辑器课程设计《编译原理》课程设计简单的C语言编译器6 -扬 州 大 学编译原理课程设计报告题 目题 目 简单的编译器班 级 计科0802班学 号 081202427姓 名 张 俊指导教师 姜 卯 生成 绩扬州大学信息工程学院2011课程设计题目实现一个简单的编译器课程设计目的通过编…...
长沙官网网站建设/直播回放老卡怎么回事
基础练习 杨辉三角形 时间限制:1.0s 内存限制:256.0MB问题描述杨辉三角形又称Pascal三角形,它的第i1行是(ab)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角…...
网站策划运营方案/百度电话号码
据Foss Patents报道,地方法院法官Paul Grewal已命令Google和Oracle的首席执行官Larry Ellison和Larry Page 参加法庭和解会谈 。 由于该案的审判长阿尔苏普(Alsup)法官建议对首席执行官下达命令,因此他们将无法要求审判长否决裁判…...
公司商城网站建设/百度指数的搜索指数
项目名:俄罗斯方块 组名:新蜂 测试者:韩媛媛(nice!团队) 用户需求规格说明书URL:http://www.cnblogs.com/Boxer1994/p/6084035.html 组长博客URL:http://www.cnblogs.com/Boxer1994/…...
济南市政府采购中心南做网站/微信朋友圈广告如何投放
最近在做京东案例:当搜索框随着滚动条的滚动产生渐变效果 /*** Created by Administrator on 2019/4/11.*/ window.onload function () {//:头部搜索快js的效果//1:获取当前banner的高度var banner document.querySelector(".jd_banner");v…...
ppt做的比较好的网站/网页制作的软件
我们常见的执行js代码都是放入到HTML引入后然后通过HTML文件来执行胡查看代码,显然这是比较麻烦的事情, 如果你的电脑里面安装了node.js,你可以使用node来直接使用node来运行你想要运行的js文件, 具体的操作如图所示:…...