2019年3月14日,斯坦福大学三个博士创业者推出了PiNetWork。
Pi是一个加密货币和智能合约网络,由所有参与者维护和运营,其成功取决于所有成员的集体贡献。
Pi在成员之间相互担保彼此值得信任时,确保其账簿的安全。
Pi来自190多个国家,内置43个国家语言聊天室,当前全球有350K矿工。
2025/12/28 10:43:02 2.11MB pi
1
目 录1引 言 12系统概述 22.1系统开发背景 22.2系统开发的意义 22.3系统设计目标 22.4系统设计的特点 32.5系统设计思想 33系统开发工具 43.1JSP程序设计语言介绍 43.1.1JSP概述 43.1.2JSP的特点 43.2JAVA程序设计语言介绍 53.2.1Java概述 53.2.2Java的特点 53.2.3JavaBean 53.3TOMCAT 63.4MYSQL 63.4.1MySQL的简介 63.4.2MySQL的特点 63.4.3MySQL服务器工作方式 73.5ECLIPSE 74数据库设计 84.1数据库表的设计 84.1.1用户信息表(users) 84.1.2管理员信息表(admin) 84.1.3商品信息表(goods) 84.1.4商品类别表(sort) 94.1.5订单表(orders) 94.1.6留言表(leaveLanguage) 104.2数据库ER图 105系统的功能分析 115.1系统总体结构 115.2前台功能分析 125.3后台功能分析 136系统的设计与实现 146.1前台主要页面设计与实现 146.1.1系统前台的流程分析 146.1.2系统首页 156.1.3用户注册/登录 166.1.4商品信息 196.1.5购物车 206.1.6在线留言 216.2后台主要页面设计与实现 236.2.1管理员登录 236.2.2用户信息管理 247系统的安装与测试 267.1系统运行环境的搭建 267.1.1构建JSP运行环境 267.1.2构建JSP开发环境 267.2系统测试 277.2.1系统测试目标 277.2.2系统的具体测试 277.2.3系统测试总结 27结论 28参考文献 29致谢 30
2025/12/27 6:37:31 1.5MB JSP 网上花店 管理系统 毕业论文
1
###编写高质量代码:改善Python代码的91个建议####核心知识点概览本书《编写高质量代码:改善Python代码的91个建议》聚焦于如何通过一系列具体的实践指南来提升Python代码的质量。
全书围绕着“编写高质量代码”的核心目标,通过91条实用建议详细阐述了Python编程的最佳实践、常见陷阱规避以及如何优化代码结构等内容。
接下来,我们将详细介绍书中部分章节的关键知识点。
---####第1章:Pythonic编程理念1.**Pythonic概念**:理解什么是Pythonic编程风格及其重要性。
-Pythonic指的是遵循Python语言的设计哲学和推荐的编程方式,强调简洁、清晰和可读性。
2.**Python与C语言的区别**:明确Python与C语言的主要差异,了解Python的独特优势。
-Python注重代码的可读性和开发效率,而C语言更关注性能和底层控制。
3.**合理使用注释**:介绍何时以及如何正确地使用注释,确保代码的可维护性。
-注释应该用于解释为什么这样做而不是做什么,避免不必要的冗余。
4.**代码格式与美观**:讲解如何通过适当的空格和缩进来使代码更加整洁美观。
-合理的布局不仅能够提高代码的可读性,还能帮助开发者更快地理解代码逻辑。
5.**函数设计原则**:探讨函数设计的基本原则,包括单一职责原则等。
-函数应该具有单一职责,只做一件事情,并且做得好。
6.**模块化设计**:强调将相关功能组织到单独的模块中的重要性。
-模块化可以提高代码的复用性,降低维护成本。
####第2章:编程习惯与技巧7.**使用assert语句进行调试**:说明如何利用assert语句来发现并定位程序中的错误。
-assert语句在调试过程中非常有用,可以帮助开发者快速找到问题所在。
8.**惰性求值的运用**:讨论惰性求值的概念及其在Python中的应用场景。
-惰性求值是一种优化技术,可以延迟计算直到真正需要时才执行,从而节省资源。
9.**类型检查的误区**:指出使用`type()`进行类型检查可能存在的问题,并提供更好的替代方案。
-避免使用`type()`来做类型检查,而应该使用`isinstance()`或`issubclass()`等更灵活的方法。
10.**安全使用`eval()`**:提醒开发者注意`eval()`函数的安全隐患,并给出安全替代方案。
-`eval()`虽然强大但容易被恶意利用,因此应谨慎使用。
11.**使用`enumerate()`进行索引访问**:介绍如何使用`enumerate()`函数简化列表迭代过程。
-`enumerate()`可以同时获取元素及其索引,简化循环中的代码。
12.**Unicode编码的重要性**:强调在Python中使用Unicode编码以确保字符串处理的兼容性。
-使用Unicode可以避免字符编码问题,提高代码的可移植性。
####第3章:基础语法13.**限制使用`from...import`**:解释为什么应该限制使用`from...import`语句及其潜在风险。
-这种导入方式可能导致命名空间污染,影响代码的可读性和维护性。
14.**使用`with`语句管理资源**:介绍`with`语句如何自动管理和释放资源。
-`with`语句可以确保即使发生异常也能正确释放资源。
15.**异常处理的基本规则**:概述处理异常时应该遵循的基本准则。
-异常处理应该简洁明了,避免不必要的复杂性。
16.**深入理解`None`**:探讨`None`在Python中的意义及其正确用法。
-`None`表示空值,在判断对象是否为空时要特别注意。
17.**字符串连接的优化**:比较不同的字符串连接方法,推荐使用`join()`而非`+`。
-`join()`通常比使用`+`操作符更高效。
18.**字符串格式化的最佳实践**:建议使用`.format()`方法来进行字符串格式化。
-`.format()`相比古老的`%`操作符提供了更多的灵活性和更好的可读性。
####第4章:常用库19.**字符串处理**:涵盖字符串处理的基本方法和技巧。
-掌握字符串的基本操作是任何Python程序员必备的技能之一。
20.**排序函数的选择**:分析`sort()`和`sorted()`之间的区别及适用场景。
-`sort()`和`sorted()`都有其特定的应用场合,理解这些区别有助于编写更高效的代码。
21.**使用`copy`模块进行深拷贝**:介绍如何使用`copy`模块中的`deepcopy()`函数复制对象。
-对于复杂的对象结构,`deepcopy()`可以确保完全复制而不会引用原始对象。
22.**利用`Counter`进行计数统计**:展示如何使用`Counter`类进行计数统计。
-`Counter`类是进行元素计数的高效工具。
23.**配置文件解析**:探讨如何使用`ConfigParser`模块来解析配置文件。
-`ConfigParser`提供了方便的方式来读取和写入配置文件。
24.**命令行参数处理**:介绍如何使用`argparse`模块解析命令行参数。
-`argparse`是处理命令行参数的标准库,可以帮助创建易于使用的命令行界面。
25.**大型CSV文件处理**:提供使用`pandas`库高效处理大型CSV文件的策略。
-`pandas`是数据分析领域的强大工具,非常适合处理大型数据集。
26.**XML文件解析**:讲解如何使用`ElementTree`模块来解析XML文件。
-`ElementTree`是Python标准库的一部分,提供了简单易用的XML解析接口。
27.**序列化与反序列化**:对比`pickle`与`json`的不同之处及其适用场景。
-`pickle`用于Python对象的序列化,而`json`则适用于跨语言的数据交换。
####第5章:设计模式28.**单例模式的实现**:介绍如何使用模块级变量来实现单例模式。
-单例模式确保一个类只有一个实例,并提供一个全局访问点。
29.**混合模式的应用**:探讨如何利用混合模式提高程序的灵活性。
-混合模式允许组合多个类的功能,使得类的设计更加灵活。
30.**发布订阅模式的实现**:说明如何使用发布订阅模式实现事件驱动的编程。
-发布订阅模式可以解耦事件发送者和接收者,提高了系统的可扩展性。
31.**装饰器模式的优势**:讲解装饰器模式如何简化类的扩展过程。
-装饰器模式允许动态地给对象添加新的行为,无需修改其结构。
####第6章:内部机制32.**内置对象的使用**:列举并解释常用的内置对象及其用途。
-理解内置对象是掌握Python高级特性的基础。
33.**初始化方法的理解**:澄清`__init__()`的作用以及它与构造函数的区别。
-`__init__()`是Python类的一个特殊方法,用于初始化新创建的对象。
34.**命名查找机制**:解释Python中名称查找的顺序和规则。
-正确理解命名查找机制对于编写高效的代码至关重要。
35.**`self`参数的意义**:解释`self`参数在实例方法中的作用及其重要性。
-`self`参数指向调用该方法的对象实例本身。
36.**多重继承与MRO**:探讨多重继承的实现机制及方法解析顺序(MRO)。
-MRO决定了多重继承中方法的查找顺序,理解它是使用多重继承的基础。
37.**描述符协议**:介绍描述符协议的工作原理及其应用场景。
-描述符是Python中的一个高级特性,可以用来控制属性的访问。
38.**`__getattr__()`与`__getattribute__()`的区别**:区分这两种特殊方法的作用和使用场合。
-`__getattr__()`和`__getattribute__()`在属性访问上有着不同的行为。
39.**使用`property`装饰器**:展示如何使用`property`装饰器简化属性访问。
-`property`装饰器可以让属性像普通变量一样使用,同时保留其背后的复杂逻辑。
40.**元类的应用**:探讨元类的概念及其在Python中的应用。
-元类允许用户自定义类的行为,是实现高级编程模式的基础。
41.**Python对象模型**:深入了解Python对象模型的基本组成部分。
-Python对象模型是理解Python内部机制的关键。
42.**运算符重载**:讲解如何通过重载运算符来实现自定义的运算行为。
-运算符重载可以让自定义类型支持标准的数学运算。
43.**迭代器与生成器**:介绍迭代器和生成器的概念及其在Python中的实现。
-迭代器和生成器是Python中处理大量数据流的有效工具。
44.**协程的使用**:讲解如何使用协程来简化并发编程。
-协程允许程序在多个任务间切换执行,提高了程序的响应性和资源利用率。
45.**GIL的影响**:探讨全局解释器锁(GIL)对多线程程序的影响。
-GIL是Python中一个重要的机制,但也是多线程编程中的一大挑战。
46.**内存管理与垃圾回收**:解释Python中的内存管理机制以及垃圾回收的过程。
-理解内存管理机制有助于编写更高效的代码,避免常见的内存泄漏问题。
####第7章:工具与辅助项目47.**安装与管理Python包**:介绍如何使用`pip`和`yolk`来安装和管理Python包。
-包管理工具是每个Python开发者不可或缺的工具之一。
48.**单元测试基础**:概述单元测试的概念及其重要性。
-单元测试是确保代码质量的关键手段。
49.**编写单元测试**:提供如何为Python项目编写单元测试的具体指导。
-有效的单元测试可以显著提高代码的质量和可靠性。
50.**测试驱动开发**:探讨测试驱动开发(TDD)的概念及其对代码质量的影响。
-TDD鼓励先编写测试再编写代码,有助于构建稳定可靠的系统。
51.**持续集成**:介绍持续集成的概念及其在软件开发中的应用。
-持续集成是一种软件开发实践,旨在频繁地将代码合并到主分支中。
以上仅为本书部分内容的总结,实际上每一条建议都蕴含着丰富的细节和实践案例。
通过学习本书,读者不仅可以获得关于如何编写高质量Python代码的具体指导,还能深刻理解Python编程的核心理念和技术细节。
2025/12/19 20:00:11 6.2MB python
1
本书针的读者是高校学生,科研工作者,图像处理爱好者。
对于这些人群,他们往往是带着具体的问题,在苦苦寻找解决方案。
为了一个小问题就让他们去学习C++这么深奥的语言几乎是不可能的。
而Python的悄然兴起给他们带来的希望,如果说C++是tex的话,那Python的易用性相当于word。
他们可以很快的看懂本书的所有代码,并可以学着使用它们来解决自己的问题,同时也能拓展自己的视野。
别人经常说Python不够快,但是对于上面的这些读者,我相信这不是问题,现在我们日常使用的PC机已经无比强大了,而且绝大多数情况下不会用到实时处理,更不会在嵌入式设备上使用。
因此这不是问题。
本书目录:目录I走进OpenCV101关于OpenCV-Python教程102在Windows上安装OpenCV-Python113在Fedora上安装OpenCV-Python12IIOpenCV中的Gui特性134图片134.1读入图像4.2显示图像4.3保存图像4.4总结一下5视频5.1用摄像头捕获视频5.2从文件中播放视频5.3保存视频6OpenCV中的绘图函数6.1画线6.2画矩形6.3画圆6.4画椭圆6.5画多边形6.6在图片上添加文字7把鼠标当画笔7.1简单演示7.2高级一点的示例8用滑动条做调色板8.1代码示例III核心操作9图像的基础操作9.1获取并修改像素值9.2获取图像属性9.3图像ROI9.4拆分及合并图像通道9.5为图像扩边(填充)10图像上的算术运算10.1图像加法10.2图像混合10.3按位运算11程序性能检测及优化11.1使用OpenCV检测程序效率11.2OpenCV中的默认优化11.3在IPython中检测程序效率11.4更多IPython的魔法命令11.5效率优化技术12OpenCV中的数学工具IVOpenCV中的图像处理13颜色空间转换5413.1转换颜色空间13.2物体跟踪13.3怎样找到要跟踪对象的HSV值?14几何变换14.1扩展缩放14.2平移14.3旋转14.4仿射变换14.5透视变换15图像阈值15.1简单阈值15.2自适应阈值15.3Otsu’s二值化15.4Otsu’s二值化是如何工作的?16图像平滑16.1平均16.2高斯模糊16.3中值模糊16.4双边滤波17形态学转换17.1腐蚀17.2膨胀17.3开运算17.4闭运算17.5形态学梯度17.6礼帽17.7黑帽17.8形态学操作之间的关系18图像梯度18.1Sobel算子和Scharr算子8718.2Laplacian算子19Canny边缘检测19.1原理19.1.1噪声去除19.1.2计算图像梯度19.1.3非极大值抑制19.1.4滞后阈值19.2OpenCV中的Canny边界检测20图像金字塔9420.1原理21OpenCV中的轮廓22直方图23图像变换24模板匹配25Hough直线变换26Hough圆环变换27分水岭算法图像分割28使用GrabCut算法进行交互式前景提取29理解图像特征30Harris角点检测31Shi-Tomasi角点检测&适合于跟踪的图像特征32介绍SIFT(Scale-InvariantFeatureTransform)33介绍SURF(Speeded-UpRobustFeatures)34角点检测的FAST算法35BRIEF(BinaryRobustIndependentElementaryFeatures)36.1OpenCV中的ORB算法37特征匹配38使用特征匹配和单应性查找对象39Meanshift和Camshift40.3OpenCV中的Lucas-Kanade光流41背景减除23841.1基础42摄像机标定43姿势估计44对极几何(EpipolarGeometry)45立体图像中的深度地图25945.1基础46K近邻(k-NearestNeighbour)47支持向量机48K值聚类49图像去噪50图像修补51使用Haar分类器进行面部检测
2025/12/10 3:40:07 4.85MB python opencv
1
目录1.绪论 11.1课题背景介绍 11.2技术要求 11.3我的研究工作 12.开发环境和开发工具介 32.1JAVA简介 32.2MYSQL数据库介绍 32.3TOMCAT应用服务器 42.4MYECLIPSE介绍 43.开发过程相关技术和框架介绍 53.1WEB开发-JSP技术 53.2JAVABEAN简介 53.3STRUTS框架 64.需求分析与可行性分析 74.1需求分析 74.1.1任务概述 74.1.2系统平台架构 74.1.3系统软件架构 84.2可行性分析 84.2.1经济可行性 84.2.2技术可行性 84.2.3操作可行性 94.2.4社会可行性 95.系统概要设计 105.1系统的设计思想 105.2用户角色模型 105.3用户数据库表E-R图 115.4教学网站数据流程图 116.网站的详细设计与实现 126.1系统数据库详细设计与实现 126.2用户管理功能具体说明 196.3网站首页的设计 196.4管理员用户登录设计与实现 206.5系统后台管理设计与实现 226.6文章管理设计与实现 246.7栏目管理设计与实现 246.8公告管理设计与实现 256.9留言板的设计与实现 267.测试与总结 287.1测试方案概述 287.2测试方法 287.3功能测试 287.4性能测试 297.5测试结论 30总结 31致谢 32参考文献 32附录一:英文资料原文 33附录二:英文资料译文 44
1
超强键盘映射工具,点按键捕捉后,键盘上的每个键都能捕捉到,唯一的缺点就是不能捕捉组合键,不过大家不用担心,我已经把全套的组合键扫描码放在里面的文本中了,有用到组合键的可以去查。
如果是手动修改注册表的话,记得把捕捉的扫描码颠倒输入(二进制值高低交换),比如0043,颠倒后就是4300
2025/12/6 20:24:02 45KB 键盘 映射 键盘扫描码
1
编译原理龙书答案完整性高第二章2.2ExercisesforSection2.22.2.1Considerthecontext-freegrammar:S->SS+|SS*|aShowhowthestringaa+a*canbegeneratedbythisgrammar.Constructaparsetreeforthisstring.Whatlanguagedoesthisgrammargenerate?Justifyyouranswer.answerS->SS*->SS+S*->aS+S*->aa+S*->aa+a*L={Postfixexpressionconsistingofdigits,plusandmultiplesigns}2.2.2Whatlanguageisgeneratedbythefollowinggrammars?Ineachcasejustifyyouranswer.S->0S1|01S->+SS|-SS|aS->S(S)S|εS->aSbS|bSaS|ε⧗S->a|S+S|SS|S*|(S)answerL={0n1n|n>=1}L={Prefixexpressionconsistingofplusandminussigns}L={Matchedbracketsofarbitraryarrangementandnesting,includesε}L={Stringhasthesameamountofaandb,includesε}?2.2.3WhichofthegrammarsinExercise2.2.2areambiguousanswerNoNoYesYesYes2.2.4Constructunambiguouscontext-freegrammarsforeachofthefollowinglanguages.Ineachcaseshowthatyourgrammariscorrect.Arithmeticexpressionsinpostfixnotation.Left-associativelistsofidentifiersseparatedbycommas.Right-associativelistsofidentifiersseparatedbycommas.Arithmeticexpressionsofintegersandidentifierswiththefourbinaryoperators+,-,*,/.answer1.E->EEop|num2.list->list,id|id3.list->id,list|id4.expr->expr+term|expr-term|termterm->term*factor|term/factor|factorfactor->id|num|(expr)5.expr->expr+term|expr-term|termterm->term*unary|term/unary|unaryunary->+factor|-factorfactor->id|num|(expr)2.2.5Showthatallbinarystringsgeneratedbythefollowinggrammarhavevaluesdivisibleby3.Hint.Useinductiononthenumberofnodesinaparsetree.num->11|1001|num0|numnumDoesthegrammargenerateallbinarystringswithvaluesdivisibleby3?answerproveanystringderivedfromthegrammarcanbeconsideredtobeasequenceconsistingof11,1001and0,andnotprefixedwith0.thesumofthisstringis:sum=Σn(21+20)*2n+Σm(23+20)*2m=Σn3*2n+Σm9*2mItisobviouslycandivisibleby3.No.Considerstring"10101",itisdivisibleby3,butcannotderivedfromthegrammar.Question:anygeneralprove?2.2.6Constructacontext-freegrammarforromannumerals.Note:wejustconsiderasubsetofromannumeralswhichislessthan4k.answerwikipedia:Roman_numeralsviawikipedia,wecancategorizethesinglenomannumeralsinto4groups:I,II,III|IV|V,VI,VII,VIII|IXthengettheproduction:digit->smallDigit|IV|VsmallDigit|IXsmallDigit->I|II|III|εandwecanfindasimplewaytomapromantoarabicnumerals.Forexample:XII=>X,II=>10+2=>12CXCIX=>C,XC,IX=>100+90+9=>199MDCCCLXXX=>M,DCCC,LXXX=>1000+800+80=>1880viatheuppertworules,wecanderivetheproduction:romanNum->thousandhundredtendigitthousand->M|MM|MMM|εhundred->smallHundred|CD|DsmallHundred|CMsmallHundred->C|CC|CCC|εten->smallTen|XL|LsmallTen|XCsmallTen->X|XX|XXX|εdigit->smallDigit|IV|VsmallDigit|IXsmallDigit->I|II|III|ε2.3ExercisesforSection2.32.3.1Constructasyntax-directedtranslationschemethattrans­latesarithmeticexpressionsfrominfixnotationintoprefixnotationinwhichanoperatorappearsbeforeitsoperands;e.g.,-xyistheprefixnotationforx-y.Giveannotatedparsetreesfortheinputs9-5+2and9-5*2.。
answerproductions:expr->expr+term|expr-term|termterm->term*factor|term/factor|factorfactor->digit|(expr)translationschemes:expr->{print("+")}expr+term|{print("-")}expr-term|termterm->{print("*")}term*factor|{print("/")}term/factor|factorfactor->digit{print(digit)}|(expr)2.3.2Constructasyntax-directedtranslationschemethattrans­latesarithmeticexpressionsfrompostfixnotationintoinfixnotation.Giveannotatedparsetreesfortheinputs95-2*and952*-.answerproductions:expr->exprexpr+|exprexpr-|exprexpr*|exprexpr/|digittranslationschemes:expr->expr{print("+")}expr+|expr{print("-")}expr-|{print("(")}expr{print(")*(")}expr{print(")")}*|{print("(")}expr{print(")/(")}expr{print(")")}/|digit{print(digit)}AnotherreferenceanswerE->{print("(")}E{print(op)}E{print(")"}}op|digit{print(digit)}2.3.3Constructasyntax-directedtranslationschemethattrans­latesintegersintoromannumeralsanswerassistantfunction:repeat(sign,times)//repeat('a',2)='aa'translationschemes:num->thousandhundredtendigit{num.roman=thousand.roman||hundred.roman||ten.roman||digit.roman;print(num.roman)}thousand->low{thousand.roman=repeat('M',low.v)}hundred->low{hundred.roman=repeat('C',low.v)}|4{hundred.roman='CD'}|high{hundred.roman='D'||repeat('X',high.v-5)}|9{hundred.roman='CM'}ten->low{ten.roman=repeat('X',low.v)}|4{ten.roman='XL'}|high{ten.roman='L'||repeat('X',high.v-5)}|9{ten.roman='XC'}digit->low{digit.roman=repeat('I',low.v)}|4{digit.roman='IV'}|high{digit.roman='V'||repeat('I',high.v-5)}|9{digit.roman='IX'}low->0{low.v=0}|1{low.v=1}|2{low.v=2}|3{low.v=3}high->5{high.v=5}|6{high.v=6}|7{high.v=7}|8{high.v=8}2.3.4Constructasyntax-directedtranslationschemethattrans­latesromannumeralsintointegers.answerproductions:romanNum->thousandhundredtendigitthousand->M|MM|MMM|εhundred->smallHundred|CD|DsmallHundred|CMsmallHundred->C|CC|CCC|εten->smallTen|XL|LsmallTen|XCsmallTen->X|XX|XXX|εdigit->smallDigit|IV|VsmallDigit|IXsmallDigit->I|II|III|εtranslationschemes:romanNum->thousandhundredtendigit{romanNum.v=thousand.v||hundred.v||ten.v||digit.v;print(romanNun.v)}thousand->M{thousand.v=1}|MM{thousand.v=2}|MMM{thousand.v=3}|ε{thousand.v=0}hundred->smallHundred{hundred.v=smallHundred.v}|CD{hundred.v=smallHundred.v}|DsmallHundred{hundred.v=5+smallHundred.v}|CM{hundred.v=9}smallHundred->C{smallHundred.v=1}|CC{smallHundred.v=2}|CCC{smallHundred.v=3}|ε{hundred.v=0}ten->smallTen{ten.v=smallTen.v}|XL{ten.v=4}|LsmallTen{ten.v=5+smallTen.v}|XC{ten.v=9}smallTen->X{smallTen.v=1}|XX{smallTen.v=2}|XXX{smallTen.v=3}|ε{smallTen.v=0}digit->smallDigit{digit.v=smallDigit.v}|IV{digit.v=4}|VsmallDigit{digit.v=5+smallDigit.v}|IX{digit.v=9}smallDigit->I{smallDigit.v=1}|II{smallDigit.v=2}|III{smallDigit.v=3}|ε{smallDigit.v=0}2.3.5Constructasyntax-directedtranslationschemethattrans­latespostfixarithmeticexpressionsintoequivalentprefixarithmeticexpressions.answerproduction:expr->exprexprop|digittranslationscheme:expr->{print(op)}exprexprop|digit{print(digit)}ExercisesforSection2.42.4.1Constructrecursive-descentparsers,startingwiththefollow­inggrammars:S->+SS|-SS|aS->S(S)S|εS->0S1|01Answer1)S->+SS|-SS|avoidS(){switch(lookahead){case"+":match("+");S();S();break;case"-":match("-");S();S();break;case"a":match("a");break;default:thrownewSyntaxException();}}voidmatch(Terminalt){if(lookahead=t){lookahead=nextTerminal();}else{thrownewSyntaxException()}}2)S->S(S)S|εvoidS(){if(lookahead=="("){S();match("(");S();match(")");S();}}3)S->0S1|01voidS(){switch(lookahead){case"0":match("0");S();match("1");break;case"1"://match(epsilon);break;default:thrownewSyntaxException();}}ExercisesforSection2.62.6.1ExtendthelexicalanalyzerinSection2.6.5toremovecom­ments,definedasfollows:Acommentbeginswith//andincludesallcharactersuntiltheendofthatline.Acommentbeginswith/*andincludesallcharactersthroughthenextoccurrenceofthecharactersequence*/.2.6.2ExtendthelexicalanalyzerinSection2.6.5torecognizetherelationaloperators.2.6.3ExtendthelexicalanalyzerinSection2.6.5torecognizefloat­ingpointnumberssuchas2.,3.14,and.5.AnswerSourcecode:commit8dd1a9aCodesnippet(src/lexer/Lexer.java):publicTokenscan()throwsIOException,SyntaxException{for(;;peek=(char)stream.read()){if(peek==''||peek=='\t'){continue;}elseif(peek=='\n'){line=line+1;}else{break;}}//handlecommentif(peek=='/'){peek=(char)stream.read();if(peek=='/'){//singlelinecommentfor(;;peek=(char)stream.read()){if(peek=='\n'){break;}}}elseif(peek=='*'){//blockcommentcharprevPeek='';for(;;prevPeek=peek,peek=(char)stream.read()){if(prevPeek=='*'&&peek=='/'){break;}}}else{thrownewSyntaxException();}}//handlerelationsignif("".indexOf(peek)>-1){StringBufferb=newStringBuffer();b.append(peek);peek=(char)stream.read();if(peek=='='){b.append(peek);}returnnewRel(b.toString());}//handlenumber,notypesensitiveif(Character.isDigit(peek)||peek=='.'){BooleanisDotExist=false;StringBufferb=newStringBuffer();do{if(peek=='.'){isDotExist=true;}b.append(peek);peek=(char)stream.read();}while(isDotExist==true?Character.isDigit(peek):Character.isDigit(peek)||peek=='.');returnnewNum(newFloat(b.toString()));}//handlewordif(Character.isLetter(peek)){StringBufferb=newStringBuffer();do{b.append(peek);peek=(char)stream.read();}while(Character.isLetterOrDigit(peek));Strings=b.toString();Wordw=words.get(s);if(w==null){w=newWord(Tag.ID,s);words.put(s,w);}returnw;}Tokent=newToken(peek);peek='';returnt;}ExercisesforSection2.82.8.1For-statementsinCandJavahavetheform:for(exprl;expr2;expr3)stmtThefirstexpressionisexecutedbeforetheloop;itistypicallyusedforinitializ­ingtheloopindex.Thesecondexpressionisatestmadebeforeeachiterationoftheloop;theloopisexitediftheexpressionbecomesO.Theloopitselfcanbethoughtofasthestatement{stmtexpr3;}.Thethirdexpressionisexecutedattheendofeachiteration;itistypicallyusedtoincrementtheloopindex.Themeaningofthefor-statementissimilartoexpr1;while(expr2){stmtexpr3;}DefineaclassForforfor-statements,similartoclassIfinFig.2.43.AnswerclassForextendsStmt{ExprE1;ExprE2;ExprE3;StmtS;publicFor(Exprexpr1,Exprexpr2,Exprexpr3,Stmtstmt){E1=expr1;E2=expr2;E3=expr3;S=stmt;}publicvoidgen(){E1.gen();Labelstart=newLable();Lalelend=newLable();emit("ifFalse"+E2.rvalue().toString()+"goto"+end);S.gen();E3.gen();emit("goto"+start);emit(end+":")}}2.8.2TheprogramminglanguageCdoesnothaveabooleantype.ShowhowaCcompilermighttranslateanif-statementintothree-addresscode.AnswerReplaceemit("isFalse"+E.rvalue().toString()+"goto"+after);withemit("ifNotEqual"+E.rvalue().toString()+"0goto"+after);oremit("isNotEqualZero"+E.rvalue().toString()+"goto"+after);
2025/11/27 8:37:48 658KB 龙书答案 完整性高
1
NPlus1DaysOfMvvmCross视频系列中N+1天的MvvmCross的回购由Aboo在索引博客文章阅读此内容-是否跟随N+1视频并编码?确保阅读以下有关如何在2014+中创建新PCL的内容。
N+1系列(从N=0throughN=42)中的前43个视频是在正式完成并发布之前,记录了PortableClassLibrary(PCL)方法的。
在此之前,Stuart在创建新的PCL时将始终选择“.NETFramework4.5,Silverlight4andhigher,WindowsPhone7.5andhigher,.NETforWindowsStoreapps以及他MonoforAndroid和MonoTouch手动创建的MonoforAndroid”选项。
在视频中。
这些选择导致Microsoft称之为“PCLProfile104”。
好消息是Xamarin正式发布了PCL支持,跨平台PCL优势如今已成为现实,无需手动链接大量文件或使用变通办法!现在,我们知道Xama
2025/11/17 21:39:30 71.35MB xamarin mvvmcross MvvmCrossC#
1
摘  要 1Abstract 2引  言 11理论基础 21.1工业锅炉设备的基础知识 21.1.1工业锅炉的分类和工艺流程 21.1.2锅炉设备控制系统的分类 41.2锅炉水位控制系统在锅炉生产控制系统中的重要性 52炉汽包水位的基本特性和常规汽包水位控制系统 62.1锅炉汽包水位控制对象的基本特性 62.1.1汽包水位在给水流量扰动下的动态特性 72.1.2汽包水位在蒸汽负荷扰动下的动态特性 82.2锅炉汽包水位的常规控制系统及其优缺点 102.2.1单冲量水位控制系统 102.2.2双冲量水位控制系统 102.2.3三冲量水位控制系统 103模糊控制系统的基本思想、特点及其和常规控制系统的比较 123.1模糊控制的基本思想和特点 123.2用模糊水位控制和常规控制系统的比较 143.3汽包锅炉水位模糊控制系统的设计 154系统设计 174.1系统硬件构成及工作过程 174.2硬件器件简介 194.2.1MSC1211的结构和特性 194.2.2MSC1211在本次设计中的使用 264.2.3专用LED数码管显示电路(MAX7219) 355软件设计 365.1程序流程图 365.2编程 415.3硬件图 41结  论 42参考文献 43附录A 硬件图 45附录B 程序清单 46致  谢 49
1
摘要:本文介绍了LAMP组合及它的发展状况,在了解了PHP开发原理和流程的基础上,对基于PHP的学生管理系统的开发进行了可行性分析,并对开发过程中可能会用到的工具进行了概括和简介。
目录1绪论 12LAMP组合的介绍 22.1Linux简介 22.2Apache简介 22.3MySQL简介 22.4PHP简介 32.5配置LAMP开发环境 43数据库分析与设计 63.1MYSQL数据库说明 63.2数据库设计 64功能分析与设计 84.1系统整体功能分析 84.2用户登陆 124.3功能界面描述 174.3.1前台功能描述 174.3.2后台功能描述 184.4具体功能模块设计 184.4.1信息导入功能 184.4.2浏览信息功能 214.4.3权限设置功能 214.4.4审核信息功能 224.4.5批复信息功能 224.4.6帐号管理功能 224.4.7用户管理功能 224.4.8班级管理功能 234.4.9消息管理功能 234.5后台功能设计 234.5.1后台功能框架 234.5.2用户管理功能 244.5.3业务信息管理功能 244.5.3系统设置功能 254.5.4系统维护功能 255系统发布及测试 265.1系统发布 265.2系统测试 27总结 28谢辞 29参考文献 30附录 31附录A外文翻译-原文部分 31附录B外文翻译-译文部分 34附录C创建数据库代码 37
1
共 200 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