教做凉拌菜的视频网站/自动交换友情链接
(本文转载自其他博主但是个人忘记了出处)
优质代码是什么?
优质代码是指那些易于理解、易于维护、可读性强、结构清晰、没有冗余、运行效率高、可复用性强、稳定性好、可扩展性强的代码。
这类代码不仅能够准确执行预期功能,同时也便于其他开发者理解和修改。
这类代码通常会遵循一定的设计模式和编程规范,拥有清晰的逻辑结构和规范的代码格式,且注释适量且恰当。
优质代码该具备什么条件?
1、轻量级
轻量级的代码主要是指代码的复杂性低,易于理解和维护。
这一般通过减少代码的冗余、提高代码的可读性和可维护性等手段来实现。例如,避免使用过多的嵌套语句,尽可能地使用简单的数据结构和算法,避免使用复杂的编程语言特性等。
2、低耦合(松耦合)
耦合是指代码之间的依赖关系。低耦合或者松耦合的代码是指代码之间的依赖关系尽可能地少,每一部分代码都可以独立地完成其功能。
这样可以使得代码更容易维护和修改,因为修改一部分代码不会影响到其他部分的代码。实现低耦合的方法主要有模块化设计、使用接口或者抽象类来隐藏实现细节等。
3、易替换
易替换的代码是指当需求变更或者出现更好的实现方法时,可以方便地替换掉原来的代码。
这需要代码的设计有良好的扩展性和灵活性,例如,使用接口或者抽象类来定义功能,使用设计模式来组织代码等。
4、易删除
易删除的代码是指当某部分代码不再需要时,可以方便地删除掉,而不会影响到其他部分的代码。
这也需要代码的设计有良好的模块化和低耦合性。此外,还需要有良好的测试覆盖,以确保删除代码后,不会引入新的错误。
如何写出优质代码?
一、制定并遵守编码规范
编码规范是一套预先设定并约定好的编程风格和代码书写规则。
这本规则指南的内容囊括了变量、函数和类的命名方法,空格和缩进的使用,注释的编写方式,以及代码结构的组织等等。其主要目的在于保障代码的一致性和易读性,以便他人能更便捷地阅读和理解代码。
举个例子,Python社区有一个非常著名的编码规范PEP 8。PEP 8对Python代码的格式有一系列的规定,比如说,缩进应该使用4个空格,不要使用制表符;每行代码的长度不应超过79个字符;变量和函数的命名应该全部使用小写字母,并用下划线分隔单词等等。
二、写注释
众所周知,鱼的记忆只有7秒钟,而程序员对他们写出代码的功能的记忆只有三天。
如果编程过程中不加以注释,那么在代码完成的那一刻,唯有程序员和上帝清楚其真正功能。三天过后,恐怕只剩上帝明了这段代码的真正含义。
代码注释说白了就是对代码功能和实现逻辑的解释性补充,主要用于增强代码的可读性和可维护性。
它应用的场景十分明确,就是在编程过程中为代码加一个解释说明,方便日后回顾。
然而,注释的质量并不等同于其数量,只有简洁、精准的注释才是高品质代码的标志。过度的注释如同背景噪音,反而会干扰代码理解。因此,适当的注释策略应是仅对代码中的关键部分与复杂逻辑进行注解。
除了其他常规好处,注释还有助于快速查找和理解之前编写的代码,从而提高代码的复用性。
三、使用有意义的命名
命名和注释一样,都是程序员的大难题。
如果说注释考验的是程序员的总结能力,那么命名无疑是在考验程序员丰富的想象力和创造力。我周围有不少心血来潮就会起奇葩名的程序员朋友,想一出是一出。写的时候自我感觉良好,觉得这个名合适或者方便,等到阅读代码时傻了眼,这都什么跟什么,为什么意大利面应该拌24号混凝土。
一个好的名字应该能准确地反映出其功能或用途,而不是随意地使用像list1或func1这样指代不明,看了就懂,下秒就忘的名字。
如果想解决命名这个难题,最好建立自己的命名规则,不论是对内部变量或全局变量,都应让人们能够一目了然其变量含义。
四、避免使用全局变量
全局变量是在程序全局范围内定义的变量,它们可以在程序的任何处被访问和修改。看起来很便利对吧,但如果大量使用全局变量,编程的整个环境会变得复杂且混乱。
首先,全局变量破坏了封装原则。封装是面向对象编程的一个重要原则,它隐藏了对象的内部细节以保护外部环境。全局变量可以在任何地方被修改,这使得追踪和理解代码流程变得困难。这意味着你需要记住全局变量的状态,并理解在程序的哪个部分会改变它。
其次,全局变量导致函数之间产生隐含的耦合性。这意味着一个函数的行为可能依赖于另一个完全不相关的函数是否修改了全局变量。代码便变得难以理解和预测。
最后,全局变量可能导致命名冲突。如果你在不同的地方使用相同的全局变量名,你可能会意外地覆盖全局变量的值。
相比之下,使用局部变量和函数参数能使代码更加清晰和可维护。局部变量仅在函数内部存在,因此你不需要关心它们在其他地方如何被使用或修改。函数参数可以明确地指出函数的输入和输出,使得理解和测试函数变得容易。
因此,尽管全局变量在某些情况下可能是必要的,但在大多数情况下,最好尽量避免使用全局变量。如果你需要在多个函数之间共享数据,可以考虑使用函数参数,返回值,或者创建一个包含这些数据的类。这将使你的代码更加清晰,易于理解,更容易进行测试和调试。
五、尽量减少代码的重复
在编程中,避免代码重复是一个非常重要的原则,通常被称为DRY原则,即"Don’t Repeat Yourself"。
这意味着你应避免写入重复或相似的代码块,而是找出重复模式并创建可复用的函数或类替代。
例如,创建一个计算平均值的函数calculate_average,无论何处需要计算平均值,都可以调用此函数,而非重复编写相同代码。
遵守DRY原则有三大好处:
- 提升代码可读性:无重复代码让代码更易理解。
- 减少错误:使用函数或类避免因修改重复代码而导致的错误。
- 提高生产力:一次编写,多次使用,节省时间和精力。
六、使用版本控制系统
版本控制系统是一种记录文件或者项目的修改历史,以便将来查阅特定版本的系统。
其中,Git是最受欢迎的版本控制系统之一,可以帮助开发者跟踪和管理代码变化,支持多人协作。主要命令有git commit
和git checkout
。
git commit
用于提交修改,并附加解释消息。
当你对代码进行了修改,并希望将这些修改成为新的“版本”时,就可以使用git commit
命令。这个命令会将你的修改保存并附加一条你自行编写的消息,以便解释此次修改的内容。通过这种方式,你可以清晰地跟踪每个版本的变化,以及进行这些变化的原因。
git checkout
用于查看或回滚到早期版本。
这个命令可以让你查看或回退到代码的早期版本。如果你发现最新的代码存在问题,或者只是想查看早期版本的样子,就可以使用这个命令。执行这个命令后,你的代码库将回到你选择的那个版本的状态。
使用版本控制系统来写代码有三大好处:
1、跟踪代码变化:你可以清楚地看到每一次的修改,以及为什么要做这些修改。如果你发现代码有问题,你可以回滚到早期的版本,或者比较不同版本的差异,找出问题的来源。
2、支持多人协作:每个人可以在自己的分支上工作,然后将修改合并到主分支。这样,每个人都可以同时工作,而不会相互干扰。
3、作为代码备份:即使你的电脑出了问题或没保存,你也可以从版本控制系统中恢复你的代码。
七、测试你的代码
测试代码是编程的关键步骤,它能确保代码的功能、性能和安全性,保证及时发现错误。
测试代码有五大好处:
1、发现错误:在代码部署前发现并修复错误,防止潜在问题。
2、质量提升:保证代码的功能性、可靠性和性能,提升整体质量。
3、效率提升:及时发现并解决问题,避免后期大改,提升开发效率。
4、提供文档:测试用例可作为代码使用示例,帮助理解和使用代码。
5、重构促进:有了测试,可以更自信地进行代码重构,因测试会捕获引入的错误。
八、保持代码简洁
编程的目标之一自然是写出清晰、简洁和可维护的代码。如何写出一份简洁的代码全看程序员们的手下功夫,这是需要练习和后期修改的。
九、代码审查
代码审查,也被称为代码评审或源代码审查,是一种质量保证活动。
开发人员通过检查、阅读和理解他人代码,以发现和修复错误、优化代码设计、提高代码可读性和可维护性,同时用来分享知识。这个过程可以在不同环境下进行,例如在会议中或使用代码共享平台如GitHub。
举个例子,在GitHub上,开发者通过Pull Request(PR)进行代码审查,请求他人检查并合并更改。这个机制让团队成员能对新的或修改的代码提出问题、建议或修复。
代码审查的好处包括:发现和修复代码错误,提高软件质量和稳定性;优化代码设计,提高代码可读性和维护性;分享知识和最佳实践,提高团队效率。
此外,新员工可以通过代码审查更快地了解代码库和项目,同时,开发人员也可以通过审查他人代码来提升自己的技能。
十、代码重构
代码重构是优化代码的过程,其中包括分解、合并、简化等步骤,目的是想提高代码的质量、可读性、可维护性和可重用性。
程序员们常说“如果程序能跑,就别碰它”。这话有点自嘲的意味,因为有时候bug出现的地方和原因可能千奇百怪,也确实不知道怎么解决。
可不管程序的下场就是——越到后面越收不了尾,最后可能造出个屎山代码来。
好比GTA5这个游戏,在加载时居然有个if语句居然循环了19.8亿次,严重拖慢了游戏的加载速度,结果修了7年都没修好,生怕改了这串代码后其他程序跟着崩溃。
而且重构不应该等上个几个月再进行,而应该是实时的,持续的,写完了一个功能后最好就想着如何优化、重构它了。修改一篇800字的作文,最好的修改时间就是写完的那一刻。
学习方法
1、避免重复造轮子
在IT行业中,"重复造轮子"这个词通常用来形容一种无谓的努力,即重新编写一些已经被别人编写过的代码或者功能。
可如果已经有了一种解决问题的方法,那么就实在没有必要再去花费时间和精力去创建一个相同的解决方案,重复的劳作只会让人身心疲惫。
人类文明之所以会进步,是因为我们踩在前人的肩膀往上爬,编程也是这个道理。
有些程序员会对这种借鉴的行为不屑一顾,觉得很low,真正的大佬就该自己从零开始做一切!
这样的想法很对,但问题是,咱们又不是大佬,只是普普通通的小码农,有捷径为什么不走?开源社区的意义不就是通过分享让所有人能轻松解决已经解决过的问题吗?
举个例子,假设每个人都得自己动手制造一辆汽车,那将会是多么的费时费力。我们需要从零开始研究如何制作轮胎、发动机、刹车系统等等。但实际上,我们完全可以直接买一辆已经生产出来的汽车,然后根据自己的需求进行一些定制。这样一来,我们就可以把时间和精力用在更重要的事情上,比如开着汽车去我们想去的地方。
现在已经有许多开源的库和框架供我们使用,它们已经帮我们解决了许多普遍存在的问题。我们只需花时间学习如何运用它们,而无需从零开始编写代码。这样,我们就能把更多的时间和精力集中在解决实际业务问题上,而不是纠结于底层技术问题的处理上。
遵守“避免重复造轮子”这个概念,对我们的好处显而易见。
一来,避免了重复劳作,提高了工作效率。二来,利用其他人已经测试过的代码,就可以避免掉一些常见的错误和bug。
简单来说,程序员应该尽可能地利用已有的资源,而不是浪费时间去重复别人已经做过的事情。
2、多看官方文档及他人代码
如果想要提升自己的代码质量,最好的办法还是去多看多学多练,因为很多东西是“纸上得来终觉浅,绝知此事要躬行”。
官方文档和他人的优质开源代码,可以说是程序员最好的学习资源。
官方文档是技术或软件开发者为大家提供的最全面、最权威的信息来源。它通常包含了你需要知道的一切,包括如何使用这项技术,技术背后的原理,以及常见问题的解答等等。
初学者对官方文档的第一印象可能是“难懂”,其实不是的。
官方文档一般会从基础的概念开始讲起,然后逐渐深入到更复杂的内容。这种结构有助于我们系统地理解和学习一项技术。此外,官方文档通常包含很多示例代码,我们既可以通过这些代码来理解概念,也可以把它们作为实践的基础。
通过阅读和实践官方文档,我们不仅可以学到如何使用技术,也可以理解到技术背后的设计思想,这对于我们理解和掌握技术是非常有帮助的。
阅读优秀的开源项目代码,是学习和理解如何有效地组织和构建代码的最佳渠道。
深入阅读他人的代码时,我们会得到一些书上不会告诉我们的知识,比如如何处理各种错误和异常等。书和教学视频教会我们理论知识,而这些实战中出来的代码会告诉我们在实际编程过程中可能会遇到的问题,会告诉我们解决这些问题的思路。
此外,多看看优秀案例有助于我们培养形成良好的编程风格。
3、面向搜索引擎编程
开源的价值在于它为开发者搭建了一个广大的平台,让他们能够共享代码,吸取他人的优秀经验,同时也能针对别人的代码进行修改和优化,以此来提升自己的编程水平。
这些前人趟过雷的经验教训或是精心制作的框架代码都放在网络上。很多时候,你所疑惑的问题或者想实现的功能已经在网上了,你不必苦思冥想或者去麻烦其他程序员,只需要动动鼠标,你就可以得到答案。
在这个过程中,搜索引擎就像一本大型的知识百科全书,它里面储存了丰富的编程知识和解决问题的方法,只需要输入关键词,就能找到相关的信息。
有些人可能认为,仅会用搜索引擎找资料而不自己动脑筋解决问题算什么好汉。
然而,实际情况是,如果一个普通的程序员能够熟练运用搜索引擎,那他就能立马解决目前面临的99%的问题。至于为什么是99%,那是自然是因为搜索引擎也不是万能的。
有时候搜索引擎所提供的答案并不能完全解决你的问题,或者说,你需要花费大量的时间去筛选和理解这些信息。
不过不管怎么说,利用搜索引擎编程的确有效提升效率和代码质量,搜索过程中还可参考他人优秀实践,以避免重复劳动。同时还能学习最新技术,保持技术领先,并能寻找编程问题的解决方案,增强解决问题能力。
Google、Stack Overflow和GitHub是开发者常用的三个搜索工具,可以解决开发过程中的大部分问题。
Google可以提供大量的编程知识和教程,Stack Overflow是一个专门为程序员提供问题解答的社区,GitHub则是一个开源代码托管平台,可以找到大量的优秀代码和项目。
4、走出第一步
哪怕写的是垃圾代码,你也得先写啊。不写就什么东西都没有了。
想写优质代码,首先要敢于写垃圾代码。尽可能地把所有需求的代码都写出来,哪怕它们看起来很混乱。
就好比写作,脑中的想法再完美,如何想着下笔如有神,你都得先把想法写下来,无论是何种贫瘠的语言或是不出色的文笔,都得先把这些写出来,然后才能够修改它。
你要接受需求是不断变化的,得先把能搞定需求的代码写出来,后期再重构。
那怎么把垃圾代码修改成优质代码呢?
这里有一个原则大家可以看一下:
开放-封闭原则(OCP)
开放-封闭原则(OCP)是面向对象设计五个基本原则之一,它的核心思想是软件实体(类、模块、函数等等)应当对扩展开放,对修改封闭。
换句话说,当软件需要变化时,应该通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现。
“对扩展开放” 意味着我们应该设计出可以容纳新功能的系统,这就要求我们在设计系统时需要有前瞻性,考虑到可能的未来需求和变化。
“对修改封闭” 则意味着一旦系统完成,我们应该尽量避免修改已有的代码。因为对已有代码的修改会带来风险,可能会引入新的错误。如果我们的系统设计得足够好,那么当新的需求来临时,我们只需要添加新的代码,而不是修改旧的代码。
为了达到这个目标,我们需要在设计时尽可能使各个模块之间的依赖关系降至最低,使得一个模块的改动不会牵连其他模块。同时,我们也需要尽可能地使用抽象和封装,通过定义接口或者抽象类来隐藏具体实现,这样当具体实现变化时,依赖于它的代码就不需要改动。
相关文章:

