换种方式开发软件

news2024/11/27 20:55:32

前 言

作为程序员,经常苦于项目交付,疲于应对各种需求,一路狂奔,很难有时间停下来思考与抽象,聊起来都是“累”;作为产品经理,最痛苦的莫过于梦醒之后无路可走,心里的苦只有自己知道;作为团队管理者,绞尽脑汁就想干两件事,降低成本,提高效率。现实与理想总是背道而驰,而我们却很希望做点什么去改变现状,摆脱困境,逆流而上,挖条护城河。总结过往实践,萃取优秀经验,抽象技术框架,构建全新方式。

这篇文章和大家聊聊,灵犀开发平台的实践探索。

01 背景

我们先简单说下灵犀开发平台的建设背景。

灵犀是一个面向“软件开发者”的开发平台,通过标准化能力+技术开放体系+可视化开发工具快速构建软件应用。

“软件开发者”是泛化的表述,可以是完全不懂编程的业务人员、有一定编程知识的从业人员、专业编程的开发人员,如业务咨询师、售前人员、产品经理、项目经理、测试人员、运维人员、开发人员等。随着云计算平台不断成熟完善,有了丰富和强大的软件开发工具,程序员能够更加专注于自己的业务逻辑编写,开发模式实现了升级。然而科技创新催生更多的智能化场景,促使用户个性化的需求增多,产品需求迭代的加速,传统软件开发模式在面对激增的需求已显得力不从心,暴露出很多短板。为了更好的解决这个问题,相信每个研发团队都在探索各个角度的解决方案,也一定积累了非常多经验和方法,沉淀出各式各样的通用框架和平台工具,但受限于开发模式的本质并没有变化,软件开发成本高、效率低、周期长等难题依然存在。总结起来,面临的主要挑战有:技术壁垒高、需求变化快、沟通环节多、缺乏快速开发工具、开发人员紧缺、联调成本大等。

云开发、Serverless、FaaS等技术无疑都是这几年在开发领域最火爆的话题,“低代码\无代码”也无疑是当下备受关注的技术。它们能带来的弹性伸缩、低成本、快速开发、图形化、可视化、无运维、云端一体化、在线协同等极致开发体验,深深地吸引了众多敢于实践者。未来当所有的技术走在一起,就一定会擦出激情的火花。听过不如见过,见过不如做过。结合我们自身研发现状、产品特性和对开发技术的研究分析,我们希望通过对技术和基础能力进行全面地抽象、提炼、沉淀和标准化,形成可极速构建完整软件应用的一站式生产体系,在此之上,通过全新方式可以更加灵活、犀利地开发应用,灵犀开发平台应运而生。

02 平台定义

聊完背景,再说一下我们对灵犀开发平台的定义。

灵犀平台主要面向的是软件开发者,平台的终极目的是帮助开发者通过一种新的体验能够就地取材,随时随地快速开发产品,实现产品开发的多、快、好、省、准:

  •  多 (提高产品占有率)
  •  快 (提高产品开发效率,缩短产品开发时间,加快上市效率)
  •  好 (提高产品质量,提高客户满意度,减少产品后期出现的问题)
  •  省 (更低的产品研发成本,减少产品重复开发浪费)
  •  准 (创新,满足细分市场客户需求,提高产品命中率)

赋予业务和客户面对新需求、新场景、新渠道构建新体系的极速响应力,提高新业务收益,以及组织级的研发能力。通过开箱即用的标准化能力高效赋能,通过通用版的快速移植复制能力服务业务新场景,通过技术开放共建体系灵活定制需求,再结合灵犀体系各能力可编排可拖拽可自由组合能力,极速响应各种业务、各种场景的开发需求。

灵犀开发平台搭建的根本愿景是利用数字技术手段对最佳实践进行萃取,将可用于复制与传承的经验、知识与技能提炼出来,形成平台化能力和标准化规范,实现技术和业务能力的最大化重用,采用人机协同方式,自动化、智能化快速构建软件系统。通过能力的高复用,再结合强大的技术开放共建体系,赋能开发者高效满足业务的个性化需求,从而加速新业务、新系统的搭建。以往新产品开发都是从零开始,开发前需要申请资源、环境配置、组件安装、脚手架下载等,开发过程中需要架构及功能设计、微服务开发、各端前端程序开发,同时还需要应对并发量、数据量、程序性能、扩展性、安全等非功能性需求,系统上线后需要兼顾系统的运行稳定、运维监控等问题,硬件和人力资源投入巨大,研发效率低,交付周期长。

