音乐播放器实现:前端HTML,CSS,JavaScript综合大项目

音乐播放器实现:前端HTML,CSS,JavaScript综合大项目

  • 项目概述
  • 项目视图效果
  • 一、侧边栏相关代码
    • (一)HTML代码
    • (二)css代码
  • 二、登录页面
    • (一)HTML代码
    • (二)css代码
    • (三)js代码
  • 三、剩余代码以及所有源代码Gitee地址


项目概述

在当今数字化时代,音乐已然成为人们生活中不可或缺的一部分。本次带来的音乐播放器 HTML 项目,旨在打造一个具备基础且实用功能的音乐播放平台。通过 HTML、CSS 和 JavaScript 等前端技术的巧妙融合,实现一个界面美观、操作便捷的音乐播放器,满足用户在本地浏览音乐库、播放音乐等多样化需求

提示!!!!

由于项目代码太多,代码全部内容放置在我的Gitee码云中,需要的小伙伴们自取
我的码云链接https://gitee.com/srte-7719/project-experience/tree/master/HTML%E9%A1%B9%E7%9B%AE
由于项目代码太多,代码全部内容放置在我的Gitee码云中,需要的小伙伴们自取
我的码云链接https://gitee.com/srte-7719/project-experience/tree/master/HTML%E9%A1%B9%E7%9B%AE
由于项目代码太多,代码全部内容放置在我的Gitee码云中,需要的小伙伴们自取
我的码云链接https://gitee.com/srte-7719/project-experience/tree/master/HTML%E9%A1%B9%E7%9B%AE

项目视图效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


下面列出一些我的项目代码
下面列出一些我的项目代码

一、侧边栏相关代码

(一)HTML代码

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>我的音乐</title>
    <link rel="stylesheet" href="侧边栏.css">
</head>

<body>
    <!-- 顶部导航栏 -->
    <nav class="top-nav tech-style">
        <div class="logo">
            <span class="logo-text"></span>
        </div>
        <ul>
            <li><a href="#">赞助商</a></li>
            <li><a href="#">BUG反馈</a></li>
            <li><a href="#">联系我们</a></li>
        </ul>
    </nav>
<!-- 侧边栏导航栏 -->
<div class="shell">
    <ul class="nav">
        <li class="activeonly" id="logo">
            <a href="../html.css.java部分/音乐主页.html">
                <div class="text">目录</div>
            </a>
        </li>
        <li>
            <a href="../html.css.java部分/音乐主页.html">
                <div class="icon">
                    <i class="iconfont icon-cangku"></i>
                </div>
                <div class="text">播放器主页</div>
            </a>
        </li>
        <li>
            <a href="../html.css.java部分/音乐库.html">
                <div class="icon">
                    <i class="iconfont icon-cangku"></i>
                </div>
                <div class="text">音乐库</div>
            </a>
        </li>
        <li>
            <a href="../html.css.java部分/分类音乐类型.html">
                <div class="icon">
                    <i class="iconfont icon-cangku"></i>
                </div>
                <div class="text">音乐分类</div>
            </a>
        </li>
        <li>
            <a href="../html.css.java部分/歌手分类.html">
                <div class="icon">
                    <i class="iconfont icon-zhuti_tiaosepan"></i>
                </div>
                <div class="text">歌手分类</div>
            </a>
        </li>

        <li>
            <a href="../html.css.java部分/我的主页.html">
                <div class="icon">
                    <i class="iconfont icon-dunpaibaoxianrenzheng"></i>
                </div>
                <div class="text">我的主页</div>
            </a>
        </li>
         <li>
            <a href="../html.css.java部分/我的收藏.html">
                <div class="icon">
                    <i class="iconfont icon-dunpaibaoxianrenzheng"></i>
                </div>
                <div class="text">我的收藏</div>
            </a>
        </li>
        <li>
            <a href="./我的主页.html">
                <div class="icon">
                    <i class="iconfont icon-cangku"></i>
                </div>
                <div class="text">系统设置</div>
            </a>
        </li>
        <li>
            <a href="./成为创作者.html">
                <div class="icon">
                    <i class="iconfont icon-dunpaibaoxianrenzheng"></i>
                </div>
                <div class="text">成为创作者</div>
            </a>
        </li>
        <li>
            <a href="./vip区域.html">
                <div class="icon">
                    <i class="iconfont icon-dunpaibaoxianrenzheng"></i>
                </div>
                <div class="text">超级会员VIP</div>
            </a>
        </li>
    </ul>