如何写出优质代码
(本文转载自其他博主但是个人忘记了出处) 优质代码是什么? 优质代码是指那些易于理解、易于维护、可读性强、结构清晰、没有冗余、运行效率高、可复用性强、稳定性好、可扩展性强的代码。 这类代码不仅能够准确执行预期功能,同时也便于其他开发者理解…...

ChatGLM2-6B的通透解析:从FlashAttention、Multi-Query Attention到GLM2的微调、源码解读
前言 本文最初和第一代ChatGLM-6B的内容汇总在一块,但为了阐述清楚FlashAttention、Multi-Query Attention等相关的原理,以及GLM2的微调、源码解读等内容,导致之前那篇文章越写越长,故特把ChatGLM2相关的内容独立抽取出来成本文 …...

3D人脸生成的论文
一、TECA 1、论文信息 2、开源情况:comming soon TECA: Text-Guided Generation and Editing of Compositional 3D AvatarsGiven a text description, our method produces a compositional 3D avatar consisting of a mesh-based face and body and NeRF-based ha…...

解决问题:可以用什么方式实现自动化部署
自动化部署可以使用多种工具来实现: 脚本编写:可以使用 Bash、Python 等编写脚本来实现自动化部署。例如,可以使用 Bash 脚本来自动安装、配置和启动应用程序。 配置管理工具:像 Ansible、Puppet、Chef、Salt 等配置管理工具可以…...

