当前位置: 首页 > news >正文

C++标准模板(STL)- 类型支持 (数值极限,min,lowest,max)

数值极限

提供查询所有基础数值类型的性质的接口

定义于头文件 <limits>

template< class T > class numeric_limits;

numeric_limits 类模板提供查询各种算术类型属性的标准化方式(例如 int 类型的最大可能值是 std::numeric_limits<int>::max() )。
 

成员函数

返回给定类型的最小有限值

std::numeric_limits<T>::min

static T min() throw();

(C++11 前)

static constexpr T min() noexcept;

(C++11 起)

返回数值类型 T 可表示的最小有限值。

对于有非正规的浮点类型, min 返回最小正正规值。注意此行为可能是非预期的,特别是在与 min 对整数类型的行为比较时。为找到没有比它更小的值的值,请用 numeric_limits::lowest 。

min 仅对有界类型和无界无符号类型意义,即表示负值的无限集的类型无有意义的最小值。

返回值

Tstd::numeric_limits<T>::min()
/* non-specialized */T()
boolfalse
charCHAR_MIN
signed charSCHAR_MIN
unsigned char​0​
wchar_tWCHAR_MIN
char8_t​0​
char16_t​0​
char32_t​0​
shortSHRT_MIN
unsigned short​0​
intINT_MIN
unsigned int​0​
longLONG_MIN
unsigned long​0​
long longLLONG_MIN
unsigned long long​0​
floatFLT_MIN
doubleDBL_MIN
long doubleLDBL_MIN

调用示例

#include <iostream>
#include <string>
#include <limits>
#include <cstdint>
#include <cfloat>struct SName
{
};//偏特化
struct SPartSpec
{
};namespace std
{
template<>
struct numeric_limits<SPartSpec>
{static _GLIBCXX_USE_CONSTEXPR bool is_specialized   = true;static _GLIBCXX_USE_CONSTEXPR bool is_signed        = true;static _GLIBCXX_USE_CONSTEXPR bool is_integer       = true;static _GLIBCXX_USE_CONSTEXPR bool is_exact         = true;static _GLIBCXX_USE_CONSTEXPR bool has_infinity     = true;static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN    = true;static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = true;static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm     = denorm_present;static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss  = true;static _GLIBCXX_USE_CONSTEXPR float_round_style round_style     = round_toward_neg_infinity;static _GLIBCXX_USE_CONSTEXPR bool is_iec559        = true;static _GLIBCXX_USE_CONSTEXPR bool is_bounded       = true;static _GLIBCXX_USE_CONSTEXPR bool is_modulo        = true;static _GLIBCXX_USE_CONSTEXPR int  digits           = CHAR_BIT;static _GLIBCXX_USE_CONSTEXPR int  digits10         = CHAR_BIT;static _GLIBCXX_USE_CONSTEXPR int  max_digits10     = DECIMAL_DIG;static _GLIBCXX_USE_CONSTEXPR int  radix            = FLT_RADIX;static _GLIBCXX_USE_CONSTEXPR int  min_exponent     = FLT_MIN_EXP;static _GLIBCXX_USE_CONSTEXPR int  min_exponent10   = FLT_MIN_10_EXP;static _GLIBCXX_USE_CONSTEXPR int  max_exponent     = FLT_MAX_EXP;static _GLIBCXX_USE_CONSTEXPR int  max_exponent10   = FLT_MAX_EXP;static _GLIBCXX_USE_CONSTEXPR bool traps            = true;static _GLIBCXX_USE_CONSTEXPR bool tinyness_before  = true;static _GLIBCXX_CONSTEXPR intmin() _GLIBCXX_USE_NOEXCEPT { return  CHAR_MIN ; }
};
}int main()
{std::cout << std::boolalpha;std::cout << "std::numeric_limits<bool>::min():                 "<< std::numeric_limits<bool>::min() << std::endl;std::cout << "std::numeric_limits<char>::min():                 "<< std::numeric_limits<char>::min() << std::endl;std::cout << "std::numeric_limits<signed char>::min():          "<< std::numeric_limits<signed char>::min() << std::endl;std::cout << "std::numeric_limits<unsigned char>::min():        "<< std::numeric_limits<unsigned char>::min() << std::endl;std::cout << "std::numeric_limits<wchar_t>::min():              "<< std::numeric_limits<wchar_t>::min() << std::endl;std::cout << "std::numeric_limits<char16_t>::min():             "<< std::numeric_limits<char16_t>::min() << std::endl;std::cout << "std::numeric_limits<char32_t>::min():             "<< std::numeric_limits<char32_t>::min() << std::endl;std::cout << "std::numeric_limits<short>::min():                "<< std::numeric_limits<short>::min() << std::endl;std::cout << "std::numeric_limits<unsigned short>::min():       "<< std::numeric_limits<unsigned short>::min() << std::endl;std::cout << "std::numeric_limits<int>::min():                  "<< std::numeric_limits<int>::min() << std::endl;std::cout << "std::numeric_limits<unsigned int>::min():         "<< std::numeric_limits<unsigned int>::min() << std::endl;std::cout << "std::numeric_limits<long>::min():                 "<< std::numeric_limits<long>::min() << std::endl;std::cout << "std::numeric_limits<unsigned long>::min():        "<< std::numeric_limits<unsigned long>::min() << std::endl;std::cout << "std::numeric_limits<long long>::min():            "<< std::numeric_limits<long long>::min() << std::endl;std::cout << "std::numeric_limits<unsigned long long>::min():   "<< std::numeric_limits<unsigned long long>::min() << std::endl;std::cout << "std::numeric_limits<float>::min():                "<< std::numeric_limits<float>::min() << std::endl;std::cout << "std::numeric_limits<double>::min():               "<< std::numeric_limits<double>::min() << std::endl;std::cout << "std::numeric_limits<long double>::min():          "<< std::numeric_limits<long double>::min() << std::endl;std::cout << "std::numeric_limits<std::string>::min():          "<< std::numeric_limits<std::string>::min() << std::endl;//必须偏特化
//    std::cout << "std::numeric_limits<SName>::min():                "
//              << std::numeric_limits<SName>::min() << std::endl;std::cout << "std::numeric_limits<SPartSpec>::min():            "<< std::numeric_limits<SPartSpec>::min() << std::endl;return 0;
}