借助灵犀开发平台高复用性的标准化能力及规范性要求,可以让业务开发者从大量重复性和相似性的工作中解脱出来,通过平台提供的技术扩展及开放能力,从而高效的开发业务个性化的需求。开发者从以往什么都要开发和维护,到只需要专注于个性化业务需求的定制开发,会大大减轻业务开发者的负担,极大提升业务新需求的响应速度。

那到底灵犀要做什么呢?回答这个问题,我们来说一下平台建设的四个核心内涵:

图片

第一,底座建设

统一运行底座,实现统一运营、集中管控和柔性执行的闭环管理,支撑软件应用快速研发和交付的生产体系。提供配置机制、动态引擎机制、开放可扩展编程机制、二次开发及升级机制,从底层机制上保障软件应用系统架构的稳定和持续扩展能力。

第二,能力建设

脱离业务又被业务所验证过的通用能力,听起来有些抽象,其实是软件开发所需的一切能力的总称,前后端能力的总和,包括软件生命周期管理、领域系统架构、领域模型及数据源管理、微服务开发、系统集成、SDK服务、组件管理、质量管控、前端模版、素材管理服务等一系列解决方案。

第三,工具建设

“工欲善其事,必先利其器”,基于底座和能力之上,需要建设配套的利器,它是载体也是工具链,提供或集成软件研发生产各环节上的工具,贯穿从设计、开发、测试、部署到运营整个研发流程,包括建模设计、开发协作、三码开发(高码、低码、零码)、精准测试、效能分析、智慧运维等工具。

第四,标准建设

专注于通用规范和开发规范的实现,构建统一的设计、开发规约,推动技术和业务能力标准化、规范化、最大化复用。通过标准体系整合、集成及连接业务和技术能力,搭建开放性和包容性技术体系,不断设计和开发出可共享、开箱即用的能力,释放技术价值。

总之,与传统技术平台相比,“灵犀”内涵更加丰富,涵盖范围更广,更能体现数字化开发平台特征。灵犀开发平台是一个基于云原生架构体系打造的开放式生态系统,是一个软件产品组合,提供一系列的技术能力和工具集,解决复杂软件研发和交付问题,让企业能够拥有更高效生产力,变革研发模式,提高研发效率。

03 关键技术

对于建设整个开发平台来说,我们需要几个关键的技术:

图片

基于模型的正向研发

模型是平台的核心,是实现的基础,如果没有模型做支撑,开发软件就变成空谈。模型的定义是对系统、实体、规则或流程的抽象或表达,这种抽象或表达的目的能让人们表达想法或概念时更清晰,无歧义,增强沟通能力。从软件工程大的类别来分,模型类型可分为需求模型、领域模型、系统模型、数据模型、分析模型。我们开发平台要求模型一定是正式模型,是可以用数学形式来表达的模型,而不是图文类非正式抽象描述模型,集成模型、逻辑模型、决策模型、几何图形模型是平台用的较多的几种正式模型。建立正式模型的设计、开发、使用规范;建立软件应用跨生命周期阶段模型和数据的追溯关系,能够基于这些模型传递数据,实现需求驱动的正向设计和研发;建立模型发生变更时的追溯、问题分析机制;建立以互相关联的模型为中心,让关联的人员能够基于模型进行协同开发。

全栈全码研发工具

工具是第一生产力,工具能够提高开发效率,同样能改变我们的生产方式。打造工具成为平台建设中的重中之重,其中全栈全码可视化研发工具最为关键。依据自身实践经验,我们将代码开发分为高代码、低代码和零代码三种类型。从分层架构分,具备全栈开发能力,前后端一体化,具备前端代码、函数、服务端代码在线开发;从角色划分,面向专业开发人员提供高代码工具,面向有一定编程知识的人员提供低代码工具,面向没有编程知识的人员提供零代码工具;从阶段划分,高代码和低代码工具偏向在软件开发态使用,能够完成从0到1的建设过程,零代码工具侧重运行态使用,完成定制需求开发和维护;从支撑复杂度划分,高代码工具具备纯代码编写能力能够支撑非常复杂的逻辑编写,低代码工具具备拖拽可视化能力能够支撑中等复杂场景开发,零代码工具采用图形化编程,所见即所得更适合简单场景。