</div><script>
    // 1. 获取所有类名为.nav下的 <li> 元素
    let nav = document.querySelectorAll(".nav li");

    function activeLink() {
        nav.forEach((item) => item.classList.remove("active"));
        this.classList.add("active");

        // 4. 隐藏所有非 "directory-content" 的 <section> 元素
        document.querySelectorAll('section[id!="directory-content"]').forEach((section) => {
            section.style.display = 'none';
        });

        // 5. 判断当前点击的 <li> 元素 id
        if (this.id === 'logo') {
            // 如果是 'logo',显示 "directory-content" 元素
            document.getElementById('directory-content').style.display = 'block';
        } else {
            // 否则,显示和当前点击 <li> 元素 id 对应的元素
            document.getElementById(this.id).style.display = 'block';
        }
    }
</script>
</body>

</html>

(二)css代码

/* 全局样式重置,去除默认边距、内边距,设置盒模型及去掉列表和链接默认样式 */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    list-style: none;
    text-decoration: none;
}

/* 页面主体样式,设置背景及顶部预留空间 */
body {
    background: rgba(228, 233, 245, 0);
    padding-top: 60px;
}

/* 科技感顶部导航栏整体样式,包含背景、颜色、布局、定位等 */
nav.top-nav.tech-style {
    background-color: #000;
    color: #ccc;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 30px;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 9998;
}

/* 导航栏渐变背景伪元素,增加层次感 */
nav.top-nav.tech-style:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(to right, #000000, #000000);
    opacity: 0.2;
    z-index: 0;
}

/* 导航栏logo样式,设置对齐和字体 */
nav.top-nav.tech-style.logo {
    display: flex;
    align-items: center;
    font-size: 22px;
    font-weight: bold;
}

/* 导航栏列表样式,去除默认样式并设为弹性布局 */
nav.top-nav.tech-style ul {
    list-style-type: none;
    display: flex;
}

/* 导航栏列表项样式,设置左边距间隔 */
nav.top-nav.tech-style ul li {
    margin-left: 25px;
}

/* 导航栏链接样式,设置颜色、内边距、过渡效果等 */
nav.top-nav.tech-style ul li a {
    color: #ccc;
    text-decoration: none;
    padding: 6px 12px;
    border-radius: 5px;
    transition: color 0.3s ease, background-color 0.3s ease;
    position: relative;
}

/* 导航栏链接底部横线伪元素,初始宽度为0,用于悬停效果 */
nav.top-nav.tech-style ul li a:before {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    width: 0;
    height: 2px;
    background-color: #00f2ff;
    transition: width 0.3s ease;
}

/* 导航栏链接悬停时文字变色 */
nav.top-nav.tech-style ul li a:hover {
    color: #00f2ff;
}

/* 导航栏链接悬停时底部横线展开 */
nav.top-nav.tech-style ul li a:hover:before {
    width: 100%;
}

/* 侧边栏整体样式,固定定位、设置宽度、背景等及过渡效果 */
.shell {
    position: fixed;
    width: 40px;
    height: 100%;
    background: #000000;
    z-index: 9999;
    transition: width 0.5s;
    padding-left: 3px;
    overflow: hidden;
    margin-top: -10px;
}

/* 侧边栏悬停变宽 */
.shell:hover {
    width: 150px;
}

/* 侧边栏列表样式,相对定位及设置高度 */
.shell ul {
    position: relative;
    height: 100vh;
}

/* 侧边栏列表项样式,相对定位及内边距 */
.shell ul li {
    position: relative;
    padding: 3px;
}

/* 侧边栏激活项样式,设置背景和圆角 */
.activeonly {
    background: #e4e9f5;
    border-top-left-radius: 30px;
    border-bottom-left-radius: 30px;
}

/* 侧边栏激活项右上角伪元素,用于视觉效果 */
.activeonly::before {
    content: "";
    position: absolute;
    top: -20px;
    right: 0;
    width: 20px;
    height: 20px;
    border-bottom-right-radius: 15px;
    box-shadow: 3px 3px 0 3px #e4e9f5;
    background: transparent;
}

/* 侧边栏激活项右下角伪元素,用于视觉效果 */
.activeonly::after {
    content: "";
    position: absolute;
    bottom: -20px;
    right: 0;
    width: 20px;
    height: 20px;
    border-top-right-radius: 15px;
    box-shadow: 3px -3px 0 3px #e4e9f5;
    background: transparent;
}

