当前位置: 首页 > news >正文

【服务器05】之【登录/注册账号成功转至游戏场景】

Unity登录注册数据库

打开【服务器01】的文章项目

导入新UI系统

点击2D

双击输入栏位置

修改输入框尺寸及位置

放大字体

修改默认输入文字 发现中文字变成了口口口口

原因是新UI系统不支持中文,解决这个问题需要更换字体

并且修改输入时字体大小

我们取电脑中找Font文件夹

首先在本机系统中查找对应包(比如Windows系统就查找c盘下的Windows文件包)

双击Windows找到Font文件夹

双击进去

里面装着这个系统的所有字体,勿删

复制一个黑体到unity文件中

在unity中创建好Fonts包 后拖拽即可

右键字体选择 Font Asset 创建

一个简易的字体就创建完成了,但这个字体还不能使用

将新创建的字体改为静态

ctrl + d 复制一份改为动态

此时选择静态字体 点击加号

将复制出来的动态字体拖拽到静态字体的 Fallback List中

输入时的Text也要换下字体

此时TMP可以正常显示中文了

然后创建一个旧版的Input Field

新版的 内容类型 设置成 标准Standard

旧版设置成 

这样运行后输入效果

接下来创建登录按钮

首先创建一个新版UI的Button ——用来做  登录

再创建一个旧版UI的Button ——用来做  注册

简单处理一下位置

导入资源

新导入的Plugins 是用来存储动态库的

动态库通常是.dll结尾的  应用程序扩展文件

这个东西就是一组被封装起来的API

有了它我们就可以连接数据库 使用数据库的类

这三个是库 也就是说当打包时没有这三个库的支持 是不能打包的

换句话说

只有MySql.Data这个东西zaiunity中运行是可以连接数据库的,

但是打包的话需要上面那三个库的支持

我们查看它的属性

接下来创建输入账号密码错误时的错误提示

将Image铺满

处理一下颜色 和 Button 的位置

接着设置一下右上角的button关闭提示页面

然后将Image(账号密码输入错误的提示界面)隐藏

接下来我们再unity脚本中创建   连接数据库的文件夹

创建脚本MySqlAccess.cs

双击点开数据库复制外网地址

复制外网地址

粘粘到代码上

登录阿里云

创建数据库

接下来创建navicat的数据库

打开连接后变绿色点击新建数据库

接下来创建表

点击保存 

输入表名

此时我们就可以查看创建的表了

回到unity继续编写代码

保存后在navicat数据库的表填写数据

创建空物体

然后将脚本挂载

现在开始测试一下,首先创建一个新版UIText 更改字体

创建一个测试代码

数据库输入值后需要点击√按钮进行保存

unity运行测试

测试成功

继续编写代码

试一下查询语句

复制以下代码

填入信息

点击运行看是否可以成功插入

继续编写代码

我们再做一次测试

复制

粘粘

更新成功

继续编写代码

此时增删改查方法就已经完成了就不做测试

现在开始编写登陆脚本:

首先在Navicat中新建一个表

保存

打开表

我们想再添加一个解释属性

我们回到上步骤添加一下

顺便修改个表名

现在继续编写代码实现登录

using UnityEngine;
using MySql.Data.MySqlClient;
using System.Data;