全栈全码工具采用统一架构、统一语言、统一技术实现,各工具形似神不似,彼此之间并不是割裂孤立存在,它们穿插在整个软件应用功能开发过程,一个应用或一个场景可由一个工具或多个工具串接起来完成。好比盖一幢写字大楼,建筑设计师、建筑工负责把楼的主体结构盖起来,再由装修工完成大楼的高阶装修,最后使用大楼的客户根据自己喜好风格对各自空间进行场景化装饰。这样就完成一幢大楼从盖到用的过程,不同的人在不同的阶段使用不同的工具方法,对同一个物体进行构造设计、加工处理,最终可完整交付使用。软件开发过程也是类似,只是相对会更加复杂,为保障高效高质的交付,开发过程需要利器工具。

全自动测试与运维

为了满足自动化测试和运维要求,我们为平台自身以及平台开发出的软件都带上了“体检中心”,面对系统复杂的连接和运行,提供了统一的、高兼容性的管理控制平台,通过通用自动化数据收集器,能够自动、标准地采集到数据,实现更高层次的追踪、追溯和控制,与自动化测试工具或运维工具无缝集成,以更快速、精确的方式进行数据传递与整合。在自动化测试方面,传统自动化测试模式是需要自己写脚本,明确数据流和业务流之后,把多个测试脚本串起来。再用一个运行平台进行测试输出报告。平台内置构建引擎提供自动化测试用例脚本自动生成、自动变更,执行测试用例可完全自动化,包括测试结果的采集与实时查看。在自动化运维方面,打造了一套独有的业务链路追踪组件,同样采用数据收集器,可自动地将业务链路上所有请求调用记录抓取下来,实时感知用户操作行为、服务请求调用链路、数据变更轨迹,以度量来驱动运维,将日常的运维工作全部自动化。

全链路全景可观测性

在平台上构建完一个系统后,需要对其全生命周期的操作历史包括操作历史记录、构建和维护配置状态、系统运行数据、系统版本以及更多提供服务和维护功能的完整图像。为此,我们建立了一个可观测的数字化模型,可以用综合性的、多维度的数字表示。观测贯穿于整个软件系统生命周期,从需求分析、设计、开发、测试到部署上线运行,全栈都可以观测。譬如在开发度量领域,低代码实现编码过程的自动化,结合代码数据化开发理念,传统开发代码脚本方式转换成了可以任意存储且可追溯的数据,将开发的产物作为数据看待,这些开发的数据成为了最重要的观测数据来源,每个产物都具有可被观测的属性,产物之间也具有可被量化的关系。这些产物、属性、关系就组成了特定领域的观测模型。我们利用图计算功能,能够形成更完整更清晰的图像,可以对日常开发工作做一些智能的度量,看看时间都花费在哪里,可以评估我们的研发效率、健康状况、产能和质量等。

跨团队跨链协同

无论是业务中台能力中心的开发,还是上层应用的构建,通常都需要多角色、跨团队、跨地域共同配合来完成。需求通常可以分为共性需求和定制需求。同一个应用的支撑团队又分总部+省份或产品线+办事处。每个团队会包含多种角色人员,如项目经理、业务咨询师、架构设计师、前端开发、后端开发、运维人员等。更复杂的场景,同个应用会在多个地方开发、安装和部署。哪些需求由哪个团队哪个角色来开发?诸如此类的疑问会伴随整个应用迭代开发过程。我们的平台需要整体拉通,让所有角色人员协同,在统一平台上进行协同开发,辅以多租户基于策略访问控制方法、资源安全隔离、多级授权模型、数据加密配置模型、代码动态生成及执行技术、应用架构扩展点机制、分布式ID生成算法等技术手段,允许跨团队成员协同并行完成任务,从而提高团队成员的协作效率。

知识固化和资产沉淀

将业务目标抽象为计算机可以理解和识别的关系和结构,便于编程知识的积累与固化,不断设计和开发出来越来越多的页面、服务、组件、数据、模版等沉淀到资产共享体系,可以最大化复用,不断为开发者赋能,注入活力。通过能力聚合服务技术,实现多样化的能力接入、编排、加工和个性化逻辑定制,以集成外部业务服务和业务能力,不断为平台输送各种可复用的业务能力。平台提供资产集市,提供各种各样的资产服务,面向各生态提供互联互通的标准化能力。由于平台其低代码或零代码特性提供了快速开发的环境,可让更多的人便捷的在云端完成应用程序的搭建、部署、使用、更新和管理。

