第1章重新研读C#语言31.1说明1.2C#部分语法内容扩展41.2.1命名空间(Namespace)41.2.2简洁的异步通知机制——委托(Delegate)61.2.3考验你的算法抽象能力——泛型(Generics)121.2.4用作标签的方式扩展对象特性——属性(Attribute)181.2.5用索引器简化的C#类型信息访问221.2.6融入C#语言的迭代机制——迭代器(Iterator)291.3可重载运算符(OverloadableOperators)与转换运算符(ConversionOperators)351.3.1TheDayAfterSomeday351.3.2用于有限的状态迭代351.3.3操作集合361.3.4类型的适配371.3.5小结381.4面向插件架构和现场部署的配置系统设计391.4.1认识.NETFramework提供的主要配置实体类401.4.2应用实例411.4.3小结481.5实现依赖注入481.5.1背景介绍481.5.2示例情景481.5.3Constructor注入511.5.4Setter注入511.5.5接口注入521.5.6基于Attribute实现注入——Attributer531.5.7小结55第2章开始每个设计模式之前572.1new()的替代品592.2准备一个轻量的内存Cache612.3准备一个集中访问配置文件的Broker642.4Web?NotWeb?672.5小结71
2024/12/21 6:48:18 37.92MB 设计模式
1
签名我们需要用到的工具是Auto-sign。
它主要是利用批处理命令,使用signapk.jar对APK文件进行签名的。
把new.apk文件复制到签名软件的目录下,再用记事本打开Sign.bat,将其修改为如下代码:java-jarsignapk.jartestkey.x509.pemtestkey.pk8XXX.apknewXXX.apkXXX.apk代表将要签名的,newXXX.apk签名后的最后双击一下Sign.bat即可签名完成,签名后的APK文件就可以在模拟器或者Android机器上安装了。
2024/12/12 13:32:16 2.23MB Auto-sign
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
PCAN-Explorer5基本使用方法,其中包括了PCAN-Explorer5的CAN网络的接入、硬件通讯、基于ID的报文过滤、导入并使用DBC文件,trace的基本使用,宏的使用和说明
1
申请评分卡训练测试数据
2024/10/29 9:31:07 6.32MB 风控
1
《高等应用数学问题的MATLAB求解》一书的配书光盘。
供大家参考学习本光盘包括如下目录:“CAI教学材料”包含全套的PowerPoint文件,可以直接用于教学,具体请参见该目录中的readme.pps文件说明。
目前包含的为中文版辅助材料。
最新版本将在下面给出的“MATLAB大观园”网站不定期更新。
英文版教学辅助材料也将在该网站给出,适于双语教学。
“例题全部代码”包含本书全部例题的MATLAB语句。
文件命名方法为examp章号_例题号.m,例如书中例3-5对应的文件名为examp3_5.m。
为能使得本书例题方便执行,可以在MATLAB的命令窗口中由File/SetPath菜单将例题所在目录包含在内。
“开发函数和使用资源”包含作者为本书开发的全套函数;
一些可以用于符号运算的新函数放在了@sym子目录下;
rsda子目录下为“粗糙集数据处理工具箱”,该工具箱原作者为张雪峰,由薛定宇修改后定稿。
本书建议使用的其他免费工具箱均可以从给出的MATLAB大观园直接下载,其最新版本可以从下面的地址直接免费下载。
(1)bnb工具箱,书中第6章介绍的非线性整数规划程序。
下载地址:http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=95&objectType=file(2)gaot工具箱,用遗传算法求解最优化问题的工具箱。
为了避免和MATLAB7.0版本的新遗传算法与直接搜索工具箱在函数名上的冲突,这里将主函数名改为gaopt.m,相应的函数调用语句也作了适当的改动。
下载地址:http://www.ie.ncsu.edu/mirage/GAToolBox/gaot/http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=2797&objectType=file(3)lpsolve工具箱,整数线性规划的工具箱,由C语言通过mex格式调用,如果在您的MATLAB环境下不能正确使用该工具箱的dll文件,则说明MATLAB版本不兼容,需要您自己运行该目录的lp_mex.m文件重新生成dll文件。
下载地址:ftp://ftp.ics.ele.tue.nl/pub/lp_solve/http://www.netlib.org/ampl/solvers/lpsolve/(4)nit_new工具箱,是数值积分工具箱的修改版,原版适合于MATLAB4.X,为能在当前MATLAB版本下运行,对个别文件做了相关修正。
下载地址:http://www.matlab-world.com/progs/toolbox/nit.zip本书所涉及的TeXPoint2.0.3插件是由美国加州Berkeley大学开发的,包括3个文件,其最新版本可以到开发者的网站免费下载。
下载地址:http://raw.cs.berkeley.edu/texpoint/TeXPoint2.0.3插件所包括的3个文件也可以分别在如下地址下载:http://www.matlab-world.com/temp/TexPoint2000-2.0.3.msihttp://www.matlab-world.com/temp/TexPoint2002-2.0.3.msihttp://www.matlab-world.com/temp/TexPoint2003-2.0.3.msi相关网站地址列表:MATLAB大观园,作者维护的MATLAB教学与资源网站。
网站地址:http://www.matlab-world.comMATLAB语言与应用论坛,作者维护的论坛,讨论MATLAB方面的问题。
论坛地址:http://matlab.netsh.net
2024/10/27 14:25:24 20.09MB MATLAB 应用数学问题
1
1)下载cmake-3.8.2.tar.gz:https://cmake.org/files/2)在主文件夹下新建tools/文件夹,将cmake-3.8.2.tar.gz解压之后放在tools/中,为了防止出现权限不足问题,直接对文件更改权限:解压:sudotar-zxvfcmake-3.8.2.tar.gz赋权限:sudochmod-R777cmake-3.8.23)a安装gcc-c++:sudoapt-getinstallbuild-essential或者直接执行这两条命令sudoapt-getinstallgccsudoapt-getinstallg++4)进入文件夹下执行以下命令:sudo./bootstrapsudomakesudomakeinstall5)查看是否安装成功以及安装版本:cmake--version
2024/10/19 10:15:31 11.44MB cmake
1
No.4简单的MFC多对话框演示程序“MultiDialog”演示如何在工程中拥有多个对话框,及如何在一个对话框中调用另一个对话框。
重点:1、多个对话框类的建立;
2、对话框的模式(Modal)调用方法;
3、Spin控件的使用。
新建一个基于对话框的MFC工程,通过菜单"Insert>>Resource"打开添加资源对话框,在其中选择Dialog后点击New创建一个新的对话框按Ctrl+W打开ClassWizard,系统会提示刚才创建了一个新的对话框资源,是否建立对应的类,选择建立,然后在NewClass窗口中ClassName栏输入它的名称:CSubClass1,确定后系统会自动生成SubClass1.h和SubClass1.cpp并加入工程中,其中有已经创建好的CSubClass1的类的基本代码。
把这个对话框的Caption属性改为“难度选择”,在它上面画三个Radio“简单”、“标准”、“困难”,并建立相关联的变量m_Option1。
(要注意的是在ClassWizard中注意ClassName中应该选CSubClass1而不是之前的主对话框类)按照相同方法建立第二个新对话框,类名“CSubClass2”,Caption为“关卡选择”。
在上面画一个Edit和一个Spin,注意先画Edit后画Spin,将Spin的Autobuddy和Setbuddyinteger勾上。
按Ctrl+W打开ClassWizard,为Edit建立关联变量,不过注意是int型而不是CString型,也为Spin建立关联变量m_Spin1,注意这次是Control型变量CSpinButtonCtrl。
下面为这两个对话框添加代码。
双击“难度选择”对话框的OK按钮,建立对话框的OnOK映射。
在其中加入(在CDialog::OnOK();之前):UpdateData(TRUE);if((m_Option1>2)||(m_Option1<0)){MessageBox("错误的选择!","提示",MB_OK);return;}下面对“关卡选择”对话框添加初始化代码,由于关卡的有效值只有1到6,因此需要在初始化时设置Spin控件的有效值范围。
按Ctrl+W打开ClassWizard,在左侧列表选择这个对话框类CSubDialog2,在右侧列表中选择WM_INITDIALOG,点击右边的“AddFunction...”按钮,接着点击右边的“EditCode”按钮,在其中中加入(在CDialog::OnInitDialog()那句之后,在returnTRUE那句之前):m_Spin1.SetRange(1,6);m_Text1=1;m_Spin1.SetPos(1);其中CSpinButtonCtrl::SetRange()函数的作用是设置和他关联的Spin控件的范围,两个参数分别是下界和上界。
而CSpinButtonCtrl::SetPos()是设定Spin的当前位置。
两个新的对话框都已建立完毕,下来是如何在主对话框中使用的问题。
首先,两个新对话框都有各自的类,分别在SubDialog1.h和SubDialog2.h中有定义。
(类的细节则在对应的cpp中定义)因此,主对话框想要调用这两个新对话框,需要先包含这两个头文件,在你要使用的地方(本例是MultiDialogDlg.cpp中)文件前面加上#include"SubDialog1.h"#include"SubDialog2.h"然后在想要调用的地方就可以使用了。
本例中,首先为主窗口的两个Edit建立CString型关联变量m_Text1和m_Text2,然后在两个按钮的消息映射函数中分别加入:CSubDialog1dialog1;//定义CSubDialog1型对话框的一个新对象dialog1.DoModal();//使用“模式”调用,显示对话框m_Text1.Format("%d",dialog1.m_Option1);//此句在上面对话框没有关闭前不会执行到UpdateData(FALSE);和CSubDialog2dialog1;dialog1.DoModal();m_Text2.Format("%d",dialog1.m_Text1);UpdateData(FALSE);其中第一句均为定义对话框新实例的语句,定义一个你想要的类型的对话框。
第二句是通过调用CDialog::DoModal()方法,来显示这个对话框,并进入“模式”(Modal)状态在“模式”状态,当子对话框没有关闭之前,调用它的父对话框不能被响应,并且其语句执行会停留在刚才的DoModal语句上等待,直到子对话框关闭才接着执行下一个语句。
第三第四句将子对话框得到的数据(即类的成员变量)显示在父对话框的Edit上。
四句执行完后退出该函数,这时刚才定义的CSubDialog1等对话框类变量被销毁,因此创建的话框也被销毁。
2024/10/14 12:21:15 3.52MB MFC VC 多窗口 multiwidows
1
多标签多算法的Rust实现橙色点是多边形质心。
蓝绿色点是理想的标签位置。
红色框显示搜索空间。
您可以通过克隆此回购,切换到生成自己这个可视化的分公司,并打开Jupyter笔记本电脑,然后通过细胞步进。
您还可以使用笔记本轻松显示自己的多边形。
如何使用externcratepolylabel;usepolylabel::polylabel;externcrategeo;usegeo::{Point,Polygon};letcoords=vec![(0.0,0.0),(4.0,0.0),(4.0,1.0),(1.0,1.0),(1.0,4.0),(0.0,4.0),(0.0,0.0)];letpoly=Polygon::new(coords.into(),vec![]);letlabel_pos=polylabel(&poly,&0.10);//Point(0.5
2024/9/14 8:35:52 319KB rust algorithm mapping geo
1
WorkflowStudioisaDelphi/C++BuilderVCLframeworkforBusinessProcessManagement(BPM).WithWorkflowStudioyoucaneasilyaddworkflowandBPMcapabilitiestoyourapplication,byallowingyouoryourend-usertocreateworkflowdefinitionsandrunningthem.v1.9.0.0New:TAttachmentViewModeallowdisplayingattachmentsandtaskinfoinasinglepaneinsteadofdifferenttabsNew:RADStudioXE5supportImproved:Betterperformanceforsaving/loadingworkflowdefinitions,instancesandtaskswhenusingADOFixed:WorkfklowblocksnotdisplayedwhenlanguagedifferentthanEnglishwasusedFixed:Empty"Basic"categoryremovedfromtoolbar
2024/9/7 21:11:14 2.21MB TMS xe5
1
共 119 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