public class MySqlAccess : MonoBehaviour{
    //定义一个连接字符串
    string connStr = "server=" +
        "rm-cn-83l3seehd00091po.rwlb.zhangbei.rds.aliyuncs.com;" +
        "user = hanyunhanData;" +
        "database = water;" +
        "port = 3306;" +
        "password = 13512647882hH;" +
        "Charset = utf8";
    //unity与数据库的连接方法 - 需要连接数据库时调用
    MySqlConnection ConectToDataBase() {
        //实例化数据库连接对象 并传入连接信息
        MySqlConnection conn = new MySqlConnection(connStr);
        conn.Open();
        return conn;
    }
    //定义一个公共的查询方法
    public string QueryData(string tableName, string condition) {
        #region -相当于把语句沾沾到navicat中
        //数据库查询语句在unity的使用
        string query = $"select * from {tableName} where {condition}";
        //使用连接方法ConectToDataBase()连接数据库
        MySqlConnection conn = ConectToDataBase();
        //构造查询条件 依据query中的SQL语句查询
        MySqlCommand cmd = new MySqlCommand(query, conn);
        #endregion
        #region 相当于点开始查询的按钮
        //执行查询语句的条件
        MySqlDataReader reader = cmd.ExecuteReader();
        //获取数据库读取到的数据
        string myString = "未获得数据库数据";
        //循环读取数据库中的数据
        while (reader.Read()) {
            int id = reader.GetInt32("id");
            string name = reader.GetString("name");
            string password = reader.GetString("password");
            myString = string.Format("{0}{1}{2}", id, name, password);
            Debug.Log("数据库中循环读取的数据{0}{1}{2}");

        }
        #endregion
        //关闭数据库
        conn.Close();
        return myString;
    }
    public void InsertData(string tableName, string columns, string valuers) {
        //插入的SQL语句
        string query = $"Insert into {tableName} ({columns}) values ({valuers})";
        //使用连接方法ConectToDataBase()连接数据库
        MySqlConnection conn = ConectToDataBase();
        //构造插入条件 依据query中的SQL语句插入
        MySqlCommand cmd = new MySqlCommand(query, conn);
        //执行SQL语句插入
        cmd.ExecuteNonQuery();
        //关闭数据库
        conn.Close();
    }
    //更新语句
    public void UpdateData(string tableName, string setStatement, string condition) {
        //更新的Sql语句
        string query = $"Update {tableName} set {setStatement} where {condition}";
        //使用连接方法ConectToDataBase()连接数据库
        MySqlConnection conn = ConectToDataBase();
        //构造更新条件 依据query中的SQL语句更新
        MySqlCommand cmd = new MySqlCommand(query, conn);
        //执行SQL语句更新
        cmd.ExecuteNonQuery();
        //关闭数据库
        conn.Close();
    }
    //删除数据的方法
    public void DeleteData(string tableName, string condition) {
        //删除的Sql语句
        string query = $"Delete from {tableName} where {condition}";
        //使用连接方法ConectToDataBase()连接数据库
        MySqlConnection conn = ConectToDataBase();
        //构造删除条件 依据query中的Sql语句删除
        MySqlCommand cmd = new MySqlCommand(query, conn);
        //执行SQL语句删除
        cmd.ExecuteNonQuery();
        //关闭数据库
        conn.Close();
    }
    //登陆方法 游戏内消耗物品的二级密码
    public bool CheckLogin(string tableName, string username, int password) {
        //建立查询条件
        string condition = $"name = '{username}' and password = {password}";
        //使用条件字符串查询
        string query = $"select * from {tableName} where {condition}";
        //使用连接方法ConectToDataBase()连接数据库
        MySqlConnection conn = ConectToDataBase();
        //构造擦汗寻条件 依据query中的SQL语句查询
        MySqlCommand cmd = new MySqlCommand(query, conn);
        //执行查询语句的条件
        MySqlDataReader reader = cmd.ExecuteReader();

        //判断账户密码是否存在
        bool loginSuccess = reader.HasRows;
        //关闭数据库
        conn.Close();

        //返回账户结果
        return loginSuccess;
    }
    //登陆方法 检测登陆界面用户名和密码
    public bool CheckLogin(string username, int password){
        //建立查询条件
        string condition = $"name = '{username}' and password = {password}";
        //使用条件字符串查询
        string query = $"select * from userinfo where {condition}";
        //使用连接方法ConectToDataBase()连接数据库
        MySqlConnection conn = ConectToDataBase();
        //构造擦汗寻条件 依据query中的SQL语句查询
        MySqlCommand cmd = new MySqlCommand(query, conn);
        //执行查询语句的条件
        MySqlDataReader reader = cmd.ExecuteReader();

        //判断账户密码是否存在
        bool loginSuccess = reader.HasRows;
        //关闭数据库
        conn.Close();

        //返回账户结果
        return loginSuccess;
    }
    //注册方法
    public void RegisterUser(string username, int password) {
        //准备插入条件
        string columns = "name,password";
        string values = $"'{username}',{password}";
        //插入到表格中
        InsertData("userinfo",columns,values);
    }
}
 

现在回到Unity中再创建一个脚本来使用一下登陆与注册

在Unity中做一个登陆失败的提示页面

打开隐藏的错误提示页面

修改之后取消激活

编写代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using TMPro;
public class LogUI : MonoBehaviour{
    //获取MySqlAccess类 在LogUI类中使用MySql类中的成员和方法
    private MySqlAccess mySqlAccess;