系统集成互通连接器

在微服务架构中,服务之间势必需要集成,而这种集成关系远比简单的API调用要复杂。在应对复杂的系统集成对接,一方面需要抽象出一套标准的接口,实现外部系统的统一对接,以减少对平台或应用的功能代码的改动;另一方面需要有完善的容错和重试机制,保障系统的连续性。为了保证平台的独立性、降低对外部系统的依赖、提高集成的效率和系统的容错性,我们设计了一个服务连接器,来统一实行和管控与第三方系统的对接。连接器一端连接标准接口,另一端根据所集成系统的对接方式进行适配对接。连接器就可以起到防腐的作用,同时也屏蔽了因对接系统的不同而带来的差异。连接器提供了低代码集成引擎。应对企业间、系统间复杂的对接业务,我们的平台为集成开发者提供了以集成流为核心的集成工具,可以在线进行协议转换适配、数据结构创建、逻辑编排、数据映射等,使得业务的对接工作以低代码、可视化的形式完成。同时可将开发的服务沉淀到资产库,以快速获取复用,最大程度降低二次开发成本。

04 能力图谱

灵犀开发平台整个体系覆盖在线建模设计平台、全栈全码可视化开发工具、全自动化测试与运维工具、应用全生命周期管理平台、多团队多成员协作管理、跨系统跨应用集成管理、组件资产管理、平台扩展及业务二次开发管理八大核心功能板块。

图片

平台功能

模型设计平台

提供数据模型、业务模型、集成模型的在线设计工具,基于模型可以快速定义业务对象、业务场景、业务流程、业务规则、业务事件等。

三码融合开发工具

提供云上纯代码、低代码和零代码三码融合开发模式,具备可视化、图形化、组件化的编排工具,以“拖、拉、拽”的方式来快速构建应用。

组件资产管理平台

能够将平台上不断设计和开发出来的页面、服务、组件、数据、模版等产物沉淀到资产共享平台,并以地图形式呈现给开发人员,实现能力资产的最大化复用,不断为开发者赋能。

自动化测试与运维

通过通用自动化数据收集器,能够自动、标准地采集到数据,实现更高层次的追踪、追溯和控制,与自动化测试工具或运维工具无缝集成,以更快速、精确的方式进行数据传递与整合。

运营管理服务

提供多租户、多环境、多版本运营管理能力,开发人员在平台可以拥有独立的环境资源,数据相互隔离,保障应用开发的稳定。

多人协作开发

基于多级授权控制模型,允许在租户下创建子账号,支持同一租户下多成员多角色在线协作开发。

全链路调测

提供调试跟踪工具,能够实时感知用户操作行为、服务请求调用链路、数据变更轨迹。

系统集成与连接

支持门户、API、数据等多种集成方式,提供集成工具,可以在线进行协议转换适配、数据结构创建、逻辑编排、数据映射等,与业务系统的对接工作可以采用低代码、可视化的形式完成。

05 实践案例

灵犀平台已经在浩鲸内部的多个项目中使用,下图是在线投诉诊断应用的案例,应用业务场景简单来说,在客服管理领域,借助投诉处理经验沉淀,实现了一键查询、一键诊断即可输出投诉处理报告。节省了客户投诉处理过程中分析定位问题的时间,极大提升了处理效率。从上线以来,平均每周处理50多笔投诉单,每个单原先平均耗时20分钟,上线后平均耗时10秒,效率提升120倍,从业务角度收效明显。

图片

案例业务场景

整个过程我们投入2人大概用了半个月的时间从需求分析到上线,共梳理了6个核心场景,2个业务流程,1个界面31个子页面,21个业务服务。全过程都是通过平台提供的工具完成开发,包括应用界面、逻辑、流程。从效率角度看,直观效果就是极大地缩短了开发周期,提升开发效率,实现了可复用的组件,整个运维工具也得到了复用,减少了需要重复劳动的研发场景。

06 经验分享

随着平台的不断迭代,在研发过程中会遇到一些非常有挑战性的问题,关于平台建设方面,我们总结几个在设计上需要关注的点做参考。

第一,关注操作体验

