【云原生】docker 部署 Doris 数据库使用详解

news/2024/10/4 3:46:21/文章来源:https://blog.csdn.net/zhangcongyi420/article/details/141748867

目录

一、前言

二、数据分析概述

2.1 什么是数据分析

2.2 数据分析目的和意义

2.3 数据分析常用的技术和工具

2.3.1 编程语言

2.3.2 数据处理和分析库

2.3.3 数据可视化工具

2.3.4 数据库系统

2.3.5大数据处理框架

2.3.6 云服务和平台

2.3.7 其他工具

三、Doris介绍

3.1 什么是Doris

3.2 Doris核心特性

3.3 Doris核架构组件

3.4 Doris使用场景

四、基于docker搭建Doris

4.1 环境准备

4.1.1 服务器准备

4.1.2 设置机器的linux内核参数

4.2 获取安装包与Doris镜像

4.2.1 下载Doris运行镜像

4.2.3 获取必要的安装包

4.3 启动Doris容器

4.4 修改与配置FE文件

4.4.1 复制安装包到容器

4.4.2 获取网络IP

4.4.3 配置fe的IP地址

4.5 启动fe服务

4.5.1 浏览器访问

4.5.2 fe 服务环境测试

4.6 配置be

4.6.1 配置网络IP

4.6.2 配置JDK

4.7 启动be服务

4.7 数据建表与功能测试

4.7.1 创建测试数据表

4.7.2 创建测试数据并导入

4.7.3 查询数据是否导入成功

4.7.4 使用客户端工具连接

4.7.5 服务启动停止命令补充

五、写在文末


一、前言

随着大数据的发展,数据规模一旦到了一定的量级之后,业务对于数据的消费需求变得越来越强烈,基于数据的分析场景也会越来越多,数据分析也因此伴随着移动互联网的高速发展而飞速发展,具体来说,对数据的分析带来的优势是体现在诸多方面的,也因此当很多公司的业务数据达到一定规模之后就开始逐步深入挖掘数据背后的价值,这也形成了与之相关的数据分析领域的诸多岗位和业务,本篇将先介绍一款在数据分析领域具有重要地位的工具,Doris的搭建和使用。

二、数据分析概述

2.1 什么是数据分析

数据分析是指使用统计学方法、计算机科学技术和领域知识来识别模式、趋势和关联,从而从数据中提取有价值的信息的过程。数据分析可以帮助组织做出更明智的决策,优化业务流程,提高效率,以及发现新的商业机会。

2.2 数据分析目的和意义

数据分析的目的在于从数据中提取有价值的信息,帮助企业或组织更好地理解现状、解决问题、预测未来趋势,并据此作出更明智的决策。以下是数据分析的主要目的:

  • 描述现状

    • 描述性分析:通过总结和汇总数据来描述当前的状态或情况。例如,通过分析销售数据来了解过去一段时间内的销售表现。

    • 绩效评估:评估关键绩效指标(KPIs)以衡量业务活动的效果,如销售额、客户满意度、网站流量等。

  • 发现问题

    • 诊断性分析:探讨数据背后的原因,找出影响结果的关键因素。例如,通过分析退货率高的产品来确定质量问题所在。

    • 异常检测:识别数据中的异常值或不寻常的行为,帮助发现潜在的问题或机会。

  • 预测未来

    • 预测性分析:利用历史数据和统计模型来预测未来的趋势或结果。例如,基于历史销售数据预测下个月的销售量。

    • 趋势分析:识别数据随时间变化的趋势,帮助组织预见市场的变化。

  • 指导决策

    • 规范性分析:提供决策支持,通过分析不同情景下的预期结果来指导最佳行动路径。例如,分析不同的市场推广策略来决定最优方案。

    • 优化运营:通过分析业务流程中的瓶颈来优化操作,提高效率和降低成本。

  • 提升用户体验

    • 个性化推荐:根据用户的偏好和行为模式来提供个性化的推荐和服务,提升用户体验。

    • 用户行为分析:通过分析用户的行为数据来改进产品设计和服务,增加用户粘性和满意度。

  • 支持创新

    • 新机会识别:通过数据分析发现新的市场机会或潜在的产品创新点。

    • 研发辅助:在产品研发过程中,通过数据分析来验证假设、优化设计或评估性能。

  • 风险管理

    • 风险评估:通过分析历史数据来评估潜在的风险水平,例如信用风险、市场风险等。

    • 欺诈检测:通过分析异常模式来识别欺诈行为。

