javaScript蓝桥杯-----天气趋势 A

news2024/11/26 7:27:43

目录

  • 一、介绍
  • 二、准备
  • 三、目标
  • 四、代码
  • 五、完成


一、介绍

日常生活中,气象数据对于人们的生活具有非常重要的意义,数据的表现形式多种多样,使用图表进行展示使数据在呈现上更加直观。

本题请实现一个 Y 城 2022 年的天气趋势图。

二、准备

开始答题前,需要先打开本题的项目代码文件夹,目录结构如下:

├── css
│   └── style.css
├── effect-1.gif
├── effect-2.gif
├── index.html
└── js
    ├── axios.js
    ├── echarts.min.js
    ├── vue.min.js
    └── weather.json

其中:

  • css/style.css 是样式文件。
  • index.html 是主页面。
  • js/axios.js 是 axios 文件。
  • js/vue.min.js 是 vue2.x 文件。
  • js/echarts.min.js 是 echarts 文件。
  • js/weather.json 是请求需要用到的天气数据。
  • effect-1.gif 是当月和未来七天切换的效果图。
  • effect-2.gif 是最终完成的效果图。

在浏览器中预览 index.html 页面效果如下:
在这里插入图片描述

三、目标

  1. 完成数据请求(数据来源 ./js/weather.json),weather.json 中存放的数据为 12 个月对应的温度数据。在项目目录下已经提供了 axios,考生可自行选择是否使用。注意:调试完成后请将请求地址写死为 ./js/weather.json。
  2. 把 data 中的月份数据 monthList, 在 class=month 标签下面的 li 上完成渲染,点击月份则切换对应月份的温度数据同时被点击的月份会变成激活状态( .active 类),x 轴为日期,y 轴为温度,默认显示 1 月份数据。
    在这里插入图片描述
  3. 如果点击的月份是当天(通过时间函数动态获取的时间)所在月份,本月和未来七天切换的 tab (即 id=currentMonth 元素)显示,其他月份 currentMonth 元素不显示。
    • 默认显示本月数据。
    • 点击本月显示当月数据,点击未来七天显示从当天(包含当天)开始未来七天的数据,当显示未来七天数据时 x 轴需要显示为月/日格式。
      点击 tab 上本月和未来七天会切换激活状态(.active)。

以当天为 5 月 29 号为例,未来七天 x 轴显示示例(即 x 轴显示成:5/29,5/30,5/31,6/1,6/2,6/3,6/4):
在这里插入图片描述
本月和未来七天 切换效果见文件夹下 effect-1.gif。
在这里插入图片描述

最终效果见文件夹下面的 gif 图,图片名称为 effect-2.gif(提示:可以通过 VS Code 或者浏览器预览 gif 图片)
在这里插入图片描述

四、代码

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>天气趋势</title>
    <meta
      name="viewport"
      content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"
    />
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <script src="./js/axios.js"></script>
    <script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
    <script
      src="js/echarts.min.js"
      type="text/javascript"
      charset="utf-8"
    ></script>
  </head>

  <body>
    <div id="app">
      <div class="top-bar">2022年 Y 城全年温度统计图</div>
      <!-- 主体 -->
      <div class="container">
        <!-- 月份 -->
        <div class="month">
          <ul>
            <!-- TODO:待补充代码 在下面的 li 标签中完成 12个月份 (即 monthList) 的渲染  -->
            <li class="active">1月</li>
          </ul>
        </div>
        <div class="chart">
          <!-- TODO:待补充代码  -->
          <!-- currentMonth  未来七天和本月 tab 切换,只有当前月才显示 -->
          <div id="currentMonth">
            <div class="title">
              <h3>{{typeTitle}}</h3>
              <div class="type">
                <span id="seven">未来7天</span>
                <span id="current">本月</span>
              </div>
            </div>
          </div>
          <div id="chart"></div>
        </div>
      </div>
    </div>
  </body>