平台因覆盖面较大,涉及技术较多,要降低使用门槛,设计上需要考虑极简。平台是否好用、是否便捷、是否操作简单,即易用性是非常重要的设计原则之一。除了兼顾可视化界面,友好、直观、形象地展现,还需要通俗易懂的导航步骤,操作不卡顿,站在不同角色使用者的角度考虑体验要求。

第二,关注架构设计

架构是基础,越基础的东西越影响全局,为了避免牵一发而动全身,平台搭建起初要尽量轻量级,快速试错,快速开发,不过多关注所谓的高并发、高可用、高性能等,这个阶段系统稳定性最重要,出现优化重构的时候就能发挥出更高的效率。此外,相关技术最好是开源主流技术和业界同步,这样方便开发者上手。

第三,关注组件扩展

在实际的开发过程中,平台自带组件无法满足所有的业务场景,需要允许用户自定义业务组件。组件扩展会涉及框架改动,而框架的改动不是开发人员轻易就能实现,需要很长时间。因此,平台开发前需要定义好组件设计规范,提前了解清楚开发限制等,少走弯路。

第四,关注系统兼容

作为平台的使用者,在使用之前都会提出一个类似问题,低代码平台或产生的应用能否与原系统融合,程序是否可以相互访问,例如开发语言和界面样式的一致,新旧界面和服务能够集成。所以需要一套完备的二次开发对接体系,可以兼容各种技术各种不同的系统。

第五,关注服务运维

低代码优点很多,但缺点也非常明显。通过解释执行和生成源码方式开发,无论是静态代码生成,不允许修改,还是动态反射技术实现,支持可逆计算,都不能回避一个问题,程序如何调试,如何维护?因此需要对平台产生的应用中每个页面,每个服务,每条数据的执行情况需要有监控和报警体系,在出现了问题后确保能够被主动发现。

第六,关注安装升级

平台在私有云部署过程中,因不同云平台对接会有不同的对接要求,所以平台安装部署脚本的标准化,一键化尤为关键,安装完成后还需要提供向导,引导开发者做一些初始化设置。平台上线推广后,会不断构建很多应用出来,那么平台的升级过程就必须考虑向下兼容,程序数据不割接等疑难问题。

07 未来规划

灵犀开发平台整体上还处于刚刚起步阶段,也是我们开发实践的初步尝试,目前已经完成了几个版本迭代,正式投入实际生产使用。从“效率”、“成本”、“体验” 三要素来规划建设方向,围绕“提高效率、降低成本、缩短周期、提升质量”目标来开展实践。接下来会在复用最大化、高度自动化、体验智能化、协同在线化等技术方面继续探索演进。

以上仅展示产品阶段性成果,设计思考、设计理念等,最难的阶段不是现在,升级打怪之路也没有结束,以价值为驱动,我们还需要花更多时间去认真地深刻地研究它、理解它、感知它。期待再会!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1291352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何统计12.5米高程覆盖率?

无论是卫星影像还是高程DEM数据,覆盖率都是大家非常关心的一个重要参数。 我们曾基于WGS84坐标进行过简单的覆盖率计算,而且面积还包括了海洋区域。 因此,最后得出了一个非常不靠谱,看起来也很不漂亮的数据:12%。 为…

python3安装lifelines

目录 一、环境 二、安装lifelines 出现问题 三、测试导入 一、环境: jupyter notebook中新建ipynb文件 二、安装lifelines pip install --upgrade --no-deps githttps://github.com/CamDavidsonPilon/lifelines.git出现问题: 缺少模块autograd、f…

视频相似度对比 python opencv sift flann

提取SIFT特征的代码,返回关键点kp及特征描述符des def SIFT(frame):# 创建SIFT特征提取器sift cv2.xfeatures2d.SIFT_create()# 提取SIFT特征kp, des sift.detectAndCompute(frame, None)return kp, des 这行代码是使用SIFT(Scale-Invariant Feature…

【LeetCode:1466. 重新规划路线 | DFS + 图 + 树】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

SE考研真题总结(一)

本帖开始分享考研真题中设计【软件工程】的部分,预计会出5期左右,敬请期待~ 一.单选题 1.程序编写不是软件质量保障过程~ 静态代码扫描是今年来多数被人提及的软件应用安全解决方案之一,指程序员在编写好代码后无需进行编译,直接…

校园外卖小程序源码系统 附带完整的搭建教程