2.3 数据分析常用的技术和工具

数据分析涉及多种技术和工具,这些技术和工具帮助分析师从数据中提取有价值的信息,支持决策制定。以下是数据分析中常用的一些技术和工具:

2.3.1 编程语言

数据分析中,常用的编程语言包括:

  • Python:广泛应用于数据分析,拥有丰富的库如 Pandas、NumPy、SciPy、Matplotlib、Seaborn、Scikit-Learn 等。

  • R:特别适合统计分析,拥有大量的统计和图形库。

  • SQL:用于从关系型数据库中提取和操作数据。

  • Julia:一种高性能的语言,特别适合于科学计算和数据分析。

2.3.2 数据处理和分析库

  • Pandas (Python):提供了高效的数据结构和数据分析工具。

  • NumPy (Python):用于数值计算的基础库。

  • SciPy (Python):提供了科学计算中的高级功能,如优化、插值等。

  • Scikit-Learn (Python):提供了广泛使用的机器学习算法。

  • Statsmodels (Python):用于统计建模。

  • Dplyr (R):提供了数据处理功能,如筛选、排序、聚合等。

  • ggplot2 (R):用于生成高质量的统计图形。

2.3.3 数据可视化工具

  • Matplotlib (Python):基础的绘图库。

  • Seaborn (Python):基于 Matplotlib,提供更高级的图形。

  • Plotly (Python/R):交互式图表库。

  • Tableau:强大的商业智能工具,用于创建交互式仪表板。

  • Power BI:微软的数据可视化工具,用于构建交互式报表。

  • QlikView/Qlik Sense:商业智能和数据可视化软件。

2.3.4 数据库系统

  • 关系型数据库:如 MySQL、PostgreSQL、Oracle、Microsoft SQL Server 等,用于存储结构化数据。

  • NoSQL 数据库:如 MongoDB、Cassandra、Redis 等,用于存储非结构化或半结构化数据。

  • NewSQL 数据库:如 CockroachDB、TiDB 等,结合了传统 SQL 数据库的事务处理能力和 NoSQL 数据库的可扩展性。

2.3.5大数据处理框架

  • Apache Hadoop:分布式存储和处理大规模数据集的框架。

  • Apache Spark:高速集群计算框架,支持批处理、实时数据流处理、机器学习等。

  • Apache Flink:流处理和事件驱动应用的框架。

  • Apache Hive:数据仓库工具,提供 SQL 查询功能。

  • Apache Kafka:分布式流处理平台,用于构建实时数据管道和流应用。

2.3.6 云服务和平台

  • Amazon Web Services (AWS):提供了多种数据分析服务,如 AWS Glue、Amazon Redshift、Amazon S3 等。

  • Google Cloud Platform (GCP):提供了 BigQuery、Dataflow、Dataproc 等数据处理和分析服务。

  • Microsoft Azure:提供了 HDInsight、Azure Databricks、Azure Data Lake 等服务。

2.3.7 其他工具

  • Excel:虽然主要用于办公自动化,但在小型数据集的处理和可视化方面仍然非常流行。

  • Alteryx:用于数据准备、融合和分析的商业软件。

  • KNIME:开源的数据分析平台,支持图形化工作流设计。

这些技术和工具的选择取决于具体的需求、数据规模以及团队的技术栈。不同的工具和技术可以组合使用,形成一套完整的数据分析解决方案。

三、Doris介绍

3.1 什么是Doris

Doris由百度大数据部研发,之前叫百度Palo,于2017年开源,2018年贡献到 Apache 社区后,更名为Doris。

  • Apache Doris是一个现代化的基于MPP(大规模并行处理)技术的分析型数据库产品。简单来说,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果(与Hadoop相似)。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。

  • Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。令您的数据分析工作更加简单高效!

中文文档:快速体验 - Apache Doris

3.2 Doris核心特性

Doris具有如下特点:

  • 列式存储;

  • 基于MPP(大规模并行处理)架构的分析型数据库;

  • 性能卓越,PB级别数据毫秒/秒级响应;

    • TPC-H、TPC-DS性能领先,性价比高,高并发查询,100台集群可达10w QPS,流式导入单节点50MB/s,小批量导入毫秒延迟。

  • 支持标准SQL语言,兼容MySQL协议;

  • 使用简单;

    • 高度兼容MySql协议,支持在线表结构变更高度集成,不依赖于外部存储系统;

  • 高效的聚合表技术;

  • 新型预聚合技术Rollup;

  • 高性能、高可用、高可靠;

    • 多副本,元数据高可用;

  • 极简运维,支持弹性伸缩;

    • 架构优雅,单集群可以水平扩展至200台以上

