当前位置: 首页 > news >正文

迁移到云原生:如何使用微服务迁移应用程序

企业遇到大规模部署和监督生产中的应用程序的任务。幸运的是,我们可以使用大量技术和工具。然而,从传统的,整体的结构转变为云态一个人提出了自己的障碍。在这里,您会发现将应用程序从整体设置转移到基于微服务的体系结构时要进行的基本初始步骤列表。

无缝过渡的逻辑步骤

Compared to traditional big applications, microservices are like small independent units that handle specific tasks and collaborate to make an application work.使用这些分布式组件提供了许多好处,但它也带来了自己的一系列挑战。

维护软件质量在从传统系统转移过程中可能很难。通常,它使团队无法开始过渡。但通过一些计划和准备,这是可以做到的。该过程可以分为几个步骤。让我们一起穿过它们。

第 1 步:定义边界

初始阶段涉及描绘应用程序的边界和功能,这是揭示整体结构内耦合程度的关键一步。耦合是主要的挑战,通常被轻蔑地称为“意大利面条代码”。在单体应用程序的背景下。该术语源于代码库随着大小和年龄的增加而积累越来越多的耦合水平的趋势。

事实证明,在过渡期间解耦紧密互连的元素具有挑战性,虽然代码库的年龄和大小是耦合问题的潜在指标,但它们并不是确定的。单一应用程序本质上并不是紧密耦合的;这取决于编码实践。将耦合视为对手,我们强调完善的编码实践,在整体创建过程中平衡内聚性和耦合,有助于更平滑的过渡。

有效的转换取决于单体内部正确的边界定义,其中微服务充当具有特定功能的单个单元。在整体应用程序中应用类似的边界原则有助于实现更易于管理的过渡。

第 2 步:识别耦合

虽然第一步侧重于描绘系统的功能,但第二步建立边界(有界上下文),包含这些功能的集合。例如,在销售点应用程序中,购物车可能由一侧的库存边界组件和另一侧的身份限制元素组成。购物车对象充当巩固和集成这些元素的手段。

第 3 步:转向 RPC

在第三步中,我们的重点是识别和记录有界上下文之间的互连,辨别哪些引用了其他上下文,并确定需要跨上下文进行函数调用的功能。这种耦合体现在两个主要类别:函数/API 和数据库模式。

对于函数/API,从网络中涉及远程过程调用的过渡涉及远程过程调用( rpc )通常通过HTTP,GRPC等执行。同步RPC作为中间步骤,但它不是分布式系统的可持续解决方案。最终目标是用异步消息系统替换同步的RPC调用。

在此过程中,每个边界都保持其数据自治。微服务不鼓励直接使用共享数据库,因为它引入了不需要的耦合。解耦后,可以避免从一个限界上下文的模式查询另一个限界上下文的模式。

总结这些步骤,我们通过将所有进程内通信转换为网络上的 RPC 调用,从本质上将我们的架构转变为分布式整体架构,这是实现云原生应用程序的重大一步。

第 4 步:定义数据所有权

此阶段的目标是消除数据与保留应用程序状态的状态存储机制的刚性耦合。这种转变允许过渡到更加无状态的模型,其中微服务之间传输的数据仅包含微服务边界内任务的必要信息。例如,购物车对象可以保留购买者的身份和产品的库存ID,直到在结帐时使用它们,而不是频繁地访问持久存储区域以检索和更新购物车中的数据。

第 5 步:实现异步消息传递

最后,第五步是,需要付出额外的努力来实现服务的自治。隔离有界上下文后,该过程涉及将相同的原则应用于其他边界和功能,直到整个转换完成。命令和事件被分派并广播到消息代理,从而消除了对 RPC 的需要。这简化了与维护服务之间的远程过程调用所需的访问权限相关的复杂性,即使它们在不同的主机上运行。用基于角色的访问控制证书取代这种交互标志着实现服务自主性的重大进步。

为云原生开发选择正确的编程语言

现在,让我们探索一些适合现代云原生开发的编程语言。

根据我的经验,我将从一些经过时间考验的可靠选项开始,然后深入研究随着教育环境中越来越多的教授而日益受到重视的新语言。

让我们从随着互联网的发展而演变的语言开始:

Java

