智慧大棚数据库版

news2024/11/14 20:44:30

创建一个SMartBigHouse数据库

在数据库创建一个表用来存储数据 这边将id设为主键并将标识增量设为1

搭建Winfrom

搭建历史查询界面

串口数据,(这边是用的一个虚拟的串口工具,需要的话私)

 ModbusSerialMaster master;
 DataPointCollection wenduValues; //温度
 DataPointCollection shiduValues; //湿度
 DataPointCollection yangqiValues; //氧气
 DataPointCollection fengsuValues; //风速
 public Form1()
 {
     InitializeComponent();
     #region 串口数据
     serialPort1.PortName = "COM2";
     serialPort1.BaudRate = 9600;
     serialPort1.Parity = System.IO.Ports.Parity.None;
     serialPort1.DataBits = 8;
     serialPort1.StopBits =(StopBits)1;
     #endregion

     //使用nmodbus4第三方进行数据读取
      master = ModbusSerialMaster.CreateRtu(serialPort1);
     serialPort1.Open();

     //初始化图表数据
     wenduValues = chart1.Series[0].Points;
     shiduValues = chart1.Series[1].Points;
     yangqiValues = chart1.Series[2].Points;
     fengsuValues = chart1.Series[3].Points;

     //设置数据点文本 #VALY :Y轴的数据值
     chart1.Series[0].Label = "#VALY℃";
     chart1.Series[1].Label = "#VALY%RH";
     chart1.Series[2].Label = "#VALY%VOL";
     chart1.Series[3].Label = "#VALYM/S";

     // 设置鼠标悬浮时候显示文本,
     chart1.Series[0].XValueType = ChartValueType.String;
     chart1.Series[1].XValueType = ChartValueType.String;
     chart1.Series[2].XValueType = ChartValueType.String;
     chart1.Series[3].XValueType = ChartValueType.String;
     chart1.Series[0].ToolTip = "#VALX:#VALY℃";//11-12-30:28℃
     chart1.Series[1].ToolTip = "#VALX:#VALY%RH";
     chart1.Series[2].ToolTip = "#VALX:#VALY%VOL";
     chart1.Series[3].ToolTip = "#VALX:#VALYM/S";


     //设置x可以使用鼠标选中进行局部放大效果
     chart1.ChartAreas[0].CursorX.IsUserEnabled = true;//是否允许用户操作x轴
     chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;//是否允许用户选择滚动条;
     //设置滚动条样式
     chart1.ChartAreas[0].AxisX.ScrollBar.BackColor = Color.Red; //滚动条的整体颜色
     chart1.ChartAreas[0].AxisX.ScrollBar.ButtonColor = Color.Green;//滚动条按钮的颜色


 }