3.3 Doris核架构组件

Apache Doris 的整体架构非常简单,如下图所示,只有两类进程:

  • Frontend(FE):主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。

  • Backend(BE):主要负责数据存储、查询计划的执行。

这两类进程都是可以横向扩展的,单集群可以支持到数百台机器,数十 PB 的存储容量。并且这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计极大地降低了一款分布式系统的运维成本。

3.4 Doris使用场景

结合上图,数据源经过各种数据集成和加工处理后,通常会入库到实时数据仓库 Apache Doris 和离线湖仓(Hive, Iceberg, Hudi 中)。作为一个分布式列式存储和查询系统,主要用于实时分析和查询海量数据。它适用于以下场景:

四、基于docker搭建Doris

网上关于Doris的搭建参考资料比较多,但是分析和尝试之后,很多跑不通,接下来演示如何基于docker快速搭建起Doris的运行环境

4.1 环境准备

4.1.1 服务器准备

服务器(云服务器或虚拟机均可),2C4G(推荐4C8G),并提前安装并启动docker

4.1.2 设置机器的linux内核参数

在启动doris的be时,需将 Linux操作系统内核参数设置为2000000,这里是Doris官方要求的,直接在Docker宿主机中设置即可

sudo sysctl -w vm.max_map_count=2000000 
sysctl vm.max_map_count

4.2 获取安装包与Doris镜像

4.2.1 下载Doris运行镜像

这个镜像中安装了doris启动需要的环境,不用自己再提前准备环境了,如jdk等。镜像比较大,等待下载完成即可。

docker pull apache/doris:build-env-ldb-toolchain-latest

4.2.3 获取必要的安装包

为了后面使用mysql终端操作,还需要下载mysql的包以及doris的依赖包

# doris程序包
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-1.2.4.1-bin-x86_64.tar.xz # mysql 客户端连接使用的包
wget https://doris-build-hk.oss-cn-hongkong.aliyuncs.com/mysql-client/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz

4.3 启动Doris容器

使用下面的命令运行Doris容器

docker run -d -it --name=doris \
-p 9030:9030 -p 8030:8030 \
apache/doris:build-env-ldb-toolchain-latest \ 
/bin/bash

4.4 修改与配置FE文件

由于本次的环境是基于docker搭建的,后续的操作都会在容器内进行,需要把依赖包拷贝到容器,并进入容器中配置相关的信息。

4.4.1 复制安装包到容器

复制安装包到doris容器中,将上述下载的两个安装包复制到容器内部

docker cp /root/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz doris:/opt 
docker cp /root/apache-doris-1.2.4.1-bin-x86_64.tar.xz doris:/opt

4.4.2 获取网络IP

进入容器修改相关的配置文件,依次执行下面的操作

# 进入容器 
docker exec -it doris bash# 解压文件 
cd /opt/ 
tar -xvf apache-doris-1.2.4.1-bin-x86_64.tar.xz 
tar -xzvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz # 获取本机容器内网ip地址,需修改到配置文件中
hostname -i

4.4.3 配置fe的IP地址

在容器中进行配置,找到配置文件

cd /opt/apache-doris-1.2.4.1-bin-x86_64/fe/conf
vi fe.conf

打开 priority_networks注释 将刚刚 【hostname -i】 打印出来的内网ip替换到

priority_networks = 172.17.0.2/24

4.5 启动fe服务

在容器的解压包目录下,进入bin目录,执行脚本启动fe服务

./start_fe.sh --daemon 

然后使用jps命令检查是否启动成功

测试服务是否正常,看到下面能够正常输出说明服务正常

curl http://127.0.0.1:8030/api/bootstrap

4.5.1 浏览器访问

浏览器地址访问 http://IP:8030/login,账号root,密码为空

登录之后效果如下:

4.5.2 fe 服务环境测试

接下来在mysql中连接fe,默认无密码

/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl
show frontends\G;

如果看到下面的效果,IsMaster、Join 和 Alive 三列均为true,则表示节点正常

4.6 配置be

4.6.1 配置网络IP