【数据结构】链表栈
目录: 链表栈 1. 链式栈的实现2. 链表栈的创建3. 压栈4. 弹栈 链表栈 栈的主要表示方式有两种,一种是顺序表示,另一种是链式表示。本文主要介绍链式表示的栈。 链栈实际上和单链表差别不大,唯一区别就在于只需要对链表限定从头…...

Android笔记:Android 组件化方案探索与思考
组件化项目,通过gradle脚本,实现module在编译期隔离,运行期按需加载,实现组件间解耦,高效单独调试。 先来一张效果图 组件化初衷 APP版本不断的迭代,新功能的不断增加,业务也会变的越来越复杂…...

MeterSphere v2.10.X-lts 双节点HA部署方案
一、MeterSphere高可用部署架构及服务器配置 1.1 服务器信息 序号应用名称操作系统要求配置要求描述1负载均衡器CentOS 7.X /RedHat 7.X2C,4G,200GB部署Nginx,实现负载路由。 部署NFS服务器。2MeterSphere应用节点1CentOS 7.X /RedHat 7.X8C,16GB,200G…...

Java进阶篇--网络编程
目录 计算机网络体系结构 什么是网络协议? 为什么要对网络协议分层? 网络通信协议 TCP/IP 协议族 应用层 运输层 网络层 数据链路层 物理层 TCP/IP 协议族 TCP的三次握手四次挥手 TCP报文的头部结构 三次握手 四次挥手 …...

