###HP3PAR存储日常管理手册关键知识点解析####一、3PAR存储介绍**1.3PARInSpire架构**-**紧密集群化与多客户端设计**:3PARInSpire架构的设计核心在于解决传统整体式和模块化阵列的价格昂贵与扩展复杂的问题。
该架构允许用户按需购买与扩展,这意味着可以从一个小规模系统开始,随着业务需求的增长逐步添加更多的应用和工作负载,所有这些都在一个单一、自动化的分层存储阵列中实现。
-**内置ThinBuiltIn™的Gen3/Gen4ASIC**:3PARGen3/Gen4ASIC提供了一种高效、基于硬件的零检测机制,与3PAR自身的“精简引擎”协同工作,可以有效移除已分配但未使用的空间,同时不影响性能。
这一特性对于混合工作负载尤其重要,因为它可以显著提高虚拟机的密度,进而减少物理服务器的需求。
-**主动网格控制器技术**:3PAR的主动网格控制器技术是一种独特的设计,与传统的“active-active”控制器架构不同,在后者的架构中,每个LUN或卷只能在一个单控制器上处于活动状态。
而在3PAR的设计中,每个LUN在所有网格控制器上都是活动的,从而提供了更强大的负载均衡能力。
-**细粒度的虚拟化和宽条带化**:3PARInSpire架构通过大规模并行、细粒度的数据条带化来确保为所有类型的工作负载提供高级别的服务。
通过将物理磁盘划分为统一的256MB存储块,并根据RAID类型、驱动器类型、径向位置和条带宽度等参数自动选择和分组这些数据块,从而满足用户定义的性能、成本和高可用性要求。
这样的设计使得工作负载可以自动分配和重新平衡,确保了系统的高可用性和性能的一致性。
-**持续缓存**:持续缓存是一项弹性功能,它能够消除意外组件故障导致的性能损失,这对于维持虚拟数据中心的服务水平至关重要。
该功能能够在组件发生故障时继续提供服务,而不会出现性能下降。
####二、日常配置**1.添加主机Host**-添加主机是指将需要访问存储资源的服务器或计算节点加入到存储系统中。
通常涉及配置主机的IP地址、认证方式等信息,以确保主机能够安全地访问存储资源。
**2.创建CPG(CommonProvisioningGroup)**-CPG是一种存储池,它汇集了多个物理磁盘,并提供了统一的存储资源池。
创建CPG可以根据特定的性能和冗余需求定制存储策略。
**3.创建VV虚拟磁盘**-VV(VirtualVolume)是3PAR存储系统中的基本存储单元,类似于传统磁盘。
通过创建VV,用户可以根据实际需求定义存储容量、性能和冗余级别。
**4.分配VV虚拟磁盘**-分配VV指的是将创建好的虚拟磁盘分配给特定的主机或应用使用。
这一过程可能包括设置访问权限、加密选项等细节。
####三、日常维护**1.存储开机步骤**-开机步骤可能包括启动电源供应、初始化存储控制器、加载操作系统等。
确保按照正确的顺序执行这些步骤非常重要,以避免数据丢失或损坏。
**2.存储关机步骤**-关机步骤同样重要,通常包括卸载文件系统、停止存储服务、关闭电源等。
正确执行关机步骤有助于保护数据的安全性。
**3.存储日志Insplore收集**-Insplore是一种用于收集3PAR存储系统日志的方法。
收集这些日志对于监控系统健康状况、诊断问题和规划未来扩展非常重要。
**4.管理机SP日志SPLOR收集**-SPLOR是用于收集存储管理机(SP)日志的一种方法。
这些日志提供了关于存储系统管理层面的重要信息,有助于优化存储系统的管理效率。
**5.特定信息CLI命令行收集**-CLI(CommandLineInterface)命令行工具允许管理员通过命令行输入特定的指令来收集有关存储系统的信息。
这对于需要深入了解系统状态的情况非常有用。
####四、HP支持服务模式**1.主动式响应--SPCall-Home**-SPCall-Home是一种主动式支持服务,当存储系统检测到潜在问题时会自动通知HP支持中心。
这种方式有助于及时发现并解决问题,减少停机时间。
**2.被动式响应—HP服务热线**-当用户遇到问题时,可以通过HP服务热线寻求帮助。
这是一种被动式的响应方式,依赖于用户的主动联系。
**3.被动式响应—邮寄存储日志**-如果无法通过远程方式解决某些问题,用户可能需要将存储日志发送给HP支持团队进行进一步分析。
这种方式适用于那些需要深入诊断的情况。
以上内容详细阐述了HP3PAR存储系统的几个关键方面,包括其架构特点、日常配置和维护的操作流程,以及HP提供的支持服务模式。
通过对这些知识点的理解,可以帮助IT专业人员更好地管理和利用3PAR存储系统,确保其高效稳定地运行。
2024/12/29 5:38:03 2.19MB 3PAR存储
1
ModelsimSE10.564位安装步骤:1.安装软件,注意:安装目录避免出现中文或空格,安装过程一直点击Yes即可。
2.把MentorKG.exe、mgls.dll以及patch64_dll.bat一起拷贝到modelsim安装目录的win32或win64下,例如【D:\Software\Modelsim_10.5\win64】。
3.进入安装目录下的win64文件夹找到mgls.dllmgls64.dll两个文件,去掉只读属性。
4.运行patch64_dll.bat,产生license后,放到任意目录下,例如【D:\Software\Modelsim_10.5\】。
5.新建用户环境变量【MGLS_LICENSE_FILE】,变量值为license放置的目录,例如:【D:\Software\Modelsim_10.5\LICENSE.TXT】。
6.安装破解结束。
2024/12/28 18:49:57 1.2MB Modelsim SE 10.5 crack
1
对于Windows64bits操作系统而言,在安装软件时候,需要进行签名认证,这是微软必须要求的。
此软件的目的就是避免每次开机需要按F8强制进行签名认证。
2024/12/24 20:25:57 630KB 免签名认证 去除签名
1
可便捷开启,关闭D3D加速的批处理文件,避免新型操作系统运行老Flash时的卡顿问题
2024/12/24 14:47:19 641B D3D
1
自己花钱买的电子书,高清完整版!很实用的教材,读起来一点也不晦涩。
目录译者序前言第1章概论1.1推动因素1.2基本计算机组成1.3分布式系统的定义1.4我们的模型1.5互连网络1.6应用与标准1.7范围1.8参考资料来源参考文献习题第2章分布式程序设计语言2.1分布式程序设计支持的需求2.2并行/分布式程序设计语言概述2.3并行性的表示2.4进程通信与同步2.5远程过程调用2.6健壮性第3章分布式系统设计的形式方法3.1模型的介绍3.1.1状态机模型3.1.2佩特里网3.2因果相关事件3.2.1发生在先关系3.2.2时空视图3.2.3交叉视图3.3全局状态3.3.1时空视图中的全局状态3.3.2全局状态:一个形式定义3.3.3全局状态的“快照”3.3.4一致全局状态的充要条件3.4逻辑时钟3.4.1标量逻辑时钟3.4.2扩展3.4.3有效实现3.4.4物理时钟3.5应用3.5.1一个全序应用:分布式互斥3.5.2一个逻辑向量时钟应用:消息的排序3.6分布式控制算法的分类3.7分布式算法的复杂性第4章互斥和选举算法4.1互斥4.2非基于令牌的解决方案4.2.1Lamport算法的简单扩展4.2.2Ricart和Agrawala的第一个算法4.2.3Maekawa的算法4.3基于令牌的解决方案4.3.1Ricart和Agrawala的第二个算法4.3.2一个简单的基于令牌环的算法4.3.3一个基于令牌环的容错算法4.3.4基于令牌的使用其他逻辑结构的互斥4.4选举4.4.1Chang和Roberts的算法4.4.2非基于比较的算法4.5投标4.6自稳定第5章死锁的预防、避免和检测5.1死锁问题5.1.1死锁发生的条件5.1.2图论模型5.1.3处理死锁的策略5.1.4请求模型5.1.5资源和进程模型5.1.6死锁条件5.2死锁预防5.3一个死锁预防的例子:分布式数据库系统5.4死锁避免5.5一个死锁避免的例子:多机器人的灵活装配单元5.6死锁检测和恢复5.6.1集中式方法5.6.2分布式方法5.6.3等级式方法5.7死锁检测和恢复的例子5.7.1AND模型下的Chandy,Misra和Hass算法5.7.2AND模型下的Mitchell和Merritt算法5.7.3OR模型下的Chandy,Misra和Hass算法第6章分布式路由算法6.1导论6.1.1拓扑6.1.2交换6.1.3通信类型6.1.4路由6.1.5路由函数6.2一般类型的最短路径路由6.2.1Dijkstra集中式算法6.2.2Ford的分布式算法6.2.3ARPAnet的路由策略6.3特殊类型网络中的单播6.3.1双向环6.3.2网格和圆环6.3.3超立方6.4特殊类型网络中的广播6.4.1环6.4.22维网格和圆环6.4.3超立方6.5特殊类型网络中的组播6.5.1一般方法6.5.2基于路径的方法6.5.3基于树的方法第7章自适应、无死锁和容错路由7.1虚信道和虚网络7.2完全自适应和无死锁路由7.2.1虚信道类7.2.2逃逸信道7.3部分自适应和无死锁路由7.4容错单播:一般方法7.52维网格和圆环中的容错单播7.5.1基于局部信息的路由7.5.2基于有限全局信息的路由7.5.3基于其他故障模型的路由7.6超立方中的容错单播7.6.1基于局部信息的模型7.6.2基于有限全局信息的模型:安全等级7.6.3基于扩展安全等级模型的路由:安全向量7.7容错广播7.7.1一般方法7.7.2使用全局信息的广播7.7.3使用安全等级进行广播7.8容错组播7.8.1一般方法7.8.2基于路径的路由7.8.3使用安全等级在超立方中进行组播第8章分布式系统的可靠性8.1基本模型8.2容错系统设计的构件模块8.2.1稳定存储器8.2.2故障-停止处理器8.2.3原子操作8.3节点故障的处理8.3.1向后式恢复8.3.2前卷式恢复8.4向后恢复中的问题8.4.1检查点的存储8.4.2检查点方法8.5处理拜占庭式故障8.5.1同步系统中的一致协议8.5.2对一个发送者的一致8.5.3对多个发送者的一致8.5.4不同模型下的一致8.5.5对验证消息的一致8.6处理通信故障8.7处理软件故障第9章静态负载分配9.1负载分配的分类9.2静态负载分配9.2.1处理器互连9.2.2任务划分9.2.3任务分配9.3不同调度模型概述9.4基于任务优先图的任务调度9.5案例学习:两种最优调度算法9.6基于任务相互关系图的任务调度9.7案例学习:域划分9.8使用其他模型和目标的调度9.8.1网络流量技术:有不同处理器能力的任务相互关系图9.8.2速率单调优先调度和期限驱动调度:带实时限制的定期任务9.8.3通过任务复制实现故障安全调度:树结构的任务优先图9.9未来的研究方向第10章动态负载分配10.1动态负载分配10.1.1动态负载分配的组成要素10.1.2动态负载分配算法10.2负载平衡设计决策10.2.1静态算法对动态算法10.2.2多样化信息策略10.2.3集中控制算法和分散控制算法10.2.4移植启动策略10.2.5资源复制10.2.6进程分类10.2.7操作系统和独立任务启动策略10.2.8开环控制和闭环控制10.2.9使用硬件和使用软件10.3移植策略:发送者启动和接收者启动10.4负载平衡使用的参数10.4.1系统大小10.4.2系统负载10.4.3系统交通强度10.4.4移植阈值10.4.5任务大小10.4.6管理成本10.4.7响应时间10.4.8负载平衡视界10.4.9资源要求10.5其他相关因素10.5.1编码文件和数据文件10.5.2系统稳定性10.5.3系统体系结构10.6负载平衡算法实例10.6.1直接算法10.6.2最近邻居算法:扩散10.6.3最近邻居算法:梯度10.6.4最近邻居算法:维交换10.7案例学习:超立方体多计算机上的负载平衡10.8未来的研究方向第11章分布式数据管理11.1基本概念11.2可串行性理论11.3并发控制11.3.1基于锁的并发控制11.3.2基于时戳的并发控制11.3.3乐观的并发控制11.4复制和一致性管理11.4.1主站点方法11.4.2活动复制11.4.3选举协议11.4.4网络划分的乐观方法:版本号向量11.4.5网络分割的悲观方法:动态选举11.5分布式可靠性协议第12章分布式系统的应用12.1分布式操作系统12.1.1服务器结构12.1.2八种服务类型12.1.3基于微内核的系统12.2分布式文件系统12.2.1文件存取模型12.2.2文件共享语义12.2.3文件系统合并12.2.4保护12.2.5命名和名字服务12.2.6加密12.2.7缓存12.3分布式共享内存12.3.1内存相关性问题12.3.2Stumm和Zhou的分类12.3.3Li和Hudak的分类12.4分布式数据库系统12.5异型处理12.6分布式系统的未来研究方向附录DCDL中的通用符号列表
2024/12/20 22:56:08 29.64MB 分布式系统设计 jie wu著 高传善
1
bootstrap完整Demo。
BootStrap是基于HTML、CSS和JavaScript的框架,使你只需要写简单的代码就可以很快的搭建一个还不错的前端框架,他是后端程序员的福音,使他们只需要专注业务逻辑,而无须浪费太多的精力在界面设计上。
它可以开发全响应式网页——不论你使用手机、平板电脑、普通个人电脑浏览网站内容,所有的元素都可以很优雅的呈现。
所以,可以用他来开发适合各种设备浏览的页面,避免了大量的因为兼容性而导致的重复劳动。
它的最新版本是4.0,国内目前用的较多的是3.x,我们的教程也基于BootStrap3.x版本,也是目前最受欢迎的前端框架之一。
你可以使用默认的BootStrap样式和组件,你也可以对代码简洁。
2024/12/15 7:53:56 2.29MB bootstrap demo 前端框架 学习
1
关于这是的源代码,该项目由lab10集体与KunsthausGraz等人合作发起,于2017年10月启动。
有关更多信息,请访问和(如果您对应用程序如何使用以太坊和IPFS感兴趣,则尤其是)。
安装和运行Web应用程序安装后端和前端依赖项:npmicdfrontendnpmi保存时,前端和后端都会自动重载源文件,使用nodemon的node.js后端,react.js前端webpack都会自动重装源文件。
可以使用以下方法启动组合的前端/后端开发环境:npmstartEslint已配置,但未强制执行。
请尝试提交您的代码,而不减少错误/警告。
要手动运行eslint,请使用:npmlint要在每个保存/更改的源文件上自动运行单元测试:npmruntest----watchWeb应用架构该Web应用程序负责向用户展示游戏,处理用户输入并将信息分发到各种其他子系统,例如数据库,区块链和BIX。
前端和后端之间的通信是使用经过时间检验且易于使用的socket.io库完成的。
需要建立通信体系结构,以免引起服务器潜在的拥塞,尤其是应避免(可
2024/12/9 10:34:09 1.33MB nodejs socket-io ethereum ipfs
1
《php+html5实现无刷新上传,大文件分片上传,断点续传》这个代码的改进版本,采用了多队列同时上传模式,改进了进度条在大视频文件上传时卡死问题,尤其解决了原作者最大的BUG,ajax的的对象放错位置了,这个也坑了我半天时间,目前已全部改进,PHP,将直接使用content拼接改成了文件追加模式,避免内存耗尽卡死
2024/12/7 12:31:34 111KB 大文件分片 断点续传 视频 文件
1
对即将找工作的大学生,研究生都爱刷leetcode的题目,但是刚刚接受无法适从,或是一时半会儿想不到解法,没关系,leetcode题解PDF可一带你慢慢了解思路过程。
目录3.4Addbinary615.1.5BinaryTreeLevelOr-3.5LongestPalindromicSubstring.62dertraversalil3.6RegularExpressionMatching665.1.6BinaryTreeZigzag3.7WildcardMatching67LevelOrdertraversal.963.8LongestCommonPrefix5.1.7RecoverBinarySearch3.9ValidNumber70Tree983.10Integertoroman725.1.8SameTree3.11RomantoInteger5.1.9SymmetricTree1013.12CountandSay745.1.10BalancedBinaryTree..1023.13Anagrams755.1.11FlattenBinaryTreeto3.14SimplifyPath76LinkedList1033.15LengthofLastWord775.1.12PopulatingNextRightPointersineachnodeii105第4章栈和队列7952二叉树的构建1074.1栈795.2.1ConstructBinaryTree4ValidParentheses79fromPreorderandIn4.1.2LongestvalidParenorderTraversatheses805.2.2ConstructBinaryTree4.1.3LargestRectangleinfromInorderandposHistogram82torderTraversal1084.14Evaluatereversepol-53二叉查找树109ishnotation845.3.1UniqueBinarySearch4,2队列85Trees5.3.2UniqueBinarySearch第5章树86Treesli.1105.1二叉树的遍历865.3.3ValidateBinarySearch5.1.1BinaryTreePreorderTreeTraversal865.3.4ConvertSortedarrayto5.1.2BinaryTreeInorderBinarySearchTreel12Traversal885.3.5ConvertSortedListto5.1.3BinaryTreePostorderBinarysearchtree113Traversal9054二叉树的递归1155.1.4BinaryTreeLevelOr5.4.1MinimumDepthofBidertraversalnarylree115目录5.4.2MaximumDepthofBi8.32重新实现nextpermunaryTree116tation1425.4.3PathSum117833递归.1435.44PathSumil1188.4PermutationsII1445.4.5BinaryTreeMaximum8.4.1nextpermutation...144PathSuum119842重新实现nextpermu5.4.6PopulatingNextRighttation144Pointersineachnode12084.3递归1445.4.7SumRoottoLeafNum8.5Combinations146bers122851递归146852迭代147第6章排序1238.6LetterCombinationsofaphone6.1MergeSortedArray123umber1476.2MergeTwoSortedLists12486.1递归1486.3MergekSortedLists124862迭代96.4InsertionSortList125第9章广度优先搜索1506.5Sortlist1269.1WordLadder1506.6FirstMissingPositive1279.2WordLadderil..1526.7SortColors289.3Surroundedregions154第7章查找94小结15613194.1适用场景1567.1Searchforarange131942思考的步骤.1567.2SearchInsertPosition.13294.3代码模板1577.3Searcha2DMatrix133第10章深度优先搜索162第8章暴力枚举法13510.1PalindromePartitioning..1628.1Subsets13510.2UniquePaths1658.1.1递归1350.2.1深搜1658.1.2迭代.13710.22备忘录法.1658.2Subsetsil13810.23动规166821递归1381024数学公式167822迭代.14110.3UniquePathsIl1688.3Permutations14210.3.1备忘录法1688.3.1nextpermutation14210.3.2动规.169目录10.4N-Queens16913.4Maximalrectangle19910.5N-QueensII17213.5BestTimetoBuyandSellStock10.6Restoreipaddresses17320010.7CombinationSum17413.6InterleavingString20110.8CombinationSumIl17513.7ScrambleString20310.9GenerateParentheses.17713.8MinimumPathSum20810.10Sudokusolver17813.9EditDistance21010.11WordSearch.18013.10DecodeWays.21210.12小结18113.11DistinctSubsequences21310.12.1适用场景1813.12WordBreak21410.122思考的步骤1811313WordBreakil21610.12.3代码模板183第14章图21810.12.4深拽与回溯法的区别.18414.1CloneGraph10.12.5深搜与递归的区别..184第15章细节实现题221第11章分治法18515.1ReverseInteger2211.1Pow(x,n)18515.2PalindromeNumber222qrt(x18615.3InsertInterval223第12章贪心法18715.4MergeIntervals22412.1Jumpgame18715.5MinimumWindowSubstring..22512.2JumpgameIl18815.6MultiplyStrings22712.3BestTimetobuyandsellstock19015.7SubstringwithConcatenation12.4BestTimetobuyandsellstock191ofallwords23012.5LongestSubstringWithoutre15.8Pascal,sTrianglepeatingCharacters19215.9PascalsTriangleIl23212.6ContainerwithmostWater.19315.10Spiralmatrix23315.11SpiralmatrixII234第13章动态规划19515.12ZigZagConversion23613.1Triangle19515.13DivideTwoIntegers23713.2MaximumSubarray19615.14TextJustification23813.3PalindromePartitioningII19815.15MaxPointsonaline目录第1章编程技巧在判断两个浮点数a和b是否相等时,不要用a=-b,应该判断二者之差的绝对值fabs(a-b)是否小于某个阈值,例如1e-9。
判断一个整数是否是为奇数,用x%2!=0,不要用x%2==1,因为x可能是负数用char的值作为数组下标(例如,统计字符串中每个字符出现的次数),要考虑到char可能是负数。
有的人考虑到了,先强制转型为unsignedint再用作下标,这仍然是错的。
正确的做法是,先强制转型为unsignedchar,再用作下标。
这涉及C++整型提升的规则,就不详述了。
以下是关于STL使用技巧的,很多条款来自《EffectiⅤveStL》这本书。
vector和string优先于动态分配的数组首先,在性能上,由于vector能够保证连续内存,因此一旦分配了后,它的性能跟原始数组相当其次,如果用new,意味着你要确保后面进行了delete,一旦忘记了,就会岀现BUG,且这样需要都写一行delete,代码不够短再次,声明多维数组的话,只能一个一个new,例如:int**ary=newint*[row_num];for(inti=0:i<rownum;++1)ary[i]newint[col_num]用vector的话一行代码搞定,vector<vector<int>>ary(row_num,vector<int>(col_num,0))使用reserve来避免不必要的重新分配第2章线性表这类题目考察线性表的操作,例如,数组,单链表,双向链表等。
21数组2.1.1RemoveDuplicatesfromSortedarray描述Givenasortedarray,removetheduplicatesinplacesuchthateachelementappearonlyonceandreturnthenewlengthDonotallocateextraspaceforanotherarray,youmustdothisinplacewithconstantmemoryForexample,GiveninputarrayA=[1,1,2Yourfunctionshouldreturnlength=2,andaisnow[1,2]分析无代码1/LeetCode,RemoveDuplicatesfromSortedArray/时间复杂度0(n),空间复杂度0(1)classSolutiontublicintremoveDuplicates(intA[],intn)tlf(n==oreturnointindex=0:for(inti=1:i<n:i++iif(Alindex!alidA[++index]=Alireturnindex12.1数组代码2//LeetCode,RemoveDuplicatesfromSortedArray//使用STL,时间复杂度0(n),空间复杂度0(1)classSolutionipublicintremoveDuplicates(intA[,intn)treturndistance(A,unique(A,An))代码3/LeetCode,RemoveDuplicatesfromSortedArray/使用STL,时间复杂度0(n),空间复杂度0(1)lassSolutionfublicintremoveDuplicates(intA[],intn)treturnremoveDuplicates(A,A+n,A)-A;template<typenameInIt,typenameoutit>OutItremoveDuplicates(InItfirst,InItlast,OutItoutput)thile(firstlast)i*output++=*firstfirstupper_bound(first,last,*firstreturnoutput相关题目RemoveduplicatesfromSortedArrayIl,见§2.1.22.1.2RemoveDuplicatesfromSortedArrayII描述Followupfor"RemoveDuplicates"Whatifduplicatesareallowedatmosttwice?Forexample,Givensortedarraya=[1,1,1,2,2,3]Yourfunctionshouldreturnlength=5,andAisnow[1,1,2,2,3分析加一个变量记录一下元素出现的次数即可。
这题因为是已经排序的数组,所以一个变量即可解决。
如果是没有排序的数组,则需要引入一个hashmap来记录出现次数4第2章线性表代码1//LeetCode,RemoveDuplicatesfromSortedArrayII/时间复杂度0(n),空间复杂度0(1)//qauthorhex108(https://github.com/hex108)classSolutiontublicintremoveDuplicates(intA[],intn)tlf(n<=2returnnintindex=2for(inti=2:in:1++)if(all]!Alindex-2])ALindex++]=Ali]returnindex;代码2下面是一个更简洁的版本。
上面的代码略长,不过扩展性好一些,例如将occur<2改为ocur<3,就变成了允许重复最多3次。
//LeetCode,RemoveDuplicatesfromSortedArrayII//@author虞航仲(http://weibo.com/u/1666779725)//时间复杂度0(n),空间复杂度0(1)classSolutionipublicintremoveDuplicates(intA[],intn)tmtindex=ofor(intif(i>0&&i<1&&A[i]==A[i-1]&&A[i]==A[i+1])continueAlindex++]=Alireturnindex;相关题目RemoveDuplicatesfromSortedArray,见§2.1.12.1.3SearchinRotatedSortedArray描述Supposeasortedarrayisrotatedatsomepivotunknowntoyoubeforehand
2024/12/7 0:08:16 1.03MB leetcode题解
1
用于Arduino面包板电路绘图,帮助设计者更好在面包板上布线,理清器件连接关系,避免接错线引起的短路等严重影响。
2024/12/6 1:21:03 297.59MB arduino
1
共 662 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