web动态月球特效

news2024/11/20 10:26:15

文章目录

  • 效果预览
  • 文件分布
  • 代码

效果预览

在这里插入图片描述

文件分布

在这里插入图片描述

代码

鼠标点击特效
fireworks.js

class Circle {
    constructor({ origin, speed, color, angle, context }) {
        this.origin = origin
        this.position = { ...this.origin }
        this.color = color
        this.speed = speed
        this.angle = angle
        this.context = context
        this.renderCount = 0
    }

    draw() {
        this.context.fillStyle = this.color
        this.context.beginPath()
        this.context.arc(this.position.x, this.position.y, 2, 0, Math.PI * 2)
        this.context.fill()
    }

    move() {
        this.position.x = (Math.sin(this.angle) * this.speed) + this.position.x
        this.position.y = (Math.cos(this.angle) * this.speed) + this.position.y + (this.renderCount * 0.3)
        this.renderCount++
    }
}

class Boom {
    constructor({ origin, context, circleCount = 10, area }) {
        this.origin = origin
        this.context = context
        this.circleCount = circleCount
        this.area = area
        this.stop = false
        this.circles = []
    }

    randomArray(range) {
        const length = range.length
        const randomIndex = Math.floor(length * Math.random())
        return range[randomIndex]
    }

    randomColor() {
        const range = ['8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
        return '#' + this.randomArray(range) + this.randomArray(range) + this.randomArray(range) + this.randomArray(range) + this.randomArray(range) + this.randomArray(range)
    }

    randomRange(start, end) {
        return (end - start) * Math.random() + start
    }

    init() {
        for (let i = 0; i < this.circleCount; i++) {
            const circle = new Circle({
                context: this.context,
                origin: this.origin,
                color: this.randomColor(),
                angle: this.randomRange(Math.PI - 1, Math.PI + 1),
                speed: this.randomRange(1, 6)
            })
            this.circles.push(circle)
        }
    }

    move() {
        this.circles.forEach((circle, index) => {
            if (circle.position.x > this.area.width || circle.position.y > this.area.height) {
                return this.circles.splice(index, 1)
            }
            circle.move()
        })
        if (this.circles.length == 0) {
            this.stop = true
        }
    }

    draw() {
        this.circles.forEach(circle => circle.draw())
    }
}

class CursorSpecialEffects {
    constructor() {
        this.computerCanvas = document.createElement('canvas')
        this.renderCanvas = document.createElement('canvas')

        this.computerContext = this.computerCanvas.getContext('2d')
        this.renderContext = this.renderCanvas.getContext('2d')

        this.globalWidth = window.innerWidth
        this.globalHeight = window.innerHeight

        this.booms = []
        this.running = false
    }

    handleMouseDown(e) {
        const boom = new Boom({
            origin: { x: e.clientX, y: e.clientY },
            context: this.computerContext,
            area: {
                width: this.globalWidth,
                height: this.globalHeight
            }
        })
        boom.init()
        this.booms.push(boom)
        this.running || this.run()
    }

    handlePageHide() {
        this.booms = []
        this.running = false
    }

    init() {
        const style = this.renderCanvas.style
        style.position = 'fixed'
        style.top = style.left = 0
        style.zIndex = '1809185784'
        style.pointerEvents = 'none'

        style.width = this.renderCanvas.width = this.computerCanvas.width = this.globalWidth
        style.height = this.renderCanvas.height = this.computerCanvas.height = this.globalHeight

        document.body.append(this.renderCanvas)

        window.addEventListener('mousedown', this.handleMouseDown.bind(this))
        window.addEventListener('pagehide', this.handlePageHide.bind(this))
    }

