分类 默认分类 下的文章

技术原理:

   date_trunc() 截断日期函数,完成定时时间语法

实现案例:

select to_char(date_trunc('quarter',add_date),'yyyy-MM') quarter from dr_information group by date_trunc('quarter',add_date) order by quarter desc

select date_trunc('month',now()) +interval '12 h';
//每月1号 12点

select date_trunc('month',now()) + interval '15 d 9 h 30 min';
//每月15号9点半

select date_trunc('day',now()) + interval '9 h';
//每天9点
select date_trunc('day',now()) + interval '7 d';
//每周的今天
select date_trunc('weak',now()) + interval '1d 1minute';
//每周的周二第一分钟

select date_trunc('h',now()) + interval '30 minute';
//每小时

select date_trunc('minute',now()) + interval '30 second';
//每分钟

select date_trunc('minute',now()) + interval '30 minute 30 second';
//每30分钟

select date_trunc('quarter',now()) + interval '15 d 15 h 15 minute 30 second';
//本季度的第15天,15小时 15分 30秒

select date_trunc('quarter',now() ) - interval '1 h';
//每个季度最后一天的晚上11点

select date_trunc('quarter',now() + interval '3 month') - interval '1 h';
//每个季度的最后一天的晚上的11点(从下个季度开始算起)

float: 10^38 1e+38

float:单精度类型,精度是8位有效数字,取值范围是10的-38次方到10的38次方,float占用4个字节的存储空间。
也就是说(1的后面38个零)

double:双精度类型,精度是17位有效数字,取值范围是10的-308次方到10的308次方,double占用8个字节的存储空间
也就是说(1的后面308个零)

网友1:
一般情况下float即可以满足实数计算要求,当你的精度要求非常小的时候,比如1e-6的时候就可以考虑用double了,float和double主要的区别就是精度问题

网友2:
类型 符号位 阶码 尾数 长度
float 1 8 23 32
double 1 11 52 64
double 和 float 的区别是 double 精度高,有效数字 16 位,float 精度 7 位。但 double 消耗内存是 float 的两倍,double 的运算速度比 float 慢得多,能用单精度时不要用双精度(以省内存,加快运算速度)。

#include <iostream>

include <iomanip>

using namespace std;

int main()
{

float a=12.257902012398877;
double b=12.257902012398877;
const float PI=3.1415926;         // 常量定义
cout<<setprecision(15)<<a<<endl;  // 只有6-7位有效数字,后面的就不精确
cout<<setprecision(15)<<b<<endl;  // 有15-16位有效数字,所以完全正确
cout<<setprecision(15)<<PI<<endl; 
return 0;

通俗的解释一下多线程

多线程用于堆积处理,就像一个大土堆,一个推土机很慢,那么10个推土机一起来处理,当然速度就快了,不过由于位置的限制,如果20个推土机,那么推土机之间会产生相互的避让,相互摩擦,相互拥挤,反而不如10个处理的好,所以,多线程处理,线程数要开的恰当,就可以提高效率。

- 阅读剩余部分 -

今天碰见一个版本冲突问题具体冲突如下:

An attempt was made to call a method that does not exist.
The attempt was made from the following location:

com.baomidou.mybatisplus.core.MybatisMapperAnnotationBuilder.getLanguageDriver
(MybatisMapperAnnotationBuilder.java:369)

The following method did not exist:

com.baomidou.mybatisplus.core.MybatisConfiguration.getLanguageDriver
(Ljava/lang/Class;)Lorg/apache/ibatis/scripting/LanguageDriver;

The method's class, com.baomidou.mybatisplus.core.MybatisConfiguration,
is available from the following locations:
当时的spirngboot版本和mybatis版本如下:(这是修改以后又重新指定了一下mybatis的版本指定为最新版本的了。)

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.7.RELEASE</version>
    <relativePath/>
</parent>
<!--定义版本-->
<properties>
  <mybatis.plus.starter.version>3.1.1</mybatis.plus.starter.version>
</properties>
<!--解决myabatis版本冲突问题-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatis.plus.starter.version}</version>

</dependency>
是这个方法找不到,然后我就添加了如下配置:(最后解决问题)
<parent>

    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.7.RELEASE</version>
    <relativePath/>
</parent>

<!--定义版本-->
<properties>
  <mybatis.plus.starter.version>3.1.1</mybatis.plus.starter.version>
</properties>

        <!--解决myabatis版本冲突问题-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis.plus.starter.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>mybatis</artifactId>
                    <groupId>org.mybatis</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>