/* 侧边栏中id为logo元素的样式,设置外边距 */
#logo {
    margin: 30px 0 70px 0;
}

/* 侧边栏列表项链接整体样式,相对定位及布局设置 */
.shell ul li a {
    position: relative;
    display: flex;
    white-space: nowrap;
}

/* 侧边栏图标样式,设置尺寸、颜色、对齐等 */
.icon {
    min-width: 30px;
    padding-left: 3px;
    height: 35px;
    color: #fff;
    display: flex;
    justify-content: center;
    align-items: center;
    transition: 0.5s;
}

/* 图标内字体图标大小 */
.icon i {
    font-size: 15px;
}

/* 侧边栏文字样式,设置尺寸、颜色、对齐等 */
.text {
    height: 35px;
    display: flex;
    align-items: center;
    font-size: 12px;
    color: #ffad32c1;
    padding-left: 8px;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    transition: 0.5s;
}

/* 侧边栏列表项悬停时图标和文字变色 */
.shell ul li:hover a.icon,
.shell ul li:hover a.text {
    color: #ffa117;
}

/* 侧边栏激活项图标伪元素,用于装饰效果 */
.activeonly a.icon::before {
    content: "";
    position: absolute;
    inset: 3px;
    width: 40px;
    background: #000000;
    border-radius: 50%;
    transition: 0.5s;
    border: 5px solid #ffa117;
    box-sizing: border-box;
}
  • 效果图

在这里插入图片描述

二、登录页面

(一)HTML代码

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>注册登录界面</title>
    <link rel="stylesheet" href="注册登录页面.css">
</head>

<body>
    <div class="container">
        <div class="form-box">
            <!-- 注册 -->
            <div class="register-box hidden">
                <h1>注册</h1>
                <input type="text" placeholder="用户名" id="register-username">
                <input type="email" placeholder="邮箱" id="register-email">
                <input type="password" placeholder="密码" id="register-password">
                <input type="password" placeholder="确认密码" id="register-password-confirm">
                <button onclick="registerSubmit()">注册</button>
            </div>
            <!-- 登录 -->
            <div class="login-box">
                <h1>登录</h1>
                <input type="text" placeholder="用户名" id="login-username">
                <input type="password" placeholder="密码" id="login-password">
                <button onclick="loginSubmit()">登录</button>
            </div>
        </div>
        <div class="con-box left">
            <h2>欢迎来到<span>我的音乐</span></h2>
            <img src="图片/OIP-C.jpg" alt="">
            <p>已有账号</p>
            <button id="login">去登录</button>
        </div>
        <div class="con-box right">
            <h2>欢迎来到<span>我的音乐</span></h2>
            <img src="图片/01c2445861085ea8012060c8b394f2.jpg" alt="">
            <p>没有账号?</p>
            <button id="register">去注册</button>
        </div>
    </div>
    <script src="注册登录页面.js"></script>
</body>

</html>

(二)css代码

* {
    /* 初始化 */
    margin: 0;
    padding: 0;
}

body {
    /* 100%窗口高度 */
    height: 100vh;
    /* 弹性布局 水平+垂直居中 */
    display: flex;
    justify-content: center;
    align-items: center;
    /* 渐变背景 */
    background: linear-gradient(200deg, #328bff, #00ffd0);
}

.container {
    background-color: #fff;
    width: 650px;
    height: 415px;
    border-radius: 5px;
    /* 阴影 */
    box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1);
    /* 相对定位 */
    position: relative;
}

.form-box {
    /* 绝对定位 */
    position: absolute;
    top: -10%;
    left: 5%;
    background-color: #d3b7d8;
    width: 320px;
    height: 500px;
    border-radius: 5px;
    box-shadow: 2px 0 10px rgba(0, 0, 0, 0.1);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 2;
    /* 动画过渡 加速后减速 */
    transition: 0.5s ease-in-out;
}

.register-box,
.login-box {
    /* 弹性布局 垂直排列 */
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
}

.hidden {
    display: none;
    transition: 0.5s;
}

h1 {
    text-align: center;
    margin-bottom: 25px;
    /* 大写 */
    text-transform: uppercase;
    color: #fff;
    /* 字间距 */
    letter-spacing: 5px;
}

input {
    background-color: transparent;
    width: 70%;
    color: #fff;
    border: none;
    /* 下边框样式 */
    border-bottom: 1px solid rgba(255, 255, 255, 0.4);
    padding: 10px 0;
    text-indent: 10px;
    margin: 8px 0;
    font-size: 14px;
    letter-spacing: 2px;
}

