微服务: Seata AT 分布式事务以及配置方式(上篇)

news2024/11/18 7:51:16

目录

前言简介:

1. 安装seata-at 

-> 1.1 先看版本, 全局搜一下

 -> 1.2 版本说明 · alibaba/spring-cloud-alibaba Wiki

 -> 1.3 选择seata-at版本

 -> 1.4 下载后按照下图进行创建文件

---> 1.4.0  先在nacos创建命名空间seata  

 ---> 1.4.1 registry.conf修改

---> 1.4.2 file.conf修改

 -> 1.4.3 修改config.txt 文件

---> 1.4.4  数据库创建seata 和 undo_log 表

seata的sql如下: 

undo_log的sql如下

---> 1.4.5 seata-push.sh/.bat修改

====>  windows版: 使用git bash 操作

 ====> linux版本: ./seata-push.sh

 -> 1.5  配置结束 运行seata -at 

---> 1.5.1  windows 执行 seata-server.bat 

---> 1.5.2 linux 执行seata-server.sh

2. 下文预告: springcloud中引入seata-at实现分布式事务

3. 下下文预告:  AT 遇到异常的修改方式


前言简介:

Seata AT(分布式事务解决方案)的优势包括:

1、高可用性:Seata AT采用分布式架构,可以实现高可用性。同时,Seata AT也支持多种存储和注册中心,可以基于不同的需求进行选择。

2、高性能:Seata AT在事务控制方面采用了高效的算法和优化策略,可以实现高性能。

3、易于集成:Seata AT提供了丰富的客户端API和文档,使得它可以很容易地集成到现有的应用中。

4、支持多种场景:Seata AT适用于多种场景,包括微服务、分布式事务、数据一致性等。

5、开源社区支持:Seata AT是一个开源项目,有一个活跃的社区在维护和支持它,用户可以获得充分的技术支持和社区资源。

分布式事务, 我就不写那些工程内测试代码了, 一搜一大堆, 后期有时间再补

这里只写安装配置和使用

真实场景测试, 服务器部署等, 基本坑都填了 如遇问题, 请在评论区指出

1. 安装seata-at 

-> 1.1 先看版本, 全局搜一下

 -> 1.2 版本说明 · alibaba/spring-cloud-alibaba Wiki

每个 Spring Cloud Alibaba 版本及其自身所适配的各组件对应版本如下表所示(注意,Spring Cloud Dubbo 从 2021.0.1.0 起已被移除出主干,不再随主干演进):

2022.0.0.0-RC2

1.8.6

2.2.1

4.9.4

~

1.7.0-native-rc2

2021.0.5.0

1.8.6

2.2.0

4.9.4

~

1.6.1

2.2.10-RC1

1.8.6

2.2.0

4.9.4

~

1.6.1

2022.0.0.0-RC1

1.8.6

2.2.1-RC

4.9.4

~

1.6.1

2.2.9.RELEASE

1.8.5

2.1.0

4.9.4

~

1.5.2

2021.0.4.0

1.8.5

2.0.4

4.9.4

~

1.5.2

2.2.8.RELEASE

1.8.4

2.1.0

4.9.3

~

1.5.1

2021.0.1.0

1.8.3

1.4.2

4.9.2

~

1.4.2

2.2.7.RELEASE

1.8.1

2.0.3

4.6.1

2.7.13

1.3.0

2.2.6.RELEASE

1.8.1

1.4.2

4.4.0

2.7.8

1.3.0

2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE

1.8.0

1.4.1

4.4.0

2.7.8

1.3.0

2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE

1.8.0

1.3.3

4.4.0

2.7.8

1.3.0

2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE

1.7.1

1.2.1

4.4.0

2.7.6

1.2.0

2.2.0.RELEASE

1.7.1

1.1.4

4.4.0

2.7.4.1

1.0.0

2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE

1.7.0

1.1.4

4.4.0

2.7.3

0.9.0

2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE

1.6.3

1.1.1

4.4.0

2.7.3

0.7.1

 -> 1.3 选择seata-at版本

我这里是seata-at:1.3.0 版本

 

下载地址(官网资源): Release v1.3.0 · seata/seata

下载地址 (pzy资源): 设的免费: https://download.csdn.net/download/pingzhuyan/87803297 

[需要审核一段时间] 

 -> 1.4 下载后按照下图进行创建文件

