C++常见编译WARNING小结

2023-11-06

首先要说的是大家不要对Warning视而不见,有时候通过Warning确实可以找到一些隐患。其次,未来新增代码应不允许Warning出现,有Warning需要修改掉。以下是常见的Warning小结。

常见十大Warning

1.warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

常见错误写法:

std::vector<int> photo_id;
for (int i = 0; i < photo_id.size(); i++)
{
}
std::string str_cookie(cookie);
int end = str_cookie.find(";");
if (end == std::string::npos)
{
    token = str_cookie.substr(begin + 6);
}
sprintf(buf, "%d\n", getpid());
if (write(fd, buf, strlen(buf)) != strlen(buf))
{
    return false;
}

总结起来就是int使用起来有点随意,没有注意当前的context。

正确写法为:

std::vector<int> photo_id;
for (std::size_t i = 0; i < photo_id.size(); i++)
{
}
std::string str_cookie(cookie);
std::size_t end = str_cookie.find(";");
if (end == std::string::npos)
{
    token = str_cookie.substr(begin + 6);
}
sprintf(buf, "%d\n", getpid());
if ((std::size_t)write(fd, buf, strlen(buf)) != strlen(buf))
{
    return false;
}

2.warning: unused parameter ‘XXX’ [-Wunused-parameter]

未使用的变量的Warning,比如以下代码,salen变量在函数里面都没有用上。

char* sock_ntop_ip(const struct sockaddr* sa, socklen_t salen)
{
    static char str[128];       /* Unix domain is largest */

    switch (sa->sa_family)
    {
        case AF_INET:
        {
            struct sockaddr_in*  sin = (struct sockaddr_in*) sa;

            if (inet_ntop(AF_INET, &sin->sin_addr, str, sizeof(str)) == NULL)
            {
                return (NULL);
            }
            return (str);
        }
        case AF_INET6:
        {
            struct sockaddr_in6* sin6 = (struct sockaddr_in6*) sa;

            str[0] = '[';
            if (inet_ntop(AF_INET6, &sin6->sin6_addr, str + 1, sizeof(str) - 1) == NULL) //??ֵ
            {
                return (NULL);
            }
            strcat(str, "]");
            return (str);
        }
		default:
            return (NULL);
    }
}

一般两种解决方法,一种是去掉该变量,一种是使用(void)方法。

char* sock_ntop_ip(const struct sockaddr* sa, socklen_t salen)
{
    (void)salen; //warning: unused parameter
    。。。。。。
}

3.warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

比如代码:

int bs_reserve(int fd, BSJ **result) {
    return bs_reserve_job(fd, "reserve\r\n", result);
}
int bs_reserve_job(int fd, char *command, BSJ **result);

修正方法:

int bs_reserve(int fd, BSJ **result) {
    char command[] = "reserve\r\n";
    return bs_reserve_job(fd, command, result);
}

4.warning: “XXXX” redefined

比如以下代码:

PersonnalDeviceSetting.cpp定义了宏
#define PER_DEV_SQL_SECTION "ID,Type,Node,MAC,IPAddress,\
PrivatekeyMD5,RfidMD5,ConfigMD5,ContactMD5,SipAccount,SipPwd,ExpireTime<now() as  ExpireTime,NetGroupNumber,\
Location, RtspPwd, Flag,StairShow,Relay,Config,Community,DclientVer,SipType,FaceMD5"

然而PersonnalDeviceSetting.h也定义了宏,造成了重复定义
#define PER_DEV_SQL_SECTION "ID,Type,Node,MAC,IPAddress,\
PrivatekeyMD5,RfidMD5,ConfigMD5,ContactMD5,SipAccount,SipPwd,ExpireTime<now() as  ExpireTime,NetGroupNumber,\
Location, RtspPwd, Flag,StairShow"

解决方法:去掉PersonnalDeviceSetting.h的宏定义

这种问题隐患较大,容易给开发人员带来困扰。