输出

 

返回给定类型的最低有限值

std::numeric_limits<T>::lowest

static constexpr T lowest() noexcept;

(C++11 起)

返回数值类型 T 可表示的最低有限值,即满足无其他有限值 y 符合 y < x 的有限值 x 。这对于浮点类型不同于 std::numeric_limits<T>::min() 。仅对有界类型有意义。 

返回值

Tstd::numeric_limits<T>::lowest()
/* non-specialized */T();
boolfalse
charCHAR_MIN
signed charSCHAR_MIN
unsigned char​0​
wchar_tWCHAR_MIN
char8_t​0​
char16_t​0​
char32_t​0​
shortSHRT_MIN
unsigned short​0​
intINT_MIN
unsigned int​0​
longLONG_MIN
unsigned long​0​
long longLLONG_MIN
unsigned long long​0​
float-FLT_MAX
double-DBL_MAX
long double-LDBL_MAX

注意

尽管对于基础 C++ 浮点类型非真,可存在满足 std::numeric_limits<T>::lowest() != -std::numeric_limits<T>::max() 的第三方浮点类型 T 。\

调用示例

#include <iostream>
#include <string>
#include <limits>
#include <cstdint>
#include <cfloat>struct SName
{
};//偏特化
struct SPartSpec
{
};namespace std
{
template<>
struct numeric_limits<SPartSpec>
{static _GLIBCXX_USE_CONSTEXPR bool is_specialized   = true;static _GLIBCXX_USE_CONSTEXPR bool is_signed        = true;static _GLIBCXX_USE_CONSTEXPR bool is_integer       = true;static _GLIBCXX_USE_CONSTEXPR bool is_exact         = true;static _GLIBCXX_USE_CONSTEXPR bool has_infinity     = true;static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN    = true;static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = true;static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm     = denorm_present;static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss  = true;static _GLIBCXX_USE_CONSTEXPR float_round_style round_style     = round_toward_neg_infinity;static _GLIBCXX_USE_CONSTEXPR bool is_iec559        = true;static _GLIBCXX_USE_CONSTEXPR bool is_bounded       = true;static _GLIBCXX_USE_CONSTEXPR bool is_modulo        = true;static _GLIBCXX_USE_CONSTEXPR int  digits           = CHAR_BIT;static _GLIBCXX_USE_CONSTEXPR int  digits10         = CHAR_BIT;static _GLIBCXX_USE_CONSTEXPR int  max_digits10     = DECIMAL_DIG;static _GLIBCXX_USE_CONSTEXPR int  radix            = FLT_RADIX;static _GLIBCXX_USE_CONSTEXPR int  min_exponent     = FLT_MIN_EXP;static _GLIBCXX_USE_CONSTEXPR int  min_exponent10   = FLT_MIN_10_EXP;static _GLIBCXX_USE_CONSTEXPR int  max_exponent     = FLT_MAX_EXP;static _GLIBCXX_USE_CONSTEXPR int  max_exponent10   = FLT_MAX_EXP;static _GLIBCXX_USE_CONSTEXPR bool traps            = true;static _GLIBCXX_USE_CONSTEXPR bool tinyness_before  = true;static _GLIBCXX_CONSTEXPR intmin() _GLIBCXX_USE_NOEXCEPT { return  CHAR_MIN ; }static _GLIBCXX_CONSTEXPR intlowest() _GLIBCXX_USE_NOEXCEPT { return  CHAR_MIN ; }
};
}int main()
{std::cout << std::boolalpha;std::cout << "std::numeric_limits<bool>::lowest():                 "<< std::numeric_limits<bool>::lowest() << std::endl;std::cout << "std::numeric_limits<char>::lowest():                 "<< std::numeric_limits<char>::lowest() << std::endl;std::cout << "std::numeric_limits<signed char>::lowest():          "<< std::numeric_limits<signed char>::lowest() << std::endl;std::cout << "std::numeric_limits<unsigned char>::lowest():        "<< std::numeric_limits<unsigned char>::lowest() << std::endl;std::cout << "std::numeric_limits<wchar_t>::lowest():              "<< std::numeric_limits<wchar_t>::lowest() << std::endl;std::cout << "std::numeric_limits<char16_t>::lowest():             "<< std::numeric_limits<char16_t>::lowest() << std::endl;std::cout << "std::numeric_limits<char32_t>::lowest():             "<< std::numeric_limits<char32_t>::lowest() << std::endl;std::cout << "std::numeric_limits<short>::lowest():                "<< std::numeric_limits<short>::lowest() << std::endl;std::cout << "std::numeric_limits<unsigned short>::lowest():       "<< std::numeric_limits<unsigned short>::lowest() << std::endl;std::cout << "std::numeric_limits<int>::lowest():                  "<< std::numeric_limits<int>::lowest() << std::endl;std::cout << "std::numeric_limits<unsigned int>::lowest():         "<< std::numeric_limits<unsigned int>::lowest() << std::endl;std::cout << "std::numeric_limits<long>::lowest():                 "<< std::numeric_limits<long>::lowest() << std::endl;std::cout << "std::numeric_limits<unsigned long>::lowest():        "<< std::numeric_limits<unsigned long>::lowest() << std::endl;std::cout << "std::numeric_limits<long long>::lowest():            "<< std::numeric_limits<long long>::lowest() << std::endl;std::cout << "std::numeric_limits<unsigned long long>::lowest():   "<< std::numeric_limits<unsigned long long>::lowest() << std::endl;std::cout << "std::numeric_limits<float>::lowest():                "<< std::numeric_limits<float>::lowest() << std::endl;std::cout << "std::numeric_limits<double>::lowest():               "<< std::numeric_limits<double>::lowest() << std::endl;std::cout << "std::numeric_limits<long double>::lowest():          "<< std::numeric_limits<long double>::lowest() << std::endl;std::cout << "std::numeric_limits<std::string>::lowest():          "<< std::numeric_limits<std::string>::lowest() << std::endl;//必须偏特化
//    std::cout << "std::numeric_limits<SName>::lowest():                "
//              << std::numeric_limits<SName>::lowest() << std::endl;std::cout << "std::numeric_limits<SPartSpec>::lowest():            "<< std::numeric_limits<SPartSpec>::lowest() << std::endl;return 0;
}

 输出