被认为是一种多才多艺的通用编程语言,Java 巩固了其作为云计算首选之一的地位,受到数以百万计的开发人员,并在全球超过 150 亿个终端上执行。Java 提供无与伦比的多功能性,是少数能够使用统一代码库为网站、桌面、移动设备和视频游戏创建应用程序的语言之一。

Java 的主要优点包括:

  1. 面向对象:采用面向对象范例。

  2. 无依赖使用:可以在没有依赖关系的情况下使用。

  3. 平台无关性:真正平台无关,兼容各种操作系统。

  4. 易于学习:以其相对简单的学习曲线而闻名。

  5. 通用代码库:用 Java 开发的云计算程序可以在不同操作系统(例如 Windows、iOS、Blackberry 和 Linux)上无缝运行,从而保持解释一致的代码库。

Java 拥有内置的强大安全功能,使其成为那些旨在实现无服务器架构的人的首选。Java 利用不同框架的提前 (AOT) 编译,有效地解决了大分布式大小和长冷启动时间的问题。诸如Amazon Web Services(AWS),Microsoft Azure和Google Cloud Platform(GCP)之类的主要云提供商在其SDK中为Java提供了强有力的支持,从而确认其在云开发方面的据点。

Python

Python 成为当前云领域最重要的语言之一。With a learner-friendly approach, Python caters to novices, making programming accessible to nearly everyone. Python 拥有一系列第三方模块、广泛的支持库以及强大的开源和社区开发选项等出色功能,是一种高级、解释性和高度交互的面向对象脚本语言。其定义明确的分层缩进格式有助于轻松阅读,比标点符号更频繁地使用英语语法和关键字,从而简化了学习过程。

Python 融合了速度、生产力、强大的社区支持和开源开发等高级属性,以及丰富的支持库和第三方模块。Python 应用广泛,适合创建商业应用程序、游戏、操作系统、计算和科学应用程序以及图形设计和图像处理应用程序。

Python 的主要特性和优点包括:

  1. Web 框架和应用程序

  2. 科学和计算应用

  3. 基于 GUI 的桌面应用程序

  4. 语言发展

Python 在 AWS 云中得到广泛使用,并在 AWS Lambda 中享有本机支持,这使其成为在 Amazon Web Services 上开发无服务器应用程序的绝佳选择。

.NET

虽然出于多种原因(主要是由于它偏向 Windows 操作系统并且受 Microsoft 管辖)不是我的首选语言,但 ASP.NET 仍然在 Web 编程中占据着重要地位。

ASP.NET 主要用于开发 Web 应用程序和功能丰富的网站,由于其能够提供动态网页和跨各种浏览器兼容的尖端解决方案,因此在云计算领域脱颖而出。

新手开发人员将会欣赏 ASP.NET 框架的用户友好性,它配备了许多内置功能,包括:

  1. 最大限度地减少大型应用程序开发中的代码使用。

  2. 有效创建动态网页。

  3. 语言独立性和易用性。

  4. 逻辑和内容分离以简化应用程序开发。

  5. 利用内置 Windows 身份验证增强应用程序安全性。

PHP

PHP 是一种在程序员中广泛使用的语言,主要用于网站自动化。PHP 以其易于学习和操作而闻名,是创建具有动态元素的应用程序的首选。作为一种面向对象的语言,PHP 能够开发复杂且大规模的 Web 应用程序。

PHP 在 UNIX 和 Windows 服务器上运行,拥有强大的输出缓冲区功能,这有助于其流行。其卓越的速度、成本效益、可靠性和安全性使其成为探索云原生应用程序的绝佳选择。

此外,PHP 与各种流行的数据库管理系统无缝集成,有助于直接连接到 MySQL 来执行数据库备份等任务。其可靠性、安全性、速度和经济性使 PHP 成为满足云计算独特开发需求的可行语言。

Node.js

Node.js 利用 JavaScript V8 引擎,可在包括 Chrome 在内的各种浏览器中无缝运行,并作为独立工具运行。它擅长轻松处理服务器请求,跨编码语言、API 和外部库扩展 JavaScript 的功能。Node.js 在 Web 应用程序开发中发挥着至关重要的作用,体现了“JavaScript 无处不在”的理念。服务器端脚本和客户端编程的范例。