5.warning: no return statement in function returning non-void [-Wreturn-type]

这个Warning也比较常见,函数定义了返回值,但是实际没有返回值,隐患也比较大。

比如代码:

int CKafakProducer::ProduceMsg(KafkaProduceMsgPtr msg)
{
    std::unique_lock<std::mutex> lock(msg_mutex_);
    msg_list_.push_back(msg);
    condition_var_.notify_all();
}

如果外面有判断ProduceMsg的返回值,那么可能会带来不可预料的错误。修改方法,增返回值:

int CKafakProducer::ProduceMsg(KafkaProduceMsgPtr msg)
{
    std::unique_lock<std::mutex> lock(msg_mutex_);
    msg_list_.push_back(msg);
    condition_var_.notify_all();
    return 0;
}

6.warning: missing initializer for member

常见错误写法如下:

CacheConnectInfo info = {0};

有什么问题呢,比如代码

#include <iostream>

struct S {
  int a;
  int b;
};

int main() {
  S s { 1 }; // b will be automatically set to 0
             // and that's probably(?) not what you want
  std::cout<<"s.a = "<<s.a<<", s.b = "<<s.b<<std::endl;
}

结果输出是a=1,b=0,不是你预想的a=1,b=1。

所以避免这样的初始化,修正为:

CacheConnectInfo info;
memset(&info, 0, sizeof(info));

7.warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘uint64_t {aka long unsigned int}’ [-Wformat=]

代码如下:

int CDeviceControl::SendRequestReboot(const evpp::TCPConnPtr& conn, const std::string& mac)
{
    uint64_t traceid = AKCS::Singleton<AKCS::SnowflakeIdWorker>::instance().getId();

    //发送REMOTE_CONTROL消息
    SOCKET_MSG_REMOTE_CONTROL remoteControlMsg;
    memset(&remoteControlMsg, 0, sizeof(SOCKET_MSG_REMOTE_CONTROL));
    strncpy(remoteControlMsg.szProtocal, PROTOCAL_NAME_DEFAULT, sizeof(remoteControlMsg.szProtocal) - 1);
    strncpy(remoteControlMsg.szType, SOCKET_MSG_TYPE_NAME_REBOOT, sizeof(remoteControlMsg.szType) - 1);
    ::snprintf(remoteControlMsg.szItem[0], sizeof(remoteControlMsg.szItem[0]), "%d", traceid);
}

修改为”%” PRId64,代码如下:

int CDeviceControl::SendRequestReboot(const evpp::TCPConnPtr& conn, const std::string& mac)
{
    uint64_t traceid = AKCS::Singleton<AKCS::SnowflakeIdWorker>::instance().getId();

    //发送REMOTE_CONTROL消息
    SOCKET_MSG_REMOTE_CONTROL remoteControlMsg;
    memset(&remoteControlMsg, 0, sizeof(SOCKET_MSG_REMOTE_CONTROL));
    strncpy(remoteControlMsg.szProtocal, PROTOCAL_NAME_DEFAULT, sizeof(remoteControlMsg.szProtocal) - 1);
    strncpy(remoteControlMsg.szType, SOCKET_MSG_TYPE_NAME_REBOOT, sizeof(remoteControlMsg.szType) - 1);
    ::snprintf(remoteControlMsg.szItem[0], sizeof(remoteControlMsg.szItem[0]), "%" PRId64, traceid);
}

8.warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date.

比如代码:

In file included from /usr/include/c++/4.8/ext/hash_map:60:0, from /root/.jenkins/workspace/akcs_csmain_v5.4.0.0/csmain/build/../../csbase/redis/ostype.h:39, from /root/.jenkins/workspace/akcs_csmain_v5.4.0.0/csmain/build/../../csbase/redis/ThreadPool.h:9, from /root/.jenkins/workspace/akcs_csmain_v5.4.0.0/csmain/build/../../csbase/redis/CachePool.h:13, from AKCSServerMain.cpp:32:

修改方法cppflag增加-Wno-deprecated,当然最好的方法是找到过时的头文件,并修改掉。

9.warning: operation on ‘pC’ may be undefined [-Wsequence-point]

比较少见,问题出现在以下代码:

for (int k = 0; k < nPixelSize; ++k)
{
    *tmp++ = (unsigned char)(int)(
                 (B * N * (*pA++ - *pB - *pC + *pD) + dw * N * *pB++
                  + dh * B * *pC++ + (dw * dh - dh * B - dw * N) * *pD++
                  + dw * dh / 2) / (dw * dh));
}

修改方法:

for (int k = 0; k < nPixelSize; ++k)
{
    *tmp++ = (unsigned char)(int)(
                 (B * N * (*pA - *pB - *pC + *pD) + dw * N * *pB
                  + dh * B * *pC + (dw * dh - dh * B - dw * N) * *pD
                  + dw * dh / 2) / (dw * dh));
	pA++;
	pB++;
	pC++;
	pD++;
}

CMakefile写的不好带来的Warning

1.Policy CMP0015 is not set: link_directories() treats paths relative to the source dir

比如csroute的CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

project (route C CXX)
SET(DEPENDENT_LIBRARIES libcsbase.a pthread libhiredis.a libevent.so libglog.so libmysqlclient.so libevpp.so libevnsq.so libprotobuf.so libetcd-cpp-api.so libcpprest.so libboost_system.so libssl.so libcrypto.so libgpr.so libgrpc.so libgrpc++.so libcppkafka.so
 librdkafka.so librdkafka++.so libz.so libdl.so)
LINK_DIRECTORIES(../csbase ../csbase/thirdlib ../csbase/redis/hiredis ../csbase/evpp/lib /usr/local/lib)

AUX_SOURCE_DIRECTORY(./ SRC_LIST_ROUTE)
AUX_SOURCE_DIRECTORY(./dao SRC_LIST_ROUTE_DAO)
AUX_SOURCE_DIRECTORY(../csbase/encrypt SRC_LIST_BASE_ENCRYPT)
AUX_SOURCE_DIRECTORY(../csbase/Rldb SRC_LIST_BASE_RLDB)
AUX_SOURCE_DIRECTORY(../csbase/redis SRC_LIST_BASE_REDIS)
AUX_SOURCE_DIRECTORY(../csbase/protobuf SRC_LIST_BASE_PROTOBUF)
AUX_SOURCE_DIRECTORY(../csbase/etcd SRC_LIST_BASE_ETCD)
AUX_SOURCE_DIRECTORY(../csbase/grpc SRC_LIST_BASE_GRPC)
AUX_SOURCE_DIRECTORY(../csbase/grpc/cssession SRC_LIST_BASE_GRPC_SESSION)
AUX_SOURCE_DIRECTORY(../csbase/session SRC_LIST_BASE_SESSION)
AUX_SOURCE_DIRECTORY(../csbase/redis SRC_LIST_BASE_REDIS)
AUX_SOURCE_DIRECTORY(../csbase/jsoncpp0.5/src/json SRC_LIST_BASE_JSONCPP)
SET(BASE_LIST_INC ../csbase ../csbase/mysql/include ../csbase/Rldb ../csbase/evpp ../csbase/protobuf ../csbase/etcd ../csbase/session ../csbase/grpc/cssession 
                  ../csbase/redis ../csbase/grpc ../csbase/jsoncpp0.5/include ../csbae/encrypt ../csbase/grpc/gens)

ADD_DEFINITIONS( -std=c++11 -g -W -Wall -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DAC_HAS_INFO
-DAC_HAS_WARNING -DAC_HAS_ERROR -DAC_HAS_CRITICAL -DTIXML_USE_STL -DAC_HAS_DEBUG -DLINUX_DAEMON
-DCARES_STATICLIB -DGFLAGS_IS_A_DLL=0 -DPB_FIELD_16BIT -D_TURN_OFF_PLATFORM_STRING -Wno-unused-parameter)
                           
