C++标准模板(STL)- 类型支持 (数值极限,min_exponent10,max_exponent,max_exponent10)

news2025/1/26 15:52:29

数值极限

std::numeric_limits

定义于头文件 <limits>

定义于头文件 <limits>

template< class T > class numeric_limits;

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

10 的该数次幂是合法正规浮点值的最小负数

std::numeric_limits<T>::min_exponent10

static const int min_exponent10;

(C++11 前)

static constexpr int min_exponent10;

(C++11 起)

std::numeric_limits<T>::min_exponent10 的值是满足 10n是浮点类型 T 的合法正规值的最低负数 n

标准特化

Tstd::numeric_limits<T>::min_exponent10 的值
/* non-specialized */​0​
bool​0​
char​0​
signed char​0​
unsigned char​0​
wchar_t​0​
char8_t​0​
char16_t​0​
char32_t​0​
short​0​
unsigned short​0​
int​0​
unsigned int​0​
long​0​
unsigned long​0​
long long​0​
unsigned long long​0​
floatFLT_MIN_10_EXP
doubleDBL_MIN_10_EXP
long doubleLDBL_MIN_10_EXP

调用示例

#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;
};
}

int main()
{
    std::cout << std::boolalpha;
    std::cout << "std::numeric_limits<bool>::min_exponent10:                 "
              << std::numeric_limits<bool>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<char>::min_exponent10:                 "
              << std::numeric_limits<char>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<signed char>::min_exponent10:          "
              << std::numeric_limits<signed char>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<unsigned char>::min_exponent10:        "
              << std::numeric_limits<unsigned char>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<wchar_t>::min_exponent10:              "
              << std::numeric_limits<wchar_t>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<char16_t>::min_exponent10:             "
              << std::numeric_limits<char16_t>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<char32_t>::min_exponent10:             "
              << std::numeric_limits<char32_t>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<short>::min_exponent10:                "
              << std::numeric_limits<short>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<unsigned short>::min_exponent10:       "
              << std::numeric_limits<unsigned short>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<int>::min_exponent10:                  "
              << std::numeric_limits<int>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<unsigned int>::min_exponent10:         "
              << std::numeric_limits<unsigned int>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<long>::min_exponent10:                 "
              << std::numeric_limits<long>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<unsigned long>::min_exponent10:        "
              << std::numeric_limits<unsigned long>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<long long>::min_exponent10:            "
              << std::numeric_limits<long long>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<unsigned long long>::min_exponent10:   "
              << std::numeric_limits<unsigned long long>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<float>::min_exponent10:                "
              << std::numeric_limits<float>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<double>::min_exponent10:               "
              << std::numeric_limits<double>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<long double>::min_exponent10:          "
              << std::numeric_limits<long double>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<std::string>::min_exponent10:          "
              << std::numeric_limits<std::string>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<SName>::min_exponent10:                "
              << std::numeric_limits<SName>::min_exponent10 << std::endl;
    std::cout << "std::numeric_limits<SPartSpec>::min_exponent10:            "
              << std::numeric_limits<SPartSpec>::min_exponent10 << std::endl;
    return 0;
}

输出

底的该数次幂是合法有限浮点值的最大整数加一

std::numeric_limits<T>::max_exponent

static const int max_exponent;

(C++11 前)

static constexpr int max_exponent;

(C++11 起)

std::numeric_limits<T>::max_exponent 的值是满足 rn-1是浮点类型 T 的可表示有限值最大正整数 n ,其中 r 是 std::numeric_limits<T>::radix 。

标准特化

Tstd::numeric_limits<T>::max_exponent 的值
/* non-specialized */​0​
bool​0​
char​0​
signed char​0​
unsigned char​0​
wchar_t​0​
char8_t​0​
char16_t​0​
char32_t​0​
short​0​
unsigned short​0​
int​0​
unsigned int​0​
long​0​
unsigned long​0​
long long​0​
unsigned long long​0​
floatFLT_MAX_EXP
doubleDBL_MAX_EXP
long doubleLDBL_MAX_EXP

调用示例

#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;
};
}

