环境要求PHP>=7.0PHPfileinfo拓展储存文件需要用到PHPgd拓展控制台显示二维码PHPposix拓展控制台显示二维码(linux)PHP系统命令拓展执行clear命令PHPSimpleXML拓展解析XML安装请确保已经会使用composer!运行微信账号的语言设置务必设置为简体中文!!否则可能出现未知的错误!1、gitgitclonehttps://github.com/HanSon/vbot.gitcdvbotcomposerinstall2、composercomposerrequirehanson/vbot运行正常运行phpexample/index.php带session运行phpexample/index.php--sessionyoursession关于session:带session运行会自动寻找设定session指定的cookies,如不存在则新建一个文件夹位于/tmp/session中,当下次修改代码时再执行就会免扫码自动登录。
如果不设置,vbot会自动设置一个6位的字符的session值,下次登录也可以直接设定此值进行面扫码登录。
PS:运行后二维码将保存于设置的缓存目录,命名为qr.png,控制台也会显示二维码,扫描即可(linux用户请确保已经打开ANSICOLOR)警告!执行前请先查看index.php的代码,注释掉你认为不需要的代码,避免对其他人好友形成困扰请在terminal运行!请在terminal运行!请在terminal运行!目录结构vbotdemo(vbot当前在运行的代码,也欢迎大家提供自己的一些实战例子)example(较为初级的实例)src(源码)tmp(假设缓存目录设置在此)sessionhanson(设定值phpindex.php--sessionhanson)523eb1(随机值)users23534234345(微信账号的UIN值)file(文件)gif(表情)jpg(图片)mp3(语音)mp4(视频)contact.json(联系人debug模式下存在)group.json(群组debug模式下存在)member.json(所有群的所有成员debug模式下存在)official.json(公众号debug模式下存在)special.json(特殊账号debug模式下存在)message.json(消息)体验扫码后,验证输入“echo”即可自动加为好友并且拉入vbot群。
vbot并非24小时执行,有时会因为开发调试等原因暂停功能。
如果碰巧遇到关闭情况,可加Q群492548647了解开放时间。
执行后发送“拉我”即可自动邀请进群。
2015/6/4 16:57:36 3.68MB PHP 群控制 消息转发 防撤回
1
我们在开发系统时,处理图片上传是不可避免的,例如使用thinkphp的肯定很熟悉import(“@.ORG.UploadFile”);的上传方式,今天我们来讲一个使用html5base64上传图片的方法。
次要是用到html5FileReader的接口,既然是html5的,所支持的浏览器我就不多说啦可以大概的讲一下思路,其实也挺简单。
选择了图片之后,js会先把已选的图片转化为base64格式,然后通过ajax上传到服务器端,服务器端再转化为图片,进行储存的一个过程。
咱们先看看前端的代码。
html部分<inputtype=”file”id=”imagesfile”>js部
2018/7/26 11:26:44 61KB AS base base64
1
HeadFirst设计模式(高清中文完整版带目录)+附书源码+HeadFirst设计模式学习伴侣.rar又名:HeadFirstDesignPatterns作者:(美)弗里曼(Freeman,E.)副标题:HeadFirstDesignPatterns简介······  你不想重新发明车轮(或者更差的是,没有充气车胎的轮子),所以你从设计模式中寻求协助——设计模式是过去人们面对同样的软件设计问题所得到的经验。
有了设计模式,就可以利用其他人的实践经验的精华,因此省下的时间可以用在其他的事情上,如:更有挑战性的事情、更复杂的事情以及更有趣的事情。
你想要学习:  ·重要的模式;
  ·何时使用某个模式,为何使用该模式;
  ·如何在你自己的设计中马上采用这些模式;
  ·何时不该使用该模式(如何避免滥用模式);
  ·某个模式是依据哪些面向对象设计原理而设计出来的。
  更重要的是,你想在学习设计模式的过程中,不感觉到昏昏欲睡。
如果你曾经读过任何一本深入浅出(HeadFirst)系列书籍,你就会知道能够从本书中得到的是:透过丰富的视觉效果让你的大脑充分地运作。
本书的编写运用许多最新的研究,包括神经生物学、认知科学以及学习理论,这使得这本书能够将这些设计模式深深地烙印在你的脑海中,不容易被遗忘。
你将会更擅长于解决软件设计中的问题,并能够和你的团队成员用模式的语言来更好地沟通。
作者简介······  EricFreeman以及ElisabethFreeman是作家、教育家以及技术发明者。
他们在迪斯尼公司领导了四年的数字媒体以及因特网的开发,后来他们将这些经验应用在他们自己的媒体中,包括这本书中。
Eric具有耶鲁大学的计算机科学博士学位,Elisbeth具有耶鲁大学的计算机科学硕士学位。
  KathySierra(javaranch.com的创始者)以及BertBates是畅销的“深入浅出”(HeadFirst)系列书籍的策划者,也是Sun公司Java开发员认证考试的开发者。
