C++标准模板(STL)- 类型支持 (数值极限,max_digits10,radix,min_exponent)

news2024/11/25 0:46:51

数值极限


定义于头文件 <limits>

定义于头文件 <limits>

template< class T > class numeric_limits;

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

区别所有此类型值所需的十进制位数

std::numeric_limits<T>::max_digits10

static constexpr int max_digits10

(C++11 起)

 std::numeric_limits<T>::max_digits10 的值是唯一地表示所有类型 T 值的底 10 位数,是为序列化/反序列化到文本所需。此常量对所有浮点类型有意义。

标准特化

Tstd::numeric_limits<T>::max_digits10 的值
/* 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_DECIMAL_DIG 或 std::ceil(std::numeric_limits<float>::digits * std::log10(2) + 1)
doubleDBL_DECIMAL_DIG 或 std::ceil(std::numeric_limits<double>::digits * std::log10(2) + 1)
long doubleDECIMAL_DIG 或 LDBL_DECIMAL_DIG 或 std::ceil(std::numeric_limits<long double>::digits * std::log10(2) + 1)

注意

不同于多数数学运算,只要用至少 max_digits10 (对于 float 为 9 ,对于 double 为 17 )位,则从浮点值转换到文本并转换回来是准确的:保证产生同一浮点值,即使不确定的文本表示不准确。以小数点记法,可能需要超过一百个十进制小数位表示 float 的精确值。

调用示例

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

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

输出

给定类型的表示所用的基或整数底

std::numeric_limits<T>::radix

static const int radix;

(C++11 前)

static constexpr int radix;

(C++11 起)

 std::numeric_limits<T>::radix 的值是用于表示该类型的数字系统的底。对于所有二进制数值类型为 2 ,但它可以,譬如对 IEEE 754 十进制浮点类型或第三方二进制编码十进制整数为 10 。此常量对所有特化有意义。

标准特化

Tstd::numeric_limits<T>::radix 的值
/* non-specialized */​0​
bool2
char2
signed char2
unsigned char2
wchar_t2
char8_t2
char16_t2
char32_t2
short2
unsigned short2
int2
unsigned int2
long2
unsigned long2
long long2
unsigned long long2
floatFLT_RADIX
doubleFLT_RADIX
long doubleFLT_RADIX

调用示例

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

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

输出

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

std::numeric_limits<T>::min_exponent

static const int min_exponent;

(C++11 前)

static constexpr int min_exponent;

(C++11 起)

标准特化

Tstd::numeric_limits<T>::min_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_MIN_EXP
doubleDBL_MIN_EXP
long doubleLDBL_MIN_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;
};
}

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

输出

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

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

相关文章

XXL-Job分布式任务调度框架-单机模式和分片模式执行任务4

一 调度模式分类 1.1 调度模式 1.单个任务&#xff1a;一个任务实例便可完成 a)单机单任务&#xff1a;单机模式下任何路由模式都只有一个实例执行 b)集群单任务&#xff1a;由路由策略(广播模式除外)选择其中一个实例完成 2.集群部署&#xff1a;每个实例都同时执行一部分…

RS232电路设计

学习一下RS232的电路设计 在学习过RS485电路设计后&#xff0c;对232就没那么陌生了。 下面我来说一下对于一个新手从0到1 的过程 首先我会查询关于RS232的相关只是&#xff0c;对他有初步了解&#xff0c;在485的基础上很好理解232了。 串口、COM口、UART口, TTL、RS-232、…

尚硅谷Flink(一)

目录 ☄️前置工作 fenfa脚本 &#x1f30b;概述 ☄️Flink是什么 ☄️特点&#xff08;多nb&#xff09; ☄️应用场景&#xff08;不用看&#xff09; ☄️分层API &#x1f30b;配环境 ☄️wordcount ☄️WcDemoUnboundStreaming &#x1f30b;集群部署 ☄️集…

机器视觉工程师为什么要反复调试?

目录 那么程序debug原因有哪些&#xff1f;图像处理debug的原因有哪些&#xff1f; 我们机器视觉项目的程序包含&#xff0c;业务逻辑图像处理&#xff0c;所以我们不单单调试图像处理部分&#xff0c;还要调试C#&#xff0c;界面&#xff0c;数据等等。我们必须保证程序稳定性…

手把手带你用Python和文心一言搭建《AI看图写诗》网页项目(附上完整项目源码)

今年年初&#xff0c;ChatGPT的火爆在全球掀起AI大模型的开发热潮&#xff0c;国内外的科技公司纷纷加入“百模大战”行列。百度在率先发布了国内第一款人工智能大语言模型“文心一言”后&#xff0c;又推出了文心千帆大模型平台&#xff0c;帮助企业和开发者加速大模型应用落地…

ARRI阿莱MXF(ALEXA Mini LF)多碎片重组案例

三大影视巨头ARRI、RED、ATOMOS&#xff0c;ARRI阿莱的设备以提供电影级的画质而在影视圈有很大的名气。ARRI的文件一般是两种&#xff0c;一种是高清MOV&#xff08;苹果为ARRI专门出过特殊认证的编码&#xff09;&#xff1b;一种是高清MXF&#xff1b;相比之下MXF文件比较少…

Vue之Jwt的运用(一起探索JWT在Vue中的用途吧)