int main()
{
    std::cout << std::boolalpha;
    std::cout << "std::numeric_limits<bool>::max_exponent:                 "
              << std::numeric_limits<bool>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<char>::max_exponent:                 "
              << std::numeric_limits<char>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<signed char>::max_exponent:          "
              << std::numeric_limits<signed char>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<unsigned char>::max_exponent:        "
              << std::numeric_limits<unsigned char>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<wchar_t>::max_exponent:              "
              << std::numeric_limits<wchar_t>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<char16_t>::max_exponent:             "
              << std::numeric_limits<char16_t>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<char32_t>::max_exponent:             "
              << std::numeric_limits<char32_t>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<short>::max_exponent:                "
              << std::numeric_limits<short>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<unsigned short>::max_exponent:       "
              << std::numeric_limits<unsigned short>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<int>::max_exponent:                  "
              << std::numeric_limits<int>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<unsigned int>::max_exponent:         "
              << std::numeric_limits<unsigned int>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<long>::max_exponent:                 "
              << std::numeric_limits<long>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<unsigned long>::max_exponent:        "
              << std::numeric_limits<unsigned long>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<long long>::max_exponent:            "
              << std::numeric_limits<long long>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<unsigned long long>::max_exponent:   "
              << std::numeric_limits<unsigned long long>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<float>::max_exponent:                "
              << std::numeric_limits<float>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<double>::max_exponent:               "
              << std::numeric_limits<double>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<long double>::max_exponent:          "
              << std::numeric_limits<long double>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<std::string>::max_exponent:          "
              << std::numeric_limits<std::string>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<SName>::max_exponent:                "
              << std::numeric_limits<SName>::max_exponent << std::endl;
    std::cout << "std::numeric_limits<SPartSpec>::max_exponent:            "
              << std::numeric_limits<SPartSpec>::max_exponent << std::endl;
    return 0;
}

 输出

10 的该数次幂是合法有限浮点值的最大整数

std::numeric_limits<T>::max_exponent10

std::numeric_limits<T>::max_exponent10 的值是满足 10n是浮点类型 T 的可表示有限值的最大正整数 n

标准特化

Tstd::numeric_limits<T>::max_exponent10 的值
/* non-specialized */​0​
bool​0​
char​0​
signed char​0​
unsigned char​0​
wchar_t​0​
char8_t​0​
char16_t​0​
char32_t​0​
short​0​
unsigned short​0​
int​0​
unsigned int​0​
long​0​
unsigned long​0​
long long​0​
unsigned long long​0​
floatFLT_MAX_10_EXP
doubleDBL_MAX_10_EXP
long doubleLDBL_MAX_10_EXP

调用示例

#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;
};
}

int main()
{
    std::cout << std::boolalpha;
    std::cout << "std::numeric_limits<bool>::max_exponent10:                 "
              << std::numeric_limits<bool>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<char>::max_exponent10:                 "
              << std::numeric_limits<char>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<signed char>::max_exponent10:          "
              << std::numeric_limits<signed char>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<unsigned char>::max_exponent10:        "
              << std::numeric_limits<unsigned char>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<wchar_t>::max_exponent10:              "
              << std::numeric_limits<wchar_t>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<char16_t>::max_exponent10:             "
              << std::numeric_limits<char16_t>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<char32_t>::max_exponent10:             "
              << std::numeric_limits<char32_t>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<short>::max_exponent10:                "
              << std::numeric_limits<short>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<unsigned short>::max_exponent10:       "
              << std::numeric_limits<unsigned short>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<int>::max_exponent10:                  "
              << std::numeric_limits<int>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<unsigned int>::max_exponent10:         "
              << std::numeric_limits<unsigned int>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<long>::max_exponent10:                 "
              << std::numeric_limits<long>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<unsigned long>::max_exponent10:        "
              << std::numeric_limits<unsigned long>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<long long>::max_exponent10:            "
              << std::numeric_limits<long long>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<unsigned long long>::max_exponent10:   "
              << std::numeric_limits<unsigned long long>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<float>::max_exponent10:                "
              << std::numeric_limits<float>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<double>::max_exponent10:               "
              << std::numeric_limits<double>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<long double>::max_exponent10:          "
              << std::numeric_limits<long double>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<std::string>::max_exponent10:          "
              << std::numeric_limits<std::string>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<SName>::max_exponent10:                "
              << std::numeric_limits<SName>::max_exponent10 << std::endl;
    std::cout << "std::numeric_limits<SPartSpec>::max_exponent10:            "
              << std::numeric_limits<SPartSpec>::max_exponent10 << std::endl;
    return 0;
}

