简介:
《Practical Common Lisp笔记》是一本深入探讨Common Lisp编程语言的实用教程。
Common Lisp是一种功能强大的多范式编程语言,以其动态类型、宏系统和丰富的内置数据结构而闻名。
这篇笔记详细记录了作者在学习过程中的理解和实践,旨在帮助读者掌握这一高级语言。
博文链接提供的资源是一个关于Common Lisp的在线阅读版本,它可能包含了代码示例、解释和作者对语言特性的见解。
文件"practical_common_lisp.html"很可能是这篇笔记的网页版,而"practical_common_lisp"可能是与之相关的源代码或补充材料。
Common Lisp的重要知识点包括:1. **动态类型**:与静态类型语言不同,Common Lisp允许在程序运行时改变变量的类型,这提供了更大的灵活性。
2. **宏系统**:Common Lisp的宏是语言的一部分,允许程序员定义新的语法结构,增强了代码的可读性和复用性。
3. **符号和原子性**:在Common Lisp中,符号是第一类对象,且不可变,这意味着它们可以被用作变量、函数名等。
4. **列表和S-表达式**:Common Lisp的基础数据结构是列表,S-表达式(Symbolic Expression)是其语法基础,所有程序都以列表形式表示。
5. **标准库**:Common Lisp有一个庞大的标准库,包含各种数据结构、算法和系统接口,如CL-PPCRE(正则表达式)、ASDF(应用程序定义和分发系统)等。
6. **条件系统和多重异常处理**:通过条件系统,开发者可以编写优雅的异常处理代码,应对各种错误情况。
7. **函数式编程**:Common Lisp支持高阶函数、尾递归优化和匿名函数,使得函数式编程风格得以流畅实现。
8. **面向对象编程**:虽然不是其核心特性,但Common Lisp提供CLOS(Common Lisp Object System),一个完全集成的、可扩展的面向对象系统。
9. **元编程**:由于其强大的宏系统和反射能力,Common Lisp支持元编程,可以在运行时修改和生成代码。
10. **并行和并发**:Common Lisp有内建的支持多线程和并发的机制,允许开发者利用多核处理器的优势。
通过阅读《Practical Common Lisp笔记》,读者可以了解如何利用这些特性来构建复杂的应用程序,同时也能深入理解Common Lisp的强大之处。
对于想要提升编程技能,特别是对动态语言和元编程感兴趣的开发者来说,这是一个宝贵的资源。
2025/6/15 19:55:55 57KB
1
简介:
【Java图书管理系统源码详解】本Java图书管理系统是一款基于C/S(客户端/服务器)架构的软件,采用Java语言作为主要开发工具,同时结合了Swing库来构建用户界面。
这样的设计使得系统具备良好的可移植性和丰富的图形化操作界面,便于用户进行图书的管理与查询。
1. **Java技术**: Java是一种面向对象的、跨平台的编程语言,以其“一次编写,到处运行”的特性而闻名。
在本系统中,Java提供了基础的语法结构、类库支持以及内存管理,确保了系统的稳定性和高效性。
2. **Swing库**: Swing是Java Foundation Classes (JFC)的一部分,用于构建桌面应用的用户界面。
它提供了丰富的组件,如按钮、文本框、列表视图等,用于创建美观且功能强大的图形界面。
在图书管理系统中,Swing被用来构建诸如图书检索、借阅、归还等操作的交互界面。
3. **C/S架构**: C/S架构是指客户端与服务器之间的通信模式。
客户端负责用户交互和数据处理,服务器则处理客户端请求并提供服务。
在这种架构下,图书管理系统客户端可以本地运行,服务器端负责存储和管理图书信息,两者通过网络进行通信。
4. **SQL Server数据库**: 数据库是存储图书信息的关键。
本系统采用了Microsoft的SQL Server,一个强大的关系型数据库管理系统。
它支持SQL语言,可以进行复杂的数据查询、更新和管理。
SQL Server为图书信息的存储和检索提供了高效、安全的环境。
5. **数据库设计**: 在图书管理系统中,数据库通常包含如图书表、读者表、借阅记录表等。
图书表存储书名、作者、出版社等信息;
读者表记录读者的基本信息和借阅权限;
借阅记录表用于跟踪图书的借出和归还情况,确保数据的一致性。
6. **系统功能**: - **图书管理**:添加、删除、修改图书信息,以及对图书进行分类和标签化。
- **读者管理**:注册新读者,管理读者账户,设置借阅限制。
- **借阅与归还**:实现图书的借出和归还操作,记录借阅历史。
- **查询功能**:按书名、作者、类别等条件进行模糊或精确查询。
- **统计分析**:统计图书流通情况,分析借阅热门书籍等。
7. **项目适配场景**: 本系统适用于毕业论文和课程设计项目,可以帮助学生了解和实践软件工程中的需求分析、设计、编码、测试和维护等环节,同时掌握Java与数据库的结合应用。
8. **使用指南**: 用户需要先安装Java开发环境和SQL Server,然后将提供的"libraryManager"文件解压,导入到IDE(如Eclipse或IntelliJ IDEA)中。
配置好数据库连接后,可以直接运行程序,体验完整的图书管理流程。
总结,这个Java图书管理系统源码是一个集成了Java、Swing、C/S架构和SQL Server数据库的实用示例,对于学习和理解这些技术的融合应用具有很高的参考价值。
通过深入研究和实践,开发者可以提升自己的软件开发能力,特别是对于桌面应用和数据库管理的理解。
2025/6/15 19:55:27 1.59MB
1
简介:
【标题】"基于WebGL的海上大波浪动画特效"是一种使用WebGL技术在网页上实现的视觉效果,它能够创建出逼真的海洋波浪动态画面。
WebGL是一种JavaScript API,用于在任何兼容的浏览器中进行三维图形渲染,无需插件。
这个特效代码集成了jQuery库,可能用于简化DOM操作和事件处理,同时也利用了CSS特效来增强页面的表现力。
【描述】提到的效果是"非常实用的特效代码,可以完美运行,可以二次修改!"这意味着开发者可以轻松地将这个代码整合到自己的网页项目中,并且由于其良好的可定制性,可以根据需求调整波浪的形态、颜色、速度等参数。
这种特效不仅增加了网站的互动性和观赏性,还能为用户带来沉浸式体验,特别适合应用于海洋主题的网站、游戏或是动态背景。
【标签】"jQuery特效"表明这个代码中包含了使用jQuery库的部分,jQuery是一个广泛使用的JavaScript库,它简化了JavaScript的DOM操作、事件处理和动画效果。
"CSS特效"则意味着在HTML元素上应用了CSS样式来实现特定的视觉效果,可能包括渐变、过渡、变换等。
"网页特效"是对整个项目的概括,指这个代码主要用于提升网页的视觉吸引力。
【压缩包子文件的文件名称列表】中的"jiaoben8369"可能是示例代码或者资源文件的名称。
通常,这样的文件可能包含HTML文件(用于展示网页结构)、CSS文件(定义样式和特效)、JavaScript文件(包含WebGL和jQuery的实现逻辑),以及可能的图像或纹理文件(用于渲染波浪的表面效果)。
在深入研究这个特效时,开发者会接触到WebGL的基本概念,如顶点着色器和片段着色器,它们分别负责处理图形的位置和颜色。
还会涉及到数学知识,如向量运算和矩阵变换,用于计算波浪的起伏和运动。
此外,对jQuery的理解和熟练运用也是必要的,例如如何选择和操作DOM元素,以及如何绑定和触发事件。
CSS方面,可能涉及到动画和过渡属性,如`animation`和`transition`,以实现平滑的波浪动画效果。
"基于WebGL的海上大波浪动画特效"是一个结合了WebGL、jQuery和CSS技术的综合实例,对于想要提升网页交互性和视觉表现力的开发者来说,这是一个很好的学习和实践素材。
通过分析和修改这些代码,开发者不仅可以提升自己的技能,也能创造出独特的网页特效。
2025/6/15 19:52:26 178KB
1
简介:
### DB2数据库在Linux系统下的安装教程#### 一、环境准备与检查在开始安装DB2数据库之前,首先需要确保Linux系统的环境符合DB2的安装要求。
以下是一些基本的环境检查步骤:1. **确认Linux版本**: - 通过`uname -a`命令查看当前Linux系统的内核版本等信息。
- 通过`uname -r`命令确认内核版本。
- 通过`cat /etc/redhat-release`命令查看具体的发行版信息。
2. **系统信息示例**: - 系统名称:`Linux myrac1.oracle.com 2.6.32-358.el6.i686 #1 SMP Tue Jan 29 11:48:01 EST 2013 i686 i686 i386 GNU/Linux` - 内核版本:`2.6.32-358.el6.i686` - 发行版:`Red Hat Enterprise Linux Server release 6.4 (Santiago)`#### 二、安装DB2软件DB2的安装可以通过两种方式进行:1. **静默安装**: - 解压DB2安装包:`tar -zxvf v9.7_linuxia32_server.tar.gz` - 进入解压后的目录:`cd db2_install/` - 执行安装命令:`./db2_install`(并根据提示选择企业版)2. **图形界面安装**: - 同样先解压安装包并进入解压目录。
- 使用图形界面安装命令:`./db2setup`#### 三、创建用户组和用户为了满足DB2的权限需求,需要创建特定的用户组和用户:1. **创建用户组**: - `groupadd db2grp`:用于DB2实例的所有者。
- `groupadd db2fgrp`:用于DB2实例的围栏(fence)用户。
- `groupadd dasadm`:用于管理DAS(Distributed Access Services)的用户。
2. **创建用户**: - `useradd -m -g db2grp -d /home/db2inst -s /bin/bash db2inst`:创建DB2实例所有者用户。
- `useradd -m -g db2fgrp -d /home/db2fenc -s /bin/bash db2fenc`:创建围栏用户。
- `useradd -m -g dasadm -d /home/dasusr -s /bin/bash dasusr`:创建DAS用户。
3. **设置密码**: - `passwd db2inst`:为db2inst用户设置密码。
- `passwd db2fenc`:为db2fenc用户设置密码。
- `passwd dasusr`:为dasusr用户设置密码。
#### 四、安装DB2 License安装DB2许可是合法使用DB2的前提:1. **进入许可目录**: - `cd /opt/ibm/db2/V9.5/adm`2. **安装许可**: - `./db2licm -a /home/db2install/server/db2/license/db2ese_t.lic`#### 五、创建DAS和数据库实例1. **创建DAS**: - `./dascrt -udasusr`2. **创建数据库实例**: - `./db2icrt -p50000 -udb2fenc db2inst` - `-p50000`:指定DB2实例的服务端口为50000。
- `-udb2fenc`:指定围栏用户的用户名。
- `db2inst`:指定实例名和所有者名。
3. **设置数据库实例自动启动**: - `su - db2inst1` - `db2iauto on db2inst1`#### 六、配置实例用户为了使DB2实例用户能够正常工作,需要进行相应的环境配置:1. **编辑.bash_profile文件**: - 配置环境变量,如DB2_HOME、JAVA_HOME等,并设置CLASSPATH。
- 示例: ```bash DB2_HOME=/opt/ibm/db2/V9.7 JAVA_HOME=/opt/ibm/db2/V9.7/java/jdk32 CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$DB2_HOME/java/db2java.zip:$DB2_HOME/java/db2jcc.jar:$DB2_HOME/java/sqlj.zip:$DB2_HOME/java/db2jcc ```以上步骤详细介绍了在Linux环境下安装配置DB2数据库的过程,从环境准备到具体操作命令,为读者提供了全面且实用的指导。
2025/6/15 19:50:44 26KB
1
简介:
### CAS单点登录服务器配置详解#### 一、CAS单点登录概述CAS(Central Authentication Service)是一种开放源代码的单点登录协议和服务框架,它为Web应用提供了一种简化了的身份验证流程。
通过CAS,用户只需要在一个地方完成登录过程,即可在多个应用间共享登录状态,无需重复登录。
#### 二、CAS服务器安装与配置##### 2.1 安装CAS服务端1. **下载CAS服务端**:首先从官方网址http://www.cas.org/下载最新的CAS服务端压缩包。
2. **部署WAR包**:将下载的WAR包复制到Tomcat的webapps目录下,并将其重命名为`cas.war`。
3. **启动Tomcat**:启动Tomcat服务器,自动解压WAR包,此时会在Tomcat的webapps目录下生成一个名为`cas`的文件夹。
4. **访问CAS**:通过浏览器访问`http://localhost:8896/cas`来测试CAS服务是否正常启动。
##### 2.2 配置CAS使用数据库验证为了实现更安全、更灵活的身份验证机制,我们可以配置CAS使用数据库进行用户身份验证。
具体步骤如下:1. **修改部署配置文件**:打开`cas-server-webapp\WEB-INF\deployerConfigContext.xml`文件,找到`SimpleTestUsernamePasswordAuthenticationHandler`配置项,将其替换为`QueryDatabaseAuthenticationHandler`。
```xml <bean id="authenticationHandler" class="org.jasig.cas.authentication.handler.QueryDatabaseAuthenticationHandler"> <!-- 数据库连接数据源 --> <property name="dataSource" ref="dataSource"/> <!-- 查询语句 --> <property name="sql" value="SELECT password FROM users WHERE username = ?"/> <!-- 密码加密方式 --> <property name="passwordEncoder" ref="passwordEncoder"/> </bean> ```2. **配置数据库连接**:在同一文件中添加一个新的`dataSource` bean来定义数据库连接信息。
```xml <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/casdb"/> <property name="username" value="casuser"/> <property name="password" value="password"/> </bean> ```3. **配置密码加密方式**:继续在同一文件中添加`passwordEncoder` bean来指定密码加密方式,这里使用MD5作为示例。
```xml <bean id="passwordEncoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder"> <constructor-arg value="MD5"/> </bean> ```4. **测试数据库验证**:重启Tomcat服务器,访问CAS服务器页面,使用数据库中的用户名和密码尝试登录,验证是否可以成功登录。
#### 三、CAS工作原理CAS的工作原理主要分为以下几个步骤:1. **用户访问服务**:用户首次访问受保护的资源时,CAS客户端会检测到HTTP请求中缺少ServiceTicket(简称ST),表明用户尚未经过身份验证。
2. **重定向至CAS服务器**:CAS客户端会将用户重定向到CAS服务器进行身份验证,并携带用户的请求URL作为参数(service参数)。
3. **用户认证**:CAS服务器接收到来自用户的认证请求后,引导用户进入登录页面。
用户输入用户名和密码进行登录,若身份验证成功,则CAS服务器通过HTTPS协议返回一个TGC(Ticket-Granting Cookie)给浏览器。
4. **发放ServiceTicket**:CAS服务器生成一个随机的ServiceTicket(简称ST),并将用户重定向回CAS客户端。
5. **验证ServiceTicket**:CAS客户端收到ST后,向CAS服务器验证ST的有效性。
如果验证通过,则允许用户访问受保护资源。
6. **传输用户信息**:CAS服务器验证ST通过后,将用户的相关认证信息发送给CAS客户端。
通过以上步骤,CAS实现了单点登录的功能,极大地提升了用户体验和系统的安全性。
### 四、CAS与HTTPS在配置CAS服务器时,可以选择使用HTTPS协议来增强通信的安全性。
如果选择HTTPS协议,则需要在服务器上配置CAS证书。
证书的创建和导入过程可以参考以下链接:[http://m.blog..net/zrk1000/article/details/51166603](http://m.blog..net/zrk1000/article/details/51166603)### 总结本文详细介绍了如何配置CAS单点登录服务,并重点讲解了如何利用Java代码实现CAS的配置,包括使用数据库进行登录验证的具体步骤。
同时,还阐述了CAS的基本工作原理,帮助读者更好地理解CAS的工作流程和技术细节。
2025/6/15 19:47:19 293KB
1
本程序实现功能:1.DataGrid数据的显示、修改与保存2.DataGrid数据导入至Excel3.DataGrid数据导入至Word
2025/6/15 3:32:05 77KB WPF DataGrid 导入 Excel
1
计算机图形学猫变虎作业代码及示例结果,c++语言编程
2025/6/15 3:34:36 13.86MB 猫变虎 代码
1
在Android开发中,自定义View是一项常见的任务,它允许开发者根据特定需求创建独特且功能丰富的UI元素。
本示例中的“自定义View实现仪表盘(账户安全)Demo”旨在展示如何构建一个能够显示用户账户安全等级的仪表盘。
这个仪表盘可以直观地向用户展示他们的账户安全性,例如通过颜色、刻度或指针的变化来表示不同的安全级别。
要实现自定义View,我们需要创建一个新的Java类,继承自`View`或者它的子类,如`LinearLayout`、`RelativeLayout`等。
在这个例子中,我们可能会选择`View`作为基类,因为我们需要从头开始构建仪表盘的全部视觉元素。
在类中,我们可以重写`onDraw()`方法,这是绘制自定义图形的核心函数。
在`onDraw()`中,我们使用`Canvas`对象进行绘图操作。
`Canvas`提供了多种绘制图形的方法,如`drawRect()`,`drawCircle()`,`drawArc()`,`drawPath()`等。
对于仪表盘,我们可能需要使用`drawArc()`来绘制表盘的背景和指针,用`drawText()`来添加刻度值和安全等级文字。
仪表盘的结构通常包括一个中心圆环(代表表盘),外围的刻度线,以及一个可移动的指针来指示当前的安全等级。
我们可以根据安全等级计算出指针旋转的角度,并利用`rotate()`方法将其设置为相应的角度。
此外,颜色编码也是仪表盘的一个重要组成部分,比如绿色表示安全,黄色表示警告,红色表示危险。
为了使仪表盘具有动态效果,可以监听数据变化,如用户的安全分数更新。
当分数改变时,更新指针角度和颜色,然后调用`invalidate()`或`postInvalidate()`来触发`onDraw()`的再次执行,实现视图的刷新。
在“Test_Customview2”这个文件中,可能包含了自定义仪表盘View的源代码、布局文件以及测试用例。
布局文件(可能是`activity_main.xml`)将自定义View添加到UI层次结构中,以便在应用中显示。
测试用例可能用于验证仪表盘的正确渲染和行为,确保在不同安全等级下能正确显示。
为了提高代码的可维护性和复用性,还可以考虑将仪表盘组件封装成一个独立的库,提供配置接口供其他开发者调整颜色、刻度数量、指针样式等参数。
这样,这个自定义View就能更方便地应用到其他项目中。
“自定义View实现仪表盘(账户安全)Demo”展示了如何在Android中创建一个自定义的UI组件,通过编程方式绘制出仪表盘并动态响应数据变化。
这样的技术对于开发者来说是提升应用用户体验和界面差异化的重要手段。
通过深入理解和实践这个Demo,开发者可以进一步掌握Android自定义View的设计与实现。
2025/6/15 0:01:33 1.42MB
1
浅墨出品,零资源分下载,分享精神至上~运行可以看到两幅图中的SURF特征点检测效果,为稍后将放出的特征点匹配做准备~程序的核心部分为OpenCV中的SurfFeatureDetector类和SurfDescriptorExtractor类。
博文《【OpenCV入门教程之十七】OpenCV重映射&SURF特征点检测合辑》的配套详细注释源代码之一。
博文链接:http://blog.csdn.net/poem_qianmo/article/details/309745131.已将dll打包到Release文件夹下,运行Release文件夹中的exe可以直接看到运行结果.2.源代码运行需要进行OpenCV+VS开发环境的配置。
可以参看我写的配置博文:http://blog.csdn.net/poem_qianmo/article/details/198093373.编写环境:VisualStudio20104.写作当前代码时配套使用的OpenCV版本:2.4.95.推荐代码结合博文一起看,学习效果更佳。
by@浅墨_毛星云
2025/6/14 14:35:17 2.13MB OpenCV SURF C++ 图像处理
1
###Ledit使用教程与实例说明####一、引言随着集成电路技术的快速发展,越来越多的设计公司致力于将整个系统整合到单一芯片上,这被称为System-on-a-Chip(SoC)技术。
为了培养更多专业人才,各大高校纷纷开设了专用集成电路设计课程。
本文档旨在详细介绍使用TannerPro系列工具中的Ledit进行电路和版图设计的方法。
Ledit是一款功能强大的布局编辑器,广泛应用于集成电路设计领域。
####二、Ledit基础知识#####2.1实验目的及要求-**实验目的**:熟悉Ledit的基本操作界面;
掌握Ledit的主要功能,包括创建、编辑和修改版图;
理解如何使用Ledit进行版图设计和优化。
-**实验要求**:了解Ledit的基本概念;
掌握Ledit的使用方法;
能够独立完成简单的版图设计任务。
#####2.2相关知识-**Ledit概述**:Ledit是TannerEDA提供的布局编辑器之一,主要用于绘制和编辑集成电路的物理版图。
它可以与TannerEDA的其他工具(如S-Edit和T-Spice)无缝集成,实现电路设计和模拟的全流程。
-**主要功能**:Ledit支持多种层定义和颜色设置;
提供丰富的绘图工具,如线条、矩形、圆等;
具备层间检查和错误修正功能;
能够导出多种格式的版图文件。
-**工作流程**:通常情况下,设计人员会先使用S-Edit完成电路图的设计,然后在Ledit中根据电路图绘制对应的物理版图,最后使用T-Spice对版图进行电气特性模拟。
#####2.3实验内容-**实验准备**:安装TannerPro工具包,确保Ledit等组件正确安装;
准备必要的参考文档或教程。
-**基本操作**:-启动Ledit,熟悉主界面布局。
-创建新的版图文件,设置层定义和颜色。
-使用绘图工具绘制简单的版图元素。
-学习如何移动、复制、旋转和缩放版图元素。
-执行层间检查,修复可能存在的错误。
-**高级功能**:-掌握批量编辑工具,提高设计效率。
-学习如何使用脚本自动化重复性高的设计任务。
-了解如何与其他TannerEDA工具配合使用,实现完整的电路设计流程。
#####2.4随堂练习-练习1:绘制一个简单的CMOS反相器版图。
-练习2:根据提供的电路图,在Ledit中绘制对应的物理版图,并使用T-Spice进行性能模拟。
-练习3:使用Ledit的高级功能优化版图布局,减少面积并改善电气特性。
#####2.5说明-在使用Ledit进行版图设计时,需要注意遵守特定的设计规则,以确保最终产品的可靠性和性能。
-设计过程中可能会遇到各种问题,如DRC错误等,需学会如何排查和解决这些问题。
#####2.6实验报告及要求-**实验报告**:总结实验过程中的所学知识,包括使用的具体工具和技术;
记录实验过程中遇到的问题及其解决方案;
分析版图设计的优劣点,提出改进建议。
-**报告要求**:实验报告应当结构清晰、逻辑严谨;
图表清晰,标注准确;
文字描述简洁明了,避免冗余。
####三、实例说明以下是一个具体的Ledit使用示例,用于指导学生如何完成一个简单的CMOS反相器版图设计:1.**准备工作**:-打开Ledit软件。
-创建一个新的项目文件,设置合适的层定义。
2.**版图设计**:-绘制NMOS和PMOS晶体管。
-连接源极、栅极和漏极。
-添加接触孔和金属层。
3.**版图优化**:-调整元件位置,确保足够的间距。
-使用Ledit的高级工具进行布线优化。
-执行DRC检查,修正错误。
4.**性能模拟**:-将设计好的版图文件导入T-Spice进行模拟。
-分析输出波形,评估电路性能。
-根据模拟结果调整版图设计,直至满足性能要求。
通过本教程的学习,学生将能够熟练掌握Ledit的基本操作,并能够在实际项目中运用这些技能进行高效的电路版图设计。
此外,学生还将了解到集成电路设计的全流程,从电路图设计到物理版图的实现,再到最终的性能模拟与优化。
这对于培养未来的集成电路设计师来说至关重要。
2025/6/13 11:58:24 956KB ledit
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