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

unity笔记

物体的各种控制方法

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;public class Componentl : MonoBehaviour
{// Transform transform;GameObject obj;public float floSpeed = 0;public float floRotate = 0;// Start is called before the first frame updatevoid Start(){#region 第一节课// obj = GameObject.Find("Sphere"); // 找到球体//Debug.Log(transform.name); // 名字//Debug.Log(transform.tag); // 标签//Debug.Log(transform.position); // 位置//Debug.Log(transform.rotation); // 角度//Debug.Log(transform.eulerAngles); // 欧拉角//Debug.Log(transform.localEulerAngles); // 局部欧拉角//Debug.Log(transform.localPosition); // 局部位置//Debug.Log(transform.localRotation); // 局部角度//Debug.Log(transform.localScale); // 局部缩放//Debug.Log(transform.parent); // 父物体//Debug.Log(transform.childCount); // 子物体数量//Debug.Log(transform.forward); // 前方//Debug.Log(transform.up); // 上方//Debug.Log(transform.right); // 右边 // 其他常用方法// GameObject.Instantiate(obj, transform.position, transform.rotation); // 复制对象#endregion// 摄像机跟随物体// 控制摄像机Camera.main.transform.SetParent(transform); // 摄像机的transform变成当前物体的transformCamera.main.transform.localPosition = new Vector3(0, 3, -4); // 设置局部位置可以看到物体Camera.main.transform.localEulerAngles = new Vector3(6, 0, 0); // 摄像机稍微往下偏一点}// Update is called once per framevoid Update(){#region 物体移动旋转//transform.Translate(Vector3.right * 0.01f);// 物体移动的第一种方法// transform.position += new Vector3(0, 2, 3); // 新建一个结构体// transform.position += Vector3.up * floSpeed * Time.deltaTime; // Time.deltaTime是每帧运行的时间// 1.在unity怎么调速度   2. 上节课运行了以后物体找不到了// ***********************// 物体移动的第二种方法//transform.Translate(Vector3.up * floSpeed * Time.deltaTime);// 物体旋转// transform.Rotate(Vector3.up * floRotate * Time.deltaTime);// 绕..物体旋转// transform.RotateAround(obj.transform.position, Vector3.up, floRotate * Time.deltaTime);// 盯住看// transform.LookAt(Camera.main.transform);// 其他常用方法// GameObject.Destroy(obj); // 删除游戏对象// Resources.Load(); // 加载游戏资源//  Application.Quit(); // 退出游戏//if (Input.GetKey(KeyCode.W)) {//    floRotate = 3000;//} else {//    floRotate = 0;//} #endregionMove();Look();}// 鼠标控制物体旋转private void Look() {float x = Input.GetAxis("Mouse X") * floRotate * Time.deltaTime;// float y = Input.GetAxis("Mouse Y") * floRotate * Time.deltaTime;transform.Rotate(Vector3.up, x);// transform.Rotate(Vector3.up, y);}// 键盘控制物体平移private void Move() {float x = Input.GetAxis("Horizontal"); // 左右向float z = Input.GetAxis("Vertical"); // 前后向transform.Translate(new Vector3(x, 0, z) * floSpeed * Time.deltaTime);// 世界坐标系移动// cc.Move(new Vector3(x, 0, z) * floSpeed * Time.deltaTime);// cc.isGrounded(); // bool值 判断是否在地面// cc.SimpleMove(new Vector3(x, 0, z) * floSpeed);// 局部坐标系移动// cc.SimpleMove((transform.forward * z + transform.right * x) * floSpeed);}private void FixedUpdate() {}
}