开始停止
private void button2_Click(object sender, EventArgs e)
{
    if (timer1.Enabled)
    {
        timer1.Stop();
    }
    else
    {
        timer1.Start();
    }
}
定时器的事件
 double? lastWendu = null; //上一个温度
 double? lastShiDu = null;
 double? lastYangQi = null;
 double? lastFengSu = null;

 private void timer1_Tick(object sender, EventArgs e)
 {
     DateTime d1 = DateTime.Now;
     string time = d1.ToString("HH-mm-ss");

     double ? nowWendu = null; //当前温度
     double ? nowShiDu = null;
     double ? nowYangQi = null;
     double? nowFengSu = null;

     if (checkBox1.Checked) //温度选中
     {
         //ReadHoldingRegisters 读取寄存器的数据
         ushort[] values =  master.ReadHoldingRegisters(1, 0x000, 1);
         nowWendu = values[0] / 10;//当前温度
         wenduValues.AddXY(time, nowWendu);
         lastWendu = nowWendu ?? lastWendu; //记录当前温度,
     }
     else //温度未选中
     {
        int index =  wenduValues.AddXY(time,lastWendu); //添加x轴时间 y轴数据 index添加点的索引值
         DataPoint point =  wenduValues[index]; //找到隐藏点
         point.Color = Color.Transparent;//设置为透明颜色

        

     }
     if (wenduValues.Count == 11)
     {
         wenduValues.RemoveAt(0); //保留界面只有20个点
     }


     if (checkBox2.Checked) //湿度选中
     {
         //ReadHoldingRegisters 读取寄存器的数据
         ushort[] values = master.ReadHoldingRegisters(1, 0x001, 1);
         nowShiDu = values[0] / 10;
         shiduValues.AddXY(time, nowShiDu);
         lastShiDu = nowShiDu ?? lastShiDu;
     }
     else //湿度选中
     {
         int index = shiduValues.AddXY(time, lastShiDu); //添加x轴时间 y轴数据 index添加点的索引值
         DataPoint point = shiduValues[index]; //找到隐藏点
         point.Color = Color.Transparent;//设置为透明颜色

        
     }

     if (shiduValues.Count == 11)
     {
         shiduValues.RemoveAt(0); //保留界面只有20个点
     }

     if (checkBox3.Checked) //湿度选中
     {
         //ReadHoldingRegisters 读取寄存器的数据
         ushort[] values = master.ReadHoldingRegisters(1, 0x002, 1);
         nowYangQi = values[0] / 10;
         yangqiValues.AddXY(time, nowYangQi);
         lastYangQi = nowYangQi ?? lastYangQi;
     }
     else //湿度选中
     {
         int index = yangqiValues.AddXY(time, lastYangQi); //添加x轴时间 y轴数据 index添加点的索引值
         DataPoint point = yangqiValues[index]; //找到隐藏点
         point.Color = Color.Transparent;//设置为透明颜色

     
     }
     if (yangqiValues.Count == 11)
     {
         yangqiValues.RemoveAt(0); //保留界面只有20个点
     }
     if (checkBox4.Checked) //湿度选中
     {
         //ReadHoldingRegisters 读取寄存器的数据
         ushort[] values = master.ReadHoldingRegisters(1, 0x003, 1);
         nowFengSu = values[0] / 10;
         fengsuValues.AddXY(time, nowFengSu);
         lastFengSu = nowFengSu ?? lastFengSu;
         
     }
     else //湿度选中
     {
         int index = fengsuValues.AddXY(time, lastFengSu); //添加x轴时间 y轴数据 index添加点的索引值
         DataPoint point = fengsuValues[index]; //找到隐藏点
         point.Color = Color.Transparent;//设置为透明颜色

         
     }
     if (fengsuValues.Count == 11)
     {
         fengsuValues.RemoveAt(0); //保留界面只有20个点
     }

     //添加到数据库里面
     //1 连接数据库 数据库的配置在App.config进行配置
     //2 创建数据库操作文件,sqlhelper文件 把数据库的增删改查操作封装的sqlhelper文件
     //3 在使用数据库操作的时候调用sqlhelper方法即可

     //组织sql语句  update("")
     string sql = "insert into Log (time,wendu,shidu,o2,fengsu) values('{0}',{1},{2},{3},{4})";
     string w = nowWendu is null?"NULL":((nowWendu??0)*10).ToString(); //
     string s = nowShiDu is null ? "NULL" : ((nowShiDu ?? 0) * 10).ToString();
     string y = nowYangQi is null ? "NULL" : ((nowYangQi ?? 0) * 10).ToString();
     string f = nowFengSu is null ? "NULL" : ((nowFengSu ?? 0) * 10).ToString();

     sql = string.Format(sql, d1.ToString(), w, s, y, f);
     SqlHelper.Update(sql);
 }

//添加到数据库里面
//1 连接数据库 数据库的配置在App.config进行配置
//2 创建数据库操作文件,sqlhelper文件 把数据库的增删改查操作封装的sqlhelper文件
//3 在使用数据库操作的时候调用sqlhelper方法即可

 //组织sql语句  update("")
 string sql = "insert into Log (time,wendu,shidu,o2,fengsu) values('{0}',{1},{2},{3},{4})";
 string w = nowWendu is null?"NULL":((nowWendu??0)*10).ToString(); //
 string s = nowShiDu is null ? "NULL" : ((nowShiDu ?? 0) * 10).ToString();
 string y = nowYangQi is null ? "NULL" : ((nowYangQi ?? 0) * 10).ToString();
 string f = nowFengSu is null ? "NULL" : ((nowFengSu ?? 0) * 10).ToString();

 sql = string.Format(sql, d1.ToString(), w, s, y, f);
 SqlHelper.Update(sql);