---> 1.4.0  先在nacos创建命名空间seata  

 ---> 1.4.1 registry.conf修改

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"

  nacos {
    application = "seata-server"
    serverAddr = "172.26.2.*:8848"
    group = "SEATA_GROUP"
    namespace = "3afe4eb9-0550-4271-96c1-c005ac0ea174"
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }
  eureka {
    serviceUrl = "http://localhost:8761/eureka"
    application = "default"
    weight = "1"
  }
  redis {
    serverAddr = "localhost:6379"
    db = 0
    password = ""
    cluster = "default"
    timeout = 0
  }
  zk {
    cluster = "default"
    serverAddr = "127.0.0.1:2181"
    sessionTimeout = 6000
    connectTimeout = 2000
    username = ""
    password = ""
  }
  consul {
    cluster = "default"
    serverAddr = "127.0.0.1:8500"
  }
  etcd3 {
    cluster = "default"
    serverAddr = "http://localhost:2379"
  }
  sofa {
    serverAddr = "127.0.0.1:9603"
    application = "default"
    region = "DEFAULT_ZONE"
    datacenter = "DefaultDataCenter"
    cluster = "default"
    group = "SEATA_GROUP"
    addressWaitTime = "3000"
  }
  file {
    name = "file.conf"
  }
}

config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos"

  nacos {
    serverAddr = "172.26.2.*:8848"
    namespace = "3afe4eb9-0550-4271-96c1-c005ac0ea174"
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"
  }
  consul {
    serverAddr = "127.0.0.1:8500"
  }
  apollo {
    appId = "seata-server"
    apolloMeta = "http://192.168.1.204:8801"
    namespace = "application"
  }
  zk {
    serverAddr = "127.0.0.1:2181"
    sessionTimeout = 6000
    connectTimeout = 2000
    username = ""
    password = ""
  }
  etcd3 {
    serverAddr = "http://localhost:2379"
  }
  file {
    name = "file.conf"
  }
}

---> 1.4.2 file.conf修改


## transaction log store, only used in seata-server
store {
  ## store mode: file、db、redis
  mode = "db"

  ## file store property
  file {
    ## store location dir
    dir = "sessionStore"
    # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
    maxBranchSessionSize = 16384
    # globe session size , if exceeded throws exceptions
    maxGlobalSessionSize = 512
    # file buffer size , if exceeded allocate new buffer
    fileWriteBufferCacheSize = 16384
    # when recover batch read size
    sessionReloadReadSize = 100
    # async, sync
    flushDiskMode = async
  }

  ## database store property
  db {
    ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
    datasource = "druid"
    ## mysql/oracle/postgresql/h2/oceanbase etc.
    dbType = "mysql"
    driverClassName = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://172.26.2.*:3306/seata"
    user = "root"
    password = "root"
    minConn = 5
    maxConn = 30
    globalTable = "global_table"
    branchTable = "branch_table"
    lockTable = "lock_table"
    queryLimit = 100
    maxWait = 5000
  }

  ## redis store property
  redis {
    host = "127.0.0.1"
    port = "6379"
    password = ""
    database = "0"
    minConn = 1
    maxConn = 10
    queryLimit = 100
  }

}

 -> 1.4.3 修改config.txt 文件

最关键的配置是(巨坑的位置): service.vgroupMapping 这个要注意 

其他位置只需要改db数据库即可

transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableClientBatchSendRequest=false
transport.threadFactory.bossThreadPrefix=NettyBoss
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
transport.threadFactory.shareBossWorker=false
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
transport.threadFactory.clientSelectorThreadSize=1
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
transport.threadFactory.bossThreadSize=1
transport.threadFactory.workerThreadSize=default
transport.shutdown.wait=3

# 此处可以修改为自己项目的分组
#service.vgroup_mapping.my_test_tx_group=default
## 1.0之后需要换成  vgroupMapping
## 可以写多个配置,只需要相关联的group统一就行


service.vgroupMapping.seata_group=default

service.default.grouplist=127.0.0.1:8091
service.enableDegrade=false
service.disableGlobalTransaction=false
client.rm.asyncCommitBufferLimit=10000
client.rm.lock.retryInterval=10
client.rm.lock.retryTimes=30
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.rm.reportRetryCount=5
client.rm.tableMetaCheckEnable=false
client.rm.tableMetaCheckerInterval=60000
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.defaultGlobalTransactionTimeout=60000
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000

#此处配置file.conf一致
store.mode=db

store.publicKey=
store.file.dir=file_store/data
store.file.maxBranchSessionSize=16384
store.file.maxGlobalSessionSize=512
store.file.fileWriteBufferCacheSize=16384
store.file.flushDiskMode=async
store.file.sessionReloadReadSize=100

store.db.datasource=druid
store.db.dbType=mysql
#配置数据库相关信息
##store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://172.26.4.*:3306/seata?useUnicode=true
store.db.user=root
store.db.password=*3
icKeyRetrieval=true
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000

