简介:
python whl离线安装包pip安装失败可以尝试使用whl离线安装包安装第一步 下载whl文件,注意需要与python版本配套python版本号、32位64位、arm或amd64均有区别第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径WHL文件是以Wheel格式保存的Python安装包,Wheel是Python发行版的标准内置包格式。
在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件,这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。
如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。
为什么会用到whl文件来安装python库文件呢?在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包,大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。
这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
2025/6/15 20:00:47 535KB
1
简介:
【北航C语言练习 晏海华】是北京航空航天大学C语言课程的一套练习题集,由命题人晏海华设计。
这套练习题旨在帮助学生深入理解和掌握C语言的基本概念、语法以及编程技巧。
根据文件名称列表,我们可以推测这包含8个不同难度级别的练习题目,分别标记为1至8,可能代表题目的递进难度。
C语言是一门基础且重要的编程语言,它以简洁、高效和强大的低级操作能力著称。
在北航的C语言课程中,学生通常会接触到以下几个方面的知识点:1. **基本语法**:包括变量声明、数据类型(如int、char、float等)、常量定义、运算符(算术、比较、逻辑、位运算符)以及表达式。
2. **控制结构**:学习如何使用条件语句(if-else)、循环语句(for、while、do-while)来控制程序的流程。
3. **函数**:了解函数的定义、调用、参数传递和返回值,以及如何使用函数实现模块化编程。
4. **数组与指针**:这是C语言的一大特色,理解数组的声明、初始化和操作,以及指针的概念、操作符(*、&)和指针的使用,如动态内存分配和数组操作。
5. **结构体与联合体**:学习如何定义和使用自定义数据类型,如结构体和联合体,以及它们在数据组织中的作用。
6. **文件操作**:掌握打开、读取、写入和关闭文件的基本方法,以及文件指针的使用。
7. **预处理指令**:了解宏定义、条件编译等预处理指令的作用。
8. **错误处理和调试**:学习如何使用断点、单步执行、查看变量值等调试技巧,以及处理运行时错误。
通过这套练习题,学生将有机会实际编写和调试代码,提升解决问题的能力。
每个题目可能涉及上述一个或多个知识点,让学生在实践中巩固理论知识。
例如,早期的题目可能侧重于基本语法和控制结构,而后期的题目可能会引入更复杂的概念,如指针操作和文件操作。
北航C语言练习的目的是使学生能够熟练地运用C语言进行程序设计,培养他们的逻辑思维能力和问题解决能力,为后续的计算机科学学习打下坚实的基础。
完成这套练习后,学生不仅应能编写出符合规范的C程序,还应具备调试和优化代码的能力。
2025/6/15 20:00:43 33KB
1
简介:
AVR/51单片机下载器是一种多功能的编程设备,它能够服务于两种常见的微控制器家族:AVR系列(由Atmel公司生产)和51系列(基于Intel 8051架构)。
这款下载器的核心功能是将编译好的程序代码烧录到目标单片机的闪存中,以便于单片机执行预定的任务。
对于AVR单片机,下载器通常采用ISP(In-System Programming)技术,允许在不移除单片机的情况下进行程序更新。
USBASP(USB Asynchronous Serial Programmer)是常见的AVR编程器,它通过USB接口与计算机连接,提供了简单易用的编程方式。
USBASP支持各种AVR微控制器,包括ATmega、ATtiny和ATxmega系列,且兼容AVR Studio、WinAVR等开发环境。
对于51系列单片机,下载器可能需要配合不同的编程协议,如JTAG或SWD(Serial Wire Debug),但更常见的是使用串行编程方式,如ISP或PDI。
51单片机通常由Atmel(现已被Microchip收购)制造,如AT89C51、AT89S52等型号,它们广泛应用于各种嵌入式系统。
用户可以通过编程工具,如Keil uVision或GCC编译器,生成HEX或BIN格式的程序,然后利用下载器将这些程序烧录到单片机中。
使用这样的下载器,开发者可以进行以下操作:1. **程序开发**:编写C或汇编语言代码,使用对应的IDE进行编译。
2. **烧录固件**:将编译后的二进制文件(如HEX或BIN)通过下载器传输到单片机的闪存中。
3. **调试**:某些下载器还具备调试功能,允许用户在运行时查看变量状态,设置断点,单步执行等,以帮助定位和解决问题。
4. **应用测试**:烧录程序后,测试单片机在实际应用场景中的功能和性能。
在使用USBASP这类下载器时,用户需要注意以下几点:- **驱动安装**:确保计算机已安装相应的USB驱动,如 zadig.exe,以识别并正确通信。
- **正确连接**:根据单片机的引脚定义,正确连接下载器的ISP或SWD引脚到单片机的对应管脚。
- **配置软件**:在编程软件中设置正确的目标芯片型号、波特率和其他相关参数。
- **编程步骤**:按照软件的指导进行操作,如选择要烧录的文件,开始编程,验证程序是否成功写入。
AVR/51单片机下载器是嵌入式系统开发中的关键工具,它简化了程序的部署和调试过程,极大地提高了开发效率。
无论是初学者还是经验丰富的工程师,都能从中受益。
在使用过程中,掌握好下载器的使用方法和注意事项,能确保项目顺利进行。
2025/6/15 20:00:11 2.06MB
1
简介:
在当前的全球金融市场中,金属、非金属与采矿行业扮演着至关重要的角色。
本周的观点报告聚焦于这个领域,通过对市场的深度分析,揭示了行业的最新趋势和动态。
标题“新高如约,看多延续;
美元强势,金属承压”表明市场在经历了一段上涨后,虽然看涨情绪持续,但同时也面临来自美元走强的压力,这直接影响到金属价格的表现。
"新高如约"暗示金属、非金属和采矿行业的价格或指数达到了一个新的峰值。
这可能是由于全球经济复苏、需求增长、供应短缺等因素推动的。
投资者和分析师通常会关注这些新高,因为它们可能预示着行业的繁荣,但也可能引发对泡沫风险的担忧。
“看多延续”意味着市场参与者普遍持乐观态度,预期行业将继续保持上升态势。
这可能是基于对全球经济的乐观预测、政策支持、新兴市场需求增加等多重因素。
然而,看多的情绪并不总是准确的,它需要结合基本面和技术分析来做出更为全面的判断。
然后,"美元强势"对于金属市场来说是一个重大挑战。
美元是全球主要的交易货币,其汇率变动直接影响到以美元计价的大宗商品价格。
当美元升值时,金属等商品的价格相对下降,因为购买这些商品所需的美元数量增加了,这对金属出口国和依赖金属收入的公司构成了压力。
"金属承压"指出金属行业正面临压力,主要来自于美元走强。
这可能导致金属价格下跌,影响矿业公司的盈利能力,同时也可能抑制投资热情。
投资者需要密切关注美元走势、供需平衡以及全球货币政策变化,以便更好地评估行业风险和机遇。
在提供的压缩包文件中,"金属、非金属与采矿行业周观点:新高如约,看多延续;
美元强势,金属承压.pdf"很可能包含更详尽的市场分析、数据和策略建议。
这份报告可能涵盖了行业内的具体公司表现、关键金属的价格走势、各国政策影响、全球宏观经济环境对行业的影响等多方面内容。
通过深入阅读和理解这份报告,投资者和专业人士可以更好地把握市场脉搏,制定有效的投资决策。
2025/6/15 19:59:49 455KB
1
简介:
在面对从较旧版本的SQL Server数据库向新一代SQL Server数据库迁移时,经常会遇到兼容性问题。
本文所探讨的SQL Server 2008与SQL Server 2005之间的备份还原兼容问题,以及解决方法,对于数据库管理员来说,是非常有价值的信息。
由于版本升级,SQL Server 2008与SQL Server 2005在数据库引擎方面存在一些差异,这些差异可能导致在还原备份文件时遇到阻碍。
SQL Server 2005的备份文件在SQL Server 2008中遇到的主要问题是兼容性,因为SQL Server 2008使用的是更新的数据库引擎和功能集。
解决方法的第一步涉及界面操作的调整,具体操作为:在SQL Server Management Studio(SSMS)中,不要在数据库名字上直接点击右键来选择还原,而是应该点击左上角的“数据库”节点后,再右键点击选择还原,并在弹出的界面中选择目标数据库。
这一操作实际上是在引导SQL Server 2008识别并处理备份文件时,使用正确的还原方法和路径。
如果上述方法没有解决问题,接下来可以采用SQL语句的方式来进行还原操作。
使用的SQL语句是RESTORE DATABASE命令,该命令是用来恢复一个数据库到一个特定的状态。
这个语句中,‘databaseName’应该替换为你实际想要还原的数据库名称,‘X:\数据库备份\database.bak’则应该替换为实际的备份文件路径。
参数‘withreplace’表示如果存在同名数据库时将被替换,‘NOUNLOAD’表示在还原期间不会卸载磁带,‘STATS=10’则表示在还原过程中每处理10%的信息时显示一次状态信息。
使用SQL语句进行还原的这种方法,优点是灵活性高,可以根据需要进行更细致的控制和调整。
例如,如果需要更详细地控制还原过程中的行为,还可以添加其它参数,如‘MOVE’可以指定数据文件和日志文件的位置,‘FILE’可以指定还原特定的文件等。
以上介绍的两种方法可以有效地帮助数据库管理员解决SQL Server 2008还原SQL Server 2005备份文件遇到的兼容性问题。
对于遇到3154错误代码的用户,第二种方法通过命令行的方式进行操作,提供了一种可以绕过图形界面限制的解决方案。
3154错误通常出现在还原数据库时,源数据库文件的头信息无法正确读取,这可能与备份文件和SQL Server版本不匹配有关。
需要指出的是,在进行数据库还原操作之前,务必确保对备份文件的完整性进行验证,以及做好相关的数据备份,以防还原过程中发生意外导致数据丢失。
此外,在实际操作中,数据库管理员应根据自己的具体情况灵活选择解决方案,并且在操作之前,建议在测试环境中先行验证方法的有效性,以避免生产环境出现不可预测的风险。
总结来说,升级数据库版本是许多组织发展历程中的必经之路,而在升级过程中处理好数据库的备份与还原问题,是保证数据安全与业务连续性的关键。
本文所提到的解决方法,针对SQL Server 2008与SQL Server 2005之间的兼容性问题给出了实用的解决方案,对于数据库管理员来说,不仅可以作为参考,而且可以在实际工作中付诸实践,以应对类似的挑战。
2025/6/15 19:59:36 33KB
1
简介:
操作系统及数据库运行安全管理办法是确保企业信息系统安全稳定运行的重要指导文件。
该办法旨在规范操作系统的安全配置和日常管理,以及数据库系统的安全管理,适用于XX公司的信息系统。
以下是对文档中提到的关键知识点的详细说明:1. **法规引用**:文档参照了多个中国国家法律法规,如《中华人民共和国计算机信息系统安全保护条例》和《中华人民共和国国家安全法》,表明了企业必须遵守的法律框架,以确保信息通信的安全合规。
2. **安全标准**:引用了ISO27001/ISO27002等国际信息安全标准,强调了企业应按照国际最佳实践来实施信息安全管理体系。
3. **术语定义**:操作系统安全和数据库管理系统安全被定义为涉及信息的保密性、完整性和可用性的特性,这是安全管理的核心目标。
4. **操作系统运行管理**: - **管理员任命**:遵循任期有限、权限分散的原则,要求设立独立的操作系统管理员和审计员,以实现职责分离。
- **账户授权**:所有账户的授权需经过审批流程,管理员账户变动应及时更改设置,外单位人员使用系统需特别审批。
- **口令管理**:口令复杂度要求高,定期更换,且不得告知他人,以增强账户安全性。
- **系统维护记录**:所有系统维护和应急处理需有记录,以便追踪和分析。
- **软件资料管理**:对软件介质、资料、许可证进行详细登记,实施严格的借还和复制制度。
5. **操作系统账户管理**: - **账户设置**:账户名称、权限和有效期需按审批表设置,关闭无用账户。
- **口令更新**:管理员账户口令每42天更换,异常情况需立即更改,避免使用旧口令。
6. **应急处理**:记录系统异常和故障,制定应急处理方法,确保快速恢复服务。
该办法通过严格的管理制度和规程,从人员、权限、操作、记录等多个层面构建了一套全面的系统和数据库安全防护体系,确保了企业信息资产的安全,防止潜在的威胁和风险。
同时,它强调了法律遵从性和持续改进,体现了企业对信息安全的重视和承诺。
2025/6/15 19:59:26 185KB
1
简介:
在编程领域,尤其是使用C++这种面向对象的语言时,"无法实例化抽象类"是一个常见的错误,这通常发生在尝试创建一个声明为抽象的类的实例时。
在C++中,抽象类是通过包含至少一个纯虚函数来定义的。
这些类不能被实例化,因为它们没有具体的实现,而主要是作为基类来使用,为派生类提供接口定义。
标题"无法实例化抽象类"指出的问题可能源于以下几个方面:1. **纯虚函数**:一个类如果包含至少一个纯虚函数(即声明为`virtual void func() = 0;`的函数),那么这个类就会被视为抽象类。
抽象类不能用于创建对象,只能作为其他类的基类。
2. **错误的实例化尝试**:可能是开发者尝试直接使用`new`关键字或在栈上创建抽象类的对象,这是不合法的。
例如,`AbstractClass* ptr = new AbstractClass();` 或 `AbstractClass obj;` 都会导致编译错误。
3. **调用约定**:在标签"VC10.0 C++ Win32 programming"中,提到的调用约定(Calling Convention)可能与问题有关。
不同的调用约定会影响函数参数的传递方式,如果错误地指定调用约定,可能会导致链接错误,但这通常不会直接影响抽象类的实例化问题。
4. **参数匹配**:描述中的"检查调用约定,参数等"暗示可能存在参数类型或数量不匹配的问题。
虽然这不是直接与抽象类实例化相关的错误,但错误的函数签名可能导致编译错误,特别是当涉及到虚函数的重写时。
5. **派生类的实现**:如果一个派生类没有实现其基类的所有纯虚函数,那么这个派生类也会变成抽象类。
确保所有的纯虚函数都有具体实现,否则编译器会报错。
6. **模板和抽象类**:如果抽象类被用作模板的参数,确保在实例化模板时,模板参数满足抽象类的要求,即提供所有纯虚函数的实现。
7. **编译器和版本问题**:VC10.0指的是Visual Studio 2010,不同版本的编译器可能对C++标准的支持程度不同,或者存在一些已知的bug。
确保编译器设置正确,并且更新到最新的服务包和补丁。
解决此类问题通常需要检查代码中抽象类的定义,确保所有纯虚函数在需要的地方得到了实现,同时检查调用的函数签名是否正确,参数类型和数量是否匹配。
此外,查阅编译器的错误信息也能帮助定位问题所在。
对于提供的PDF文件"cannot-instantiate-abstract-class.pdf",可能包含更详细的解释和示例,阅读它将有助于深入理解抽象类和实例化抽象类的限制。
建议结合文档内容,根据具体情况分析和解决问题。
2025/6/15 19:57:52 40KB
1
简介:
【vivado 蜂鸣器】项目是一个利用Vivado设计工具实现的电子音乐播放器,特别地,它被编程来播放特定的曲目。
Vivado是Xilinx公司提供的一个综合性的硬件描述语言(HDL)开发平台,主要用于FPGA(Field-Programmable Gate Array)和SoC(System on Chip)的设计与实现。
在这个项目中,开发者使用Vivado创建了一个能够发出音频信号的蜂鸣器模块,这个模块可以嵌入到其他游戏或应用中作为声音源。
我们需要了解FPGA的基本概念。
FPGA是一种可编程逻辑器件,它的内部包含大量的可配置逻辑块和输入/输出单元,允许用户根据需求自定义电路结构。
Vivado提供了完整的流程,包括设计输入、逻辑综合、布局布线以及硬件调试等,使得开发者可以方便地在FPGA上实现复杂的数字系统。
在本项目中,蜂鸣器模块可能基于PWM(Pulse Width Modulation)技术实现。
PWM通过调节脉冲宽度来模拟不同频率的声音,以此来生成音调。
开发者可能编写了Verilog或VHDL代码,定义了一个计数器和比较器,通过改变脉冲宽度来控制蜂鸣器的频率,进而播放出不同的音符。
项目中提到的"带有脑中的数字时钟"可能是指一个额外的模块,用于显示时间。
这个模块可能包括一个时钟发生器、计数器和七段数码管驱动逻辑,用于在硬件平台上实时显示当前时间。
"vivado"表明项目的核心是使用Vivado进行设计。
Vivado提供了一整套的工具链,包括IP Integrator用于集成预先封装好的IP核,比如PLL(Phase-Locked Loop)用于产生时钟,或者AXI总线接口用于与其他模块通信。
此外,还有仿真工具用于验证设计的功能正确性,如ISim或ModelSim。
【压缩包子文件的文件名称列表】中,我们可以看到以下几个关键文件夹:- `bell.xpr`:这是Vivado工程文件,包含了项目的配置信息和所有源文件的引用。
- `bell.cache`:缓存文件夹,存储了设计过程中产生的中间数据,如综合报告、布局布线结果等。
- `bell.srcs`:源代码文件夹,可能包含了.v或.vhd文件,即Verilog或VHDL源代码。
- `bell.hw`:硬件平台配置文件,定义了目标FPGA的管脚分配和设备配置。
- `bell.sim`:仿真相关文件,用于在软件中验证设计的正确性。
- `bell.ip_user_files`:用户自定义IP核的文件夹,可能包含了蜂鸣器和数字时钟的自定义IP。
- `bell.runs`:运行配置文件,记录了每个设计步骤的设置和结果。
这个项目展示了如何使用Vivado设计一个能在FPGA上运行的音频播放模块,以及如何将此模块与其他硬件组件(如数字时钟)集成在一起。
通过学习这个项目,开发者可以了解到FPGA开发的基本流程,以及如何利用Vivado进行数字系统设计和硬件编程。
2025/6/15 19:57:33 102KB
1
简介:
ExtJS是一种基于JavaScript的前端开发框架,用于构建富客户端应用。
它提供了丰富的组件库,包括TreePanel和GridPanel,这两个组件在数据展示和管理中扮演着重要角色。
TreePanel是ExtJS中的一个树形控件,它允许你展示层级结构的数据。
在教程中,你可能会学到如何创建和配置TreePanel,包括加载数据、设置节点图标、处理节点的展开和折叠事件,以及添加拖放功能。
TreePanel通常用于展现文件系统、组织架构或层级关系的数据。
GridPanel则是ExtJS中的表格视图组件,它可以展示大量的数据,并提供排序、筛选、分页等功能。
在集成TreePanel和GridPanel时,可能涉及到的概念有:将TreePanel的节点与GridPanel的数据关联,实现点击树节点时动态加载或更新GridPanel的数据,以及可能的父子数据联动操作。
在实际应用中,你可能会学习到以下关键点:1. 创建TreePanel:定义树节点的数据源,配置列显示,设置树的样式和交互行为。
2. 创建GridPanel:定义Grid的数据模型,设置列配置,添加行操作和列筛选。
3. 数据绑定:通过store将TreePanel和GridPanel连接起来,使得选择树节点可以动态改变Grid的数据。
4. 事件监听:添加事件监听器来响应用户的操作,比如节点点击、数据加载等。
5. 动态加载:当用户点击TreePanel的节点时,根据节点ID或属性动态加载对应的Grid数据。
6. 用户交互:实现拖放功能,允许用户通过拖动TreePanel的节点来调整结构,或者拖放到GridPanel中进行操作。
在"我自己写的Extjs入门教程"这个压缩包中,可能包含的文件可能有HTML示例文件、JavaScript代码文件、CSS样式文件,甚至可能有图片资源。
这些文件将帮助你理解并实践教程中的每个步骤,通过阅读和修改代码,你可以深入理解ExtJS的组件用法和数据交互机制。
在学习过程中,理解ExtJS的MVC(Model-View-Controller)架构至关重要,因为TreePanel和GridPanel都是View部分,它们的数据源(Model)和控制器(Controller)是实现功能的关键。
同时,熟悉JSON格式数据的处理也是必要的,因为ExtJS通常使用JSON来传递和存储数据。
这门入门教程将带你进入ExtJS的世界,通过TreePanel和GridPanel的实践,你将掌握基本的组件使用和数据管理技巧,为构建更复杂的企业级应用打下基础。
记得在实践中不断探索和实验,理论结合实际,才能真正掌握这些知识。
2025/6/15 19:57:15 739KB
1
简介:
在编程领域,尤其是在开发用户界面(UI)时,"在程序状态栏中实现进度条"是一个常见的需求。
状态栏通常是应用程序界面底部的一行区域,用于显示各种提示信息、状态更新或者像进度条这样的反馈元素。
进度条是用户界面中一个非常有用的组件,它能够向用户显示任务的执行进度,增强用户体验,让他们了解程序后台正在进行的操作。
要实现这个功能,我们需要掌握以下几个关键知识点:1. **API 使用**:API(Application Programming Interface)是一组预定义的函数、类、对象和常量,开发者可以使用它们来创建应用程序。
在Windows API中,`SetParent`函数是一个重要的组件,它允许我们将一个窗口设置为另一个窗口的子窗口。
这在将进度条控件嵌入到状态栏中时非常有用。
2. **状态栏创建**:我们需要创建状态栏。
在Windows API中,可以使用`CreateStatusWindow`函数或在MFC(Microsoft Foundation Classes)框架中使用`CStatusBar`类来创建。
状态栏通常由多个pane组成,每个pane可以显示不同的信息。
3. **进度条控件**:Windows提供了`CreateWindow`或`CreateWindowEx`函数来创建进度条控件(ProgressBar)。
控件的类名是`Progress Class`("PBSTYLE"),需要设置适当的样式,如`PBS_SMOOTH`来实现平滑滚动效果,或者`PBS_MARQUEE`来创建滚动进度条。
4. **将进度条设为状态栏子窗口**:利用`SetParent`函数,我们可以将创建的进度条控件设置为状态栏的一个子窗口。
这使得进度条能在状态栏区域内显示,并随状态栏一起调整大小。
5. **消息处理**:为了更新进度条,我们需要处理`WM_PAINT`消息,以绘制进度条的当前状态。
同时,当进度发生变化时,发送`PBM_SETPOS`消息到进度条控件,指定新的进度值。
6. **多线程和异步操作**:在进行长时间操作时,如文件上传或下载,通常会在后台线程中执行,通过定时器或事件通知机制来更新进度条,保持用户界面的响应性。
7. **布局管理**:为了确保进度条在状态栏中的正确位置,可能需要使用Windows的布局管理API,如`SetWindowPos`,或者在MFC中使用`DockControlBar`和`FloatControlBar`方法来调整其位置和大小。
8. **样式和主题**:根据应用程序的需求,可以使用`SendMessage`函数发送`WM_CHANGEUISTATE`或`WM_UPDATEUISTATE`消息,改变进度条的视觉样式,使其符合应用程序的主题。
9. **错误处理**:在编程过程中,必须考虑到可能出现的错误情况,例如创建窗口失败、资源分配失败等。
需要适当的错误检查和异常处理,确保程序的稳定性和健壮性。
实现“在程序状态栏中显示进度条”需要理解并运用Windows API或特定框架提供的控件和方法,进行窗口和控件的创建、父子关系的设定、消息的处理以及用户界面的布局管理。
这个过程涉及到多方面的编程技术,不仅提升了用户体验,也体现了开发者对UI设计和系统级编程的理解。
2025/6/15 19:56:51 3KB
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