飞越天空之城

欢迎来到程序小院

飞越天空之城

玩法:左边的按钮是控制小人儿飞起来的方向的,右边的按钮是控制它飞的高度的,
左边控制在正上方时可以让小人儿沿着一个方向飞跃,否则会撞到两边的黑墙,
右边的按钮如果加足够的话,会让你的小人儿飞的更高哦^^。

开始游戏

html

<canvas id="gameCanvas" width="320" ></canvas>

css

*{margin:0;padding:0;
}
body,div{text-align:center;
}
img {max-width:100%;height:auto;width:auto9;
}

js

function e(c) {throw c;
}
var m = void 0,
q = !0,
s = null,
t = !1;
function da() {return function(c) {return c}
}
function u() {return function() {}
}
function x(c) {return function(d) {this[c] = d}
}
function A(c) {return function() {return this[c]}
}
function B(c) {return function() {return c}
}
var C = C || {};
C.U = C.U || {};
C.n = {};
H = window;
H = Object.prototype;
delete window._p;
C.bd = function(c) {return document.createElement(c)
};
C.qb = function(c, d, f, g) {c.addEventListener(d, f, g)
};
C.iaa = "undefined" !== typeof require && require("fs");
C.pda = function(c, d) {if (c) if (c instanceof Array) for (var f = 0,g = c.length; f < g && d.call(m, c[f], f) !== t; f++);else for (f in c) if (d.call(m, c[f], f) === t) break
};
C.g1 = function(c) {if (!c) return C.log("invalid URL"),t;var d = c.indexOf("://");if ( - 1 == d) return t;d = c.indexOf("/", d + 3);return ( - 1 == d ? c: c.substring(0, d)) != location.origin
};
C.async = {B9: function(c) {var d = this.Uca;if (!d.d0) {var f = d.length,g = d.$ga,h = d.ega,k = h.mg,n = h.Nca,p = h.O3,h = h.z6a;if (c) {if (d.d0 = c, k) return k.call(n, c)} else {var r = Array.apply(s, arguments).slice(1),v = r.length;0 == v ? r = s: 1 == v && (r = r[0]);g[this.index] = r;d.count--;p && p.call(h, r, f - d.count, f);0 == d.count && k && k.apply(n, [s, g])}}},s$: u(),X0a: function(c, d, f) {var g = C.async;f !== m ? ("function" == typeof d && (d = {O3: d}), d.mg = f || d.mg) : d !== m ? "function" == typeof d && (d = {mg: d}) : c !== m ? d = {}: e("arguments error!");var h = (f = c instanceof Array) ? c.length: Object.keys(c).length;if (0 == h) d.mg && d.mg.call(d.Nca, s);else {var k = {length: h,count: h,ega: d,$ga: f ? [] : {}};C.pda(c,function(c, f) {if (k.d0) return t;var h = !d.mg && !d.O3 ? g.s$: g.B9.bind({Uca: k,index: f});c(h, f)})}},map: function(c, d, f) {var g = this,h = arguments.length;"function" == typeof d && (d = {n1: d});3 === h ? d.mg = f || d.mg: 2 > h && e("arguments error!");"function" == typeof d && (d = {n1: d});f !== m ? d.mg = f || d.mg: c === m && e("arguments error!");var k = (h = c instanceof Array) ? c.length: Object.keys(c).length;if (0 === k) d.mg && d.mg.call(d.Nca, s);else {var n = {length: k,count: k,ega: d,$ga: h ? [] : {}};C.pda(c,function(c, f) {if (n.d0) return t;var h = !d.mg ? g.s$: g.B9.bind({Uca: n,index: f});d.n1.call(d.EDa, c, f, h)})}}
};
C.path = {join: function() {for (var c = arguments.length,d = "",f = 0; f < c; f++) d = (d + ("" == d ? "": "/") + arguments[f]).replace(/(\/|\\\\)$/, "");return d},Cp: function(c) {return (c = /(\.[^\.\/\?\\]*)(\?.*)?$/.exec(c)) ? c[1] : s},c0a: function(c) {if (c) {var d = c.lastIndexOf(".");if ( - 1 !== d) return c.substring(0, d)}return c},lxa: function(c, d) {var f = c.indexOf("?");0 < f && (c = c.substring(0, f));f = /(\/|\\\\)([^(\/|\\\\)]+)$/g.exec(c.replace(/(\/|\\\\)$/, ""));if (!f) return s;f = f[2];return d && c.substring(c.length - d.length).toLowerCase() == d.toLowerCase() ?f.substring(0, f.length - d.length) : f},dirname: function(c) {return c.replace(/((.*)(\/|\\|\\\\))?(.*?\..*$)?/, "$2")},s_: function(c, d) {d = d || "";var f = c.indexOf("?"),g = "";0 < f && (g = c.substring(f), c = c.substring(0, f));f = c.lastIndexOf(".");return 0 > f ? c + d + g: c.substring(0, f) + d + g},BB: function(c, d, f) {if (0 == d.indexOf(".")) return this.s_(c, d);var g = c.indexOf("?"),h = "";f = f ? this.Cp(c) : "";0 < g && (h = c.substring(g), c = c.substring(0, g));g = c.lastIndexOf("/");return c.substring(0, 0 >= g ? 0 : g + 1) + d + f + h}
};
C.M = {paa: {},KN: {},wta: {},Hv: {},dR: "",dxa: "",fj: {},cI: function() {return window.XMLHttpRequest ? new window.XMLHttpRequest: new ActiveXObject("MSXML2.XMLHTTP")},N$: function(c) {var d = c[0],f = c[1],g = c[2],h = ["", s, s];1 === c.length ? h[1] = d instanceof Array ? d: [d] : 2 === c.length ? "function" == typeof f ? (h[1] = d instanceof Array ? d: [d], h[2] = f) : (h[0] = d || "", h[1] = f instanceof Array ? f: [f]) : 3 === c.length ? (h[0] = d || "", h[1] = f instanceof Array ? f: [f], h[2] = g) : e("arguments error to load js!");return h},nEa: function(c, d, f) {var g = this,h = g.paa,k = g.N$(arguments); - 1 < navigator.userAgent.indexOf("Trident/5") ? g.uaa(k[0], k[1], 0, k[2]) : C.async.map(k[1],function(c, d, f) {c = C.path.join(k[0], c);if (h[c]) return f(s);g.C9(c, t, f)},k[2])},Jfa: function(c, d, f) {var g = this.zta(),h = this.N$(arguments);this.nEa(h[0], h[1],function(c) {c && e(c);g.parentNode.removeChild(g);if (h[2]) h[2]()})},C9: function(c, d, f) {var g = document,h = C.bd("script");h.async = d;h.src = c;this.paa[c] = q;C.qb(h, "load",function() {this.removeEventListener("load", arguments.callee, t);f()},t);C.qb(h, "error",function() {f("Load " + c + " failed!")},t);g.body.appendChild(h)},uaa: function(c, d, f, g) {if (f >= d.length) g && g();else {var h = this;h.C9(C.path.join(c, d[f]), t,function(k) {if (k) return g(k);h.uaa(c, d, f + 1, g)})}},zta: function() {var c = document,d = c.getElementById("cocos2d_loadJsImg");if (!d) {d = C.bd("img");C.xaa && (d.src = C.xaa);c = c.getElementById(C.qf.gj.id);c.style.backgroundColor = "#fff";c.parentNode.appendChild(d);var f = getComputedStyle ? getComputedStyle(c) : c.currentStyle;f || (f = {width: c.width,height: c.height});d.style.left = c.offsetLeft + (parseFloat(f.width) - d.width) / 2 + "px";d.style.top = c.offsetTop + (parseFloat(f.height) - d.height) / 2 + "px";d.style.position = "absolute"}return d},EQ: function(c, d) {if (C.iaa) require("fs").z1a(c,function(c, f) {c ? d(c) : d(s, f.toString())});else {var f = this.cI(),g = "load " + c + " failed!";f.open("GET", c, q);/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) ? (f.setRequestHeader("Accept-Charset", "utf-8"), f.onreadystatechange = function() {4 == f.readyState && 200 == f.status ? d(s, f.responseText) : d(g)}) : (f.overrideMimeType && f.overrideMimeType("text/plain; charset\x3dutf-8"), f.onload = function() {4 == f.readyState && 200 == f.status ? d(s, f.responseText) : d(g)});f.send(s)}},vaa: function(c) {if (C.iaa) return require("fs").A1a(c).toString();var d = this.cI();d.open("GET", c, t);/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) ? d.setRequestHeader("Accept-Charset", "utf-8") : d.overrideMimeType && d.overrideMimeType("text/plain; charset\x3dutf-8");d.send(s);return 4 == !d.readyState || 200 != d.status ? s: d.responseText},Kfa: function(c, d) {this.EQ(c,function(f, g) {try {f ? d(f) : d(s, JSON.parse(g))} catch(h) {e("load json [" + c + "] failed : " + h)}})},u9: function(c) {return /(\.png)|(\.jpg)|(\.bmp)|(\.jpeg)|(\.gif)/.exec(c) != s},wI: function(c, d, f) {var g = q;f !== m ? g = d.g1 == s ? g: d.g1: d !== m && (f = d);var h = new Image;g && "file://" != location.origin && (h.crossOrigin = "Anonymous");C.qb(h, "load",function() {this.removeEventListener("load", arguments.callee, t);this.removeEventListener("error", arguments.callee, t);f && f(s, h)});C.qb(h, "error",function() {this.removeEventListener("error", arguments.callee, t);f && f("load image failed")});h.src = c;return h},Ata: function(c, d, f) {var g = this,h = s; (d = c.type) ? (d = "." + d.toLowerCase(), h = c.src ? c.src: c.name + d) :(h = c, d = C.path.Cp(h));var k = g.fj[h];if (k) return f(s, k);k = g.KN[d.toLowerCase()];if (!k) return C.error("loader for [" + d + "] not exists!"),f();d = g.K0(k.zP ? k.zP() : g.dR, h);k.load(d, h, c,function(c, d) {c ? (C.log(c), g.fj[h] = s, delete g.fj[h], f()) : (g.fj[h] = d, f(s, d))})},K0: function(c, d) {var f = this.wta,g = C.path;if (c !== m && d === m) {d = c;var h = g.Cp(d),h = h ? h.toLowerCase() : "";c = (h = this.KN[h]) ? h.zP ? h.zP() : this.dR: this.dR}d = C.path.join(c || "", d);if (d.match(/[\/(\\\\)]lang[\/(\\\\)]/i)) {if (f[d]) return f[d];g = g.Cp(d) || "";d = f[d] = d.substring(0, d.length - g.length) + "_" + C.Sc.language + g}return d},load: function(c, d, f) {f !== m ? "function" == typeof d && (d = {O3: d}) : d !== m ? "function" == typeof d && (f = d, d = {}) : c !== m ? d = {}: e("arguments error!");d.mg = function(c, d) {c && C.log(c);f && f(d)};c instanceof Array || (c = [c]);d.n1 = this.Ata;d.EDa = this;C.async.map(c, d)},Y$: function(c, d) {var f = this.Hv,g = [],h;for (h in c) {var k = c[h];f[h] = k;g.push(k)}this.load(g, d)},Y_a: function(c, d) {var f = this,g = f.xd(c);g ? f.Y$(g.filenames, d) : f.load(c,function(c) {f.Y$(c[0].filenames, d)})},Zp: function(c, d) {if (c && d) {if ("string" == typeof c) return this.KN[c.trim().toLowerCase()] = d;for (var f = 0,g = c.length; f < g; f++) this.KN["." + c[f].trim().toLowerCase()] = d}},xd: function(c) {return this.fj[c] || this.fj[this.Hv[c]]},rh: function(c) {var d = this.fj,f = this.Hv;delete d[c];delete d[f[c]];delete f[c]},L1a: function() {var c = this.fj,d = this.Hv,f;for (f in c) delete c[f];for (f in d) delete d[f]}
}; (function() {function c() {C.Ka && C.qf.qt && C.Ka.dispatchEvent(C.qf.qt)}function d() {C.Ka && C.qf.pt && C.Ka.dispatchEvent(C.qf.pt)}var f = window,g, h;"undefined" !== typeof document.hidden ? (g = "hidden", h = "visibilitychange") : "undefined" !== typeof document.e0a ? (g = "mozHidden", h = "mozvisibilitychange") :"undefined" !== typeof document.f0a ? (g = "msHidden", h = "msvisibilitychange") :"undefined" !== typeof document.U6a && (g = "webkitHidden", h ="webkitvisibilitychange");g ? C.qb(document, h,function() {document[g] ? d() : c()},t) : (C.qb(f, "blur", d, t), C.qb(f, "focus", c, t));"onpageshow" in window && "onpagehide" in window && (C.qb(f, "pagehide", d, t), C.qb(f, "pageshow", c, t));h = f = s
})();
C.log = C.warn = C.error = C.assert = u();
C.Yca = function(c, d) {for (var f = ["webgl", "experimental-webgl", "webkit-3d", "moz-webgl"], g = s, h =0; h < f.length; ++h) {try {g = c.getContext(f[h], d)} catch(k) {}if (g) break}return g
};
C.eta = function(c, d) {C.cb = 0;C.la = 1;var f = C.Sc = {};f.Sma = "en";f.gMa = "zh";f.hMa = "fr";f.kMa = "it";f.iMa = "de";f.rMa = "es";f.qMa = "ru";f.mMa = "ko";f.lMa = "ja";f.jMa = "hu";f.pMa = "pt";f.fMa = "ar";f.nMa = "no";f.oMa = "pl";f.Dna = "Windows";f.L6 = "iOS";f.M6 = "OS X";f.Bna = "UNIX";f.Ana = "Linux";f.zna = "Android";f.Cna = "Unknown";f.dka = "wechat";f.aka = "androidbrowser";f.tS = "ie";f.bka = "qqbrowser";f.w4 = "mqqbrowser";f.x4 = "ucbrowser";f.LKa = "360browser";f.MKa = "baiduboxapp";f.v4 = "baidubrowser";f.NKa = "maxthon";f.uS = "opera";f.OKa = "miuibrowser";f.xD = "firefox";f.vS = "safari";f.sS = "chrome";f.cka = "unknown";f.wDa = t;var g = [f.v4, f.uS, f.xD, f.sS, f.vS],h = [f.v4, f.uS, f.xD, f.sS, f.vS, f.x4, f.bka, f.w4, f.tS],k = window,n = k.navigator,p = document.documentElement,r = n.userAgent.toLowerCase();f.Xr = -1 != r.indexOf("mobile") || -1 != r.indexOf("android");var v = n.language,v = (v = v ? v: n.browserLanguage) ? v.split("-")[0] : f.Sma;f.language = v;var v = f.cka,y = r.match(/micromessenger|qqbrowser|mqqbrowser|ucbrowser|360browser|baiduboxapp|baidubrowser|maxthon|trident|opera|miuibrowser|firefox/i) || r.match(/chrome|safari/i);y && 0 < y.length && (v = y[0].toLowerCase(), "micromessenger" == v ? v = f.dka: "safari" === v && r.match(/android.*applewebkit/) ? v = f.aka: "trident" == v && (v = f.tS));f.tu = v;f.Ova = -1 < h.indexOf(f.tu);h = parseInt(c[d.bR]);v = C.la;y = C.bd("Canvas");C.SG = q;g = -1 == g.indexOf(f.tu);if (1 === h || 0 === h && (f.Xr || g)) v = C.cb;if (v == C.la && (!k.WebGLRenderingContext || !C.Yca(y, {stencil: q,preserveDrawingBuffer: q}))) 0 == h ? v = C.cb: C.SG = t;if (v == C.cb) try {y.getContext("2d")} catch(z) {C.SG = t}C.L = v;try {f.jO = !!new(k.AudioContext || k.webkitAudioContext || k.mozAudioContext)} catch(D) {f.jO = t}try {var E = f.localStorage = k.localStorage;E.setItem("storage", "");E.removeItem("storage");E = s} catch(F) { ("SECURITY_ERR" === F.name || "QuotaExceededError" === F.name) && C.warn("Warning: localStorage isn't enabled. Please confirm browser cookie or privacy option"),f.localStorage = u()}E = f.uH = {canvas: q};C.L == C.la && (E.opengl = q);p.ontouchstart !== m || n.msPointerEnabled ? E.touches = q: p.onmouseup !== m && (E.mouse = q);p.onkeyup !== m && (E.keyboard = q);if (k.DeviceMotionEvent || k.DeviceOrientationEvent) E.accelerometer = q;k = r.match(/(iPad|iPhone|iPod)/i) ? q: t;r = r.match(/android/i) || n.platform.match(/android/i) ? q: t;p = f.Cna; - 1 != n.appVersion.indexOf("Win") ? p = f.Dna: k ? p = f.L6: -1 != n.appVersion.indexOf("Mac") ? p = f.M6: -1 != n.appVersion.indexOf("X11") ? p = f.Bna: -1 != n.appVersion.indexOf("Linux") ? p = f.Ana: r && (p = f.zna);f.Q1 = p;f.DSa = u();f.RRa = u();f.C2a = u();f.PRa = function() {var c;c = "" + ("isMobile : " + this.Xr + "\r\n");c += "language : " + this.language + "\r\n";c += "browserType : " + this.tu + "\r\n";c += "capabilities : " + JSON.stringify(this.uH) + "\r\n";c += "os : " + this.Q1 + "\r\n";C.log(c)}
};

