mycat2使用

news2025/3/14 20:08:48
安装部署

下载1:mycat2-install-template-1.21.zip

下载2:mycat2-1.21-release-jar-with-dependencies.jar

解压mycat2-install-template-1.21.zip

unzip mycat2-install-template-1.21.zip

把mycat2-1.21-release-jar-with-dependencies.jar放在mycat/lib中

修改mycat/conf/datasources/prototypeDs.datasource.json配置文件

{
    "dbType":"mysql",
    "idleTimeout":60000,
    "initSqls":[],
    "initSqlsGetConnection":true,
    "instanceType":"READ_WRITE",
    "maxCon":1000,
    "maxConnectTimeout":3000,
    "maxRetryCount":5,
    "minCon":1,
    "name":"prototypeDs",
    "password":"Q61@t6Udu8mW",
    "type":"JDBC",
    "url":"jdbc:mysql://192.168.202.150:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
    "user":"mysteel",
    "weight":0
}

进入到mycat/bin目录,执行以下命令对文件分配权限

chmod 777 ./*

服务启动

./mycat start

客户端进行连接

默认的端口是8066,可以在mycat/conf/server.json中修改

默认的用户名密码是root/123456,可以在mycat/conf/user/root.user.json中修改

此时整体架构图为:

配置逻辑库

mycat默认有个集群,在mycat/conf/clusters/prototype.cluster.json中配置

{
    "clusterType":"MASTER_SLAVE",
    "heartbeat":{
        "heartbeatTimeout":1000,
        "maxRetry":3,
        "minSwitchTimeInterval":300,
        "slaveThreshold":0
    },
    "masters":[
        "prototypeDs"
    ],
    "maxCon":200,
    "name":"prototype",
    "readBalanceType":"BALANCE_ALL",
    "switchType":"SWITCH"
}

默认有两个逻辑库:information_schema,mysql,在mycat/conf/schemas下面配置

当我们在mycat中操作information_schema,mysql逻辑库下面的表时候实际在操作原型库中表

现在让我们来配置新的业务逻辑库(逻辑库的名称要和原型库的名称一致

在客户端执行:

/*+ mycat:createSchema{
    "customTables":{},
    "globalTables":{},
    "normalTables":{},
    "schemaName":"yc_nacos",
    "shardingTables":{},
    "targetName":"prototype"
} */;

会在mycat/conf/schemas目录下自动创建yc_nacos.schema.json文件,并且自动把逻辑库中的逻辑表和原型库中的真实表进行映射

多数据源整合

创建mysql数据源:

/*+ mycat:createDataSource{
"dbType":"mysql",
"name":"yc-mysql",
"url":"jdbc:mysql://192.168.201.68:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"admin_user",
"password":"mOoBzUHGtqeX"
} */;

配置逻辑库:

/*+ mycat:createSchema{
    "customTables":{},
    "globalTables":{},
    "normalTables":{},
    "schemaName":"oem_mysteel",
    "shardingTables":{},
    "targetName":"yc-mysql"
} */;

oem_mysteel逻辑库下面的mysteel_data_3逻辑表对应的数据源是:192.168.202.150:3306

yc_nacos逻辑库下面的users逻辑表对应的数据源是:192.168.201.68:3306

不同数据源下面的表可以通过mycat进行联合查询

读写分离

在两个数据源(192.168.202.150:3306,192.168.201.68:3306)分别创建master_slave数据库,及在数据库下创建travelrecord表

CREATE database master_slave;
CREATE TABLE master_slave.`travelrecord` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `user_id` varchar(100) DEFAULT NULL,
  `traveldate` date DEFAULT NULL,
  `fee` decimal(10,0) DEFAULT NULL,
  `days` int DEFAULT NULL,
  `blob` longblob,
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

创建集群:

/*! mycat:createCluster{"name":"prototype","masters":["prototypeDs"],"replicas":["yc-mysql"]} */;

创建逻辑表关联集群

/*+ mycat:createSchema{
    "customTables":{},
    "globalTables":{},
    "normalTables":{},
    "schemaName":"master_slave",
    "shardingTables":{},
    "targetName":"prototype"
} */;

查看集群状态:

/*+ mycat:showClusters{} */;

现在prototypeDs,yc-mysql两个数据源都可以读,我们改成只允许prototypeDs写,yc-mysql读,要修改两个地方

1、修改prototypeDs中的instanceType属性值为WRITE

