设计模式基础概念:探索设计模式的魅力
设计模式是软件开发中的一种指导性概念,它提供了一套被广泛接受的解决方案,用于常见的设计问题。设计模式有助于提高软件的可重用性、可扩展性和可维护性,并促进团队之间的沟通。
以下是一些常见的设计模式:
创建型模式:
- 工厂模式(Factory Pattern):通过工厂类创建对象,而不直接使用 new 关键字。
- 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点。
- 原型模式(Prototype Pattern):通过克隆对象创建新的实例。
结构型模式:
- 适配器模式(Adapter Pattern):将一个类的接口转换为客户端所期望的另一个接口。
- 装饰器模式(Decorator Pattern):动态地给对象添加额外的职责。
- 组合模式(Composite Pattern):将对象组合成树形结构来表示“部分-整体”的层次结构。
行为型模式:
- 观察者模式(Observer Pattern):定义了对象之间的一对多依赖关系,当一个对象改变状态时,其依赖对象都会收到通知。
- 策略模式(Strategy Pattern):定义了一系列可互相替换的算法,使得算法的变化独立于使用算法的客户端。
- 命令模式(Command Pattern):将请求封装成对象,以便参数化客户端不同的请求。
这些只是设计模式中的一部分,每种模式都有其适用的场景和用法。设计模式帮助开发人员解决常见的设计问题,并提供了一种标准化的方法,促进了代码的可读性和可重用性。
一、设计模式是什么
核心概念:
设计模式:是指在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案。
—— 设计模式是解决方案
—— 设计模式是特定问题的解决方案:每种设计模式只能解决特定的问题,并不能解决所有问题。
—— 设计模式是重复出现的解决方案:只有重复出现问题才有意义去总结这些问题的解决方案和抽象它,当这些问题重复出现时就可以复用这些解决方案,而不必从头开始寻求解决方案。
—— 设计模式是特定环境下的解决方案:相同的问题在不同的场景下解决方案是不相同的,所以必须是特定环境下。
—— 设计模式是经过验证的解决方案:每个人都能总结解决方案,但并不是所有都是设计模式;只有被足够多用户验证,并得到大家的认可和公认。只有经过验证的解决方案才算得上是设计模式。
—— 设计模式强调是在软件开发中:后续更新的内容都为软件开发中的设计模式。(每个行业都有自己的设计模式)
要点:
1. 设计模式是解决某些问题的解决方案。
理解解决方案、理解其思想 和 思考方法论。
2. 设计模式是经验的积累和总结。
设计模式是经过验证被大家认可的解决方案的积累和总结,也就是说它是相对来讲是比较优秀方案,并不一定是最优秀的解决方案。
3. 设计模式是不断发展中。
时代发展会有更多优秀的被大多数人验证的解决方案出现。
4. 设计模式是各行各业都有。
各个行业都有自己的经过验证且被大多数人认可的解决方案。
5. 结构型模式:描述如何组合类和对象以获得更大的结构。
6. 行为型模式:描述算法和对象间职责的分配。
二、为什么要学习设计模式
学习设计模式对于任何使用Java或其他编程语言的开发者来说都是非常重要的。以下是一些学习和掌握设计模式的原因,特别是对于Java开发者:
1. 代码重用:设计模式提供了一套经过验证的解决方案,用于应对常见的软件设计问题。这意味着开发者可以使用这些解决方案来重用现有的设计思想,而不是重新发明轮子。
2. 最佳实践:设计模式是由经验丰富的软件工程师总结出来的最佳实践,它们可以帮助新手和中级开发者学习软件设计中的行业标准方法。
3. 提升设计质量:使用设计模式可以提升软件的设计质量,使其更加灵活、可维护和可扩展。
4. 解决特定问题:每种设计模式都是针对特定问题的一个解决方案,了解多种模式可以帮助开发者根据具体情况选择合适的模式来解决问题。
5. 促进团队沟通:设计模式提供了一套共同的词汇,开发者可以用它们来描述和讨论设计问题,方案和决策,这对于团队协作是非常有用的。
6. 避免创建不必要的复杂性:了解何时不使用设计模式和过度工程(over-engineering)同样重要。过度使用设计模式可能会增加不必要的复杂性,设计模式的知识可以帮助开发者避免这个问题。
7. 优化软件性能:有些设计模式(例如享元模式)可以帮助优化系统性能,通过共享和减少对象创建来减少内存和计算成本。
8. 学习面向对象分析和设计(OOAD):Java是一种面向对象的语言,设计模式是面向对象分析和设计的核心组成部分,所以它们是深入学习和掌握Java编程的关键。
通过学习设计模式,Java开发者不仅能够提升个人技能,也能够在团队中更有效地协作,构建出更加健壮、可维护和高效的软件系统。
2.1 设计模式三层级
- 入门级:正确理解和掌握每个设计模式的基本知识,能够识别在什么场景下、出现了什么样的问题、采用何种方案来解决,并且能在实际的程序设计开发中某个或某几个设计模式。(照葫芦画瓢)
- 基本掌握:要能够结合实际的应用场景,对设计模式进行变形使用。(灵活使用)
- 深入理解:从思想上和方法上只收设计模式的精髓,并融入到自己的思路中,在进行软件的分析和设计的时候,能随意地、自然而然地应用,成为自己思维的一部分。(理解本质,思维模式)
2.2 如何学习设计模式
学习设计模式是一个结合理论和实践的过程。以下是一些建议,可以帮助你更有效地学习设计模式:
1. 调整好心态,不要指望一蹴而就,不可浮躁:
- 学习和掌握设计模式是一个过程,不同的阶段看这些设计模式会有不同的领悟和 感受。
2. 基础理论学习:
- 阅读设计模式的经典书籍,如《设计模式:可复用面向对象软件的基础》(通常称为“四人帮”或Gang of Four(GoF)的书),这是学习设计模式的起点。
- 学习设计模式的三个主要类别:创建型、结构型和行为型。
准确理解每个设计模式的功能、基本结构、标准实现, 了解适合使用它的场景以及使用的效果
3. 理解问题和解决方案:
- 对于每个模式,理解它解决的问题是什么,它的解决方案是什么,以及它如何通过特定的方式解决问题。
- 学习模式的应用场景和它们解决的具体设计问题。
4. 代码示例:
- 查看设计模式的代码示例,并尝试理解如何在代码中实现它。
- 最好是查找多种语言的示例,特别是Java,以便了解模式在不同语言中的实现方式。
5. 自己动手实践:
- 尝试自己编写代码来实现不同的设计模式,并反复思 考和总结是否使用得当,是否需要做一些变化。从简单模式开始,比如单例模式,然后逐步过渡到更复杂的模式。
- 修改和重构现有的代码,尝试将设计模式应用到实际的编程问题中。
6. 项目实践:
- 在你的个人或工作项目中寻找实现设计模式的机会。这将有助于你理解它们在真实世界中的应用。
- 避免过度使用设计模式,理解何时和何地使用特定的模式。
7. 案例研究和分析:
- 研究使用设计模式的现有项目和框架,分析它们是如何实现的以及它们为何有效。
- 查看开源项目中的实际应用示例。
8. 社区和对话:
- 加入在线讨论和社区,如Stack Overflow、Reddit的相关版块或专门的设计模式论坛。
- 参加Meetup、研讨会和会议,与其他开发者交流学习心得。
9. 反复学习与总结:
- 定期复习和总结你了解的设计模式。
- 创建一份设计模式的清单或笔记,列出每个模式的关键要点、优点和用途。
回头去看设计模式的理论,有 了实际的模式应用经 验再看设计模式,会有不同的感悟,一边看一边结合着应用经验来思考。
10. 认识模式和反模式:
- 学习模式不仅是要知道何时使用它们,也需要知道何时避免使用它们(即反模式)。
11. 以问题为导向的学习:
- 当面对实际问题时,思考是否有一个设计模式可以作为解决方案,这可以让你在实践中深入理解和运用设计模式。
通过结合阅读、观察、编码和讨论,你可以逐渐加深对设计模式的理解,并将它们有效地应用在你的编程工作中。记住,熟练掌握设计模式需要时间和经验,所以要保持耐心并持续学习。
2.3 设计模式的本质
设计模式的本质是解决在软件设计和开发过程中经常遇到的结构和行为问题,通过提供行之有效的解决方案来促进代码的可重用性、可维护性、扩展性和灵活性。下面详细说明设计模式的几个核心本质:
1. 通用解决方案:
设计模式是针对特定问题的一般性解决方案。它们不是可以直接转换成代码的配方,而是描述了如何解决某个问题的方案模板,这些方案可以在多种不同情况下使用,并且可以根据具体上下文适度调整。2. 最佳实践:
它们是在软件工程实践中经过多次使用和优化后形成的一套成熟的最佳实践。这些模式往往是由有经验的软件工程师从过去的设计中总结出来的,并且已经被证明是有效的。3. 设计语言:
它们为开发者提供了一种共享的语言或词汇,有助于团队成员之间沟通设计想法、解决方案和设计问题。这种沟通工具能加速讨论过程,因为团队成员可以直接引用已知的模式,而无需从头解释整个设计概念。4. 抽象:
设计模式是对某一类问题的高度抽象。这意味着它们一般不会挂钩到具体的类或对象实例,而是提出一种处理问题的方法或对象关系结构。5. 重复性问题的体现:
模式体现了在多个不同项目和上下文中发现的重复性问题及其解决方案的精华。设计模式能够将这些常见问题归纳总结,形成模式容易识别和重用。6. 减少复杂性:
通过提供清晰和定义良好的方法来组织程序结构,设计模式有助于减少系统的复杂性,使之更加易于理解和维护。7. 提升软件质量:
运用设计模式的软件设计往往具有较高的质量,因为它们促进了良好的设计原则,如松耦合、高内聚、编程到接口而非实现等。8. 避免重新发明轮子:
设计模式利用了工程师们的共同经验,节省了开发者解决常见问题时的时间和精力,免除了重复工作的不必要。
最终,设计模式的本质在于提供针对一组固定设计问题的可复用的、经典的、经时间检验的解决框架,这使得软件设计人员能够高效且系统地处理设计挑战。
2.4 设计模式如何与具体的应用结合
设计模式与具体应用的结合通常需要根据实际情况进行适度的调整和灵活运用。以下是一些指导原则,可以帮助将设计模式与具体应用结合起来:
1. 了解具体问题:
首先要深入了解你所解决的具体问题,明确需求和目标。这有助于确定是否有任何设计模式适用于解决该问题,并且如果有的话,哪些模式是最合适的。2. 选择适当的模式:
根据具体问题的特点和需求,选择与之匹配的设计模式。这需要对各种模式的原理、特点和适用场景有一定的了解。3. 适应上下文环境:
对于每个选择的设计模式,需要在具体的应用环境中进行调整,以满足特定需求。这可能包括根据系统约束、技术栈、团队能力等进行适度的修改或扩展。4. 综合使用多个模式:
有时,一个问题可能需要结合多个设计模式来解决。这需要综合考虑多个因素,如问题的复杂性、横切关注点、性能需求等。5. 避免过度设计:
虽然设计模式可以提供优雅的解决方案,但过度使用设计模式可能会引入不必要的复杂性。只有当问题确实需要时才使用模式,不要为了使用而使用。6. 保持一致性和可读性:
尽量遵循设计模式的规范和约定,以保持代码的一致性和可读性。这有助于团队成员理解、维护和扩展代码。7. 实践和反馈:
随着实践的深入,你会更加熟悉各种设计模式的应用和限制。通过反馈和经验的积累,你可以更好地判断何时使用和调整设计模式。
设计模式并非一成不变的方法论,而是一系列有经验的解决方案,可以通过适度的调整和灵活运用来解决具体问题。灵活性、合理性和实用性是与具体应用结合的关键。
2.5 设计模式的出发点
设计模式的出发点可以理解为软件开发中遇到的问题,主要包括以下几个方面:
1. 问题复用性:
在软件开发中,某些设计问题可能会反复出现,以至于开发人员需要不断地重新解决相似的设计难题。设计模式的出发点之一就是为了解决这类反复出现的设计问题。通过提供通用、标准的解决方案,设计模式可以降低重复工作的成本,提高设计的复用性。
2. 良好的设计实践:
设计模式是对成功软件设计实践的总结和抽象,它们在实际项目中经受了时间和实践的考验。这些模式能够引导软件工程师遵循良好的设计原则,如高内聚性、低耦合性、接口分离等。
3. 提高软件可维护性:
通过使用设计模式,开发人员可以更容易地理解系统设计,从而提高软件的可维护性。设计模式提供了一种共享的设计语言,使得团队成员能够更好地沟通和理解彼此的设计意图。
4. 解决特定设计问题:
设计模式通常针对特定类型的设计问题,比如对象创建、对象间关系、行为细节等。它们提供了经典的解决方案,有助于解决这些特定类型的问题。
5. 交流和教育:
设计模式也用于交流和教育。通过使用设计模式,人们可以更容易地分享设计经验和知识,帮助新人迅速融入团队并理解复杂的系统设计。
总的来说,设计模式的出发点是通过提供通用的解决方案,引导软件工程师遵循良好的设计实践,并促进软件设计的复用和可维护性,从而更好地解决软件开发中常见的设计问题。
相关文章:
设计模式基础概念:探索设计模式的魅力
设计模式是软件开发中的一种指导性概念,它提供了一套被广泛接受的解决方案,用于常见的设计问题。设计模式有助于提高软件的可重用性、可扩展性和可维护性,并促进团队之间的沟通。 以下是一些常见的设计模式: 创建型模式࿱…...
【Leetcode】2182. 构造限制重复的字符串
文章目录 题目思路代码 题目 2182. 构造限制重复的字符串 问题:给你一个字符串 s 和一个整数 repeatLimit ,用 s 中的字符构造一个新字符串 repeatLimitedString ,使任何字母 连续 出现的次数都不超过 repeatLimit 次。你不必使用 s 中的全…...
Kubernetes(K8S)云服务器实操TKE
一、 Kubernetes(K8S)简介 Kubernetes源于希腊语,意为舵手,因为首尾字母中间正好有8个字母,简称为K8S。Kubernetes是当今最流行的开源容器管理平台,是 Google 发起并维护的基于 Docker 的开源容器集群管理系统。它是大名鼎鼎的Google Borg的开源版本。 K8s构建在 Docker …...
设置弹窗随鼠标位置移动
1.这是要移动的弹窗,隐藏显示逻辑、样式、展示内容自己写,主要就是动态设置弹窗的style,floatLeft和floatTop都是Vue中的data双向绑定数据; <div id"box" v-show"hasMove" :style"{ left: floatLeft…...
Spring Boot实现数据加密脱敏:注解 + 反射 + AOP
文章目录 1. 引言2. 数据加密和脱敏的需求3. Spring Boot项目初始化4. 敏感数据加密注解设计5. 实现加密和脱敏的工具类6. 实体类和加密脱敏注解的使用7. 利用AOP实现加密和脱敏8. 完善AOP切面9. 测试10. 拓展功能与未来展望10.1 加密算法的选择10.2 动态注解配置 11. 总结 &am…...
jmeter和meterSphere如何使用第三方jar包
工具引用jar包语言都是beanshell 问题起因:metersphere 接口自动化实现过程中,如何实现字符串加密且加密方法依赖第三方库; 使用语言:beanshell脚本语言,java语言 使用工具:idea jmeter metersphere 1.首…...
API对象上千个,有啥关联性,kubectl-tree一键搞定
关注【云原生百宝箱】公众号,获取更多云原生消息 "kubectl-tree 是一款强大的 kubectl 插件,通过 ownerReferences 实现 Kubernetes 对象之间的所有权关系探索。相较于 kubectl lineage,它不仅更全面理解 API 对象的逻辑关系,…...
java自定义工具类在List快速查找相同字段值对象
根据对象某一字段名,获取字段值,将List转换为Map中包含list,Key为字段值,Value为相同字段值的对象list,快速定位具有相同字段值的对象,转换之后便于在Map中根据字段值快速查找相同字段值的对象 //List转Map…...
codeforces Hello 2024 - C - Grouping Increases --- 题解
目录 Grouping Increases 题目描述: 思路解析: 代码实现: Grouping Increases 题目描述: 给你一个大小为n的数组a,你可以把数组a划分为两个子序列s和t,a中元素,要么在子序列s中,…...
STM32H5培训(一)总览
文章目录 1. 前言2. STM32H5系列MCU的特点和新功能包括性能提升、新外设和安全功能等3. STM32H5系列型号之间的区别和关键资源对比4. 性能和功能亮点6. 开发生态参考: 1. 前言 本篇主要介绍STM32H5系列MCU的特点和新功能,包括全新的M33内核、250M主频处…...
亚马逊云科技 WAF 部署小指南(五):在客户端集成 Amazon WAF SDK 抵御 DDoS 攻击...
方案介绍 在 WAF 部署小指南(一)中,我们了解了 Amazon WAF 的原理,并通过创建 WEB ACL 和托管规则防护常见的攻击。也了解了通过创建自定义规则在 HTTP 请求到达应用之前判断是阻断还是允许该请求。在 Amazon WAF 自定义规则中&am…...
高光谱分类论文解读分享之基于多模态融合Transformer的遥感图像分类方法
IEEE TGRS 2023:基于多模态融合Transformer的遥感图像分类方法 题目 Multimodal Fusion Transformer for Remote Sensing Image Classification 作者 Swalpa Kumar Roy , Student Member, IEEE, Ankur Deria , Danfeng Hong , Senior Member, IEEE, Behnood Ras…...
Trans论文复现:基于数据驱动的新能源充电站两阶段规划方法程序代码!
适用平台:MatlabYalmipCplex/Gurobi; 文章提出了一种电动汽车充电站的两阶段规划方法,第一阶段通过蒙特卡洛法模拟充电车辆需求和电池充放电数据来确定充电站位置;第二阶段通过数据驱动的分布鲁棒优化方法优化充电站的新能源和电池…...
将抖音视频转成MP3并下载
这篇是在上一篇的基础上写的,这篇负责抖音作者详情页的视频转声音提取,这篇需要用到后端。 本地启动后端后,在控制台输入对应代码,即可实现hover在封面上,按d一键下载音频 控制台代码 // 获取作者的视频列表var liEle…...
C程序训练:与输入有关的错误
在录入程序时有时稍不注意就可能录入错误的字符导致程序运行结果出现错误,下面举例说明。 下面程序的运行结果是错的,但程序又没有错,到底问题出现在哪呢? #include <stdio.h> int main() {FILE *fp;int i, k, n;fpfopen(…...
制作 CentOS Stream9 的U盘系统启动盘
一、简述 注:请勿用于商用,如有版权纠纷,于博主无任何关系。(仅用于学习研究使用) 由于CentOs Linux 7和CentOs Stream8终止日期是2024年,需要将系统升级到最新版本的CentOs Stream9,下面是刻录系统盘的操…...
Vulnhub靶机:driftingblues 1
一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:driftingblues1(10.0.2.17) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entr…...
CloudCompare——点云空间圆拟合
目录 1.概述2.软件实现3.完整操作4.算法源码5.相关代码 本文由CSDN点云侠原创,CloudCompare——点云空间圆拟合,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 1.概述 CloudCompare软件中的To…...
解决POI报错POIXMLTypeLoader不存在的问题
问题: springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoaderat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet…...
关于rewriteBatchedStatements的源码分析
在之前的优惠券兑换码需求中,涉及批量写入问题,其中有一个关键的连接配置参数非常重要——rewriteBatchedStatements,当该值配置为true时,Statement将可能对批量插入sql进行重写。 何谓重写?原来提交的批量执行语句&a…...
自动化神器 Playwright 的 Web 自动化测试解决方案
1. 主流框架的认识 总结: 由于Selenium在3.x和4.x两个版本的迭代中并没有发生多大的变化,因此Selenium一统天下的地位可能因新框架的出现而变得不那么稳固。后续的Cypress、TestCafe、Puppeteer被誉为后Selenium时代Web UI自动化的三驾马车。但是由于这三…...
docker filebeat 将日志多级目录和多维json数据日志同步到es
注 使用的时候先调试调试配置,调试成功在尝试写入es,如果es写入失败就是es账户.密码/白名单.和index未创建的问题,细节可以留言 setup.template.priority 模板优先级 调整这个可以配置一台机器多个filebeat 容器启动 多级目录日志和多维josn日志结构 filebeat.inputs:- typ…...
【机器学习】模型参数优化工具:Optuna使用分步指南(附XGB/LGBM调优代码)
常用的调参方式和工具包 常用的调参方式包括网格搜索(Grid Search)、**随机搜索(Random Search)和贝叶斯优化(Bayesian Optimization)**等。 工具包方面,Scikit-learn提供了GridSearchCV和RandomizedSearchCV等用于网格搜索和随机搜索的工具。另外,有一…...
webview全屏处理,即插即用
去年双十一有个直播的需求,听起来很简单,技术也都很成熟,但是真的开始实现后,还是有不少坑的,首先第一个uc内核不支持webRTC协议,需要重新开发chrome内核的webview,其次webview全屏处理、悬浮窗…...
实录分享 | 央企大数据平台架构发展趋势与应用场景的介绍
分享嘉宾: 孟子涵-中国华能集团信息中心平台架构师 2021年华能就与Alluxio建立了合作,共同写了整个华能统一纳管的架构方案。这个方案我认为是现在我们在央企里边比较核心的一套体系,能让全集团所有我们认为重要的数字化资源实现真正的统一集…...
UE5 将类修改目录
有个需求,需要修改ue里面类的位置,默认在Public类下面,我想创建一个二级目录,将所有的类分好位置,方便查看。 上图为创建一个类所在的默认位置。 接下来,将其移动到一个新的目录中。 首先在资源管理器中找…...
GPT实战系列-ChatGLM3管理工具的API接口
GPT实战系列-ChatGLM3管理外部借力工具 用ChatGLM的工具可以实现很多查询接口和执行命令,外部工具该如何配置使用?如何联合它们实现大模型查询助手功能?例如调用工具实现股票信息查询,网络天气查询等助手功能。 LLM大模型相关文章…...
Python 列表、元组、字典区别
1.列表、元组和字典都是序列 2.列表字典可以修改和删除序列中的某个元素,而元组就是一个整体,不能修改和删除,一定要修改或删除的话,只能修改和删除整个元组。 3.既然元组不能删除和修改,有什么作用呢? 1…...
[足式机器人]Part2 Dr. CAN学习笔记 - Ch03 傅里叶级数与变换
本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-Ch03 傅里叶级数与变换 1. 三角函数的正交性2. 周期为 2 π 2\pi 2π的函数展开为傅里叶级数3. 周期为 2 L 2L 2L的函数展开4. 傅里叶级数的复数形式5. 从傅里叶级数推导傅里叶变换FT6. 总结 1. …...
你想使用域名访问一个ip的网页,你应该怎么办呢?
你想使用域名访问一个ip的网页,你应该怎么办呢? eg:你想用https://test.com/访问http://1.1.1.1/方法: eg:你想用https://test.com/访问http://1.1.1.1/ 方法: 1.首先,如果你是服务器的管理者,你需要在服务器的官网申请一个test.com的域名,然后在官网将域名映射到1.1.1.1上. …...
搭建网站实时访问地图/河南网络推广公司
ARP双向绑定简单举例解释 ARP欺骗的出现,才让大家对ARP这个词有了认识 但什么是ARP呢? ARP土一点的说法就叫地址转换协议,就是把IP转成MAC的过程,实际上机子在通讯都是通过MAC在通讯的 MAC:网卡物理地址 假设有案例如下,某个公司,有三台电脑 (分别称为 A机192。…...
深圳网站建设公司流程/百度关键词快速优化
result 每个 action 方法都将返回一个 String 类型的值, Struts 将根据这个值来决定响应什么结果.每个 Action 声明都必须包含有数量足够多的 result 元素, 每个 result 元素分别对应着 action 方法的一个返回值. result 元素可以有下面两个属性 name: 结果的名字, 必须与 Ac…...
动态网站建设实训心得体会/seo推广知识
随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。 接上一文继续研究Fragment的使用,本文主要实现这样一个简单应用:左边显示标题栏,然后点击它&…...
网页制作与网站建设/如何在百度上推广自己
OpenJDK计划给Java添加局部变量类型推导的功能,这将使Java编程更加简单,并且保留静态类型的安全性。这项提议最早在本月由JEP286(JDK Enhancement Proposal)提出,但是文件并没有指出将在哪一个Java版本加入这一功能。提议指出:“我…...
我要免费建立一个网站吗/官网优化包括什么内容
1、设置语言与返回字符码 找到apache-jmeter-5.0\bin\jmeter.properties 1.1、搜索language,将en改为zh_CN 1.2、搜索iso-8859 改为 UTF-8 2、创建测试 2.1、打开jmeter.bat文件 如图: 2.2、右键测试计划,创建测试线程组 2.3、创建默…...
免费空间服务的网站/2023网站分享
题目见https://www.luogu.org/problem/P1181 这题真的是水题啊。不过他的提示略微具有迷惑性。 它把4 2 4 5 1分成三段[4][2 4][5 1],但是按我的做法,他应该这么分:[4 2][4][5 2] 这么看做法就很明显了,从头向后扫描,当…...