输入系统、角色控制器、碰撞体、刚体、射线

  1. 输入系统 : InputSystem
  2. 角色控制器 CharacterController : 不能同时添加刚体组件
    Move(): 需要乘deltaTime, 不受重力影响, 需要使用isGrounded判断
    SimpleMove(): 不需要乘deltaTime, 不受重力影响
  3. 碰撞体 Collider
    碰撞检测:两方都有Collider, 至少一方有Rigidbody
  4. 刚体 Rigidbody
  5. 射线 Ray
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Componentl2 : MonoBehaviour
{public float floSpeed = 50;public float floRotate = 180;public GameObject Sphere;// CharacterController cc; // 创建一个容器Rigidbody rb;// Start is called before the first frame updatevoid Start(){// cc = GetComponent<CharacterController>(); // 把对象付给它rb = GetComponent<Rigidbody>();//rb.velocity = new Vector3(); // 物体初速度//rb.AddForce(new Vector3()); // 给物体添加力}// Update is called once per framevoid Update(){#region 第二节课// 键盘控制代码//if (Input.GetKey(KeyCode.Escape)) {//    Debug.Log("按住空格");//}//if (Input.GetKeyUp(KeyCode.Space)) {//    Debug.Log("抬起空格");//    transform.Translate(Vector3.up * 10);//}//if (Input.GetKeyDown(KeyCode.Space)) {//    Debug.Log("按下空格");//}// 鼠标控制代码//if (Input.GetMouseButton(0)) {//    Debug.Log("按住鼠标左键");//}//if (Input.GetMouseButtonUp(0)) {//    Debug.Log("抬起鼠标左键");//    transform.Translate(Vector3.up * 10);//}//if (Input.GetMouseButtonDown(0)) {//    Debug.Log("按下鼠标左键");//}// 虚拟控制器控制//Debug.Log(Input.GetAxis("Horizontal"));//Debug.Log(Input.GetAxis("Vertical"));//Debug.Log(Input.GetAxisRaw("Horizontal"));//Debug.Log(Input.GetAxisRaw("Vertical"));// 鼠标转动视角//Input.mousePosition();//Input.GetAxis("Mouse X");//Input.GetAxis("Mouse Y");//Debug.Log(""); #endregionlearnRay();}private void learnRay() {if (Input.GetMouseButtonDown(0)) { // 单击鼠标左键// 创建一道射线Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);// 检测射线// out关键字 会输出一个信息 return只能return一个值,是一个bool值 out返回物体的信息if (Physics.Raycast(ray, out RaycastHit hitInfo)) {Debug.Log(hitInfo.transform.name);Debug.Log(hitInfo.point);//hitInfo.point; // 射线撞击点GameObject shell = Instantiate(Sphere,transform.position,transform.rotation);shell.GetComponent<Rigidbody>().velocity = Vector3.Normalize(hitInfo.point - transform.position) * 20;}}}#region 碰撞检测的方法 碰撞检测的方法 碰撞刚发生//private void OnCollisionEnter(Collision collision) {//    // Destroy(collision.transform.gameObject); //    Debug.Log("刚碰到");//} 碰撞结束//private void OnCollisionExit(Collision collision) {//    Debug.Log("碰完了");//} 碰撞进行时//private void OnCollisionStay(Collision collision) {//    Debug.Log(collision.transform.name);//} private void OnTriggerEnter(Collider other) {rb.AddForce(transform.up * 500); // 撞到以后跳一下//Debug.Log("我进来啦");}private void OnTriggerStay(Collider other) {Debug.Log(other.transform.name);}private void OnTriggerExit(Collider other) {Debug.Log("我走啦");}#endregion
}

Unity音视频系统

using System;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;public class Component3 : MonoBehaviour
{AudioSource ads;AudioClip ac;List<AudioClip> acs = new List<AudioClip>();int j = 0;// Start is called before the first frame updatevoid Start(){ads = GetComponent<AudioSource>(); // 找到组件#region AudioSource常用属性和方法//ads.Play(); // 播放//ads.Pause(); // 暂停//ads.UnPause(); // 继续播放//ads.PlayOneShot(); // 播放一次 配合音效使用//ads.volume = 1.0f; // 音量//ads.playOnAwake = true; // 唤醒时播放//ads.mute = false; // 静音//ads.loop = false; // 循环//ads.isPlaying = false; // 是否播放中//ads.clip; // 声音片段 #endregion// 加载音频资源的方法// ac = Resources.Load<AudioClip>("AudioClips/1");for (int i = 0; i < 3; i ++ ) {ac = Resources.Load<AudioClip>("AudioClips/" + (i + 1));acs.Add(ac);}}// Update is called once per framevoid Update(){changeVolume();playMusic();changeMusic();}private void changeVolume() {if (Input.GetKeyDown(KeyCode.M)) {ads.volume += 0.05f;} else if (Input.GetKeyDown(KeyCode.N)) {ads.volume -= 0.05f;}}private void playMusic() {if (Input.GetKeyDown(KeyCode.B)) {if (ads.isPlaying) {ads.Pause(); // 暂停} else {ads.Pause();}}}private void changeMusic() {if (Input.GetKeyDown (KeyCode.Tab)) {ads.clip = acs[j];ads.Play();if (j < acs.Count - 1) {j ++ ;} else {j = 0;}}}
}

