【快速使用ShardingJDBC的哈希分片策略进行分库分表】
文章目录
- 🔊博主介绍
- 🥤本文内容
- 🍊1.引入maven依赖
- 🍊2.启动类上添加注解@MapperScan
- 🍊3.添加application.properties配置
- 🍊4.普通的自定义实体类
- 🍊5.写个测试类验证一下
- 🍊6.控制台打印的日志
- 🍊7.观察一下数据库的数据
- 🍊8.maven的setting文件
- 📢文章总结
- 📥博主目标
🔊博主介绍
🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文专业写手、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。🌎跑过十五公里、🚀徒步爬过衡山、🔥有过三个月减肥20斤的经历、是个喜欢躺平的狠人。
📕拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、Spring MVC、SpringCould、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RockerMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、Apache ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、Kubernetes容器编排等。
📙有过从0到1的项目高并发项目开发与管理经验,对JVM调优、MySQL调优、Redis调优 、ElasticSearch调优、消息中间件调优、系统架构调优都有着比较全面的实战经验。
📘有过云端搭建服务器环境,自动化部署CI/CD,弹性伸缩扩容服务器(最高200台),了解过秒级部署(阿里云的ACK和华为云的云容器引擎CCE)流程,能独立开发和部署整个后端服务,有过分库分表的实战经验。
🎥经过多年在CSDN创作上千篇文章的经验积累,我已经拥有了不错的写作技巧,与清华大学出版社签下了四本书籍的合约,并将陆续在明年出版。这些书籍包括了基础篇、进阶篇、架构篇的📌《Java项目实战—深入理解大型互联网企业通用技术》📌,以及📚《解密程序员的思维密码–沟通、演讲、思考的实践》📚。具体出版计划会根据实际情况进行调整,希望各位读者朋能够多多支持!
文章目录
- 🔊博主介绍
- 🥤本文内容
- 🍊1.引入maven依赖
- 🍊2.启动类上添加注解@MapperScan
- 🍊3.添加application.properties配置
- 🍊4.普通的自定义实体类
- 🍊5.写个测试类验证一下
- 🍊6.控制台打印的日志
- 🍊7.观察一下数据库的数据
- 🍊8.maven的setting文件
- 📢文章总结
- 📥博主目标
📚前面提到过【快速使用ShardingJDBC的哈希分片策略进行分表】,接下来就需要对其进行分库了。
🌾阅读前,快速浏览目录和章节概览可帮助了解文章结构、内容和作者的重点。了解自己希望从中获得什么样的知识或经验是非常重要的。建议在阅读时做笔记、思考问题、自我提问,以加深理解和吸收知识。
💡在这个美好的时刻,本人不再啰嗦废话,现在毫不拖延地进入文章所要讨论的主题。接下来,我将为大家呈现正文内容。
🥤本文内容
🍊1.引入maven依赖
在pom.xml中添加依赖
<!-- Maven 构建配置 -->
<build><!-- 插件列表 --><plugins><!-- Maven 编译插件 --><plugin><!-- 插件所在 groupId --><groupId>org.apache.maven.plugins</groupId><!-- 插件所在 artifactId --><artifactId>maven-compiler-plugin</artifactId><!-- 插件配置 --><configuration><!-- 源码编译版本 --><source>8</source><!-- 目标编译版本 --><target>8</target></configuration></plugin></plugins>
</build><!-- Maven 依赖管理配置 -->
<dependencyManagement><!-- 依赖列表 --><dependencies><!-- Spring Boot 依赖管理 --><dependency><!-- 依赖所在 groupId --><groupId>org.springframework.boot</groupId><!-- 依赖所在 artifactId --><artifactId>spring-boot-dependencies</artifactId><!-- 依赖版本 --><version>2.3.1.RELEASE</version><!-- 依赖类型 --><type>pom</type><!-- 依赖范围 --><scope>import</scope></dependency></dependencies>
</dependencyManagement><!-- 项目依赖列表 -->
<dependencies><!-- 分库分表组件 Sharding JDBC --><dependency><!-- 依赖所在 groupId --><groupId>org.apache.shardingsphere</groupId><!-- 依赖所在 artifactId --><artifactId>sharding-jdbc-spring-boot-starter</artifactId><!-- 依赖版本 --><version>4.1.1</version></dependency><!-- Spring Boot 核心依赖 --><dependency><!-- 依赖所在 groupId --><groupId>org.springframework.boot</groupId><!-- 依赖所在 artifactId --><artifactId>spring-boot-starter</artifactId></dependency><!-- Spring Boot 测试依赖 --><dependency><!-- 依赖所在 groupId --><groupId>org.springframework.boot</groupId><!-- 依赖所在 artifactId --><artifactId>spring-boot-starter-test</artifactId></dependency><!-- 数据源连接池组件 Druid --><dependency><!-- 依赖所在 groupId --><groupId>com.alibaba</groupId><!-- 依赖所在 artifactId --><artifactId>druid</artifactId><!-- 依赖版本 --><version>1.1.22</version></dependency><!-- MySQL 驱动依赖 --><dependency><!-- 依赖所在 groupId --><groupId>mysql</groupId><!-- 依赖所在 artifactId --><artifactId>mysql-connector-java</artifactId></dependency><!-- MyBatis-Plus 集成依赖 --><dependency><!-- 依赖所在 groupId --><groupId>com.baomidou</groupId><!-- 依赖所在 artifactId --><artifactId>mybatis-plus-boot-starter</artifactId><!-- 依赖版本 --><version>3.0.5</version></dependency>
</dependencies>
🍊2.启动类上添加注解@MapperScan
扫描对应的mapper路径
@MapperScan("com.example.shardingDemo.mapper")
@SpringBootApplication
public class ShardingJDBCApplication {public static void main(String[] args) {SpringApplication.run(ShardingJDBCApplication.class,args);}
}
🍊3.添加application.properties配置
# 哈希分片策略分库分表
# 设置数据源名称为 m1
spring.shardingsphere.datasource.names=m1,m2
# 设置数据源类型为 Druid 数据源
spring.shardingsphere.datasource.m1.type=com.alibaba.druid.pool.DruidDataSource
# 设置数据源驱动为 MySQL 的 JDBC 驱动
spring.shardingsphere.datasource.m1.driver-class-name=com.mysql.cj.jdbc.Driver
# 设置数据源连接 URL,连接本地 MySQL 数据库的 userdb 库
spring.shardingsphere.datasource.m1.url=jdbc:mysql://192.168.122.128:3306/masterdemo?serverTimezone=GMT%2B8
# 设置连接数据库所需的用户名和密码
spring.shardingsphere.datasource.m1.username=root
spring.shardingsphere.datasource.m1.password=bfb8f36cc2616995
# 设置数据源名称为 m2
spring.shardingsphere.datasource.m2.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m2.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m2.url=jdbc:mysql://192.168.122.128:3306/masterdemo2?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m2.username=root
spring.shardingsphere.datasource.m2.password=bfb8f36cc2616995
# 设置分片表的实际数据节点,对应两个数据表:m1.t_user_1 和 m1.t_user_2
spring.shardingsphere.sharding.tables.user.actual-data-nodes=m$->{1..2}.t_user_$->{1..2}
# 设置分片键为 user_id
spring.shardingsphere.sharding.tables.user.key-generator.column=user_id
# 设置分布式 ID 生成算法为 SNOWFLAKE 算法,worker ID 为 1
spring.shardingsphere.sharding.tables.user.key-generator.type=SNOWFLAKE
# Spring Boot 应用配置项:ShardingSphere 分库分表配置之课程表的主键生成策略配置项,属性名: worker.id,属性值: 1 (表示该应用程序所使用的 Snowflake 算法的工作节点 ID 为 1)
spring.shardingsphere.sharding.tables.user.key-generator.props.worker.id=1
# 设置分表算法为 inline 分片算法,分片列为 user_id,分片规则为课程编号为奇数的记录在 m1.t_user_1 表中,课程编号为偶数的记录在 m1.t_user_2 表中
spring.shardingsphere.sharding.tables.user.table-strategy.inline.sharding-column=user_id
# table-strategy.inline:表示使用内联表达式的分片策略。lgorithm-expression:表示表名生成算法表达式。t_user_$->{user_id%2+1}:表示生成的表名,即t_user_后面接下标为(user_id%2+1)的表。
# user_id是表中的一个自增主键,%2表示对2取余数,+1表示取余结果加1,即user_id值为偶数进入到t_user_1表,user_id值为奇数进入到t_user_2表。
spring.shardingsphere.sharding.tables.user.table-strategy.inline.algorithm-expression=t_user_$->{user_id%2+1}
# 使用 Spring 和 ShardingSphere 进行数据库分片,将 user 表根据 user_id 字段进行分片,数据库策略为 inline,即使用算法表达式进行分片
spring.shardingsphere.sharding.tables.user.database-strategy.inline.sharding-column=user_id
# 用户 ID 对2取余再加1,结果为1或2,根据结果选择数据库 m1 或 m2 进行存储
spring.shardingsphere.sharding.tables.user.database-strategy.inline.algorithm-expression=m$->{user_id%2+1}
# 设置 SQL 显示开启,方便调试
spring.shardingsphere.props.sql.show=true
# 允许覆盖 Bean 定义,用于调试时快速更新配置
spring.main.allow-bean-definition-overriding=true
🍊4.普通的自定义实体类
import lombok.Data;
@Data
public class User {private int userId;private String userName;private String status;private int age;
}
🍊5.写个测试类验证一下
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.shardingDemo.entity.Course;
import com.example.shardingDemo.entity.Dict;
import com.example.shardingDemo.entity.User;
import com.example.shardingDemo.mapper.CourseMapper;
import com.example.shardingDemo.mapper.DictMapper;
import com.example.shardingDemo.mapper.UserMapper;
import org.apache.shardingsphere.api.hint.HintManager;
import org.junit.Test;
import org.junit.jupiter.api.Tags;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.util.List;@RunWith(SpringRunner.class)
@SpringBootTest
public class ShardingJDBCTest {@ResourceCourseMapper courseMapper;@ResourceDictMapper dictMapper;@ResourceUserMapper userMapper;@Testpublic void addUser(){for(int i = 0 ; i < 10 ; i ++){User user = new User();user.setUserId(i);user.setUserName("张三"+i);user.setAge(i);user.setStatus("1");userMapper.insert(user);}}
}
🍊6.控制台打印的日志
. ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v2.3.1.RELEASE)2023-11-08 19:05:14.284 INFO 20848 --- [ main] c.e.a.ShardingJDBCTest : Starting ShardingJDBCTest on WIN-20230222ULN with PID 20848 (started by Administrator in E:\WarkSpace\基础篇书籍\第8章\apache-shardingsphere-demo)
2023-11-08 19:05:14.285 INFO 20848 --- [ main] c.e.a.ShardingJDBCTest : No active profile set, falling back to default profiles: default
2023-11-08 19:05:14.668 INFO 20848 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'stringToNoneShardingStrategyConfigurationConverter' of type [org.apache.shardingsphere.spring.boot.converter.StringToNoneShardingStrategyConfigurationConverter] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-11-08 19:05:14.675 INFO 20848 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'spring.shardingsphere.sharding-org.apache.shardingsphere.shardingjdbc.spring.boot.sharding.SpringBootShardingRuleConfigurationProperties' of type [org.apache.shardingsphere.shardingjdbc.spring.boot.sharding.SpringBootShardingRuleConfigurationProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-11-08 19:05:14.678 INFO 20848 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'spring.shardingsphere.masterslave-org.apache.shardingsphere.shardingjdbc.spring.boot.masterslave.SpringBootMasterSlaveRuleConfigurationProperties' of type [org.apache.shardingsphere.shardingjdbc.spring.boot.masterslave.SpringBootMasterSlaveRuleConfigurationProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-11-08 19:05:14.680 INFO 20848 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'spring.shardingsphere.encrypt-org.apache.shardingsphere.shardingjdbc.spring.boot.encrypt.SpringBootEncryptRuleConfigurationProperties' of type [org.apache.shardingsphere.shardingjdbc.spring.boot.encrypt.SpringBootEncryptRuleConfigurationProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-11-08 19:05:14.682 INFO 20848 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'spring.shardingsphere.shadow-org.apache.shardingsphere.shardingjdbc.spring.boot.shadow.SpringBootShadowRuleConfigurationProperties' of type [org.apache.shardingsphere.shardingjdbc.spring.boot.shadow.SpringBootShadowRuleConfigurationProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-11-08 19:05:14.685 INFO 20848 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'spring.shardingsphere-org.apache.shardingsphere.shardingjdbc.spring.boot.common.SpringBootPropertiesConfigurationProperties' of type [org.apache.shardingsphere.shardingjdbc.spring.boot.common.SpringBootPropertiesConfigurationProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-11-08 19:05:14.811 INFO 20848 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.apache.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration' of type [org.apache.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration$$EnhancerBySpringCGLIB$$bfc54c27] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-11-08 19:05:14.990 INFO 20848 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
2023-11-08 19:05:15.410 INFO 20848 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-2} inited
2023-11-08 19:05:15.462 INFO 20848 --- [ main] o.a.s.core.log.ConfigurationLogger : ShardingRuleConfiguration:
tables:user:actualDataNodes: m$->{1..2}.t_user_$->{1..2}databaseStrategy:inline:algorithmExpression: m$->{user_id%2+1}shardingColumn: user_idkeyGenerator:column: user_idprops:worker.id: '1'type: SNOWFLAKElogicTable: usertableStrategy:inline:algorithmExpression: t_user_$->{user_id%2+1}shardingColumn: user_id2023-11-08 19:05:15.462 INFO 20848 --- [ main] o.a.s.core.log.ConfigurationLogger : Properties:
sql.show: 'true'2023-11-08 19:05:15.471 INFO 20848 --- [ main] ShardingSphere-metadata : Loading 1 logic tables' meta data.
2023-11-08 19:05:15.520 INFO 20848 --- [ main] ShardingSphere-metadata : Meta data load finished, cost 58 milliseconds._ _ |_ _ _|_. ___ _ | _
| | |\/|_)(_| | |_\ |_)||_|_\ / | 3.0.5
2023-11-08 19:05:15.618 WARN 20848 --- [ main] c.b.m.core.toolkit.TableInfoHelper : Warn: Could not find @TableId in Class: com.example.apacheshardingspheredemo.entity.Course.
2023-11-08 19:05:15.687 WARN 20848 --- [ main] c.b.m.core.toolkit.TableInfoHelper : Warn: Could not find @TableId in Class: com.example.apacheshardingspheredemo.entity.Dict.
2023-11-08 19:05:15.699 WARN 20848 --- [ main] c.b.m.core.toolkit.TableInfoHelper : Warn: Could not find @TableId in Class: com.example.apacheshardingspheredemo.entity.User.
2023-11-08 19:05:15.786 INFO 20848 --- [ main] c.e.a.ShardingJDBCTest : Started ShardingJDBCTest in 1.657 seconds (JVM running for 2.159)
2023-11-08 19:05:16.150 INFO 20848 --- [ main] ShardingSphere-SQL : Logic SQL: INSERT INTO user ( user_id,
user_name,
status,
age ) VALUES ( ?,
?,
?,
? )
2023-11-08 19:05:16.150 INFO 20848 --- [ main] ShardingSphere-SQL : SQLStatement: InsertStatementContext(super=CommonSQLStatementContext(sqlStatement=org.apache.shardingsphere.sql.parser.sql.statement.dml.InsertStatement@538aa83f, tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@63e70bf9), tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@63e70bf9, columnNames=[user_id, user_name, status, age], insertValueContexts=[InsertValueContext(parametersCount=4, valueExpressions=[ParameterMarkerExpressionSegment(startIndex=65, stopIndex=65, parameterMarkerIndex=0), ParameterMarkerExpressionSegment(startIndex=68, stopIndex=68, parameterMarkerIndex=1), ParameterMarkerExpressionSegment(startIndex=71, stopIndex=71, parameterMarkerIndex=2), ParameterMarkerExpressionSegment(startIndex=74, stopIndex=74, parameterMarkerIndex=3)], parameters=[0, 张三0, 1, 0])], generatedKeyContext=Optional[GeneratedKeyContext(columnName=user_id, generated=false, generatedValues=[0])])
2023-11-08 19:05:16.150 INFO 20848 --- [ main] ShardingSphere-SQL : Actual SQL: m1 ::: INSERT INTO t_user_1 ( user_id,
user_name,
status,
age ) VALUES (?, ?, ?, ?) ::: [0, 张三0, 1, 0]
2023-11-08 19:05:16.171 INFO 20848 --- [ main] ShardingSphere-SQL : Logic SQL: INSERT INTO user ( user_id,
user_name,
status,
age ) VALUES ( ?,
?,
?,
? )
2023-11-08 19:05:16.171 INFO 20848 --- [ main] ShardingSphere-SQL : SQLStatement: InsertStatementContext(super=CommonSQLStatementContext(sqlStatement=org.apache.shardingsphere.sql.parser.sql.statement.dml.InsertStatement@538aa83f, tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@67dc6b48), tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@67dc6b48, columnNames=[user_id, user_name, status, age], insertValueContexts=[InsertValueContext(parametersCount=4, valueExpressions=[ParameterMarkerExpressionSegment(startIndex=65, stopIndex=65, parameterMarkerIndex=0), ParameterMarkerExpressionSegment(startIndex=68, stopIndex=68, parameterMarkerIndex=1), ParameterMarkerExpressionSegment(startIndex=71, stopIndex=71, parameterMarkerIndex=2), ParameterMarkerExpressionSegment(startIndex=74, stopIndex=74, parameterMarkerIndex=3)], parameters=[1, 张三1, 1, 1])], generatedKeyContext=Optional[GeneratedKeyContext(columnName=user_id, generated=false, generatedValues=[1])])
2023-11-08 19:05:16.171 INFO 20848 --- [ main] ShardingSphere-SQL : Actual SQL: m2 ::: INSERT INTO t_user_2 ( user_id,
user_name,
status,
age ) VALUES (?, ?, ?, ?) ::: [1, 张三1, 1, 1]
2023-11-08 19:05:16.174 INFO 20848 --- [ main] ShardingSphere-SQL : Logic SQL: INSERT INTO user ( user_id,
user_name,
status,
age ) VALUES ( ?,
?,
?,
? )
2023-11-08 19:05:16.174 INFO 20848 --- [ main] ShardingSphere-SQL : SQLStatement: InsertStatementContext(super=CommonSQLStatementContext(sqlStatement=org.apache.shardingsphere.sql.parser.sql.statement.dml.InsertStatement@538aa83f, tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@11cadb32), tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@11cadb32, columnNames=[user_id, user_name, status, age], insertValueContexts=[InsertValueContext(parametersCount=4, valueExpressions=[ParameterMarkerExpressionSegment(startIndex=65, stopIndex=65, parameterMarkerIndex=0), ParameterMarkerExpressionSegment(startIndex=68, stopIndex=68, parameterMarkerIndex=1), ParameterMarkerExpressionSegment(startIndex=71, stopIndex=71, parameterMarkerIndex=2), ParameterMarkerExpressionSegment(startIndex=74, stopIndex=74, parameterMarkerIndex=3)], parameters=[2, 张三2, 1, 2])], generatedKeyContext=Optional[GeneratedKeyContext(columnName=user_id, generated=false, generatedValues=[2])])
2023-11-08 19:05:16.174 INFO 20848 --- [ main] ShardingSphere-SQL : Actual SQL: m1 ::: INSERT INTO t_user_1 ( user_id,
user_name,
status,
age ) VALUES (?, ?, ?, ?) ::: [2, 张三2, 1, 2]
2023-11-08 19:05:16.177 INFO 20848 --- [ main] ShardingSphere-SQL : Logic SQL: INSERT INTO user ( user_id,
user_name,
status,
age ) VALUES ( ?,
?,
?,
? )
2023-11-08 19:05:16.178 INFO 20848 --- [ main] ShardingSphere-SQL : SQLStatement: InsertStatementContext(super=CommonSQLStatementContext(sqlStatement=org.apache.shardingsphere.sql.parser.sql.statement.dml.InsertStatement@538aa83f, tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@704c3bdf), tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@704c3bdf, columnNames=[user_id, user_name, status, age], insertValueContexts=[InsertValueContext(parametersCount=4, valueExpressions=[ParameterMarkerExpressionSegment(startIndex=65, stopIndex=65, parameterMarkerIndex=0), ParameterMarkerExpressionSegment(startIndex=68, stopIndex=68, parameterMarkerIndex=1), ParameterMarkerExpressionSegment(startIndex=71, stopIndex=71, parameterMarkerIndex=2), ParameterMarkerExpressionSegment(startIndex=74, stopIndex=74, parameterMarkerIndex=3)], parameters=[3, 张三3, 1, 3])], generatedKeyContext=Optional[GeneratedKeyContext(columnName=user_id, generated=false, generatedValues=[3])])
2023-11-08 19:05:16.178 INFO 20848 --- [ main] ShardingSphere-SQL : Actual SQL: m2 ::: INSERT INTO t_user_2 ( user_id,
user_name,
status,
age ) VALUES (?, ?, ?, ?) ::: [3, 张三3, 1, 3]
2023-11-08 19:05:16.181 INFO 20848 --- [ main] ShardingSphere-SQL : Logic SQL: INSERT INTO user ( user_id,
user_name,
status,
age ) VALUES ( ?,
?,
?,
? )
2023-11-08 19:05:16.181 INFO 20848 --- [ main] ShardingSphere-SQL : SQLStatement: InsertStatementContext(super=CommonSQLStatementContext(sqlStatement=org.apache.shardingsphere.sql.parser.sql.statement.dml.InsertStatement@538aa83f, tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@605eb072), tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@605eb072, columnNames=[user_id, user_name, status, age], insertValueContexts=[InsertValueContext(parametersCount=4, valueExpressions=[ParameterMarkerExpressionSegment(startIndex=65, stopIndex=65, parameterMarkerIndex=0), ParameterMarkerExpressionSegment(startIndex=68, stopIndex=68, parameterMarkerIndex=1), ParameterMarkerExpressionSegment(startIndex=71, stopIndex=71, parameterMarkerIndex=2), ParameterMarkerExpressionSegment(startIndex=74, stopIndex=74, parameterMarkerIndex=3)], parameters=[4, 张三4, 1, 4])], generatedKeyContext=Optional[GeneratedKeyContext(columnName=user_id, generated=false, generatedValues=[4])])
2023-11-08 19:05:16.181 INFO 20848 --- [ main] ShardingSphere-SQL : Actual SQL: m1 ::: INSERT INTO t_user_1 ( user_id,
user_name,
status,
age ) VALUES (?, ?, ?, ?) ::: [4, 张三4, 1, 4]
2023-11-08 19:05:16.184 INFO 20848 --- [ main] ShardingSphere-SQL : Logic SQL: INSERT INTO user ( user_id,
user_name,
status,
age ) VALUES ( ?,
?,
?,
? )
2023-11-08 19:05:16.184 INFO 20848 --- [ main] ShardingSphere-SQL : SQLStatement: InsertStatementContext(super=CommonSQLStatementContext(sqlStatement=org.apache.shardingsphere.sql.parser.sql.statement.dml.InsertStatement@538aa83f, tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@43fd77d8), tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@43fd77d8, columnNames=[user_id, user_name, status, age], insertValueContexts=[InsertValueContext(parametersCount=4, valueExpressions=[ParameterMarkerExpressionSegment(startIndex=65, stopIndex=65, parameterMarkerIndex=0), ParameterMarkerExpressionSegment(startIndex=68, stopIndex=68, parameterMarkerIndex=1), ParameterMarkerExpressionSegment(startIndex=71, stopIndex=71, parameterMarkerIndex=2), ParameterMarkerExpressionSegment(startIndex=74, stopIndex=74, parameterMarkerIndex=3)], parameters=[5, 张三5, 1, 5])], generatedKeyContext=Optional[GeneratedKeyContext(columnName=user_id, generated=false, generatedValues=[5])])
2023-11-08 19:05:16.184 INFO 20848 --- [ main] ShardingSphere-SQL : Actual SQL: m2 ::: INSERT INTO t_user_2 ( user_id,
user_name,
status,
age ) VALUES (?, ?, ?, ?) ::: [5, 张三5, 1, 5]
2023-11-08 19:05:16.187 INFO 20848 --- [ main] ShardingSphere-SQL : Logic SQL: INSERT INTO user ( user_id,
user_name,
status,
age ) VALUES ( ?,
?,
?,
? )
2023-11-08 19:05:16.187 INFO 20848 --- [ main] ShardingSphere-SQL : SQLStatement: InsertStatementContext(super=CommonSQLStatementContext(sqlStatement=org.apache.shardingsphere.sql.parser.sql.statement.dml.InsertStatement@538aa83f, tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@32ba5c65), tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@32ba5c65, columnNames=[user_id, user_name, status, age], insertValueContexts=[InsertValueContext(parametersCount=4, valueExpressions=[ParameterMarkerExpressionSegment(startIndex=65, stopIndex=65, parameterMarkerIndex=0), ParameterMarkerExpressionSegment(startIndex=68, stopIndex=68, parameterMarkerIndex=1), ParameterMarkerExpressionSegment(startIndex=71, stopIndex=71, parameterMarkerIndex=2), ParameterMarkerExpressionSegment(startIndex=74, stopIndex=74, parameterMarkerIndex=3)], parameters=[6, 张三6, 1, 6])], generatedKeyContext=Optional[GeneratedKeyContext(columnName=user_id, generated=false, generatedValues=[6])])
2023-11-08 19:05:16.187 INFO 20848 --- [ main] ShardingSphere-SQL : Actual SQL: m1 ::: INSERT INTO t_user_1 ( user_id,
user_name,
status,
age ) VALUES (?, ?, ?, ?) ::: [6, 张三6, 1, 6]
2023-11-08 19:05:16.191 INFO 20848 --- [ main] ShardingSphere-SQL : Logic SQL: INSERT INTO user ( user_id,
user_name,
status,
age ) VALUES ( ?,
?,
?,
? )
2023-11-08 19:05:16.191 INFO 20848 --- [ main] ShardingSphere-SQL : SQLStatement: InsertStatementContext(super=CommonSQLStatementContext(sqlStatement=org.apache.shardingsphere.sql.parser.sql.statement.dml.InsertStatement@538aa83f, tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@5d96d434), tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@5d96d434, columnNames=[user_id, user_name, status, age], insertValueContexts=[InsertValueContext(parametersCount=4, valueExpressions=[ParameterMarkerExpressionSegment(startIndex=65, stopIndex=65, parameterMarkerIndex=0), ParameterMarkerExpressionSegment(startIndex=68, stopIndex=68, parameterMarkerIndex=1), ParameterMarkerExpressionSegment(startIndex=71, stopIndex=71, parameterMarkerIndex=2), ParameterMarkerExpressionSegment(startIndex=74, stopIndex=74, parameterMarkerIndex=3)], parameters=[7, 张三7, 1, 7])], generatedKeyContext=Optional[GeneratedKeyContext(columnName=user_id, generated=false, generatedValues=[7])])
2023-11-08 19:05:16.191 INFO 20848 --- [ main] ShardingSphere-SQL : Actual SQL: m2 ::: INSERT INTO t_user_2 ( user_id,
user_name,
status,
age ) VALUES (?, ?, ?, ?) ::: [7, 张三7, 1, 7]
2023-11-08 19:05:16.195 INFO 20848 --- [ main] ShardingSphere-SQL : Logic SQL: INSERT INTO user ( user_id,
user_name,
status,
age ) VALUES ( ?,
?,
?,
? )
2023-11-08 19:05:16.195 INFO 20848 --- [ main] ShardingSphere-SQL : SQLStatement: InsertStatementContext(super=CommonSQLStatementContext(sqlStatement=org.apache.shardingsphere.sql.parser.sql.statement.dml.InsertStatement@538aa83f, tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@13dd7887), tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@13dd7887, columnNames=[user_id, user_name, status, age], insertValueContexts=[InsertValueContext(parametersCount=4, valueExpressions=[ParameterMarkerExpressionSegment(startIndex=65, stopIndex=65, parameterMarkerIndex=0), ParameterMarkerExpressionSegment(startIndex=68, stopIndex=68, parameterMarkerIndex=1), ParameterMarkerExpressionSegment(startIndex=71, stopIndex=71, parameterMarkerIndex=2), ParameterMarkerExpressionSegment(startIndex=74, stopIndex=74, parameterMarkerIndex=3)], parameters=[8, 张三8, 1, 8])], generatedKeyContext=Optional[GeneratedKeyContext(columnName=user_id, generated=false, generatedValues=[8])])
2023-11-08 19:05:16.195 INFO 20848 --- [ main] ShardingSphere-SQL : Actual SQL: m1 ::: INSERT INTO t_user_1 ( user_id,
user_name,
status,
age ) VALUES (?, ?, ?, ?) ::: [8, 张三8, 1, 8]
2023-11-08 19:05:16.199 INFO 20848 --- [ main] ShardingSphere-SQL : Logic SQL: INSERT INTO user ( user_id,
user_name,
status,
age ) VALUES ( ?,
?,
?,
? )
2023-11-08 19:05:16.199 INFO 20848 --- [ main] ShardingSphere-SQL : SQLStatement: InsertStatementContext(super=CommonSQLStatementContext(sqlStatement=org.apache.shardingsphere.sql.parser.sql.statement.dml.InsertStatement@538aa83f, tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@44de8e00), tablesContext=org.apache.shardingsphere.sql.parser.binder.segment.table.TablesContext@44de8e00, columnNames=[user_id, user_name, status, age], insertValueContexts=[InsertValueContext(parametersCount=4, valueExpressions=[ParameterMarkerExpressionSegment(startIndex=65, stopIndex=65, parameterMarkerIndex=0), ParameterMarkerExpressionSegment(startIndex=68, stopIndex=68, parameterMarkerIndex=1), ParameterMarkerExpressionSegment(startIndex=71, stopIndex=71, parameterMarkerIndex=2), ParameterMarkerExpressionSegment(startIndex=74, stopIndex=74, parameterMarkerIndex=3)], parameters=[9, 张三9, 1, 9])], generatedKeyContext=Optional[GeneratedKeyContext(columnName=user_id, generated=false, generatedValues=[9])])
2023-11-08 19:05:16.199 INFO 20848 --- [ main] ShardingSphere-SQL : Actual SQL: m2 ::: INSERT INTO t_user_2 ( user_id,
user_name,
status,
age ) VALUES (?, ?, ?, ?) ::: [9, 张三9, 1, 9]
2023-11-08 19:05:16.207 INFO 20848 --- [extShutdownHook] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} closing ...
2023-11-08 19:05:16.208 INFO 20848 --- [extShutdownHook] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} closed
2023-11-08 19:05:16.209 INFO 20848 --- [extShutdownHook] com.alibaba.druid.pool.DruidDataSource : {dataSource-2} closing ...
2023-11-08 19:05:16.209 INFO 20848 --- [extShutdownHook] com.alibaba.druid.pool.DruidDataSource : {dataSource-2} closed
Disconnected from the target VM, address: '127.0.0.1:53866', transport: 'socket'Process finished with exit code 0
🍊7.观察一下数据库的数据
masterdemo.t_user_1表的数据如图下所示:
可以发现masterdemo库的t_user_1表的user_id都是偶数,masterdemo库的t_user_2表没有数据。
masterdemo2.course_2表的数据如图下所示:
可以发现masterdemo2库的t_user_2表的user_id都是奇数,masterdemo2库的t_user_1表没有数据。
🍊8.maven的setting文件
为了避免部分同学下载依赖包不一致导致maven依赖下载不下来,我这里给上自己的配置文件,代码如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Maven 的配置文件 -->
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0http://maven.apache.org/xsd/settings-1.1.0.xsd"><!-- 设置本地仓库的路径 --><localRepository>D:\Java\ReMaven</localRepository><!-- 设置镜像 --><mirrors><mirror><id>central</id><url>https://repo1.maven.org/maven2/</url><mirrorOf>*</mirrorOf></mirror><!-- 定义一个镜像 --><!-- <mirror><id>aliyunmaven</id> <name>Alibaba Maven Mirror</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>--><mirror><id>aliyunmaven</id><!-- 镜像的id --><mirrorOf>*</mirrorOf><!-- 镜像代理的仓库id,这里将中央仓库的地址替换为阿里云的地址 --><name>阿里云公共仓库</name><!-- 镜像的名称 --><url>https://maven.aliyun.com/repository/public</url><!-- 镜像的地址 --></mirror></mirrors><!-- 设置代理 --><proxies></proxies><!-- 设置私有仓库的认证信息 --><servers></servers><!-- 定义构建时添加的环境参数 --><profiles><!-- 定义一个profile --><profile><id>jdk-1.8</id> <!-- profile的id --><activation> <!-- 激活条件 --><activeByDefault>true</activeByDefault> <!-- 默认激活 --><jdk>1.8</jdk> <!-- 使用的JDK版本 --></activation><properties> <!-- 定义环境变量 --><maven.compiler.source>1.8</maven.compiler.source> <!-- 编译代码的源版本 --><maven.compiler.target>1.8</maven.compiler.target> <!-- 编译代码的目标版本 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 项目源码的编码方式 --><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- 项目输出的编码方式 --><java.version>1.8</java.version> <!-- 使用的Java版本 --></properties></profile></profiles><!-- 设置默认激活的环境 --><activeProfiles><activeProfile>jdk-1.8</activeProfile> <!-- 默认激活的profile --></activeProfiles>
</settings>
📢文章总结
对本篇文章进行总结:
🔔以上就是今天要讲的内容,阅读结束后,反思和总结所学内容,并尝试应用到现实中,有助于深化理解和应用知识。与朋友或同事分享所读内容,讨论细节并获得反馈,也有助于加深对知识的理解和吸收。
🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~
🚀🎉希望各位读者大大多多支持用心写文章的博主,现在时代变了,🚀🎉 信息爆炸,酒香也怕巷子深🔥,博主真的需要大家的帮助才能在这片海洋中继续发光发热🎨,所以,🏃💨赶紧动动你的小手,点波关注❤️,点波赞👍,点波收藏⭐,甚至点波评论✍️,都是对博主最好的支持和鼓励!
- 💂 博客主页: 我是廖志伟
- 👉开源项目:java_wxid
- 🌥 哔哩哔哩:我是廖志伟
- 🎏个人社区:幕后大佬
- 🔖个人微信号:
SeniorRD
- 🎉微信号二维码:
📥博主目标
- 🍋程序开发这条路不能停,停下来容易被淘汰掉,吃不了自律的苦,就要受平庸的罪,持续的能力才能带来持续的自信。我本是一个很普通的程序员,放在人堆里,除了与生俱来的盛世美颜,就剩180的大高个了,就是我这样的一个人,默默写博文也有好多年了。
- 📺有句老话说的好,牛逼之前都是傻逼式的坚持,希望自己可以通过大量的作品、时间的积累、个人魅力、运气、时机,可以打造属于自己的技术影响力。
- 💥内心起伏不定,我时而激动,时而沉思。我希望自己能成为一个综合性人才,具备技术、业务和管理方面的精湛技能。我想成为产品架构路线的总设计师,团队的指挥者,技术团队的中流砥柱,企业战略和资本规划的实战专家。
- 🎉这个目标的实现需要不懈的努力和持续的成长,但我必须努力追求。因为我知道,只有成为这样的人才,我才能在职业生涯中不断前进并为企业的发展带来真正的价值。在这个不断变化的时代,我们必须随时准备好迎接挑战,不断学习和探索新的领域,才能不断地向前推进。我坚信,只要我不断努力,我一定会达到自己的目标。
🔔有需要对自己进行综合性评估,进行职业方向规划,我可以让技术大牛帮你模拟面试、针对性的指导、传授面试技巧、简历优化、进行技术问题答疑等服务。
可访问:https://java_wxid.gitee.io/tojson/
相关文章:

【快速使用ShardingJDBC的哈希分片策略进行分库分表】
文章目录 🔊博主介绍🥤本文内容🍊1.引入maven依赖🍊2.启动类上添加注解MapperScan🍊3.添加application.properties配置🍊4.普通的自定义实体类🍊5.写个测试类验证一下🍊6.控制台打印…...

102. 二叉树的层序遍历
原题链接:102. 二叉树的层序遍历 以下代码为模板,需要层序遍历时都可以使用该模板进行代码更改 全代码: class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {//创建一个TreeNode* 队列用于存储树中的每…...

macOS磁盘分区调整软件--Paragon Camptune X 中文
Paragon Camptune X是一款专为Mac用户设计的强大分区大小调整工具。通过它,用户可以简便地调整Mac硬盘上的分区大小,实现存储空间的高效管理。无论是需要在Mac和Windows系统之间切换的双系统用户,还是有其他特定存储需求的用户,Ca…...

kaggle中报错NameError: name ‘q_1‘ is not defined
在开始练习之前,先点击“全部运行”按钮。...

SQL注入漏洞 其他注入
文章目录 宽字节注入案例 HTTP头部注入Cookie注入base64User-Agent注入Referer 注入 SQL注入读写文件条件1.是否拥有读写权限2.文件路径3.secure_file_priv 读取文件写入文件 SQLMap安装sqlmapkail 源安装仓库克隆 参数简介快速入门;SQLmap(常规…...

Java自学第2课:Java语言基础知识要点
1 Java主类结构 任务:创建新项目名为item,包名为number,类名为first。 1.1 包声明 不指定包时,默认就是工程名,指定后,类文件可以分类了,是这意思吧。包就大概等于一个文件夹。而且在类文件中…...

flink状态和检查点
检查点和状态后端的区别 检查点 就是某个时间点下的所有算子的状态快照。这个时间点就是等所有任务将“同一个数据”处理完毕的时候。 状态后端:是一个管理状态的组件,还负责将本地状态(检查点)持久化到远程文件存储系统中。 分…...

数据仓库工具箱-零售业务
文章目录 一、维度模型设计的4步过程1.1 第一步:选择业务过程1.2 第二步:声明粒度1.3 第三步:确定维度1.4 第四步:确定事实 二、零售业务案例研究2.1 第一步:选择业务过程2.2 第二步:声明粒度2.3 第三步&am…...

网络工程实验记录
网络工程 show ip route show running-config 第一周 相同设备使用交叉线,不同设备之间使用直通线 R1能ping通10.1.1.1 R2能ping通所有的 R3能ping通172.16.1.1 即路由器只能到达自身线连接出去的,另一端就连接不了了。 此时给R1分配静态路由 R…...

Danswer 接入 Llama 2 模型 | 免费在 Google Colab 上托管 Llama 2 API
一、前言 前面在介绍本地部署免费开源的知识库方案时,已经简单介绍过 Danswer《Danswer 快速指南:不到15分钟打造您的企业级开源知识问答系统》,它支持即插即用不同的 LLM 模型,可以很方便的将本地知识文档通过不同的连接器接入到…...

react:路由
官方文档:https://reactrouter.com/en/main/start/overview#pending-navigation-ui 一:简单版本 先 npm i react-router-dom main.ts中内容替换为 import ReactDOM from react-dom/client import App from ./App.tsx import ./index.css import {creat…...

【AI工具】手把手带你使用Gradio分享你的模型
手把手带你使用Gradio分享你的模型 1. 快速入门2. 基本参数|支持的接口2.1 Interface类以及基础模块2.2 组件属性2.3 多输入输出组件2,4 图像组件2.5 Chatbots2.6 动态界面接口2.7 Blocks:更具灵活性和调控性2.7.1 Blocks入门2.7.2 更复杂的Blocks3. 分享自定义采样训练参考资…...

海洋专用cmocean颜色包_共22种--全平台可用
海洋专用cmocean颜色包_共22种–全平台可用 往期推荐: Python语言_matplotlib包_共80种–全平台可用 Python语言_single_color_共140种–全平台可用 R语言_RColorBrewer包–全平台可用 R语言gplots包的颜色索引表–全平台可用 R语言中的自带的调色板–五种–全平台…...

uni-app多端开发
uni-app 多端开发 一、命令创建uni-app 项目二、在微信小程序后台找到 appId 填写 appId三、运行项目四、使用 uni-ui4-1、下载4-2、自动导入4-3、ts项目下载类型校验 (uni-ui 组件库)4-3-1、下载4-3-2、配置 五、持久化 pinia六、数据请求封装七、获取组…...

Linux中固定ip端口和修改ip地址
一,更改虚拟网络编辑器 1,首先启动VMware,选择自己要更改ip或固定ip的虚拟机,并找到虚拟网络配编辑器,点击进入 2,进入之后需要点击右下角获取管理员权限后才能修改,有管理员权限之后图片如下 …...
csdn初始模板【自用】
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...

2311rust无畏并发.
原文 Rust无畏并发 Rust是为了解决两个麻烦问题: 1,如何安全系统编程 2,如何无畏并发 最初,这些问题似乎是无关的,但令惊讶的是,方法竟然是相同的:使Rust安全的相同工具也可帮助解决并发问题. 内存安全和并发错误,一般认为是代码在不应访问数据时访问数据.Rust依靠所有权为…...

阿里云中的云服务器的ubuntu中的vim没有显示行号
没有行号: 在终端输入命令: vim ~/.vimrc set nu...

Golang 在 Mac、Linux、Windows 下如何交叉编译
Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序。 GOOS:目标平台的操作系统(darwin、freebsd、linux、windows) GOARCH:目标平台的体系架构(386、amd64、arm) 具体组合…...

如何写好一篇学术论文
目录 前言 1.标题和摘要 1.1标题 1.2摘要及关键词 1.2.1摘要 1.2.2关键词 2.正文 2.1引言 2.2问题建模 2.3研究方法及分析 2.4仿真(伪代码) 2.5实验结果及分析 2.6 总结 2.7延深 2.7.1图片处理 2.7.2审稿回复 2.7.3如何避免拒稿 2.7.4写…...

kubernetes资源监控
目录 一、资源限制 1、limitrange 2、ResourceQuota 二、metrics-server 三、图形化监控和代码行监控 1、dashboard 2、k9s 四、hpa 一、资源限制 Kubernetes采用request和limit两种限制类型来对资源进行分配。request(资源需求):即运行Pod的节点必须满足运…...

Bitget Wallet:使用 Base 链购买 ETH 的简明教程
Base 链是一种 Layer 2(L2)公链,它可以为用户提供以太坊(ETH)代币,而 Bitget Wallet 是一款多功能加密货币钱包,支持 Base 链以及其他主要区块链。...

PostgreSQL简介及安装步骤
PostgreSQL简介 PostgreSQL是一款开源的关系型数据库管理系统,具有强大的扩展性、高度的可定制性和可靠的稳定性,因此在企业级应用和开发领域中得到了广泛的应用。本文将介绍PostgreSQL的基本概念以及在各种操作系统上的安装步骤。 安装步骤 1. Window…...

《安富莱嵌入式周报》第326期:航空航天级CANopen协议栈,开源USB PD电源和功耗分析,开源EtherCAT伺服驱动板,时序绘制软件,现代机器人设计
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程: BSP视频教程第28期:CANopen协议栈专题,CANopen主从机组网实战&a…...

[Kettle] Excel输入
Excel文件采用表格的形式,数据显示直观,操作方便 Excel文件采用工作表存储数据,一个文件有多张不同名称的工作表,分别存放相同字段或不同字段的数据 数据源 物理成绩(Kettle数据集2).xls https://download.csdn.net/download/H…...

vue3+ts 项目遇到的问题和bug
1.router中使用pinia报错 pinia.mjs:1709 Uncaught Error: [🍍]: "getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"? See https://pinia.vuejs.org/core-concep…...

【Linux】补充:进程管理之手动控制进程,以及计划任务
目录 一、手动启动进程 1、理解前台启动与后台启动 2、如何完成前台启动后台启动的切换 3、完成并行执行多个任务 4、结束进程 1、kill 2、killall 2、pkill 二、计划任务 1、at一次性计划任务 2、实操 2、周期性计划任务 1、关于设置周期性任务的配置文件以及格式…...

听说,工作能力强的项目经理都有这几个特征
大家好,我是老原。 很多项目经理每天忙忙碌碌,但是一看结果,团队业绩没有完成、人才没有培养起来、自己的管理水平和个人领导力也没有得到提升。 明明付出了很多时间和精力,结果却只收获了团队的抱怨,以及老板对你管…...

合并两个有序链表OJ
合并两个有序链表OJ 文章目录 合并两个有序链表OJ一、题目及要求二、思路分析三、代码实现 一、题目及要求 二、思路分析 其次,题目里说了新链表是通过拼接原来的结点形成的,所以说我们不需要开辟新的空间。 三、代码实现 if (list1 NULL) {return li…...

2023NOIP A层联测27 A.kotori
2023NOIP A层联测27 A.kotori 文章目录 2023NOIP A层联测27 A.kotori题目大意思路code 题目大意 琴里的飞船中有 n n n 个人,其中有 n − 1 n - 1 n−1 个通道,所以飞船的内部是一个树形结构。每个人从 1 − n 1-n 1−n 编号,编号越小代表…...