Node.js 以其用户友好的操作和端到端应用程序开发的有效性而闻名,它具有非阻塞、事件化、异步通信模式,允许高效处理大量连接。Node.js 在 Google JS 引擎上运行,以其卓越的速度而脱颖而出,使其成为现代开发人员的最爱。

Node.js 的主要优势包括跨平台兼容性、使用单一编码语言 (JavaScript) 的便利性、JavaScript V8 引擎的强大功能、对快速部署和微服务开发的支持、高可扩展性、令人印象深刻的数据处理能力、活跃的开源社区、通过节点包管理器 (NPM) 提供的附加功能、高级托管功能和快速数据流。

现在,让我们探索一些为满足云原生编程不断变化的需求而出现的新产品。

现在,让我们探索云原生编程领域中出现的一些较新的语言。

Golang

  • 迅速成为云原生操作的首选语言。

  • 在创建 Docker、Kubernetes 和其他云相关技术方面表现突出。

  • 因其简单、速度、效率和可扩展性而广受欢迎。

  • 标准库支持主要的云提供商。

Ballerina

  • 云的开源语言,专为网络服务而设计。

  • 专注于使编码网络结构成为语言固有的。

  • 对分布式交易,断路器模式等的一流支持。

  • 它直接部署到 Docker 和 Kubernetes 上,并与常见 IDE 集成。

Pulumi

  • 基础设施即代码语言于 2018 年推出,支持 Kubernetes。

  • 利用现有的编程语言,例如 TypeScript、JavaScript、Python、Go 和 .NET。

  • 提供可下载的 CLI、运行时、库和托管服务,以实现高效的基础设施管理。

  • 旨在满足云应用程序的构建、部署和管理需求。

选择正确的语言取决于您的项目要求和团队的专业知识。无论您选择成熟的产品还是最新的产品,请确保它们符合您在云原生环境中的微服务开发目标。

总之,云原生开发的编程语言格局提供了多种选择。Java、Python、.NET、PHP 和 Node.js 等既定选择提供了多功能性。Golang 因其简单性和可扩展性而脱颖而出,而 Ballerina 则无缝集成网络结构。Pulumi 通过语言多功能性满足基础设施即代码需求。无论是选择经过验证的语言还是采用更新的语言,请根据项目要求和团队专业知识来调整您的选择,以实现高效且可扩展的云应用程序。


作者:Kapil Rawa

更多技术干货请关注公号【云原生数据库

squids.cn,云数据库RDS,迁移工具DBMotion,云备份DBTwin等数据库生态工具。

irds.cn,多数据库管理平台(私有云)。

相关文章:

迁移到云原生:如何使用微服务迁移应用程序

企业遇到大规模部署和监督生产中的应用程序的任务。幸运的是,我们可以使用大量技术和工具。然而,从传统的,整体的结构转变为云态一个人提出了自己的障碍。在这里,您会发现将应用程序从整体设置转移到基于微服务的体系结构时要进行…...

kafka 的零拷贝原理

文章目录 kafka 的零拷贝原理 今天来跟大家聊聊kafka的零拷贝原理是什么? kafka 的零拷贝原理 零拷贝是一种减少数据拷贝的机制,能够有效提升数据的效率;   在实际应用中,如果我们需要把磁盘中的某个文件内容发送到远程服务器上…...

华为云Stack 8.X流量模型分析(五)

六、EIP流量模型分析 ​ 弹性公网IP(Elastic IP,简称EIP)提供独立的公网IP资源,包括公网IP地址与公网出口带宽服务。如果资源只配置了私网IP,则无法直接访问Internet,为资源配置弹性公网IP后,可…...

学习动态规划解决不同路径、最小路径和、打家劫舍、打家劫舍iii