学习动画控制器组件

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Component4 : MonoBehaviour
{Animator am;// Start is called before the first frame updatevoid Start(){am = GetComponent<Animator>();StartCoroutine(learnConroutine());// 关闭协程//StopCoroutine(learnConroutine()); //StopAllCoroutines();}// Update is called once per framevoid Update(){//if (Input.GetKeyDown(KeyCode.F)) {   //    am.SetTrigger("pickup"); // 设置触发//    //am.SetBool(); // 设置bool值//    //am.SetFloat(); // 设置浮点数//    //am.SetInteger(); // 设置整数值//}}// Unity中协程的使用,采用的是yield return ,返回值是一个协程器// 协程:介于进程和线程之间的一个定义,简单理解为一段一段的程序IEnumerator learnConroutine() { // 协程器// 技能CDwhile (true) {if (Input.GetKeyDown(KeyCode.F)) {am.SetTrigger("pickup"); // 设置触发yield return new WaitForSeconds(5); } else {yield return null;}...//yield return new WaitForSeconds(5); // 过5秒再执行...//yield return null; // 把程序变成要的之前先执行,下次再执行的话,到要的之后再执行}}}

学习GUI系统

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // 旧版GUI命名空间
using TMPro; // 新版GUI命名空间
using UnityEngine.SceneManagement; // 场景管理
using System;public class Component5 : MonoBehaviour
{// 给GUI对象赋值的两种方式:// 第一种方式:getcomponent//Text t;// 第二种方式:public + 外界赋值public Text t;public Image image;public RawImage rawImage;public Button button;public InputField inputField;public Toggle toggle;public Slider slider;public Scrollbar scrollbar;public Dropdown dropdown;//TextMeshPro tmp;// Start is called before the first frame updatevoid Start(){// 文本Text//t.GetComponentInChildren<Text>(); t.text = "好好听课别玩了"; // 更改文本内容//t.font; // 字体// 图片 Image//image.sprite = Resources.Load<Sprite>("") as Sprite; // 更改图片// 原始图片 RawImagerawImage.texture = Resources.Load<Texture>("Images/bg2") as Texture; // 更改背景图片// 按钮 Button// 调用方法的第一种方式:public + Unity中设置// 调用方法的第二种方式:AddListenerbutton.onClick.AddListener(clickButton); // 添加监听 保证没有很多对外接口// 文本输入框 InputField//inputField.text; // 输入的内容// 切换 Toggletoggle.onValueChanged.AddListener(clickToggle); // 改变值的写法//toggle.isOn; // 不改变值// 滑动条 Sliderslider.onValueChanged.AddListener(changeSlider);//slider.value;// 滚动条 Scrollbarscrollbar.onValueChanged.AddListener(changeSlider);//scrollbar.value;// 下拉列表 DropdownInitDropdown();dropdown.onValueChanged.AddListener(changeDropdown);}public void InitDropdown() {dropdown.options.Clear(); // 清除列表Dropdown.OptionData opl = new Dropdown.OptionData();opl.text = "比尔吉沃特";dropdown.options.Add(opl);Dropdown.OptionData op2 = new Dropdown.OptionData();op2.text = "德玛西亚";dropdown.options.Add(op2);}void changeDropdown(int intValue) {switch (intValue) {case 0:Debug.Log("登录比尔吉沃特");break;case 1:Debug.Log("登录德玛西亚");break;default:break;}}void clickButton() {if (inputField.text == "123") {Debug.Log("回答正确");} else {Debug.Log("回答错误");}}void clickToggle(bool isOn) { // 必须带bool参数if (isOn) {Debug.Log("静音");} else {Debug.Log("播放");}}void changeSlider(float floValue) {if (floValue < 0.3) {Debug.Log("血量太低了");} else {Debug.Log("血量健康");}}
}

学习Unity事件系统EventSystem

学习Unity事件系统EventSystem
IPointr ... Handler // 指针事件接口
I ... DragHandler // 拖拽事件接口

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems; // 事件系统命名空间
using UnityEngine.UI;
using TMPro; // 新版文本命名空间public class Component6 : MonoBehaviour, IPointerClickHandler, IDragHandler, IPointerEnterHandler, IPointerExitHandler {// 新版文本的类名称//TMP_Text;//TMP_InputField;//TMP_Dropdown dropdownpublic void OnDrag(PointerEventData eventData) { // 拖拽//transform.position = Input.mousePosition;transform.position = eventData.position; // 两个都可以实现}public void OnPointerClick(PointerEventData eventData) { // 点击Debug.Log("点击图片");}public void OnPointerEnter(PointerEventData eventData) { // 进入GetComponent<Image>().color = Color.blue;}public void OnPointerExit(PointerEventData eventData) { // 退出GetComponent<Image>().color = Color.white;}
}