    run() {
        this.running = true
        if (this.booms.length == 0) {
            return this.running = false
        }

        requestAnimationFrame(this.run.bind(this))

        this.computerContext.clearRect(0, 0, this.globalWidth, this.globalHeight)
        this.renderContext.clearRect(0, 0, this.globalWidth, this.globalHeight)

        this.booms.forEach((boom, index) => {
            if (boom.stop) {
                return this.booms.splice(index, 1)
            }
            boom.move()
            boom.draw()
        })
        this.renderContext.drawImage(this.computerCanvas, 0, 0, this.globalWidth, this.globalHeight)
    }
}

const cursorSpecialEffects = new CursorSpecialEffects()
cursorSpecialEffects.init()

console.group("System");
console.groupEnd();

frst.js

! function(e) {
	function t(t) {
		for(var o, u, a = t[0], c = t[1], f = t[2], p = 0, s = []; p < a.length; p++) u = a[p], r[u] && s.push(r[u][0]), r[u] = 0;
		for(o in c) Object.prototype.hasOwnProperty.call(c, o) && (e[o] = c[o]);
		for(l && l(t); s.length;) s.shift()();
		return i.push.apply(i, f || []), n()
	}

	function n() {
		for(var e, t = 0; t < i.length; t++) {
			for(var n = i[t], o = !0, a = 1; a < n.length; a++) {
				var c = n[a];
				0 !== r[c] && (o = !1)
			}
			o && (i.splice(t--, 1), e = u(u.s = n[0]))
		}
		return e
	}
	var o = {},
		r = {
			5: 0
		},
		i = [];

	function u(t) {
		if(o[t]) return o[t].exports;
		var n = o[t] = {
			i: t,
			l: !1,
			exports: {}
		};
		return e[t].call(n.exports, n, n.exports, u), n.l = !0, n.exports
	}
	u.m = e, u.c = o, u.d = function(e, t, n) {
		u.o(e, t) || Object.defineProperty(e, t, {
			enumerable: !0,
			get: n
		})
	}, u.r = function(e) {
		"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
			value: "Module"
		}), Object.defineProperty(e, "__esModule", {
			value: !0
		})
	}, u.t = function(e, t) {
		if(1 & t && (e = u(e)), 8 & t) return e;
		if(4 & t && "object" == typeof e && e && e.__esModule) return e;
		var n = Object.create(null);
		if(u.r(n), Object.defineProperty(n, "default", {
				enumerable: !0,
				value: e
			}), 2 & t && "string" != typeof e)
			for(var o in e) u.d(n, o, function(t) {
				return e[t]
			}.bind(null, o));
		return n
	}, u.n = function(e) {
		var t = e && e.__esModule ? function() {
			return e.default
		} : function() {
			return e
		};
		return u.d(t, "a", t), t
	}, u.o = function(e, t) {
		return Object.prototype.hasOwnProperty.call(e, t)
	}, u.p = "";
	var a = window.webpackJsonp = window.webpackJsonp || [],
		c = a.push.bind(a);
	a.push = t, a = a.slice();
	for(var f = 0; f < a.length; f++) t(a[f]);
	var l = c;
	i.push([28, 0]), n()
}({
	28: function(e, t, n) {
		"use strict";
		n.r(t);
		var o, r, i = n(1),
			u = n(13),
			a = n(7),
			c = n(8),
			f = n(6),
			l = n(10),
			p = n(9),
			s = n(15),
			y = n(2),
			b = n(4);
		n(29);

		function d(e, t) {
			for(var n = 0; n < t.length; n++) {
				var o = t[n];
				o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
			}
		}

		function h(e, t, n) {
			return(h = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(e, t, n) {
				var o = function(e, t) {
					for(; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = g(e)););
					return e
				}(e, t);
				if(o) {
					var r = Object.getOwnPropertyDescriptor(o, t);
					return r.get ? r.get.call(n) : r.value
				}
			})(e, t, n || e)
		}

		function v(e) {
			return(v = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
				return typeof e
			} : function(e) {
				return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
			})(e)
		}

		function O(e, t) {
			if(!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
		}

		function w(e, t) {
			return !t || "object" !== v(t) && "function" != typeof t ? function(e) {
				if(void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
				return e
			}(e) : t
		}

		function g(e) {
			return(g = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
				return e.__proto__ || Object.getPrototypeOf(e)
			})(e)
		}

		function j(e, t) {
			if("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
			e.prototype = Object.create(t && t.prototype, {
				constructor: {
					value: e,
					writable: !0,
					configurable: !0
				}
			}), t && m(e, t)
		}

		function m(e, t) {
			return(m = Object.setPrototypeOf || function(e, t) {
				return e.__proto__ = t, e
			})(e, t)
		}
		var P = new(o = Object(a.a)({
				x: 2,
				y: 3
			}, .05), Object(c.a)(r = o(r = function(e) {
				function t() {
					return O(this, t), w(this, g(t).apply(this, arguments))
				}
				return j(t, f["a"]), t
			}()) || r) || r),
			S = new l.a("cheng_hua_zhao", {
				color: "#dc2c5a",
				size: b.a.isMobile ? .4 : .8
			});
		S.position.x -= .5 * S.basePosition, P.add(S);
		var _ = {
				width: .05,
				nbrOfPoints: 1,
				turbulence: new i.Vector3,
				orientation: new i.Vector3(-1, -1, 0),
				color: new i.Color("#e6e0e3")
			},
			x = new(function(e) {
				function t() {
					return O(this, t), w(this, g(t).apply(this, arguments))
				}
				var n, o, r;
				return j(t, p["a"]), n = t, (o = [{
					key: "addLine",
					value: function() {
						h(g(t.prototype), "addLine", this).call(this, {
							length: Object(y.a)(5, 10),
							visibleLength: Object(y.a)(.05, .2),
							speed: Object(y.a)(.01, .02),
							position: new i.Vector3(Object(y.a)(-4, 8), Object(y.a)(-3, 5), Object(y.a)(-2, 5))
						})
					}
				}]) && d(n.prototype, o), r && d(n, r), t
			}())({
				frequency: .1
			}, _);
		P.add(x);
		var k = new s.a;
		P.add(k), P.start();
		var M = new u.b({
			delay: .2,
			onStart: function() {
				x.start()
			}
		});
		M.to(".overlay", 2, {
			opacity: 0
		}), M.to(".background", 2, {
			y: -300
		}, 0), M.fromTo(P.lookAt, 2, {
			y: -8
		}, {
			y: 0,
			ease: Power2.easeOut
		}, 0), M.add(S.show, "-=1"), b.a.onHide(function(e) {
			var t = new u.b;
			t.to(P.lookAt, 2, {
				y: -6,
				ease: Power3.easeInOut
			}), t.add(S.hide, 0), t.add(x.stop), t.to(".overlay", .5, {
				autoAlpha: 1,
				onComplete: e
			}, "-=1.5")
		})
	},
	29: function(e, t, n) {}
});


        