store.redis.mode=single
store.redis.single.host=127.0.0.1
store.redis.single.port=6379
store.redis.maxConn=10
store.redis.minConn=1
store.redis.maxTotal=100
store.redis.database=0
store.redis.password=
store.redis.queryLimit=100
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k
log.exceptionRate=100
transport.serialization=seata
transport.compressor=none
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

---> 1.4.4  数据库创建seata 和 undo_log 表

seata的sql如下: 

/*
Navicat MySQL Data Transfer
Source Server         : mysql
Source Server Version : 80020
Source Host           : localhost:3306
Source Database       : seata
Target Server Type    : MYSQL
Target Server Version : 80020
File Encoding         : 65001
Date: 2022-07-27 18:35:46
*/
 
SET FOREIGN_KEY_CHECKS=0;
 
-- ----------------------------
-- Table structure for `branch_table`
-- ----------------------------
DROP TABLE IF EXISTS `branch_table`;
CREATE TABLE `branch_table` (
  `branch_id` bigint NOT NULL,
  `xid` varchar(128) NOT NULL,
  `transaction_id` bigint DEFAULT NULL,
  `resource_group_id` varchar(32) DEFAULT NULL,
  `resource_id` varchar(256) DEFAULT NULL,
  `branch_type` varchar(8) DEFAULT NULL,
  `status` tinyint DEFAULT NULL,
  `client_id` varchar(64) DEFAULT NULL,
  `application_data` varchar(2000) DEFAULT NULL,
  `gmt_create` datetime(6) DEFAULT NULL,
  `gmt_modified` datetime(6) DEFAULT NULL,
  PRIMARY KEY (`branch_id`),
  KEY `idx_xid` (`xid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- ----------------------------
-- Records of branch_table
-- ----------------------------
 
-- ----------------------------
-- Table structure for `global_table`
-- ----------------------------
DROP TABLE IF EXISTS `global_table`;
CREATE TABLE `global_table` (
  `xid` varchar(128) NOT NULL,
  `transaction_id` bigint DEFAULT NULL,
  `status` tinyint NOT NULL,
  `application_id` varchar(32) DEFAULT NULL,
  `transaction_service_group` varchar(32) DEFAULT NULL,
  `transaction_name` varchar(128) DEFAULT NULL,
  `timeout` int DEFAULT NULL,
  `begin_time` bigint DEFAULT NULL,
  `application_data` varchar(2000) DEFAULT NULL,
  `gmt_create` datetime DEFAULT NULL,
  `gmt_modified` datetime DEFAULT NULL,
  PRIMARY KEY (`xid`),
  KEY `idx_gmt_modified_status` (`gmt_modified`,`status`),
  KEY `idx_transaction_id` (`transaction_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- ----------------------------
-- Records of global_table
-- ----------------------------
 
-- ----------------------------
-- Table structure for `lock_table`
-- ----------------------------
DROP TABLE IF EXISTS `lock_table`;
CREATE TABLE `lock_table` (
  `row_key` varchar(128) NOT NULL,
  `xid` varchar(96) DEFAULT NULL,
  `transaction_id` bigint DEFAULT NULL,
  `branch_id` bigint NOT NULL,
  `resource_id` varchar(256) DEFAULT NULL,
  `table_name` varchar(32) DEFAULT NULL,
  `pk` varchar(36) DEFAULT NULL,
  `gmt_create` datetime DEFAULT NULL,
  `gmt_modified` datetime DEFAULT NULL,
  PRIMARY KEY (`row_key`),
  KEY `idx_branch_id` (`branch_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- ----------------------------
-- Records of lock_table
-- ----------------------------

undo_log的sql如下

<在哪用分布式事务就在哪个库里创建>

-- the table to store seata xid data
-- 0.7.0+ add context
-- you must to init this sql for you business databese. the seata server not need it.
-- 此脚本必须初始化在你当前的业务数据库中,用于AT 模式XID记录。与server端无关(注:业务数据库)
-- 注意此处0.3.0+ 增加唯一索引 ux_undo_log

-- drop table `undo_log`;
CREATE TABLE `undo_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `branch_id` bigint(20) NOT NULL,
  `xid` varchar(100) NOT NULL,
  `context` varchar(128) NOT NULL,
  `rollback_info` longblob NOT NULL,
  `log_status` int(11) NOT NULL,
  `log_created` datetime NOT NULL,
  `log_modified` datetime NOT NULL,
  `ext` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

---> 1.4.5 seata-push.sh/.bat修改

sh nacos-config.sh -h 172.26.2.* -p 8848 -g SEATA_GROUP -t 3afe4eb9-0550-4271-96c1-c005ac0ea174 -u nacos -w nacos
-h IP地址(服务器内 内网ip即可 windows本地即可 远端 公网ip即可);

-p 指定nacos的端口号;
-g 指定配置的分组,注意,是配置的分组<必须是SEATA_GROUP>(下午介绍);
-t 指定命名空间id,nacos上创建的默认id;
-u -w指定nacos的用户名和密码,开启了nacos注册和配置认证的才需要指定。

====>  windows版: 使用git bash 操作

不能用bat 复制文件, 如下图所示 git bash here 控制台进行操作

[显着整齐一点嘿嘿] 

 ====> linux版本: ./seata-push.sh

如果不能用sh 复制文件, 在linux控制台进行操作  (如图所示)

 -> 1.5  配置结束 运行seata -at 

---> 1.5.1  windows 执行 seata-server.bat 

---> 1.5.2 linux 执行seata-server.sh

前台启动: ./seata-server.sh

后台启动: nohup ./seata-server.sh >log.out 2>1 &


到此 seata-at 全部配置 结束

2. 下文预告: springcloud中引入seata-at实现分布式事务

 配置文件 xml 基础代码等

3. 下下文预告:  AT 遇到异常的修改方式

遇到异常的解决方案 部分源码解析  

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

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

相关文章

Chrome 的骑士盾,谷歌 Security Princess 访谈

童话故事里的公主都有一种需要被保护的感觉&#xff0c;就像马里奥大叔在这么多年来都要在库巴手上拯救出碧姬公主一样。不过在谷歌的这位 Security Princess 却手执盾牌&#xff0c;守护着大家的 Chrome 浏览器免受恶意程序攻击。小编这次就乘着世界网络安全日的机会&#xff…

微信小程序-生命周期

为什么今天突然总结一下微信小程序的生命周期呢&#xff1f;因为突然发现这个知识点忘得有点干净。所以今天就看一下微信小程序的生命周期是怎么个事吧&#xff01; 目录 生命周期 生命周期的分类 生命周期函数的作用 生命周期函数的分类 生命周期是指一个对象从创建->…

Docker -- m1芯片 macOS 安装 nginx - 03

m1芯片 macOS 安装 nginx 一、安装docker提前准备二、下载nginx相关镜像三、运行相关容器四、运行并验证 一、安装docker提前准备 查看 d o c k e r \color{#FF7D00}{docker} docker版本&#xff1a;在 c o m m e n t \color{#FF7D00}{comment} comment 中输入 docker -version…

小红薯笔记/帖子采集工具

小红书【笔记/帖子】采集工具 链接&#xff1a; http://106.53.68.168:9920/xhs-keyword-spider 规则及操作 &#xff08;1&#xff09;规则&#xff1a; 按照关键词抓取规则&#xff1a;标题中或者正文内容中包含该关键词都能被抓取下来。多种搜索模式可选&#xff0c;分别…

字节跳动10年经验,10W字228道软件测试经典面试题总结(附答案)

前言 最近有很多粉丝问我&#xff0c;有什么方法能够快速提升自己&#xff0c;通过阿里、腾讯、字节跳动、京东等互联网大厂的面试&#xff0c;我觉得短时间提升自己最快的手段就是背面试题&#xff0c;最近总结了软件测试常用的面试题&#xff0c;分享给大家&#xff0c;希望…

【mpvue】小程序开发入门

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍mpvue的使用。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习知识&#xff0c;共同进步。 &#x1f95e;喜欢的朋友可以关注一下&#xff0c;下次更…

Atlassian攻略:如何将Jira和Confluence的数据平稳迁移上云

迁移到云端相当于一次专业的冒险旅⾏。过程中肯定会经历一些颠簸&#xff0c;但只要有正确的心态和充分的准备&#xff0c;您就能完美应对。最终的目的地一定会让你感觉值得。当Atlassian调查了最近迁移的客户时&#xff0c;有89%的客户表示在他们不到6个月的时间内就意识到了迁…

chatgpt赋能Python-python3_9_7怎么换行

Python3.9.7是一款强大的编程语言&#xff0c;它具有许多优点&#xff0c;例如易于学习和使用&#xff0c;适用于不同的应用程序&#xff0c;以及具有丰富的第三方库支持。但是&#xff0c;许多人可能会面临一个问题&#xff1a;如何在Python3.9.7中正确换行&#xff1f; 在本…

一篇文章告诉你如何入门黑客技术

01 准备 当你决定做要开始学习一个新的领域时&#xff0c;你需要考虑以下几个问题。 1&#xff09;要考虑清楚你为何要学这个 说白了就是你的动机是什么&#xff0c;如果你的动机是不可持续的&#xff0c;例如盗个QQ&#xff08;甚至是挖个系统0Day漏洞&#xff09;&#x…

【数据分享】2020年全国10m分辨率土地覆盖数据

土地覆盖数据是我们在各项研究中都非常常用的数据&#xff01;之前我们分享过多种精度的土地覆盖数据&#xff0c;包括&#xff1a;两种30米精度的土地覆盖数据——2000\2010\2022年的GlobeLand地表土地覆盖数据和1990-2021年的CLDC土地覆盖数据&#xff1b;此外还分享了两种10…

IDEA spring boot maven 项目搭建

1.打开idea后选择file->new->project 2.选择maven,选择jdk&#xff0c;并且下一步next。 3.选择项目存放位置以及项目名称。 至此一个maven项目就建好了。

第三十三章 使用Redux管理状态

Redux&#xff08;全称为Redux&#xff09;是一个基于状态管理的JavaScript库&#xff0c;它可以用来构建可重用的、可维护的代码。Redux主要用于处理复杂的应用程序中的状态管理&#xff0c;它能够自动地处理应用程序中的更改&#xff0c;并在需要时更新视图。 Redux使用一种被…

Oracle MRP补丁

参考文档&#xff1a; Oracle Database Oracle Database Patch Maintenance, Release 19c and Later Releases Introducing Monthly Recommended Patches (MRPs) and FAQ (Doc ID 2898740.1) - Sunsetting of 19c RURs and FAQ (Doc ID 2898381.1). Primary Note for D…

Sui基金会联合Tencent Cloud和Numen于5月24日在香港举办生态交流会

Sui生态工作坊及交流会将于5月24日在香港举行&#xff0c;本次活动旨在提升Web3产业对Sui生态的认识&#xff0c;并为生态中的开发者搭建交流的平台&#xff0c;促进团队之间的合作。在本次的交流会中&#xff0c;您还可以了解到Sui基金会对Web3生态发展愿景不遗余力的支持、Te…

深度学习课程:手写体识别示例代码和详细注释

Pytorch 的快速入门&#xff0c;参见 通过两个神经元的极简模型&#xff0c;清晰透视 Pytorch 工作原理。本文结合手写体识别项目&#xff0c;给出一个具体示例和直接关联代码的解释。 1. 代码 下面代码展示了完整的手写体识别的 Python 程序代码。代码中有少量注释。在本文后…

工业相机的Pixel Binning和Pixel Skipping

一般图像传感器的不同分辨率都对应着不同的帧率。如果想要提高帧率&#xff0c;就要考虑是否需要缩小视野。若不希望视野缩小&#xff0c;就需要减小分辨率&#xff08;resolution&#xff09;。常用的减少分辨率的两种采样方式是&#xff1a;Skipping和Binning。 什么是Binni…

【复盘】聊一下如何高效学习

对于大多数的人来说&#xff0c;从毕业之后其实大多数的可能就不会在认真学习专业和专业外的课程&#xff0c;但是对于程序员这个大群体来说&#xff0c;想要提高自己的技术&#xff0c;需要不断的提高自己的技术能力以及来提高薪资水平&#xff0c;那么有没有相关的高效学习的…

四种不同机器学习方法(线性回归模型,K近邻回归模型,决策树回归模型,随机森林回归模型)对光伏发电预测

1.数据集介绍&#xff08;可以看短期光伏发电量短期预测&#xff08;Python代码&#xff0c;基于LSTM模型&#xff09;_深度学习的奋斗者的博客-CSDN博客&#xff09; 两篇文章用的是同一个数据集&#xff0c;不同的的是本篇多了温度特征 这些是温度数据集中的列名&#xff1…

prettier 使用详细介绍

prettier 使用详细介绍 prettier是一个代码格式化工具&#xff0c;可以通过自定义规则来重新规范项目中的代码&#xff0c;去掉原始的代码风格&#xff0c;确保团队的代码使用统一相同的格式。 安装 npm i prettier -Dyarn add prettier --dev创建一个prettierrc.*配置文件&…

lambda、类

目录 1、lambda匿名函数 2、类 1、__init__() 2、继承 1、lambda匿名函数 语法 lambda arguments : expression 一个 lambda 函数&#xff0c;它把作为参数传入的数字加 10&#xff0c;然后打印结果 x lambda a : a 10print(x(5)) # 15 一个 lambda 函数&#x…