控制声音的GUI组件、退出游戏

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Component7 : MonoBehaviour
{// 控制声音的GUI组件public Toggle toggle;public Slider slider;AudioSource ads;// 退出游戏public Button button;// Start is called before the first frame updatevoid Start(){ads = GetComponent<AudioSource>();toggle.onValueChanged.AddListener(PlayMusic);slider.onValueChanged.AddListener(ChangeVolunme);button.onClick.AddListener(QuitGame);}private void QuitGame() {Application.Quit();}private void ChangeVolunme(float arg0) {ads.volume = arg0;}private void PlayMusic(bool arg0) { if (arg0) {ads.Pause();} else {ads.UnPause();}}
}

学习数据库操作

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MySql.Data.MySqlClient; // MySQL连接命名空间
using System;
using Org.BouncyCastle.Security;public class Component8 : MonoBehaviour
{// 服务器、端口号、数据库、用户名、密码、数据格式...string strConn = "server = localhost; port = 3306; database = dbforcsharp; username = root; password = LiuYue20030214; charset=utf8;";// 创建MySQL连接器MySqlConnection sqlConnection;// Start is called before the first frame updatevoid Start(){// 操作数据库的第一步:try {sqlConnection = new MySqlConnection(strConn);sqlConnection.Open(); // 连接数据库Debug.Log(sqlConnection.State); // 输出状态//1.增 insert//int i1 = InsertData();//Debug.Log(i1);//2.删 delete//int i2 = DeleteData();//Debug.Log(i2);//3.改 update//int i3 = UpdateData();//Debug.Log(i3);// 4. 查selectData();} catch (System.Exception) {throw;} finally {if (sqlConnection.State.ToString() == "Open") {// 操作数据库的最后一步sqlConnection.Close();Debug.Log(sqlConnection.State);}}}/// <summary>/// 查询某一行数据/// </summary>private void selectData() {// 第一步 写SQL语句string strSql = "select * from peo where name = '虚竹';";// 第二步 使用MySQLCommand发送语句using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {// 第三步 执行ExecuteReader方法 using (MySqlDataReader mysqlDataReader = mySqlCommand.ExecuteReader()) {// 第四步 通过MySQLDataReader读取数据while (mysqlDataReader.Read()) {// 使用GetXXX获取不同的数据Debug.Log(mysqlDataReader.GetString(0));Debug.Log(mysqlDataReader.GetString(1));Debug.Log(mysqlDataReader.GetString(2));}}}}/// <summary>///  所有的非查询操作都是一样的步骤/// </summary>private int InsertData() {// 第一步 写SQL语句string strSql = "insert into peo (name, age) values ('虚竹', 25);";// using降低内存占用// 第二步 使用MySQLCommand发送语句using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {// 第三步 执行ExecuteNonQuery方法 执行非查询操作 返回int 当数字不为0 表示第i行发生更改return mySqlCommand.ExecuteNonQuery();}}private int DeleteData() {// 第一步 写SQL语句string strSql = "delete from peo where name = '刘悦';"; // where 其中// using降低内存占用// 第二步 使用MySQLCommand发送语句using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {// 第三步 执行ExecuteNonQuery方法 执行非查询操作 返回int 当数字不为0 表示第i行发生更改return mySqlCommand.ExecuteNonQuery();}}private int UpdateData() {// 第一步 写SQL语句string strSql = "update peo set name = '张三疯' where name = '张三丰';";// using降低内存占用// 第二步 使用MySQLCommand发送语句using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {// 第三步 执行ExecuteNonQuery方法 执行非查询操作 返回int 当数字不为0 表示第i行发生更改return mySqlCommand.ExecuteNonQuery();}}
}