input::placeholder {
    color: #fff;
}

input:focus {
    color: #6e62ad;
    outline: none;
    border-bottom: 1px solid #6295ad;
    transition: 0.5s;
}

input:focus::placeholder {
    opacity: 0;
}

.form-box button {
    width: 70%;
    margin-top: 35px;
    background-color: #f6f6f6;
    outline: none;
    border-radius: 8px;
    padding: 13px;
    color: #62ad77;
    letter-spacing: 2px;
    border: none;
    cursor: pointer;
}

.form-box button:hover {
    background-color: #626dad;
    color: #f6f6f6;
    transition: background-color 0.5s ease;
}

/* 新增的加载动画样式 */
.login-box.loading-animation {
    animation: loading 1s ease-in-out;
}

@keyframes loading {
    0% {
        opacity: 1;
    }

    50% {
        opacity: 0.5;
    }

    100% {
        opacity: 1;
    }
}

.con-box {
    width: 50%;
    /* 弹性布局 垂直排列 居中 */
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    /* 绝对定位 居中 */
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}

.con-box.left {
    left: -2%;
}

.con-box.right {
    right: -2%;
}

.con-box h2 {
    color: #8e9aaf;
    font-size: 25px;
    font-weight: bold;
    letter-spacing: 3px;
    text-align: center;
    margin-bottom: 4px;
}

.con-box p {
    font-size: 12px;
    letter-spacing: 2px;
    color: #8e9aaf;
    text-align: center;
}

.con-box span {
    color: #427eff;
}

.con-box img {
    width: 150px;
    height: 150px;
    opacity: 0.9;
    margin: 40px 0;
}

.con-box button {
    margin-top: 3%;
    background-color: #fff;
    color: #a262ad;
    border: 1px solid #d3b7d8;
    padding: 6px 10px;
    border-radius: 5px;
    letter-spacing: 1px;
    outline: none;
    cursor: pointer;
}

.con-box button:hover {
    background-color: #b7c2d8;
    color: #ffffff;
}

(三)js代码

// 获取相关DOM元素
let login = document.getElementById('login');
let register = document.getElementById('register');
let form_box = document.getElementsByClassName('form-box')[0];
let register_box = document.getElementsByClassName('register-box')[0];
let login_box = document.getElementsByClassName('login-box')[0];
let loginUsername = document.getElementById('login-username');
let loginPassword = document.getElementById('login-password');
let registerUsername = document.getElementById('register-username');
let registerEmail = document.getElementById('register-email');
let registerPassword = document.getElementById('register-password');
let registerPasswordConfirm = document.getElementById('register-password-confirm');

// 模拟用户数据存储(简单示例,实际应用中可替换为更合适的存储方式,如localStorage、发送到后端等)
// 这里不再使用这个简单的数组存储,而是使用localStorage

// 去注册按钮点击事件
register.addEventListener('click', () => {
    form_box.style.transform = 'translateX(80%)';
    login_box.classList.add('hidden');
    register_box.classList.remove('hidden');
});

// 去登录按钮点击事件
login.addEventListener('click', () => {
    form_box.style.transform = 'translateX(0%)';
    register_box.classList.add('hidden');
    login_box.classList.remove('hidden');
});

function loginSubmit() {
    const inputUsername = loginUsername.value;
    const inputPassword = loginPassword.value;
    // 从localStorage获取存储的用户信息
    const storedUsers = JSON.parse(localStorage.getItem('users')) || [];
    const user = storedUsers.find(u => u.username === inputUsername && u.password === inputPassword);
    if (user) {
        // 给登录按钮所在的父容器添加加载动画类
        document.querySelector('.login-box').classList.add('loading-animation');
        // 等待动画结束(这里简单设置一个定时器模拟动画时长,实际中可以根据动画的真实时长来调整)
        setTimeout(() => {
            window.location.href = '音乐主页.html';
        }, 500); // 假设动画时长为1秒,可根据实际调整
    } else {
        alert("用户名或密码错误,请重新输入");
    }
}