源码

需要源码请关注添加好友哦^ ^

转载:欢迎来到本站,转载请注明文章出处https://ormcc.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPTs大受欢迎但问题多,企服厂商的AI Agent更被B端客户器重

2023年11月&#xff0c;OpenAI在首届开发者大会上推出了GPTs和Assitant API&#xff0c;不仅改写了AI Agent的构建范式&#xff0c;也把AI智能体的应用推向一个新高潮。 GPTs和GPT商店&#xff0c;使得用户无需编码通过自然语言就能创建并拥有多个专属私人助理&#xff0c;且可…

【Servlet】如何编写第一个Servlet程序

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Servlet】 本专栏旨在分享学习Servlet的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; Servlet是Java编写的服务器端…

5.【SpringBoot3】文件上传

1. 文件上传到本地 需求分析 在用户更换头像或发布文章时&#xff0c;需要携带一个图片的 url 地址&#xff0c;该 url 地址是当用户访问文件上传接口&#xff0c;将图片上传成功后&#xff0c;服务器返回的地址。所以&#xff0c;后台需要提供一个文件上传接口&#xff0c;用…

Android HIDL概述与绑定模式的实现

一、前言 Android O(8.0) 版本之后&#xff0c;底层实现有了比较大的变化&#xff0c;最显著的一个方面就是 HIDL 机制的全面实施。本文对于理解系统源码中 Gnss、Usb、Camera 等模块的工作原理有极大帮助。 二、HIDL 设计目的 在 Android O(8.0) 之前系统的升级牵扯多方协作…