实现登录和注册功能

  • 登录: 获取输入框内容 -> 连接并打开数据库 -> 查找用户名和密码 -> 关闭数据库
    Y -> 对比用户名和密码 -> Y -> 登录成功
    Y -> 对比用户名和密码 -> N -> 提示登录失败
    N -> 提示登录失败
  • 注册: 获取输入框内容 -> 连接并打开数据库 -> 查找用户名和密码
    Y -> 关闭数据库 -> 提示用户已存在
    N -> 添加用户名和密码 -> 关闭数据库 -> 注册成功

  • 分解: 按照顺序分解成一个一个模块, 不一定优
  1. 连接并打开数据库
  2. 查找用户名和密码
  3. 关闭数据库
  4. 对比用户名和密码
  5. 添加用户名和密码

  • 接口:
  1. 登录 1234
  2. 注册 1235

  • 对象: GUI:输入框2 按钮2 文本

  • 连接数据库: MySqlConnection, ...command, ...reader

  • 字符串: 连接数据库, 用户名2, 密码2(用户输入+数据库)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MySql.Data.MySqlClient;
using TMPro;
using UnityEngine.UI;
using System;
using UnityEngine.SceneManagement;public class Component9 : MonoBehaviour
{// 创建GUI// 新版 待改 -> 已改旧版public InputField inputField1;public InputField inputField2;public Button button1;public Button button2;public Text tip;// 服务器、端口号、数据库、用户名、密码、数据格式...string strConn = "server = localhost; port = 3306; database = dbforcsharp; username = root; password = LiuYue20030214; charset=utf8;";// 创建MySQL连接器MySqlConnection sqlConnection;string username;string password;string usernameDB;string passwordDB;// 事件 监听 执行// Start is called before the first frame updatevoid Start(){button1.onClick.AddListener(Login);button2.onClick.AddListener(Registrations);}public void Login() {username = inputField1.text;password = inputField2.text;//1.连接并打开数据库ConnectDB();//2.查找用户名和密码SelectDB(username);//3.关闭数据库CloseDB();//4.对比用户名和密码CompareDB();}public void Registrations() {username = inputField1.text;password = inputField2.text;//1.连接并打开数据库ConnectDB();//2.查找用户名和密码// 我写的//if (username == usernameDB) {//    tip.text = "用户名已存在, 请重新输入";//} else {//    int i = InsertDB(username, password);//    CloseDB();//    tip.text = "创建成功";//}// 老师写的if (SelectDB(username)) {tip.text = "用户名已存在";} else {// 3. 添加用户名和密码if (InsertDB(username, password) == 1) {tip.text = "注册成功";} else {tip.text = "注册失败";}}// 4. 关闭数据库CloseDB();}private void ConnectDB() {try {sqlConnection = new MySqlConnection(strConn);sqlConnection.Open(); // 连接数据库Debug.Log(sqlConnection.State); // 输出状态} catch (Exception) {throw;}}private bool SelectDB(string n) {bool isExist = false;// 第一步 写SQL语句string strSql = "select * from user where username = '" + n + "';";// 第二步 使用MySQLCommand发送语句using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {// 第三步 执行ExecuteReader方法 using (MySqlDataReader mysqlDataReader = mySqlCommand.ExecuteReader()) {// 第四步 通过MySQLDataReader读取数据while (mysqlDataReader.Read()) {isExist = true;usernameDB = mysqlDataReader.GetString(0);passwordDB = mysqlDataReader.GetString(1);}}}return isExist;}private void CloseDB() {if (sqlConnection.State.ToString() == "Open") {// 操作数据库的最后一步sqlConnection.Close();Debug.Log(sqlConnection.State);}}private void CompareDB() {if (usernameDB == username && passwordDB == password) {// tip.text = "登录成功";SceneManager.LoadScene(1);// SceneManager.LoadScene("Scene1");} else {tip.text = "登录失败";}}private int InsertDB(string u, string p) {// 第一步 写SQL语句string strSql = "insert into user (username, password) values ('" + u + "', '" + p + "');";// using降低内存占用// 第二步 使用MySQLCommand发送语句using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {// 第三步 执行ExecuteNonQuery方法 执行非查询操作 返回int 当数字不为0 表示第i行发生更改return mySqlCommand.ExecuteNonQuery();}}
}

