ShardingSphere5.2.1+达梦数据库分表操作

news/2025/3/30 7:05:42/

上一篇使用的ShardingSphere版本为4.1.1,本次使用5.2.1

依赖引用

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>sharding-dm04</artifactId><version>1.0</version><name>sharding-dm04</name><description>sharding-dm04</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.7.6</spring-boot.version><shardingsphere.version>5.2.1</shardingsphere.version><alibaba.druid.version>1.2.6</alibaba.druid.version><snakeyaml.version>1.33</snakeyaml.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.3.140</version></dependency><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId><version>${shardingsphere.version}</version></dependency><dependency><groupId>org.yaml</groupId><artifactId>snakeyaml</artifactId><version>${snakeyaml.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${alibaba.druid.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>org.example.shardingdm.ShardingDm02Application</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

数据库脚本

CREATE TABLE "TEST"."GOODS_1"
("GID" BIGINT,"GNAME" VARCHAR(50),"USER_ID" BIGINT,"GSTATUS" VARCHAR(50)
) STORAGE(ON "MAIN", CLUSTERBTR) ;CREATE TABLE "TEST"."GOODS_2"
("GID" BIGINT,"GNAME" VARCHAR(50),"USER_ID" BIGINT,"GSTATUS" VARCHAR(50)
) STORAGE(ON "MAIN", CLUSTERBTR) ;

关键代码

application.properties配置文件

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImplspring.main.allow-bean-definition-overriding=truespring.shardingsphere.props.sql.show=true
spring.shardingsphere.datasource.names=g1spring.shardingsphere.datasource.g1.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.g1.driver-class-name=dm.jdbc.driver.DmDriver
spring.shardingsphere.datasource.g1.url=jdbc:dm://10.16.39.19:5236/TEST
spring.shardingsphere.datasource.g1.username=SYSDBA
spring.shardingsphere.datasource.g1.password=szCIM2024# 分片配置
spring.shardingsphere.rules.sharding.tables.goods.actual-data-nodes=g1.goods_$->{1..2}# 分布式序列配置
spring.shardingsphere.rules.sharding.key-generators.snowflake.type=SNOWFLAKE
spring.shardingsphere.rules.sharding.key-generators.snowflake.props.work-id=123# 分布式ID
spring.shardingsphere.rules.sharding.tables.goods.key-generate-strategy.column=gid
spring.shardingsphere.rules.sharding.tables.goods.key-generate-strategy.key-generator-name=snowflake# 分表配置
spring.shardingsphere.rules.sharding.tables.goods.table-strategy.standard.sharding-column=gid
spring.shardingsphere.rules.sharding.tables.goods.table-strategy.standard.sharding-algorithm-name=goods_table_inline# 分表规则
spring.shardingsphere.rules.sharding.sharding-algorithms.goods_table_inline.type=INLINE
spring.shardingsphere.rules.sharding.sharding-algorithms.goods_table_inline.props.algorithm-expression=goods_$->{gid % 2 + 1}

实体类

java">package org.example.shardingdm.pojo;import lombok.Data;@Data
public class Goods {private Long gid;private String gname;private Long userId;private String gstatus;
}

Mapper接口

java">package org.example.shardingdm.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.example.shardingdm.pojo.Goods;
import org.springframework.stereotype.Repository;@Repositorypublic interface GoodsMapper extends BaseMapper<Goods> {}

测试类

java">package org.example.shardingdm;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.example.shardingdm.mapper.GoodsMapper;
import org.example.shardingdm.pojo.Goods;
import org.example.shardingdm.utils.SnowflakeUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class SharingJdbcTestApplicationTests {@AutowiredGoodsMapper goodsMapper;@Testvoid addGoods() {Goods good = new Goods();good.setGid(SnowflakeUtil.getId());good.setGname("小米手机");good.setUserId(100L);good.setGstatus("已发布");goodsMapper.insert(good);Goods good2 = new Goods();good.setGid(SnowflakeUtil.getId());good2.setGname("华为手机");good2.setUserId(99L);good2.setGstatus("已发布");goodsMapper.insert(good2);}@Testvoid addGoods2() {for (int i = 0; i < 10; i++){Goods good = new Goods();good.setGid(SnowflakeUtil.getId());good.setGname("小米手机" + i);good.setUserId(100L);good.setGstatus("已发布");goodsMapper.insert(good);}}@Testvoid getGood3(){QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();//此处根据实际gid值修改,还会查询goods表queryWrapper.eq("gid",1354449944638820361l);Goods good = goodsMapper.selectOne(queryWrapper);System.out.println(good.toString());}
}

结果

执行测试用例后,可以看到数据成功插入到了到各个表中

2025-03-26 18:17:05.606  INFO 41512 --- [           main] o.e.s.SharingJdbcTestApplicationTests    : Started SharingJdbcTestApplicationTests in 5.989 seconds (JVM running for 6.883)
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@31c7c281] was not registered for synchronization because synchronization is not active
JDBC Connection [org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection@7cd1ec54] will not be managed by Spring
==>  Preparing: INSERT INTO goods ( gid, gname, user_id, gstatus ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1354519547121405952(Long), 小米手机0(String), 100(Long), 已发布(String)
2025-03-26 18:17:06.631  INFO 41512 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO goods  ( gid,
gname,
user_id,
gstatus )  VALUES  ( ?,
?,
?,
? )
2025-03-26 18:17:06.631  INFO 41512 --- [           main] ShardingSphere-SQL                       : SQLStatement: SQL92InsertStatement(super=InsertStatement(super=AbstractSQLStatement(parameterCount=4, parameterMarkerSegments=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)], commentSegments=[]), table=SimpleTableSegment(tableName=TableNameSegment(startIndex=12, stopIndex=16, identifier=IdentifierValue(value=goods, quoteCharacter=NONE)), owner=Optional.empty, alias=Optional.empty), insertColumns=Optional[InsertColumnsSegment(startIndex=19, stopIndex=50, columns=[ColumnSegment(startIndex=21, stopIndex=23, identifier=IdentifierValue(value=gid, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=26, stopIndex=30, identifier=IdentifierValue(value=gname, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=33, stopIndex=39, identifier=IdentifierValue(value=user_id, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=42, stopIndex=48, identifier=IdentifierValue(value=gstatus, quoteCharacter=NONE), owner=Optional.empty)])], insertSelect=Optional.empty, values=[InsertValuesSegment(startIndex=61, stopIndex=74, values=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)])]))
2025-03-26 18:17:06.631  INFO 41512 --- [           main] ShardingSphere-SQL                       : Actual SQL: g1 ::: INSERT INTO goods_1  ( gid,
gname,
user_id,
gstatus )  VALUES  (?, ?, ?, ?) ::: [1354519547121405952, 小米手机0, 100, 已发布]
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@31c7c281]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@15d0b458] was not registered for synchronization because synchronization is not active
JDBC Connection [org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection@72a0a60d] will not be managed by Spring
==>  Preparing: INSERT INTO goods ( gid, gname, user_id, gstatus ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1354519550837559297(Long), 小米手机1(String), 100(Long), 已发布(String)
2025-03-26 18:17:06.678  INFO 41512 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO goods  ( gid,
gname,
user_id,
gstatus )  VALUES  ( ?,
?,
?,
? )
2025-03-26 18:17:06.678  INFO 41512 --- [           main] ShardingSphere-SQL                       : SQLStatement: SQL92InsertStatement(super=InsertStatement(super=AbstractSQLStatement(parameterCount=4, parameterMarkerSegments=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)], commentSegments=[]), table=SimpleTableSegment(tableName=TableNameSegment(startIndex=12, stopIndex=16, identifier=IdentifierValue(value=goods, quoteCharacter=NONE)), owner=Optional.empty, alias=Optional.empty), insertColumns=Optional[InsertColumnsSegment(startIndex=19, stopIndex=50, columns=[ColumnSegment(startIndex=21, stopIndex=23, identifier=IdentifierValue(value=gid, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=26, stopIndex=30, identifier=IdentifierValue(value=gname, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=33, stopIndex=39, identifier=IdentifierValue(value=user_id, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=42, stopIndex=48, identifier=IdentifierValue(value=gstatus, quoteCharacter=NONE), owner=Optional.empty)])], insertSelect=Optional.empty, values=[InsertValuesSegment(startIndex=61, stopIndex=74, values=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)])]))
2025-03-26 18:17:06.678  INFO 41512 --- [           main] ShardingSphere-SQL                       : Actual SQL: g1 ::: INSERT INTO goods_2  ( gid,
gname,
user_id,
gstatus )  VALUES  (?, ?, ?, ?) ::: [1354519550837559297, 小米手机1, 100, 已发布]
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@15d0b458]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5e3405a1] was not registered for synchronization because synchronization is not active
JDBC Connection [org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection@22bfd4b] will not be managed by Spring
==>  Preparing: INSERT INTO goods ( gid, gname, user_id, gstatus ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1354519550954999810(Long), 小米手机2(String), 100(Long), 已发布(String)
2025-03-26 18:17:06.704  INFO 41512 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO goods  ( gid,
gname,
user_id,
gstatus )  VALUES  ( ?,
?,
?,
? )
2025-03-26 18:17:06.704  INFO 41512 --- [           main] ShardingSphere-SQL                       : SQLStatement: SQL92InsertStatement(super=InsertStatement(super=AbstractSQLStatement(parameterCount=4, parameterMarkerSegments=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)], commentSegments=[]), table=SimpleTableSegment(tableName=TableNameSegment(startIndex=12, stopIndex=16, identifier=IdentifierValue(value=goods, quoteCharacter=NONE)), owner=Optional.empty, alias=Optional.empty), insertColumns=Optional[InsertColumnsSegment(startIndex=19, stopIndex=50, columns=[ColumnSegment(startIndex=21, stopIndex=23, identifier=IdentifierValue(value=gid, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=26, stopIndex=30, identifier=IdentifierValue(value=gname, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=33, stopIndex=39, identifier=IdentifierValue(value=user_id, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=42, stopIndex=48, identifier=IdentifierValue(value=gstatus, quoteCharacter=NONE), owner=Optional.empty)])], insertSelect=Optional.empty, values=[InsertValuesSegment(startIndex=61, stopIndex=74, values=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)])]))
2025-03-26 18:17:06.704  INFO 41512 --- [           main] ShardingSphere-SQL                       : Actual SQL: g1 ::: INSERT INTO goods_1  ( gid,
gname,
user_id,
gstatus )  VALUES  (?, ?, ?, ?) ::: [1354519550954999810, 小米手机2, 100, 已发布]
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5e3405a1]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5fa9247b] was not registered for synchronization because synchronization is not active
JDBC Connection [org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection@21ce3b22] will not be managed by Spring
==>  Preparing: INSERT INTO goods ( gid, gname, user_id, gstatus ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1354519551034691587(Long), 小米手机3(String), 100(Long), 已发布(String)
2025-03-26 18:17:06.723  INFO 41512 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO goods  ( gid,
gname,
user_id,
gstatus )  VALUES  ( ?,
?,
?,
? )
2025-03-26 18:17:06.723  INFO 41512 --- [           main] ShardingSphere-SQL                       : SQLStatement: SQL92InsertStatement(super=InsertStatement(super=AbstractSQLStatement(parameterCount=4, parameterMarkerSegments=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)], commentSegments=[]), table=SimpleTableSegment(tableName=TableNameSegment(startIndex=12, stopIndex=16, identifier=IdentifierValue(value=goods, quoteCharacter=NONE)), owner=Optional.empty, alias=Optional.empty), insertColumns=Optional[InsertColumnsSegment(startIndex=19, stopIndex=50, columns=[ColumnSegment(startIndex=21, stopIndex=23, identifier=IdentifierValue(value=gid, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=26, stopIndex=30, identifier=IdentifierValue(value=gname, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=33, stopIndex=39, identifier=IdentifierValue(value=user_id, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=42, stopIndex=48, identifier=IdentifierValue(value=gstatus, quoteCharacter=NONE), owner=Optional.empty)])], insertSelect=Optional.empty, values=[InsertValuesSegment(startIndex=61, stopIndex=74, values=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)])]))
2025-03-26 18:17:06.723  INFO 41512 --- [           main] ShardingSphere-SQL                       : Actual SQL: g1 ::: INSERT INTO goods_2  ( gid,
gname,
user_id,
gstatus )  VALUES  (?, ?, ?, ?) ::: [1354519551034691587, 小米手机3, 100, 已发布]
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5fa9247b]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@e2f6e13] was not registered for synchronization because synchronization is not active
JDBC Connection [org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection@18b30951] will not be managed by Spring
==>  Preparing: INSERT INTO goods ( gid, gname, user_id, gstatus ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1354519551152132100(Long), 小米手机4(String), 100(Long), 已发布(String)
2025-03-26 18:17:06.751  INFO 41512 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO goods  ( gid,
gname,
user_id,
gstatus )  VALUES  ( ?,
?,
?,
? )
2025-03-26 18:17:06.751  INFO 41512 --- [           main] ShardingSphere-SQL                       : SQLStatement: SQL92InsertStatement(super=InsertStatement(super=AbstractSQLStatement(parameterCount=4, parameterMarkerSegments=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)], commentSegments=[]), table=SimpleTableSegment(tableName=TableNameSegment(startIndex=12, stopIndex=16, identifier=IdentifierValue(value=goods, quoteCharacter=NONE)), owner=Optional.empty, alias=Optional.empty), insertColumns=Optional[InsertColumnsSegment(startIndex=19, stopIndex=50, columns=[ColumnSegment(startIndex=21, stopIndex=23, identifier=IdentifierValue(value=gid, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=26, stopIndex=30, identifier=IdentifierValue(value=gname, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=33, stopIndex=39, identifier=IdentifierValue(value=user_id, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=42, stopIndex=48, identifier=IdentifierValue(value=gstatus, quoteCharacter=NONE), owner=Optional.empty)])], insertSelect=Optional.empty, values=[InsertValuesSegment(startIndex=61, stopIndex=74, values=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)])]))
2025-03-26 18:17:06.751  INFO 41512 --- [           main] ShardingSphere-SQL                       : Actual SQL: g1 ::: INSERT INTO goods_1  ( gid,
gname,
user_id,
gstatus )  VALUES  (?, ?, ?, ?) ::: [1354519551152132100, 小米手机4, 100, 已发布]
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@e2f6e13]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2697c156] was not registered for synchronization because synchronization is not active
JDBC Connection [org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection@1a88d194] will not be managed by Spring
==>  Preparing: INSERT INTO goods ( gid, gname, user_id, gstatus ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1354519551223435269(Long), 小米手机5(String), 100(Long), 已发布(String)
2025-03-26 18:17:06.768  INFO 41512 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO goods  ( gid,
gname,
user_id,
gstatus )  VALUES  ( ?,
?,
?,
? )
2025-03-26 18:17:06.769  INFO 41512 --- [           main] ShardingSphere-SQL                       : SQLStatement: SQL92InsertStatement(super=InsertStatement(super=AbstractSQLStatement(parameterCount=4, parameterMarkerSegments=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)], commentSegments=[]), table=SimpleTableSegment(tableName=TableNameSegment(startIndex=12, stopIndex=16, identifier=IdentifierValue(value=goods, quoteCharacter=NONE)), owner=Optional.empty, alias=Optional.empty), insertColumns=Optional[InsertColumnsSegment(startIndex=19, stopIndex=50, columns=[ColumnSegment(startIndex=21, stopIndex=23, identifier=IdentifierValue(value=gid, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=26, stopIndex=30, identifier=IdentifierValue(value=gname, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=33, stopIndex=39, identifier=IdentifierValue(value=user_id, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=42, stopIndex=48, identifier=IdentifierValue(value=gstatus, quoteCharacter=NONE), owner=Optional.empty)])], insertSelect=Optional.empty, values=[InsertValuesSegment(startIndex=61, stopIndex=74, values=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)])]))
2025-03-26 18:17:06.769  INFO 41512 --- [           main] ShardingSphere-SQL                       : Actual SQL: g1 ::: INSERT INTO goods_2  ( gid,
gname,
user_id,
gstatus )  VALUES  (?, ?, ?, ?) ::: [1354519551223435269, 小米手机5, 100, 已发布]
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2697c156]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@fe13916] was not registered for synchronization because synchronization is not active
JDBC Connection [org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection@5ea0a7a9] will not be managed by Spring
==>  Preparing: INSERT INTO goods ( gid, gname, user_id, gstatus ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1354519551311515654(Long), 小米手机6(String), 100(Long), 已发布(String)
2025-03-26 18:17:06.790  INFO 41512 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO goods  ( gid,
gname,
user_id,
gstatus )  VALUES  ( ?,
?,
?,
? )
2025-03-26 18:17:06.790  INFO 41512 --- [           main] ShardingSphere-SQL                       : SQLStatement: SQL92InsertStatement(super=InsertStatement(super=AbstractSQLStatement(parameterCount=4, parameterMarkerSegments=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)], commentSegments=[]), table=SimpleTableSegment(tableName=TableNameSegment(startIndex=12, stopIndex=16, identifier=IdentifierValue(value=goods, quoteCharacter=NONE)), owner=Optional.empty, alias=Optional.empty), insertColumns=Optional[InsertColumnsSegment(startIndex=19, stopIndex=50, columns=[ColumnSegment(startIndex=21, stopIndex=23, identifier=IdentifierValue(value=gid, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=26, stopIndex=30, identifier=IdentifierValue(value=gname, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=33, stopIndex=39, identifier=IdentifierValue(value=user_id, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=42, stopIndex=48, identifier=IdentifierValue(value=gstatus, quoteCharacter=NONE), owner=Optional.empty)])], insertSelect=Optional.empty, values=[InsertValuesSegment(startIndex=61, stopIndex=74, values=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)])]))
2025-03-26 18:17:06.790  INFO 41512 --- [           main] ShardingSphere-SQL                       : Actual SQL: g1 ::: INSERT INTO goods_1  ( gid,
gname,
user_id,
gstatus )  VALUES  (?, ?, ?, ?) ::: [1354519551311515654, 小米手机6, 100, 已发布]
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@fe13916]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@25e353dc] was not registered for synchronization because synchronization is not active
JDBC Connection [org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection@234ce7ff] will not be managed by Spring
==>  Preparing: INSERT INTO goods ( gid, gname, user_id, gstatus ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1354519551370235911(Long), 小米手机7(String), 100(Long), 已发布(String)
2025-03-26 18:17:06.804  INFO 41512 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO goods  ( gid,
gname,
user_id,
gstatus )  VALUES  ( ?,
?,
?,
? )
2025-03-26 18:17:06.804  INFO 41512 --- [           main] ShardingSphere-SQL                       : SQLStatement: SQL92InsertStatement(super=InsertStatement(super=AbstractSQLStatement(parameterCount=4, parameterMarkerSegments=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)], commentSegments=[]), table=SimpleTableSegment(tableName=TableNameSegment(startIndex=12, stopIndex=16, identifier=IdentifierValue(value=goods, quoteCharacter=NONE)), owner=Optional.empty, alias=Optional.empty), insertColumns=Optional[InsertColumnsSegment(startIndex=19, stopIndex=50, columns=[ColumnSegment(startIndex=21, stopIndex=23, identifier=IdentifierValue(value=gid, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=26, stopIndex=30, identifier=IdentifierValue(value=gname, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=33, stopIndex=39, identifier=IdentifierValue(value=user_id, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=42, stopIndex=48, identifier=IdentifierValue(value=gstatus, quoteCharacter=NONE), owner=Optional.empty)])], insertSelect=Optional.empty, values=[InsertValuesSegment(startIndex=61, stopIndex=74, values=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)])]))
2025-03-26 18:17:06.804  INFO 41512 --- [           main] ShardingSphere-SQL                       : Actual SQL: g1 ::: INSERT INTO goods_2  ( gid,
gname,
user_id,
gstatus )  VALUES  (?, ?, ?, ?) ::: [1354519551370235911, 小米手机7, 100, 已发布]
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@25e353dc]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@470f0637] was not registered for synchronization because synchronization is not active
JDBC Connection [org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection@6b278b17] will not be managed by Spring
==>  Preparing: INSERT INTO goods ( gid, gname, user_id, gstatus ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1354519551437344776(Long), 小米手机8(String), 100(Long), 已发布(String)
2025-03-26 18:17:06.819  INFO 41512 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO goods  ( gid,
gname,
user_id,
gstatus )  VALUES  ( ?,
?,
?,
? )
2025-03-26 18:17:06.819  INFO 41512 --- [           main] ShardingSphere-SQL                       : SQLStatement: SQL92InsertStatement(super=InsertStatement(super=AbstractSQLStatement(parameterCount=4, parameterMarkerSegments=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)], commentSegments=[]), table=SimpleTableSegment(tableName=TableNameSegment(startIndex=12, stopIndex=16, identifier=IdentifierValue(value=goods, quoteCharacter=NONE)), owner=Optional.empty, alias=Optional.empty), insertColumns=Optional[InsertColumnsSegment(startIndex=19, stopIndex=50, columns=[ColumnSegment(startIndex=21, stopIndex=23, identifier=IdentifierValue(value=gid, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=26, stopIndex=30, identifier=IdentifierValue(value=gname, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=33, stopIndex=39, identifier=IdentifierValue(value=user_id, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=42, stopIndex=48, identifier=IdentifierValue(value=gstatus, quoteCharacter=NONE), owner=Optional.empty)])], insertSelect=Optional.empty, values=[InsertValuesSegment(startIndex=61, stopIndex=74, values=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)])]))
2025-03-26 18:17:06.820  INFO 41512 --- [           main] ShardingSphere-SQL                       : Actual SQL: g1 ::: INSERT INTO goods_1  ( gid,
gname,
user_id,
gstatus )  VALUES  (?, ?, ?, ?) ::: [1354519551437344776, 小米手机8, 100, 已发布]
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@470f0637]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4203529f] was not registered for synchronization because synchronization is not active
JDBC Connection [org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection@7d82ca56] will not be managed by Spring
==>  Preparing: INSERT INTO goods ( gid, gname, user_id, gstatus ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1354519551512842249(Long), 小米手机9(String), 100(Long), 已发布(String)
2025-03-26 18:17:06.836  INFO 41512 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO goods  ( gid,
gname,
user_id,
gstatus )  VALUES  ( ?,
?,
?,
? )
2025-03-26 18:17:06.836  INFO 41512 --- [           main] ShardingSphere-SQL                       : SQLStatement: SQL92InsertStatement(super=InsertStatement(super=AbstractSQLStatement(parameterCount=4, parameterMarkerSegments=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)], commentSegments=[]), table=SimpleTableSegment(tableName=TableNameSegment(startIndex=12, stopIndex=16, identifier=IdentifierValue(value=goods, quoteCharacter=NONE)), owner=Optional.empty, alias=Optional.empty), insertColumns=Optional[InsertColumnsSegment(startIndex=19, stopIndex=50, columns=[ColumnSegment(startIndex=21, stopIndex=23, identifier=IdentifierValue(value=gid, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=26, stopIndex=30, identifier=IdentifierValue(value=gname, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=33, stopIndex=39, identifier=IdentifierValue(value=user_id, quoteCharacter=NONE), owner=Optional.empty), ColumnSegment(startIndex=42, stopIndex=48, identifier=IdentifierValue(value=gstatus, quoteCharacter=NONE), owner=Optional.empty)])], insertSelect=Optional.empty, values=[InsertValuesSegment(startIndex=61, stopIndex=74, values=[ParameterMarkerExpressionSegment(startIndex=63, stopIndex=63, parameterMarkerIndex=0, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=66, stopIndex=66, parameterMarkerIndex=1, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=69, stopIndex=69, parameterMarkerIndex=2, parameterMarkerType=QUESTION, alias=Optional.empty), ParameterMarkerExpressionSegment(startIndex=72, stopIndex=72, parameterMarkerIndex=3, parameterMarkerType=QUESTION, alias=Optional.empty)])]))
2025-03-26 18:17:06.836  INFO 41512 --- [           main] ShardingSphere-SQL                       : Actual SQL: g1 ::: INSERT INTO goods_2  ( gid,
gname,
user_id,
gstatus )  VALUES  (?, ?, ?, ?) ::: [1354519551512842249, 小米手机9, 100, 已发布]
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4203529f]
2025-03-26 18:17:06.873  INFO 41512 --- [ionShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closing ...
2025-03-26 18:17:06.875  INFO 41512 --- [ionShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
2025-03-26 18:17:06.876  INFO 41512 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2025-03-26 18:17:06.877  INFO 41512 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.

http://www.ppmy.cn/news/1583426.html

相关文章

JPA、Hibernate、 Spring Data JPA 以及Mybatis的关系(Java)

一、JPA是啥&#xff1f; 本质&#xff1a;是 Java EE 的 ORM 规范&#xff08;定义接口和注解&#xff0c;如 Entity, Table&#xff09;&#xff0c;不提供具体实现。 &#xff08;在我看来他就是个标准&#xff0c;就是你怎么写都得按人家标准来&#xff0c;不然就不行&…

蓝桥杯—最少操作数

一.题目 分析:每次可以进行三次操作&#xff0c;求在n步操作后可以达到目标数的最小n&#xff0c;和最短路径问题相似&#xff0c;分层遍历加记忆化搜索防止时间复杂度过高&#xff0c;还需要减枝操作 import java.util.HashSet; import java.util.LinkedList; import java.ut…

WebSocket 传输大量数据好不好?稳定不稳定

使用 WebSocket 传输大量数据 是可行的&#xff0c;但在实际应用中需要注意一些限制和优化策略。以下是关于 WebSocket 传输大量数据的详细分析&#xff1a; 1. WebSocket 传输大量数据的可行性 优点 实时性&#xff1a;WebSocket 是全双工通信协议&#xff0c;适合实时传输数…

抱法处势,用术御变-服务器漏洞-golang 语言漏洞

漏洞编号漏洞公告&#xff08;公告内会包含同一软件多个漏洞 CVE&#xff09;CVE-2022-27191Golong golang.org/x/crypto/ssh拒绝服务漏洞&#xff08;CVE-2022-27191&#xff09;CVE-2022-2989Podman 安全漏洞&#xff08;CVE-2022-2989&#xff09;CVE-2022-3064Go-Yaml 安全…

springboot body 转对象强验证属性多余属性抛错误

在Spring Boot中&#xff0c;当使用RequestBody注解来接收HTTP请求中的JSON数据并将其转换为Java对象时&#xff0c;Spring默认会忽略额外的属性。这意味着如果发送的JSON包含一些目标对象中没有定义的属性&#xff0c;Spring不会报错&#xff0c;这些额外的属性会被简单地忽略…

JavaScript基础巩固之小游戏练习

文章目录 一、前言二、练习 一、前言 加强巩固JavaScript基础语法&#xff0c;现记录一下JavaScript的练习过程。 需要的模块&#xff1a;npm install readline-sync 配置&#xff1a;node.js 二、练习 ▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰猜拳游戏&#xff08;简易版&#xff09;…

1.基于TCP的简单套接字服务器实现

目录 1. TCP通信流程 2. 服务器端的通信流程 2.1 创建用于监听的套接字 2.2 绑定本地IP地址和端口 2.3 设置监听 2.4 等待接受客户端的连接请求 2.5 与客户端进行通信 2.6 客户端连接服务器 3.代码实现 client.cpp server.cpp 运行方式 在本文中&#xff0c;我们将…

【开源宝藏】30天学会CSS - DAY9 第九课 牛顿摆动量守恒动画

以下是一份逐步拆解教程&#xff0c;带你从零理解并复刻这个牛顿摆&#xff08;Pendulum of Newton&#xff09;动画效果&#xff0c;这是一个经典的物理演示模型&#xff0c;现在通过纯 HTML 和 CSS 实现出来&#xff0c;视觉效果炫酷、结构简洁。 &#x1f3af; 动画效果说明…