function registerSubmit() {
    const username = registerUsername.value;
    const email = registerEmail.value;
    const password = registerPassword.value;
    const passwordConfirm = registerPasswordConfirm.value;

    if (password === passwordConfirm) {
        // 从localStorage获取已存储的用户信息列表,若不存在则初始化为空数组
        const storedUsers = JSON.parse(localStorage.getItem('users')) || [];
        // 创建新用户对象
        const newUser = {
            username: username,
            email: email,
            password: password
        };
        // 将新用户添加到用户列表
        storedUsers.push(newUser);
        // 将更新后的用户列表存储回localStorage
        localStorage.setItem('users', JSON.stringify(storedUsers));

        alert("注册完成");
        // 跳转到登录页面
        form_box.style.transform = 'translateX(0%)';
        register_box.classList.add('hidden');
        login_box.classList.remove('hidden');
    } else {
        alert("两次输入的密码不一致,请重新输入");
    }
}
由于代码太多剩余的代码我将放到我的Gitee地址,需要的小伙伴们自取
由于代码太多剩余的代码我将放到我的Gitee地址,需要的小伙伴们自取
由于代码太多剩余的代码我将放到我的Gitee地址,需要的小伙伴们自取

由于项目代码量较多,本文仅展示了侧边栏和登录页面的相关代码。剩余部分包括音乐播放器的核心功能实现,如音乐的播放、暂停、切换、进度控制等功能的代码,以及音乐库展示、音乐分类筛选等相关代码。所有源代码已上传至 Gitee 仓库,感兴趣的小伙伴可以前往获取,进行学习和进一步的开发优化。希望这个项目能为大家在前端开发学习和实践中提供一些帮助和启发
在这里插入图片描述
在这里插入图片描述

三、剩余代码以及所有源代码Gitee地址

我的码云链接https://gitee.com/srte-7719/project-experience/tree/master/HTML%E9%A1%B9%E7%9B%AE

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【js进阶】设计模式之单例模式的几种声明方式

单例模式&#xff0c;简言之就是一个类无论实例化多少次&#xff0c;最终都是同一个对象 原生js的几个辅助方式的实现 手写forEch,map,filter Array.prototype.MyForEach function (callback) {for (let i 0; i < this.length; i) {callback(this[i], i, this);} };con…

git系列之revert回滚

1. Git 使用cherry-pick“摘樱桃” step 1&#xff1a; 本地切到远程分支&#xff0c;对齐要对齐的base分支&#xff0c;举例子 localmap git pull git reset --hard localmap 对应的commit idstep 2&#xff1a; 执行cherry-pick命令 git cherry-pick abc123这样就会将远程…

【Web】2025西湖论剑·中国杭州网络安全安全技能大赛题解(全)

目录 Rank-l Rank-U sqli or not Rank-l username存在报错回显&#xff0c;发现可以打SSTI 本地起一个服务&#xff0c;折半查找fuzz黑名单&#xff0c;不断扔给fenjing去迭代改payload from flask import Flask, request, render_template_stringapp Flask(__name__)app…

Android系统开发(十四):跨进程通讯的隐形之手AIDL

引言 你是否曾在 Android 开发中为进程间通讯&#xff08;IPC&#xff09;头疼不已&#xff1f;如果是&#xff0c;那么 AIDL 就是你的救星&#xff01;它不仅让跨进程数据传输变得高效&#xff0c;而且还解决了异构环境的兼容性问题。本篇文章将带你深入了解 AIDL&#xff0c…

string类的常用接口及模拟实现

目录 基础知识 常用接口 1>常见构造 2>容量操作 3>访问及遍历操作 1.迭代器 2.反向迭代器 3.范围for 4.auto 4>修改操作 5>非成员函数 其它接口 模拟实现 string.h string.cpp swap() 基础知识 string是一个管理字符的类&#xff0c;定义在std命…

Linux——多线程的控制

Linux——线程的慨念及控制-CSDN博客 文章目录 目录 文章目录 前言 一、线程函数的认识 1、基本函数的回顾 1、线程的创建pthread_create 2、线程阻塞pthread_join 3、线程退出pthread_exit 2、线程的分离pthread_detach 3、互斥锁初始化函数&#xff1a;pthread_mutex_init 4、…

计算机网络 (49)网络安全问题概述

前言 计算机网络安全问题是一个复杂且多维的领域&#xff0c;它涉及到网络系统的硬件、软件以及数据的安全保护&#xff0c;确保这些元素不因偶然的或恶意的原因而遭到破坏、更改或泄露。 一、计算机网络安全的定义 计算机网络安全是指利用网络管理控制和技术措施&#xff0c;保…

TCP状态转移图详解