相关文章:

unity笔记

物体的各种控制方法 using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine;public class Componentl : MonoBehaviour {// Transform transform;GameObject obj;public float floSpeed 0;public float floRotate 0;// Start …...

二十、泛型(5)

本章概要 边界通配符 编译器有多聪明逆变无界通配符捕获转换 边界 边界&#xff08;bounds&#xff09;在本章的前面进行了简要介绍。边界允许我们对泛型使用的参数类型施加约束。尽管这可以强制执行有关应用了泛型类型的规则&#xff0c;但潜在的更重要的效果是我们可以在…...

Oracle递归查询树形数据

实际生活有很多树形结构的数据&#xff0c;比如公司分为多个部门、部门下分为多个组&#xff0c;组下分为多个员工&#xff1b;省市县的归属&#xff1b;页面菜单栏等等。 如果想查询某个节点的父节点或者子节点&#xff0c;一般通过表自身连接完成&#xff0c;但如果该节点的子…...

pycharm pro v2023.2.4(Python开发)

PyCharm是一种Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;PyCharm提供了强大的功能&#xff0c;包括语法突出显示、智能代码完成、代码检查、自动重构和调试等特性&#xff0c;这些都可以帮助Python开发人员更加高效地编写代码。 PyCharm Pro是PyCharm的高级版…...

武汉某母婴用品公司 - 集简云连接ERP和营销系统,实现库存管理的自动化

品牌介绍与关怀理念 武汉某母婴用品公司是一家专注于高端孕婴童护理用品的企业&#xff0c;积极响应和关怀孕产人群&#xff0c;全方位提供从待产用品到产后护理用品&#xff0c;再到婴童洗护用品和初生婴儿用品等一系列全面的母婴产品。我们的使命是满足客户的需求&#xff0…...

AD9371 Crossbar

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 &#xff1a; AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射&#xff1a; AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 &#xff1a; AD9371 官方…...

设计模式 -- 责任链模式(Chain of Responsibility Pattern)

责任链模式&#xff1a;和上一篇策略模式一样也是行为型模式。创建一个接收者对象的链。这种模式给予请求的类型&#xff0c;对请求的发送者和接收者进行解耦。这种模式中&#xff0c;通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求&#xff0c;那么它…...

开源:特殊的垄断

免责声明&#xff1a;本博客旨在分享我对开源策略的理解和体会&#xff0c;不代表任何组织或机构的立场或观点&#xff0c;也不构成任何商业或投资的建议或担保。本博客的内容可能存在错误或遗漏&#xff0c;也可能随着时间的推移而变得过时或不适用。请在使用或依赖本博客的内…...

linux安装oracle client解决cx_Oracle.DatabaseError: DPI-1047

背景: 需要在linux上调用python,连接oracle数据,在执行脚本是出现如下错误: 由于未安装client,所有找不到对应的文件 [root@xx wxArticle]# python main.py Traceback (most recent call last):File "main.py", line 16, in <module>oracle_db = cx_Or…...

工业园区一般用多大规格的电表?

随着我国经济的快速发展&#xff0c;工业园区在各地区如雨后春笋般崛起。作为电力系统的重要组成部分&#xff0c;电表的选择与应用对于工业园区的稳定运行至关重要。那么&#xff0c;工业园区一般用的是多大规格的电表呢&#xff1f;下面&#xff0c;小编就来给大家揭秘一下&a…...

Debian12换镜像源

0 背景 用docker运行了一个node容器&#xff0c;发现连vim也没有&#xff0c;所以打算安一个vim 1 查看操作系统 find / -name *release* #查看release信息2 更换镜像源 2.1 从网上找个国内镜像源 确定好操作系统版本后&#xff0c;从网上搜一下对应的数据源。这里提供一个…...

deeplog中输出某个 event 的概率

1 实现之后效果 # import DeepLog and Preprocessor import numpy as np from deeplog import DeepLog import torch# Create DeepLog object deeplog DeepLog(input_size 10, # Number of different events to expecthidden_size 64 , # Hidden dimension, we suggest 64…...

流媒体中relay和forword的区别

在流媒体中&#xff0c;"relay"&#xff08;中继&#xff09;和 "forward"&#xff08;转发&#xff09;是两种常见的传输方式&#xff0c;用于将流媒体从一个源传递到目标接收器。它们的区别如下&#xff1a; Relay&#xff08;中继&#xff09;&#xff…...

git创建本地分支并提交到远程

创建本地分支 git branch local_branch_name切换到本地分支 git checkout local_branch_name提交代码 git add . git commit -m "commit_message"添加远程信息 git remote add origin remote_git_address提交到远程 git push origin local_branch_name:remote_b…...

Selenium定位元素的方法css和xpath的区别

selenium是一种自动化测试工具&#xff0c;它可以通过不同的定位方式来识别网页上的元素&#xff0c;如id、name、class、tag、link text、partial link text、css和xpath。 如果对软件测试、接口、自动化、性能测试、测试开发、面试经验交流。感兴趣可以加裙485187702&#x…...

【目标检测】SSD损失函数详解

文章目录 定位损失 L l o c L_{loc} Lloc​偏移值的计算smooth L1 loss 置信率损失 L c o n f L_{conf} Lconf​ 最近看看这个古早的目标检测网络&#xff0c;看了好多文章&#xff0c;感觉对损失函数的部分讲得都是不很清楚得样子&#xff0c;所以自己捋一下。 首先&#x…...

C【整数正序分解】

// 整数正序分解 #include <stdio.h> #include <stdlib.h>int main() {int x;scanf("%d", &x);// 13425/10000->1(int一个d)// 13425%10000->3425(这是x)// 10000/10-.1000(这是mask)int mask 1;int t x;while (t > 9){t / 10;mask * 10;…...

基于springboot实现高校党务平台管理系统【项目源码】计算机毕业设计

基于springboot实现高校党务平台管理系统演示 Java技术 Java是由Sun公司推出的一门跨平台的面向对象的程序设计语言。因为Java 技术具有卓越的通用性、高效性、健壮的安全性和平台移植性的特点&#xff0c;而且Java是开源的&#xff0c;拥有全世界最大的开发者专业社群&#x…...

Day24力扣打卡

打卡记录 寻找峰值&#xff08;二分法&#xff09; class Solution { public:int findPeakElement(vector<int> &nums) {int left -1, right nums.size() - 1; // 开区间 (-1, n-1)while (left 1 < right) { // 开区间不为空int mid left (right - left) / …...

5G-A 商用加速,赋能工业互联网

2019 年 6 月&#xff0c;中国工业和信息化部发放 5G 商用牌照。同年 10 月&#xff0c;三大运营商公布 5G 商用套餐&#xff0c;11 月 1 日正式上线 5G 商用套餐&#xff0c;标志中国正式进入 5G 商用新纪元。今年是 5G 商用的第五年&#xff0c;在当前数字经济蓬勃发展的催化…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...