    //获取登陆失败提示文本
    public GameObject errorUI;

    //获取账户输入框——新版UI
    public TMP_InputField inputUsername;
    //获取密码输入框——旧版UI
    public InputField inputPassword;

    private void Start(){
        mySqlAccess = GameObject.Find("DataBaseConnection").GetComponent<MySqlAccess>();
    }
    //登录检测 点击按钮时运行
    public void OnLoginButtonClick() {
        //获取输入账号框中的内容
        string username = inputUsername.text;
        //获取输入密码框的密码 并强制转换为int
        int password = int.Parse(inputPassword.text);

        //调用MySqlAccess类中登陆检测方法 判断账号是否合法
        //合法允许登录 否则提示错误
        if (mySqlAccess.CheckLogin(username, password)){
            //登陆成功 切换场景
            SceneManager.LoadScene(1);
        }
        else {
            //登录失败提示
            errorUI.SetActive(true);
        }
    }
}
现在回到Unity中挂载脚本测试

之后设置登录按钮的点击函数

现在我们开始测试

首先点击Build Settings

将UI登陆界面和游戏开始场景放在Build Settings中

再看navicat上的账号和密码

我们首先登陆一个错误的账号和密码

输入正确的账号密码

成功跳转连接数据库成功

接下来我们编写注册的代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using TMPro;
public class LogUI : MonoBehaviour{
    //获取MySqlAccess类 在LogUI类中使用MySql类中的成员和方法
    private MySqlAccess mySqlAccess;

    //获取登陆失败提示文本
    public GameObject errorUI;

    //获取账户输入框——新版UI
    public TMP_InputField inputUsername;
    //获取密码输入框——旧版UI
    public InputField inputPassword;

    private void Start(){
        mySqlAccess = GameObject.Find("DataBaseConnection").GetComponent<MySqlAccess>();
    }
    //登录检测 点击按钮时运行
    public void OnLoginButtonClick() {
        //获取输入账号框中的内容
        string username = inputUsername.text;
        //获取输入密码框的密码 并强制转换为int
        int password = int.Parse(inputPassword.text);

        //调用MySqlAccess类中登陆检测方法 判断账号是否合法
        //合法允许登录 否则提示错误
        if (mySqlAccess.CheckLogin(username, password)){
            //登陆成功 切换场景
            SceneManager.LoadScene(1);
        }
        else {
            //登录失败提示
            errorUI.SetActive(true);
        }
    }
    //注册功能 点击按键时执行
    public void OnRegisterButtonClick() {
        //获取注册框上的注册信息
        string username = inputUsername.text;
        //获取密码框上的密码
        int password = int.Parse(inputPassword.text);
        //调用我们的注册方法
        mySqlAccess.RegisterUser(username, password);
    }
}
回到Unity中

开始测试注册

看一下navicat账号密码信息

点击注册之后

注册成功可点击登陆进入Game场景

End.

相关文章:

【服务器05】之【登录/注册账号成功转至游戏场景】

Unity登录注册数据库 打开【服务器01】的文章项目 导入新UI系统 点击2D 双击输入栏位置 修改输入框尺寸及位置 放大字体 修改默认输入文字 发现中文字变成了口口口口 原因是新UI系统不支持中文&#xff0c;解决这个问题需要更换字体 并且修改输入时字体大小 我们取电脑中找Fon…...

平价蓝牙耳机推荐性价比高,性价比高的蓝牙耳机学生党推荐

市场上的蓝牙耳机价格从几十元到几百甚至上千不等&#xff0c;性能与价格也呈现多样化&#xff0c;对于学生党来说&#xff0c;一个理想的选择是那些性价比高的平价蓝牙耳机&#xff0c;它们在不牺牲必要功能的同时&#xff0c;提供了可接受的音质和足够的便利性&#xff0c;接…...

【华为战报】5月、6月HCIP考试战报!

华为认证&#xff1a;HCIA-HCIP-HCIE 点击查看&#xff1a; 【华为战报】4月 HCIP考试战报&#xff01; 【华为战报】2月、3月HCIP考试战报&#xff01; 【华为战报】11月份HCIP考试战报&#xff01; 【HCIE喜报】HCIE备考2个月丝滑通关&#xff0c;考试心得分享&#xff…...

OBD诊断