2015/7/13 1:04:40 22.94MB Head First Design Patterns
1
http状态码批量检测工具是杭州光年出品的一个网页http状态码批量查询工具,支持批量导入URL,并查询其HTTP状态码,避免了同时检测多个页面时造成时间上的浪费和一些麻烦,查询结果可以导出为CSV文件保存,便于一目了然的查看所有链接状态码结果,对于SEO是有很大协助的。
2020/2/18 4:21:14 10.34MB 网络软件
1
使用deb安装包直接安装,避免了编译等复杂操作,并且可以在/opt/ros/melodic/share文件夹下找到并修正参数
2015/6/24 6:08:54 5.39MB ROS Melodic Cartographer
1
TCP单边加速原理核心部分就是对拥塞算法做优化。
如慢启动,拥塞避免,疾速重传,疾速恢复等。
2021/9/14 4:12:35 234KB TCP 单边加速
1
将html转换为javascript变量。
避免手动在js里写html的单引号、双引号成绩。
2018/9/8 7:46:56 12KB html转js html javascript
1
原创:用T5577&EM4305模拟EM4100ID卡的数据计算当想把T5577卡或者EM4305卡复制或模拟成ID卡时,需要对数据进行换算,之后再刷写。
本工具根据大神们的文章进行了对照换算,只需输入16进制卡号,就可分别计算出两种卡需要刷写的数据内容,避免出错。
2016/5/24 15:47:15 315KB EM4305 T5577 数据换算 EM4100
1
在运用dokcer的时候,虽然不常用`dockernetwork`,但也往往避免不了配置网络。
一张图带你搞定docker网络的常用配置。
2015/10/24 18:06:03 106KB docker 容器 运维 network
1
LeetCodecpp最新中文题解.pdfLeetCodecpp最新中文题解.pdfLeetCodecpp最新中文题解.pdf目录3.4Addbinary615.1.5BinaryTreeLevelOr-3.5LongestPalindromicSubstring.62dertraversalil3.6RegularExpressionMatching665.1.6BinaryTreeZigzag3.7WildcardMatching67LevelOrdertraversal.963.8LongestCommonPrefix5.1.7RecoverBinarySearch3.9ValidNumber70Tree983.10Integertoroman725.1.8SameTree3.11RomantoInteger735.1.9SymmetricTree1003.12CountandSay745.1.10BalancedBinaryTree..1023.13Anagrams755.1.11FlattenBinaryTreeto3.14SimplifyPath76LinkedList1033.15LengthofLastWord775.1.12PopulatingNextRightPointersineachnodeii105第4章栈和队列7952二叉树的构建10641栈795.2.1ConstructBinaryTree4ValidParentheses79fromPreorderandIn4.1.2LongestvalidParenorderTraversa106theses805.2.2ConstructBinaryTree4.1.3LargestRectangleinfromInorderandposHistogram82torderTraversal1074.1.4Evaluatereversepol-53二叉查找树108ishnotation845.3.1UniqueBinarySearch4.2队列85Trees.1085.3.2UniqueBinarySearch第5章树86Treesli.1105.1二叉树的遍历865.3.3ValidateBinarySearch5.1.1BinaryTreePreorderTreeTraversal865.3.4ConvertSortedarrayto5.1.2BinaryTreeInorderBinarySearchTree...112Traversal885.3.5ConvertSortedListto5.1.3BinaryTreePostorderBinarySearchTree113Traversal9054二叉树的递归.1145.1.4BinaryTreeLevelOr5.4.1MinimumDepthofBidertraversal)2narylree115目录5.4.2MaximumDepthofBi8.3.,2重新实现nextpermunaryTree116tation1425.4.3PathSum11783.3递归.1435.44PathSumil1188.4PermutationsII1445.4.5BinaryTreeMaximum8.4.1nextpermutation...144PathSuum11984.2重新实现nextpermu5.4.6PopulatingNextRighttation144Pointersineachnode120843递归1445.4.7SumRoottoLeafnum8.5Combinations146bers2185.1递归1468.5.2迭代147第6章排序1238.6LetterCombinationsofaphone6.1MergeSortedArray123umber1476.2MergeTwoSortedLists12486.1递归1486.3MergekSortedLists124862迭代96.4InsertionSortList125第9章广度优先搜索1506.5Sortlist1269.1WordLadder1506.6FirstMissingPositive1279.2WordLadderil1546.7SortColors1289.3Surroundedregions162第7章查找94小结16413194.l适用场景1647.1Searchforarange131942思考的步骤7.2SearchInsertPosition.13294.3代码模板1657.3Searcha2DMatrix133第10章深度优先搜索173第8章暴力枚举法13510.1PalindromePartitioning1738.1Subsets13510.2UniquePaths1768.1.1递归1350.2.1深搜1768.1.2迭代.1371022备忘录法.1768.2Subsetsil13810.23动规177821递归13810.24数学公式1788.2.2迭代.14110.3UniquePathsIl1798.3Permutations14210.3.1备忘录法1798.3.1nextpermutation14210.3.2动规.180目录10.4N-Queens1813.4Maximalrectangle21310.5N-QueensII18413.5BestTimetoBuyandSellStock10.6Restoreipaddresses186.21410.7CombinationSum18813.6InterleavingString21510.8CombinationSumIl18913.7ScrambleString21710.9GenerateParentheses.19013.8MinimumPathSum.22210.10Sudokusolver19213.9EditDistance22410.11WordSearch.19313.10DecodeWays.22610.12小结19513.11Distinctsub22710.12.1适用场景19513.12WordBreak22810.122思考的步骤1951313WordBreakil2300.12.3代码模板197第14章图23210.12.4深搜与回溯法的区別.19714.1CloneGraph23210.12.5深搜与递归的区别..197第15章细节实现题235第11章分治法19915.1ReverseInteger2351.1Pow(x,n)19915.2PalindromeNumber.23611.2Sqrt(x)20015.3InsertInterval237第12章贪心法20115.4MergeIntervals23812.1Jumpgame20115.5MinimumWindowSubstring23912.2JumpgameII15.6MultiplyStrings24112.3BestTimetobuyandSellstock20415.7SubstringwithConcatenation12.4BestTimetobuyandsellstockl205ofallwords24412.5LongestSubstringWithoutre15.8Pascal,sTriangle245peatingCharacters20615.9PascalsTriangleIl24612.6ContainerwithMostWater..20715.10SpiralMatrix24715.11SpiralmatrixII248第13章动态规划20915.12ZigZagConversion25013.1Triangle20915.13DivideTwoIntegers25113.2MaximumSubarray15.14TextJustification25313.3PalindromePartitioningII1215.15MaxPointsonaline255目录第1章编程技巧在判断两个浮点数a和b是否相等时,不要用a==b,应该判断二者之差的绝对值fabs(a-b)是否小于某个阈值,例如1e-9。
判断一个整数是否是为奇数,用x%2!=0,不要用x%2=1,因为ⅹ可能是负用char的值作为数组下标(例如,统计字符串中每个字符岀现的次数),要考虑到char可能是负数。
有的人考虑到了,先强制转型为unsignedint再用作下标,这仍然是错的。
正确的做法是,先强制转型为unsignedchar,再用作下标。
这涉及C十整型提升的规则,就不详述了。
以下是关于STL使用技巧的,很多条款来自《EffectiveSTL》这本书。
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章线性表这类题目考察线性表的操作,例如,数组,单链表,双向链表等。
2数组2.1.1RemoveDuplicatesfromSortedarray描述Givenasortedarray,removetheduplicatesinplacesuchthateachelementappearonlyonceandreturnthenewlengthDonotallocateextraspaceforanotherarray,youmustdothisinplacewithconstantmemoryForexample,GiveninputarrayA=[1,1,2Yourfunctionshouldreturnlength=2,andaisnow[1,2]分析无代码1/LeetCode,RemoveDuplicatesfromSortedArray//时间复杂度0(n),空间复杂度0(1)classSolutiontublicintremoveDuplicates(vector<int>&nums)tif(numsemptyo)return0;intindex=ofor(inti=1:inumssize:1++iif(nums[index]!nums[i])nums[++index]=nums[i]returnindex12.1数组代码2//LeetCode,RemoveDuplicatesfromSortedArray/使用STL,时间复杂度0(n),空间复杂度0(1)classSolutionipublicintremoveDuplicates(vector<int>&nums)treturndistance(numsbegin(),unique(numsbegin(),numsend())代码3/LeetCode,RemoveDuplicatesfromSortedArray/使用STL,时间复杂度0(n),空间复杂度0(1)lassSolutionfublicintremoveDuplicates(vector<int>&nums)treturndistance(numsbegin(,removeDuplicates(numsbegin(,numsend(),numsbegintemplate<typenameInIt,typenameoutit>OutItremoveDuplicates(InItfirst,InItlast,OutItoutput)thile(firstlast)i*output++=*firstfirstupper_bound(first,last,*firstreturnoutput相关题目RemoveDuplicatesfromSortedArrayI,见§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(vector<int>&nums)tif(numssize(<=2)returnnumssizeintindex=2for(inti=2:inumssize(:i++)ff(nums[i]!numslindex-2]nums[index++]=nums[i]returnindex;代码2下面是一个更简洁的版本。
上面的代码略长,不过扩展性好一些,例如将occur<2改为occur3,就变成了允许重复最多3次。
//LeetCode,RemoveDuplicatesfromSortedArrayII7/@author虞航仲(http://weibo.com/u/1666779725)//时间复杂度0(n),空间复杂度0(1)lassSolutionfpublicintremoveDuplicates(vector<int>&nums)tconstintn=numssizeintindex=0:for(inti=0:i<n;++i)if(i>0&&i<n-1&nums[i]=nums[i-1]&nums[i]=nums[i1])continue;nums[index++]=nums[i]returnindex;相关题目RemoveDuplicatesfromSortedArray,见§2.1.1
2019/5/20 21:34:34 866KB why
1
共 681 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