输出

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

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

相关文章

多个Python包懒得import,那就一包搞定!

使用Python时&#xff0c;有的代码需要依赖多个框架或库者来完成&#xff0c;代码开头需要import多次&#xff0c;比如&#xff0c; import pandas as pd from pyspark import SparkContext from openpyxl import load_workbook import matplotlib.pyplot as plt import seabo…

Java Day2(Java基础语法)

Java基础 Java基础语法1. 注释、关键字、标识符1.1 Java中的注释1.2 关键字1.3 标识符 2. 数据类型&#xff08;1&#xff09;基本类型&#xff08;primitive type&#xff09;a.字节b.进制c. 浮点数拓展d. 字符拓展 &#xff08;2&#xff09; 引用类型(Reference type ) 3. 类…

【软件测试】总结

文章目录 一. 测试用例1. 常见设计测试用例(1)非软件题型(2)软件题型(3)代码型题(4)关于个人项目设计测试用例 2. 万能公式和具体的方法如何理解(1)万能公式(2)Fiddler实现弱网模式(3)针对公交卡设计测试用例 3. 进阶设计测试用例 二. 自动化1. 什么是自动化以及为什么要做自动…

杀死僵尸进程ZooKeeperMain

关闭Hadoop后jps发现还有个进程ZooKeeperMain没有关闭&#xff0c;使用kill -9 <>也没有用&#xff0c;这种就是僵尸进程&#xff0c;需要用父进程ID来杀死 解决方法 话不多说&#xff0c;直接上解决方案&#xff0c; 1. 第一步 清楚需要关闭的进程ID&#xff0c;我…

CentOS-7下安装及配置vsftpd详细步骤(可匿名访问)

第一步安装vsftpd&#xff1a; yum -y install vsftpd 第二步修改ftp主目录所属用户为用户ftp&#xff1a; chown ftp /var/ftp/pub 第三步备份及配置ftp&#xff1a; cp /etc/vsftpd/vsftpd.conf ~/vsftpd.conf.bakvim /etc/vsftpd/vsftpd.conf 配置如下图&#xff1a;…

《AWD特训营》CTF/AWD竞赛的速胜指南!全面提升安全技术

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《粉丝福利》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、AWD竞赛的由来《AWD特训营&#xff1a;技术解析、赛题实战与竞赛技巧》1.1介绍&#xff1a; 《AWD特训营》…

Qt拖拽文件到窗口、快捷方式打开

大部分客户端都支持拖拽文件的功能&#xff0c;本篇博客介绍Qt如何实现文件拖拽到窗口、快捷方式打开&#xff0c;以我的开源视频播放器项目为例&#xff0c;介绍拖拽视频到播放器窗口打开。   需要注意的是&#xff0c;Qt拖拽文件的功能&#xff0c;不支持以管理员权限启动的…

《PyTorch深度学习实践》第三讲 反向传播

《PyTorch深度学习实践》第三讲 反向传播 问题描述问题分析编程实现代码实现效果 参考文献 问题描述 问题分析 编程实现 代码 import torch # 数据集 x_data [1.0, 2.0, 3.0] y_data [2.0, 4.0, 6.0] # w权重 w torch.tensor([1.0]) w.requires_grad True # 需要计算梯度…

Kubernetes实战(二)-使用Kor过滤Kubernetes未使用资源

1 概述 Kor 是一个找到未使用 Kubernetes 资源的工具。目前&#xff0c;Kor 能够识别并列出以下未使用的资源&#xff1a; ConfigMap Secret Service ServiceAccount Deployment StatefulSet Role HPA PVC Ingresse PDB 2 安装部署 安装方法 从发布页面下载对应你…