文章目录 OBD 参考标准OBD 服务OBD服务中的DTCOBD服务中0x03和0x07的区别参考 OBD 参考标准 OBD的标准&#xff1a; ISO 15031 Road Vehicles-Communication between vehicle and external equipment for emission-related diagnostics OBD 服务 序号ID服务说明服务详解10x0…...

Elasticsearch 聚合查询

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…...

adb remount fails - mount: ‘system‘ not in /proc/mounts 解决办法

mount -o rw,remount /挂载根 mount -o ro,remount /将状态重置为“ro” 以下是我个人的一些话 我热衷于在网络上分享我遇到的问题和解决方案。如果你有任何问题或需要帮助&#xff0c;欢迎留言交流&#xff0c;在共同学习的道路上一起进步。我很高兴结识那些在学习上积极进取…...

百元蓝牙耳机推荐2024哪个好?蓝牙耳机性价比之王推荐

现在的百元价位的蓝牙耳机成为了许多消费者入门级的选择&#xff0c;它不仅需要满足基础的通话需求&#xff0c;更要在音质、舒适度、续航能力等多方面达到一定的标准&#xff0c;随着技术的发展和市场的竞争激烈&#xff0c;各大品牌在这一价格区间推出了极具竞争力的产品&…...

Spring项目报错解读与全部报错详解

你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​ gitee https://gitee.com/Qiuner &#x1f339; 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我…...

10秒教会你mysql的连接

连接MySQL数据库通常可以通过多种方法实现&#xff0c;以下是几种常见的方法&#xff0c;我将按照您的要求以清晰、分点的方式归纳说明&#xff1a; 1. 使用MySQL命令行客户端 打开终端或命令提示符&#xff1a;首先&#xff0c;打开您的计算机上的终端或命令提示符窗口。输入…...

万物皆可爬——亮数据代理IP+Python爬虫批量下载百度图片助力AI训练

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【导航大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…...

OpenCv形态学(一)

目录 形态学转换 结构元素 腐蚀 膨胀 开运算 闭运算 形态学梯度 顶帽 黑帽 图像轮廓 查找轮廓 绘制轮廓 形态学转换 形态变换是一些基于图像形状的简单操作。通常在二值图像上执行。它需要两个输入&#xff0c;一个是我们的原始图像&#xff0c;第二个是决定操作性…...

CSS基础汇总

CSS 1. 选择器 标签选择器 通过标签名找标签&#xff08;把指定的样式应用到某一个、组、类标签上&#xff09; id选择器 通过id属性值找标签&#xff0c;关键符号#id值{样式} 复合选择器 1、并列选择器&#xff1a;关键符号&#xff0c;用法&#xff1a;选择器1&#xff0c…...

cocos creator让所有button点击时播放音效

原理&#xff1a; 利用prototype属性&#xff0c;通过重写 cc.Button.prototype._onTouchEnded 方法&#xff0c;以便在按钮被点击时播放音频。通过重写其 _onTouchEnded 方法&#xff0c;可以添加自定义行为&#xff0c;如播放音频。 概念解释&#xff1a; prototype&#…...

mybatisplus自带的雪花算法(IdType.ASSIGN_ID)无法自动生成弊端缺点,以及改进方法

前言 今日在使用mybatisplus的雪花算法自动给id赋值时发现怎么都是null的情况&#xff0c;这尼玛测了半天&#xff0c;终于发现巨坑&#xff0c;废话不多说&#xff0c;直接上干货 IService.save 只有调用IService中的save方法才能正常生成id&#xff0c;像IService.saveBatc…...

单位转换:将kb转换为 MB ,GB等形式

写法一&#xff1a; function formatSizeUnits(kb) {let units [KB, MB, GB, TB, PB,EB,ZB,YB];let unitIndex 0;while (kb > 1024 && unitIndex < units.length - 1) {kb / 1024;unitIndex;}return ${kb.toFixed(2)} ${units[unitIndex]}; } console.log(for…...

优思学院|「按计划推动型」与「需求拉动型」的生产模式

针对生产架构做对比分类的用语&#xff0c;主要有按计划推进型与需求拉动型。 「按计划推动型」与「需求拉动型」两者乃是生产架构上常使用、成对比的两个用语。不过&#xff0c;有时不只用来指单纯的生产现场架构&#xff0c;也有人把它应用在更广泛的生产架构设计上。 按计划…...

