西安 网站开发网站建设费做什么会计科目

张小明 2026/1/19 20:44:43
西安 网站开发,网站建设费做什么会计科目,电商公司网站建设财务核算,百度服务中心文章目录安装gtest开发包进入编译目录创建构建目录编译生成静态库复制库文件到系统库目录克隆gtest源码创建构建目录#xff08;采用体外构建#xff0c;避免污染源码#xff09;配置编译选项#xff08;可指定安装路径#xff0c;如-DCMAKE_INSTALL_PREFIX/usr/local采用体外构建避免污染源码配置编译选项可指定安装路径如-DCMAKE_INSTALL_PREFIX/usr/local编译-j指定线程数加速编译安装到系统目录编译测试程序链接gtest和pthread库gtest依赖线程库运行测试程序只执行测试套件为CalculatorFixture的所有测试用例只执行测试用例名称包含Add的测试排除某个测试用例编译测试程序运行测试在软件开发过程中单元测试是保障代码质量、提升开发效率的关键环节。Google Test简称gtest作为一款开源的C单元测试框架凭借其强大的功能、简洁的API设计和良好的跨平台特性成为了C开发者的首选测试工具之一。本文将从gtest的基本介绍、安装配置、核心概念、常用API到实战案例全方位讲解gtest的使用方法帮助开发者快速上手并应用于实际项目。一、gtest简介gtest是由Google开发的开源C单元测试框架遵循BSD开源协议支持Linux、Windows、Mac等多种操作系统可与CMake、Visual Studio、GCC等主流开发工具和编译环境无缝集成。其核心优势包括丰富的断言机制提供了大量针对布尔值、数值、字符串、容器等类型的断言宏支持成功/失败断言、致命/非致命断言满足不同场景的测试需求。灵活的测试组织方式通过测试套件Test Suite和测试用例Test Case的层级结构清晰组织测试代码支持测试过滤、参数化测试、死亡测试等高级功能。完善的报告输出可生成详细的测试报告包含测试用例执行结果、失败原因、执行时间等信息支持文本、XML等多种输出格式便于集成到CI/CD流程。轻量级与可扩展性核心代码简洁依赖少易于编译和部署同时支持自定义断言、测试监听器等扩展机制适配复杂项目的测试需求。二、gtest安装与配置gtest的安装配置方式主要分为源码编译安装和包管理器安装以下分别介绍LinuxUbuntu和WindowsVisual Studio环境下的配置方法。2.1 Linux环境Ubuntu2.1.1 包管理器安装推荐适用于简单需求Ubuntu系统可通过apt-get直接安装预编译的gtest包命令如下安装gtest开发包sudo apt-get updatesudo apt-get install libgtest-dev注意libgtest-dev仅安装源码和头文件并未自动编译生成库文件需手动编译进入编译目录cd /usr/src/gtest创建构建目录sudo mkdir build cd build编译生成静态库sudo cmake …sudo make复制库文件到系统库目录sudo cp libgtest.a libgtest_main.a /usr/lib2.1.2 源码编译安装适用于需要最新版本或自定义配置从GitHub获取最新源码并编译安装克隆gtest源码git clone https://github.com/google/googletest.gitcd googletest创建构建目录采用体外构建避免污染源码mkdir build cd build配置编译选项可指定安装路径如-DCMAKE_INSTALL_PREFIX/usr/localcmake … -DCMAKE_BUILD_TYPERelease编译-j指定线程数加速编译make -j4安装到系统目录sudo make install2.2 Windows环境Visual Studio 20222.2.1 源码编译配置从GitHub下载gtest源码解压后进入源码目录。使用CMake-GUI生成Visual Studio解决方案点击「Browse Source」选择gtest源码根目录含CMakeLists.txt。点击「Browse Build」选择构建目录如build-vs2022。点击「Configure」选择Visual Studio 2022和平台x64/x86点击「Finish」完成配置。点击「Generate」生成解决方案文件.sln。打开生成的解决方案编译「ALL_BUILD」项目生成静态库gtest.lib、gtest_main.lib。在自己的项目中配置项目属性 → C/C → 常规 → 附加包含目录添加gtest源码的include目录如googletest/include。项目属性 → 链接器 → 常规 → 附加库目录添加gtest编译生成的库目录如build-vs2022/lib/Release。项目属性 → 链接器 → 输入 → 附加依赖项添加gtest.lib和gtest_main.libDebug模式添加gtestd.lib、gtest_maind.lib。三、gtest核心概念在使用gtest前需理解其两个核心概念测试套件Test Suite和测试用例Test Case。测试套件Test Suite一组相关的测试用例的集合通常对应一个类或一个功能模块。在gtest中通过TEST宏定义测试套件宏的第一个参数为测试套件名称。测试用例Test Case测试套件中的单个测试单元对应一个具体的功能点或逻辑分支。TEST宏的第二个参数为测试用例名称。示例#include gtest/gtest.h// 测试套件Calculator计算器模块// 测试用例AddTest加法功能测试TEST(Calculator, AddTest) {// 断言验证11是否等于2EXPECT_EQ(1 1, 2);}// 测试用例SubtractTest减法功能测试TEST(Calculator, SubtractTest) {EXPECT_EQ(3 - 1, 2);}此外gtest还提供了测试夹具Test Fixture机制用于处理多个测试用例的共享初始化和清理逻辑如创建对象、打开文件、释放资源等通过继承testing::Test类实现。四、gtest常用断言断言是gtest的核心功能用于判断测试代码的执行结果是否符合预期。gtest将断言分为两类致命断言Fatal Assertion若断言失败当前测试用例立即终止后续代码不再执行。宏名以ASSERT_开头如ASSERT_EQ、ASSERT_TRUE。非致命断言Non-Fatal Assertion若断言失败当前测试用例继续执行仅记录失败信息。宏名以EXPECT_开头如EXPECT_EQ、EXPECT_TRUE。推荐优先使用非致命断言以便在一次测试中发现多个问题。以下是常用断言分类整理4.1 布尔值断言断言宏说明示例ASSERT_TRUE(condition)致命断言condition为真ASSERT_TRUE(1 0)ASSERT_FALSE(condition)致命断言condition为假ASSERT_FALSE(1 0)EXPECT_TRUE(condition)非致命断言condition为真EXPECT_TRUE(isEven(2))EXPECT_FALSE(condition)非致命断言condition为假EXPECT_FALSE(isEven(3))4.2 数值比较断言断言宏说明示例ASSERT_EQ(a, b)致命断言a bEQEqualASSERT_EQ(23, 5)ASSERT_NE(a, b)致命断言a ! bNENot EqualASSERT_NE(5, 6)ASSERT_LT(a, b)致命断言a bLTLess ThanASSERT_LT(3, 5)ASSERT_LE(a, b)致命断言a bLELess or EqualASSERT_LE(4, 5)ASSERT_GT(a, b)致命断言a bGTGreater ThanASSERT_GT(6, 5)ASSERT_GE(a, b)致命断言a bGEGreater or EqualASSERT_GE(5, 5)注EXPECT_系列对应的宏如EXPECT_EQ、EXPECT_NE功能相同仅为非致命断言。4.3 字符串断言断言宏说明示例ASSERT_STREQ(s1, s2)致命断言C风格字符串s1 s2区分大小写ASSERT_STREQ(“hello”, “hello”)ASSERT_STRNE(s1, s2)致命断言C风格字符串s1 ! s2ASSERT_STRNE(“hello”, “world”)ASSERT_STRCASEEQ(s1, s2)致命断言C风格字符串s1 s2不区分大小写ASSERT_STRCASEEQ(“Hello”, “hello”)EXPECT_STREQ(s1, s2)非致命断言C风格字符串s1 s2EXPECT_STREQ(getName(), “Alice”)4.4 异常断言用于验证函数是否抛出预期的异常#include// 测试函数是否抛出std::invalid_argument异常TEST(ExceptionTest, DivideByZero) {auto divide [](int a, int b) {if (b 0) {throw std::invalid_argument(“divide by zero”);}return a / b;};// 断言调用divide(5, 0)时抛出std::invalid_argument异常ASSERT_THROW(divide(5, 0), std::invalid_argument);// 断言调用divide(6, 2)时不抛出异常ASSERT_NO_THROW(divide(6, 2));}五、gtest进阶功能5.0 测试环境与生命周期管理gtest提供了三级测试环境的生命周期管理机制通过重写不同的SetUp初始化和TearDown清理方法可实现不同范围的资源管控。各环境的执行时机有明确区分核心分为全局环境、局部环境和最小环境三类全局环境testing::Environment作用于所有测试用例的整个生命周期。其中SetUp方法在所有测试用例如test1执行前仅执行一次TearDown方法在所有测试用例如test3执行完成后仅执行一次适用于全局资源的初始化如数据库连接、配置加载和清理。局部环境testing::Test的静态方法作用于某个测试夹具对应的测试套件生命周期。通过静态方法SetUpTestCase实现在该夹具的第一个测试用例如test_f 2-1执行前仅执行一次通过静态方法TearDownTestCase实现在该夹具的最后一个测试用例如test_f 2-3执行完成后仅执行一次适用于测试套件级别的共享资源管控如创建测试数据表、初始化共享对象。最小环境testing::Test的成员方法作用于单个测试用例的生命周期。即之前提到的SetUp和TearDown成员方法其中SetUp在每个测试用例如每个test_f执行前执行一次TearDown在每个测试用例执行后执行一次适用于单个测试用例的资源初始化如创建临时对象和清理。全局环境需通过testing::AddGlobalTestEnvironment方法注册才能生效局部环境和最小环境则通过测试夹具类的重写实现具体示例如下5.1 测试夹具Test Fixture当多个测试用例需要共享初始化和清理逻辑时使用测试夹具。步骤如下继承testing::Test类在类中定义共享的成员变量和方法。重写SetUp()方法可选每个测试用例执行前调用用于初始化资源如创建对象。重写TearDown()方法可选每个测试用例执行后调用用于清理资源如释放对象。使用TEST_F宏定义测试用例FFixture第一个参数为夹具类名。示例测试计算器类的多个方法结合全局环境、局部环境和最小环境实现资源的分级管控#include gtest/gtest.h#include// 1. 全局环境类继承testing::Environmentclass GlobalEnv : public testing::Environment {public:// 全局初始化所有测试用例执行前执行一次void SetUp() override {std::cout “全局环境SetUp执行所有测试前的初始化如加载全局配置” std::endl;}// 全局清理所有测试用例执行后执行一次 void TearDown() override { std::cout 全局环境TearDown执行所有测试后的清理如释放全局资源 std::endl; }};// 待测试的计算器类class Calculator {public:int Add(int a, int b) { return a b; }int Subtract(int a, int b) { return a - b; }int Multiply(int a, int b) { return a * b; }int Divide(int a, int b) {if (b 0) throw std::invalid_argument(“divide by zero”);return a / b;}};// 2. 测试夹具类含局部环境和最小环境继承testing::Testclass CalculatorFixture : public testing::Test {protected:// 共享的计算器对象最小环境使用Calculator calc;// 局部环境-初始化当前夹具的第一个测试用例执行前执行一次 static void SetUpTestCase() { std::cout 局部环境SetUpTestCaseCalculatorFixture测试套件执行前初始化如创建共享测试数据 std::endl; } // 局部环境-清理当前夹具的最后一个测试用例执行后执行一次 static void TearDownTestCase() { std::cout 局部环境TearDownTestCaseCalculatorFixture测试套件执行后清理如删除共享测试数据 std::endl; } // 最小环境-初始化每个测试用例执行前执行一次 void SetUp() override { std::cout 最小环境SetUp单个测试用例执行前初始化如重置计算器状态 std::endl; } // 最小环境-清理每个测试用例执行后执行一次 void TearDown() override { std::cout 最小环境TearDown单个测试用例执行后清理如释放测试用例专属资源 std::endl; }};// 注册全局环境必须注册才能生效TEST(GlobalEnvTest, Register) {testing::AddGlobalTestEnvironment(new GlobalEnv);}// 3. 测试夹具对应的测试用例模拟test_f 2-1、2-2、2-3TEST_F(CalculatorFixture, AddTest) { // test_f 2-1EXPECT_EQ(calc.Add(1, 2), 3);EXPECT_EQ(calc.Add(-1, -2), -3);}TEST_F(CalculatorFixture, SubtractTest) { // test_f 2-2EXPECT_EQ(calc.Subtract(5, 3), 2);EXPECT_EQ(calc.Subtract(3, 5), -2);}TEST_F(CalculatorFixture, DivideTest) { // test_f 2-3EXPECT_EQ(calc.Divide(6, 2), 3);ASSERT_THROW(calc.Divide(5, 0), std::invalid_argument);}// 其他独立测试用例模拟test1、test3TEST(OtherTest, Test1) { // test1std::cout “执行独立测试用例Test1” std::endl;EXPECT_TRUE(1 1);}TEST(OtherTest, Test3) { // test3std::cout “执行独立测试用例Test3” std::endl;EXPECT_FALSE(1 0);}// 主函数int main(int argc, char **argv) {testing::InitGoogleTest(argc, argv);return RUN_ALL_TESTS();}上述示例的执行顺序与输出说明程序启动后首先执行全局环境的SetUp输出“全局环境SetUp执行所有测试前的初始化”执行独立测试用例Test1test1先执行Test1的最小环境SetUp若有再执行测试逻辑最后执行Test1的最小环境TearDown若有执行CalculatorFixture测试套件① 先执行局部环境SetUpTestCase输出“局部环境SetUpTestCaseCalculatorFixture测试套件执行前初始化”② 执行test_f 2-1AddTest执行最小环境SetUp → 测试逻辑 → 最小环境TearDown③ 执行test_f 2-2SubtractTest执行最小环境SetUp → 测试逻辑 → 最小环境TearDown④ 执行test_f 2-3DivideTest执行最小环境SetUp → 测试逻辑 → 最小环境TearDown⑤ 执行局部环境TearDownTestCase输出“局部环境TearDownTestCaseCalculatorFixture测试套件执行后清理”执行独立测试用例Test3test3先执行Test3的最小环境SetUp若有再执行测试逻辑最后执行Test3的最小环境TearDown若有所有测试用例执行完成后执行全局环境的TearDown输出“全局环境TearDown执行所有测试后的清理”。通过这种分级管控机制可精准控制不同范围资源的创建和释放时机避免资源冗余占用同时提升测试代码的可维护性。#include gtest/gtest.h// 待测试的计算器类class Calculator {public:int Add(int a, int b) { return a b; }int Subtract(int a, int b) { return a - b; }int Multiply(int a, int b) { return a * b; }int Divide(int a, int b) {if (b 0) throw std::invalid_argument(“divide by zero”);return a / b;}};// 定义测试夹具类class CalculatorFixture : public testing::Test {protected:// 共享的计算器对象Calculator calc;// 初始化每个测试用例执行前调用 void SetUp() override { // 可添加额外初始化逻辑如设置初始状态 } // 清理每个测试用例执行后调用 void TearDown() override { // 可添加资源清理逻辑 }};// 使用TEST_F定义测试用例共享CalculatorFixture的资源TEST_F(CalculatorFixture, AddTest) {EXPECT_EQ(calc.Add(1, 2), 3);EXPECT_EQ(calc.Add(-1, -2), -3);}TEST_F(CalculatorFixture, SubtractTest) {EXPECT_EQ(calc.Subtract(5, 3), 2);EXPECT_EQ(calc.Subtract(3, 5), -2);}TEST_F(CalculatorFixture, DivideTest) {EXPECT_EQ(calc.Divide(6, 2), 3);ASSERT_THROW(calc.Divide(5, 0), std::invalid_argument);}5.2 参数化测试当需要对同一功能使用多组输入数据进行测试时如测试加法的多个输入对可使用参数化测试避免编写重复代码。步骤如下定义参数类型如输入值和预期输出的结构体。继承testing::TestWithParam参数类型类创建参数化测试夹具。使用TEST_P宏定义测试用例PParameterized通过GetParam()获取当前测试参数。使用INSTANTIATE_TEST_SUITE_P宏注册测试套件指定测试名称和参数列表。示例测试加法的多组输入#include gtest/gtest.h// 1. 定义参数类型输入a、输入b、预期结果struct AddParam {int a;int b;int expected;};// 2. 定义参数化测试夹具class AddParameterizedTest : public testing::TestWithParam {};// 3. 使用TEST_P定义测试用例TEST_P(AddParameterizedTest, MultipleAddCases) {// 获取当前测试参数AddParam param GetParam();// 待测试的加法逻辑int result param.a param.b;// 断言结果是否符合预期EXPECT_EQ(result, param.expected);}// 4. 注册测试套件指定参数列表INSTANTIATE_TEST_SUITE_P(AddTestCases, // 测试套件名称自定义AddParameterizedTest, // 参数化测试夹具类名testing::Values(AddParam{1, 2, 3}, // 测试用例1123AddParam{-1, -2, -3}, // 测试用例2-1(-2)-3AddParam{0, 0, 0}, // 测试用例3000AddParam{100, 200, 300} // 测试用例4100200300));5.3 死亡测试死亡测试用于验证程序在特定条件下是否会正常退出如断言失败、调用exit()gtest通过ASSERT_EXIT、EXPECT_EXIT等宏实现。示例测试程序在断言失败时是否退出#include gtest/gtest.h#include// 测试函数当x0时触发断言失败void CheckPositive(int x) {assert(x 0); // 断言x必须为正数}TEST(DeathTest, AssertFailure) {// 断言调用CheckPositive(-1)时程序正常退出退出码非0ASSERT_EXIT(CheckPositive(-1), // 待测试的代码testing::KilledBySignal(SIGABRT), // 预期被SIGABRT信号终止断言失败信号“” // 预期的输出信息为空表示不检查);}六、gtest测试执行与报告6.1 测试程序入口gtest需要在main函数中初始化并运行测试可直接使用gtest提供的默认main函数需链接gtest_main.lib也可自定义main函数#include gtest/gtest.h// 自定义main函数可选int main(int argc, char **argv) {testing::InitGoogleTest(argc, argv); // 初始化gtestreturn RUN_ALL_TESTS(); // 运行所有测试用例}6.2 编译与运行以Linux环境为例假设有测试文件calc_test.cpp编译命令如下编译测试程序链接gtest和pthread库gtest依赖线程库g calc_test.cpp -o calc_test -lgtest -lpthread运行测试程序./calc_test6.3 测试报告解读运行测试程序后gtest会输出详细的测试报告示例如下[] Running 5 tests from 2 test suites.[----------] Global test environment set-up.[----------] 3 tests from AddTestCases/AddParameterizedTest[ RUN ] AddTestCases/AddParameterizedTest.MultipleAddCases/0[ OK ] AddTestCases/AddParameterizedTest.MultipleAddCases/0 (0 ms)[ RUN ] AddTestCases/AddParameterizedTest.MultipleAddCases/1[ OK ] AddTestCases/AddParameterizedTest.MultipleAddCases/1 (0 ms)[ RUN ] AddTestCases/AddParameterizedTest.MultipleAddCases/2[ OK ] AddTestCases/AddParameterizedTest.MultipleAddCases/2 (0 ms)[----------] 3 tests from AddTestCases/AddParameterizedTest (0 ms total)[----------] 2 tests from CalculatorFixture[ RUN ] CalculatorFixture.DivideTest[ OK ] CalculatorFixture.DivideTest (0 ms)[ RUN ] CalculatorFixture.SubtractTest[ OK ] CalculatorFixture.SubtractTest (0 ms)[----------] 2 tests from CalculatorFixture (0 ms total)[----------] Global test environment tear-down[] 5 tests passed.[ PASSED ] 5 tests.报告关键信息[]测试开始/结束的分隔线。[ RUN ]正在执行的测试用例。[ OK ]测试用例执行成功。[ FAILED ]测试用例执行失败会显示失败的断言位置和原因。最后一行总结总测试用例数和成功/失败数。6.4 测试过滤当测试用例较多时可通过命令行参数过滤需要执行的测试用例只执行测试套件为CalculatorFixture的所有测试用例./calc_test --gtest_filterCalculatorFixture.*只执行测试用例名称包含Add的测试./calc_test --gtest_filterAdd排除某个测试用例./calc_test --gtest_filter-CalculatorFixture.DivideTest七、实战案例测试一个简单的字符串工具类以下通过实战案例完整演示gtest的使用流程测试一个简单的字符串工具类StringUtil包含字符串拼接、判空、转大写三个功能。7.1 待测试代码string_util.h#pragma once#include#includeclass StringUtil {public:// 字符串拼接static std::string Concat(const std::string a, const std::string b) {return a b;}// 判断字符串是否为空空字符串或全空格 static bool IsEmpty(const std::string s) { for (char c : s) { if (!isspace(static_castunsigned char(c))) { return false; } } return true; } // 字符串转大写 static std::string ToUpper(const std::string s) { std::string result; for (char c : s) { result toupper(static_castunsigned char(c)); } return result; }};7.2 测试代码string_util_test.cpp#include gtest/gtest.h#include “string_util.h”// 测试套件StringUtil// 测试用例ConcatTest拼接功能测试TEST(StringUtil, ConcatTest) {EXPECT_EQ(StringUtil::Concat(“hello”, “world”), “helloworld”);EXPECT_EQ(StringUtil::Concat(“”, “test”), “test”);EXPECT_EQ(StringUtil::Concat(“test”, “”), “test”);EXPECT_EQ(StringUtil::Concat(“a”, “b”), “ab”);}// 测试用例IsEmptyTest判空功能测试TEST(StringUtil, IsEmptyTest) {EXPECT_TRUE(StringUtil::IsEmpty(“”)); // 空字符串EXPECT_TRUE(StringUtil::IsEmpty( “)); // 全空格EXPECT_FALSE(StringUtil::IsEmpty(“hello”)); // 非空字符串EXPECT_FALSE(StringUtil::IsEmpty(” test )); // 包含非空格字符}// 测试用例ToUpperTest转大写功能测试TEST(StringUtil, ToUpperTest) {EXPECT_EQ(StringUtil::ToUpper(“hello”), “HELLO”);EXPECT_EQ(StringUtil::ToUpper(“World”), “WORLD”);EXPECT_EQ(StringUtil::ToUpper(“123abc”), “123ABC”);EXPECT_EQ(StringUtil::ToUpper(“”), “”);EXPECT_EQ(StringUtil::ToUpper( test ), TEST );}// 主函数int main(int argc, char **argv) {testing::InitGoogleTest(argc, argv);return RUN_ALL_TESTS();}7.3 编译与运行编译测试程序g string_util_test.cpp -o string_util_test -lgtest -lpthread -stdc11运行测试./string_util_test7.4 测试结果[] Running 3 tests from 1 test suite.[----------] Global test environment set-up.[----------] 3 tests from StringUtil[ RUN ] StringUtil.ConcatTest[ OK ] StringUtil.ConcatTest (0 ms)[ RUN ] StringUtil.IsEmptyTest[ OK ] StringUtil.IsEmptyTest (0 ms)[ RUN ] StringUtil.ToUpperTest[ OK ] StringUtil.ToUpperTest (0 ms)[----------] 3 tests from StringUtil (0 ms total)[----------] Global test environment tear-down[] 3 tests passed.[ PASSED ] 3 tests.所有测试用例执行成功说明StringUtil类的三个功能符合预期。八、总结与扩展本文详细介绍了gtest的安装配置、核心概念、常用断言及进阶功能并通过实战案例演示了完整的测试流程。gtest作为一款成熟的C单元测试框架不仅能满足基础的单元测试需求其参数化测试、测试夹具等高级功能还能大幅提升测试效率适配复杂项目的测试场景。扩展学习gtest与CI/CD集成将gtest测试结果输出为XML格式集成到Jenkins、GitLab CI等持续集成工具。gtest扩展自定义断言宏、测试监听器实现个性化的测试需求。gmockGoogle的C模拟框架与gtest配合使用用于测试依赖外部接口的代码。通过熟练掌握gtest开发者可以构建可靠的测试体系提前发现代码中的问题提升软件质量和开发效率。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