随着大学生消费水平的提高,对于外卖服务的需求也在不断增加。很多学生都面临着课业繁重、时间紧张等问题,无法亲自到餐厅就餐。因此,开发一款适合校园外卖市场的应用软件,将为广大学生提供极大的便利。 以下是部分代码示例&#…

WSL2+tensorflow-gpu 2.3.0 C++ 源码编译(Linux)

一. gcc版本 wsl2已有gcc 版本为9.4.0,但tensorflow2.3.0需对应gcc7.3.1 tensorflow与cuda cudnn python bazel gcc版本对应关系 故需下载一个低版本的gcc,但同时还想保留较高版本的gcc,那么参考文章:深度学习环境搭建(二): Ubuntu不同版本gcc,CUDA,cuDNN共存,切换解…

网络安全(一)--网络环境构成,系统的安全

2. 网络攻防环境 目标 了解攻防环境构成了解入侵检测系统(平台)的部署位置 2.1. 环境构成 2.1.1. 环境框图 一个基本的网络攻防实验环境包括:靶机、攻击机、入侵检测分析系统、网络连接四部分组成。 一个基础的网络攻防实验环境需要如下…

SpringSecurity6 | 默认用户生成(下)

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Java从入门到精通 ✨特色专栏&#xf…

visionOS空间计算实战开发教程Day 9 打造“任意门”

我们在​​Day 8​​中演示了attachment的实现,本节的知识点是portal。portal相当于哆啦A梦里的任意门,它让我们可以打开另一个世界,这个世界独立于当前的世界,具有单独的光照系统并且由portal几何图形进行遮罩。 要创建portal&a…

利器|一款集成的BurpSuite漏洞探测插件

本着市面上各大漏洞探测插件的功能比较单一,因此与TsojanSecTeam成员决定在已有框架的基础上修改并增加常用的漏洞探测POC,它会以最少的数据包请求来准确检测各漏洞存在与否,你只需要这一个足矣。 1、加载插件 2、功能介绍 (1&a…

pure::variants—产品平台化及变体管理工具

产品概述 pure::variants是德国pure-systems公司的产品,其目的是帮助企业实现对产品线的变体管理,提高企业项目资产的复用效率。pure::variants的核心理念是运用产品线管理方法对项目资产(项目计划、需求、模型、功能模块、代码、测试用例&am…

【C语言】用户空间使用非缓存内存

在用户空间使用非缓存内存通常不是标准做法,因为非缓存内存的操作与硬件平台紧密相关,并且通常被保留给内核模块或设备驱动程序使用。 一、方法 用户空间程序一般不直接处理非缓存内存问题,因为它们依赖于操作系统来管理内存缓存一致性。尽…

外包干了3个月,技术倒退2年。。。

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

《C++ Primer》第12章 动态内存(一)

参考资料: 《C Primer》第5版《C Primer 习题集》第5版 我们的程序目前只用过静态内存和栈内存。静态内存用来保存局部 static 对象、类 static 成员、定义在任何函数之外的变量;栈内存用来保存定义在函数内的非 static 对象。分配在静态内存和栈内存的…

GPT 中文提示词技巧:参照 OpenAI 官方教程

前言 搜了半天什么 prompt engineering 的课,最后会发现 gpt 官方其实是有 prompt 教程的。因此本文主要是学习这篇教程。 概述 - OpenAI API 部分案例是参考:根据吴恩达老师教程总结出中文版prompt教程_哔哩哔哩_bilibili up主的内容。 一、尽可能清…

批量AI创作文案的工具,批量AI创作文章的软件

人工智能(AI)的应用不断拓展,其中批量AI创作逐渐成为许多文本创作者和企业编辑的热门选择。面对海量的文章需求,批量AI创作工具能够高效、快速地生成大量文本内容,从而减轻创作者的工作负担。本文将专心分享批量AI创作…

一对一互相聊天

服务端 package 一对一用户;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector;…

day14_java中的IO流(详解)

IO流 学习IO,我们必须要知道硬盘上的文件(文件夹)在java中的表现形式 一、File文件 Java中 提供了一个类 File 供我们使用; File : 文件和目录(文件夹)路径名的抽象表示 1、构造方法: File(File parent, String …

【环境搭建】ubuntu22安装ros2

基于某种特殊需求,从Ubuntu16到22目前都尝试过安装ros、ros2 参考1:http://t.csdnimg.cn/DzvSe 参考2:http://t.csdnimg.cn/sOzr1 1.设置locale sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 s…