Python tkinter (5) 选项按钮与复选框

Python的标准Tk GUI工具包的接口 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 目录 CheckButton 简单示例 获取选中 Ra…

RBD —— Visualizing fractured geometry

RBD Exploded View&#xff08;与Exploded View SOP类似&#xff09;从中心炸开几何体&#xff0c;以更好查看被破碎和约束的碎块&#xff1b; 可视化高精度和低精度几何体的不同&#xff0c;Show Proxy Geometry显示代理几何体&#xff1b; Show Constraints显示约束&#xff…

深入了解 Spring ImportBeanDefinitionRegistrar

Spring Framework 提供了许多灵活的扩展机制&#xff0c;其中之一就是ImportBeanDefinitionRegistrar接口。这个接口允许我们在Spring的配置类中动态注册额外的Bean定义&#xff0c;为我们的应用程序提供更高度的灵活性。在这篇文章中&#xff0c;我们将深入探讨ImportBeanDefi…

6.jmeter非GUI命令及Beanshell组件

一、非GUI&#xff08;界面&#xff09;命令详解 1. -n 使用非gui方式&#xff0c;不能单独使用&#xff0c;必须和-t&#xff08;指定jmeter的脚本&#xff09;一起用。 #cmd命令行模式下&#xff0c;进入存放测试jmx文件的目录下 jmeter -n -t hello.jmx只会生成一个log日…