include_directories( ${BASE_LIST_INC} ./dao)

add_executable(csroute ${SRC_LIST_ROUTE} ${SRC_LIST_ROUTE_DAO} ${SRC_LIST_BASE_ENCRYPT} ${SRC_LIST_BASE_RLDB} ${SRC_LIST_BASE_REDIS} ${SRC_LIST_BASE_PROTOBUF} ${SRC_LIST_BASE_ETCD} ${SRC_LIST_BASE_SESSION} ${SRC_LIST_BASE_GRPC_SESSION} ${SRC_LIST_BASE_REDIS} ${SRC_LIST_BASE_GRPC} ${SRC_LIST_BASE_JSONCPP})
target_link_libraries(csroute  ${DEPENDENT_LIBRARIES})

修改方法,使用变量${CMAKE_CURRENT_SOURCE_DIR},这个变量的意思是CMakeLists.txt的所在目录

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

project (route C CXX)
SET(DEPENDENT_LIBRARIES libcsbase.a pthread libhiredis.a libevent.so libglog.so libmysqlclient.so libevpp.so libevnsq.so libprotobuf.so libetcd-cpp-api.so libcpprest.so libboost_system.so libssl.so libcrypto.so libgpr.so libgrpc.so libgrpc++.so libcppkafka.so
 librdkafka.so librdkafka++.so libz.so libdl.so)
SET(BASE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../)
LINK_DIRECTORIES(${BASE_SOURCE_DIR}/csbase ${BASE_SOURCE_DIR}/csbase/thirdlib ${BASE_SOURCE_DIR}/csbase/redis/hiredis ${BASE_SOURCE_DIR}/csbase/evpp/lib /usr/local/lib)

AUX_SOURCE_DIRECTORY(./ SRC_LIST_ROUTE)
AUX_SOURCE_DIRECTORY(./dao SRC_LIST_ROUTE_DAO)
AUX_SOURCE_DIRECTORY(../csbase/encrypt SRC_LIST_BASE_ENCRYPT)
AUX_SOURCE_DIRECTORY(../csbase/Rldb SRC_LIST_BASE_RLDB)
AUX_SOURCE_DIRECTORY(../csbase/redis SRC_LIST_BASE_REDIS)
AUX_SOURCE_DIRECTORY(../csbase/protobuf SRC_LIST_BASE_PROTOBUF)
AUX_SOURCE_DIRECTORY(../csbase/etcd SRC_LIST_BASE_ETCD)
AUX_SOURCE_DIRECTORY(../csbase/grpc SRC_LIST_BASE_GRPC)
AUX_SOURCE_DIRECTORY(../csbase/grpc/cssession SRC_LIST_BASE_GRPC_SESSION)
AUX_SOURCE_DIRECTORY(../csbase/session SRC_LIST_BASE_SESSION)
AUX_SOURCE_DIRECTORY(../csbase/redis SRC_LIST_BASE_REDIS)
AUX_SOURCE_DIRECTORY(../csbase/jsoncpp0.5/src/json SRC_LIST_BASE_JSONCPP)
SET(BASE_LIST_INC ${BASE_SOURCE_DIR}/csbase ${BASE_SOURCE_DIR}/csbase/mysql/include ${BASE_SOURCE_DIR}/csbase/Rldb 
                  ${BASE_SOURCE_DIR}/csbase/evpp ${BASE_SOURCE_DIR}/csbase/protobuf ${BASE_SOURCE_DIR}/csbase/etcd ${BASE_SOURCE_DIR}/csbase/session 
				  ${BASE_SOURCE_DIR}/csbase/grpc/cssession ${BASE_SOURCE_DIR}/csbase/redis ${BASE_SOURCE_DIR}/csbase/grpc ${BASE_SOURCE_DIR}/csbase/jsoncpp0.5/include ${BASE_SOURCE_DIR}/csbae/encrypt ${BASE_SOURCE_DIR}/csbase/grpc/gens)

