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

在Linux和Windows上安装seata-1.6.0

记录:381

场景:在CentOS 7.9操作系统上,安装seata-1.6.0。在Windows上操作系统上,安装seata-1.6.0。Seata,一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。

版本:

JDK 1.8
seata-1.6.0
CentOS 7.9

官网地址:https://seata.io/

源码地址:https://github.com/seata/seata

官网手册:https://seata.io/zh-cn/docs/ops/deploy-guide-beginner.html

Seata,一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。

Three roles in Seata Framework:

Transaction Coordinator(TC): Maintain status of global and branch transactions, drive the global commit or rollback.

Transaction Manager(TM): Define the scope of global transaction: begin a global transaction, commit or rollback a global transaction.

Resource Manager(RM): Manage resources that branch transactions working on, talk to TC for registering branch transactions and reporting status of branch transactions, and drive the branch transaction commit or rollback.

一、在Linux上安装seata

安装Seata,存储模式使用MySQL,服务发现和配置使用Nacos。

1.下载Seata

版本:v1.6.0

发布日期:Dec 17, 2022

下载地址:wget https://github.com/seata/seata/releases/download/v1.6.0/seata-server-1.6.0.tar.gz

下载包:seata-server-1.6.0.tar.gz

2.解压Seata

解压命令:tar -zxvf seata-server-1.6.0.tar.gz -C /opt/seata-1.6.0

解析:把seata-server-1.6.0.tar.gz解压到/opt/seata-1.6.0。在seata下的目录。bin目录是启动脚本。conf目录是配置文件。ext目录下是skywalking插件相关内容。lib目录是全量jar包。logs目录是日志包。script目录是脚本目录。target目录是seata-server.jar包。

3.初始化数据库脚本

本例存储模式使用MySQL数据库。

3.1创建数据库和用户

用户名/口令:hub_seata/12345678

数据库名称:hub_seatadb

登录控制台:mysql -u root -p

在MySQL命令行控制台执行脚本。

USE mysql;
CREATE DATABASE hub_seatadb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER hub_seata@'%' IDENTIFIED BY '12345678';
GRANT ALL ON hub_seatadb.* TO 'hub_seata'@'%' IDENTIFIED BY '12345678';
FLUSH PRIVILEGES;

3.2初始化seata数据库

脚本目录:/opt/seata-1.6.0/script/server/db/mysql.sql

初始化表:branch_table、distributed_lock、global_table、lock_table。

4.启动Nacos

启动脚本目录:/opt/nacos-2.1.1/bin

4.1启动Nacos

启动命令:sh startup.sh -m standalone

地址:http://127.0.0.1:18848/nacos

用户名/口令:nacos/nacos

4.2创建seata命名空间

命名空间名称:hub_seata

命名空间ID:142eba5f-a7b5-4a83-85bb-663c582c8ef1

5.配置seata

在/opt/seata-1.6.0/conf目录下,application.example.yml是配置文件的模板,包含全量配置。application.yml是应用启动时加载配置,根据实际情况按需从application.example.yml中拷贝添加就行

5.1修改application.yml配置

修改文件:/opt/seata-1.6.0/conf/application.yml

修改内容:

server:port: 7091
spring:application:name: seata-server
logging:config: classpath:logback-spring.xmlfile:path: ${user.home}/logs/seataextend:logstash-appender:destination: 127.0.0.1:4560kafka-appender:bootstrap-servers: 127.0.0.1:9092topic: logback_to_logstash
console:user:username: seatapassword: seata
seata:config:type: nacosnacos:server-addr: 192.168.19.203:18848namespace: 142eba5f-a7b5-4a83-85bb-663c582c8ef1group: SEATA_GROUPusername: nacospassword: nacoscontext-path:data-id: seataServer.propertiesregistry:type: nacosnacos:application: seata-serverserver-addr: 192.168.19.203:18848group: SEATA_GROUPnamespace: 142eba5f-a7b5-4a83-85bb-663c582c8ef1cluster: defaultusername: nacospassword: nacoscontext-path:store:mode: dbdb:datasource: druiddb-type: mysqldriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://192.168.19.202:3306/hub_seatadb?rewriteBatchedStatements=trueuser: hub_seatapassword: 12345678min-conn: 5max-conn: 100global-table: global_tablebranch-table: branch_tablelock-table: lock_tabledistributed-lock-table: distributed_lockquery-limit: 100max-wait: 5000    security:secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017tokenValidityInMilliseconds: 1800000ignore:urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login