目录 前言 一、JWT简介 1. 什么是JWT 2. JWT的工作原理 3. JWT的组成 4. 使用JWT的好处 二、JWT工具类 JwtFilter JwtUtils 工具类的作用 工具类的测试 测试代码 test01()测试结果 test02()测试结果 test03()测试结果 test04测试结果 test05测试结果 三、JWT集成SPA项…

Arya科普 | 程序员常用英语 Java常用名词解释 计算机常用英语汇总

本篇博客汇总了程序员常用的英文单词&#xff0c;Java中常用的名词解释&#xff0c;计算机常用的英语汇总。 英文 A~D array数组 accessible 可存取的 area面积 audio 音频 addition 加法 action 行动 arithmetic 算法 adjustment 调整 actual 真实的 argument 参量 ascent …

CVE-2017-7529 Nginx越界读取内存漏洞

漏洞概述 当使用Nginx标准模块时&#xff0c;攻击者可以通过发送包含恶意构造range域的header请求&#xff0c;来获取响应中的缓存文件头部信息。在某些配置中&#xff0c;缓存文件头可能包含后端服务器的IP地址或其它敏感信息&#xff0c;从而导致信息泄露。 影响版本 Ngin…

Ubutntu 命令行界面显示UI 【FrameBuffer显示GuiLiteSample-Hello3D】

参考资料 https://www.cnblogs.com/jzcn/p/16898249.html https://github.com/idea4good/GuiLiteSamples/tree/master/Hello3D https://github.com/idea4good/GuiLite 显示效果&#xff1a;&#xff08;看看左上角处立方体&#xff09; 使用场景&#xff1a; 嵌入式Linux…

《动手学深度学习 Pytorch版》 8.5 循环神经网络的从零开始实现

%matplotlib inline import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2lbatch_size, num_steps 32, 35 train_iter, vocab d2l.load_data_time_machine(batch_size, num_steps) # 仍然使用时间机器数据集8.…

深度学习验证码项目

项目代码&#xff1a; GitHub - kerlomz/captcha_trainer: [验证码识别-训练] This project is based on CNN/ResNet/DenseNetGRU/LSTMCTC/CrossEntropy to realize verification code identification. This project is only for training the model. GitHub - Python3WebSpi…

锂电池行业新技术,RFID技术赋能生产、溯源

随着新能源汽车用动力电池的快速扩大&#xff0c;对锂电池的发展高安全性、高一致性、高合格率和低制造成本提出了更高的要求。而RFID技术被广泛应用在锂电池行业&#xff0c;为锂电池的生产、管理、溯源等生产管理方面提供了极大地便利&#xff0c;提升了生产效率、产品质量和…

【工具软件】mediamtx——网页、vue3项目中播放 rtsp 视频流(支持265转码)

声明 本文只做 mediamtx 的使用实操&#xff0c;请务必参考下面的博客,&#xff0c;我也参考下面的大佬博客&#xff0c;感谢唯一602的无私分享&#xff1a; 在web页面中直接播放rtsp视频流&#xff0c;重点推荐&#xff1a;mediamtx&#xff0c;不仅仅是rtsp mediamtx 介绍 …

Vue的学习补充

1.Vue路由-404 作用&#xff1a;当路径找不到匹配时&#xff0c;给个提示页面 位置&#xff1a;配在路由最后 语法&#xff1a;path:*&#xff08;任意路径&#xff09;-前面不匹配就命中最后这个 2.Vue路由-模式设置 hash路由&#xff08;默认&#xff09; 例如&#xff…

ubuntu mmdetection配置

mmdetection配置最重要的是版本匹配&#xff0c;特别是cuda&#xff0c;torch与mmcv-full 本项目以mmdetection v2.28.2为例介绍 1.查看显卡算力 因为gpu的算力需要与Pytorch依赖的CUDA算力匹配&#xff0c;低版本GPU可在相对高的CUDA版本下运行&#xff0c;相反则不行 算力…

【多线程】Thread类的基本用法

文章目录 线程创建线程中断线程等待线程休眠 线程创建 方法一&#xff1a;用一个类 继承Thread 重写run方法 //创建一个类 继承Thread class MyThread extends Thread {//run方法是线程的入口Overridepublic void run() {while (true){System.out.println("hello Thread…

Unity 3D基础——缓动效果

1.在场景中新建两个 Cube 立方体&#xff0c;在 Scene 视图中将两个 Cude的位置错开。 2.新建 C# 脚本 MoveToTarget.cs&#xff08;写完记得保存&#xff09; using System.Collections; using System.Collections.Generic; using UnityEngine;public class MoveToTarget : M…

代理和多级代理

文章目录 代理使用场景代理过程实验演示多级代理 代理使用场景 1、拿下远程 web 服务器 2、webshell 链接不稳定&#xff0c;需要使用稳定的木马程序 3、远程服务器无法直接链接攻击者电脑 4、需要借助公网vps转发来自失陷服务器的木马流量 5、借助frp服务端(vps)和客户端(内网…

AI为锚,创新为帆,谱写数实融合发展新篇章

云聚园区&#xff0c;智享未来。9月27日&#xff0c;在苏州工业园区管理委员会、华为云计算技术有限公司的指导下&#xff0c;由SISPARK&#xff08;苏州国际科技园&#xff09;、华为&#xff08;苏州&#xff09;人工智能创新中心联合主办&#xff0c;东北大学工业智能与系统…