解释什么是lambda函数?它有什么好处?

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...

码农:如何快速融入团队

问题&#xff1a; 码农如何快速融入团队&#xff1f; 记住一个标准&#xff1a;能干事、能抗事。 总结一个字&#xff1a; 靠谱。 适用范围&#xff1a;新手码农、老司机码农、测试、DBA、运维、产品经理、项目经理、架构师、技术专家、。。。。适用于任何行业的打工者。 下面要…...

Android 通知组

一. 通知组简介 从 Android 7.0&#xff08;API 级别 24&#xff09;开始&#xff0c;您可以在一个组中显示相关通知。如下所示: 图 1. 收起&#xff08;顶部&#xff09;和展开&#xff08;底部&#xff09;的通知组。 注意 &#xff1a;如果应用发出 4 条或更多条通知且未…...

【机器学习】ChatTTS:开源文本转语音(text-to-speech)大模型天花板

目录 一、引言 二、TTS&#xff08;text-to-speech&#xff09;模型原理 2.1 VITS 模型架构 2.2 VITS 模型训练 2.3 VITS 模型推理 三、ChatTTS 模型实战 3.1 ChatTTS 简介 3.2 ChatTTS 亮点 3.3 ChatTTS 数据集 3.4 ChatTTS 部署 3.4.1 创建conda环境 3.4.2 拉取源…...

宏集物联网工控屏通过 S7 ETH 协议采集西门子 1200 PLC 数据

前言 为了实现和西门子PLC的数据交互&#xff0c;宏集物联网HMI集成了S7 PPI、S7 MPI、S7 Optimized、S7 ETH等多个驱动来适配西门子200、300、400、1200、1500、LOGO等系列PLC。 本文主要介绍宏集物联网HMI如何通过S7 ETH协议采集西门子1200 PLC的数据&#xff0c;文中详细介…...

C语言学习记录(十一)——指针基本知识及运算

文章目录 前言1. 指针的概念2.指针变量的说明3. 指针的含义4. 指针运算①指针加减&#xff1a;②指针的关系运算符 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 1. 指针的概念 在C语言中&…...

Oracle中 ROW_NUMBER()的语法及在对应不同需求下应如何使用

Oracle数据库中的ROW_NUMBER()函数是一个窗口函数&#xff0c;它为查询结果集中的每一行分配一个唯一的序号。这个函数在数据分析、分页查询、数据去重和排名问题等方面非常有用。ROW_NUMBER()函数的语法如下&#xff1a; ROW_NUMBER() OVER ( [ PARTITION BY column ] ORDER …...

德邦快递大件可以寄2米长物品吗?大件跨省行李用哪个快递便宜?

搬家或寄送特殊尺寸物品时&#xff0c;快递的选择尤为关键。特别是2米长的大件物品&#xff0c;是否能够承运&#xff1f;哪家快递在跨省大件行李方面更经济&#xff1f;今天&#xff0c;就为你解答这些疑问。 1、祺祺寄快递小程序&#xff1a; “祺祺寄快递”小程序&#xff…...

C# 在WPF .net8.0框架中使用FontAwesome 6和IconFont图标字体

文章目录 一、在WPF中使用FontAwesome 6图标字体1.1 下载FontAwesome1.2 在WPF中配置引用1.2.1 引用FontAwesome字体文件1.2.2 将字体文件已资源的形式生成 1.3 在项目中应用1.3.1 使用方式一&#xff1a;局部引用1.3.2 使用方式二&#xff1a;单个文件中全局引用1.3.3 使用方式…...

万能自定义预约小程序源码系统 适合任何行业在线预约报名 前后端分离 带完整的安装代码包以及搭建教程

系统概述 在当今数字化时代&#xff0c;线上预约已成为各行各业不可或缺的一部分。为满足广大企业和个人对在线预约系统的需求&#xff0c;我们特别推出了这款“万能自定义预约小程序源码系统”。该系统以其高度的灵活性和可扩展性&#xff0c;为各行各业提供了完美的在线预约…...

【MySQL备份】mysqldump篇

目录 1.简介 2.基本用途 3.命令格式 3.1常用选项 3.2常用命令 4.备份脚本 5.定时执行备份脚本 1.简介 mysqldump 是 MySQL 数据库管理系统的命令行实用程序&#xff0c;用于创建数据库的逻辑备份。它能够导出数据库的结构&#xff08;如表结构、视图、触发器等&#xf…...