PyTorch入门之【CNN】
参考:https://www.bilibili.com/video/BV1114y1d79e/?spm_id_from333.999.0.0&vd_source98d31d5c9db8c0021988f2c2c25a9620 书接上回的MLP故本章就不详细解释了 目录 traintest train import torch from torchvision.transforms import ToTensor from torchvi…...

马斯洛需求层次模型之安全需求之云安全浅谈
在互联网云服务领域,安全需求是用户首要考虑的因素之一。用户希望在将数据和信息托付给云服务提供商时,这些数据和信息能够得到充分的保护,避免遭受未经授权的访问、泄露或破坏。这种安全需求的满足,对于用户来说是至关重要的&…...

Pikachu靶场——远程命令执行漏洞(RCE)
文章目录 1. RCE1.1 exec "ping"1.1.1 源代码分析1.1.2 漏洞防御 1.2 exec "eval"1.2.1 源代码分析1.2.2 漏洞防御 1.3 RCE 漏洞防御 1. RCE RCE(remote command/code execute)概述: RCE漏洞,可以让攻击者直接向后台服务器远程注入…...

【WSN】无线传感器网络 X-Y 坐标到图形视图和位字符串前缀嵌入方法研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Linux定时任务
文章目录 前言设置定时任务流程定时规则例子 终止定时任务列出当前的定时任务重启任务调度 前言 在Linux系统中有时侯需要周期性的自动执行一些命令,这时候Linux定时任务就派上用场了 设置定时任务流程 进入定时任务的编辑模式 crontab -e编辑定时任务ÿ…...