5.2在Nacos新建seataServer.properties

5.2.1页面配置

在Nacos页面中,选择

命名空间:hub_seata。命名空间ID:142eba5f-a7b5-4a83-85bb-663c582c8ef1。创建配置seataServer.properties。

Data ID:seataServer.properties。

Group:SEATA_GROUP

配置格式:Properties

配置内容:从/opt/seata-1.6.0/script/config-center\config.txt文件中拷贝需求的配置。

本例从config.txt摘取的配置修改过的配置。

service.vgroupMapping.hub_tx_group=default
store.mode=db
store.lock.mode=db
store.session.mode=db
store.publicKey=123456
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://192.168.19.203:3306/hub_seatadb?useUnicode=true&rewriteBatchedStatements=true
store.db.user=hub_seata
store.db.password=12345678

解析:config.txt配置内容在源码包../seata-1.6.0/config/seata-config-core/src/main/resources/config.txt和安装包/opt/seata-1.6.0/script/config-center/config.txt两处位置都可以找到。

5.2.2配置生效

在Nacos中配置已经生效。

6启动seata

6.1启动seata

操作目录:/opt/seata-1.6.0/bin

启动命令:sh seata-server.sh

6.2查看seata日志

日志:/opt/seata-1.6.0/logs/start.out

命令:tail -f -n 300 /opt/seata-1.6.0/logs/start.out

6.3查看seata已注册

在Nacos已经注册了seata-server服务。

7基于普通用户使用seata

在启动seata时,不使用root用户直接启动,建议使用普通用户。

改变安装目录赋权给一个普通用户就可以。

7.1创建普通用户操作

创建用户命令:useradd learn

修改密码命令:passwd

解析:在执行passwd时,提示输入密码。可以查看用户信息:cat /etc/passwd。

7.2普通用户信息

用户名称/口令:learn/12345678

7.3把seata的安装目录赋权给普通用户

命令:chown -R learn:learn /opt/seata-1.6.0

7.4启动seata

切换用户:su learn

操作目录:/opt/seata-1.6.0/bin

启动命令:sh seata-server.sh

8.使用nacos-config.sh脚本加载配置

使用nacos-config.sh脚本加载config.txt配置到nacos。

脚本目录:/opt/seata-1.6.0/script/config-center/nacos

命令:sh nacos-config.sh -h 192.168.19.203 -p 18848 -g SEATA_GROUP -t 142eba5f-a7b5-4a83-85bb-663c582c8ef1 -u nacos -w nacos

解析:本例没有使用这种方式。

二、在Windows上安装seata

安装Seata,存储模式使用MySQL,服务发现和配置使用Nacos。

1.下载Seata

版本:v1.6.0

发布日期:Dec 17, 2022

下载地址:https://github.com/seata/seata/releases/download/v1.6.0/seata-server-1.6.0.zip

下载包:seata-server-1.6.0.zip

2.解压Seata

seata-server-1.6.0.zip包解压到D:\dev\hub\ali\seata-1.6.0。

在seata-1.6.0下的目录。bin目录是启动脚本。conf目录是配置文件。ext目录下是skywalking插件相关内容。lib目录是全量jar包。logs目录是日志包。script目录是脚本目录。target目录是seata-server.jar包。

3.初始化数据库脚本

本例存储模式使用MySQL数据库。

3.1创建数据库和用户

用户名/口令:hub_seata/12345678

数据库名称:hub_seatadb

登录控制台:mysql -u root -p

在MySQL命令行控制台执行脚本。

USE mysql;
CREATE DATABASE hub_seatadb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER hub_seata@'%' IDENTIFIED BY '12345678';
GRANT ALL ON hub_seatadb.* TO 'hub_seata'@'%' IDENTIFIED BY '12345678';
FLUSH PRIVILEGES;

3.2初始化seata数据库

脚本目录:seata\script\server\db\mysql.sql

初始化表:branch_table、distributed_lock、global_table、lock_table。

4.启动Nacos

启动脚本目录:D:\dev\hub\ali\nacos-2.1.1\nacos\bin

4.1启动Nacos

启动命令:sh startup.sh -m standalone

地址:http://192.168.19.203:18848/nacos

用户名/口令:nacos/nacos

4.2创建seata命名空间

命名空间名称:hub_seata

命名空间ID:142eba5f-a7b5-4a83-85bb-663c582c8ef1

5.配置seata