控制台扫雷(C语言实现)

目录 博文目的实现思路项目创建文件解释 具体实现判断玩家进行游戏还是退出扫雷棋盘的确定地图初始化埋雷玩家扫雷的实现雷判断函数 源码game.cgame.h扫雷.c 博文目的 相信不少人都学习了c语言的函数&#xff0c;循环&#xff0c;分支那我们就可以写一个控制台的扫雷小游戏来检…...

操作系统期末复习 | 批处理程序 | PV实现同步互斥 | 调度算法 | 页面置换算法 | 磁盘调度算法

操作系统引论 批处理程序 单道批处理&#xff1a;引入脱机输入/输出技术&#xff0c;并由监督程序负责控制作业的输入、输出。主要优点是缓解了一定程度的人机速度矛盾&#xff0c;资源利用率有所提升。主要缺点是内存中仅能有一道程序运行&#xff0c;只有该程序运行结束之后…...

字符串的六种遍历方式

在 Java 中&#xff0c;有多种遍历字符串的方法。以下是几种常见的遍历字符串的方法&#xff0c;并附有示例代码 1. 使用 for 循环 这是最常见和基础的遍历方法&#xff0c;通过索引访问每个字符。 public class StringTraversal {public static void main(String[] args) {S…...

在码云(Gitee)上建立分支(Branch)的步骤如下:

步骤一&#xff1a;登录码云 首先&#xff0c;打开码云的官方网站&#xff08;gitee.com&#xff09;&#xff0c;输入用户名和密码登录你的账号。 步骤二&#xff1a;创建仓库 登录后&#xff0c;在页面右上方的搜索框中输入仓库名称&#xff0c;并点击“创建”按钮创建新的仓…...

JVM专题四:JVM的类加载机制

Java中类的加载阶段 类加载 Java中的类加载机制是Java运行时环境的一部分&#xff0c;确保Java类可以被JVM&#xff08;Java虚拟机&#xff09;正确地加载和执行。类加载机制主要分为以下几个阶段&#xff1a; 加载&#xff08;Loading&#xff09;&#xff1a;这个阶段&#x…...

Python爬取中国天气网天气数据.

一、主题式网络爬虫设计方案 1.主题式网络爬虫名称 名称&#xff1a;Python爬取中国天气网天气数据 2.主题式网络爬虫爬取的内容与数据特征分析 本次爬虫主要爬取中国天气网天气数据 3.主题式网络爬虫设计方案概述&#xff08;包括实现思路与技术难点&#xff09; reques…...

EXCEL快速填充空白内容

** EXCEL快速填充空白内容 ** 1.全选所有需要填充的内容&#xff0c;按住电脑的F5或者CTRLG点击定位 2.可以看到空白处被自动选定&#xff0c;之后按电脑和⬆&#xff0c;最后CTRLenter 可以看到空白处已经被填充。...

CBSD创建和管理bhyve容器Ubuntu@FreeBSD

bhyve介绍&#xff1a;bhyve&#xff1a;FreeBSD下的原生虚拟机管理器_freebsd 虚拟化平台bhyve-CSDN博客 两个bhyve的管理软件&#xff1a;使用bvm管理bhyve虚拟机管理系统FreeBSD-CSDN博客 vm-bhyve&#xff1a;bhyve虚拟机的管理系统FreeBSD-CSDN博客 现在&#xff0c;我…...

STM32开发实战:SPI接口在W25Q64 Flash存储器中的应用

摘要 本文将深入探讨STM32微控制器如何利用SPI接口与W25Q64 Flash存储器进行通信。W25Q64是一款常用的SPI串行Flash存储器&#xff0c;具有8Mbit的存储容量。本教程将指导读者完成硬件连接、SPI配置、读写操作&#xff0c;并提供实际的代码实现。 1. SPI接口概述 SPI是一种串…...

python一些进阶用法:hook 钩子函数以及Registry机制

写在前面 一句话讲&#xff0c;register机制 和 hook 都是函数/类 调用和传参机制的一种灵活运用&#xff0c;将函数作为传参对象&#xff0c;进行回调和封装&#xff0c;通常扩展了或修改了原始函数的行为&#xff1b;这些高级用法都是编程经验中沉淀下来的常用范式&#xff0…...

