小游戏源码开发搭建技术栈和服务器配置流程
近些年各种场景小游戏开发搭建版本层出不穷,山东布谷科技拥有多年海内外小游戏源码开发经验,现为从事小游戏源码开发或游戏运营的朋友们详细介绍小游戏开发及服务器配置流程。
一、可以对接到app的小游戏是如何开发的
1、小游戏源码开发的需求分析:
明确目标:确定 app 的核心功能以及希望通过集成小游戏达到的目的,如增加用户粘性、提高用户参与度、获取广告收益等。同时要确定小游戏的类型、主题、玩法等,使其与 app 的整体风格和目标用户群体相契合。
用户研究:了解目标用户的喜好、行为模式以及对小游戏的接受程度,以便设计出更符合用户需求的游戏。
2、小游戏源码开发技术选型:
前端框架:选择适合的前端开发框架,如 React Native、Flutter 等,以便实现跨平台开发,降低开发成本和时间。如果是针对特定平台(如 iOS 或 Android),也可以选择原生开发技术(如 Swift 或 Java/Kotlin)。
游戏引擎(可选):对于较为复杂的游戏,可以选择合适的游戏引擎,如 Unity、Cocos2d-x 等,这些引擎提供了丰富的功能和工具,能够提高游戏的开发效率和性能。
小游戏广告 SDK:选择合适的广告平台,并获取其广告 SDK,以便在小游戏中展示广告。常见的广告平台有 Google AdMob、Facebook Audience Network、腾讯广点通等。
小游戏后端技术(可选):如果小游戏需要后端支持,如用户登录、数据存储、排行榜等功能,需要选择合适的后端技术,如 Node.js、Java、Python 等,并搭建相应的后端服务器。
3、小游戏设计与开发:
游戏框架搭建:使用选定的技术和工具搭建游戏的基本框架,包括游戏场景、角色、道具等元素的初始化。
游戏逻辑实现:根据游戏设计,编写代码实现游戏的核心玩法、规则、关卡等逻辑。例如,对于一款消除类游戏,需要实现方块的消除规则、关卡的生成和难度递增等逻辑。
UI/UX 设计:设计游戏的用户界面和用户体验,确保游戏界面美观、简洁、易用,操作流畅。例如,设计合理的游戏菜单、按钮、提示信息等,以及游戏的动画效果、音效等,增强游戏的趣味性和吸引力。
4、小游戏广告系统对接:
注册和登录广告平台:在选定的广告平台上注册账号,并登录开发者后台。
集成广告 SDK:根据广告平台提供的文档和指引,将广告 SDK 集成到小游戏项目中,包括添加依赖、初始化 SDK 等操作。
创建广告位:在广告平台的开发者后台中,创建对应的广告位,并获取广告位的 ID 或其他标识符,以便在游戏中加载和展示广告。
广告加载和展示:在游戏的适当位置(如游戏开始前、结束后、暂停时等)调用广告加载和展示的接口或方法,根据广告位的不同,展示方式也会有所区别。
广告事件监听和回调:添加事件监听和回调函数,以便处理广告的交互和用户行为,如广告的点击、关闭等事件。
5、测试与优化:
功能测试:对小游戏的各项功能进行全面测试,包括游戏玩法、广告展示、用户登录等,确保各项功能正常运行,没有漏洞和错误。
性能测试:测试小游戏的加载速度、流畅度、内存占用等性能指标,优化代码和资源配置,提高游戏的性能和稳定性。
用户体验测试:邀请目标用户进行测试,收集用户的反馈意见,根据用户的反馈对游戏的界面、玩法、广告展示等方面进行优化,提高用户体验。
6、发布与推广:
打包发布:将小游戏打包成适合 app 平台的安装包,如 Android 的 APK 文件或 iOS 的 IPA 文件。
应用签名:对安装包进行签名,确保应用的安全性和完整性。
提交审核:将打包好的应用提交到各大应用商店进行审核,如 Google Play、App Store 等,审核通过后即可发布上线。
推广营销:通过各种渠道进行小游戏的推广,如社交媒体、广告投放、合作推广等,提高小游戏的知名度和用户量。
二、通用小游戏源码开发技术栈
HTML5 + CSS3 + JavaScript(适合网页小游戏)
-
- HTML5:
- 它提供了游戏的基本结构。例如,使用<canvas>标签可以创建一个绘图区域,用于绘制游戏场景、角色等图形元素。像在一个简单的 2D 射击游戏中,游戏的背景、敌人和玩家角色的图形都可以在<canvas>中绘制。
- 还可以利用 HTML5 的音频和视频标签(<audio>和<video>)来添加游戏背景音乐和过场动画等多媒体元素。
- CSS3:
- HTML5:
主要用于游戏的样式设计。通过 CSS3 的样式规则,可以设置游戏元素的外观,如颜色、大小、位置等。例如,使用transform属性可以实现游戏元素的旋转、缩放和平移等动画效果,增强游戏的视觉体验。在一个休闲的拼图游戏中,可以用 CSS3 来设置拼图块的样式,包括它们的边框、背景颜色等。
-
- JavaScript:
- 是游戏的核心逻辑部分。它可以处理用户输入,比如玩家通过键盘或鼠标控制游戏角色的移动。例如,在一个贪吃蛇游戏中,通过监听键盘事件,使用 JavaScript 代码来改变蛇头的方向。
- 也可以用于实现游戏的物理效果,如碰撞检测。在一个弹球游戏中,JavaScript 可以检测弹球与边界以及障碍物之间的碰撞,并根据碰撞情况更新弹球的运动方向和速度。
- JavaScript:
Unity(适合跨平台 3D/2D 小游戏)
-
- 图形渲染:
- Unity 具有强大的图形渲染引擎。对于 3D 游戏,它可以高效地渲染复杂的场景,包括光照效果(如实时阴影、反射等)。例如,在一个 3D 冒险游戏中,阳光透过树叶的斑驳光影效果可以通过 Unity 的光照系统来实现。
- 在 2D 游戏方面,Unity 也提供了诸如精灵(Sprite)系统,方便开发者管理和渲染 2D 图像。比如在一个 2D 平台跳跃游戏中,游戏角色和各种平台道具等都可以作为精灵进行渲染。
- 物理引擎:
- 内置了物理引擎,支持刚体(Rigidbody)、碰撞器(Collider)等组件。以一个汽车竞速游戏为例,车辆的运动、碰撞和轮胎与地面的摩擦等物理效果都可以通过 Unity 的物理引擎来模拟。
- 脚本编程:
- 支持多种编程语言,如 C#。开发者可以通过编写脚本控制游戏对象的行为。在一个塔防游戏中,使用 C# 脚本可以控制防御塔的攻击逻辑、敌人的移动路径等。
- 图形渲染:
2.Cocos2d - x(适合 2D 手机小游戏)
-
- 场景管理:
提供了一套完善的场景管理机制。开发者可以方便地创建游戏的不同场景,如主菜单场景、游戏关卡场景、游戏结束场景等。例如,在一个消除类手机游戏中,从游戏启动的加载场景,到进入游戏后的关卡场景,再到关卡结束后的结算场景,都可以通过 Cocos2d - x 的场景管理来组织。
-
- 精灵和动画系统:
有丰富的精灵类和动画制作工具。可以轻松地创建和管理 2D 精灵,并且实现精灵的动画效果。在一个横版格斗游戏中,游戏角色的各种攻击动作、行走姿势等动画都可以利用 Cocos2d - x 的动画系统来制作。
-
- 跨平台支持:
能够很好地支持多种移动平台,如 iOS 和 Android。开发者可以使用一套代码库来开发游戏,然后通过相应的编译工具将游戏发布到不同的平台上。这大大节省了开发成本,提高了开发效率。
三、小游戏源码搭建服务器配置流程(基于 Linux 服务器部署网页小游戏为例)
- 服务器选择与安装操作系统
1、服务器选择:
根据游戏的预估流量、用户数量等因素选择合适的服务器配置。如果是一个小型的休闲网页游戏,刚开始可以选择云服务器的入门级配置,如 1 核 CPU、1GB 内存的配置。对于大型多人在线游戏,可能需要多核 CPU、大容量内存和高带宽的服务器。
2、操作系统安装:
常用的操作系统有 Ubuntu Server、CentOS 等。以 Ubuntu Server 为例,首先需要从官方网站下载镜像文件,然后通过服务器的远程管理工具(如 iDRAC 或 IPMI)将镜像文件刻录到服务器的硬盘上。在安装过程中,需要设置好基本的网络配置(如 IP 地址、子网掩码、网关等)、用户账号和密码等信息。
- 安装服务器软件
Web 服务器安装:
对于网页小游戏,通常需要安装一个 Web 服务器,如 Nginx 或 Apache。以 Nginx 为例,在 Ubuntu Server 上,可以通过终端命令sudo apt - get update更新软件包列表,然后使用sudo apt - get install nginx命令来安装 Nginx。安装完成后,可以通过服务器的 IP 地址在浏览器中访问 Nginx 的默认页面,检查是否安装成功。
3.数据库服务器安装(如果需要):
如果游戏需要存储用户数据(如玩家的得分、装备等信息),需要安装数据库服务器。常见的有 MySQL 或 MongoDB。以 MySQL 为例,在 Ubuntu Server 上,可以使用命令sudo apt - get install mysql - server进行安装。在安装过程中,会提示设置 root 用户的密码等信息。安装完成后,可以使用mysql - u root - p命令登录数据库进行后续的数据库配置,如创建游戏相关的数据库和表。
4.配置服务器软件
Nginx 配置(以部署 HTML5 游戏为例):
首先,需要将游戏文件(包括 HTML、CSS、JavaScript 文件)上传到服务器的指定目录,如/var/www/html。然后,打开 Nginx 的配置文件(通常位于/etc/nginx/sites - available/default),在server块中设置正确的root目录指向游戏文件所在的目录,例如root /var/www/html;。同时,可以配置服务器监听的端口(默认是 80 端口),如果需要使用其他端口(如 8080 端口),可以修改listen指令。
5.MySQL 配置(如果需要):
配置数据库的用户权限,确保游戏服务器能够安全地访问和操作数据库。可以通过创建具有适当权限的数据库用户来实现。例如,使用CREATE USER 'game_user'@'localhost' IDENTIFIED BY 'password';命令创建一个名为game_user的用户,密码为password,并且该用户只能从本地访问数据库。然后,使用GRANT ALL PRIVILEGES ON game_database.* TO 'game_user'@'localhost';命令授予该用户对游戏相关数据库(假设名为game_database)的所有权限。
6.安全配置
-
- 防火墙设置:
- 在服务器上启用防火墙,如 Ubuntu Server 上的ufw(Uncomplicated Firewall)。可以通过命令sudo ufw enable来启用防火墙,然后使用sudo ufw allow命令来允许特定的端口访问。例如,对于一个网页游戏,需要允许 80 端口(如果使用 Nginx 默认端口)或其他配置的 Web 服务器端口的访问,命令可以是sudo ufw allow 80。
- SSL 证书配置(如果需要):
- 如果游戏需要通过 https 协议来保证数据安全和用户信任,需要配置 SSL 证书。可以通过免费的证书颁发机构(如 Let's Encrypt)来获取证书。在 Ubuntu Server 上,可以使用 Certbot 工具来获取和安装证书。首先,通过sudo apt - get install certbot python - certbot - nginx安装 Certbot 和相关的 Nginx 插件,然后使用certbot --nginx命令来自动获取和配置 SSL 证书,按照提示输入相关信息(如邮箱地址等)即可。
- 防火墙设置:
7. 性能优化与监控
-
- 性能优化:
- 对于服务器软件,可以进行一些性能优化配置。例如,在 Nginx 中,可以调整worker_processes参数来优化服务器的并发处理能力,根据服务器的 CPU 核心数来合理设置这个参数。一般来说,可以将worker_processes设置为服务器的 CPU 核心数。
- 对于数据库,优化查询语句和索引设置可以提高数据访问效率。例如,在 MySQL 中,如果游戏经常需要根据玩家的 ID 来查询玩家数据,可以在玩家数据表中为玩家 ID 字段创建索引,以加快查询速度。
- 监控:
- 安装服务器监控工具,如 Zabbix 或 Prometheus。以 Zabbix 为例,在 Ubuntu Server 上,可以通过添加 Zabbix 官方仓库,然后使用sudo apt - get install zabbix - server - mysql zabbix - frontend - php zabbix - agent命令来安装 Zabbix 服务器端、Web 前端和客户端代理。安装完成后,通过浏览器访问 Zabbix 的 Web 界面(默认地址是http://server_ip/zabbix),进行服务器性能指标(如 CPU 使用率、内存使用率、网络流量等)的监控配置。
- 性能优化:
- 不同小游戏源码的功能大概有哪些
- 游戏逻辑功能:这是小游戏的基础,定义了游戏的基本规则、角色的行为逻辑、得分机制、胜负判定条件等。例如,在射击游戏中,子弹的发射逻辑、敌人的移动和攻击逻辑;在消除类游戏中,方块的消除规则、关卡的推进条件等。
- 关卡设计功能:包括不同关卡的设置,每个关卡具有独特的地图布局、任务目标、难度级别、敌人或障碍物配置等。随着关卡的推进,游戏难度逐渐增加,以保持玩家的挑战性和兴趣。
- 道具系统:游戏中可以设置各种道具,玩家通过获取或使用道具来获得特殊能力或优势。比如在跑酷游戏中的加速道具、护盾道具;在解谜游戏中的提示道具等。
- 技能系统(如果适用):某些小游戏可能具有角色技能系统,玩家可以通过升级或解锁技能来增强角色的能力,丰富游戏的玩法策略。例如,角色扮演类的小游戏中,角色可能有攻击技能、防御技能、辅助技能等。
- 用户体验相关功能:
- 图形与界面设计功能:提供精美的游戏画面、场景设计、角色形象设计以及直观的用户界面布局。良好的图形设计能吸引玩家的注意力,而简洁易懂的界面方便玩家操作。
- 动画与特效功能:角色的动作动画、场景的过渡动画、特效演出(如爆炸、光影、粒子效果等)可以增强游戏的视觉效果和趣味性。
- 音效与音乐功能:包括背景音乐、角色的语音、各种动作的音效(如射击声、碰撞声、点击按钮的声音等),为玩家营造出丰富的听觉体验,增强游戏的沉浸感。
- 操作反馈功能:当玩家进行操作时,游戏给予相应的反馈,如按键的触感反馈(如果是移动端或有特殊设备支持)、操作后的视觉反馈(如按钮的点击效果、操作成功或失败的提示)等,让玩家清楚知道自己的操作是否被正确响应。
- 社交互动相关功能:
- 排行榜功能:记录玩家的游戏成绩,如得分、通关时间等,并进行排名展示。玩家可以查看自己在好友或全球玩家中的排名,激发竞争意识,增加游戏的粘性。
- 好友系统:玩家可以添加好友、查看好友的游戏状态、邀请好友一起游戏等,促进玩家之间的社交互动。
- 分享功能:玩家可以将自己的游戏成绩、精彩瞬间等分享到社交平台,吸引更多人参与游戏,同时也扩大了游戏的传播范围。
- 互动对战功能(如果支持多人模式):允许多个玩家同时在线进行对战或合作游戏,玩家可以与其他玩家实时互动、交流,增加游戏的趣味性和社交性。
- 数据存储与管理功能:
- 用户数据存储:记录玩家的游戏进度、成就、道具、解锁的关卡等信息,以便玩家下次继续游戏时可以从上次的进度开始。
- 游戏设置功能:玩家可以根据自己的需求和偏好,对游戏的音效、画面质量、操作方式等进行个性化设置。
- 其他辅助功能:
- 新手引导功能:为新玩家提供游戏的操作指南、玩法介绍,帮助他们快速上手游戏。
- 广告展示功能:开发者可以在游戏中嵌入广告,以获取广告收益。广告的展示方式可以是视频广告、横幅广告、插屏广告等。
- 更新功能:开发者可以发布游戏的更新版本,包括修复漏洞、优化性能、添加新的内容等,玩家可以通过游戏内的更新提示进行更新。
以上大概是小游戏源码开发搭建的基本内容,希望对从事游戏开发行业的朋友有一定的帮助!
相关文章:

小游戏源码开发搭建技术栈和服务器配置流程
近些年各种场景小游戏开发搭建版本层出不穷,山东布谷科技拥有多年海内外小游戏源码开发经验,现为从事小游戏源码开发或游戏运营的朋友们详细介绍小游戏开发及服务器配置流程。 一、可以对接到app的小游戏是如何开发的 1、小游戏源码开发的需求分析: 明…...

深度学习|表示学习|卷积神经网络|输出维度公式|15
如是我闻: 在卷积和池化操作中,计算输出维度的公式是关键,它们分别可以帮助我们计算卷积操作和池化操作后的输出大小。下面分别总结公式,并结合解释它们的意义: 1. 卷积操作的输出维度公式 当我们对输入图像进行卷积时…...

cpp智能指针
普通指针的不足 new和new[]的内存需要用delete和deletel]释放。 程序员的主观失误,忘了或漏了释放。 程序员也不确定何时释放。 普通指针的释放 类内的指针,在析构函数中释放。 C内置数据类型,如何释放? new出来的类,本身如…...

【面试题】 Java 三年工作经验(2025)
问题列表 为什么选择 spring boot 框架,它与 Spring 有什么区别?spring mvc 的执行流程是什么?如何实现 spring 的 IOC 过程,会用到什么技术?spring boot 的自动化配置的原理是什么?如何理解 spring boot 中…...

MOS的体二极管能通多大电流
第一个问题:MOS导通之后电流方向可以使任意的,既可以从D到S,也可以从S到D。 第二个问题:MOS里面的体二极管电流可以达到几百安培,这也就解释了MOS选型的时候很少考虑体二极管的最大电流,而是考虑DS之间电流…...

Node.js下载安装及环境配置教程 (详细版)
Node.js:是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建可扩展的网络应用程序。Node.js 使用事件驱动、非阻塞 I/O 模型,使其非常适合构建实时应用程序。 Node.js 提供了一种轻量、高效、可扩展的方式来构建网络应用程序࿰…...
嵌入式MCU面试笔记2
目录 串口通信 概论 原理 配置 HAL库代码 1. 初始化函数 2. 数据发送和接收函数 3. 中断和DMA函数 4. 中断服务函数 串口通信 概论 我们知道,通信桥接了两个设备之间的交流。一个经典的例子就是使用串口通信交换上位机和单片机之间的数据。 比较常见的串…...

代码随想录算法【Day34】
Day34 62.不同路径 思路 第一种:深搜 -> 超时 第二种:动态规划 第三种:数论 动态规划代码如下: class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m, vector<int>(n,…...

《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》重印P126、P131勘误
勘误:打圈的地方有指数二字。 指数滤波器本身是错误的概念,我在书上打了一个叉,排版人员误删了。 滤波器部分从根本上有问题,本来要改,但是时间不够了。 和廖老师讨论多次后,决定大动。指数滤波器的概念…...

vim多文件操作如何同屏开多个文件
[rootxxx ~]# vimdiff aa.txt bb.txt cc.txt #带颜色比较的纵向排列打开的同屏多文件操作 示例: [rootxxx ~]# vimdiff -o aa.txt bb.txt cc.txt #带颜色比较的横向排列打开的同屏多文件操作 示例: [rootxxx ~]# vim -O aa.txt bb.txt c…...

day6手机摄影社区,可以去苹果摄影社区学习拍摄技巧
逛自己手机的社区:即(手机牌子)摄影社区 拍照时防止抖动可以控制自己的呼吸,不要大喘气 拍一张照片后,如何简单的用手机修图? HDR模式就是让高光部分和阴影部分更协调(拍风紧时可以打开&…...

渗透测试之WAF规则触发绕过规则之规则库绕过方式
目录 Waf触发规则的绕过 特殊字符替换空格 实例 特殊字符拼接绕过waf Mysql 内置得方法 注释包含关键字 实例 Waf触发规则的绕过 特殊字符替换空格 用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格 这个方法也可以部分绕过最新版本的…...

C语言【基础篇】之流程控制——掌握三大结构的奥秘
流程控制 🚀前言🦜顺序结构💯 定义💯执行规则 🌟选择结构💯if语句💯switch语句💯case穿透规则 🤔循环结构💯for循环💯while循环💯do -…...

c++小知识点
抽象类包含至少一个纯虚函数,不能实例化对象。派生类必须实现基类的所有纯虚函数才能成为非抽象类,从而可以实例化对象。可以使用抽象类的指针或引用指向派生类对象,实现多态性调用。抽象类虽然不能直接实例化,但可以拥有构造函数…...

团体程序设计天梯赛-练习集——L1-022 奇偶分家
前言 这几道题都偏简单一点,没有什么计算,10分 L1-022 奇偶分家 给定N个正整数,请统计奇数和偶数各有多少个? 输入格式: 输入第一行给出一个正整N(≤1000);第2行给出N个非负整数…...

vue项目中,如何获取某一部分的宽高
vue项目中,如何获取某一部分的宽高 在Vue项目中,如果你想要获取某个DOM元素的宽度和高度,可以使用原生的JavaScript方法或者结合Vue的特性来实现。以下是几种常见的方法: 使用ref属性 你可以给需要测量宽高的元素添加一个ref属…...

LeetCode - #195 Swift 实现打印文件中的第十行
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...

机试题——最小矩阵宽度
题目描述 给定一个矩阵,包含 N * M 个整数,和一个包含 K 个整数的数组。 现在要求在这个矩阵中找一个宽度最小的子矩阵,要求子矩阵包含数组中所有的整数。 输入描述 第一行输入两个正整数 N,M,表示矩阵大小。 接下…...

香港维尔利健康科技集团重金投资,内地多地体验中心同步启动
香港维尔利健康科技集团近期宣布,将投资数亿港元在内地多个城市建立全新的健康科技体验中心。这一战略举措旨在进一步拓展集团在内地市场的布局,推动创新医疗技术的普及和应用。 多地布局,覆盖主要城市 据悉,维尔利健康科技集团将…...

ZYNQ-IP-AXI-GPIO
AXI GPIO 可以将 PS 端的一个 AXI 4-Lite 接口转化为 GPIO 接口,并且可以被配置为单端口或双端口,每个通道的位宽可以独立配置。 通过使能三态门可以将端口动态地配置为输入或输出。 AXIGPIO 是 ZYNQ PL 端的一个 IP 核,可以将 AXI-Lite Mas…...

Netty的心跳机制怎么实现的?
大家好,我是锋哥。今天分享关于【Netty的心跳机制怎么实现的?】面试题。希望对大家有帮助; Netty的心跳机制怎么实现的? Netty的心跳机制主要是通过在客户端和服务器之间定期发送特殊的数据包(比如空消息或自定义的控…...

java基础——专题一 《面向对象之前需要掌握的知识》
目录 Δ前言 一、拾枝杂谈 1.Java是什么? 2.计组前瞻: 3.JDK,JRE,JVM? 二、环境搭建 1.JDK安装和配置: 1.1 人话 1.2 JDK的配置 1.3 如何切换JDK的版本? 2.DOS的简单使用: 2.1 介…...

Python 数据清洗与处理常用方法全解析
在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战。本文总结了多种数据清洗与处理方法:缺失值处理包括删除缺失值、固定值填充、前后向填充以及删除缺失率高的列;重复值处理通过删除或标记重复项解决数据冗余问题࿱…...
BFS算法的实现(例题)
这是C算法基础-搜索与图论专栏的第X篇文章,专栏详情请见此处。 引入 上篇博客,我们学习了BFS算法的大体套路,这次,我将会通过两个例题来更详细的讲解。 下面我们就来讲BFS算法(例题)的实现。 过程 例题1&a…...

clean code阅读笔记——如何命名?
命名的原则 1. “小处诚实非小事“ 有个词叫做”以小见大“。以建筑作喻,宏大建筑中最细小的部分,比如关不紧的门、未铺平的地板,甚至时凌乱的桌面,都会将整个大局的魅力毁灭殆尽,这就是整洁代码之所系。 2. 有意义…...

MacOS 如何解决无法打开 ‘xxx’,因为 Apple 无法检查其是否包含恶意软件
背景 在安装软件时,遇到“无法打开 ‘xxx’,因为 Apple 无法检查其是否包含恶意软件” 的提示,许多用户可能会感到困惑,不知道该如何处理。遇到这个问题时,按以下步骤操作即可解决。 首先,这个警告提示的出…...

Java并发学习:进程与线程的区别
进程的基本原理 一个进程是一个程序的一次启动和执行,是操作系统程序装入内存,给程序分配必要的系统资源,并且开始运行程序的指令。 同一个程序可以多次启动,对应多个进程,例如同一个浏览器打开多次。 一个进程由程…...

省市区三级联动
引言 在网页中,经常会遇到需要用户选择地区的场景,如注册表单、地址填写等。为了提供更好的用户体验,我们可以实现一个三级联动的地区选择器,让用户依次选择省份、城市和地区。 效果展示: 只有先选择省份后才可以选择…...

springboot 动态配置定时任务
要在Spring Boot中动态配置定时任务,可以使用ScheduledTaskRegistrar类来实现。 首先,创建一个定时任务类,该类需要实现Runnable接口。例如: Component public class MyTask implements Runnable {Overridepublic void run() {/…...

数据结构与算法学习笔记----求组合数
数据结构与算法学习笔记----求组合数 author: 明月清了个风 first publish time: 2025.1.27 ps⭐️一组求组合数的模版题,因为数据范围的不同要用不同的方法进行求解,涉及了很多之前的东西快速幂,逆元,质数,高精度等…...