返回给定类型的最大有限值

std::numeric_limits<T>::max

static T max() throw();

(C++11 前)

static constexpr T max() noexcept;

(C++11 起)

返回数值类型 T 所能表示的最大有限值。对所有有界类型有意义。

返回值

Tstd::numeric_limits<T>::max()
/* non-specialized */T()
booltrue
charCHAR_MAX
signed charSCHAR_MAX
unsigned charUCHAR_MAX
wchar_tWCHAR_MAX
char8_tUCHAR_MAX
char16_tUINT_LEAST16_MAX
char32_tUINT_LEAST32_MAX
shortSHRT_MAX
unsigned shortUSHRT_MAX
intINT_MAX
unsigned intUINT_MAX
longLONG_MAX
unsigned longULONG_MAX
long longLLONG_MAX
unsigned long longULLONG_MAX
floatFLT_MAX
doubleDBL_MAX
long doubleLDBL_MAX

调用示例

#include <iostream>
#include <string>
#include <limits>
#include <cstdint>
#include <cfloat>struct SName
{
};//偏特化
struct SPartSpec
{
};namespace std
{
template<>
struct numeric_limits<SPartSpec>
{static _GLIBCXX_USE_CONSTEXPR bool is_specialized   = true;static _GLIBCXX_USE_CONSTEXPR bool is_signed        = true;static _GLIBCXX_USE_CONSTEXPR bool is_integer       = true;static _GLIBCXX_USE_CONSTEXPR bool is_exact         = true;static _GLIBCXX_USE_CONSTEXPR bool has_infinity     = true;static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN    = true;static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = true;static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm     = denorm_present;static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss  = true;static _GLIBCXX_USE_CONSTEXPR float_round_style round_style     = round_toward_neg_infinity;static _GLIBCXX_USE_CONSTEXPR bool is_iec559        = true;static _GLIBCXX_USE_CONSTEXPR bool is_bounded       = true;static _GLIBCXX_USE_CONSTEXPR bool is_modulo        = true;static _GLIBCXX_USE_CONSTEXPR int  digits           = CHAR_BIT;static _GLIBCXX_USE_CONSTEXPR int  digits10         = CHAR_BIT;static _GLIBCXX_USE_CONSTEXPR int  max_digits10     = DECIMAL_DIG;static _GLIBCXX_USE_CONSTEXPR int  radix            = FLT_RADIX;static _GLIBCXX_USE_CONSTEXPR int  min_exponent     = FLT_MIN_EXP;static _GLIBCXX_USE_CONSTEXPR int  min_exponent10   = FLT_MIN_10_EXP;static _GLIBCXX_USE_CONSTEXPR int  max_exponent     = FLT_MAX_EXP;static _GLIBCXX_USE_CONSTEXPR int  max_exponent10   = FLT_MAX_EXP;static _GLIBCXX_USE_CONSTEXPR bool traps            = true;static _GLIBCXX_USE_CONSTEXPR bool tinyness_before  = true;static _GLIBCXX_CONSTEXPR intmin() _GLIBCXX_USE_NOEXCEPT { return  CHAR_MIN ; }static _GLIBCXX_CONSTEXPR intlowest() _GLIBCXX_USE_NOEXCEPT { return  CHAR_MIN ; }static _GLIBCXX_CONSTEXPR intmax() _GLIBCXX_USE_NOEXCEPT { return  CHAR_MAX ; }
};
}int main()
{std::cout << std::boolalpha;std::cout << "std::numeric_limits<bool>::max():                 "<< std::numeric_limits<bool>::max() << std::endl;std::cout << "std::numeric_limits<char>::max():                 "<< std::numeric_limits<char>::max() << std::endl;std::cout << "std::numeric_limits<signed char>::max():          "<< std::numeric_limits<signed char>::max() << std::endl;std::cout << "std::numeric_limits<unsigned char>::max():        "<< std::numeric_limits<unsigned char>::max() << std::endl;std::cout << "std::numeric_limits<wchar_t>::max():              "<< std::numeric_limits<wchar_t>::max() << std::endl;std::cout << "std::numeric_limits<char16_t>::max():             "<< std::numeric_limits<char16_t>::max() << std::endl;std::cout << "std::numeric_limits<char32_t>::max():             "<< std::numeric_limits<char32_t>::max() << std::endl;std::cout << "std::numeric_limits<short>::max():                "<< std::numeric_limits<short>::max() << std::endl;std::cout << "std::numeric_limits<unsigned short>::max():       "<< std::numeric_limits<unsigned short>::max() << std::endl;std::cout << "std::numeric_limits<int>::max():                  "<< std::numeric_limits<int>::max() << std::endl;std::cout << "std::numeric_limits<unsigned int>::max():         "<< std::numeric_limits<unsigned int>::max() << std::endl;std::cout << "std::numeric_limits<long>::max():                 "<< std::numeric_limits<long>::max() << std::endl;std::cout << "std::numeric_limits<unsigned long>::max():        "<< std::numeric_limits<unsigned long>::max() << std::endl;std::cout << "std::numeric_limits<long long>::max():            "<< std::numeric_limits<long long>::max() << std::endl;std::cout << "std::numeric_limits<unsigned long long>::max():   "<< std::numeric_limits<unsigned long long>::max() << std::endl;std::cout << "std::numeric_limits<float>::max():                "<< std::numeric_limits<float>::max() << std::endl;std::cout << "std::numeric_limits<double>::max():               "<< std::numeric_limits<double>::max() << std::endl;std::cout << "std::numeric_limits<long double>::max():          "<< std::numeric_limits<long double>::max() << std::endl;std::cout << "std::numeric_limits<std::string>::max():          "<< std::numeric_limits<std::string>::max() << std::endl;//必须偏特化
//    std::cout << "std::numeric_limits<SName>::max():                "
//              << std::numeric_limits<SName>::max() << std::endl;std::cout << "std::numeric_limits<SPartSpec>::max():            "<< std::numeric_limits<SPartSpec>::max() << std::endl;return 0;
}