ADD_DEFINITIONS( -std=c++11 -g -W -Wall -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DAC_HAS_INFO
-DAC_HAS_WARNING -DAC_HAS_ERROR -DAC_HAS_CRITICAL -DTIXML_USE_STL -DAC_HAS_DEBUG -DLINUX_DAEMON
-DCARES_STATICLIB -DGFLAGS_IS_A_DLL=0 -DPB_FIELD_16BIT -D_TURN_OFF_PLATFORM_STRING -Wno-unused-parameter -Wno-deprecated)
                           
include_directories( ${BASE_LIST_INC} ./dao)

add_executable(csroute ${SRC_LIST_ROUTE} ${SRC_LIST_ROUTE_DAO} ${SRC_LIST_BASE_ENCRYPT} ${SRC_LIST_BASE_RLDB} ${SRC_LIST_BASE_REDIS} ${SRC_LIST_BASE_PROTOBUF} ${SRC_LIST_BASE_ETCD} ${SRC_LIST_BASE_SESSION} ${SRC_LIST_BASE_GRPC_SESSION} ${SRC_LIST_BASE_REDIS} ${SRC_LIST_BASE_GRPC} ${SRC_LIST_BASE_JSONCPP})
target_link_libraries(csroute  ${DEPENDENT_LIBRARIES})

2.Policy CMP0037 is not set: Target names should not be reserved and should match a validity pattern

比如cspdu2kafkamq的CMakeLists.txt,就会出现这个Warning

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

project (cspdu2kafkamq  CXX)
SET(CSBASE_DIR ../csbase)
SET(DEPENDENT_LIBRARIES libcsbase.a pthread libglog.so libmysqlclient.so libcppkafka.a librdkafka++.a librdkafka.a libdl.so libz.so libcrypto.so libssl.so 
libevpp.so libevnsq.so libglog.so libprotobuf.so)

AUX_SOURCE_DIRECTORY(./src SRC_LIST_PRODUCER)
AUX_SOURCE_DIRECTORY(${CSBASE_DIR}/Rldb SRC_LIST_DB)
AUX_SOURCE_DIRECTORY(${CSBASE_DIR}/nsq SRC_LIST_NSQ)

link_directories(${CMAKE_CURRENT_SOURCE_DIR}/${CSBASE_DIR} 
${CMAKE_CURRENT_SOURCE_DIR}/${CSBASE_DIR}/thirdlib 
${CMAKE_CURRENT_SOURCE_DIR}/${CSBASE_DIR}/redis/hiredis 
${CMAKE_CURRENT_SOURCE_DIR}/${CSBASE_DIR}/evpp/lib /usr/local/lib)


SET(BASE_LIST_INC ${CSBASE_DIR} ${CSBASE_DIR}/mysql/include ${CSBASE_DIR}/Rldb  ${CSBASE_DIR}/librdkafka ${CSBASE_DIR}/cppkafka
${CSBASE_DIR}/nsq ${CSBASE_DIR}/evpp)

ADD_DEFINITIONS( -std=c++11 -g -W -Wall -Wno-unused-parameter -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DAC_HAS_INFO
-DAC_HAS_WARNING -DAC_HAS_ERROR -DAC_HAS_CRITICAL -DTIXML_USE_STL -DAC_HAS_DEBUG -DLINUX_DAEMON)
                           
include_directories( ${BASE_LIST_INC} ./src)

add_executable(./bin/cspdu2kafkamq ${SRC_LIST_PRODUCER} ${SRC_LIST_DB} ${SRC_LIST_NSQ})
target_link_libraries(./bin/cspdu2kafkamq  ${DEPENDENT_LIBRARIES})