【Overload游戏引擎分析】画场景网格的Shader
Overload引擎地址: GitHub - adriengivry/Overload: 3D Game engine with editor 一、栅格绘制基本原理 Overload Editor启动之后,场景视图中有栅格线,这个在很多软件中都有。刚开始我猜测它应该是通过绘制线实现的。阅读代码发现࿰…...

【JavaEE】多线程进阶(一)饿汉模式和懒汉模式
多线程进阶(一) 文章目录 多线程进阶(一)单例模式饿汉模式懒汉模式 本篇主要引入多线程进阶的单例模式,为后面的大冰山做铺垫 代码案例介绍 单例模式 非常经典的设计模式 啥是设计模式 设计模式好比象棋中的 “棋谱”…...

C++树详解
树 树的定义 树(Tree)是n(n≥0)个结点的有限集。n0时称为空树。在任意一颗非空树中:①有且仅有一个特定的称为根(Root)的结点;②当n>1时,其余结点可分为m(…...

支付环境安全漏洞介绍
1、平台支付逻辑全流程分析 2、平台支付漏洞如何利用?买东西还送钱? 3、BURP抓包分析修改支付金额,伪造交易状态? 4、修改购物车参数实现底价购买商品 5、SRC、CTF、HW项目月入10W副业之路 6、如何构建最适合自己的网安学习路线 1…...

抄写Linux源码(Day16:内存管理)
回忆我们需要做的事情: 为了支持 shell 程序的执行,我们需要提供: 1.缺页中断(不理解为什么要这个东西,只是闪客说需要,后边再说) 2.硬盘驱动、文件系统 (shell程序一开始是存放在磁盘里的,所以需要这两个东…...

Cookie和Session详解以及结合生成登录效果
目录 引言 1.Cookie中的数据从哪来数据长啥样? 2.Cookie有什么作用? 3.cookie与session的工作关联? 4.Cookie到哪去? 5.Cookie如何存? 6.Session 7.Cookie与Session的关联与区别 8.通过代码理解 8.1 相关代码 8.2…...

Spring基础以及核心概念(IoC和DIQ)
1.Spring是什么 Spring是包含了众多工具方法的IoC容器 2.loC(Inversion of Control )是什么 IoC:控制反转,Spring是一个控制反转容器(控制反转对象的生命周期) Spring是一个loC容器,我们之前学过的List/Map就是数据存储的容器,to…...

《C和指针》笔记32:多维数组初始化
文章目录 使用括号进行初始化初始化省略维度 使用括号进行初始化 我们可以给数组赋值一个长长的列表: int matrix[2][3] { 100, 101, 102, 110, 111, 112 };它等价于 matrix[0][0]100; matrix[0][1]101; matrix[0][2]102; matrix[1][0]110; matrix[1][1]111; ma…...

零食食品经营小程序商城的作用是什么
零食几乎可以涵盖每个年龄阶段,同时又是市场中常见的零售批发商品,在多个场景中都有销售/购买属性,对消费者来说,购买零食的渠道多种多样,无论线下还是线上,都可随心而购。 庞大市场升级促进下,…...

Java泛型--什么是泛型?
https://www.bilibili.com/video/BV1xJ411n77R?p5&vd_sourcebb1fced25254581cf052adea5e87a1ff 1.泛型类、接口 1.1.泛型类 泛型类的定义 class 类名称 <泛型标识, 泛型标识, ...> {private 泛型标识 变量名;...... }常用的泛型标识:T、E、K、V jav…...

LabVIEW工业虚拟仪器的标准化实施
LabVIEW工业虚拟仪器的标准化实施 创建计算机化的测试和测量系统,从计算机桌面控制外部测量硬件设备,以及在计算机屏幕上显示的类似仪器的面板上查看来自外部设备的测试或测量数据,所有这些都需要虚拟仪器系统软件。该软件允许用户执行所有这…...

JavaScript系列从入门到精通系列第十七篇:JavaScript中的全局作用域
文章目录 前言 1:什么叫作用域 一:全局作用域 1:全局变量的声明 2:变量声明和使用的顺序 3:方法声明和使用的顺序 前言 1:什么叫作用域 可以起作用的范围 function fun(){var a 1; } fun();consol…...

汇编指令集合
...

TinyWebServer整体流程
从main主函数开始: 一、定义MySQL数据库的账号、密码和用到的数据库名称。 二、调用Config获得服务器初始化属性 在这一步确定触发模式端口等信息。 三、创建服务器实例对象 设置根目录、开辟存放http连接对象的空间,开辟定时器空间。 四、利用Confi…...

【Java项目推荐之黑马头条】自媒体文章实现异步上下架(使用Kafka中间件实现)
自媒体文章上下架功能完成 需求分析 流程说明 接口定义 说明接口路径/api/v1/news/down_or_up请求方式POST参数DTO响应结果ResponseResult DTO Data public class WmNewsDto {private Integer id;/*** 是否上架 0 下架 1 上架*/private Short enable;}ResponseResult 自媒…...

自学(黑客)技术方法————网络安全
如果你想自学网络安全,首先你必须了解什么是网络安全!,什么是黑客!! 1.无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如 Web 安全技术,既有 Web 渗透2.也有 Web 防…...

python+playwright 学习-84 Response 接口返回对象
Response 是获取接口响应对象,根据Response 对象可以获取响应的状态码,响应头部,响应正文等内容。 Response 相关操作方法 all_headers 所有响应HTTP标头, 返回Dict 类型 response.all_headers()body 获取 bytes 类型body内容 response.body()json 返回响应主体的 JS…...