工作实践:11种API性能优化方法

一、索引优化 接口性能优化时&#xff0c;大家第一个想到的通常是&#xff1a;优化索引。 确实&#xff0c;优化索引的成本是最小的。 你可以通过查看线上日志或监控报告&#xff0c;发现某个接口使用的某条SQL语句耗时较长。 此时&#xff0c;你可能会有以下疑问&#xff…...

正版软件 | WIFbox:智能化文件管理工具,让效率与隐私并行

在数字化办公日益普及的今天&#xff0c;文件管理成为了提升工作效率的关键。WIFbox 一款智能文件管理工具&#xff0c;利用强大的人工智能技术&#xff0c;帮助您快速对文件进行分类&#xff0c;完成复杂的智能文件分类任务。 智能分类&#xff0c;效率倍增 WIFbox 通过精细化…...

Postman接口工具实战

为了更好地展示Postman接口测试的实战过程&#xff0c;我将以一个简单的实战示例来说明如何使用Postman完成一个API的测试。假设我们要测试一个假想的天气查询API&#xff0c;该API允许用户通过城市名查询天气情况。我们将执行以下步骤&#xff1a; 1. 准备工作 确保已经安装…...

江协科技51单片机学习- p17 定时器

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…...

【D3.js in Action 3 精译】前言

早在 2017 年&#xff0c;我还是一名渴望迈出职业生涯关键一步的前端开发者。虽然我很热衷于网站开发&#xff0c;但总感觉缺了点什么。我一直希望自己的工程专业背景和对教学的热爱能与新的编程技能相结合。就在这时&#xff0c;搭档建议我学学数据可视化。出于某种原因&#…...

Java SE入门及基础(58) 并发 进程与线程概念

目录 并发 进程和线程 1. 进程和线程 2. 进程 3.线程 总结 并发 并发(Concurrency) Computer users take it for granted that their systems can do more than one thing at a time. They assume that they can continue to work in a word processor, while other app…...

放松一下,简简单单了

哈哈哈哈哈...

【智能制造-5】数采和电机

既然可以采集PLC的数据&#xff0c;为什么要采集电机的数据&#xff1f; 采集PLC&#xff08;可编程逻辑控制器&#xff09;的数据和采集电机的数据是两个不同的概念和目的。 PLC是用于控制和监控工业自动化过程的设备&#xff0c;它可以接收传感器的输入信号并根据预设的逻辑…...

【软考论文】论信息系统的安全性与保密性设计

目录 一、题目二、论文2.1 摘要2.2 正文三、扩展3.1 信息安全包括5个基本要素3.2 国产秘钥算法3.3 等保(信息安全等级保护)3.4 其他一、题目 在企业信息化推进的过程中,需要建设许多信息系统,这些系统能够实现高效率、低成本的运行,为企业提升竞争力。但在设计和实现这些…...

【图文教程】电脑查看显卡GPU温度方法:小白也能秒懂!

在电脑操作中&#xff0c;显卡是电脑的重要组件之一&#xff0c;其温度控制对于保持系统稳定运行是特别重要的。但是&#xff0c;许多新手用户不知道要怎么操作才能查看电脑显卡CPU的温度&#xff1f;接下来小编给大家介绍三种简单有效的查看显卡温度方法&#xff0c;操作简单&…...

Qt的智能终端项目文档完整版

由于上一篇文章已经把用户端的页面都显示了&#xff0c;这里就不在赘述&#xff0c;就将那个运行在虚拟机上的截图展示下来了&#xff0c;其实这个也就是最后的效果了。目前就是这个&#xff0c;感觉当练手的也还行...

SQL面试题练习 —— 查询最近一笔有效订单

目录 1 题目2 建表语句3 题解 题目来源&#xff1a;字节跳动。 1 题目 现有订单表t_order&#xff0c;包含订单ID&#xff0c;订单时间,下单用户&#xff0c;当前订单是否有效&#xff0c;请查询出每个用户每笔订单的上一笔有效订单 ----------------------------------------…...

分享HTML显示2D/3D粒子时钟

效果截图 实现代码 线上体验&#xff1a;three.jscannon.js Web 3D <!DOCTYPE html> <head> <title>three.jscannon.js Web 3D</title><meta charset"utf-8"><meta name"viewport" content"widthdevice-width,ini…...