和上面配置fe的操作类似,基于上面的操作,继续修改配置文件

cd /opt/apache-doris-1.2.4.1-bin-x86_64/be/conf
vi be.conf

将下面这行配置加进去

priority_networks = 172.17.0.2/24

4.6.2 配置JDK

在启动脚本中需要设置jdk路径,上述下载的镜像jdk的默认路径为 /usr/lib/jvm/java-1.8.0,可以先ehco确认一下,因为路径可能随时版本的变更而改变

进入bin目录,在start_be.sh脚本中添加jdk的路径

vi start_be.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0

4.7 启动be服务

启动be,然后通过mysql客户端工具连接be,即在Doris中添加已经后端节点,参照下面的指令依次执行;

# 进入bin目录,启动be 
./start_be.sh --daemon # 进入mysql 
/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl # 将BE节点加入到集群中 
ALTER SYSTEM ADD BACKEND "172.17.0.2:9050"; # 显示doris后端详情 
SHOW BACKENDS\G

Alive 

  • true表示节点运行正常(如果为false,可以尝试等待一会再重新查看,第一次启动会慢一点;或有其他问题在/opt/apache-doris-1.2.4.1-bin-x86_64/be/log/be.out 里面查看日志)

正常启动的进程像下面这样,会有一个空名字的进程,正常,就是be,退出mysql之后,可以通过jps命令查看

4.7 数据建表与功能测试

第一次接触doris的同学可能会疑惑,发现语法与MySQL差不多,其实还是有差别的,有点类似于学习Hive的时候,语法上跟mysql多少存在一些差别,可以通过下面的建表语句进行对比体验。

这里使用MySQL仅作为远程连接工具,在实际使用中仅需启动fe与be即可,Doris自动启动和管理内部的 MySQL 实例,用于存储和管理元数据。

4.7.1 创建测试数据表

基于上述搭建的环境,在docker容器内,执行如下命令进入mysql终端:

/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl

执行如下的建表sql