跳转功能
private void button4_Click(object sender, EventArgs e)
{
    Form2 f2 = new Form2();
    f2.Show();
}
这边添加一个SqlHelper封装方法
internal class SqlHelper
{
    // 数据库连接信息,需要读取项目配置中的数据库连接信息
    //点击引用 ---》添加引用---》搜索ConfigurationManager ---》找到system.ConfigurationManager --->确定即可

    private static string connString = ConfigurationManager.ConnectionStrings["Serial"].ConnectionString;

    /// <summary>
    /// 根据传入的Sql执行第一行第一列的查询操作
    /// </summary>
    /// <param name="sql">要执行的Sql</param>
    /// <returns>第一行第一列的结果,其他数据将会被忽略,如果没有查询到任何数据返回null</returns>
    public static object GetSingleValue(string sql)
    {
        using (SqlConnection conn = new SqlConnection(connString))
        {
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                try
                {
                    conn.Open();
                    object res = cmd.ExecuteScalar();
                    return res;
                }
                catch (Exception ex)
                {
                    // 记录日志
                    File.AppendAllText("sqlError.log", $"[{DateTime.Now}] (SQL:{sql}) {ex.Message}");

                    throw ex;
                }
            }
        }
    }

    /// <summary>
    /// 根据传入的Sql执行第一行第一列的查询操作
    /// </summary>
    /// <param name="sql">要执行的Sql</param>
    /// <param name="parameters">给Sql中添加的参数列表</param>
    /// <returns>第一行第一列的结果,其他数据将会被忽略,如果没有查询到任何数据返回null</returns>
    public static object GetSingleValue(string sql, SqlParameter[] parameters)
    {
        using (SqlConnection conn = new SqlConnection(connString))
        {
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                // 添加参数
                cmd.Parameters.AddRange(parameters);
                try
                {
                    conn.Open();
                    object res = cmd.ExecuteScalar();
                    return res;
                }
                catch (Exception ex)
                {
                    // 记录日志
                    File.AppendAllText("sqlError.log", $"[{DateTime.Now}] (SQL:{sql}) {ex.Message}");

                    throw ex;
                }
            }
        }
    }

    /// <summary>
    /// 执行增删改操作
    /// </summary>
    /// <param name="sql">要执行的Sql</param>
    /// <returns>受影响的行数</returns>
    /// Update("insert into")
    public static int Update(string sql)
    {
        using (SqlConnection conn = new SqlConnection(connString))
        {
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                try
                {
                    conn.Open();
                    int res = cmd.ExecuteNonQuery();
                    return res;
                }
                catch (Exception ex)
                {
                    // 记录日志
                    File.AppendAllText("sqlError.log", $"[{DateTime.Now}] (SQL:{sql}) {ex.Message}");

                    throw ex;
                }
            }
        }
    }

    /// <summary>
    /// 执行增删改操作
    /// </summary>
    /// <param name="sql">要执行的Sql</param>
    /// <param name="parameters">Sql中携带的参数</param>
    /// <returns>受影响的行数</returns>
    public static int Update(string sql, SqlParameter[] parameters)
    {
        using (SqlConnection conn = new SqlConnection(connString))
        {
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                cmd.Parameters.AddRange(parameters); // 添加参数
                try
                {
                    conn.Open();
                    int res = cmd.ExecuteNonQuery();
                    return res;
                }
                catch (Exception ex)
                {
                    // 记录日志
                    File.AppendAllText("sqlError.log", $"[{DateTime.Now}] (SQL:{sql}) {ex.Message}");

                    throw ex;
                }
            }
        }
    }

    /// <summary>
    /// 执行查询操作
    /// </summary>
    /// <param name="sql">要执行的sql</param>
    /// <returns>查询结果的SqlDataReader</returns>
    public static SqlDataReader GetValue(string sql)
    {
        SqlConnection conn = new SqlConnection(connString);
        SqlCommand cmd = new SqlCommand(sql, conn);
        try
        {
            conn.Open();
            SqlDataReader res = cmd.ExecuteReader();
            return res;
        }
        catch (Exception ex)
        {
            // 记录日志
            File.AppendAllText("sqlError.log", $"[{DateTime.Now}] (SQL:{sql}) {ex.Message}");

            throw ex;
        }
    }
}

