编程遇到的问题

常见问题

随机数种子问题:

在随机数生成那一块写sase方法的构造是遇到的问题

Random 通常用来作为随机数生成器,它有两个构造方法:

        Random random = new Random();
        Random random2 = new Random(50);

1.不含参构造方法:

public Random() {
    setSeed(System.nanoTime() + seedBase);
    ++seedBase;
}

2.含参构造方法:

public Random(long seed) {
    setSeed(seed);
}

都调用的 setSeed 方法

public synchronized void setSeed(long seed) {
    this.seed = (seed ^ multiplier) & ((1L << 48) - 1);
    haveNextNextGaussian = false;
}

可以看到,不含参构造方法每次都使用当前时间作为种子,而含参构造方法是以一个固定值作为种子

那么什么是seed种子?

seed 是 Random 生成随机数时使用的参数:

Random 中最重要的就是 next(int) 方法,使用 seed 进行计算:

protected synchronized int next(int bits) {
    seed = (seed * multiplier + 0xbL) & ((1L << 48) - 1);
    return (int) (seed >>> (48 - bits));
}

举个例子

@Test
public void testRandomParameter(){
    System.out.println("Random 不含参构造方法:");
    for (int i = 0; i < 5; i++) {
        Random random = new Random();
        for (int j = 0; j < 8; j++) {
            System.out.print(" " + random.nextInt(100) + ", ");
        }

        System.out.println("");
    }

    System.out.println("");

    System.out.println("Random 含参构造方法:");
    for (int i = 0; i < 5; i++) {
        Random random = new Random(50);
        for (int j = 0; j < 8; j++) {
            System.out.print(" " + random.nextInt(100) + ", ");
        }
        System.out.println("");
    }
}

总结:

  • 随机数是种子经过计算生成的
  • 不含参的构造函数每次都使用当前时间作为种子,随机性更强
  • 而含参的构造函数其实是伪随机,更有可预见性

Mysql中字段名字与保留字冲突

当数据库中起的名字与保留字冲突时会出现如下错误:

修改方式将名字用``(TAB上面的键)括起来

Vue中data 数组更新后页面不同步动态渲染更新问题解决思路

首先由于 JavaScript 的限制 Vue 不能检测以下数组的变动,因此如果像变动ranking.data.name的值就不能直接使用ranking.data[0].name = "dabc",这样会导致后台更新但是页面不会对其进行渲染。

深入响应式原理 — Vue.js (vuejs.org)

在研究了文档以及自己代码后,对项目中遇到的问题进行总结。

data() {
  return {
    ranking: {
      data: [
        {
          name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
          value: 55
        },
        {
          name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
          value: 120
        },
        {
          name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
          value: 78
        },
        {
          name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
          value: 66
        },
        {
          name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
          value: 80
        },
        {
          name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
          value: 80
        },
        {
          name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
          value: 80
        },
        {
          name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
          value: 80
        },
        {
          name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
          value: 80
        },
        {
          name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
          value: 80
        }
      ],
      carousel: 'single',
      unit: '大帧'
    },
    water: {
      data: [20],
      shape: 'roundRect',
      formatter: '{value}%',
      waveNum: 2
    },
  }
}
  • 所写项目变量类型分为两种:

    • ranking: {
        data: [
          {
            name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
            value: 55
          },
          {
            name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
            value: 120
          },
          {
            name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
            value: 78
          }
          ],
          carousel: 'single',
          unit: '大帧'
         }
         
        
      

      不能直接定位到对象,写法是:

      let temp = {
        data: [
          {
            name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
            value: 55
          },
          {
            name: '2022/06/03 12:33:13 - 2022/06/03 13:55:13',
            value: 120
          }
          ],
          carousel: 'single',
          unit: '大帧'
        };
        for (let i = 0; i < data.data.length ; i++) {
            temp.data[i].name = data.data[i].timeString;
            temp.data[i].value = data.data[i].numProcessedFrame;
        }
        this.ranking = temp;
        Vue.set(this.ranking,temp);
      

      定义一个一模一样的对象,对该对象进行操作,最后通过Vue.set的方式将temp值赋给ranking

    • 第二种为直接能够定位到对象

            rate: [
              {
                id: 'centerRate1',
                tips: 60,
                colorData: {
                  textStyle: '#3fc0fb',
                  series: {
                    color: ['#00bcd44a', 'transparent'],
                    dataColor: {
                      normal: '#03a9f4',
                      shadowColor: '#97e2f5'
                    }
                  }
                }
              },
              {
                id: 'centerRate2',
                tips: 40,
                colorData: {
                  textStyle: '#67e0e3',
                  series: {
                    color: ['#faf3a378', 'transparent'],
                    dataColor: {
                      normal: '#ff9800',
                      shadowColor: '#fcebad'
                    }
                  }
                }
              }
            ]
      
          this.$set(this.rate[1],'tips',data.data[1]);
          this.$set(this.rate[0],'tips',data.data[2]);
      

​ 直接通过key值赋给相应的对象

MyBatis中xml文件中的大于 大于等于 小于 小于等于 写法

原始sql

select sc_grade,  case
    when sc_grade >0   and sc_grade <60   then '不及格'
    when sc_grade >=60 and sc_grade <=70  then '及格'
    when sc_grade >70  and sc_grade <=80  then '良好'
    when sc_grade >80  and sc_grade <=90  then '中等'
    when sc_grade >90  and sc_grade <=100 then '优秀'
    else '其他' end as grade_rank 
from t_student_course where sc_date='2019-06-06' and course_id='2'

xml中的写法

写法1:

原符号 < <= > >= & ' "

替换符号 < <= > >= & ' "

select sc_grade, case
		when sc_grade &gt;= 0  and sc_grade &lt;  60 then '不及格'
		when sc_grade &gt;= 60 and sc_grade &lt;= 70 then '及格'
		when sc_grade &gt;= 70 and sc_grade &lt;= 80 then '良好'
		when sc_grade &gt;= 80 and sc_grade &lt;= 90 then '中等'
		when sc_grade &gt;= 90 and sc_grade &lt;= 100 then '优秀'
		else '其他' end as grade_rank 
from t_student_course where sc_date=#{sc_date} and course_id=#{course_id}

写法2:

 >= 的写法      <![CDATA[ >= ]]>

 <= 的写法      <![CDATA[ <= ]]>
select sc_grade, case
	 when sc_grade <![CDATA[ >= ]]> 0 and sc_grade <![CDATA[ < ]]>   60 then '不及格'
	 when sc_grade <![CDATA[ >= ]]> 60 and sc_grade <![CDATA[ <= ]]> 70 then '及格'
	 when sc_grade <![CDATA[ > ]]>  70 and sc_grade <![CDATA[ <= ]]> 80 then '良好'
	 when sc_grade <![CDATA[ > ]]>  80 and sc_grade <![CDATA[ <= ]]> 90 then '中等'
	 when sc_grade <![CDATA[ > ]]>  90 and sc_grade <![CDATA[ <= ]]> 100 then '优秀'
	 else '其他' end as grade_rank 
from t_student_course where sc_date=#{sc_date} and course_id=#{course_id}

原博客位置:(14条消息) MyBatis中xml文件中的大于 大于等于 小于 小于等于 写法_Clancye的博客-CSDN博客_xml 小于等于

posted @ 2022-10-26 10:05  zqy123  阅读(21)  评论(0编辑  收藏  举报