数据结构实验八:排序的应用

目录 一、实验目的 二、实验原理 1.直接插入排序 2.快速排序 三、实验内容 实验1 代码 截图 实验2 代码 截图 一、实验目的 1、掌握排序的基本概念&#xff1b; 2&#xff0e;掌握并实现以下排序算法&#xff1a;直接插入排序、快速排序。 二、实验原理 1.直接插…

深入了解 Spring BeanPostProcessor 的应用

Spring框架的强大之处在于其提供了丰富的扩展点&#xff0c;其中之一是BeanPostProcessor接口。这个接口允许我们在Spring容器实例化bean之后、在调用初始化方法之前和之后对bean进行一些自定义的处理。在这篇文章中&#xff0c;我们将深入研究BeanPostProcessor的使用场景&…

Vue3基础:pnpm是什么?npm和pnpm的区别?如何使用pnpm?

pnpm 是一个流行的 JavaScript 包管理器&#xff0c;类似于 npm 和 yarn。它是 performant npm 的缩写&#xff0c;意在表明它是一个更高效的 npm 替代品。pnpm 的主要特点和优势包括&#xff1a; 高效的存储空间使用 pnpm 使用称为“内容寻址存储”的机制来存储 npm 包。这意…

如何选择便捷安全的黄金交易平台?

