文章目录

      • sharingsphere 入门实例
        • sharingsphere简介
        • 郑重声明
        • 结合java使用实例
          • 工程结构(单个整体结构)
          • SQL脚本
          • 配置文件
      • 代码
      • 测试
        • 新增数据
        • 按照分库规则查询
        • 按照分表规则查询
        • 按照普通字段查询
        • 按照分片规则查询
      • 总结

sharingsphere 入门实例

sharingsphere简介

这里原谅我直接copy了一段官方网站上简介了(目前已经进入Apache孵化器)
Apache ShardingSphere(Incubator) is an open-source ecosystem consisted of a set of distributed database middleware solutions, including 3 independent products, Sharding-JDBC, Sharding-Proxy & Sharding-Sidecar (Planning). They all provide functions of data sharding, distributed transaction and database orchestration, applicable in a variety of situations such as Java isomorphism, heterogeneous language and cloud native.
Apache ShardingSphere(Incubator) 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(规划中)这3款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。

简单解释一下,就是一个分库分表的中间件。更多详情请见sharingsphere官方文档

郑重声明

我这里的代码(配置文件demo),之前是在网上看的,但是我已经找不到原文章在哪里的了,请原谅,请原谅请原谅请原谅请原谅请原谅请原谅请原谅请原谅请原谅请原谅请原谅请原谅请原谅

结合java使用实例

工程结构(单个整体结构)

这是去年年底的demo了,就是因为时间久远,导致找不到网上的那篇原文了,见谅/侵删

    spring20191227sharingsphere      │└─src.main      包|    │|    ├─java               微服务接口和传输对象定义|    │|    ├─resource                    资源类|    │  ├─application.properties   服务配置相关|    │|    └─Spring20191227sharingsphereApplication    服务启动类|└─src.test 测试类
SQL脚本
//SQL脚本
create table user_0
(id   int          not nullprimary key,name varchar(255) null,age  int          null
);

表结构:

db0├── user_0 └── user_1 
db1├── user_0 └── user_1
配置文件
# 数据源 ds0,ds1
sharding.jdbc.datasource.names=ds0,ds1
# 第一个数据库
sharding.jdbc.datasource.ds0.type=com.zaxxer.hikari.HikariDataSource
#sharding.jdbc.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.ds0.driver-class-name=com.mysql.cj.jdbc.Driver
sharding.jdbc.datasource.ds0.jdbc-url=jdbc:mysql://localhost:3306/ds0?characterEncoding=utf-8&serverTimezone=Asia/Shanghai
sharding.jdbc.datasource.ds0.username=root
sharding.jdbc.datasource.ds0.password=password
# 第二个数据库
sharding.jdbc.datasource.ds1.type=com.zaxxer.hikari.HikariDataSource
sharding.jdbc.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.ds1.jdbc-url=jdbc:mysql://localhost:3306/ds1?characterEncoding=utf-8&serverTimezone=Asia/Shanghai
sharding.jdbc.datasource.ds1.username=root
sharding.jdbc.datasource.ds1.password=password
# 水平拆分的数据库(表) 配置分库 + 分表策略 行表达式分片策略
# 分库策略
sharding.jdbc.config.sharding.default-database-strategy.inline.sharding-column=id
sharding.jdbc.config.sharding.default-database-strategy.inline.algorithm-expression=ds$->{id % 2}
# 分表策略 其中user为逻辑表 分表主要取决于age行
sharding.jdbc.config.sharding.tables.user.actual-data-nodes=ds$->{0..1}.user_$->{0..1}
sharding.jdbc.config.sharding.tables.user.table-strategy.inline.sharding-column=age
# 分片算法表达式
sharding.jdbc.config.sharding.tables.user.table-strategy.inline.algorithm-expression=user_$->{age % 2}
# 主键 UUID 18位数 如果是分布式还要进行一个设置 防止主键重复
#sharding.jdbc.config.sharding.tables.user.key-generator-column-name=id
# 打印执行的数据库以及语句
sharding.jdbc.config.props..sql.show=true
spring.main.allow-bean-definition-overriding=true

这里稍微解释一下这上面的配置:
首先是分库,分为两个库,分别是ds0和ds1,每一个库中有两个表(这里因为是除2取余的,所以分了两个表),然后每个表中有三个字段。
id:我们按照id分库,不同的id除2取余后,分别落到ds0和ds1中;
name:无分库分表,正常字段;
age:分表,根据age除2取余后,分别落到表user_0或者表user_1中。

这里的配置使用的是Groovy的语法:

行表达式均能够支持。例如:

${begin..end}表示范围区间

${[unit1, unit2, unit_x]}表示枚举值

行表达式中如果出现连续多个${ expression }$->{ expression }表达式,整个表达式最终的结果将会根据每个子表达式的结果进行笛卡尔组合。

更多操作请查看官方文档行表达式

更多操作请查看官方文档配置文件

代码

maven 配置

<dependency><groupId>io.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>3.1.0</version></dependency><!-- for spring namespace --><dependency><groupId>io.shardingsphere</groupId><artifactId>sharding-jdbc-spring-namespace</artifactId><version>3.1.0</version></dependency>
//这里使用了mybatis plus 
public interface UserService extends IService<User> {@Overrideboolean save(User entity);List<User> getUserList();List<User> selectUserByName(String name);List<User> selectUserByAge(Integer age);User selectUserById(Long Id);
}
//实现类,新增,查询操作
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Overridepublic boolean save(User entity) {return super.save(entity);}@Overridepublic List<User> getUserList() {return baseMapper.selectList(Wrappers.<User>lambdaQuery());}@Overridepublic List<User> selectUserByName(String name) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("name", name);return baseMapper.selectList(queryWrapper);}@Overridepublic List<User> selectUserByAge(Integer age) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("age", age);return baseMapper.selectList(queryWrapper);}@Overridepublic User selectUserById(Long id) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("id", id);return baseMapper.selectOne(queryWrapper);}}
//User实体类
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("user")
public class User  extends Model<User> {private Long id;private String name;private Integer age;
}