create database db_test;use db_test;CREATE TABLE IF NOT EXISTS db_test.tb_user
(`user_id` LARGEINT NOT NULL COMMENT "user id",`date` DATE NOT NULL COMMENT "",`city` VARCHAR(20) COMMENT "",`age` SMALLINT COMMENT "",`sex` TINYINT COMMENT "",`last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "",`cost` BIGINT SUM DEFAULT "0" COMMENT "",`max_dwell_time` INT MAX DEFAULT "0" COMMENT "",`min_dwell_time` INT MIN DEFAULT "99999" COMMENT ""
)
AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
PROPERTIES ("replication_allocation" = "tag.location.default: 1"
);exit;

4.7.2 创建测试数据并导入

创建一个用于导入数据的文件

cd ~ 
vi test_user.csv

将下面的数据拷贝进去

10000,2024-08-31,beijing,20,0,2024-08-31 06:00:00,20,10,10
10006,2024-08-31,beijing,20,0,2024-08-31 07:00:00,15,2,2
10001,2024-08-31,beijing,30,1,2024-08-31 17:05:45,2,22,22
10002,2024-08-28,shanghai,20,1,2024-08-28 12:59:12,200,5,5
10003,2024-08-28,guangzhou,32,0,2024-08-28 11:20:00,30,11,11
10004,2024-08-31,shenzhen,35,0,2024-08-31 10:00:15,100,3,3
10004,2024-08-18,shenzhen,35,0,2024-08-18 10:20:22,11,6,6

将test_user.csv的数据导入mysql,执行下面的命令

curl --location-trusted -u root: -T test_user.csv -H "column_separator:," http://127.0.0.1:8030/api/db_test/tb_user/_stream_load

4.7.3 查询数据是否导入成功

登录mysql客户端,查询上述导入的数据

4.7.4 使用客户端工具连接

使用navicat连接,用户名root,默认无密码

当然你也可以基于上述的9030端口的web-ui界面操作

4.7.5 服务启动停止命令补充

下面再补充一下服务的启动与停止命令,基于docker容器的安装模式下:

启动命令:

/opt/apache-doris-1.2.4.1-bin-x86_64/fe/bin/start_fe.sh --daemon
/opt/apache-doris-1.2.4.1-bin-x86_64/be/bin/start_be.sh --daemon

停止命令:

/opt/apache-doris-1.2.4.1-bin-x86_64/fe/bin/stop_fe.sh
/opt/apache-doris-1.2.4.1-bin-x86_64/be/bin/stop_be.sh

注意点:

docker重启后ip会变,启动后先查看hostname -i是否跟之前的一致,不一致可以关掉有影响的docker容器重新按ip顺序启动,或者改成固定IP。

五、写在文末

本文通过实际操作演示了基于docker搭建Doris单机环境的详细过程,对于很多需要学习Doris的同学来说,搭建的过程是一个麻烦而又费时费力的过程,希望本文能够提供一个快速的操作指引,本篇到此结束,感谢观看。

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

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

相关文章

java编辑器——IntelliJ IDEA

java编辑器有两种选择——IntelliJ IDEA和VsCode。其中IntelliJ IDEA现在是企业用的比较多的,是专门为java设计的,而VsCode则是通过插件来实现Java编辑的。 1.IntelliJ IDEA 官网下载链接:https://www.jetbrains.com/idea/ 注意选择社区版…

CSS之我不会

非常推荐html-css学习视频&#xff1a;尚硅谷html-css 一、选择器 作用&#xff1a;选择页面上的某一个后者某一类元素 基本选择器 1.标签选择器 格式&#xff1a;标签{} <h1>666</h1><style>h1{css语法} </style>2.类选择器 格式&#xff1a;.类…

AI 狂潮:引领未来变革,就业格局大洗牌

在科技飞速发展的今天&#xff0c;AI&#xff08;人工智能&#xff09;无疑是最受瞩目的领域之一。它正以惊人的速度改变着我们的生活&#xff0c;那么&#xff0c;AI 的未来发展趋势究竟会走向何方呢&#xff1f; 一、AI 在各个领域的深度融合 医疗领域 AI 在医疗领域的应用已…

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接&#xff1a;PF-Net PF-Net &#xff08;Point Fractal Network for 3D Point Cloud Completion&#xff09;是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑&#xff0c;都是采用GAN模型的思想来进行补全…

电力系统中的A类在线监测装置—APView400

随着电力系统的日益复杂和人们对电能质量要求的提高&#xff0c;电能质量在线监测装置在电力系统中得到广泛应用。目前&#xff0c;市场上的在线监测装置主要分为A类和B类两种类型&#xff0c;A类和B类在线监测装置主要区别在于应用场景、技术参数、通讯协议和扩展性。选择时应…

u盘数据恢复篇:U盘损坏怎么恢复里面的数据?6种方法即刻恢复

u盘里误删的文件去哪了&#xff1f;什么数据恢复的方法最好&#xff1f;今天我要和大家分享一些关于如何恢复损坏U盘中的数据的方法。U盘是我们日常生活中经常使用的便携存储设备&#xff0c;但是有时候因为各种原因&#xff0c;比如意外删除、格式化、物理损坏等&#xff0c;会…

2024全开源彩虹晴天多功能系统源码/知识付费系统/虚拟商城系统 完美可用带教程

源码简介&#xff1a; 2024最新彩虹晴天多功能系统源码&#xff0c;知识付费虚拟商城&#xff0c;完美可用&#xff0c;无需授权、国内外服务器皆可搭建、无论是不是备案域名也都可以部署、可以商业运营。 这个源码实用&#xff0c;它不仅完美可用&#xff0c;而且完全免F&am…

缺陷就是Bug?对了,但没完全对……

我叫缺陷&#xff0c;从被创建至关闭&#xff0c;到最后做缺陷分析&#xff0c;这是我的完整生命周期。我的整个生命周期贯穿着整个项目的项目周期&#xff0c;因此&#xff0c;掌握我的生命周期&#xff0c;不止是测试人员必修的课程&#xff0c;也是测试人员的灵魂。 缺陷的…

Error mongodb connect: 使用Mongoose连不上mongodb官方数据库

起因 使用mongoose官方文档的connect连Mongodb cloud免费数据库&#xff0c;始终连不上 await mongoose.connect(mongodb://127.0.0.1:27017/test);就一句代码&#xff0c;一个api&#xff0c;一个url多简单。死活连不上&#xff0c;困扰了我好久。 原本一开始我没有用mongoo…

【项目功能扩展】在线网站 -用户管理功能(用户注册登录修改等、利用cookie存储用户会话状态)

文章目录 0. 前言开发环境 & 涉及技术 1. 宏观结构2. 后端部分① sqlite 管理类② user 管理类 3. 前端部分&#xff08;与后端交互&#xff09;① 登录② 注册③ 查看登录用户的信息④ 更新用户信息⑤ 登出用户 & 注销用户注意 效果演示 0. 前言 源码链接&#xff1a…

Patlibc———更快捷的更换libc

起初是为了简化做pwn题目时&#xff0c;来回更换libc的麻烦&#xff0c;为了简化命令&#xff0c;弄了一个小脚本&#xff0c;可以加入到/usr/local/bin中&#xff0c;当作一个快捷指令&#x1f522; 这个写在了tools库&#xff08;git clone https://github.com/CH13hh/tools…

ueditor抓取图片

在ueditor.all.js文件中 修改catchremoteimage方法 原来的: 修改后: function catchremoteimage(imgs, callbacks) { //创建一个请求var oReq = new XMLHttpRequest() //获取请求地址前缀,根据自身项目获取const baseURL = http://uat.********* //url为请求地址根路径+具…

C语言小游戏--贪吃蛇实现

C语言小游戏--贪吃蛇实现 1.游戏实现背景2.Win32 API介绍2.1什么是Win32 API2.2控制台程序(Console)2.3控制台屏幕的坐标COORD2.4GetStdHandle2.4.1函数语法2.4.2函数的使用 2.5GetConsoleCursorInfo2.5.1函数语法2.5.2函数的使用 2.6CONSOLE_CURSOR_INFO2.6.1结构体结构2.6.2结…

【自考zt】【软件工程】【21.10】

关键字&#xff1a; 软件需求基本性质、软件系统需求挑战、耦合&#xff08;高内容&#xff0c;低无直接&#xff09;、内聚&#xff08;初始化时间&#xff09;、uml包、rup边界类、测试首要目标、单元测试最后工作、性能需求 软件开发本质、软件需求规约三种风格、提炼、用…

原生 iOS 引入 Flutter 报错 kernel_blob.bin 找不到

情况 在一次原生 iOS 项目中引入 Flutter 的过程中&#xff0c;在模拟器中运行出现报错&#xff1a; 未能打开文件“kernel_blob.bin”&#xff0c;因为它不存在。 如下图&#xff1a; 模拟器中一片黑 原因&解决方案 这个是因为 Flutter 的打包 iOS framework 命令中…

gird布局《个人觉得非常好用》

一、相对于flex布局 &#xff08;1&#xff09;优点&#xff1a;gird布局&#xff08;适用于二维布局的场景更加灵活&#xff09;&#xff0c;flex&#xff08;适用于一维布局的场景更加灵活&#xff09; 二、代码示例 <!DOCTYPE html> <html lang"en">…

C#进阶-ASP.NET实现可以缩放和旋转的图片预览页

本文详细介绍了如何在ASP.NET WebForms中实现一个功能丰富的图片预览页面。通过结合HTML、CSS和JavaScript&#xff0c;用户可以方便地对图片进行放大、缩小以及旋转操作。文章从页面的基本布局开始&#xff0c;逐步讲解了如何设置图片展示区、添加控制按钮、编写CSS样式以及实…

推动生态系统架构创新与可持续发展的关键引擎——The Open Group 2024年度大会全解析

在当今快速变化的数字化转型浪潮中&#xff0c;开放标准正逐渐成为推动企业创新和生态系统架构发展的重要力量。为了帮助企业在实现可持续发展的道路上加速推进&#xff0c;The Open Group 2024生态系统架构与可持续发展年度大会将为架构师、技术专家以及企业CIO、CTO提供一个深…

Redis中使用布隆过滤器解决缓存穿透问题

一、缓存穿透(失效)问题 缓存穿透是指查询一个一定不存在的数据&#xff0c;由于缓存中没有命中&#xff0c;会去数据库中查询&#xff0c;而数据库中也没有该数据&#xff0c;并且每次查询都不会命中缓存&#xff0c;从而每次请求都直接打到了数据库上&#xff0c;这会给数据…

机械革命imini Pro820迷你主机评测和拆解,8845H小主机使用政府补贴仅需两千三

机械革命imini Pro820迷你主机评测和拆解&#xff0c;8845H小主机使用政府补贴仅需两千三。 最近上线了家电补贴相关的活动&#xff0c;最高可以补贴20%&#xff0c;然后就看到了这款mini主机感觉很划算就下单了&#xff0c;用来替换我旧的N5095小主机&#xff0c;当服务器用。…