hao爱做网站做网页网站 的公司

LobeChat在教学场景中的实践探索:构建师生互动的AI助手在智慧教育快速发展的今天,一个现实问题困扰着许多教师:课后答疑、作业反馈、个性化辅导这些本应促进学习深化的环节,却因人力有限而难以持续开展。学生的问题得不到及时回应…

张小明 2026/1/17 19:39:29 网站建设

网站作业企业园林设计网站模板

文章目录一、DAC   1、分辨率   2、线性度   3、绝对精度   4、建立时间二、DAC工作原理三、PWM四、原理图五、实例代码一、DAC DAC(Digital to analog converter)即数字模拟转换器,它可以将数字信号转换为模拟信号。 1、分辨率 DAC …

张小明 2026/1/17 19:39:30 网站建设

买了个域名怎么做网站投资平台

学生用户免费领取 PyTorch GPU 算力 Token:一场改变 AI 学习门槛的实践 在高校实验室、宿舍深夜的台灯下,或是线上课程的讨论区里,总能听到类似的声音:“代码跑不通”“CUDA out of memory”“pip install 又报错了”。这些看似琐…

张小明 2026/1/17 19:39:31 网站建设

响应式网站优点礼品工艺品网站建设

第一章:为什么顶级团队都在用Open-AutoGLM操控GUI?在自动化测试与智能运维领域,传统基于坐标的GUI操作方式正被更高级的认知型交互所取代。Open-AutoGLM 作为首个融合大语言模型与图形界面理解能力的开源框架,使机器能够“看懂”界…

张小明 2026/1/17 19:39:34 网站建设

羊 东莞网站开发可以做动漫的网站

VisualCppRedist AIO终极指南:一站式解决VC运行库兼容性难题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况&#xff1a…

张小明 2026/1/17 19:39:33 网站建设

毕业设计做网站教程自己制作网站的方法

1 黑盒测试的本质与价值 黑盒测试(Black-box Testing)是一种基于软件外部需求规格说明的测试方法,测试者无需了解系统内部结构、实现逻辑或代码细节,仅通过输入数据与预期输出的比对来验证功能正确性。这种方法模拟真实用户视角&…

张小明 2026/1/17 19:39:33 网站建设