</html>
<script>
  // TODO:待补充代码
  var vm = new Vue({
    el: "#app",
    data: {
      chart: null, // 图表
      chartOptions: null, // 图表配置项
      typeTitle: "本月天气",
      monthList: {
        January: "1月",
        February: "2月",
        March: "3月",
        April: "4月",
        May: "5月",
        June: "6月",
        July: "7月",
        August: "8月",
        September: "9月",
        October: "10月",
        November: "11月",
        December: "12月",
      },
    },
    mounted: function () {
      // 初始化 echarts
      this.$nextTick(() => {
        this.initChart();
      });
    },
    methods: {
      initChart() {
        // 初始化图表
        this.chart = echarts.init(document.getElementById("chart"));
        // 配置项
        this.chartOptions = {
          grid: {
            top: 35,
            bottom: 5,
            left: 10,
            right: 10,
            containLabel: true,
          },
          tooltip: {
            trigger: "axis",
            axisPointer: {
              lineStyle: {
                color: {
                  type: "linear",
                  x: 0,
                  y: 0,
                  x2: 0,
                  y2: 1,
                  colorStops: [
                    {
                      offset: 0,
                      color: "rgba(255,255,255,0)",
                    },
                    {
                      offset: 0.5,
                      color: "rgba(255,255,255,1)",
                    },
                    {
                      offset: 1,
                      color: "rgba(255,255,255,0)",
                    },
                  ],
                  global: false,
                },
              },
            },
          },
          xAxis: [
            {
              type: "category",
              boundaryGap: false,
              axisLabel: {
                formatter: "{value}",
                fontSize: 12,
                margin: 20,
                textStyle: {
                  color: "#bfbfbf",
                },
              },
              axisLine: {
                lineStyle: {
                  color: "#e9e9e9",
                },
              },
              splitLine: {
                show: true,
                lineStyle: {
                  color: "#f7f7f7",
                },
              },
              axisTick: {
                show: false,
              },
              // x 轴显示的数据,日期
              data: [
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
                19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
              ],
            },
          ],
          yAxis: [
            {
              boundaryGap: false,
              type: "value",
              axisLabel: {
                textStyle: {
                  color: "#bfbfbf",
                },
                formatter: `{value}\u2103`,
              },
              nameTextStyle: {
                color: "#fff",
                fontSize: 12,
                lineHeight: 40,
              },
              splitLine: {
                lineStyle: {
                  color: "#f7f7f7",
                },
              },
              axisLine: {
                show: true,
                lineStyle: {
                  color: "#e9e9e9",
                },
              },
              axisTick: {
                show: false,
              },
            },
          ],
          series: [
            {
              name: "天气",
              type: "line",
              smooth: false,
              showSymbol: false,
              symbolSize: 0,
              zlevel: 3,
              itemStyle: {
                color: "#ff6600",
                borderColor: "#a3c8d8",
              },
              lineStyle: {
                normal: {
                  width: 3,
                  color: "#ff6600",
                },
              },
              areaStyle: {
                normal: {
                  color: new echarts.graphic.LinearGradient(
                    0,
                    0,
                    0,
                    1,
                    [
                      {
                        offset: 0,
                        color: "#ff6600",
                      },
                      {
                        offset: 0.8,
                        color: "#ff9900",
                      },
                    ],
                    false
                  ),
                },
              },
              //  Y 轴显示的数据,即温度数据
              data: [
                23, 19, 30, 31, 18, 20, 16, 15, 23, 27, 29, 30, 32, 23, 25, 20,
                22, 24, 34, 24, 21, 26, 23, 24, 25, 23, 25, 28, 32, 20,
              ],
            },
          ],
        };

        // 调用此方法设置 echarts 数据
        this.chart.setOption(this.chartOptions);
      },
    },
  });
</script>

weather.json