测试

    @Testpublic void insert() {User user = new User();//这里我们假设ID是唯一的;这里我们可以认为是用户IDuser.setId(1L);user.setName("zhangsan");user.setAge(20);userService.save(user);System.out.println("-----------名称查询分割线-------------------");System.out.println(userService.selectUserByName(user.getName()).toString());System.out.println("-----------编码查询分割线-------------------");System.out.println(userService.selectUserById(user.getId()).toString());System.out.println("-----------年龄查询分割线-------------------");System.out.println(userService.selectUserByAge(user.getAge()).toString());}

新增数据

我们查看控制台日志:
新增数据的时候日志如下:

2020-01-16 13:04:08.127  INFO 16000 --- [           main] ShardingSphere-SQL                       : Rule Type: sharding
2020-01-16 13:04:08.127  INFO 16000 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO user  ( id,name,age )  VALUES  ( ?,?,? )
2020-01-16 13:04:08.127  INFO 16000 --- [           main] ShardingSphere-SQL                       : SQLStatement: InsertStatement(super=DMLStatement(super=io.shardingsphere.core.parsing.parser.sql.dml.insert.InsertStatement@1fb2eec), columns=[Column(name=id, tableName=user), Column(name=name, tableName=user), Column(name=age, tableName=user)], generatedKeyConditions=[], insertValues=InsertValues(insertValues=[InsertValue(type=VALUES, expression=( ?,?,? ), parametersCount=3)]), columnsListLastPosition=34, generateKeyColumnIndex=-1, insertValuesListLastPosition=56)
2020-01-16 13:04:08.127  INFO 16000 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds1 ::: INSERT INTO user_0  ( id,name,age )  VALUES  ( ?,?,? ) ::: [[1, zhangsan, 20]]

抱歉日志内容有点乱

我们大致可以看到 Logic SQL,指逻辑SQL,这里我们可以把数据库当成一个库一个表,逻辑SQL就是针对这个来说的;
再看Actual SQL,这里指实际操作的SQL数据,我们可以看到实际数据是插入了ds1库user_0表中的
查询数据库可以看到,ds1库下user_1插入了一条数据,其他表没有数据;
我们再插入几条数据观察一下:

2020-01-16 13:54:02.333  INFO 12124 --- [           main] ShardingSphere-SQL                       : Rule Type: sharding
2020-01-16 13:54:02.333  INFO 12124 --- [           main] ShardingSphere-SQL                       : Logic SQL: INSERT INTO user  ( id,name,age )  VALUES  ( ?,?,? )
2020-01-16 13:54:02.333  INFO 12124 --- [           main] ShardingSphere-SQL                       : SQLStatement: InsertStatement(super=DMLStatement(super=io.shardingsphere.core.parsing.parser.sql.dml.insert.InsertStatement@4c18516), columns=[Column(name=id, tableName=user), Column(name=name, tableName=user), Column(name=age, tableName=user)], generatedKeyConditions=[], insertValues=InsertValues(insertValues=[InsertValue(type=VALUES, expression=( ?,?,? ), parametersCount=3)]), columnsListLastPosition=34, generateKeyColumnIndex=-1, insertValuesListLastPosition=56)
2020-01-16 13:54:02.333  INFO 12124 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds0 ::: INSERT INTO user_1  ( id,name,age )  VALUES  ( ?,?,? ) ::: [[2, 李四, 21]]

可以看到这条编码为2,年龄为21的李四插入了ds0库下的user_1中。

按照分库规则查询

我们先看按照编码查询

2020-01-16 13:04:08.704  INFO 16000 --- [           main] ShardingSphere-SQL                       : Rule Type: sharding
2020-01-16 13:04:08.704  INFO 16000 --- [           main] ShardingSphere-SQL                       : Logic SQL: SELECT  id,name,age  FROM user WHERE id = ?
2020-01-16 13:04:08.704  INFO 16000 --- [           main] ShardingSphere-SQL                       : SQLStatement: SelectStatement(super=DQLStatement(super=io.shardingsphere.core.parsing.parser.sql.dql.select.SelectStatement@11abd6c), containStar=false, firstSelectItemStartPosition=8, selectListLastPosition=20, groupByLastPosition=0, items=[CommonSelectItem(expression=id, alias=Optional.absent()), CommonSelectItem(expression=name, alias=Optional.absent()), CommonSelectItem(expression=age, alias=Optional.absent())], groupByItems=[], orderByItems=[], limit=null, subQueryStatement=null, subQueryStatements=[], subQueryConditions=[])
2020-01-16 13:04:08.704  INFO 16000 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds1 ::: SELECT  id,name,age  FROM user_0  WHERE id = ? ::: [[1]]
2020-01-16 13:04:08.704  INFO 16000 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds1 ::: SELECT  id,name,age  FROM user_1  WHERE id = ? ::: [[1]]//查询结果
User(id=1, name=zhangsan, age=20)

这里我们可以看到,实际上根据ID查询的时候,ShardingSphere去ds1库查询了,因为我们按照id分库,id1,可以很清楚的知道它存在ds1库中,所以,ShardingSphere只需要查询ds1库即可。

按照分表规则查询

我们按照年龄查询


2020-01-16 13:04:08.711  INFO 16000 --- [           main] ShardingSphere-SQL                       : Rule Type: sharding
2020-01-16 13:04:08.711  INFO 16000 --- [           main] ShardingSphere-SQL                       : Logic SQL: SELECT  id,name,age  FROM user  WHERE age = ?
2020-01-16 13:04:08.711  INFO 16000 --- [           main] ShardingSphere-SQL                       : SQLStatement: SelectStatement(super=DQLStatement(super=io.shardingsphere.core.parsing.parser.sql.dql.select.SelectStatement@794c5f5e), containStar=false, firstSelectItemStartPosition=8, selectListLastPosition=20, groupByLastPosition=0, items=[CommonSelectItem(expression=id, alias=Optional.absent()), CommonSelectItem(expression=name, alias=Optional.absent()), CommonSelectItem(expression=age, alias=Optional.absent())], groupByItems=[], orderByItems=[], limit=null, subQueryStatement=null, subQueryStatements=[], subQueryConditions=[])
2020-01-16 13:04:08.711  INFO 16000 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds0 ::: SELECT  id,name,age  FROM user_0 WHERE age = ? ::: [[20]]
2020-01-16 13:04:08.711  INFO 16000 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds1 ::: SELECT  id,name,age  FROM user_0  WHERE age = ? ::: [[20]]//查询结果
[User(id=1, name=zhangsan, age=20)]

这里我们可以看到,实际上查询了ds0库和ds1库,因为我们的查询条件没有带分库字段(即id),所以,它需要到每一个库去查询,但是我们是按照age分表的,所以ShardingSphere可以明确的知道我们的age=20的数据应该再user_0表中,所以ShardingSphere没有查询user_1表。

按照普通字段查询

我们按照名称查询


2020-01-16 13:04:08.539  INFO 16000 --- [           main] ShardingSphere-SQL                       : Rule Type: sharding
2020-01-16 13:04:08.540  INFO 16000 --- [           main] ShardingSphere-SQL                       : Logic SQL: SELECT  id,name,age  FROM user WHERE name = ?2020-01-16 13:04:08.540  INFO 16000 --- [           main] ShardingSphere-SQL                       : SQLStatement: SelectStatement(super=DQLStatement(super=io.shardingsphere.core.parsing.parser.sql.dql.select.SelectStatement@561d88ee), containStar=false, firstSelectItemStartPosition=8, selectListLastPosition=20, groupByLastPosition=0, items=[CommonSelectItem(expression=id, alias=Optional.absent()), CommonSelectItem(expression=name, alias=Optional.absent()), CommonSelectItem(expression=age, alias=Optional.absent())], groupByItems=[], orderByItems=[], limit=null, subQueryStatement=null, subQueryStatements=[], subQueryConditions=[])
2020-01-16 13:04:08.540  INFO 16000 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds0 ::: SELECT  id,name,age  FROM user_0  WHERE name = ? ::: [[zhangsan]]
2020-01-16 13:04:08.540  INFO 16000 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds0 ::: SELECT  id,name,age  FROM user_1  WHERE name = ? ::: [[zhangsan]]
2020-01-16 13:04:08.540  INFO 16000 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds1 ::: SELECT  id,name,age  FROM user_0  WHERE name = ? ::: [[zhangsan]]
2020-01-16 13:04:08.540  INFO 16000 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds1 ::: SELECT  id,name,age  FROM user_1 WHERE name = ? ::: [[zhangsan]]
[User(id=1, name=zhangsan, age=20)]

这里我们可以看到,按照名称查询的时候(名称不是分库/分表字段),ShardingSphere不知道名称为zhangsan的数据在哪一个库哪一个表中,所以ShardingSphere必须查询全部库表(即全路由)。

按照分片规则查询

//这里我们按照条件查询public List<User> selectUserByCondition(User user) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();if (user.getId()!= null){queryWrapper.eq("id", user.getId());}if (user.getAge()!= null){queryWrapper.eq("age", user.getAge());}if (user.getName()!= null){queryWrapper.eq("name", user.getName());}return baseMapper.selectList(queryWrapper);}//日志2020-01-16 13:51:01.214  INFO 9368 --- [           main] ShardingSphere-SQL                       : Rule Type: sharding
2020-01-16 13:51:01.215  INFO 9368 --- [           main] ShardingSphere-SQL                       : Logic SQL: SELECT  id,name,age  FROM user  WHERE id = ? AND age = ?
2020-01-16 13:51:01.215  INFO 9368 --- [           main] ShardingSphere-SQL                       : SQLStatement: SelectStatement(super=DQLStatement(super=io.shardingsphere.core.parsing.parser.sql.dql.select.SelectStatement@64f32e9e), containStar=false, firstSelectItemStartPosition=8, selectListLastPosition=20, groupByLastPosition=0, items=[CommonSelectItem(expression=id, alias=Optional.absent()), CommonSelectItem(expression=name, alias=Optional.absent()), CommonSelectItem(expression=age, alias=Optional.absent())], groupByItems=[], orderByItems=[], limit=null, subQueryStatement=null, subQueryStatements=[], subQueryConditions=[])
2020-01-16 13:51:01.215  INFO 9368 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds1 ::: SELECT  id,name,age  FROM user_0  WHERE id = ? AND age = ? ::: [[1, 20]]

这里我们按照分库+分表字段进行查询,可以发现ShardingSphere只进行了一次查询操作,ShardingSphere精准的查询了ds1库下的user_0表。所以如果我们采用分库分表的策略,查询的时候尽量带上分库分表规则字段,否则效率很低。

总结

这里我们学习了分库分表的基本操作,按照字段分库分表,把大量数据拆分到多个数据库表中,减轻了对数据库的压力,同时提升了数据库的瓶颈,但是同时也引入了一些需要注重的点,以后的文章将会介绍更多的点。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Apache HttpClient链接如何实现复用,如何使用连接池

    Apache HttpClient链接如何实现复用,如何使用连接池 注:所有getter/setter 略 /*** http请求配置** @date 2019/12/18 11:06*/ public class HttpRequestConfig {/*** 从连接池中获取链接的超时时间,单位毫秒* @date 2019/12/17 18:42**/private int connectionRequestTimeo…...

    2024/5/5 20:16:16
  2. POJ 3680 Intervals 费用流

    http://poj.org/problem?id=3680题目大意:给nnn个开区间,每一个区间都有对应的权值,让你从这nnn个区间中任意选取若干个区间,使得权值之和最大且在实数轴上每个整数被覆盖的次数<=k<=k<=k,输出这个最大的权值。 思路:费用流,这玩意第一次见真的头大。下面这个…...

    2024/3/29 12:52:53
  3. hadoop的安装和介绍

    1 大数据 1.1 大数据概念 大数据(big data), IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合, 是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 1.2 大数据的特征 Volume(大量…...

    2024/4/22 9:46:45
  4. 终端未能正确启动,因为你的系统已启用旧版控制台模式;要解决此问题,请取消选择“使用旧版控制台”cmd.exe 的属性。

    vscode打开的cmd窗口, cmd窗口左上角右键属性-->默认设置,取消“使用旧版控制台”(因为之前勾选了。)重启vscode就可以了。如果不行,再次检查勾选是否取消...

    2024/4/20 13:56:13
  5. meta和link标签的使用

    <meta>标签 <meta charset="UTF-8"> 1.charset 字符集 2.UTF-8 属于字符集中的一种编码格式 作用:设置网页编码—>防止网页乱码 设置网页关键字 <meta name="keywords" content="男装,女装,各种稀奇古怪的装"> 总结 1…...

    2024/4/25 1:14:26
  6. python数据分析与挖掘实战学习笔记(二)

    python数据分析与挖掘实战学习笔记(二) 根据观测,调查收集到初步的样本数据后,接下来要考虑的问题是:样本数据集的数量和质量是否满足模型构建的要求? 数据质量分析 缺失值分析 缺失值的影响 1)数据挖掘建模将丢失大量的有用信息 2)数据挖掘模型所表现出的不确定性更加…...

    2024/4/12 7:28:46
  7. QT5.14入门教程GUI(八)第8个QT程序-下拉列表框-QComboBox

    QT5.14入门教程GUI(八)第8个QT程序-下拉列表框-QComboBox1、新建项目,改名称8ComboBox2、改类名,3、打开UI界面,双击;找到左侧,按钮;单击,拖到右侧界面中释放;2个Combo Box 2个 Group Box 3 个Push Button 1个 Check Box 效果如下图;4、在头文件中,dialog.h 添…...

    2024/3/30 22:15:54
  8. RFID如何工作以及如何制作基于Arduino的RFID门锁

    在本教程中,我们将学习什么是RFID,如何工作以及如何制作基于Arduino的RFID门锁。您可以观看以下视频或阅读下面的书面教程以了解更多详细信息。 RFID如何工作以及如何制作基于Arduino的RFID门锁 概述 RFID代表射频识别,它是一种非接触式技术,已在许多行业中广泛用于人员跟踪…...

    2024/3/29 12:52:47
  9. Python3 使用 SQLalchemy 如何判断某个字段为空 None

    SQLalchemy 是 Python 中的 ORM 模型,在开发的过程中,遇到了如何对字段值进行判空的坑 方法一 table.name is None 这样的写法 Python 的解释器不会报错,但是结果和预期不符,解释器直接忽略这一行 方法二 table.name == None 这样的写法是可以通常测试的,但是不符合 PEP8 …...

    2024/4/24 20:30:08
  10. 学习OpenCV之Mat创建

    Mat 为OpenCV中的核心数据结构,主要负责图像数据的保存,Mat创建方法有很多种Mat构造函数可以使用Mat构造函数,创建Mat,Mat构造函数有多种形式的参数,来满足要求Mat 主要构造函数DescriptionMat()默认构造函数Mat(int rows, int cols, int type)矩阵的行和列或者是图片的高…...

    2024/4/25 8:12:30
  11. windbg+winXP或win7 双机调试配置

    附:windbg下载路径:(windbg已不提供单独下载,wdk驱动开发工具包里附带有这个调试器.官网提供下载:) https://developer.microsoft.com/zh-cn/windows/hardware 方法一:virtualKD软件配置(通信速率很好,推荐): 下载链接: sysprogs.com/legacy/virtualkd/download/ 运行下载下来的…...

    2024/4/23 21:50:24
  12. Pigeon的一次调用客户端发生了什么

    Pigeon是美团点评的RPC的框架,涉及很多模块,服务注册发现,负载均衡,路由,容灾,故障转移,消息传输等等,要想了解这些模块的实现机制,首先要找到一个入手点,作为一个RPC框架,最重要的当然就是服务之间的请求调用及数据传输了,那么我们就来看一下pigeon客户端的一次调…...

    2024/4/14 10:25:08
  13. Controller报错:java.lang.NoSuchMethodException: java.util.List.()

    报错详情: java.lang.NoSuchMethodException: java.util.List.<init>() 以及 No primary or default constructor found for interface java.util.List 示例: /** * 此接口会产生以上的报错 */ @GetMapping("sample") public void sample(List<Integer&g…...

    2024/3/29 12:52:43
  14. GDUT_寒假训练题解报告_图论专题_个人题解报告——题目:L - Til the Cows Come Home

    GDUT_寒假训练题解报告_图论专题_个人题解报告——题目:L - Til the Cows Come Home 题目: Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessie needs her beau…...

    2024/3/29 7:38:59
  15. QT之控件叠加显示

    在项目中经常碰到这种情况,比如UI上的同一个区域既要显示图片又要显示文字时,但是一个label只能显示其中一个,这个时候就需要两个label叠加显示了,比如下面一个显示图片,上面一个显示文字。本文以label叠加显示为例,详细介绍一下控件叠加的方法:1. 新建一个带ui的工程,…...

    2024/5/3 18:16:11
  16. redis的简单介绍

    redis的介绍 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为…...

    2024/4/26 1:28:22
  17. 随机抽奖

    /*** 经常要从多个选项中随机选择一个,不过,不同选项经常有不同的权重。** 比如,给用户随机奖励,* 三种面额:1元、5元和10元,权重分别为70、20和10。这个怎么实现呢?** 实现的基本思路是,使用概率中的累计概率分布。** 以上面的例子来说,计算每个选项的累计概率值,* …...

    2024/4/23 17:24:22
  18. iOS开发之常见的URLScheme

    常见的URLScheme见此链接常见的URLScheme在这个基础之上我自己再添加几个掌上生活 cmblife://买单吧 mdb://浦发信用卡 spdbccc://平安口袋银行 paesuperbank://阳光惠生活--光大银行 yghsh://...

    2024/4/25 21:44:15
  19. 从零开始的编程

    算法笔记从零开始2020/1/16前言今日算法01:归并排序今日算法02:快速排序: 2020/1/16 前言 每天坚持写点东西,从基础算法开始做起; 今日算法01:归并排序 时间复杂度:O(nlogn) 1.递归实现: #include<cstdio> const int maxn = 100; int calcount = 0;//统计计算次数…...

    2024/5/2 23:57:54
  20. HttpSession简单介绍

    简介:HttpSession是由JavaWeb提供的,用来会话跟踪的类.session是服务端对象,保存在服务器端. HttpSession是Servilet三大域对象之一(request,session,application),所以可以通过get/set/removeAttribute设置属性 HttpSession底层依赖Cookie,或者URL重写,因为需要靠它们获取sess…...

    2024/3/29 12:52:39

最新文章

  1. 面试中算法(使用栈实现队列)

    使用栈来模拟一个队列&#xff0c;要求实现队列的两个基本操作:入队、出队。 栈的特点&#xff1a;先入后出&#xff0c;出入元素都是在同一端&#xff08;栈顶&#xff09;。 队列的特点&#xff1a;先入先出&#xff0c;出入元素是在两端&#xff08;队头和队尾)。 分析&…...

    2024/5/6 5:27:14
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 前端开发攻略---Vue通过自定义指令实现元素平滑上升的动画效果(可以自定义动画时间、动画效果、动画速度等等)。

    1、演示 2、介绍 这个指令不是原生自带的&#xff0c;需要手动去书写&#xff0c;但是这辈子只需要编写这一次就好了&#xff0c;后边可以反复利用。 3、关键API IntersectionObserver IntersectionObserver 是一个用于监测元素是否进入或离开视口&#xff08;viewport&#x…...

    2024/5/5 1:29:36
  4. 腾讯云轻量服务器流量不够用了会怎么样?

    腾讯云轻量应用服务器是限制月流量的&#xff0c;如果当月流量不够用了&#xff0c;流量超额了怎么办&#xff1f;流量超额后&#xff0c;需要另外支付流量费&#xff0c;如果你的腾讯云账号余额&#xff0c;就会自动扣除对应的流量费&#xff0c;如果余额不足&#xff0c;轻量…...

    2024/5/1 13:01:36
  5. 数据挖掘中的PCA和KMeans:Airbnb房源案例研究

    目录 一、PCA简介 二、数据集概览 三、数据预处理步骤 四、PCA申请 五、KMeans 聚类 六、PCA成分分析 七、逆变换 八、质心分析 九、结论 十、深入探究 10.1 第 1 步&#xff1a;确定 PCA 组件的最佳数量 10.2 第 2 步&#xff1a;使用 9 个组件重做 PCA 10.3 解释 PCA 加载和特…...

    2024/5/5 8:53:00
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57