状态 描述 LISTEN represents waiting for a connection request from any remote TCP and port. SYN-SENT represents waiting for a matching connection request after having sent a connection request. SYN-RECEIVED represents waiting for a confirming connect…

VUE学习笔记(入门)5__vue指令v-html

v-html是用来解析字符串标签 示例 <!doctype html> <html lang"en"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document<…

【论文投稿】探秘计算机视觉算法:开启智能视觉新时代

目录 引言 一、计算机视觉算法基石&#xff1a;图像基础与预处理 二、特征提取&#xff1a;视觉信息的精华萃取 三、目标检测&#xff1a;从图像中精准定位目标 四、图像分类&#xff1a;识别图像所属类别 五、语义分割&#xff1a;理解图像的像素级语义 六、计算机视觉…

【Java数据结构】Java对象的比较

元素的比较 基本类型比较 在Java中基本类型比较可以直接比较大小 &#xff0c;返回一个布尔类型&#xff08;true或者false&#xff09;。 int a 10; int b 20; System.out.println(a>b); System.out.println(ab); System.out.println(a<b);对象比较的问题 对象的比…

《自动驾驶与机器人中的SLAM技术》ch8:基于预积分和图优化的紧耦合 LIO 系统

和组合导航一样&#xff0c;也可以通过预积分 IMU 因子加上雷达残差来实现基于预积分和图优化的紧耦合 LIO 系统。一些现代的 Lidar SLAM 系统也采用了这种方式。相比滤波器方法来说&#xff0c;预积分因子可以更方便地整合到现有的优化框架中&#xff0c;从开发到实现都更为便…

Ubuntu 24.04 LTS 更改软件源

Ubuntu 24.04 LTS 修改软件源

【2024年度技术总结】Unity 游戏开发的深度探索与实践

文章目录 前言一、Unity 游戏开发的技术深度总结1、C# 编程基础2、Unity 基础入门3、Unity 实战技巧4、Unity 小技巧分享 二、技术工具与平台的年度使用心得1、学习资源的选择2、开发环境配置3、测试与调试工具 三、技术项目实战经验与成果展示1、【制作100个Unity游戏】专栏2、…

ingress-nginx代理tcp使其能外部访问mysql

一、helm部署mysql主从复制 helm repo add bitnami https://charts.bitnami.com/bitnami helm repo updatehelm pull bitnami/mysql 解压后编辑values.yaml文件&#xff0c;修改如下&#xff08;storageclass已设置默认类&#xff09; 117 ## param architecture MySQL archit…

Top期刊算法!RIME-CNN-BiLSTM-Attention系列四模型多变量时序预测

Top期刊算法&#xff01;RIME-CNN-BiLSTM-Attention系列四模型多变量时序预测 目录 Top期刊算法&#xff01;RIME-CNN-BiLSTM-Attention系列四模型多变量时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于RIME-CNN-BiLSTM-Attention、CNN-BiLSTM-Attention、R…

游戏引擎学习第84天

仓库:https://gitee.com/mrxiao_com/2d_game_2 我们正在试图弄清楚如何完成我们的世界构建 上周做了一些偏离计划的工作&#xff0c;开发了一个小型的背景位图合成工具&#xff0c;这个工具做得还不错&#xff0c;虽然是临时拼凑的&#xff0c;但验证了背景构建的思路。这个过…

搭建一个基于Spring Boot的数码分享网站

搭建一个基于Spring Boot的数码分享网站可以涵盖多个功能模块&#xff0c;例如用户管理、数码产品分享、评论、点赞、收藏、搜索等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的数码分享平台。 — 1. 项目初始化 使用 Spring Initializr 生成一个Spring …

31、【OS】【Nuttx】OSTest分析(1):stdio测试(一)

背景 接上篇wiki 30、【OS】【Nuttx】构建脚本优化&#xff0c;引入待构建项目参数 最小系统分析完后&#xff0c;下一个能够更全面了解Nuttx的Demo&#xff0c;当然选择OSTest&#xff0c;里面有大量关于OS的测试用例&#xff0c;方便对Nuttx的整体功能有个把握。 stdio_tes…

Spring WebFlux

文章目录 一、概述1、Spring体系定位2、Spring MVC和WebFlux差异 二、入门1、依赖2、ReactorHttpHandlerAdapter&#xff08;main启动&#xff09;3、DispatcherHandler&#xff08;SpringWebFlux启动&#xff09;4、WebFilter 三、DispatcherHandler理解1、handle 前置知识&am…