输出

相关文章:

C++标准模板(STL)- 类型支持 (数值极限,min,lowest,max)

数值极限 提供查询所有基础数值类型的性质的接口 定义于头文件 <limits> template< class T > class numeric_limits; numeric_limits 类模板提供查询各种算术类型属性的标准化方式&#xff08;例如 int 类型的最大可能值是 std::numeric_limits<int>::m…...

国际SPEC CPU创榜以来整机最高纪录!浪潮信息八路服务器TS860G7刷新权威算力基准评测性能

近日&#xff0c;国际标准性能评估组织SPEC发布新一轮SPEC CPU2017通用算力性能测试榜单&#xff0c;浪潮信息八路服务器TS860G7以3940分获得SPEC CPU创榜以来整机性能最佳成绩&#xff0c;打破了单系统服务器性能世界纪录&#xff0c;较之前的测试最高分提升10%。 SPEC CPU201…...

【linux】重定向+缓冲区

重定向缓冲区 1.重定向1.1重定向本质1.2重定向接口1.3重定向分类1.3.1>输出重定向1.3.2>>追加重定向1.3.3<输入重定向 2.理解 >&#xff0c; >>&#xff0c; <3.如何理解linux下一切皆文件4.缓冲区4.1理解缓冲区问题4.1.1为什么要有缓冲区4.1.2缓冲区刷…...