黄金交易平台的介绍 黄金交易平台是一个提供方便、安全的方式进行黄金交易的网上平台。 投资者可以通过这些平台进行黄金的买卖&#xff0c;参与黄金市场的投资活动。 这些平台提供了一个简单易用的界面&#xff0c;让投资者可以方便地进行交易操作。 选择合适的黄金交易平台…

【运维】Ubuntu,如何在Ubuntu系统中编译和安装OpenCV, apt安装OpenCV

文章目录 编译安装apt安装OpenCV 在C开发中&#xff0c;使用OpenCV是一个常见的需求。您可以选择使用conan构建包&#xff0c;或者直接将OpenCV安装到系统中。官方文档提供了详细的教程&#xff0c;可以在这里找到&#xff1a;OpenCV官方文档 编译安装 然而&#xff0c;在这里…

小土堆pytorch学习笔记002

1、TensorBoard的使用 &#xff08;1&#xff09;显示坐标&#xff1a; from torch.utils.tensorboard import SummaryWriter import numpy as np from PIL import Imagewriter SummaryWriter("logs") # 写入的位置 log_dir logs # writer.add_image() "…

【LeetCode: 148. 排序链表 + 链表 + 归并排序】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

今天来看看工商业储能收益模式有哪些

安科瑞武陈燕acrelcy 2023 年有望成为工商业储能的发展元年&#xff0c;主要原因2023年工商业储能的经济性有望大幅提升。工商业储能下游主要为工商业企业&#xff0c;投资是否具有经济性是工商业需求的核心因素之一&#xff0c;而2023年工商业储能经济性或将显著提升&#xf…

