构件与中间件技术:概念、复用、分类及标准全解析
以下是对构件与中间件技术相关内容更详细的介绍:
一、构件与中间件技术的概念
1.构件技术
- 定义:构件是具有特定功能、可独立部署和替换的软件模块,它遵循一定的规范和接口标准,能够在不同的软件系统中被复用。构件技术就是以构件为基本单位来开发、组装和维护软件系统的技术,强调软件的可复用性、可维护性和可扩展性。
- 特点:构件具有封装性,将内部实现细节隐藏起来,只通过接口对外提供服务;具有独立性,能够独立进行开发、测试和部署;还具有可组合性,可以与其他构件通过接口进行交互和组合,形成复杂的软件系统。
2.中间件技术
- 定义:中间件是一种位于底层系统软件(如操作系统、数据库管理系统)和应用软件之间的软件层,它提供了一系列通用的服务和功能,用于解决分布式系统中不同应用程序之间的通信、数据交换、资源共享、事务处理等问题。
- 作用:中间件屏蔽了底层系统的复杂性和异构性,使得应用软件的开发人员可以专注于业务逻辑的实现,而不必关心底层的通信协议、数据格式转换、资源管理等细节。它提高了应用软件的可移植性、可扩展性和可靠性,降低了软件开发和维护的成本。
二、构件的复用
1.概念:构件复用是指在软件开发过程中,重复使用已有的构件来构建新的软件系统,而不是重新开发相同或相似的功能。通过构件复用,可以大大提高软件开发的效率,减少开发时间和成本,同时提高软件的质量和可靠性。
2.复用方式
- 源代码复用:直接使用已有的构件源代码,开发人员可以根据新的需求对源代码进行修改和定制。这种方式的优点是可以深入了解构件的内部实现,便于进行个性化的修改;缺点是需要对源代码有深入的理解,且修改可能会引入新的错误,同时也受到原构件代码结构和编程语言的限制。
- 二进制复用:使用已编译好的构件二进制代码,将其链接到新的软件系统中。这种方式的优点是不需要了解构件的源代码,使用方便,且二进制代码经过了编译和测试,相对稳定;缺点是难以对构件进行修改和定制,除非构件提供了相应的配置接口。
- 接口复用:利用构件提供的接口,开发新的构件或应用程序,与已有的构件进行交互和协作。这种方式强调了构件之间的接口规范和交互协议,通过接口可以实现不同构件之间的松耦合集成。开发人员只需要关注接口的定义和使用,而不必关心构件的内部实现。
3.复用过程
- 构件检索:根据软件项目的需求,从构件库或其他资源中查找合适的构件。构件检索需要有有效的检索机制,通常可以根据构件的功能描述、接口定义、关键字等信息进行搜索。为了提高检索的准确性和效率,构件库通常会采用分类、索引等技术来组织构件。
- 构件评估:对检索到的构件进行全面的评估,以确定其是否适合在当前项目中复用。评估内容包括构件的功能是否满足需求、性能是否符合要求、可靠性和稳定性如何、是否与现有系统兼容、是否有合适的文档和支持等。通过构件评估,可以避免使用不适合的构件,降低复用的风险。
- 构件适配:如果检索到的构件不能直接满足项目的需求,就需要对其进行适配和定制。构件适配可能包括修改构件的配置参数、调整接口的使用方式、添加额外的功能模块等。适配过程需要谨慎进行,以确保在满足新需求的同时,不会破坏构件的原有功能和稳定性。
- 构件集成:将适配后的构件集成到新的软件系统中。构件集成涉及到构件之间的接口连接、数据传递、资源共享等问题,需要遵循一定的集成规范和流程。在集成过程中,要进行充分的测试和验证,确保构件与其他部分的系统能够正常协作,整个软件系统的功能和性能符合预期。
三、构件的分类
1.按功能分类
- 用户界面构件:主要负责处理用户与软件系统之间的交互,包括各种界面元素,如按钮、菜单、文本框、列表框、对话框等。这些构件能够将用户的操作转化为系统可以理解的指令,并将系统的反馈信息以直观的方式呈现给用户。用户界面构件的设计和实现需要考虑用户体验、界面布局、交互逻辑等方面,以提供友好、易用的用户界面。
- 业务逻辑构件:实现软件系统的核心业务功能,如订单处理、库存管理、客户关系管理、财务管理等。这些构件封装了业务规则、算法和流程,通过与其他构件(如数据访问构件、用户界面构件)进行交互,完成复杂的业务操作。业务逻辑构件的设计和实现需要深入了解业务领域的需求和规则,以确保软件系统能够准确、高效地处理业务逻辑。
- 数据访问构件:负责与数据库或其他数据存储系统进行交互,实现数据的查询、插入、更新和删除等操作。数据访问构件提供了统一的数据访问接口,将不同类型的数据库操作封装起来,使得业务逻辑构件和其他构件可以方便地访问和处理数据,而不必关心底层的数据存储和访问细节。数据访问构件还可以实现数据缓存、数据一致性维护等功能,提高数据访问的性能和可靠性。
2.按粒度分类
- 粗粒度构件:具有较高的功能独立性和较大的规模,通常包含多个细粒度构件,可完成较为复杂的功能。粗粒度构件对外提供了相对完整的功能服务,其接口相对简单,主要用于与其他粗粒度构件或系统进行集成。例如,一个企业级应用中的订单处理模块可以作为一个粗粒度构件,它包含了订单创建、订单审批、订单发货等多个子功能,通过一组简洁的接口与其他模块(如库存管理模块、客户管理模块)进行交互。
- 细粒度构件:功能相对简单,规模较小,通常作为粗粒度构件的组成部分,用于实现特定的功能细节。细粒度构件的接口可能比较复杂,因为它们需要与其他细粒度构件或粗粒度构件进行紧密的协作。例如,在订单处理模块中,负责计算订单金额的构件就是一个细粒度构件,它可能会与其他计算税费、运费等细粒度构件一起,为订单处理提供完整的计算功能。
3.按复用方式分类
- 可复用构件:经过精心设计和开发,具有较高的通用性和可复用性,可在多个不同的软件项目中重复使用。可复用构件通常具有良好的封装性、接口规范性和文档说明,能够适应不同的应用场景和需求变化。例如,一些通用的数学计算构件、字符串处理构件、数据加密构件等,都可以在多个不同领域的软件项目中被复用。
- 定制构件:针对特定的软件项目或需求进行定制开发的构件,复用性较低,但能够更好地满足特定的业务需求。定制构件通常是在可复用构件的基础上,根据具体项目的特殊要求进行修改和扩展而得到的。例如,某个企业的特定业务流程需要一个特殊的报表生成构件,该构件可能是在通用报表生成构件的基础上,针对该企业的报表格式、数据来源和业务规则进行定制开发的。
4.按技术实现分类
- COM 构件:基于微软的 COM(Component Object Model)技术实现的构件,主要用于 Windows 平台上的软件开发。COM 构件具有良好的二进制兼容性和互操作性,能够方便地在不同的 Windows 应用程序之间进行集成和复用。COM 构件通过接口来暴露其功能,开发人员可以使用多种编程语言(如 C++、VB、C# 等)来开发和使用 COM 构件。
- CORBA 构件:基于 CORBA(Common Object Request Broker Architecture)技术实现的构件,具有跨平台、跨语言的特点,适用于分布式系统的开发。CORBA 构件通过 ORB(Object Request Broker)来实现对象之间的通信和交互,能够在不同的操作系统和编程语言环境中进行互操作。CORBA 构件的开发和使用需要遵循 CORBA 的规范和接口定义,以确保构件的可移植性和互操作性。
- EJB 构件:基于 Java EE 平台的 EJB(Enterprise JavaBeans)技术实现的构件,主要用于企业级应用系统的开发。EJB 构件提供了事务处理、安全管理、资源管理等功能,能够方便地开发分布式、可扩展、高可靠性的企业级应用。EJB 构件运行在 EJB 容器中,容器负责管理构件的生命周期、资源分配和事务处理等任务,开发人员只需要专注于业务逻辑的实现。
四、构件标准
构件标准是为了确保构件的互操作性、可复用性和可管理性而制定的一系列规范和准则。常见的构件标准有以下几种:
- OMG 的 CORBA 构件模型(CCM):由对象管理组织(OMG)制定。它定义了构件的接口、实现、生命周期管理以及构件之间的交互方式等。CORBA 构件可以在不同的平台和编程语言之间进行互操作,通过接口定义语言(IDL)来描述构件的接口,使得不同语言实现的构件能够理解和交互。
- 微软的 COM/DCOM/COM+:COM(Component Object Model)是微软提出的构件模型,定义了构件的二进制标准和接口规范,使得不同的构件可以在 Windows 平台上进行交互和复用。DCOM(Distributed COM)在 COM 的基础上支持分布式环境下的构件通信。COM + 则进一步扩展了 COM 的功能,提供了更多的服务,如事务处理、对象池管理等。
- Java 的 EJB(Enterprise JavaBeans):是 Java EE 平台的一部分,定义了企业级 Java 构件的开发规范。EJB 构件运行在 EJB 容器中,容器负责管理构件的生命周期、事务处理、安全管理等。EJB 构件通过远程方法调用(RMI)等机制实现分布式访问,具有良好的可扩展性和可维护性。
五、CORBA 详细介绍
1.概念:CORBA(Common Object Request Broker Architecture)即公共对象请求代理体系结构,是一种用于分布式系统中对象之间进行通信和交互的中间件技术。它允许不同的对象在不同的平台、不同的编程语言环境下进行透明的通信和协作,屏蔽了底层的网络通信、对象定位、数据格式转换等细节。
2.体系结构
- 对象请求代理(ORB):是 CORBA 的核心组件,负责接收客户端的请求,将请求发送到目标对象,并将目标对象的响应返回给客户端。ORB 提供了对象定位、通信协议转换、数据序列化和反序列化等功能,使得客户端和服务器端的对象可以透明地进行交互。
- 接口定义语言(IDL):用于定义 CORBA 对象的接口。IDL 描述了对象提供的操作、操作的参数和返回值等信息。通过 IDL,不同语言编写的对象可以有一个统一的接口描述,便于进行交互。IDL 编译器可以将 IDL 定义转换为不同编程语言的代码框架,开发人员可以在这个框架的基础上实现具体的业务逻辑。
- 对象适配器(Object Adapter):负责将 ORB 接收到的请求分发给具体的对象实现,并管理对象的生命周期。它还负责将对象的实现与 ORB 进行绑定,使得对象可以通过 ORB 接收请求。
- 可移植对象适配器(POA):是一种特殊的对象适配器,提供了更灵活和可移植的对象管理方式。POA 允许开发人员根据不同的需求定制对象的激活、注销、请求分发等行为,并且可以在不同的 ORB 实现之间进行移植。
3.工作原理
- 客户端通过 ORB 发出一个请求,请求中包含要调用的对象的标识、操作名称以及操作的参数等信息。
- ORB 根据对象的标识找到目标对象的地址,并将请求进行序列化,按照一定的通信协议将请求发送到服务器端。
- 服务器端的 ORB 接收到请求后,将其反序列化,并通过对象适配器将请求分发给目标对象的实现。
- 目标对象执行相应的操作,并将结果返回给对象适配器。
- 对象适配器将结果序列化后通过 ORB 发送回客户端,客户端的 ORB 再将结果反序列化并返回给客户端应用程序。
4.优点
- 跨平台和语言:能够集成不同平台(如 Windows、Linux、Unix 等)和不同编程语言(如 C++、Java、Python 等)开发的对象,实现异构系统的集成。
- 分布式处理能力:支持分布式环境下的对象通信和协作,使得系统可以方便地进行扩展和部署,将不同的功能模块分布在不同的服务器上,提高系统的性能和可靠性。
- 面向对象的设计:基于面向对象的思想,将系统中的各种功能封装为对象,通过对象之间的消息传递来实现系统的功能,具有良好的可维护性和可扩展性。
5.缺点
- 复杂性:CORBA 的体系结构较为复杂,涉及到多个组件和规范,开发和部署 CORBA 应用程序需要较高的技术门槛,增加了开发和维护的成本。
- 性能开销:由于 CORBA 需要进行对象请求的封装、序列化、传输以及反序列化等操作,在一些对性能要求较高的场景下,可能会产生一定的性能开销。
- 缺乏统一的实现标准:虽然 CORBA 有统一的规范,但不同的 ORB 实现可能存在一些差异,这在一定程度上影响了 CORBA 应用的可移植性和互操作性。
CORBA 在分布式系统开发中曾经发挥了重要作用,尤其在企业级应用集成、电信领域等有广泛的应用。但随着技术的发展,一些新的分布式技术和框架逐渐兴起,CORBA 的应用场景有所减少,但在一些特定领域仍然有其价值。
相关文章:
构件与中间件技术:概念、复用、分类及标准全解析
以下是对构件与中间件技术相关内容更详细的介绍: 一、构件与中间件技术的概念 1.构件技术 定义:构件是具有特定功能、可独立部署和替换的软件模块,它遵循一定的规范和接口标准,能够在不同的软件系统中被复用。构件技术就是以构…...
亲手打造可视化故事线管理工具:开发全流程、难点突破与开发过程经验总结
亲手打造可视化故事线管理工具:开发全流程、难点突破与开发过程经验总结 作为还没入门的业余编程爱好者,奋战了2天,借助AI开发一款FLASK小工具,功能还在完善中(时间轴可以跟随关联图缩放,加了一个用C键控制…...
CSS 字体学习笔记
在网页设计中,字体的使用对于提升用户体验和页面美观性至关重要。CSS 提供了一系列字体属性,用于控制文本的显示效果。以下是对 CSS 字体属性的详细学习笔记。 一、字体系列(font-family) 1. 字体系列的分类 在 CSS 中…...
通过 spring ai 对接 deepseek ai 大模型通过向量数据库,完成 AI 写标书及构建知识库功能的设计与开发
AI写标书及知识库构建详细设计方案 一、系统架构设计 +-------------------+ +-------------------+ +-------------------+ | 用户交互层 | | AI服务层 | | 知识库存储层 | | (Web/API) |---->| (Spring AI) |---…...
cropperjs 2.0裁剪图片后转base64提示“Tainted canvases may not be exported”跨域问题的解决办法。
目录 为什么会有这边文章 辛酸历程,不看也罢 想解决问题,看这里就够了 问题已解决,后边还是废话 为什么会有这边文章 最近,做一个项目需要用在前端实现图片裁剪功能,毋庸置疑,cropperjs是不二选择。当在…...
2、JSX:魔法世界的通行证——用魔法符号编织动态界面
一、开篇:魔法符号的觉醒 "看呐,赫敏!这根魔杖(React组件)为何能自动绘制出动态界面?"年轻的巫师学徒罗恩指着闪烁的屏幕惊呼。 "这就是JSX魔法阵的威力,"邓布利多校长挥舞…...
八大排序算法
目录 八大排序算法排序算法的稳定性比较排序插入排序直接插入排序希尔排序希尔排序的时间复杂度计算 选择排序直接选择排序堆排序 交换排序冒泡排序快速排序递归hoare版本挖坑法lomuto前后指针 非递归 归并排序排序性能对比 非比较排序计数排序 比较排序算法总结 八大排序算法 …...
搭建一个Spring Boot聚合项目
1. 创建父项目 打开IntelliJ IDEA,选择 New Project。 在创建向导中选择 Maven,确保选中 Create from archetype,选择 org.apache.maven.archetypes:maven-archetype-quickstart。 填写项目信息: GroupId:com.exampl…...
Google A2A协议解析:构建分布式异构多Agent系统
一、A2A 是什么?有什么用? 1.1 A2A 是什么? A2A(Agent-to-Agent Protocol)是Google最新推出的一项开源协议,旨在为AI智能体(Agents)提供标准化的通信方式。它允许不同框架…...
【Android读书笔记】读书笔记记录
文章目录 一. Android开发艺术探索1. Activity的生命周期和启动模式1.1 生命周期全面分析 一. Android开发艺术探索 1. Activity的生命周期和启动模式 1.1 生命周期全面分析 onPause和onStop onPause后会快速调用onStop,极端条件下直接调用onResume 当用户打开新…...
支持selenium的chrome driver更新到135.0.7049.84
最近chrome释放新版本:135.0.7049.84 如果运行selenium自动化测试出现以下问题,是需要升级chromedriver才可以解决的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only su…...
【玩泰山派】MISC(杂项)- 使用vscode远程连接泰山派进行开发
文章目录 前言流程1、安装、启动sshd2、配置一下允许root登录3、vscode中配置1、安装remote插件2、登录 **注意** 前言 有时候要在开发板中写一写代码,直接在终端中使用vim这种工具有时候也不是很方便。这里准备使用vscode去通过ssh远程连接泰山派去操作࿰…...
利用阿里云企业邮箱服务实现Python群发邮件
目录 一、阿里云企业邮箱群发邮件全流程实现 1. 准备工作与环境配置 2. 收件人列表管理 3. 邮件内容构建 4. 附件添加实现 5. 邮件发送核心逻辑 二、开发过程中遇到的问题与解决方案 1. 附件发送失败问题 2. 中文文件名乱码问题 3. 企业邮箱认证失败 三、完整工作流…...
中文编码,GB系列,UTF
图片来源:https://zhuanlan.zhihu.com/p/701690894 文章目录 ASCIIGB系列编码UTF编码 ASCII American Standard Code for Information Interchange 一个字节,但其实只用了一半: 128个字符 GB系列编码 “国标” 和ASCII是兼容的。 GB2312…...
车载以太网-TLS
文章目录 车载以太网与TLS的技术背景核心定位车载以太网TLS的技术架构车载TLS的核心安全机制TLS报文结构详解TLS工作机制密钥交换与计算流程标题完整握手流程(1-RTT)数据传输加密流程车载TLS的独特优化策略车载TLS的安全威胁相关标准车载以太网TLS(Transport Layer Security…...
【大英赛】大英赛准备笔记
听力 总结 提醒专注 一题一个听力时,听是重点 抓紧时间往后审题 比较容易的部分:secA & secD中的dictation,在大致审当前的基础上,分别利用这个时间提前看后面的secB√& summery secA 听之前应当大致审选项&#x…...
有序数组的平方
暴力排序 每个数平方以后排个序 class Solution { public:vector<int> sortedSquares(vector<int>& nums) {int slow0,fast0;int nnums.size();while(fast<n){nums[slow]nums[fast]*nums[fast];fast;slow;}sort(nums.begin(),nums.end());return nums;} }…...
Python基于Django的房屋信息可视化及价格预测系统(附源码,文档说明)
博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇dz…...
【5G-A学习】ISAC通信感知一体化学习小记
通信感知一体化(Integrated Sensing and Communication, ISAC)是一种将无线通信与环境感知功能深度融合的技术,通过共享硬件、频谱和信号处理流程,实现通信与感知的协同增效。其核心原理及无人机与飞鸟的识别方式如下:…...
深入解析@Validated注解:Spring 验证机制的核心工具
一、注解出处与核心定位 1. 注解来源 • 所属框架:Validated 是 Spring Framework 提供的注解(org.springframework.validation.annotation 包下)。 • 核心定位: 作为 Spring 对 JSR-380(Bean Validation 2.0&#…...
学生考勤管理系统(jsp+ssh+mysql5.x)含文档
学生考勤管理系统(jspsshmysql5.x)含万字详细文档 学生考勤管理系统是一个用于管理学生出勤和请假的系统,系统登录页面提供账号和密码输入框,用户可以选择角色进行登录。系统主菜单包括班级管理、用户管理、课程表管理和考勤情况…...
【响应式编程】Reactor 常用操作符与使用指南
文章目录 一、创建操作符1. just —— 创建包含指定元素的流2. fromIterable —— 从集合创建 Flux3. empty —— 创建空的 Flux 或 Mono4. fromArray —— 从数组创建 Flux5. fromStream —— 从 Java 8 Stream 创建 Flux6. create —— 使用 FluxSink 手动发射元素7. generat…...
为什么我们需要if __name__ == __main__:
[目录] 0.前言 1.什么是 __name__? 2.if __name__ __main__: 的作用 3.为何Windows更需if __name__ ?前言 if __name__ __main__: 是 Python 中一个非常重要的惯用法,尤其在使用 multiprocessing 模块或编写可导入的模块时。它的作用是区分…...
Week 1: Time Complexity, Rectangle Geometry
问题集 Square PastureBucket BrigadeBlocked BillboardBlocked Billboard IIWord ProcessorDo You Know Your ABCs?The Cow-SignalD3C - White Sheet 视频解析 Square Pasture Bucket Brigade Blocked Billboard Blocked Billboard II Word Processor Do You Know Your AB…...
论文学习:《通过基于元学习的图变换探索冷启动场景下的药物-靶标相互作用预测》
原文标题:Exploring drug-target interaction prediction on cold-start scenarios via meta-learning-based graph transformer 原文链接:https://www.sciencedirect.com/science/article/pii/S1046202324002470 药物-靶点相互作用(DTI&…...
STM32 HAL库 OLED驱动实现
一、概述 1.1 OLED 显示屏简介 OLED(Organic Light - Emitting Diode)即有机发光二极管,与传统的 LCD 显示屏相比,OLED 具有自发光、视角广、响应速度快、对比度高、功耗低等优点。在嵌入式系统中,OLED 显示屏常被用…...
UE5蓝图之间的通信------接口
一、创建蓝图接口 二、双击创建的蓝图接口,添加函数,并重命名新函数。 三、在一个蓝图(如玩家角色蓝图)中实现接口,如下图: 步骤一:点击类设置 步骤二:在细节面板已经实现的接口中…...
封装Tcp Socket
封装Tcp Socket 0. 前言1. Socket.hpp2. 简单的使用介绍 0. 前言 本文中用到的Log.hpp在笔者的历史文章中都有涉及,这里就不再粘贴源码了,学习地址如下:https://blog.csdn.net/weixin_73870552/article/details/145434855?spm1001.2014.3001…...
深入解析 Android 图形系统:Canvas、Skia、OpenGL 与 SurfaceFlinger 的协作
在 Android 应用开发中,流畅的 UI 渲染是用户体验的核心。但你是否好奇,一个简单的 View 是如何从代码中的 onDraw() 方法一步步变成屏幕上的像素的?本文将从底层图形系统的视角,解析 Android 中 Canvas、Skia、OpenGL ES 和 Surf…...
LeetCode每日一题4.13
1922. 统计好数字的数目 问题 问题分析 题目要求我们找到长度为 n 且满足特定条件(偶数下标处为偶数,奇数下标处为质数)的数字字符串的总数,并对 (10^9 7) 取余。 思路 1.枚举 生成所有可能的数字字符串:对于长度…...
Java学习——day29(并发控制高级工具与设计模式)
文章目录 1. 并发控制高级工具简介1.1 CountDownLatch1.2 CyclicBarrier1.3 Semaphore1.4 并发设计模式 2. 扩展生产者—消费者示例2.1 示例代码 3. 代码详解3.1 主类 ExtendedProducerConsumerDemo3.2 Buffer 类3.3 Producer 类3.4 Consumer 类 4. 编译与运行结果4.1 编译4.2 …...
使用FormData格式上传图片
为什么要使用FormData格式上传图片 1. 为什么使用 FormData? FormData 是一种专门用于构建表单数据的对象,它能够以 multipart/form-data 格式发送数据,这是文件上传的标准格式。以下是使用 FormData 的主要原因: 简单易用 直…...
Tkinter表格与列表框应用
在图形用户界面(GUI)开发中,表格和列表框是常用的控件,用于显示和管理大量的数据。Tkinter提供了Listbox控件来显示简单的列表数据,而对于更复杂的表格数据,可以使用Treeview控件(属于ttk模块)来实现。这一章将介绍如何使用Listbox和Treeview来显示和操作数据,帮助您处…...
【Excel】数据透视表月度数据排序不正确
【问题】 插入数据透视表后,月度列显示的日期,是按照文本格式排序的,显然与实际月份排序并不相符。 【目的】 按照从1月份到12月份进行自然月度排序。 【方法】 步骤一: 在任意一处,输入“1月”-“12月”&#…...
HCIP第十天
OSPF的数据包 OSPF是跨层封装协议,直接封装在网络层之上 --- 需要IP协议使用一个协议号来标定 OSPF --- 89 OSPF的头部 版本 --- OSPF的版本 --- 2 类型 --- OSPF数据包的类型 --- hello -- 1 DBD -- 2 LSR -- 3 LSU -- 4 LSACK -- 5 路由器ID --- RID --- 携带的是发出O…...
Vue2,Vue3知识大全
Vue 1.了解vue,快速上手 vue是一个用于构建用户的界面的渐进式框架. vue的两种使用方法: vue核心包开发 场景:局部模块改造 vue核心包&vue插件 工程化开发 场景:整站开发 1.创建一个vue实例: 2.插值表达式 1.插值表达式是一种Vue的模版语法 作用:利用表达式进行插值…...
java面向对象02:回顾方法
回顾方法及加深 定义方法 修饰符 返回类型 break:跳出switch和return的区别 方法名 参数列表 package com.oop.demo01;//Demo01类 public class Demo01 {//main方法public static void main(String[] args) {}/*修饰符 返回值类型 方法名(...){//方法体return…...
【Ubuntu】【树莓派】Linux系统的远程终端登录、远程图形桌面访问、 X图形窗口访问和文件传输操作
目录 一、Ubuntu远程终端并实现文件上传下载 1.1Ubuntu桥接模式设置和新用户的创建 1.2Ubuntu的远程登录并上传和下载文件 1.3在Xming中进行Ubuntu的图形访问 二、树莓派远程登录并实现文件上传下载 2.1树莓派在putty上的远程登录 2.2使用ftp远程登录并实现文件上传下载…...
Linux Kernel 2
地址空间(Address Space) 一、物理地址空间(Physical Address Space) 物理地址空间 是指 RAM 和设备内存 在系统内存总线上所呈现的地址布局。 举例:在典型的 32 32 32 位 Intel 架构中, RAM(…...
二.springBoot项目集成ElasticSearch及使用
二.springBoot项目集成ElasticSearch及使用 1.依赖引入2.ElasticSearch常见用法 1.依赖引入 <!--elasticsearch搜索引擎--> <!--高版本7.0后TransportClient已被淘汰,用rest-high-level-client代替--> <dependency><groupId>org.elasticse…...
从三次方程到复平面:复数概念的奇妙演进(一)
注:本文为 “复数 | 历史 / 演进” 相关文章合辑。 因 csdn 篇幅限制分篇连载,此为第一篇。 生料,不同的文章不同的点。 机翻,未校。 Reflections on the History of Complex Numbers 复数的历史回顾 The first occurrence o…...
Day52 | 6. Z 字形变换、8. 字符串转换整数 (atoi)、22. 括号生成、38. 外观数列
6. Z 字形变换 题目链接:6. Z 字形变换 - 力扣(LeetCode) 题目难度:中等 代码: class Solution {public String convert(String s, int numRows) {if(numRows<2) return s;List<StringBuilder> rowsnew A…...
每日OJ_牛客_ruby和薯条_排序+二分/滑动窗口_C++_Java
目录 ruby和薯条_排序二分/滑动窗口 题目解析 C代码 Java代码 ruby和薯条_排序二分/滑动窗口 ruby和薯条 描述: ruby很喜欢吃薯条。 有一天,她拿出了n根薯条。第i根薯条的长度为ai。 ruby认为,若两根薯条的长度之差在l和r之间ÿ…...
快速幂运算
快速幂运算 一、快速幂运算快速幂运算(Exponentiation by Squaring)基本思想算法实现(②③为非递归)① 递归运算② 普通 除模运算(不带 **模数** 与 带 **模数**)③ 按位与运算 使用示例示例代码 复杂度分析…...
vue @import引入CSS scoped无效 造成全局样式污染
引入css文件导致全局样式污染 1.写在单组件的style里面css样式,如果标签内不加scoped可能会影响其他组件的样式 <style lang"scss" scoped> </style> 2.通过import引入的外部css文件,这种引入方式是全局的,也会影响其…...
基于Flask-Login简单登录和权限控制实践
1. 关于Flask-Login Flask-Login 是一个为python Flask Web框架设计的扩展,用于管理用户会话(用户登录状态)。它提供了简单的接口来处理用户登录、注销、记住用户等功能,同时确保用户会话的安全性。以下是 Flask-Login 的一些关键特性和功能: 1.1. 主要功能 用户会话管理…...
文件流---------获取文件的内容到控制台
总流程:先创建一个文本文件------->里面写入一些内容(纯字母和字母加文字)-----------> 然后通过输入流获取文件里面的内容,两种方式。 1.第一种,获取单个的字符 ,先创建文件 ,java.txt…...
idea 2024 build菜单不见了
Q如题 idea 2024 新版UI添加build和recompile菜单 A如图,右键顶部栏之后,点击Add to Main Toolbar菜单,在里面就能找到Build菜单,添加接口。 Recompile菜单的话在Customize Toolbar中搜索添加才行。...
深入理解计算机操作系统(持续更新中...)
文章目录 一、计算机系统漫游1.1信息就是位上下文 一、计算机系统漫游 1.1信息就是位上下文 源程序实际上就是一个由值0和1组成的位(又称为比特),八个位被组织成一组,称为字节。每个字节表示程序中的某些文本字符 大部分现代计…...
[dp8_子数组] 乘积为正数的最长子数组长度 | 等差数列划分 | 最长湍流子数组
目录 1.乘积为正数的最长子数组长度 2.等差数列划分 3.最长湍流子数组 写代码做到,只用维护好自己的一小步 1.乘积为正数的最长子数组长度 链接:1567. 乘积为正数的最长子数组长度 给你一个整数数组 nums ,请你求出乘积为正数的最长子数…...