历史查询界面

DataPointCollection wenduValues; //温度
DataPointCollection shiduValues; //湿度
DataPointCollection yangqiValues; //氧气
DataPointCollection fengsuValues; //风速
public Form2()
{
    InitializeComponent();

      DateTime d1 = DateTime.Now;
      d1 = d1.AddHours(24-d1.Hour); //24-当前小时  
      d1 = d1.AddMinutes(-d1.Minute);
      d1 = d1.AddSeconds(-d1.Second);
      dateTimePicker1.MaxDate = d1;

    //结束时间最大值的要求 :开始时间的后的一天
    dateTimePicker2.MaxDate = d1;
    //首次触发dateTimePicker1_ValueChanged 手动调用一次
    dateTimePicker1_ValueChanged(null, null);

    dataGridView1.AutoGenerateColumns = false;// 表格禁止自动生成列

    //初始化图表数据
    wenduValues = chart1.Series[0].Points;
    shiduValues = chart1.Series[1].Points;
    yangqiValues = chart1.Series[2].Points;
    fengsuValues = chart1.Series[3].Points;

    //设置数据点文本 #VALY :Y轴的数据值
    chart1.Series[0].Label = "#VALY℃";
    chart1.Series[1].Label = "#VALY%RH";
    chart1.Series[2].Label = "#VALY%VOL";
    chart1.Series[3].Label = "#VALYM/S";

    // 设置鼠标悬浮时候显示文本,
    chart1.Series[0].XValueType = ChartValueType.String;
    chart1.Series[1].XValueType = ChartValueType.String;
    chart1.Series[2].XValueType = ChartValueType.String;
    chart1.Series[3].XValueType = ChartValueType.String;
    chart1.Series[0].ToolTip = "#VALX:#VALY℃";//11-12-30:28℃
    chart1.Series[1].ToolTip = "#VALX:#VALY%RH";
    chart1.Series[2].ToolTip = "#VALX:#VALY%VOL";
    chart1.Series[3].ToolTip = "#VALX:#VALYM/S";


    //设置x可以使用鼠标选中进行局部放大效果
    chart1.ChartAreas[0].CursorX.IsUserEnabled = true;//是否允许用户操作x轴
    chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;//是否允许用户选择滚动条;
    //设置滚动条样式
    chart1.ChartAreas[0].AxisX.ScrollBar.BackColor = Color.Red; //滚动条的整体颜色
    chart1.ChartAreas[0].AxisX.ScrollBar.ButtonColor = Color.Green;//滚动条按钮的颜色


}
查询功能
清空之前的数据
 wenduValues.Clear();
 shiduValues.Clear();
 yangqiValues.Clear();
 fengsuValues.Clear();
1查询数据
string sql = $"select id,time,wendu,shidu,o2,fengsu from Log where time >='{dateTimePicker1.Value}' and time<='{dateTimePicker2.Value}'";
 List<Log> list = new List<Log>();