shared_ptr 与 unique_ptr 的转换 笔记

推荐B站文章&#xff1a; 6.shared_ptr与unique_ptr_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL?p6&vd_sourcea934d7fc6f47698a29dac90a922ba5a3我的往期文章&#xff1a; 独占指针&#xff1a;unique_ptr 与 函数调用-CSDN博客https://blog.csdn.n…

【Docker】构建镜像

一般来说我们不需要自己构建镜像&#xff0c;这些镜像在docker hub上面已经有现成的了&#xff0c;比如常用的数据库、应用软件等。 某些情况我们还是需要自己来构建: 找不到现成的镜像&#xff0c;比如自己开发的应用程序 需要在镜像中加入特定的功能/软件 Docker提供了两种…

C++入门学习(十五)运算符

算术运算符&#xff1a;用于处理四则运算赋值运算符&#xff1a;用于将表达式的值赋给变量比较运算符&#xff1a;用于表达式的比较&#xff0c;并返回一个真值或假值逻辑运算符&#xff1a;用于根据表达式的值返回真值或假值 一、加减乘除 #include <iostream> #incl…

vue和react的运行机制

Vue和React都是现代的前端框架&#xff0c;它们提供了丰富的特性和工具&#xff0c;帮助开发者构建复杂的用户界面。虽然它们有很多相似之处&#xff0c;但也有一些重要的区别&#xff0c;特别是在运行机制方面。 Vue的运行机制 Vue.js是一个渐进式JavaScript框架&#xff0c…