学习动态规划|不同路径、最小路径和、打家劫舍、打家劫舍iii 62 不同路径 动态规划,dp[i][j]表示从左上角到(i,j)的路径数量dp[i][j] dp[i-1][j] dp[i][j-1] import java.util.Arrays;/*** 路径数量* 动态规划,dp[i][j]表示从左上角到(i,j)的路径数量…...

nodejs微信小程序+python+PHP特困救助供养信息管理系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…...

Vue(二):计算属性与 watch 监听器

03. Vue 指令拓展 3.1 指令修饰符 可以通过 . 来指明一些指令的后缀,不同的后缀中封装了不同的操作,可以帮助我们简化代码,比如之前使用过的监听 enter 键的弹起,我们需要操作事件对象,来检测用户使用了哪个键&#…...

25、WEB攻防——通用漏洞SQL读写注入MYSQLMSSQLPostgreSQL

文章目录 Mysql-root高权限读写注入PostgreSQL——dba高权限读写注入Mssql-sa高权限读写注入 Access无高权限注入点——只能猜解,而且是暴力猜解; MYSQL,PostgreSQL,MSSQL(SQL server)高权限注入点——可升级读写(文件…...

【第5期】前端Vue使用Proxy+Vuex(store、mutations、actions)跨域调通本地后端接口

本期简介 本期要点 本地开发前后端如何跨域调用全局请求、响应处理拦截器处理封装HTTP请求模块编写API请求映射到后端API数据的状态管理 一、 本地开发前后端如何跨域调用 众所周知,只要前端和后端的域名或端口不一样,就存在跨域访问,例如&…...

在Visual Studio(VS)编译器中,Release和Debug区别

一、 优化级别 1、Debug(调试) 在Debug模式下,编译器不会对代码进行优化,而是专注于生成易于调试的代码。这使得开发者可以在调试过程中更直观地跟踪变量的值和程序的执行流程。 2、Release(发布) 在Relea…...

子网划分问题(实战超详解)_主机分配地址

文章目录: 子网划分的核心思想 第一步,考虑借几位作为子网号 第二步,确定子网的网络地址 第三步,明确网络地址,广播地址,可用IP地址范围 一些可能出现的疑问 实战 题目一 子网划分的核心思想 网络号不变,借用主机号来产生新的网络 划分前的网络:网络号主机号 划分后的网络:原网…...

【QT】单例模式,Q_GLOBAL_STATIC 宏的使用和使用静态成员函数,eg:{简单的日志记录器}

简单的日志记录器为例 。 创建一个Logger类,该类负责记录应用程序的日志消息 使用 Q_GLOBAL_STATIC 宏 解析:Q_GLOBAL_STATIC 是一个 Qt 宏,用于创建全局静态实例。它确保在需要时只创建一次实例,而不管该实例是在哪个线程中创建…...

利用小红书笔记详情API:构建高效的内容创作与运营体系

随着社交媒体的兴起,小红书作为国内知名的内容分享平台,吸引了大量用户和内容创作者。为了更好地获取小红书上的优质内容,许多企业和开发者选择使用小红书笔记详情API。本文将探讨如何利用该API构建高效的内容创作与运营体系。 一、小红书笔记…...

【K8S 二进制部署】部署单Master Kurbernetes集群

目录 一、基本架构和系统初始化 1、集群架构: 2、操作系统初始化配置: 2.1、关闭防火墙和安全机制: 2.2、关闭swap 2.3、根据规划设置主机名 2.4、三台主机全部互相映射 2.5、调整内核参数 3、时间同步(所有节点时间必须同…...

vue中常见的指令

简单介绍一下常见的vue中用到的指令 v-on 指定当前的事件&#xff0c;语法糖为&#xff0c;如例子所示&#xff0c;指定按钮的事件为addCounter&#xff0c;点击会使变量counter 1 <!DOCTYPE html> <html><head><meta charset"utf-8" />…...

单片机原理及应用:开关控制LED多种点亮模式

从这篇文章开始&#xff0c;我们不再只研究单一的外设工作&#xff0c;而是将LED、数码管、开关、按键搭配在一起研究&#xff0c;这篇文章主要介绍LED和开关能擦出怎样的火花&#xff0c;同时也介绍一些函数封装的知识。 由于开关有闭合与打开两种状态&#xff0c;LED有左移流…...

你真的了解UVM sequence的运行机制吗

1. 前言 UVM在sequence里提供了很多的callback方法给用户&#xff0c;从而更灵活地完成各种复杂场景的交互和控制执行顺序。我们可能在很多情况下只使用了body()方法&#xff0c;本文将介绍sequence里常见的callback方法&#xff0c;以及在不同场景下&#xff0c;它们的是否被…...

Bug升级记

2023.12.28 &#xff08;1) 小程序session_key泄露隐患 核心&#xff1a;session_key这个字段及对应值不应该传到小程序客户端等服务器外的环境 错误操作&#xff1a;直接在小程序调用https://api.weixin.qq.com/sns/jscode2session并将session_key作为参数进行明文传输 正确操…...

爬虫详细教程第1天

爬虫详细教程第一天 1.爬虫概述1.1什么是爬虫&#xff1f;1.2爬虫工具——Python1.3爬虫合法吗&#xff1f;1.4爬虫的矛与盾1.4.1反爬机制1.4.2反爬策略1.4.3robots.txt协议 2.爬虫使用的软件2.1使用的开发工具: 3.第一个爬虫4.web请求4.1讲解一下web请求的全部过程4.2页面渲染…...

[Linux] MySQL数据库的备份与恢复

一、数据库备份的分类和备份策略 1.1 数据库备份的分类 1&#xff09;物理备份 物理备份&#xff1a;对数据库操作系统的物理文件&#xff08;如数据文件、日志文件等&#xff09;的备份。 物理备份方法&#xff1a; 冷备份(脱机备份) &#xff1a;是在关闭数据库的时候进…...

Django、Python版本升级问题大汇总

Django3.0升级到4.1,Python3.8升级到3.11.6问题大汇总 报错1:ERROR: Could not build wheels for cffi, uWSGI, which is required to install pyproject.toml-based projects ERROR: Could not build wheels for cffi, uWSGI, which is required to install pyproject.tom…...

2023-12-30 AIGC-LangChain介绍

摘要: 2023-12-30 AIGC-LangChain介绍 LangChain介绍 1. https://youtu.be/Ix9WIZpArm0?t353 2. https://www.freecodecamp.org/news/langchain-how-to-create-custom-knowledge-chatbots/ 3. https://www.pinecone.io/learn/langchain-conversational-memory/ 4. https://de…...

pytorch01:概念、张量操作、线性回归与逻辑回归

目录 一、pytorch介绍1.1pytorch简介1.2发展历史1.3pytorch优点 二、张量简介与创建2.1什么是张量&#xff1f;2.2Tensor与Variable2.3张量的创建2.3.1 直接创建torch.tensor()2.3.2 从numpy创建tensor 2.4根据数值创建2.4.1 torch.zeros()2.4.2 torch.zeros_like()2.4.3 torch…...

storyBook play学习

场景 在官方给出的案例中&#xff0c; Page.stories.js import { within, userEvent } from storybook/testing-library import MyPage from ./Page.vueexport default {title: Example/Page,component: MyPage,parameters: {// More on how to position stories at: https:/…...

Android Matrix画布Canvas旋转Rotate,Kotlin

Android Matrix画布Canvas旋转Rotate&#xff0c;Kotlin private fun f1() {val originBmp BitmapFactory.decodeResource(resources, R.mipmap.pic).copy(Bitmap.Config.ARGB_8888, true)val newBmp Bitmap.createBitmap(originBmp.width, originBmp.height, Bitmap.Config.…...

私有部署ELK,搭建自己的日志中心(三)-- Logstash的安装与使用

一、部署ELK 上文把采集端filebeat如何使用介绍完&#xff0c;现在随着数据的链路&#xff0c;继续~~ 同样&#xff0c;使用docker-compose部署&#xff1a; version: "3" services:elasticsearch:container_name: elasticsearchimage: elastic/elasticsearch:7.9…...

2023就这样过去了,2024会更好吗?

2023年&#xff0c;不是很好 2023年是疫情后的第一年&#xff0c;疫情过去了&#xff0c;大家都有大多的希望&#xff0c;希望经济可以恢复&#xff0c;希望信心可以恢复&#xff0c;但是整体都是远远低于预期的。年初的一片热潮&#xff0c;年中的一片哀嚎&#xff0c;年底基…...

SpringBoot加载配置的6种方式

从配置文件中获取属性应该是SpringBoot开发中最为常用的功能之一&#xff0c;简单回顾一下这六种的使用方式&#xff1a; 说明Environment对象Environment是springboot核心的环境配置接口&#xff0c;它提供了简单的方法来访问应用程序属性&#xff0c;包括系统属性、操作系统…...

大语言模型(LLM)训练平台与工具

LLM 是利用深度学习和大数据训练的人工智能系统&#xff0c;专门 设计来理解、生成和回应自然语言。 大模型训练平台和工具提供了强大且灵活的基础设施&#xff0c;使得开发和训练复杂的语言模型变得可行且高效。 平台和工具提供了先进的算法、预训练模型和优化技术&#xff0c…...

docker配置buildx插件

一、介绍 Docker buildx是docker的一个插件 支持Moby BuildKit的所有特性 可以跨CPU架构编译镜像 可以在多节点编译镜像 二、前提 使用 buildx 作为 docker CLI 插件需要使用 Docker 19.03 或更新版本。 三、配置步骤 1&#xff09;客户端&#xff1a;在客户端的配置文…...

mysql 空间函数

ST_GeomFromText&#xff1a;将文本表示的几何对象转换为几何对象。 SELECT ST_GeomFromText(POINT(1 1)); ST_AsText&#xff1a;将几何对象转换为文本表示。 SELECT ST_AsText(ST_GeomFromText(POINT(1 1))); ST_Contains&#xff1a;判断一个几何对象是否包含另一个几何对象…...

vscode调试 反汇编c/c++ 查看汇编代码gdb/lldb

先看下流程&#xff01; 先看下流程&#xff01; 有问题请留言&#xff01; 文章目录 必备F5开启调试左侧侧边栏->确保打开回调栈右键函数栈->查看反汇编 方法二&#xff1a;手动输入命令查看 必备 使用c/c 插件&#xff0c;这应该是必备的。 F5开启调试 左侧侧边栏-&…...

总结项目中oauth2模块的配置流程及实际业务oauth2认证记录(Spring Security)

文章目录 简单示例添加oauth2的依赖配置认证服务器配置资源服务器配置安全使用http或者curl命令测试 实际业务中工具类&#xff08;记录&#xff09;&#xff1a;认证服务器资源服务器、配置安全用户验证登录控制层配置文件application.yml 项目中用过的spring security&#x…...

传感器原理与应用复习

测量与误差 传感器原理与应用复习—测量概述与测量误差 传感器特性与应变式传感器 传感器原理与应用复习–传感器基本特性与应变式传感器 电感式传感器 传感器原理与应用复习–电感式传感器 电容式与电压式传感器 传感器原理与应用复习–电容式与压电式传感器 电磁式与…...

蓝桥杯python比赛历届真题99道经典练习题 (8-12)

【程序8】 题目:输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 2.程序源代码: #include "stdio.h" main() {int i,j,result;printf("\n");for (i=1;i<10;i++){ for(j=1;j<10;j++){result=i*j;printf("%d*%d=%-3…...

八个理由:从java8升级到Java17

目录 前言 1. 局部变量类型推断 2.switch表达式 3.文本块 4.Records 5.模式匹配instanceof 6. 密封类 7. HttpClient 8.性能和内存管理能力提高 前言 从Java 8 到 Java 20&#xff0c;Java 已经走过了漫长的道路&#xff0c;自 Java 8 以来&#xff0c;Java 生态系统…...

使用poi将pptx文件转为图片详解

目录 项目需求 后端接口实现 1、引入poi依赖 2、代码编写 1、controller 2、service层 测试出现的bug 小结 项目需求 前端需要上传pptx文件&#xff0c;后端保存为图片&#xff0c;并将图片地址保存数据库&#xff0c;最后大屏展示时显示之前上传的pptx的图片。需求看上…...

【微服务】springboot整合skywalking使用详解

目录 一、前言 二、SkyWalking介绍 2.1 SkyWalking是什么 2.2 SkyWalking核心功能 2.3 SkyWalking整体架构 2.4 SkyWalking主要工作流程 三、为什么选择SkyWalking 3.1 业务背景 3.2 常见监控工具对比 3.3 为什么选择SkyWalking 3.3.1 代码侵入性极低 3.3.2 功能丰…...

electron——查看electron的版本(代码片段)

electron——查看electron的版本(代码片段)1.使用命令行&#xff1a; npm ls electron 操作如下&#xff1a; 2.在软件内使用代码&#xff0c;如下&#xff1a; console.log(process) console.log(process.versions.electron) process 里包含很多信息&#xff1a; process详…...

【Electron】富文本编辑器之文本粘贴

由于这个问题导致&#xff0c;从其他地方复制来的内容 粘贴发送之后都会多一个 换行 在发送的时候如果直接&#xff0c;发送innerHTML 就 可以解决 Electron h5 Andriod 都没问题&#xff0c;但是 公司的 IOS 端 不支持&#xff0c;且不提供支持&#xff08;做不了。&#xff…...

【哈希数组】697. 数组的度

697. 数组的度 解题思路 首先创建一个IndexMap 键表示元素 值表示一个列表List list存储该元素在数组的所有索引之后再次创建一个map1 针对上面的List 键表示列表的长度 值表示索引的差值遍历indexmap 将所有的list的长度 和 索引的差值存储遍历map1 找到最大的key 那么这个Ke…...

GO语言工具函数库--Lancet

支持300常用功能的开源GO语言工具函数库–Lancet lancet&#xff08;柳叶刀&#xff09;是一个全面、高效、可复用的go语言工具函数库。lancet受到了java apache common包和lodash.js的启发。 特性 全面、高效、可复用300常用go工具函数&#xff0c;支持string、slice、dateti…...

25、商城系统(七):商城项目基础功能pom.xml(重要),mybatis分页插件

截止这一章,我们就不把重心放在前端,后台的基础代码,因为后面都是业务层面的crud。 前端直接替换这两个文件夹即可,后台代码也直接复制: 一、重新更新一下所有的pom.xml 这个地方我踩了好多坑,最后得到一个完整的pom.xml,建议大家直接用我的pom.xml替换即可。 1.comm…...

【Docker-Dev】Mac M2 搭建docker mysql

Mac M2 搭建Mysql 1、前言2、前置说明-Docker的代理访问3、前置说明-Mysql的镜像访问3.1、提取信息3.1.1、开启Mysql的实例3.1.2、Dokcer连接Mysql3.1.3、官方简易版的docker-compose3.1.4、如何登录mysql bash3.1.5、自定义my.cnf文件3.1.6、如何知道其他自定义配置项 4、M2安…...

idea中终端Terminal页面输入命令git log后如何退出

1、idea中Terminal输入命令git log后如何退出&#xff1f; 2、解决 输入q键会自动退出git log命令...

程序员必备IDEA插件,什么是是IDE?

IDEA是一款功能强大的集成开发环境&#xff08;IDE&#xff09;插件&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。 我们在编写完接口代码后需要进行接口调试等操作&#xff0c;一般需要打开额外的调试工具。今天就给大家介绍一款IDEA插件&#xff…...

SkyWalking UI 修改发布Nginx

文章目录 SkyWalking UI修改图标修改路由发布到Nginx添加认证修改路由模式vite.config.ts添加baseNginx配置 SkyWalking UI skywalking-booster-ui下载地址 修改图标 替换 logo.svg 修改路由 router - data - index.ts 发布到Nginx 添加认证 # 安装 yum install -y h…...

移动硬盘打不开怎么办?没有比这更好的办法了

移动硬盘打不开是常见故障&#xff0c;可能的原因有很多&#xff0c;例如硬盘驱动器故障、文件系统损坏、分区表错误等。本文将详细分析这些原因&#xff0c;并提供相应的解决方法&#xff0c;帮助您解决移动硬盘打不开的问题。 当移动硬盘打不开时&#xff0c;为了保留其中的文…...

[场景实现]:多选框与树形结构递归

一、场景描述 实现一个分配权限的页面&#xff0c;最左侧是大的权限模块的名称&#xff0c;左右侧是控制其是否勾选的多选框。中间部分是一级权限模块下的子权限名称及多选框。 请求此权限模块数据的接口返回的是树形结构 对象数组。 主要属性为menuName表示权限名&#xff0…...

从0到1浅析Redis服务器反弹Shell那些事

文章目录 前言Redis服务1.1 特点与应用1.2 安装与使用1.3 语法和配置1.4 未授权访问 反弹Shell2.1 Web服务写入Webshell2.2 Linux定时任务反弹shell2.3 /etc/profile.d->反弹shell2.4 写入ssh公钥登录服务器2.5 利用Redis主从复制RCE2.6 SSRF漏洞组合拳->RCE 总结 前言 …...

JavaScript中alert、confrim、prompt的使用及区别【精选】

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍JavaScript中alert、confrim、prompt的区别及使用以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任…...