3调用查询数据库方法 进行list添加数据
SqlDataReader sr =  SqlHelper.GetValue(sql); //读取一条之后 放到sr对象中
 while (sr.Read()) // 如果能读到数据
 {
     list.Add(new Log()
     {
         id = Convert.ToInt16(sr["id"]),
         time = Convert.ToDateTime(sr["time"]),
         // DBNull 数据的null、 如果数据库wendu为空,表格显示未记录,如果不为空 取出除以10
         wendu = sr["wendu"] is DBNull ? "未记录" : ((Convert.ToInt16(sr["wendu"]) / 10).ToString()),

         shidu = sr["shidu"] is DBNull ? "未记录" : ((Convert.ToInt16(sr["shidu"]) / 10).ToString()),

         o2 = sr["o2"] is DBNull ? "未记录" : ((Convert.ToInt16(sr["o2"]) / 10).ToString()),

        fengsu = sr["fengsu"] is DBNull ? "未记录" : ((Convert.ToInt16(sr["fengsu"]) / 10).ToString()),

     }); 
 }
 sr.Close();
 dataGridView1.DataSource = list; //设置表格数据源
添加图表数据 把查询到list数据添加到图表中
    for(int i = 0; i < list.Count; i++)
    {
        Log log = list[i]; //遍历
        string time = log.time.ToString(); //取时间
        if(log.wendu == "未记录" && wenduValues.Count>0) //温度未被存到数据库里面,
        {
            // 设置点为透明颜色
            //wenduValues[i - 1].YValues 添加前一个点的y坐标 
            wenduValues.AddXY(time, wenduValues[i - 1].YValues[0]);
            DataPoint p = wenduValues[i];
            p.Color = Color.Transparent;// 设置为透明颜色
        }
        else  //温度有数据 把数据添加图标上
        {
            wenduValues.AddXY(time, log.wendu); //添加点
        }

        if (log.shidu == "未记录" && shiduValues.Count > 0) //温度未被存到数据库里面,
        {
            // 设置点为透明颜色
            //wenduValues[i - 1].YValues 添加前一个点的y坐标 
            shiduValues.AddXY(time, shiduValues[i - 1].YValues[0]);
            DataPoint p = shiduValues[i];
            p.Color = Color.Transparent;// 设置为透明颜色
        }
        else  //温度有数据 把数据添加图标上
        {
            shiduValues.AddXY(time, log.shidu); //添加点
        }

        if (log.o2 == "未记录" && yangqiValues.Count > 0) //温度未被存到数据库里面,
        {
            // 设置点为透明颜色
            //wenduValues[i - 1].YValues 添加前一个点的y坐标 
            yangqiValues.AddXY(time, yangqiValues[i - 1].YValues[0]);
            DataPoint p = yangqiValues[i];
            p.Color = Color.Transparent;// 设置为透明颜色
        }
        else  //温度有数据 把数据添加图标上
        {
            yangqiValues.AddXY(time, log.o2); //添加点
        }

        if (log.fengsu == "未记录" && fengsuValues.Count > 0) //温度未被存到数据库里面,
        {
            // 设置点为透明颜色
            //wenduValues[i - 1].YValues 添加前一个点的y坐标 
            fengsuValues.AddXY(time, fengsuValues[i - 1].YValues[0]);
            DataPoint p = fengsuValues[i];
            p.Color = Color.Transparent;// 设置为透明颜色
        }
        else  //温度有数据 把数据添加图标上
        {
            fengsuValues.AddXY(time, log.fengsu); //添加点
        }
    }
}

设置结束时间 最小值是在开始时间的30分钟之后,
            //MinDate 最小值
            // AddMinutes 添加30分钟

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
    //设置结束时间 最小值是在开始时间的30分钟之后,
    //MinDate 最小值
    // AddMinutes 添加30分钟
    dateTimePicker2.MinDate = dateTimePicker1.Value.AddMinutes(30);
}
Log 包含每一条数据信息
public class Log
{
    public DateTime time { get; set; }
    public int id { get; set; }
    public string wendu { get; set; }
    public string shidu { get; set; }
    public string o2 { get; set; }
    public string fengsu { get; set; }
}

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

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

相关文章

Win10使用VS Code远程连接Ubuntu服务器时遇到SSH公钥错误的解决方案