[
  {
    "January": [
      -13, -13, -13, -14, -13, -12, -12, -13, -13, -13, -14, -13, -14, -14, -13,
      -13, -13, -13, -13, -13, -13, -13, -12, -12, -11, -11, -11, -11, -12, -12,
      -12
    ]
  },
  {
    "February": [
      -11, -11, -10, -10, -9, -9, -9, -8, -9, -8, -9, -9, -8, -8, -8, -7, -7,
      -6, -6, -6, -6, -6, -6, -5, -5, -4, -4, -3
    ]
  },
  {
    "March": [
      -3, -3, -3, -2, -2, -2, -1, 0, 0, 0, 0, 1, 2, 2, 2, 3, 4, 4, 4, 3, 3, 4,
      4, 5, 5, 6, 7, 7, 7, 8, 7
    ]
  },
  {
    "April": [
      8, 9, 10, 11, 12, 11, 11, 11, 10, 10, 11, 12, 13, 13, 13, 13, 13, 15, 15,
      15, 16, 15, 14, 15, 16, 16, 17, 18, 18, 19
    ]
  },
  {
    "May": [
      18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 21, 21, 22, 22, 21, 22, 22, 22,
      22, 22, 23, 23, 22, 23, 23, 23, 24, 24, 24, 23, 23
    ]
  },
  {
    "June": [
      24, 24, 24, 25, 25, 25, 26, 25, 26, 27, 27, 26, 27, 26, 26, 27, 27, 27,
      28, 28, 28, 27, 28, 26, 28, 28, 28, 28, 29, 29
    ]
  },
  {
    "July": [
      28, 28, 27, 28, 28, 28, 26, 28, 28, 27, 29, 30, 29, 28, 28, 28, 28, 28,
      28, 29, 28, 30, 28, 28, 28, 28, 28, 28, 30, 28, 28
    ]
  },
  {
    "August": [
      28, 28, 27, 28, 28, 28, 26, 28, 28, 27, 29, 28, 29, 28, 28, 28, 28, 28,
      28, 29, 28, 30, 28, 28, 28, 28, 28, 28, 27, 26, 25
    ]
  },
  {
    "September": [
      26, 28, 27, 27, 27, 26, 26, 26, 25, 25, 26, 27, 25, 26, 26, 25, 25, 25,
      24, 25, 24, 24, 24, 22, 23, 22, 21, 21, 21, 20
    ]
  },
  {
    "October": [
      18, 16, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 13, 13, 12, 12, 12, 12,
      11, 11, 11, 10, 9, 9, 8, 9, 9, 8, 7, 7, 6
    ]
  },
  {
    "November": [
      6, 7, 7, 6, 6, 5, 3, 2, 2, 1, 0, 1, 0, 0, -1, 0, -1, -1, -2, -2, -2, -3,
      -3, -4, -4, -4, -4, -5, -6, -6
    ]
  },
  {
    "December": [
      -5, -6, -6, -8, -7, -8, -8, -8, -9, -9, -9, -9, -9, -10, -9, -9, -9, -9,
      -10, -11, -11, -11, -12, -12, -12, -12, -12, -13, -13, -14, -13
    ]
  }
]

css/style.css

* {
  margin: 0;
  padding: 0;
  border: 0;
  list-style: none;
  text-decoration: none;
  color: inherit;
  font-weight: normal;
  font-family: "微软雅黑";
  box-sizing: border-box;
  font-style: normal;
  outline: none;
  -webkit-tap-highlight-color: transparent;
}

body {
  width: 100%;
  overflow-x: hidden;
  background: #f8f8f8;
}
.top-bar {
  width: 100%;
  text-align: center;
  position: relative;
  font-size: 24px;
  color: #333333;
  padding: 8px 0;
}
.container {
  width: 100%;
  padding: 0 0.25rem 1rem 0.25rem;
}

/* 月份 */

.month {
  width: 100%;
  height: auto;
  overflow: hidden;
  padding: 0.4rem 0;
}