问题出在add_executable(./bin/cspdu2kafkamq,修改为

SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)
add_executable(cspdu2kafkamq ${SRC_LIST_PRODUCER} ${SRC_LIST_DB} ${SRC_LIST_NSQ})
target_link_libraries(cspdu2kafkamq  ${DEPENDENT_LIBRARIES})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++常见编译WARNING小结 的相关文章

  • WebStorm2016.2 注册码及激活,2018.6.14亲测有效

    License server激活 这可能是最简单的了 在激活框 选择 License server 输入 http idea iteblog com key php 2018 6 14可用
  • table自定义表格的封装

    前言 对原生的table进行封装 让他满足我们一行显示不同个的需求 实现效果 如图所示 一行显示不同数量的内容 实现代码 1 封装的组件 custom table vue 源码看下面 1 一行显示几个td 2 表头数据 表格数据 3 js封
  • 深度学习python图像标记工具labelTool

    深度学习训练需要标记图像位置和类别 之前用的时候是叫做BBox Label Tool master 遇到大图像就显示不完整了 没有自适应缩放 这是改进后的Python脚本 目录结构 图片目录名images 标签目录名labels 图像目录下
  • JDK 新特性篇:JDK 8 新特性详解

    Java8新特性简介 Java 8 又称为 JDK 1 8 是 Java 语言开发的一个主要版本 Java 8 是 Oracle 公司于 2014 年 3 月发布 可以看成是自 Java 5 以来最具革命性的版本 Java 8 为 Java
  • 函数重载和缺省参数

    函数重载 C 允许在同一作用域类声明几个功能类似的同名函数 但是这些同名函数的形式参数 指参数的个数 类型或者顺序 必须不同 也就是说用同一个运算符完成不同的运算功能 函数重载必须是参数的个数或者类型不同 与返回值无关 在C语言当中是不支持
  • 李宏毅机器学习——梯度下降详细讲解

    文章目录 梯度下降 1 学习率 1 1自适应学习率 1 2 Adagrad算法 2 随机梯度下降 3 特征缩放 3 1 特征缩放原因 3 2 特征缩放方法 4 梯度下降的限制 梯度下降 梯度下降是为了解决回归方程中参数的最优化问题 即表现为
  • STM32F446+OLED12864做贪吃蛇游戏

    上面是我的微信和QQ群 欢迎新朋友的加入 闲暇之余发现看了下OLED12864的数据手册 发现他的显示在Y轴上只有页写 也就是一次写8个点 突然想到 如果自己程序需要精准定位到某个点 那这不是会很艹蛋么 去网上搜索 基本上都是页写的代码 也
  • mysql 自动备份(windows 环境)

    windows环境设置mysql自动备份 测试成功 要实现数据库的自动备份就需要一下两步 一 利用MySQL提供的备份命令mysqldump 结合Windows的任务计划程序 实现步骤 编写脚本 说明 该脚本不会关闭数据库 并且可以按每一天
  • C#强制杀进程

    通过cmd命令实现 using System using System Collections Generic using System Linq using System Text using System Threading Tasks
  • 小波矩特征提取matlab代码

    这是我上研究生时写的小波矩特征提取代码 新归一化方法小波矩特征提取 F imread a1 bmp F im2bw F F imresize F 128 128 求取最上点for i 1 128 for j 1 128 if F i j 1
  • AVPlayer 播放在线视频和本地文件的设置区别

    http blog csdn net u012671808 article details 30500595 comments
  • 动态文件版通讯录及C语言中的文件的读写操作

    上一期我们编写了一个C语言版本的简易通讯录 但是我们的之前的通讯录是没有记忆功能的 也就是说 一旦关闭了程序我们存储在里面的数据也就消失了 那么今天我们就来实现一个附带数据储存的通讯录 在此之前 我们先来了解一下C语言中文件的读写函数 1
  • QT-通过控件ObjectName获取控制

    QT 通过控件ObjectName获取控制 示例 1 说明解释 示例 1 说明解释 代码如下 QString strObjectName QString lineEditDev5IP QLineEdit pLineEdit this gt
  • KVM中的ballooning详解

    KVM中的ballooning详解 1 Ballooning简介 通常来说 要改变客户机占用的宿主机内存 是要先关闭客户机 修改启动时的内存配置 然后重启客户机才能实现 而内存的ballooning 气球 技术可以在客户机运行时动态地调整它
  • kibana数据导入导出_怎么实现kibana的数据导入导出

    匿名用户 1级 2016 10 19 回答 logstash好说 client只需要在代码逻辑改下redis地址就可以了 logstash server直接docker pull镜像就可以了 elasticsearch需要我们自己写脚本迁移
  • 机器翻译 深度学习预处理实战(中英文互译)一

    深度学习预处理实战 中英文互译 文章目录 深度学习预处理实战 中英文互译 前言 一 获取中英互译的数据集 二 具体步骤 1 首先引入相关库 2 中英文预处理 3 主函数运行 前言 基于深度学习的机器翻译学习分为三步 1 解决自动将一种自然语
  • python获取指定时间段内特定规律的日期列表

    前言 写小程序时 遇到个需要自定义回归时间的场景 下面是实现的效果图 于我需求而言 我只需要用到fixed interval weekly per month三个方法返回的回归间隔列表就行 最后的这个make date from list方
  • 开源软件选型分析标准【转载】

    http wenku baidu com view 0f4acf88cc22bcd126ff0ca2 html re view 1 标准和目标 1 1前言目前开源的网管软件众多 时间关系只能通过网络上的资料介绍和其他用户的体验进行评估 对于
  • ROI Pooling层详解

    ROI Pooling层详解 原文链接 https blog deepsense ai region of interest pooling explained 目标检测typical architecture 通常可以分为两个阶段 1 r
  • NO.15 不得不说的以太坊跟ICO

    随着以太坊的出现 区块链进入了2 0时代 以太坊是个太神奇的东西 没有天才的想法 高超的技术以及黑客的精神是无法如此成功的 它实现了区块链项目的快速开发 快速实施 以太坊这个开发平台本身发行了一种币叫做以太币 ETH 使用此平台开发出来的应