OFDM原理及MATLAB仿真

文章目录 前言一、OFDM 总体概述1、OFDM 概述2、OFDM 优点 二、OFDM 基本原理1、基本思想2、OFDM 调制和解调3、OFDM 系统的发射机和接收机框图 三、OFDM 系统数学模型1、sinc 函数2、OFDM 时域表达式3、OFDM 频域表达式 四、OFDM 时域及频域仿真1、绘制时域及频域波形①、MATL…

SpringCloud-Sleuth

一、介绍 &#xff08;1&#xff09;用于追踪服务链路 &#xff08;2&#xff09;搭配zipkin实现 二、项目搭建 &#xff08;1&#xff09;下载zipkin.jar https://repo1.maven.org/maven2/io/zipkin/java/zipkin-server/2.12.9/&#xff08;2&#xff09;运行 java -jar …

Android---Android 是如何通过 Activity 进行交互的

相信对于 Android 工程师来说&#xff0c;startActivity 就像初恋一般。要求低&#xff0c;见效快&#xff0c;是每一个菜鸟 Android 工程师迈向高级 Android 工程师的必经阶段。经过这么多年的发展&#xff0c;startActivity 在 google 的调教下已经变得愈发成熟&#xff0c;对…

Python文件读写实战:处理日常任务的终极工具!

更多资料获取 &#x1f4da; 个人网站&#xff1a;涛哥聊Python Python文件的读写操作时&#xff0c;有很多需要考虑的细节&#xff0c;这包括文件打开方式、读取和写入数据的方法、异常处理等。 在本文中&#xff0c;将深入探讨Python中的文件操作&#xff0c;旨在提供全面的…

Python开发者的宝典:CSV和JSON数据处理技巧大公开!

更多资料获取 &#x1f4da; 个人网站&#xff1a;涛哥聊Python 在Python中处理CSV和JSON数据时&#xff0c;需要深入了解这两种数据格式的读取、写入、处理和转换方法。 下面将详细介绍如何在Python中处理CSV和JSON数据&#xff0c;并提供一些示例和最佳实践。 CSV数据处理…

项目配置vue.config jsconfig babel.config .prettierc .env .eslintrc

.env 在一个产品的前端开发过程中&#xff0c;一般来说会经历本地开发、测试脚本、开发自测、测试环境、预上线环境&#xff0c;然后才能正式的发布。对应每一个环境可能都会有所差异&#xff0c;比如说服务器地址、接口地址、websorket地址…… 等等。在各个环境切换的时候&am…

java的Timer全网最详细总结

1.简介 在Java 1.3版本中引入了Timer工具类&#xff0c;它是一个古老的定时器&#xff0c;通常与TimerTask和TaskQueue一起使用。Timer工具类的实现涉及到TimerTask类、Timer类、TimerQueue类和TimerThread类。其中&#xff0c;TimerQueue和TimerThread类与Timer类位于同一个类…

docker安装skyWalking笔记

确保安装了docker和docker-compose sudo docker -v Docker version 20.10.12, build 20.10.12-0ubuntu4 sudo docker-compose -v docker-compose version 1.29.2, build unknown 编写docker-compose.yml version: "3.1" services: skywalking-oap:image: apach…

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

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

《向量数据库指南》——向量数据库一些技术难点

一些技术难点 在文章的前半部分,我们列举了一些向量数据库应该具备的特性,然后比较了以 Milvus 为代表的向量数据库和 ANN 算法库、向量检索插件的不同之处。接下来,我们来聊聊构建向量数据库过程中会遇到的一些技术难点。 就好像一架飞机一样,内部每个零部件和系统相互连通…

PPP的建链过程

下图是PPP协议整个链路过程需经历阶段的状态转移图&#xff1a; 图1 PPP链路建立过程 PPP运行的过程简单描述如下&#xff1a; 通信双方开始建立PPP链路时&#xff0c;先进入到Establish阶段。 在Establish阶段&#xff0c;PPP链路进行LCP协商。协商内容包括工作方式是SP&am…