在使用Windows 10上的Visual Studio Code&#xff08;VS Code&#xff09;远程连接Ubuntu 20.04服务器时&#xff0c;遇到了以下错误&#xff1a; 错误的原因 这个错误消息表明&#xff0c;SSH 客户端检测到远程主机的 ECDSA 公钥已更改。可能是由于以下原因之一&#xff1a…

python—NumPy的基础(2)

文章目录 一维数组索引和切片一维数组索引和切片的使用一维数组负索引和切片的使用 二维数组的索引和切片索引直接获取使用坐标获取数组[x,y]二维数组负索引的使用切片数组的复制 改变数组的维度改变数组的维度 数组的拼接列表的拼接一维数组的拼接二维数组的拼接vstack 与hsta…

el-image预览图片点击遮盖处关闭预览

预览关闭按钮不明显 解决方式&#xff1a; 1.修改按钮样式明显点&#xff1a; //el-image 添加自定义类名&#xff0c;下文【test-image】代指 .test-image .el-icon-circle-close{ color:#fff; font-size:20px; ...改成很明显的样式 }2.使用事件监听&#xff0c;监听当前遮…

第十一章 数据结构

第十一章 数据结构 11.1 数组 数组是元素的顺序集合&#xff0c;通常这些元素具有相同的数据类型 索引表示元素在数组中的顺序号&#xff0c;顺序号从数组开始处计数 数组元素通过索引被独立给出了地址&#xff0c;数组整体上有一个名称&#xff0c;但每个元素利用数组的的…

TCP网络socket编程(面向连接)

Tcp面向链接、面向字节流和文件的读写非常类似&#xff08;&#xff09;&#xff1a;客户端创建套接字主动建立连接&#xff0c;服务器监听套接字一直等待连接的到来&#xff0c;监听到一个&#xff0c;就创建一个新的套接字用于IO 服务器&#xff1a; 创建套接字&#xff1a…

区块链和数据要素融合的价值及应用

一、数据要素面临的关键障碍 在构建数据要素基石的过程中&#xff0c;首要任务是明确并解决产权架构的难题&#xff0c;特别是使用权的确立与流转机制的顺畅&#xff0c;此乃数字经济蓬勃发展的命脉所在。一个高效的数据流转体系对于激发数据潜能、加速经济发展及优化数据资源…

TreeSelect增加可筛选功能

TreeSelect官方可筛选示例 <template><el-tree-selectv-model"value":data"data"filterablestyle"width: 240px"/><el-divider /><el-divider />filter node method:<el-tree-selectv-model"value":data&q…

使用torch_pruning对YOLOv8进行剪枝(新版、detect、segment)

torch_pruning库介绍 在结构修剪中&#xff0c;**Group被定义为深度网络中最小的可移除单元。**每个组由多个相互依赖的层组成&#xff0c;需要同时修剪这些层以保持最终结构的完整性。然而&#xff0c;深度网络通常表现出层与层之间错综复杂的依赖关系&#xff0c;这对结构修剪…

[大牛直播SDK]Windows平台RTMP直播推送模块功能设计

技术优势 全自研框架&#xff0c;易于扩展&#xff0c;自适应算法让延迟更低、采集编码传输效率更高&#xff1b;所有功能以SDK接口形式提供&#xff0c;所有状态&#xff0c;均有event回调&#xff0c;完美支持断网自动重连&#xff1b;SDK模块化&#xff0c;可和大牛直播播放…

DBeaver Ultimate 22.1.0 连接数据库(MySQL+Mongo+Clickhouse)

前言 继续书接上文 Docker Compose V2 安装常用数据库MySQL+Mongo,部署安装好之后我本来是找了一个web端的在线连接数据库的工具,但是使用过程中并不丝滑,最终还是选择了使用 DBeaver ,然后发现 mongo 还需要许可,又折腾整理了半下午,终于大功告成。 DBeaver 版本及说明…

SpringBoot集成Sharding-JDBC实现分库分表