在..\seata\conf目录下,application.example.yml是配置文件的模板,包含全量配置。application.yml是应用启动时加载配置,根据实际情况按需从application.example.yml中拷贝添加就行

5.1修改application.yml配置

修改文件:application.yml

修改内容:

server:port: 7091
spring:application:name: seata-server
logging:config: classpath:logback-spring.xmlfile:path: ${user.home}/logs/seataextend:logstash-appender:destination: 127.0.0.1:4560kafka-appender:bootstrap-servers: 127.0.0.1:9092topic: logback_to_logstash
console:user:username: seatapassword: seata
seata:config:type: nacosnacos:server-addr: 127.0.0.1:18848namespace: 142eba5f-a7b5-4a83-85bb-663c582c8ef1group: SEATA_GROUPusername: nacospassword: nacoscontext-path:data-id: seataServer.propertiesregistry:type: nacosnacos:application: seata-serverserver-addr: 127.0.0.1:18848group: SEATA_GROUPnamespace: 142eba5f-a7b5-4a83-85bb-663c582c8ef1cluster: defaultusername: nacospassword: nacoscontext-path:store:mode: dbdb:datasource: druiddb-type: mysqldriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/hub_seatadb?rewriteBatchedStatements=trueuser: hub_seatapassword: 12345678min-conn: 5max-conn: 100global-table: global_tablebranch-table: branch_tablelock-table: lock_tabledistributed-lock-table: distributed_lockquery-limit: 100max-wait: 5000    security:secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017tokenValidityInMilliseconds: 1800000ignore:urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login

5.2在Nacos新建seataServer.properties

5.2.1页面配置

在Nacos页面中,选择

命名空间:hub_seata。命名空间ID:142eba5f-a7b5-4a83-85bb-663c582c8ef1。创建配置seataServer.properties。

Data ID:seataServer.properties。

Group:SEATA_GROUP

配置格式:Properties

配置内容:从seata\script\config-center\config.txt文件中拷贝需求的配置。

本例从config.txt摘取的配置修改过的配置。

service.vgroupMapping.hub_tx_group=default
store.mode=db
store.lock.mode=db
store.session.mode=db
store.publicKey=123456
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/hub_seatadb?useUnicode=true&rewriteBatchedStatements=true
store.db.user=hub_seata
store.db.password=12345678

解析:config.txt配置内容在源码包seata-1.6.0\config\seata-config-core\src\main\resources\config.txt和编译包seata\script\config-center\config.txt两处位置都可以找到。

5.2.2配置生效

在Nacos中配置已经生效。

6启动seata

6.1启动seata

操作目录:..\seata\bin

双击seata-server.bat启动。

6.2查看seata已注册

在Nacos已经注册了seata-server服务。

三、官方配置和SQL脚本

配置文件均是官网原件。

1.mysql.sql

文件目录:/opt/seata-1.6.0/script/server/db

文件内容:

CREATE TABLE IF NOT EXISTS `global_table`
(`xid`                       VARCHAR(128) NOT NULL,`transaction_id`            BIGINT,`status`                    TINYINT      NOT NULL,`application_id`            VARCHAR(32),`transaction_service_group` VARCHAR(32),`transaction_name`          VARCHAR(128),`timeout`                   INT,`begin_time`                BIGINT,`application_data`          VARCHAR(2000),`gmt_create`                DATETIME,`gmt_modified`              DATETIME,PRIMARY KEY (`xid`),KEY `idx_status_gmt_modified` (`status` , `gmt_modified`),KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(`branch_id`         BIGINT       NOT NULL,`xid`               VARCHAR(128) NOT NULL,`transaction_id`    BIGINT,`resource_group_id` VARCHAR(32),`resource_id`       VARCHAR(256),`branch_type`       VARCHAR(8),`status`            TINYINT,`client_id`         VARCHAR(64),`application_data`  VARCHAR(2000),`gmt_create`        DATETIME(6),`gmt_modified`      DATETIME(6),PRIMARY KEY (`branch_id`),KEY `idx_xid` (`xid`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(`row_key`        VARCHAR(128) NOT NULL,`xid`            VARCHAR(128),`transaction_id` BIGINT,`branch_id`      BIGINT       NOT NULL,`resource_id`    VARCHAR(256),`table_name`     VARCHAR(32),`pk`             VARCHAR(36),`status`         TINYINT      NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',`gmt_create`     DATETIME,`gmt_modified`   DATETIME,PRIMARY KEY (`row_key`),KEY `idx_status` (`status`),KEY `idx_branch_id` (`branch_id`),KEY `idx_xid` (`xid`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;CREATE TABLE IF NOT EXISTS `distributed_lock`
(`lock_key`       CHAR(20) NOT NULL,`lock_value`     VARCHAR(20) NOT NULL,`expire`         BIGINT,primary key (`lock_key`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0);

2.config.txt

文件目录:/opt/seata-1.6.0/script/config-center

文件内容:

#For details about configuration items, see https://seata.io/zh-cn/docs/user/configurations.html
#Transport configuration, for client and server
transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableTmClientBatchSendRequest=false
transport.enableRmClientBatchSendRequest=true
transport.enableTcServerBatchSendResponse=false
transport.rpcRmRequestTimeout=30000
transport.rpcTmRequestTimeout=30000
transport.rpcTcRequestTimeout=30000
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
transport.serialization=seata
transport.compressor=none#Transaction routing rules configuration, only for the client
service.vgroupMapping.default_tx_group=default
#If you use a registry, you can ignore it
service.default.grouplist=127.0.0.1:8091
service.enableDegrade=false
service.disableGlobalTransaction=false#Transaction rule configuration, only for the client
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=true
client.rm.tableMetaCheckerInterval=60000
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
client.rm.sagaJsonParser=fastjson
client.rm.tccActionInterceptorOrder=-2147482648
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.defaultGlobalTransactionTimeout=60000
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000
client.tm.interceptorOrder=-2147482648
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
#For TCC transaction mode
tcc.fence.logTableName=tcc_fence_log
tcc.fence.cleanPeriod=1h#Log rule configuration, for client and server
log.exceptionRate=100#Transaction storage configuration, only for the server. The file, db, and redis configuration values are optional.
store.mode=file
store.lock.mode=file
store.session.mode=file
#Used for password encryption
store.publicKey=#If `store.mode,store.lock.mode,store.session.mode` are not equal to `file`, you can remove the configuration block.
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#These configurations are required if the `store mode` is `db`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `db`, you can remove the configuration block.
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=username
store.db.password=password
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.distributedLockTable=distributed_lock
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000#These configurations are required if the `store mode` is `redis`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `redis`, you can remove the configuration block.
store.redis.mode=single
store.redis.single.host=127.0.0.1
store.redis.single.port=6379
store.redis.sentinel.masterName=
store.redis.sentinel.sentinelHosts=
store.redis.maxConn=10
store.redis.minConn=1
store.redis.maxTotal=100
store.redis.database=0
store.redis.password=
store.redis.queryLimit=100#Transaction rule configuration, only for the server
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
server.distributedLockExpireTime=10000
server.xaerNotaRetryTimeout=60000
server.session.branchAsyncQueueSize=5000
server.session.enableBranchAsyncRemove=false
server.enableParallelRequestHandle=false#Metrics configuration, only for the server
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

以上,感谢。

2023年2月19日

相关文章:

在Linux和Windows上安装seata-1.6.0

记录:381场景:在CentOS 7.9操作系统上,安装seata-1.6.0。在Windows上操作系统上,安装seata-1.6.0。Seata,一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。版本:JDK…...

兼职任务平台收集(二)分享给有需要的朋友们

互联网时代,给人们带来了很大的便利。信息交流、生活缴费、足不出户购物、便捷出行、线上医疗、线上教育等等很多。可以说,网络的时代会一直存在着。很多人也在互联网上赚到了第一桶金,这跟他们的努力和付出是息息相关的。所谓一份耕耘&#…...

目标检测三大数据格式VOC,YOLO,COCO的详细介绍

注:本文仅供学习,未经同意请勿转载 说明:该博客来源于xiaobai_Ry:2020年3月笔记 对应的PDF下载链接在:待上传 目录 目标检测常见数据集总结 V0C数据集(Annotation的格式是xmI) A. 数据集包含种类: B. V0C2007和V0C2012的区别…...

SpringBoot实现统一返回接口(除AOP)

起因 关于使用AOP去实现统一返回接口在之前的博客中我们已经实现了,但我突然突发奇想,SpringBoot中异常类的统一返回好像是通过RestControllerAdvice 这个注解去完成的,那我是否也可以通过这个注解去实现统一返回接口。 正文 这个方法主要…...

ChatGpt - 基于人工智能检索进行论文写作

摘要 ChatGPT 是一款由 OpenAI 训练的大型语言模型,可用于各种自然语言处理任务,包括论文写作。使用 ChatGPT 可以帮助作者提高论文的语言流畅度、增强表达能力和提高文章质量。在写作过程中,作者可以使用 ChatGPT 生成自然语言的段落、句子、单词或者短语,作为启发式的写…...

实例三:MATLAB APP design-多项式函数拟合

一、APP 界面设计展示 注:在左侧点击数据导入,选择自己的数据表,如果数据导入成功,在右侧的空白框就会显示数据导入成功。在多项式项数右侧框中输入项数,例如2、3、4等,点击计算按钮,右侧坐标框就会显示函数图像,在平均相对误差下面的空白框显示平均相对误差。...

springboot多种方式注入bean获取Bean

springboot动态注入bean1、创建Bean(demo)2、动态注入Bean3、通过注解注入Bean4、通过config配置注入Bean5、通过Import注解导入6、使用FactoryBean接口7、实现BeanDefinitionRegistryPostProcessor接口1、创建Bean(demo) Data public class Demo(){private String name;publi…...

Markdown及其语法详细介绍(全面)

文章目录一、基本语法1.标题2.段落和换行3.强调4.列表5.链接6.图片7.引用8.代码9.分割线10表格二、扩展语法1.标题锚点标题 {#anchor}2.脚注3.自动链接4.任务列表5.删除线6.表情符号7.数学公式三、Markdown 应用1.文档编辑2.博客写作3.代码笔记四、常见的工具和平台支持 Markdo…...

在Linux和Windows上安装sentinel-1.8.5

记录:380场景:在CentOS 7.9操作系统上,安装sentinel-1.8.5。在Windows上操作系统上,安装sentinel-1.8.5。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件。版本:JDK 1.8 sentinel-1.8.5 CentOS 7.9官网地址…...

面试攻略,Java 基础面试 100 问(十)

StringBuffer、StringBuilder、String区别 线程安全 StringBuffer:线程安全,StringBuilder:线程不安全。 因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 synchronized 修饰。 StringBuf…...

Zero-shot(零次学习)简介

zero-shot基本概念 首先通过一个例子来引入zero-shot的概念。假设我们已知驴子和马的形态特征,又已知老虎和鬣狗都是又相间条纹的动物,熊猫和企鹅是黑白相间的动物,再次的基础上,我们定义斑马是黑白条纹相间的马科动物。不看任何斑…...

51单片机简易电阻电感电容RLC测量仪仿真设计

51单片机简易电阻电感电容RLC测量仪仿真( proteus仿真程序讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0040 51单片机简易电阻电感电容RLC测量仪仿真51单片机最小系统的相关知识复位…...

[软件工程导论(第六版)]第6章 详细设计(课后习题详解)

文章目录1 假设只有SEQUENCE和DO-WHILE两种控制结构,怎样利用它们完成 IF THEN ELSE操作?2 假设只允许使用SEQUENCE和IF-THEN-ELSE两种控制结构,怎样利用它们完成DO WHILE操作?3 画出下列伪码程序的程序流程图和盒图:4…...

【2.19】算法题2:贪心算法、动态规划、分治

题目:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。方法一:贪心算法原理:若当前指针所指元素之前的和小…...

【Redis】Redis 发布订阅通信模式 ( 发布订阅模式 | 订阅频道 | 发布消息 | 接收消息 )

文章目录一、发布订阅模式二、订阅频道三、发布消息四、接收消息一、发布订阅模式 Redis 中 存在一种 发布订阅 消息通信模式 : 消息发布者 : 负责发送消息 , 订阅者需要订阅该发布者频道 ;消息订阅者 : 负责接收消息 ; 订阅者 先 订阅 发布者频道 , 当 发布者 发布消息时 , …...

VNCTF 2023复现

文章目录象棋王子电子木鱼BabyGo象棋王子 签到题,直接在源码中找就ok。 找到一处编码,在控制台输出。 flag为:flag{w3lc0m3_t0_VNCTF_2023~~~} 电子木鱼 需要先理清代码逻辑。 存在三个路由。 一:/路由用来查看当前的功德数量…...

python基础知识有哪些需要背(记住是基础知识)我是初学者

大家好,小编来为大家解答以下问题,一个有趣的事情,一个有趣的事情,今天让我们一起来看看吧! 1、python基础知识有哪些需要背(记住是基础知识)我是初学者 或看好Python的广阔前景,或…...

Linux下TCP连接断开后不释放的解决办法

问题:在开发测试时发现断开与服务器端口后再次连接时拒绝连接。 分析:服务器上查看端口占用情况,假设端口为8888。 netstat -anp |grep 8888 发现端口8888端口显示被占用(ip为本机ip确定是上次连接)且状态为ESTABLI…...

1.关于嵌入式开发软件工程师的理解

学习嵌入式软件开发,首先要学会使用工具, 包括各种语言,C语言、FPGA、C等各种工具软件,各种芯片开发的IDE环境各种操作系统,Vxworks、Linux、Freertos等计算机基础,基本的框架结构,网络通信等编…...

1760字,让你拿捏 [‘列表‘]

如约而至,紧接着第一篇文章,小编将会陆续把自己精心做的全套Python笔记依次发放给大家,便于大家学习Python、期末备考、巩固基础等(这几期是公众号小插曲,后期发放编程技术的话主要还是会围绕Java来展开,感谢小伙伴们的…...

AssetStudio深度解析:Unity资源提取原理与跨版本兼容实践

1. 这不是个“点开即用”的工具,而是一把需要校准的Unity资源解剖刀AssetStudio这个名字听起来像某个轻量级小工具,但实际用过的人很快会意识到:它根本不是拿来就跑的“一键提取器”,而是一套需要你亲手调参、理解Unity底层序列化…...

Midjourney V6皮肤渲染实战手册:从油腻/塑料/失真到真实毛孔级质感的5步黄金流程

更多请点击: https://intelliparadigm.com 第一章:Midjourney V6皮肤渲染的核心挑战与认知跃迁 Midjourney V6 在图像生成能力上实现了质的飞跃,尤其在材质表现维度——皮肤渲染——呈现出前所未有的真实感与层次感。然而,这种进…...

Selenium Cookie复用登录态实战指南

1. 这不是“绕过”,而是“复用登录态”——先厘清一个关键认知误区很多人看到“Selenium通过cookie绕过验证码”这个标题,第一反应是:又一个黑灰产技巧?能省事就上?但我在电商、金融、SaaS类项目里带团队做自动化测试近…...

受够了网盘限速?2026年更顺手的不限速同步盘选择

受够了网盘限速、下载慢、传大文件卡顿?如果你的核心诉求是“上传下载不被限速、同步稳定、多人协作更省心”,下面这4款网盘可以作为备选参考。本文以“传输体验 同步效率 安全合规 协作能力”做客观对比,方便你按需选择。 先看对比表&am…...

WZLBadge高级定制:从颜色位置到字体半径的完全自定义

WZLBadge高级定制:从颜色位置到字体半径的完全自定义 【免费下载链接】WZLBadge //An one-line tool to show styles of badge for UIView 项目地址: https://gitcode.com/gh_mirrors/wz/WZLBadge WZLBadge是一款功能强大的iOS徽章工具,能够帮助开…...

意识的“调谐客观还原”理论

“调谐客观还原”理论,通常称为 Orch-OR,是诺贝尔物理学奖得主罗杰彭罗斯与麻醉学家斯图尔特哈梅罗夫于20世纪90年代初提出的一种极具争议的意识假说。该理论的核心观点是:意识并非产生于神经元之间的经典电化学连接,而是源于神经…...

Win11自带加密真香!手把手教你用‘属性加密’保护私密文件夹(附防忘密码小技巧)

Win11原生加密全指南:从基础设置到高阶安全实践 在数字时代,隐私保护已成为每个电脑用户的刚需。当你刚升级到Win11系统,面对全新的界面和操作逻辑,可能会对如何保护敏感文件感到困惑。第三方加密软件固然功能强大,但它…...

程序员需求攀升:数字化浪潮下的行业必然

在数字经济深度渗透的今天,软件开发行业正经历着前所未有的扩张期,程序员岗位需求的持续攀升成为行业发展的鲜明特征。作为与开发环节紧密联动的测试从业者,深入理解这一现象背后的逻辑,不仅能帮助我们把握行业趋势,更…...

4.0修复版去水印小程序源码 内含去水印免费接口

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 流量主变现:集成微信广告,支持开屏 / 激励 / Banner 广告,直接盈利。 前后端能力: 前端:3 套 UI 可选,改版后功能完…...

Diablo Edit2:5分钟掌握暗黑破坏神2终极角色编辑器

Diablo Edit2:5分钟掌握暗黑破坏神2终极角色编辑器 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否厌倦了在暗黑破坏神2中反复刷装备的无尽循环?是否因为技能点分配失…...