script.js

$(function()
{//fullpage
if($.isFunction($.fn.fullpage))
{
    $('.fullpage').fullpage(
    {
        navigation: true,
        verticalCentered: true,
        afterRender: function()
        {
            //get container
            var container = $(this);
            //find section count
            var count = container.find('.section').length;
            //create previous slide button
            var prev = $('<a href="#" class="fp-prev"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>');
            //create next slide button
            var next = $('<a href="#" class="fp-next"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>');
            //add previous slide button action
            prev.on('click', function(e)
            {
                e.preventDefault();
                $.fn.fullpage.moveSectionUp();
            });
            //add next slide button action
            next.on('click', function(e)
            {
                e.preventDefault();
                $.fn.fullpage.moveSectionDown();
            });
            //add buttons to body
            $('body').append(prev);
            $('body').append(next);
            //set prev as unvisible
            prev.addClass('unvisible');
            //check for slides
            if(count <= 1)
            {
                //set next as unvisible
                next.addClass('unvisible');
            }
            //set prev data section
            prev.attr('data-section', 1);
            //set next data section
            next.attr('data-section', Math.min(count, 2));
        },
        afterLoad: function(anchorLink, index)
        {
            //get section
            var section = $(this);
            //find section count
            var count = section.parent().find('.section').length;
            
            //check for first section
            if(index == 1)
            {
                //hide prev slide
                $('.fp-prev').removeClass('visible').addClass('unvisible');
            }
            else
            {
                //show prev slide
                $('.fp-prev').removeClass('unvisible').addClass('visible');
            }
            
            //check for last section
            if(index == count)
            {
                //hide next slide
                $('.fp-next').removeClass('visible').addClass('unvisible');
            }
            else
            {
                //show next slide
                $('.fp-next').removeClass('unvisible').addClass('visible');
            }
            
            //set data section tags
            $('.fp-prev').attr('data-section', Math.max(1, index - 1));
            $('.fp-next').attr('data-section', Math.min(count, index + 1));
        }
    });
}
});

html代码

<!doctype html>
<html>
<head>
  
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" />
<meta charset="utf-8">
<title>第一个</title>

<style>
html,
body {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  overflow: hidden;
}