.month ul {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.month ul li {
  font-size: 16px;
  color: #999999;
  text-align: center;
  width: 60px;
  margin: 0 0.2rem;
  cursor: pointer;
}

.month ul li.active {
  color: #ff6600;
  padding: 10px;
  background: #fff1e5;
  border-radius: 5px;
}

.chart {
  width: 100%;
  height: auto;
  overflow: hidden;
  background: #ffffff;
  padding: 0.35rem 0.3rem;
  margin-top: 0.4rem;
  border-radius: 0.2rem;
}

.chart .title {
  width: 100%;
  height: auto;
  overflow: hidden;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.chart .title h3 {
  font-size: 20px;
  color: #333333;
  font-weight: bold;
}

.chart .title .type {
  display: flex;
  align-items: center;
}

.chart .title .type span {
  width: 60px;
  height: 30px;
  line-height: 30px;
  text-align: center;
  font-size: 16px;
  color: #bcbcbc;
  background: #f7f7f7;
  cursor: pointer;
}

.chart .title .type span.active {
  color: #ff6600;
  background: #fff1e5;
  border-radius: 5px;
}

.chart .title .type span:first-child {
  border-radius: 0.1rem 0 0 0.1rem;
}

.chart .title .type span:last-child {
  border-radius: 0 0.1rem 0.1rem 0;
}

.chart #chart {
  width: 1000px;
  height: 600px;
  margin: 0 auto;
}

五、完成

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>天气趋势</title>
    <meta
      name="viewport"
      content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"
    />
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <script src="./js/axios.js"></script>
    <script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
    <script
      src="js/echarts.min.js"
      type="text/javascript"
      charset="utf-8"
    ></script>
  </head>

  <body>
    <div id="app">
      <div class="top-bar">2022年 Y 城全年温度统计图</div>
      <!-- 主体 -->
      <div class="container">
        <!-- 月份 -->
        <div class="month">
          <ul>
            <!-- TODO:待补充代码 在下面的 li 标签中完成 12个月份 (即 monthList) 的渲染  -->
            <li
              v-for="(value,key,index) in monthList"
              @click="changeActive(index)"
              :class="{'active':index==indexMonth}"
            >
              {{value}}
            </li>
          </ul>
        </div>
        <div class="chart">
          <!-- TODO:待补充代码  -->
          <!-- currentMonth  未来七天和本月 tab 切换,只有当前月才显示 -->
          <div v-if="nowMonth==indexMonth" id="currentMonth">
            <div class="title">
              <h3>{{getTypeTitle}}</h3>
              <div class="type">
                <span
                  @click="changeTag"
                  :class="{'active':!isActive}"
                  id="seven"
                  >未来7天</span
                >
                <span
                  @click="changeTag"
                  :class="{'active':isActive}"
                  id="current"
                  >本月</span
                >
              </div>
            </div>
          </div>
          <div id="chart"></div>
        </div>
      </div>
    </div>
  </body>
</html>
<script>
  // TODO:待补充代码
  var vm = new Vue({
    el: "#app",
    data: {
      chart: null, // 图表
      chartOptions: null, // 图表配置项
      typeTitle: "本月天气",
      nowMonth: new Date().getMonth(),
      isActive: true,
      monthList: {
        January: "1月",
        February: "2月",
        March: "3月",
        April: "4月",
        May: "5月",
        June: "6月",
        July: "7月",
        August: "8月",
        September: "9月",
        October: "10月",
        November: "11月",
        December: "12月",
      },
      list: [],
      indexMonth: 0,
    },
    mounted: function () {
      // 初始化 echarts
      this.$nextTick(async () => {
        this.initChart();
        await this.getData();
        this.updateMonthData();
      });
    },
    computed: {
      getTypeTitle() {
        return this.isActive ? "本月天气" : "未来7天天气";
      },
    },
    methods: {
      initChart() {
        // 初始化图表
        this.chart = echarts.init(document.getElementById("chart"));
        // 配置项
        this.chartOptions = {
          grid: {
            top: 35,
            bottom: 5,
            left: 10,
            right: 10,
            containLabel: true,
          },
          tooltip: {
            trigger: "axis",
            axisPointer: {
              lineStyle: {
                color: {
                  type: "linear",
                  x: 0,
                  y: 0,
                  x2: 0,
                  y2: 1,
                  colorStops: [
                    {
                      offset: 0,
                      color: "rgba(255,255,255,0)",
                    },
                    {
                      offset: 0.5,
                      color: "rgba(255,255,255,1)",
                    },
                    {
                      offset: 1,
                      color: "rgba(255,255,255,0)",
                    },
                  ],
                  global: false,
                },
              },
            },
          },
          xAxis: [
            {
              type: "category",
              boundaryGap: false,
              axisLabel: {
                formatter: "{value}",
                fontSize: 12,
                margin: 20,
                textStyle: {
                  color: "#bfbfbf",
                },
              },
              axisLine: {
                lineStyle: {
                  color: "#e9e9e9",
                },
              },
              splitLine: {
                show: true,
                lineStyle: {
                  color: "#f7f7f7",
                },
              },
              axisTick: {
                show: false,
              },
              // x 轴显示的数据,日期
              data: [
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
                19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
              ],
            },
          ],
          yAxis: [
            {
              boundaryGap: false,
              type: "value",
              axisLabel: {
                textStyle: {
                  color: "#bfbfbf",
                },
                formatter: `{value}\u2103`,
              },
              nameTextStyle: {
                color: "#fff",
                fontSize: 12,
                lineHeight: 40,
              },
              splitLine: {
                lineStyle: {
                  color: "#f7f7f7",
                },
              },
              axisLine: {
                show: true,
                lineStyle: {
                  color: "#e9e9e9",
                },
              },
              axisTick: {
                show: false,
              },
            },
          ],
          series: [
            {
              name: "天气",
              type: "line",
              smooth: false,
              showSymbol: false,
              symbolSize: 0,
              zlevel: 3,
              itemStyle: {
                color: "#ff6600",
                borderColor: "#a3c8d8",
              },
              lineStyle: {
                normal: {
                  width: 3,
                  color: "#ff6600",
                },
              },
              areaStyle: {
                normal: {
                  color: new echarts.graphic.LinearGradient(
                    0,
                    0,
                    0,
                    1,
                    [
                      {
                        offset: 0,
                        color: "#ff6600",
                      },
                      {
                        offset: 0.8,
                        color: "#ff9900",
                      },
                    ],
                    false
                  ),
                },
              },
              //  Y 轴显示的数据,即温度数据
              data: [
                23, 19, 30, 31, 18, 20, 16, 15, 23, 27, 29, 30, 32, 23, 25, 20,
                22, 24, 34, 24, 21, 26, 23, 24, 25, 23, 25, 28, 32, 20,
              ],
            },
          ],
        };

        // 调用此方法设置 echarts 数据
        this.chart.setOption(this.chartOptions);
      },
      changeActive(value) {
        this.indexMonth = value;
        //如果当前月分和本月是相同的
        if (this.indexMonth == this.nowMonth) {
          //如果本月是激活的
          if (this.isActive) {
            this.updateMonthData();
          } else {
            this.updateWeekData();
          }
        } else {
          this.updateMonthData();
        }
      },
      updateWeekData() {
        const date = new Date().getDate(); //获取当天的日期
        let index = Object.values(this.list[this.indexMonth])[0];
        const keys = [];
        const values = [];
        for (var i = date; i < date + 7; i++) {
          //如果i大于本月天数则结束
          if (i > index.length) {
            break;
          }
          keys.push(`${this.indexMonth + 1}/${i}`);
          values.push(index[i - 1]);
        }
        if (keys.length < 7) {
          //说明本月结束但是要添加7个数据
          if (this.indexMonth < 11) {
            index = Object.values(this.list[this.indexMonth + 1])[0];
          } else {
            index = Object.values(this.list[0])[0];
          }
          for (var i = 0; keys.length < 7; i++) {
            keys.push(`${this.indexMonth + 2}/${i + 1}`);
            values.push(index[i]);
          }
        }
        this.chartOptions.xAxis[0].data = keys;
        this.chartOptions.series[0].data = values;
        // 调用此方法设置 echarts 数据
        this.chart.setOption(this.chartOptions);
      },
      updateMonthData() {
        const index = Object.values(this.list[this.indexMonth])[0];
        const keys = [];
        const values = [];
        for (item in index) {
          keys.push(item + 1);
          values.push(index[item]);
        }
        this.chartOptions.xAxis[0].data = keys;
        this.chartOptions.series[0].data = values;
        // 调用此方法设置 echarts 数据
        this.chart.setOption(this.chartOptions);
      },
      async getData() {
        const res = await axios({ url: "./js/weather.json" });
        this.list = res.data;
      },
      changeTag() {
        this.isActive = !this.isActive;
        this.isActive ? this.updateMonthData() : this.updateWeekData();
      },
    },
  });
</script>

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

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

相关文章

【Python】一文带你认识 Web 框架之 FastAPI

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

TI DSP芯片C2000系列读取FLASH数据

本文记录如何读取TI芯片的flash数据 进入TI官网下载UNIFLASH工具 点击查看详情 点击下载选项&#xff0c;根据系统下载对应版本 下载完成之后&#xff0c;点击安装。安装完成之后双击图标点开。如果你的板子已经供电&#xff0c;且编程器已经连接好&#xff0c;UNIFLASH会自动…

使用C++处理一行输入未知个数的字符的问题

今天分享一下使用C处理一行输入未知个数的字符的问题。 一&#xff0c;问题描述 在一行输入未知个数字符&#xff0c;以回车结束输入。 二&#xff0c;分析问题 第一种方式使用String类型&#xff0c;直接读入一串字符&#xff0c;这种方法简单高效。第二种方式一个一个字符…

HCIA-DHCP,FTP,Telnet

目录 DHCP&#xff1a; DHCP的优点&#xff1a; DHCP的工作原理 DHCP的配置 DHCP全局地址池案例&#xff1a; FTP FTP介绍 FTP基本配置 Telnet Telnet的应用场景 Telnet设备配置 Telnet配置案例 DHCP&#xff1a; 解决传统手工配置IP的问题&#xff0c;可以实现IP的…

Openlayers优化加载地图瓦片太慢的问题,Openlayers瓦片缓存实现和请求失败瓦片重试功能

专栏目录: OpenLayers入门教程汇总目录 前言 Openlayers默认加载地图瓦片很慢,通过对比使用openlayers和leaflet加载速度,能够明显看到openlayers加载速度比leaflet要慢很多。 通过Openlayers源码发现是因为Openlayers的瓦片加载机制是通过tileQueue瓦片加载队列来顺序加载…

变电所运维云平台在电力系统中的应用

安科瑞虞佳豪 变电所运维云平台可以看做是电力监控系统的网络应用延伸&#xff0c;变电所运维云平台通过互联网&#xff0c;电力运维人员通过手机可以随时随地了解工厂配电系统的运行情况&#xff0c;做到无人值守或者少人值守&#xff0c;同时可以监测用能状况、漏电、线缆异…

基于图像识别框架Airtest的Windows项目自动化测试实践

写在前面 本次分享的内容是基于Airtest实现Windows应用的自动化测试&#xff0c;内容大纲&#xff1a; Airtest框架介绍&#xff1a;Airtest适用项目、Airtest特点、Airtest的优势 Airtest框架组成、原理 Airtest环境搭建及IDE的简单使用 Airtest开展Windows应用自动化测试实…

Navicat恢复数据库连接及查询sql的解决办法

文章目录 如题一. 恢复Navicat数据库连接信息注册表编辑工具 二. 恢复Navicat每个数据库的sql文件等 如题 因为公司给电脑加域&#xff0c;导致使用新的用户账户&#xff0c;原先的很多配置都失效了&#xff0c;本篇是讲述一下如何恢复数据库连接工具Navicat的连接数据。 一.…

300多个日夜的付出,从外包跑路的我,上岸阿里,没人知道我经历了什么

前言&#xff1a; 没有绝对的天才&#xff0c;只有持续不断的付出。对于我们每一个平凡人来说&#xff0c;改变命运只能依靠努力幸运&#xff0c;但如果你不够幸运&#xff0c;那就只能拉高努力的占比。 2023年5月&#xff0c;我有幸成为阿里的一名自动化测试工程师&#xff…

RTSP/Onvif协议安防视频平台EasyNVR服务频繁重启是什么原因?

EasyNVR平台优秀的视频能力在于通过RTSP/ONVIF协议&#xff0c;将前端接入设备的音视频资源进行采集&#xff0c;并转码成适合全平台、全终端分发的视频流格式&#xff0c;包括RTSP、RTMP、FLV、HLS、WebRTC等格式。平台可拓展性强、部署轻快&#xff0c;在安防监控领域有着广泛…

MVVM (Model-View-ViewModel Pattern)

MVVM 模式中有三个核心组件&#xff1a;模型、视图和视图模型。 每个组件的用途不同。 下图显示了这三个组件之间的关系。 在交互层次上&#xff0c;视图“了解”视图模型&#xff0c;视图模型“了解”模型&#xff0c;但模型不知道视图模型&#xff0c;而视图模型不知道视图。…

链表内指定区间反转

题目&#xff1a; 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转&#xff0c;要求时间复杂度 O(n)&#xff0c;空间复杂度 O(1)。 例如&#xff1a; 给出的链表为 1→2→3→4→5→NULL&#xff0c;m2&#xff0c;n4 返回 1→4→3→2→5→NULL 数据范围&#xff…

日常开发中,提升技术的13个建议

前言 1. 打好基础,深入学习语言特性 比如&#xff0c;对于Java程序员来说,要了解Java语言的基本概念和核心特性&#xff0c;包括面向对象编程、集合框架、异常处理、多线程等等。可以通过阅读Java的官方文档、教程、参考书籍或在线资源来学习。 如果最基本的基础都不扎实&…

OOM 如何监控可视化、告警推送、服务自愈

OOM&#xff0c;out of memory&#xff0c;就是内存用完了耗尽了的意思。会触发kernel调用OOM killer杀进程来解除这种状况。 OOM分为虚拟内存OOM和物理内存OOM&#xff0c;两者是不一样的。 虚拟内存OOM发生在用户空间&#xff0c;用户空间分配的就是虚拟内存&#xff0c;不…

【裸机驱动LED】使用汇编代码驱动LED(四)—— 驱动格式开发篇

上一篇使用C语言代码来驱动LED&#xff0c;之前我们是手动设置的每一个寄存器的地址&#xff0c;但是这样的效率太低&#xff0c;而且很麻烦。此时我们注意到同属于 GPIO_CCGRx 这一类的寄存器地址&#xff0c;他们之间都相差 4 个字节。 我们要利用这一特性&#xff0c;将之前…

SciencePub学术 | 【CCF推荐】计算机决策类重点SCIEI征稿中

SciencePub学术 刊源推荐: 【CCF推荐】计算机决策类重点SCI&EI征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; CCF推荐|计算机决策类重点SCI&EI 【期刊简介】IF&#xff1a;3.5-4.0&#xff0c;JCR2区&#xff0c;中科院3/4区…

OpenCV 数据类型及赋值取值

在之前的博客 OpenCV 32F 与 8U Mat数据类型相互转换(C版) 已经提到&#xff0c;OpenCV Mat 类型及对应编号&#xff0c;如下表&#xff1a; 其中C1~C4为通道数&#xff0c;经常使用的数据类型对应如下表所示&#xff1a; 其中&#xff1a; FLT_MAX 3.402823466e38 FLT_MIN …

从亿点点失误,到一点点失误,我是如何做的【工作失误怎么办】

前言 只要我们还在做事&#xff0c;或者说还活着&#xff0c;就没有不犯错的时候。作为一名前端搬砖工&#xff0c;哪怕工作中再仔细小心&#xff0c;也免不了一些失误。 那这是不是说&#xff0c;失误很正常&#xff0c;改了就是嘛&#xff1f; 这么说好像没错。作为失误本…

[Java基础]面向对象-内存解析

因为内存解析篇幅较长&#xff0c;我们单独拿出来讲解。 我们知道&#xff0c;方法执行&#xff0c;其实就对内存的操作&#xff0c;但具体是如何进行的呢&#xff1f;下面我们以生成“圆”为例&#xff0c;从内存的角度解析程序执行过程。 /** * 圆 **/ public class Circle…

5年测试面试要20K,面试三个问题把我打发走了···

都说金三银四&#xff0c;金九银十跳槽涨薪季&#xff0c;我是着急忙慌的准备简历——5年软件测试经验&#xff0c;可独立测试大型产品项目&#xff0c;熟悉项目测试流程…薪资要求&#xff1f;5年测试经验起码能要个20K吧。 我加班肝了一页半简历&#xff0c;投出去一周&…