{
    "dbType":"mysql",
    "idleTimeout":60000,
    "initSqls":[],
    "initSqlsGetConnection":true,
    "instanceType":"WRITE",
    "maxCon":1000,
    "maxConnectTimeout":3000,
    "maxRetryCount":5,
    "minCon":1,
    "name":"prototypeDs",
    "password":"Q61@t6Udu8mW",
    "type":"JDBC",
    "url":"jdbc:mysql://192.168.202.150:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
    "user":"mysteel",
    "weight":0
}

2、修改集群中BALANCE_ALL改成BALANCE_ALL_READ

{
    "clusterType":"MASTER_SLAVE",
    "heartbeat":{
        "heartbeatTimeout":1000,
        "maxRetryCount":3,
        "minSwitchTimeInterval":300,
        "showLog":false,
        "slaveThreshold":0.0
    },
    "masters":[
        "prototypeDs"
    ],
    "maxCon":2000,
    "name":"prototype",
    "readBalanceType":"BALANCE_ALL",
    "replicas":[
        "yc-mysql"
    ],
    "switchType":"SWITCH"
}

readBalanceType:查询负载均衡策略

BALANCE_ALL(默认值):获取集群中所有数据源

BALANCE_ALL_READ:获取集群中允许读的数据源

BALANCE_READ_WRITE:获取集群中允许读写的数据源,但允许读的数据源优先

BALANCE_NONE:获取集群中允许写数据源,即主节点中选择

switchType

NOT_SWITCH:不进行主从切换

SWITCH:进行主从切换

配置重启之后:

当前主库prototypeDs中master_slave下面的travelrecord数据为:

当前从库yc-mysql中master_slave下面的travelrecord数据为:

现在在mycat客户端插入user_id为1000的数据:

insert into travelrecord(user_id)values ("1000");

此时主库prototypeDs中master_slave下面的travelrecord数据为:

此时从库yc-mysql中master_slave下面的travelrecord数据为:

现在在mycat客户端查询master_slave下面的travelrecord表数据为:

达到了在master_slave(prototypeDs)主库写,master_slave(yc-mysql)从库读的效果

配置prototypeDs,yc-mysql主从同步

可以查看https://yangcai.blog.csdn.net/article/details/122124151这个帖子

此时架构图为:

分库分表

创建数据源,因为我只准备了两个mysql库

/*+ mycat:createDataSource{
"dbType":"mysql",
"name":"m1",
"url":"jdbc:mysql://192.168.201.68:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"admin_user",
"password":"mOoBzUHGtqeX"
} */;
/*+ mycat:createDataSource{
"dbType":"mysql",
"name":"m2",
"url":"jdbc:mysql://192.168.202.150:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"mysteel",
"password":"Q61@t6Udu8mW"
} */;

在mycat/conf/datasources下面会创建m1.datasource.json m2.datasource.json两个文件

创建两个集群:

/*! mycat:createCluster{"name":"c0","masters":["m1"],"replicas":[]} */;
/*! mycat:createCluster{"name":"c1","masters":["m2"],"replicas":[]} */;

在mycat/conf/clusters下面会创建c0.cluster.json c1.cluster.json两个文件

注意:mycat分库分表默认选择的集群名称的规则是c${targetIndex},targetIndex是从0开始计算的

在mycat客户端创建分库分表逻辑库:

create database   sub_base_table;

在mycat/conf/schemas下面会创建sub_base_table.schema.json

在逻辑库下面创建分片表:

CREATE TABLE sub_base_table.`travelrecord` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `user_id` varchar(100) DEFAULT NULL,
  `traveldate` date DEFAULT NULL,
  `fee` decimal(10,0) DEFAULT NULL,
  `days` int DEFAULT NULL,
  `blob` longblob,
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
)  ENGINE = INNODB DEFAULT CHARSET = utf8 dbpartition BY mod_hash ( user_id ) tbpartition BY mod_hash(id)tbpartitions 2 dbpartitions 2 ;

在sub_base_table.schema.json中的内容为:

{
    "customTables":{},
    "globalTables":{},
    "normalProcedures":{},
    "normalTables":{},
    "schemaName":"sub_base_table",
    "shardingTables":{
        "travelrecord":{
            "createTableSQL":"CREATE TABLE sub_base_table.`travelrecord` (\n\t`id` bigint NOT NULL AUTO_INCREMENT,\n\t`user_id` varchar(100) DEFAULT NULL,\n\t`traveldate` date DEFAULT NULL,\n\t`fee` decimal(10, 0) DEFAULT NULL,\n\t`days` int DEFAULT NULL,\n\t`blob` longblob,\n\tPRIMARY KEY (`id`),\n\tKEY `id` (`id`)\n) ENGINE = INNODB CHARSET = utf8\nDBPARTITION BY mod_hash(user_id) DBPARTITIONS 2\nTBPARTITION BY mod_hash(id) TBPARTITIONS 2",
            "function":{
                "properties":{
                    "dbNum":"2",
                    "mappingFormat":"c${targetIndex}/sub_base_table_${dbIndex}/travelrecord_${tableIndex}",
                    "tableNum":"2",
                    "tableMethod":"mod_hash(id)",
                    "storeNum":2,
                    "dbMethod":"mod_hash(user_id)"
                }
            },
            "shardingIndexTables":{}
        }
    },
    "views":{}
}

此时m1,m2数据源就会创建分库分表,规则就是sub_base_table_${dbIndex}/travelrecord_${tableIndex},sub_base_table和targetIndex是从0开始计算的

此时架构图为:

全局表

如果项目中有一些数据类似字典常量等字段,这种数据一般数据量不会很大,而且改动也比较少,通常这种表可以不需要进行拆分,把它当做全局表进行处理,每个分片都创建一张相同的表,在所有的分片上都保存一份数据。在进行插入、更新、删除操作时,会将sql语句发送到所有分片上进行执行,在进行查询时,也会把sql发送到各个节点。这样避免了跨库JOIN操作,直接与本分片上的全局表进行聚合操作。

特性:

全局表的插入、更新、删除等操作会实时在所有节点上执行,保持各个分片的数据一致性;

全局表的查询操作,随机从一个节点上进行;

全局表可以跟任何一个表进行 JOIN 操作

在mycat客户端sub_base_table逻辑库执行:

CREATE TABLE sub_base_table.`user_config` (
`user_id` varchar(100)  NOT NULL ,
`user_name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 BROADCAST;

此时sub_base_table.schema.json中的内容为:

{
    "customTables":{},
    "globalTables":{
        "user_config":{
            "broadcast":[
                {
                    "targetName":"c0"
                },
                {
                    "targetName":"c1"
                }
            ],
            "createTableSQL":"CREATE TABLE sub_base_table.`user_config` (\n\t`user_id` varchar(100) NOT NULL,\n\t`user_name` varchar(100) DEFAULT NULL,\n\tPRIMARY KEY (`user_id`)\n) BROADCAST ENGINE = InnoDB CHARSET = utf8"
        }
    },
    "normalProcedures":{},
    "normalTables":{},
    "schemaName":"sub_base_table",
    "shardingTables":{
        "travelrecord":{
            "createTableSQL":"CREATE TABLE sub_base_table.`travelrecord` (\n\t`id` bigint NOT NULL AUTO_INCREMENT,\n\t`user_id` varchar(100) DEFAULT NULL,\n\t`traveldate` date DEFAULT NULL,\n\t`fee` decimal(10, 0) DEFAULT NULL,\n\t`days` int DEFAULT NULL,\n\t`blob` longblob,\n\tPRIMARY KEY (`id`),\n\tKEY `id` (`id`)\n) ENGINE = INNODB CHARSET = utf8\nDBPARTITION BY mod_hash(user_id) DBPARTITIONS 2\nTBPARTITION BY mod_hash(id) TBPARTITIONS 2",
            "function":{
                "properties":{
                    "dbNum":"2",
                    "mappingFormat":"c${targetIndex}/sub_base_table_${dbIndex}/travelrecord_${tableIndex}",
                    "tableNum":"2",
                    "tableMethod":"mod_hash(id)",
                    "storeNum":2,
                    "dbMethod":"mod_hash(user_id)"
                }
            },
            "shardingIndexTables":{}
        }
    },
    "views":{}
}

则在m1,m2中的sub_base_table物理库中都会创建user_config表

普通表

就是常规表

CREATE TABLE sub_base_table.`user` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

此时sub_base_table.schema.json中的内容为:

{
    "customTables":{},
    "globalTables":{
        "user_config":{
            "broadcast":[
                {
                    "targetName":"c0"
                },
                {
                    "targetName":"c1"
                }
            ],
            "createTableSQL":"CREATE TABLE sub_base_table.`user_config` (\n\t`user_id` varchar(100) NOT NULL,\n\t`user_name` varchar(100) DEFAULT NULL,\n\tPRIMARY KEY (`user_id`)\n) BROADCAST ENGINE = InnoDB CHARSET = utf8"
        }
    },
    "normalProcedures":{},
    "normalTables":{
        "user":{
            "createTableSQL":"CREATE TABLE sub_base_table.`user` (\n\t`id` bigint NOT NULL AUTO_INCREMENT,\n\t`name` varchar(100) DEFAULT NULL,\n\tPRIMARY KEY (`id`)\n) ENGINE = InnoDB CHARSET = utf8",
            "locality":{
                "schemaName":"sub_base_table",
                "tableName":"user",
                "targetName":"prototype"
            }
        }
    },
    "schemaName":"sub_base_table",
    "shardingTables":{
        "travelrecord":{
            "createTableSQL":"CREATE TABLE sub_base_table.`travelrecord` (\n\t`id` bigint NOT NULL AUTO_INCREMENT,\n\t`user_id` varchar(100) DEFAULT NULL,\n\t`traveldate` date DEFAULT NULL,\n\t`fee` decimal(10, 0) DEFAULT NULL,\n\t`days` int DEFAULT NULL,\n\t`blob` longblob,\n\tPRIMARY KEY (`id`),\n\tKEY `id` (`id`)\n) ENGINE = INNODB CHARSET = utf8\nDBPARTITION BY mod_hash(user_id) DBPARTITIONS 2\nTBPARTITION BY mod_hash(id) TBPARTITIONS 2",
            "function":{
                "properties":{
                    "dbNum":"2",
                    "mappingFormat":"c${targetIndex}/sub_base_table_${dbIndex}/travelrecord_${tableIndex}",
                    "tableNum":"2",
                    "tableMethod":"mod_hash(id)",
                    "storeNum":2,
                    "dbMethod":"mod_hash(user_id)"
                }
            },
            "shardingIndexTables":{}
        }
    },
    "views":{}
}

普通表默认指向的集群是prototype,在prototypeDs-sub_base_table中会创建user表

ER表

基于E-R关系进行分片,子表的记录与其关联的父表的记录保存在同一个分片上,这样关联查询就不需要跨库进行查询,要注意的是无需指定ER表,是自动识别的,两表的分片算法一致就可以了

如:travel是travelrecord的附属表

CREATE TABLE sub_base_table.`travel` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `u_id` varchar(100) DEFAULT NULL,
  `travel` date DEFAULT NULL,
   PRIMARY KEY (`id`)
)  ENGINE = INNODB DEFAULT CHARSET = utf8 dbpartition BY mod_hash(u_id) tbpartition BY mod_hash(id) tbpartitions 2 dbpartitions 2 ;

此时sub_base_table.schema.json中的内容为:

{
    "customTables":{},
    "globalTables":{
        "user_config":{
            "broadcast":[
                {
                    "targetName":"c0"
                },
                {
                    "targetName":"c1"
                }
            ],
            "createTableSQL":"CREATE TABLE sub_base_table.`user_config` (\n\t`user_id` varchar(100) NOT NULL,\n\t`user_name` varchar(100) DEFAULT NULL,\n\tPRIMARY KEY (`user_id`)\n) BROADCAST ENGINE = InnoDB CHARSET = utf8"
        }
    },
    "normalProcedures":{},
    "normalTables":{
        "user":{
            "createTableSQL":"CREATE TABLE sub_base_table.`user` (\n\t`id` bigint NOT NULL AUTO_INCREMENT,\n\t`name` varchar(100) DEFAULT NULL,\n\tPRIMARY KEY (`id`)\n) ENGINE = InnoDB CHARSET = utf8",
            "locality":{
                "schemaName":"sub_base_table",
                "tableName":"user",
                "targetName":"prototype"
            }
        }
    },
    "schemaName":"sub_base_table",
    "shardingTables":{
        "travelrecord":{
            "createTableSQL":"CREATE TABLE sub_base_table.`travelrecord` (\n\t`id` bigint NOT NULL AUTO_INCREMENT,\n\t`user_id` varchar(100) DEFAULT NULL,\n\t`traveldate` date DEFAULT NULL,\n\t`fee` decimal(10, 0) DEFAULT NULL,\n\t`days` int DEFAULT NULL,\n\t`blob` longblob,\n\tPRIMARY KEY (`id`),\n\tKEY `id` (`id`)\n) ENGINE = INNODB CHARSET = utf8\nDBPARTITION BY mod_hash(user_id) DBPARTITIONS 2\nTBPARTITION BY mod_hash(id) TBPARTITIONS 2",
            "function":{
                "properties":{
                    "dbNum":"2",
                    "mappingFormat":"c${targetIndex}/sub_base_table_${dbIndex}/travelrecord_${tableIndex}",
                    "tableNum":"2",
                    "tableMethod":"mod_hash(id)",
                    "storeNum":2,
                    "dbMethod":"mod_hash(user_id)"
                },
                "ranges":{}
            },
            "partition":{
                
            },
            "shardingIndexTables":{}
        },
        "travel":{
            "createTableSQL":"CREATE TABLE sub_base_table.`travel` (\n\t`id` bigint NOT NULL AUTO_INCREMENT,\n\t`u_id` varchar(100) DEFAULT NULL,\n\t`travel` date DEFAULT NULL,\n\tPRIMARY KEY (`id`)\n) ENGINE = INNODB CHARSET = utf8\nDBPARTITION BY mod_hash(u_id) DBPARTITIONS 2\nTBPARTITION BY mod_hash(id) TBPARTITIONS 2",
            "function":{
                "properties":{
                    "dbNum":"2",
                    "mappingFormat":"c${targetIndex}/sub_base_table_${dbIndex}/travel_${tableIndex}",
                    "tableNum":"2",
                    "tableMethod":"mod_hash(id)",
                    "storeNum":2,
                    "dbMethod":"mod_hash(u_id)"
                }
            },
            "shardingIndexTables":{}
        }
    },
    "views":{}
}

当执行以下sql的时候的就避免了跨库join,跨库join查询的性能非常慢

select * from sub_base_table.`travel`  a  INNER JOIN  sub_base_table.`travelrecord` b on a.u_id = b.user_id 

查看配置的表是否具有ER关系,使用

/*+ mycat:showErGroup{}*/

group_id表示相同的组,该组中的表具有相同的存储分布

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

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

相关文章

神码ospfv3配置.docx

一.配置各设备的ip地址 sw1(config)#ipv6 enable sw1(config)#vlan 1000 sw1(config-vlan1000)#swi int eth1/0/3 Set the port Ethernet1/0/3 access vlan 1000 successfully sw1(config)#int vlan 1000 sw1(config-if-vlan1000)#ipv6 address aa::aa/64 sw1(config-if-vla…

分享微信商城小程序搭建步骤_微信公众号商城小程序怎么做

如何搭建好一个微信商城?这三个功能要会用! 1.定期低价秒杀,提高商城流量 除了通过私域流量裂变,低价秒杀是为商城引流提高打开率的良好手段。 以不同节日作为嘘头,在情人节、38妇女节、中秋国庆、七夕节等日子&…

Node=>Express中间件 学习3

1.概念: 例:在处理污水的时候,一般都要经过三个处理环节,从而保证处理过后的废水,达到排放标准 处理污水的这三个中间处理环节,就可以叫中间件 2.中间件调用流程 当一个请求到达Express的服务器之后&#x…

大数据---Hadoop安装jdk简易版

编写自动安装的shell脚本 完整流程: 大数据—Hadoop安装教程(一) 文章目录编写自动安装的shell脚本上传压缩包编写shell脚本vim autoinstall.sh解压更名添加环境运行上传压缩包 在opt目录下创建连个目录install和soft 将压缩包上传到install目录下 …

Google杀入AI聊天机器人领域,暴跌千亿?错哪了?

大家好,ChatGPT 现在被大家玩坏了,甚至在用户的不断逼问之下,露出了鸡脚,原来 ChatGPT 也是小黑子ChatGPT 太火了,火的谷歌都坐不住了。为了应对爆火的ChatGPT,谷歌推出的Bard,但是谷歌翻车了&a…

Python Web 框架要点

Python Web 框架要点 1. Web应用程序处理流程 2. Web程序框架的意义 用于搭建Web应用程序免去不同Web应用相同代码部分的重复编写,只需关心Web应用核心的业务逻辑实现 3. Web应用程序的本质 接收并解析HTTP请求,获取具体的请求信息处理本次HTTP请求&a…

三大基础排序算法——冒泡排序、选择排序、插入排序

目录前言一、排序简介二、冒泡排序三、选择排序四、插入排序五、对比References前言 在此之前,我们已经介绍了十大排序算法中的:归并排序、快速排序、堆排序(还不知道的小伙伴们可以参考我的 「数据结构与算法」 专栏)&#xff0…

【内网安全】——数据库提权姿势

作者名:白昼安全主页面链接:主页传送门创作初心: 一切为了她座右铭: 不要让时代的悲哀成为你的悲哀专研方向: web安全,后渗透技术每日emo: 在哪能找到解救我的办法模拟环境我们拿到了一个普通用…

java开发-用户注册-MD5工具加密密码

加密方式介绍 对称加密:加密和解密使用的相同的密钥,常见的对称加密算法有:DES、3DES非对称加密:加密和解密使用的密钥不同,常见的非对称加密算法有:RSA 加密:使用私钥加密解密:使用公钥解密 消息摘要: 消…

vcs仿真教程

VCS是在linux下面用来进行仿真看波形的工具,类似于windows下面的modelsim以及questasim等工具,以及quartus、vivado仿真的操作。 1.vcs的基本指令 vcs的常见指令后缀 sim常见指令 2.使用vcs的实例 采用的是全加器的官方教程,首先介绍不使用…

Netty(IO模型/零拷贝技术/IO复用之select、poll、epoll模型)

目录 IO模型 阻塞IO和非阻塞IO 阻塞IO 非阻塞IO IO复用模型 异步IO mmap IO复用之select、poll、epoll模型 select poll epoll IO模型 阻塞IO和非阻塞IO 阻塞IO 所谓阻塞IO就是当应用B发起读取数据申请时,在内核数据没有准备好之前,应用…

分享111个JS菜单导航,总有一款适合您

分享111个JS菜单导航,总有一款适合您 111个JS菜单导航下载链接:https://pan.baidu.com/s/1WkrSIyHC5JySwrCTL0sgLA?pwd13yx 提取码:13yx Python采集代码下载链接:https://wwgn.lanzoul.com/iKGwb0kye3wj base_url "h…

【GPLT 二阶题目集】L2-036 网红点打卡攻略

一个旅游景点,如果被带火了的话,就被称为“网红点”。大家来网红点游玩,俗称“打卡”。在各个网红点打卡的快(省)乐(钱)方法称为“攻略”。你的任务就是从一大堆攻略中,找出那个能在…

开源ChatGPT要来了;软件2.0智能革命;GLM、Diffusion模型大加速

1. 2023年AI十大展望:GPT-4领衔大模型变革,谷歌拉响警报,训练数据告急 新年伊始,大模型的话题热度不减。ChatGPT展现的惊人能力将大模型研究和应用热度推向高潮,人们激烈讨论着这个高级“物种”的推出意味着什么。 本文…

如何操作python的列表和元组?

继上篇文章,我们叙述了 列表是什么? 这篇文章,我们主要叙述 列表如何操作。 如何遍历列表呢?这只需要几行代码,无论列表有多长。 循环让我们能够对列表的每个元素都采取一个或一系列相同的措施, 从而高效地…

CHAPTER 4 Jenkins pipeline (流水线)

Jenkins pipeline4.1 pipeline概念4.2 pipeline优势4.3 pipeline演示1. 新建任务2. 配置任务3. 执行任务4.4 pipeline语法4.4.1 片段生成器1. 生成git clone代码2. 执行任务4.4.2 pipeline语法详解1. 声明式流水线基础2. 脚本化流水线基础3. agent 执行位置4. tool 工具5. envi…

原生微信小程序按需引入vant

vant Vant Weapp - 轻量、可靠的小程序 UI 组件库 1.npm安装 找到项目根目录 安装 # 通过 npm 安装 npm i vant/weapp -S --production# 通过 yarn 安装 yarn add vant/weapp --production# 安装 0.x 版本 npm i vant-weapp -S --production 2 .修改 app.json 将 app.jso…

【GD32F427开发板试用】使用Arm-2D显示电池电量

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:boc 【虽迟但到】 由于快递的原因,11月份申请的,12月1日才收到GD32F427开发板。虽然姗姗来迟,但也没有减少…

易记笔记-Ubuntu升级软件包及注意事项

APT介绍 APT是一个命令行实用程序,用于在Ubuntu系统中安装、删除、更新软件包。 注意,Ubuntu里面的APT工具需要与常说的APT攻击区分开。 APT攻击,即高级可持续威胁攻击,也称为定向威胁攻击,指某组织对特定对象展开的持续有效的攻…

CSDN每日一练:寻因找祖

题目名称&#xff1a;寻因找祖 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目描述 寻找因子个数为n的最小整数x. 输入描述&#xff1a; 输入整数n。(1<n<1000) 输出描述&#xff1a; 输出x。 示例 示例1 输入 3 输出 4 提示 无 猛一看&#xff0c;这个题目很…