【vim 学习系列文章 10 -- vim 将代码中空格高亮显示方法】

文章目录 vim 高亮空格使用背景如何配置vim 可以自动显示空格呢&#xff1f;vim highlight 命令使用介绍vim 空白行的处理vim match 命令详细介绍 vim 高亮空格使用背景 开发人员在编写代码之后&#xff0c;在review通过之后会将代码推到服务器然后merge&#xff0c;但是有些代…...

吴恩达深度学习笔记

B站看的视频&#xff0c;课太长了&#xff0c;180多节&#xff0c;但搬运的没有作业练习&#xff0c;最好找个能练习的 1&#xff0c;假设模型时&#xff0c;以前(2011版机器学习)用西塔代表参数组成的向量&#xff0c;现在用w代表参数组成的向量&#xff0c;b代表西塔0&#x…...

基于SpringBoot的医疗预约服务管理系统

基于SpringBootVue的医疗预约服务管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登陆界面 管理员界面 医生界面 会员界面 摘要 基于SpringBoot的…...

Java本地缓存的使用

在项目开发中&#xff0c;经常会碰到一些数据量小、但使用频率极高的数据。比如&#xff0c;团队到BU的映射表。此类数据通常不会变动&#xff0c;使用频率高且数据量较小&#xff0c;如果每次使用都去数据库查询&#xff0c;代价比较大&#xff0c;可以考虑在项目启动时将此类…...

华为数通方向HCIP-DataCom H12-831题库(单选题:281-300)

第281题 如图所示,某工程师利用4台路由器进行网络互通测试,其中R1、R2、R3部署OSPF (Area0)实现网络互通,R2、R3、R4部署IS-IS(均部署为Level-2路由器)实现网络互通,现在该工程师在R1的OSPF进程中引入直连路由,在R2的IS-IS进程中引入OSPF路由,则以下关于该场景的描述,正…...

【分享Python代码】图片转化为素描画