本文已收录于专栏 《中间件合集》 目录 版本介绍背景介绍拆分方式集成并测试1.引入依赖2.创建库和表3.pom文件配置3.编写测试类Entity层Mapper接口MapperXML文件测试类 4.运行结果 自定义分片规则定义分片类编写pom文件 总结提升 版本介绍 SpringBoot的版本是&#xff1a; 2.3.…

SpringBoot上传超大文件导致Cannot read more than 2,147,483,647 into a byte array,问题解决办法

问题描述 报错: java.lang.IllegalArgumentException: Cannot read more than 2,147,483,647 into a byte array at org.apache.commons.io.IOUtils.lambda$toByteArray$0(IOUtils.java:2403) ~[commons-io-2.11.0.jar:2.11.0] at org.apache.commons.io.output.Thre…

python每日学习12:pandas库的用法(1)

python每日学习12&#xff1a;pandas库的用法&#xff08;1&#xff09; 安装 pip install pandas设定系统环境 import pandas as pd #设定自由列表输出最多为 10 行 pd.options.display.max_rows 10 # 显示当前 Pandas 版本号 pd.__version__进入jupyter notebook 页面 在终端…

氧气传感器在汽车制氧检测中的应用

在当今汽车工业中&#xff0c;技术的快速发展不仅带来了驾驶安全性和舒适性的显著提升&#xff0c;还为车辆增加了各种智能功能&#xff0c;以应对不同的驾驶环境和需求。氧气传感器作为一种关键的技术装置&#xff0c;在汽车制氧检测系统中的应用&#xff0c;尤其是针对疲劳驾…

困于数字化泥潭的软件公司|专题报告集

数字化专题报告集链接&#xff1a;https://tecdat.cn/?p36964 在探讨企业数字化转型的进程中&#xff0c;软件公司无疑扮演着举足轻重的角色。它们不仅是技术创新的驱动力&#xff0c;更是连接管理与技术的桥梁。然而&#xff0c;正如许多观察家所指出的那样&#xff0c;软件…

每天五分钟计算机视觉:目标检测模型从RCNN到Fast R-CNN的进化

本文重点 前面的课程中,我们学习了RCNN算法,但是RCNN算法有些慢,然后又有了基于RCNN的Fast-RCNN,Fast R-CNN是一种深度学习模型,主要用于目标检测任务,尤其在图像中物体的识别和定位方面表现出色。它是R-CNN系列算法的一个重要改进版本,旨在解决R-CNN中计算量大、速度慢…

jackson序列化(jackson codec)

Jackson 是一个用于 Java 平台的开源 JSON 库&#xff0c;它提供了灵活且高效的方式来处理 JSON 数据的序列化(Java对象 → JSON字符串)和反序列化(JSON 字符串→ Java对象)。 以下是 Jackson 的一些主要特点和功能&#xff1a; 高性能&#xff1a;Jackson 通过使用基于流的处理…

Ubuntu安装QQ教程

Ubuntu安装QQ教程 腾讯更新Linux版的QQ&#xff0c;这里安装一下&#xff1b; 首先&#xff0c;进入官网找到合适对应的安装包&#xff1b; QQLinux版本官网&#xff1a;https://im.qq.com/linuxqq/index.shtml 我们是ubuntu系统选择X86下的deb版本&#xff0c;如果是arm开…

TikTok养号的网络环境及相关代理IP知识

TikTok作为一个流行的短视频分享平台&#xff0c;其用户量非常庞大&#xff0c;很多商家和个人都会使用TikTok来进行引流和推广。由于TikTok的规则和政策限制了每个用户每天发布视频的数量&#xff0c;因此许多用户会使用多个账号来发布更多的视频以提高曝光率。 然而&#xff…

Android Studio Build窗口出现中文乱码问题

刚安装成功的android studio软件打开工程&#xff0c;编译时下方build窗口中中文是乱码。 解决&#xff1a; 可点击studio状态栏的Help—>Edit Custom VM Options &#xff0c;在打开的studio64.exe.vmoptions文件后面添加&#xff1a;(要注意不能有空格&#xff0c;否则st…