随机推荐

  • APS系统介绍

    APS系统介绍 前言 听说新工作将是做APS系统 之前没接触过 所以查找了一些资料 整理学习记录于此 本文打算从以下几个方面来阐述 APS的概念 前提条件 怎么实现 优化算法 简单示例 APS概念 APS Advanced Planning
  • el-table表单实现点击编辑按钮对内容进行编辑

    el table表单实现点击编辑按钮对内容进行编辑 话不多说 先上效果图 这里我将按钮绑定了dialog对话框 避免直接在原有表行之间进行修改 因为后台管理系统多是响应式布局 使用dialog对话框可以更直观的让用户对内容进行编辑 而对于在
  • 【服务计算】docker实践报告

    docker实践报告 环境说明 准备docker环境 运行第一个容器 Docker基本操作 MySQL与容器化 拉取MySQL镜像 构建docker镜像 MySQL容器使用 Docker compose与多容器应用自动化部署 docker网
  • SpringBoot运行源码分析:Spring应用上下文刷新,java主流框架面试题

    protected void refresh ApplicationContext applicationContext Assert isInstanceOf AbstractApplicationContext class applic
  • 【eNSP】单臂路由+静态路由配置练习

    单臂路由 静态路由配置练习 单臂路由 又名子接口 实际上是一个逻辑接口 并不存在真正物理上的子接口 采用单臂路由 即在路由器上设置多个逻辑子接口 每个子接口都可以单独设置一个IP地址 对应于一个VLAN 由于物理路由接口只有一个 各子接口的
  • Flutter 实体类转String,String转实体类

    实体类转String方式 引用需要转换的包 import dart convert 转换方法 String jsonStr jsonEncode myInfosBeans String转实体类 引用转换包 import dart conve
  • render 怎么使用v-if

    在Vue中使用render函数 有些时候我们需要判断这个元素是否需要渲染 在正常的DOM结构中可以直接使用v if 但是 render函数中有些时候是无法使用v if 来进行判断 这时我们可以使用if 来判断是否添加该元素 render h
  • c++ 理解 关于构造函数和析构函数

    构造函数和析构函数 1 首先 C 有拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符和析构函数 构造函数可以先分为 默认构造函数和拷贝构造函数 如果我们在代码中不显示的自己声明构造函数的话 c 的编译器会为我们默认生成默认构造函数
  • STM32之ADC实验

    实验的基本功能 采集PC0引脚的输入电压 通过串口打印出采集的电压值 本实验是使用通道10 采集PC0引脚的输入电压 include stm32f10x h include stm32f10x usart h include
  • mac 卸载idea

    卸载MAC中的IDEA Intellij 首先在应用里面右键移动到垃圾桶 然后使用命令行 cd Users xxx Library 上面的xxx对应你的用户名 然后输入 rm rf Logs IntelliJIdeaxxx rm rf Pr
  • 域名续费怎么才能便宜?2023年腾讯云服务器和域名续费贵怎么续费便宜?

    背景 在腾讯云的有一个域名到期了需要续费 xyz续费居然有79元 真的贵 建议大家在购买域名之前参考我之前的文章 直接买个188元10年的top域名真的香 我是因为小程序都布置好了 如果重新更改域名太累了 所以只能续费 直接续费需要79元
  • 云服务器部署 Web 项目

    一 搭建 Java 部署环境 1 安装 JDK 2 安装 Tomcat 总结 3 安装 MySQL 1 依次安装 2 更改配置 3 启动 4 测试连接 二 部署 web 项目 1 给服务器准备好依赖的数据 2 微调我们的 Java 代码 3
  • Requests模块怎么设置字符编码

    Requests模块在发出网络请求时 支持设置字符编码 主要有以下两种方式 在请求头中设置字符编码 可以通过headers参数设置字符编码 例如 import requests url http www example com header
  • C# SuperSocket 手把手教你入门 傻瓜教程---11(FixedSizeReceiveFilter - 固定请求大小协议)不使用COMMAND

    SuperSocket内置的常用协议实现模版如下 1 TerminatorReceiveFilter SuperSocket SocketBase Protocol TerminatorReceiveFilter SuperSocket S
  • linux命令:修改用户密码

    修改用户密码用passwd命令 假设现在已经用root用户登陆 1 修改root用户密码 在终端直接输入 root armbian passwd New password 输入第一次密码 Retype new password 输入第二次密
  • 3个字节的空txt文本文件

    运行下面代码可以建立一个3个字节的空txt文本文件 想了解其原因的请参考文本文件的编码方式和unicode的具体资料 google上就有很多 System IO FileStream fs new System IO FileStream
  • matlab实现数值积分 【一】(trapz函数)

    目录 总述 函数调用格式 应用举例 例1 梯形法求积分 例2 不同步长对积分结果的影响 总述 数值积分问题是传统数值分析课程中的重要内容 如果被积函数的数学表达式未知 则需要由实测数据通过梯形算法求出积分的近似值 本文将介绍被积函数的数学表
  • 门面设计模式

    github GitHub QiuliangLee pattern 设计模式 1 什么是门面设计模式 门面设计模式是一种软件设计模式 也被称为外观 Facade 模式 它提供了一个简单的接口 让客户端能够访问复杂系统中的一组接口 通过门面模
  • 打包部署也这么内卷--springboot项目的打包及一键服务器部署

    一 环境准备 1 cenos7服务器一台 2 更换yum源 yum install y wget mv etc yum repos d CentOS Base repo etc yum repos d CentOS Base repo ba
  • C++常见编译WARNING小结

    首先要说的是大家不要对Warning视而不见 有时候通过Warning确实可以找到一些隐患 其次 未来新增代码应不允许Warning出现 有Warning需要修改掉 以下是常见的Warning小结 常见十大Warning 1 warning