哈喽&#xff0c;大家好&#xff0c;我是木易巷~ 代码生成效果图 原图&#xff1a; 生成图&#xff1a; 原图&#xff1a; 生成图&#xff1a; 准备工作 Python编程首先需要安装环境&#xff0c;下面是详细步骤&#xff1a; 会的小伙伴可自行跳过&#xff0c;代码在最后 1…...

汇川Easy521PLC与压力传感器485通讯实例

本例是汇川Easy521PLC与支持485通讯的压力传感器进行通讯的实例记录。对于初次使用汇川PLC的朋友,可能有借鉴的意义。 配置: 1、汇川Easy521PLC 2、美控压力变送器 3、汇川Autoshop编程软件 将压力变送器的485线与PLC本体的485端子一一连接: 485+:A+ 485-:B- 一般485的标…...

创意作品管理软件 Bridge 2024 mac中文版 br2024功能特色

Bridge 2024 mac旨在连接不同的Ad obe应用程序&#xff0c;帮助用户更轻松地管理和编辑他们的创意作品。 Bridge 2024 mac软件特色和功能介绍 一致的用户体验&#xff1a;Bridge 2024现在具有增强的用户界面&#xff0c;可提供与其他Creative Cloud应用程序类似的体验。用户还…...

【分享】教你加速访问GitHub,进来学!

哈喽&#xff0c;大家好&#xff0c;木易巷来啦&#xff01; 众所周知&#xff0c;Github是一款程序猿必备的代码托管平台&#xff0c;上面已经存在了无数前辈的心血&#xff01;经常需要在上面查看大佬写的一些好用的开源项目&#xff0c;无赖国外网站的速度实在让人难以接受。…...

利用在线培训系统提升员工技能,助力企业发展

近年来&#xff0c;随着互联网技术的发展&#xff0c;在线培训系统逐渐成为企业提升员工技能的利器。这种新型的培训方式打破了时间和空间的限制&#xff0c;为企业提供了更加灵活和高效的培训解决方案。下面&#xff0c;我们将详细介绍如何利用在线培训系统提升员工技能&#…...

深度学习小工具:Linux 环境下的用户命令和脚本顺序执行器

前言 深度学习跑代码的时候&#xff0c;需要跑很多个对比实验&#xff0c;要么开多个窗口并行执行代码&#xff0c;要么就写在一个 .sh 文件里面顺序执行&#xff0c;前面一种并行执行多个任务出结果很慢&#xff0c;而后一种如果想添加任务或者删除某个任务就得全部停止&…...

c# WPF 应用程序在屏幕上居中显示

xaml<Window ... WindowStartupLocation"CenterScreen">...

JVM之class文件结构剖析

文章目录 0.前言1. 引言1.1 Java编译原理基础1.2 Class文件在Java编译过程中的角色 2. Class文件的整体结构2.1 Class 文件组成 3. Class文件的详细解析3.1 魔数与版本号的作用和意义3.2 常量池的结构和作用3.3 访问标志的含义和可能的值3.4 类索引、父类索引和接口索引集合的作…...

TDengine 签约中石化,支撑八大油田 PCS 系统

近日&#xff0c;TDengine 成功签约中国石化 PCS 一级部署时序数据库项目。未来&#xff0c;TDengine 将作为中国石化 PCS 系统的时序数据库&#xff0c;为石化总部、胜利油田、西北油田、中原油田、河南油田、华北油田、江苏油田、华东油田、江汉油田等油田 PCS 系统提供高效、…...

win11 定时计划任务

控制面板 任务计划 添加任务计划 &#xff0c;选按步骤添加。...

C++入门之引用与内联函数

一、引用 1、初步理解 引用在语法上的理解就是起别名&#xff0c;用法就是在类型后面加&&#xff0c;例子&#xff1a;int a 1; int& b a; 上例所示&#xff0c;执行后&#xff0c;b就是a的别名&#xff0c;它们代表同一块空间&#xff0c;a的改变会影响b&#xff0…...

浅谈智能照明控制系统应用在城市轨道交通

叶根胜 江苏安科瑞电器制造有限公司 江苏江阴 214405 摘要&#xff1a;在传统的城市轨道交通设计方面&#xff0c;照明设计方案具有一定的弊端。随着计算机技术的发展&#xff0c;智能化技术渐渐步入人们的生活并成为主流&#xff0c;故在城市轨道交通中应用新型的照明控制设…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...