body {
  width: 100%;
  height: 100%;
  background: #000C1C;
  background: -moz-linear-gradient(top, #000C1C 0%, #15374F 50%, #000C1C 100%);
  background: -webkit-linear-gradient(top, #000C1C 0%, #15374F 50%, #000C1C 100%);
  background: linear-gradient(to bottom, #000 0%, #1e1e1e 50%, #000 100%);
  cursor: url('./img/alternate.png'), auto;
  filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#000C1C', endColorstr='#15374F', GradientType=0);
}
.hero-banner {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  color: #ffffff; /* 将字体颜色设置为白色 */
}
.scroll-down-button {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10;
}

.scroll-down-button a {
  display: block;
  width: 40px;
  height: 40px;
  border: 2px solid #fff;
  border-radius: 50%;
  position: relative;
  text-align: center;
  transition: 0.3s;
  overflow: hidden;
  animation: floatAnimation 2s ease-in-out infinite;
}

.scroll-down-button a span {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  color: #fff;
  font-size: 14px;
  transition: 0.3s;
}

.scroll-down-button a::before {
  content: '';
  position: absolute;
  width: 120px;
  height: 120px;
  background: #fff;
  border-radius: 50%;
  animation: animate 2s linear infinite;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: -1;
  opacity: 0.3;
}
@keyframes floatAnimation {
  0% {
    transform: translate(-50%, 0);
  }
  50% {
    transform: translate(-50%, 10px);
  }
  100% {
    transform: translate(-50%, 0);
  }
}
@keyframes animate {
  0% {
    width: 0;
    height: 0;
    opacity: 0.3;
  }
  100% {
    width: 120px;
    height: 120px;
    opacity: 0;
  }
}
</style>
</head>
<body>

<script src="js/three.min.js"></script>


<div id="canvas">
  <div class="hero-banner"> 
    <h4><div class="jz  ys" id="chakhsu"></div></h4>
  </div>
  <div class="scroll-down-button">
    <a href="#another-page">
      <span><i class="fas fa-chevron-down"></i></span>
    </a>
  </div>
</div>

<script id="vertexShader" type="x-shader/x-vertex">
  varying vec3 vNormal; void main() { vNormal = normalize( normalMatrix * normal ); gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }
</script>
<script id="fragmentShader" type="x-shader/x-vertex">
  varying vec3 vNormal; void main() { float intensity = pow( 0.7 - dot( vNormal, vec3( 0.0, 0.0, 0.5 ) ), 4.0 ); gl_FragColor = vec4( 1.3, 1.0, 1.0, 1.0 ) * intensity; }
</script>
<script>
var renderer, scene, camera, composer, circle, particle, luminor, halo, galaxy;
var lights = [];
window.onload = function() {
  init();
  animate();
}

function init() {
  renderer = new THREE.WebGLRenderer({
    antialias: true,
    alpha: true
  });
  renderer.setPixelRatio((window.devicePixelRatio) ? window.devicePixelRatio : 1);
  renderer.setSize(window.innerWidth, window.innerHeight);
  renderer.autoClear = false;
  renderer.setClearColor(0x000000, 0.0);
  document.getElementById('canvas').appendChild(renderer.domElement);

  scene = new THREE.Scene();

  camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 1000);
  camera.position.z = 400;
  scene.add(camera);

  circle = new THREE.Object3D();
  particle = new THREE.Object3D();
  halo = new THREE.Object3D();
  luminor = new THREE.Object3D();
 
  scene.add(circle);
  scene.add(particle);
  scene.add(halo);
  scene.add(luminor);

  var geometry = new THREE.TetrahedronGeometry(1, 1);
  var geo_planet = new THREE.SphereGeometry(10, 64, 32);
  var geom3 = new THREE.SphereGeometry(16, 32, 16);
  var geo_star = new THREE.SphereGeometry(90, 64, 64); 
 
  var material = new THREE.MeshPhongMaterial({
    color: 0x111111,
    shading: THREE.FlatShading
  });

 for (var i = 0; i < 500; i++) {
    var mesh = new THREE.Mesh(geometry, material);
    mesh.position.set(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5).normalize();
    mesh.position.multiplyScalar( 200 + (Math.random() * 500));
    mesh.rotation.set(Math.random() * 2, Math.random() * 2, Math.random() * 2);
    particle.add(mesh);
  }
  
  var mat = new THREE.MeshPhongMaterial({
    color: 0xcea3a3,
    emissive: 0x000000,
    //shading: THREE.FlatShading,
    shading : THREE.SmoothShading,
    map: THREE.ImageUtils.loadTexture('img/Generic_Celestia_asteroid_texture.jpg'),
    bumpMap: THREE.ImageUtils.loadTexture('img/Generic_Celestia_asteroid_texture.jpg'),
    bumpScale:   0.025,
    specularMap: THREE.ImageUtils.loadTexture('img/Generic_Celestia_asteroid_texture.jpg'),
    specular: new THREE.Color('grey')
  });
  
  var mat3 = new THREE.ShaderMaterial({
    uniforms: {},
    vertexShader: document.getElementById('vertexShader').textContent,
    fragmentShader: document.getElementById('fragmentShader').textContent,
    side: THREE.BackSide,
    blending: THREE.AdditiveBlending,
    transparent: true
  });

  var planet = new THREE.Mesh(geo_planet, mat);
  planet.scale.x = planet.scale.y = planet.scale.z = 15;
  circle.add(planet);

  var ball = new THREE.Mesh(geom3, mat3);
  ball.scale.x = ball.scale.y = ball.scale.z = 16;
  halo.add(ball);
  
  var ball2 = new THREE.Mesh(geom3, mat3);
  ball2.scale.x = ball2.scale.y = ball2.scale.z = 12;
  ball2.position.set(25,5,1)
  halo.add(ball2);
  
  var ambientLight = new THREE.AmbientLight(0x000000);
  scene.add(ambientLight);
  
  var hemiLight = new THREE.HemisphereLight(0x000000, 0x1111111, 20);
        hemiLight.position.set(-1, -1, 2);
  luminor.add(hemiLight);
 
  lights[1] = new THREE.DirectionalLight(0x000000, 7);
  lights[1].position.set(-1, 0, 0.5);
  lights[2] = new THREE.DirectionalLight(0x000000, 7);
  lights[2].position.set(1, 0, 0.5);

  scene.add(lights[1]);
  scene.add(lights[2]);
  
  window.addEventListener('resize', onWindowResize, false);

};

function onWindowResize() {
  camera.aspect = window.innerWidth / window.innerHeight;
  camera.updateProjectionMatrix();
  renderer.setSize(window.innerWidth, window.innerHeight);
}

function animate() {
  var timer = 0.0001 * Date.now();
  requestAnimationFrame(animate);

  particle.rotation.x += 0.0000;
  particle.rotation.y -= 0.0040;
  circle.rotation.x -= 0.001;
  circle.rotation.y -= 0.001;
  
  halo.rotation.z -= 0.005;
  luminor.rotation.z -= 0.005;
  //halo.scale.x = Math.sin( timer * 3) * 0.09 + 1;
  //halo.scale.y = Math.sin( timer * 7 ) * 0.09 + 1;
  
  renderer.clear();
  renderer.render(scene, camera)
};</script>

<script>
  var chakhsu = function (r) {
      function t() {
          return b[Math.floor(Math.random() * b.length)]
      }
      function e() {
          return String.fromCharCode(94 * Math.random() + 33)
      }
      function n(r) {
          for (var n = document.createDocumentFragment(), i = 0; r > i; i++) {
              var l = document.createElement("span");
              l.textContent = e(), l.style.color = t(), n.appendChild(l)
          }
          return n
      }
      function i() {
          var t = o[c.skillI];
          c.step ? c.step-- : (c.step = g, c.prefixP < l.length ? (c.prefixP >= 0 && (c.text += l[c.prefixP]), c.prefixP++) : "forward" === c.direction ? c.skillP < t.length ? (c.text += t[c.skillP], c.skillP++) : c.delay ? c.delay-- : (c.direction = "backward", c.delay = a) : c.skillP > 0 ? (c.text = c.text.slice(0, -1), c.skillP--) : (c.skillI = (c.skillI + 1) % o.length, c.direction = "forward")), r.textContent = c.text, r.appendChild(n(c.prefixP < l.length ? Math.min(s, s + c.prefixP) : Math.min(s, t.length - c.skillP))), setTimeout(i, d)
      }
      /*以下内容自定义修改*/
      var l = ""
          o = ["恭喜你发现了宝藏","日久见人心","我热爱你所热爱的一切!" ].map(function (r) {
              return r + ""
          }), a = 2, g = 1, s = 5, d = 75,
          b = ["rgb(110,64,170)", "rgb(150,61,179)", "rgb(191,60,175)", "rgb(228,65,157)", "rgb(254,75,131)", "rgb(255,94,99)", "rgb(255,120,71)", "rgb(251,150,51)", "rgb(226,183,47)", "rgb(198,214,60)", "rgb(175,240,91)", "rgb(127,246,88)", "rgb(82,246,103)", "rgb(48,239,130)", "rgb(29,223,163)", "rgb(26,199,194)", "rgb(35,171,216)", "rgb(54,140,225)", "rgb(76,110,219)", "rgb(96,84,200)"],
          c = {text: "", prefixP: -s, skillI: 0, skillP: 0, direction: "forward", delay: a, step: g};
      i()
  };
  chakhsu(document.getElementById('chakhsu'));
</script>
<script>
  document.querySelector('.scroll-down-button a').addEventListener('click', function(e) {
  e.preventDefault();
  window.location.href = './demo/index.html';
});
</script>
<script src="js/fireworks.js"></script>
<script type="text/javascript" src="js/script.js"></script>
<script  src="js/first.js"></script>

</body>
</html>

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

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

相关文章

OpenSSL——升级

OpenSSL&#xff08;Open Secure Sockets Layer&#xff09;是一个开源的软件库&#xff0c;提供了SSL和TLS协议的实现&#xff0c;用于加密通信。它广泛用于安全连接&#xff0c;例如在网站上通过HTTPS协议进行安全的数据传输. 但是从openssl申请道德证书是不安全的。对于网站…

再次拓宽信创生态版图,思迈特与统信软件完成产品兼容适配认证

近日&#xff0c;思迈特软件与统信软件科技有限公司&#xff08;简称“统信软件”&#xff09;完成产品兼容性适配互认证&#xff0c;加速国产信创生态化建设进程。 本次测试由商业智能与数据分析软件&#xff08;简称&#xff1a;Smartbi Insight V11&#xff09;产品与统信服…

safari缓存清理

safari缓存清理 点击顶端Safari浏览器–>点击偏好设置 点击隐私–>管理网站数据 全部移除

【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】

一、背景 近年来&#xff0c;Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程 序&#xff0c;用于抓取豆瓣电影Top250的相关信息&#xff0c;并将其保存为Excel文件。 程序包含以下几个部分&#xff1a; 导入模块&#xff1a;程序导入了 …

微同城本地小程序源码系统:顺风车+二手市场+跑腿功能+信息发布+广告功能 带完整的搭建教程

随着移动互联网的普及&#xff0c;小程序已成为各行业进行线上业务拓展的重要工具。微同城作为一款集顺风车、二手市场、跑腿功能、信息发布和广告功能于一体的本地小程序源码系统&#xff0c;旨在满足现代城市居民的多元化需求&#xff0c;提供一个方便、快捷、实用的服务平台…

HackTheBox - Medium - Linux - Encoding

Encoding 前言 经过10个月左右的网安自学&#xff0c;我想说的第一句话无疑是&#xff1a;感谢TryHackMe。当然&#xff0c;后续的HackTheBox&学院、CRTO等等&#xff0c;对我的帮助都很大。 许多师傅们都在年度总结&#xff0c;我也看了大家都收获很多&#xff0c;都很…

如何委婉地告诉老板,BI连接金蝶ERP,对决策更有利?

网友&#xff1a;新入职一家企业&#xff0c;发现这家企业依旧是从金蝶ERP中导出数据做分析&#xff0c;这样数据量一大、科目变动多就很难保证数据分析的及时性、灵活性&#xff0c;说真的这对决策来说并不是什么好事。但老板似乎并不觉得这有什么不对。我该如何委婉地告诉老板…

吉林大学19、21级计算机学院《计算机网络》期末真题试题

一、21级&#xff08;考后回忆&#xff09; 一、不定项选择&#xff08;一共10个选择题&#xff0c;一个两分&#xff0c;选全得满分&#xff09; 不定项&#xff1a;可以选择1~4个 考点有&#xff1a; ①协议、服务 ②码分多路复用通过接受码片序列&#xff0c;求哪个站点发送…

PyCharm社区版设置简体中文界面

点击“File”&#xff0c; 出现的菜单中点击“Settings”, 在弹出的界面中&#xff0c;选“Plugins”&#xff0c; 然后在右边输入框中输入“chinese”, 在搜索结果中&#xff0c;选中Chinese(Simplified) Language Pack&#xff0c; 点击右边的“install”即可 最后“r…

打开软件游戏提示缺少msvcp140.dll的解决方法,修复缺少140dll文件的方法

一、msvcp140.dll是什么文件&#xff1f; msvcp140.dll是Microsoft Visual C 2015 Redistributable Package的一部分&#xff0c;它是运行许多Windows应用程序所必需的动态链接库文件之一。它包含了许多C类库&#xff0c;这些类库为开发人员提供了丰富的功能和工具&#xff0c…

【tensorflowflutter】自己写个机器学习模型用在项目上?

背景 拍摄APP项目上线有一阵了&#xff0c;每天的拍摄数据呈现波动上升状态、业务方需要对数据进行加工&#xff0c;如果能有对未来的数据量的预测就好了 。 目标 在端侧展示拍摄数据可视化趋势图等、并能推断数据&#xff08;选择预测日期&#xff09; 简单实现个demo gif背…

Keil5----生成hex文件和bin文件

Keil5编译环境搭建----教程目录 keil5----生成hex文件 具体步骤如下&#xff1a; 步骤1&#xff1a; 点击 魔法棒 “Options for Target” 。步骤2&#xff1a; 单击 Output。步骤3&#xff1a; 选择输出生成文件的路径。步骤4&#xff1a; 自定义生成的hex文件名。步骤5&am…

SpringBoot+Vue轻松实现考试管理系统

简介 本系统基于 Spring Boot 搭建的方便易用、高颜值的教学管理平台&#xff0c;提供多租户、权限管理、考试、练习、在线学习等功能。主要功能为在线考试、练习、刷题&#xff0c;在线学习。课程内容支持图文、视频&#xff0c;考试类型支持考试、练习、问卷。 源码下载 网…

算法专题六:模拟

一.替换所有的问号 替换所有的问号 1.思路一 class Solution { public:string modifyString(string s) {for(int i0;i<s.size();i){if(s[i] ?){for(char j a ; j<z ; j){//1.注意数组越界if((i0 || s[i-1] ! j) && (is.size()-1 || s[i1] ! j)){s[i] j;brea…

为什么说上了金蝶、用友系统后,下一步是部署BI?

经常有些不熟悉BI工具的用户问我&#xff1a;金蝶、用友系统和BI工具与什么区别&#xff0c;为什么说上了金蝶、用友系统后&#xff0c;下一步就是部署BI&#xff1f;这两个系统工具的功能不重叠吗&#xff1f; 首先&#xff0c;要了解金蝶、用友系统和BI工具的各自作用。 金…

第10课 利用windows API捕获桌面图像并通过FFmpeg分享

在上一章&#xff0c;我们已经实现了一对一音视频对话功能。在实际应用中&#xff0c;我们常需要把自己的电脑桌面分享给他人以实现桌面共享功能&#xff0c;这种功能在视频会议、在线教学等场景中很常见&#xff0c;这种功能如何实现呢&#xff1f;这节课我们就来解决这个问题…

我的小学时代——一段充满乐趣与探索的旅程

我的小学时代——一段充满乐趣与探索的旅程 在我深深的回忆中&#xff0c;小学时代是一段无比珍贵且充满活力与探索的时光&#xff0c;那是我在梓潼路小学度过的五载黄金岁月&#xff0c;从1979年开始&#xff0c;我迈进了那扇标志着人生学习之旅起点的大门。 梓潼路小学作为一…

新一代爬取JavaScript渲染页面的利器-playwright(二)

接上文&#xff1a;新一代爬取JavaScript渲染页面的利器-playwright&#xff08;一&#xff09;   上文我们主要讲了Playwright的特点、安装、基本使用、代码生成的使用以及模拟移动端浏览&#xff0c;这篇我们主要讲下Playwright的选择器以及常见的操作方法。 6.选择器 我们…

使用PowerJob做任务调度模块

最近项目中使用了PowerJob做任务调度模块&#xff0c;感觉这个框架真香&#xff0c;今天我们就来深入了解一下新一代的定时任务框架——PowerJob&#xff01; 简介 PowerJob是基于java开发的企业级的分布式任务调度平台&#xff0c;与xxl-job一样&#xff0c;基于web页面实现…

宽压输入1.5KV隔离直流高压输出电源模块

GRC系列低成本小体积宽电压输入隔离高压模块电源&#xff0c;是一款业界的隔离稳压型DC-DC高电压转换器&#xff0c;可在宽范围波动的不稳定电压输入环境中运行&#xff0c;通过模块的内部调整电路可以生成隔离稳压的直流高电压输出。产品外壳采用铝壳喷塑防腐设计&#xff0c;…