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

【五一创作】Springboot+多环境+多数据源(MySQL+Phoenix)配置及查询(多知识点)

文章目录

  • 1. 背景
  • 2. 技术点
  • 3 子模块依赖SpringBoot设置
  • 4. 多环境配置
    • 4.1 application.yml
    • 4.2 application-pro.yml
  • 5. 多数据源配置
    • 5.1 yml配置
    • 5.2 自定义数据源在Java中配置
      • 5.2.1 PhoenixDataSourceConfig
      • 5.2.2 MysqlDataSourceConfig
  • 6. 完整的Pom
  • 6. 测试
    • 6.1 Mapper配置
    • 6.2 方法调用
    • 6.3 查询

1. 背景

实时数据展示,通常分两部分,
一部分是离线数据计算,这部分通过大数据程序计算好后,同步到MySQL中。
一部分是实时程序,这部分是Flink实时写入Phoenix表中。
这样两部分拼接好后,就是完整的实时数据部分,所以现在一个接口查询需要将MySQL和Phoenix中的表查询并合并在一起。

2. 技术点

通过本篇博客,将可以学习到Spring多环境配置、多数据源配置、数据库自定义连接池设置、子模块搭建SpringBoot程序等内容。

  • 多数据源配置
  • springboot多环境设置
  • 数据库连接池Druid配置

3 子模块依赖SpringBoot设置

由于我的项目是一个子模块,已经存在父模块,无法再添加Parent模块引入Springboot,所以需要通过依赖方式引入Springboot包。
Pom中依赖设置如下:

    <dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.6.14</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

4. 多环境配置

通常开发环境分为dev、test、pro三个环境,所以在Springboot中需要根据不同的环境使用不同的配置文件,在resources中建立以下四个文件。
application.yml
application-dev.yml
application-pro.yml
application-test.yml
在这里插入图片描述

4.1 application.yml

其中,application.yml配置如下:

spring:profiles:active: "@profileActive@"
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true

mybatis-plus是作为公共的配置部分放到这里的。
spring.profiles.active是读取动态配置的,这里的@profileActive@需要和Pom文件联动设置。
Pom文件中设置如下:

<!--多环境配置优先级,默认配置dev --><profiles><profile><id>dev</id><properties><profileActive>dev</profileActive></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><id>test</id><properties><profileActive>test</profileActive></properties></profile><profile><id>pro</id><properties><profileActive>pro</profileActive></properties></profile></profiles><build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources></build>

通过以上的设置以后,就可以在 idea的maven中看到如下的配置。
在这里插入图片描述

4.2 application-pro.yml

这里可以根据具体的环境,进行不一样的配置

spring:config:activate:on-profile: prodatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://IP:3306/WEB_SERVER?characterEncoding=utf-8&useSSL=falseusername: testpassword: test
server:port: 8802

spring.config.active.on-profile 注意这个是springboot 2.4版本以后更改的。
之前的版本使用的是spring.profiles,但是不推荐使用了。

application-dev.yml在下面重点说明。

5. 多数据源配置

一个服务引入多个数据源时,需要分别定义每个数据源的配置。所以这里我们以在application-dev.yml配置为例子。

5.1 yml配置

通常以下面方式在yml中定义数据源。

spring:datasource:db1:xxxxxxdb2:yyyyyy  

我们这里的需求是mysql和phoenix两个数据源如下,并且修改了连接池为Druid:
在这里插入图片描述

完整内容如下:

spring:config:activate:on-profile: devdatasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:initial-size: 5                                       # 初始化大小min-idle: 10                                          # 最小连接数max-active: 20                                        # 最大连接数max-wait: 60000                                       # 获取连接时的最大等待时间min-evictable-idle-time-millis: 300000                # 一个连接在池中最小生存的时间,单位是毫秒time-between-eviction-runs-millis: 60000              # 多久才进行一次检测需要关闭的空闲连接,单位是毫秒filters: stat,wall                                    # 配置扩展插件:stat-监控统计,log4j-日志,wall-防火墙(防止SQL注入),去掉后,监控界面的sql无法统计test-on-borrow: true                                  # 申请连接时执行validationQuery检测连接是否有效,默认true,开启后会降低性能test-on-return: true                                  # 归还连接时执行validationQuery检测连接是否有效,默认false,开启后会降低性能test-while-idle: true                                 # 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,默认false,建议开启,不影响性能validation-query: SELECT 1                            # 检测连接是否有效的 SQL语句,为空时以下三个配置均无效connectionTestQuery: SELECT 1stat-view-servlet:enabled: true                                       # 是否开启 StatViewServletallow: 127.0.0.1                                    # 访问监控页面 白名单,默认127.0.0.1deny: ip                                            # 访问监控页面 黑名单login-username: admin                               # 访问监控页面 登陆账号login-password: admin                               # 访问监控页面 登陆密码filter:stat:enabled: true                                     # 是否开启 FilterStat,默认truelog-slow-sql: true                                # 是否开启 慢SQL 记录,默认falseslow-sql-millis: 5000                             # 慢 SQL 的标准,默认 3000,单位:毫秒merge-sql: false                                  # 合并多个连接池的监控数据,默认falsewall:config:multi-statement-allow: trueweb-stat-filter:enabled: trueexclusions:- "*.js"- "*.gif"- "*.jpg"- "*.png"- "*.css"- "*.ico"- "/monitor/druid/*"mysql: # 数据源1driver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://XXXXipXXXXX:3306/TEST_SERVER?characterEncoding=utf-8&useSSL=falseusername: testpassword: testmapper-locations: classpath*:mapper/mysql/*.xmlfilters: stat,walltest-on-borrow: truetest-while-idle: truevalidation-query: SELECT 1phoenix: # 数据源2driver-class-name: org.apache.phoenix.jdbc.PhoenixDriverjdbc-url: jdbc:phoenix:IP地址:2181:/hbaseusername: phoenixpassword: ""mapper-locations: classpath*:mapper/phoenix/*.xmlfilters: stattest-on-borrow: truetest-while-idle: truevalidation-query: SELECT 1
server:port: 8801

需要说明的是,在spring.datasource.druid下面的配置,针对phoenix数据源,只是部分生效。
例如filters: stat,wall 如果配置在spring.datasource.druid下面,针对phoenix的数据源其实并没有生效。
我们在druid的监控页面中会发现filter类名为空。
在这里插入图片描述
所以在spring.datasource.phoenix下面又加了filters: stat之后才生效的。如下:
在这里插入图片描述

如果在Druid中的数据源只是显示(*) property for user to setup,是因为还没有接口查询,并不是什么配置有问题,接口查询一次就会显示有记录了。
在这里插入图片描述

注意点:

这里配置了自定义的数据连接池是阿里的Druid,默认的是Hikari。
关于Druid和Hikari的比较,可以大概参考下图,网上找的。
在这里插入图片描述

5.2 自定义数据源在Java中配置

除了在yml中配置spring.datasource.mysql或者spring.datasource.phoenix自定义数据源以外,还需要再java中单独配置数据源。
在这里插入图片描述
新建config文件夹,针对不同的数据源进行单独的配置。

5.2.1 PhoenixDataSourceConfig

注意:自定义数据源中,虽然我们设置了@ConfigurationProperties(prefix = "spring.datasource.phoenix"),但是如果直接使用DataSourceBuilder.create().build();创建datasource,
并不会生效,可能是多数据源配置的原因,必须手工来创建,如下:

@Slf4j
@Configuration
@MapperScan(basePackages = "com.king.mapper.phoenix",sqlSessionTemplateRef = "phoenixSqlSessionTemplate")
public class PhoenixDataSourceConfig {@Value("${spring.datasource.phoenix.mapper-locations}")private String mapperLocation;@Value("${spring.datasource.phoenix.jdbc-url}")private String jdbcUrl;@Value("${spring.datasource.phoenix.driver-class-name}")private String driverClassName;@Value("${spring.datasource.phoenix.username}")private String username;@Value("${spring.datasource.phoenix.password}")private String password;@Bean@ConfigurationProperties(prefix = "spring.datasource.phoenix")public DataSource phoenixDataSource() throws SQLException {log.info("init phoenix data source");
//        DataSource ds = DataSourceBuilder.create().build();DruidDataSource ds = new DruidDataSource();ds.setUrl(jdbcUrl);ds.setDriverClassName(driverClassName);ds.setUsername(username);ds.setPassword(password);Properties prop = new Properties();prop.setProperty("phoenix.schema.isNamespaceMappingEnabled","true");prop.setProperty("phoenix.schema.mapSystemTablesToNamespace","true");ds.setConnectProperties(prop);return ds;}@Beanpublic SqlSessionFactory phoenixSqlSessionFactory(@Qualifier("phoenixDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocation));bean.setDataSource(dataSource);return bean.getObject();}@Beanpublic DataSourceTransactionManager phoenixTransactionManager(@Qualifier("phoenixDataSource") DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Bean("phoenixSqlSessionTemplate")public SqlSessionTemplate phoenixSqlSessionTemplate(@Qualifier("phoenixSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);}}

关于phoenix的一些特殊连接设置可以通过ds.setConnectProperties(prop)来进行特殊的配置。
@Value是读取的yml中设置的一些属性。

5.2.2 MysqlDataSourceConfig

MySql数据源的设置如下:

@Slf4j
@Configuration
@MapperScan(basePackages = "com.king.mapper.mysql", sqlSessionTemplateRef = "mysqlSqlSessionTemplate")
public class MysqlDataSourceConfig {@Value("${spring.datasource.mysql.mapper-locations}")private String mapperLocation;@Value("${spring.datasource.mysql.jdbc-url}")private String jdbcUrl;@Value("${spring.datasource.mysql.driver-class-name}")private String driverClassName;@Value("${spring.datasource.mysql.username}")private String username;@Value("${spring.datasource.mysql.password}")private String password;
//    @Value("${spring.datasource.ds1.initialSize}")
//    private int initialSize;
//    @Value("${spring.datasource.ds1.minIdle}")
//    private int minIdle;
//    @Value("${spring.datasource.ds1.maxActive}")
//    private int maxActive;@Bean@Primary@ConfigurationProperties(prefix = "spring.datasource.mysql")public DataSource mysqlDataSource() {
//        DataSource ds = DataSourceBuilder.create().build();log.info("init mysql data source");DruidDataSource ds = new DruidDataSource();ds.setUrl(jdbcUrl);ds.setDriverClassName(driverClassName);ds.setUsername(username);ds.setPassword(password);return ds;}@Bean@Primarypublic SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);//开启驼峰MybatisConfiguration configuration = new MybatisConfiguration();configuration.setMapUnderscoreToCamelCase(true);bean.setConfiguration(configuration);//指定当前数据源的mybatis的Xml文件的路径"bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocation));return bean.getObject();}@Bean@Primarypublic DataSourceTransactionManager mysqlTransactionManager(@Qualifier("mysqlDataSource") DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Bean@Primarypublic SqlSessionTemplate mysqlSqlSessionTemplate(@Qualifier("mysqlSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);}}

关于springboot默认的数据源自动配置选项,最好排除掉,在当时测试时是不用手工关闭的,
后来过了一天又出现找不到@Value定义的变量,所以后来又加上了。

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class PhoenixApplication {public static void main(String[] args) {SpringApplication.run(PhoenixApplication.class, args);}
}

6. 完整的Pom

pom文件

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>bigdata_study</artifactId><groupId>com.king</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>phoenix_client</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.apache.phoenix</groupId><artifactId>phoenix-client-hbase</artifactId><version>2.4.0-5.1.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.73</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.6.14</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><!--多环境配置优先级,默认配置dev --><profiles><profile><id>dev</id><properties><profileActive>dev</profileActive></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><id>test</id><properties><profileActive>test</profileActive></properties></profile><profile><id>pro</id><properties><profileActive>pro</profileActive></properties></profile></profiles><build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources></build></project>

6. 测试

6.1 Mapper配置

根据不同的数据源,创建不同的目录,以及各自的查询方法。
在这里插入图片描述

6.2 方法调用

在Service中调用2个数据源查询,并将结果集合并一起。

@Service
public class GmxHotTradeServiceImpl extends ServiceImpl<GmxHotTradePhoenixMapper, GmxHotTradeDTO> implements GmxHotTradeService {@Autowiredprivate GmxHotTradePhoenixMapper gmxHotTradePhoenixMapper;@Autowiredprivate GmxHotTradeMysqlMapper gmxHotTradeMysqlMapper;@Overridepublic List<GmxHotTradeDTO> queryList(String action,Integer time) {List<GmxHotTradeDTO> hotTradeList1 = gmxHotTradePhoenixMapper.queryHotTrade(action, time);List<GmxHotTradeDTO> hotTradeList2 = gmxHotTradeMysqlMapper.queryHotTrade(action, time);hotTradeList1.addAll(hotTradeList2);return hotTradeList1;}
}

6.3 查询

通过在前端查询Controller中的接口,可以在Druid的监控页面查询到请求的信息:
http://localhost:8801/druid/index.html

在这里插入图片描述
SQL监控:
在这里插入图片描述
URL请求:
在这里插入图片描述

相关文章:

【五一创作】Springboot+多环境+多数据源(MySQL+Phoenix)配置及查询(多知识点)

文章目录 1. 背景2. 技术点3 子模块依赖SpringBoot设置4. 多环境配置4.1 application.yml4.2 application-pro.yml 5. 多数据源配置5.1 yml配置5.2 自定义数据源在Java中配置5.2.1 PhoenixDataSourceConfig5.2.2 MysqlDataSourceConfig 6. 完整的Pom6. 测试6.1 Mapper配置6.2 方…...

Python小姿势 - 线程和进程:

线程和进程&#xff1a; Python里面线程是真正的并行执行&#xff0c;进程是可以并行执行的。 所谓进程&#xff0c;就是操作系统中执行一个程序的独立单元&#xff0c;它是系统进行资源分配和调度的基本单位。一个进程可以创建和撤销另一个进程&#xff0c;同一个进程内可以并…...

Mysql 锁

目录 0 课程视频 1 概述 1.1 多用户 并发访问 -> 为了数据一致性(多用户) 1.2 全局锁 数据库所有表 1.3 表级锁 每次操作 锁整张表 1.4 行级锁 每次操作 锁对应行 2 全局锁 ->锁后只读 -> 全库逻辑备份 2.1 阻塞DML /DDL 可DQL读 2.2 语法 2.2.1 加锁 flush…...

基于ssm的论坛系统的设计与实现【附源码】

基于ssm的论坛系统的设计与实现 摘 要 早期的网络论坛系统已经诞生一段时间&#xff0c;随着互联网技术的发展&#xff0c;它已经从最初的简单电子公告板系统变成了一种丰富的论坛系统社区模型。人们通过论坛系统进行信息的获取、发布和交流已经成为一种普遍的社交方式&#x…...

Vue中的事件修饰符

Vue中的事件修饰符: 1.prevent: 阻止默认事件 (常用) : 2.stop: 阻止事件冒泡 (常用) : 3.once: 事件只触发一次(常用) : 4.capture:使用事件的捕获模式: 5.self: 只有event.target是当前操作的元素是才触发事件; 6.passive:事件的默认行为立即执行&#xff0c;无需等待事件回调…...

如何保证Redis和数据库的一致性

关注我&#xff0c;升职加薪就是你&#xff01; 当我们对数据进行修改的时候&#xff0c;到底是先删缓存&#xff0c;还是先写数据库&#xff1f; 1、如果先删缓存&#xff0c;再写数据库&#xff1a;在高并发场景下&#xff0c;当第一个线程删除了缓存&#xff0c;还没来得及写…...

Ubantu docker学习笔记(八)私有仓库

文章目录 一、建立HTTPS链接1.在仓库服务器上获取TLS证书1.1 生成证书颁发机构证书1.2 生成服务器证书1.3 利用证书运行仓库容器 2.让私有仓库支持HTTPS3.客户端端配置 二、基本身份验证三、对外隐藏仓库服务器3.1 在服务器端3.2 在客户端进行 四、仓库可视化 在前面的学习中&a…...

【五一创作】网络协议与攻击模拟-01-wireshark使用-捕获过滤器

协议 TCP/IP协议簇 网络接口层(没有特定的协议)PPPOE 物理层 数据链路层 网络层:IP (v4/v6) ARP (地址解析协议) RARP ICMP (Internet控制报文协议) IGMP 传输层:TCP(传输控制协议) UDP(用户数据报协议) 应用层:都是基于传输层协议的端口,总共端口0~65535 0~1023 HTTP—t…...

网络-IP地址(嵌入式学习)

IP地址 基本概念IPv4 五类&#xff1a;A B C D E特殊地址子网掩码子网号概念IPv6优势举个栗子 基本概念 IP地址是Internet中主机的标识 IP地址&#xff08;Internet Protocol Address 互联网国际地址&#xff09;是一种在Internet上的给主机编址的方式&#xff0c;它主要是为…...

一文介绍Linux EAS

能量感知调度&#xff08;Energy Aware Scheduling&#xff0c;简称EAS&#xff09;是目前Android手机中Linux线程调度器的基础功能&#xff0c;它使调度器能预测其决策对CPU能耗的影响。依靠CPU的能量模型&#xff08;Energy Model&#xff0c;简称EM&#xff09;&#xff0c;…...

【五一创作】【Midjourney】Midjourney 连续性人物创作 ① ( 通过垫图方式生成类似图像 )

文章目录 一、Midjourney 生成图像二、通过垫图方式生成类似图像 一、Midjourney 生成图像 Midjourney 可以生成高质量的图像 , 但是 生成过程有很大的随机性 , 输入同样的提示词指令 , 其输出结果也存在很大的不同 ; 如果要 生成稳定的人物角色 , 场景 , 描述连贯的内容 , 这…...

牛客刷题错题记录【03】

链接&#xff1a;https://www.nowcoder.com/questionTerminal/8242fbf4b3a241219989b3e1d0ee82db 来源&#xff1a;牛客网 下列关于Vue和React的描述错误的是&#xff08; Vue进行数据拦截/代理&#xff0c;对数据更敏感&#xff0c;数据驱动视图自更新&#xff0c;而React需…...

maven-gpg-plugin gpg禁用交互式输入密码 免密码输入 设置默认密码 关闭pinentry-qt输入 passphrase

一、问题描述 在使用maven-gpg-plugin打包jar时,默认情况下&#xff0c;每次都会弹出对话框要你输入密码&#xff1a; 这就有点烦&#xff0c;有啥办法可以设置默认方法没&#xff1f;网上找了一圈&#xff0c;通过搜索关键词“passphrase”&#xff0c;找到了一些教程&#x…...

急需国产化替代的重要的工程软件有哪些?

急需国产化替代的重要的工程软件有哪些&#xff1f; 软件一&#xff1a;AutoCAD等领域常用设计软件 AutoCAD由Autodesk公司开发的工程辅助设计软件&#xff0c;目前是设计领域 最重要的工程软件。在高端3D的CAD领域&#xff0c;国产软件几乎全军覆没&#xff0c;在中 低端还有…...

计算机组成原理 4.2.1存储芯片连接

连接原理 主存储器 通过数据总线、地址总线和控制总线和CPU相连数据总线的位数正比于数据传输率地址总线的位数决定可寻址的最大地址空间控制总线(读/写)指出总线周期的类型和本次输入/输出完成的时刻 但是实际中存储芯片往往很小难以满足地址和数据的位数需求&#xff0c;此…...

这份【互联网项目全流程表】,实在是泰裤辣!!!

互联网行业是一个快速变化的行业&#xff0c;作为半个互联网人。太明白用户和环境每天都在不停地变化是什么感受了。 ​从项目开始到项目结束&#xff0c;要经历立项、计划、执行、结项&#xff0c;项目一周一个&#xff0c;一周一个。&#xff08;**的&#xff09;为了省时间…...

JAVA医院管理云HIS统计报表子系统、系统管理字系统功能实现

一、统计报表子系统 统计报表子系统功能模块&#xff1a;包括门诊收入汇总、住院收入汇总、收费统计报表、收费明细报表、 缴款日报、门诊收费汇总、住院科室日志、住院结算汇总、医疗项目统计、检查项目统计、 检验项目统计、月末收支汇总、药品进销存统计。 &#xff08;1…...

5.Java中抽象类和接口

抽象类与接口 相同不同先从抽象类说起再从接口说起 相同 1.两者都不能实例化&#xff0c;因为他们都不全。&#xff08;例如可以实例化一个苹果&#xff0c;但是不能实例化水果&#xff09; 2.一个类可以实现多个接口&#xff0c;但是只能继承一个抽象类 3.如果这个类实现了接…...

中国平安将在2023年出现转机,复苏才刚刚开始

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 在解封后股价出现短暂反弹之后&#xff0c;由于市场担忧中国平安&#xff08;02318&#xff09;人寿保险部门新业务NBV&#xff08;用于衡量寿险公司新业务价值的一个重要指标,当一家保险公司的NBV指标越高,那么说明每新增…...

CUDA编程(六):代码分析与调试

CUDA编程&#xff08;六&#xff09;&#xff1a;代码分析与调试 代码分析与调试方法使用printf打印变量信息使用CUDA的错误检查功能使用CUDA-GDB进行调试使用Nsight进行调试使用nvprof / nvvp工具 参考文献 代码分析与调试方法 CUDA代码的运行时可能会遇到内存溢出、内存非法…...

身份鉴别解读与技术实现分析(1)

6.1.4.1 身份鉴别 本项要求包括: a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施 在等级保护体系中,级别越高…...

为什么说7.38万的比亚迪海鸥比仰望更重要

出品 | 何玺 排版 | 叶媛 售价7.38万元起步、速度却能上130迈。注意看&#xff0c;这就是A0级轿车中的“新皇”—比亚迪海鸥。 出乎车圈事前的意料&#xff0c;海鸥这款A0级车型&#xff0c;在上海车展里获得的人气和追捧并不逊色于百万豪车仰望。 01 比亚迪海鸥&#xff0…...

【LLM】低成本部署大语言模型, 并且还能达到部署在GPU上差不多的效果

目录 前言 部署 效果 问题1&#xff1a;人类为什么需要睡觉&#xff1f; 问题2&#xff1a;世界上最高的山峰是什么&#xff1f; 前言 点进来看本文的应该都知道模型对硬件的要求很高, 那我也不废话了, 直接安排最近发现的一个开源项目, 它可以帮助我们降低部署模型的成…...

Doris(25):Doris的函数—Bitmap函数

1 BITMAP_AND(BITMAP lhs, BITMAP rhs) 计算两个输入bitmap的交集,返回新的bitmap. select bitmap_count(bitmap_and(to_bitmap(1), to_bitmap(2))) cnt; select bitmap_count(bitmap_and(to_bitmap(1), to_bitmap(1))) cnt; 2 BITMAP_CONTAINS(BITMAP bitmap, BIGINT input…...

简单分享微信小程序上的招聘链接怎么做

招聘小程序的主要用户就是企业招聘端和找工作人员的用户端,下面从这两个端来对招聘小程序开发的功能进行介绍。 企业端功能 1、岗位发布:企业根据自身岗位需求,在招聘app上发布招聘岗位及所需技能。 2.简历筛选:根据求职者提交的简历选择合适的简历,并对公开发布的简历进行筛…...

【英语】大学英语CET考试,翻译部分(修饰后置,定语从句,插入语,多动句,无主句)

文章目录 3大知识点与出题形式1、修饰后置&#xff08;使用介词&#xff09;2、修饰后置&#xff08;定语从句&#xff08;被逼无奈&#xff09;/which&#xff08;非限制性&#xff0c;加高级&#xff09;&#xff09;3、修饰后置&#xff08;插入语或同位语&#xff08;只有1…...

设计模式——代理模式

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 1、代理模式的基本介绍 2、静态代理 3、JDK动态代理 4、Cglib 代理 5、代理模式 的变体&#xff08;应用场景&#xff09; 1、…...

Shiro-721---漏洞复现

漏洞原理 Shiro rememberMe 反序列化远程代码执行漏洞 由于 Apache Shiro cookie 中通过 AES-128-CBC 模式加密的 rememberMe 字段存 在问题&#xff0c;用户可通过 Padding Oracle 加密生成的攻击代码来构造恶意的 rememberMe 字段&#xff0c;并重新请求网站&#xff0c;进…...

Linux【模拟实现C语言文件流】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、FILE 结构设计2、函数使用及分析3、文件打开 fopen4、文件关闭 fclose5、缓…...

APK文件结构

文件结构 assets文件用来存放需要打包到Android 应用程序的静态资源文件&#xff0c;例如图片资源文件&#xff0c;JSON配置文件&#xff0c;渠道配置文件&#xff0c;二进制数据文件&#xff0c;HTML5离线资源文件等 与res/raw目录不同的数&#xff0c;assets目录支持任意深度…...

现在帮别人做网站赚钱不/免费seo技术教程

点击上方 “ 程序IT圈 ”&#xff0c;选择“置顶公众号”工作日每天早晨7点半准点推文打卡签到本文来源于公号&#xff1a;Java后端技术大家周末好&#xff01;每到周末&#xff0c;就想跟大家分享一些干货&#xff0c;知道大家周末都很有时间&#xff0c;所以今天想跟你推荐来…...

廊坊做网站电话/seo关键词优化外包

问题描述&#xff1a;父组件传如lesser和larger两个参数&#xff0c;并且是ajax从服务器获取的。子组件定义created阶段输出lesser和larger。但larger为空。改成延迟输出则正确。问题来源&#xff1a;https://segmentfault.com/q/1010000008912491提问者的主要问题是没有搞清楚…...

广州市建设工程造价站网站/win10优化软件哪个好

API调用链追踪 微服务架构上通过业务来划分服务的&#xff0c;通过REST调用&#xff0c;对外暴露的一个接口&#xff0c;可能需要很多个服务协同才能完成这个接口功能&#xff0c;如果链路上任何一个服务出现问题或者网络超时&#xff0c;都会形成导致接口调用失败。随着业务的…...

做pc端网站要成本么/网站seo优化免费

文章目录1、简介2、Azkaban特点3、ooize 和 azkaban 特性对比4、安装流程&#xff08;确保时间同步&#xff09;5、案例实操1&#xff09;、单job工作流&#xff08;指定目录创建目录&#xff09;2&#xff09;、多job工作流&#xff08;依赖关系&#xff09;3&#xff09;、Ma…...

保定网站制作公司/线上营销渠道有哪些

由于6.22博主要学测&#xff0c;大半时间学文化课&#xff0c;近期刷题量&写题解的数量会急剧下降。 这题出得挺经典的&#xff0c;首先一眼最小割&#xff0c;考虑朴素的做法&#xff1a;与S联通表示白色&#xff0c;与T联通表示黑色&#xff0c;S向i连流量为w[i]的边&…...

网站建设与设计开题报告/郑州seo建站

为了避免全局变量泛滥导致冲突&#xff0c;最简单有效的办法是用匿名函数将脚本包起来&#xff0c;让变量的作用域控制在函数之内。 转载于:https://www.cnblogs.com/wangxuchun/p/3761181.html...