Doris 内网安装部署,基于 CentOS 7

实测 CentOS 7.6 和 7.9都可用,CentOS安装包为:标准安装盘DVD版,如果系统安装的是精简版,需要挂载DVD版或者自行下载依赖。

参考文档

快速开始 - Apache Doris

Doris 下载地址:2.1.1 ( Latest ) -> x64 ( avx2 ) -> Binary

Download - Apache Doris

下载免安装的 MySQL 客户端:8.0.36 -> Red Hat Enterprise Linux -> Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit) -> RPM Bundle

使用软件包:

  • mysql-package:
    • mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar
  • ntp-package:
    • ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm
    • autogen-libopts-5.18-5.el7.x86_64.rpm
    • ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm
  • jdk-8u121-linux-x64.tar.gz
  • apache-doris-2.1.1-bin-x64.tar.gz

1.硬件设置

创建目录:

mkdir -p /home/soft/package

mkdir -p /home/soft/package

1.1 设置系统最大打开文件句柄数

vi /etc/security/limits.conf 
# 按键盘 shift+g, 加入
* soft nofile 65536
* hard nofile 65536

1.2 时钟同步

详细见http://t.csdnimg.cn/4J4ao

Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。

1.2.1 安装NTP软件

查询主机Linux系统版本

cat /etc/redhat-release

直接下载地址:

http://mirror.centos.org/centos/7/os/x86_64/Packages/ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm

http://mirror.centos.org/centos/7/os/x86_64/Packages/ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm

http://mirror.centos.org/centos/7/os/x86_64/Packages/autogen-libopts-5.18-5.el7.x86_64.rpm

# 在只有这三个包的目录里面执行
rpm -ivh autogen-libopts-5.18-5.el7.x86_64.rpm
rpm -ivh ntp*

1.2.2 配置 NTP时间同步源

1.2.2.1 ntp时钟服务端配置

修改/etc/ntp.conf 文件配置

vi /etc/ntp.conf

注释掉

#restrict default nomodify notrap nopeer noquery

注释原有的,添加新的(按照自己的服务器地址修改)

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst# 默认的一个内部时钟数据,在没有外部NTP服务器时,它为局域网用户提供服务
server 127.127.1.0 stratum 3# 表示网关为192.168.5.0,子网掩码为255.255.255.0,网段为192.168.5.0-192.168.5.255的机器可通过该服务端时间校准
restrict 192.168.5.0 mask 255.255.255.0
# 允许修改本机时间
restrict 192.168.5.160 nomodify notrap noquery nopeer

其他的一些配置【可选】

# 不允许来自公网上ipv4和ipv6客户端的访问
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

重启

systemctl restart ntpd
systemctl start ntpd
systemctl enable ntpd

查看服务是否运行

ps -ef |grep ntpd
或者
systemctl status ntpd
或者
ntpq -p

查看同步状态

timedatectl status

1.2.2.2 ntp时钟客户端配置

修改/etc/ntp.conf 文件配置

vi /etc/ntp.conf

注释原有的时间服务器地址,添加新的ntp时间服务器地址

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
# ntp时间服务器地址
server 192.168.5.160 prefer

重启

systemctl restart ntpd
systemctl enable ntpd

查看服务是否运行

systemctl status ntpd
或者
ps -ef |grep ntpd

测试是否成功

ntpstat

出现失败,需要等待大约2-3分钟左右

unsynchronisedtime server re-startingpolling server every 8 s

再执行ntpstat出现成功

synchronised to NTP server (172.17.100.8) at stratum 7time correct to within 951 mspolling server every 64 s

查看同步状态

timedatectl status

1.2.2.3 关闭防火墙服务或者开启端口,关闭selinux

如果你的服务器有防火墙,确保UDP端口123(NTP默认端口)是开放的,以便其他设备可以与NTP服务器通信。

# 开端口123(CentOS)
firewall-cmd --permanent --add-port=123/udp
firewall-cmd --reload
# 查询端口
firewall-cmd --list-ports |grep 123# 开端口123(Ubuntu)
ufw allow 123/udp

或者直接关闭防火墙,禁用开机启动(不建议)

systemctl stop firewalld
systemctl disable firewalld

关闭selinux服务,设置selinux策略为“disabled”。

setenforce 0
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config

1.2.2.4 设置本地时间

设置本地时间方便测试

date -s "2024-03-10 00:00:00"

1.2.2.5 手动同步与定时同步

在配置完成后,可以尝试手动同步时间以验证NTP服务的配置是否正确。

若ntp服务正在运行,则需要执行以下命令,先停止ntp服务(因为ntpdate工具和ntp守护进程冲突,因此执行ntpdate命令时需要保证ntpd进程未运行)。

systemctl stop ntpd

手动同步时间以验证NTP服务的配置

ntpdate 192.168.5.160

需要定时同步系统时间,可以使用crontab工具来设置。例如,下面的命令会每五分钟执行一次ntpdate命令进行时间同步:

crontab -e

然后在编辑窗口中加入如下内容:

*/5 * * * * /usr/sbin/ntpdate 192.168.5.160

1.2.2.6 监控和日志

你可以使用ntptime命令来查看当前系统时间与NTP服务器的时间偏差。

NTP服务的日志文件通常位于/var/log/syslog或/var/log/ntp.log,你可以查看这些日志来监控NTP服务的运行情况和解决潜在问题。

请注意,NTP服务器的配置可能因具体的网络环境和需求而有所不同。因此,在实际部署过程中,建议参考相关的官方文档和最佳实践,并根据实际情况进行调整和优化。此外,确保在配置过程中考虑到安全性和稳定性方面的因素。

常见问题及其解决方法在设置NTP时间同步服务器时,可能会遇到一些常见问题。

1.2.2.6 常见问题及其解决方法:

1. NTP服务未启动或未安装:
使用以下命令安装和启动 NTP 服务:
yum install ntp 或 apt-get install ntp
systemctl start ntpd 或 systemctl start chronyd
2. 防火墙设置不正确:
确保防火墙已经打开并允许NTP端口(UDP 123)通过:
firewall-cmd --add-service=ntp --permanent
firewall-cmd --reload
3. 与NTP服务器的连接失败:
确保您的Linux主机可以连接到NTP服务器,并且NTP服务器的DNS解析正确。您可以使用以下命令检查IP地址是否可用:
ping ntp.server.com
4. 时间同步失败:
如果时间同步失败,可能需要手动将系统时间设置为与NTP服务器时间相同:
ntpdate -u ntp.server.com

1.3 关闭交换分区(swap)

详细见http://t.csdnimg.cn/hX0zK

Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前(永久)禁用交换分区

1.3.1 查看交换分区信息

首先,使用 swapon --show 或 cat /proc/swaps 命令来查看当前的交换分区状态。它会列出所有当前启用的 swap 分区。如果没有输出,则表示没有 swap 分区被启用。

swapon --show
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   3G   0B   -2

1.3.2 永久关闭交换区,防止交换分区在启动时自动挂载

要永久关闭交换分区,需要编辑 /etc/fstab 文件,并从中删除或注释掉与交换分区相关的行。使用文本编辑器(如 vi 或 nano)打开 /etc/fstab 文件。

vi /etc/fstab

找到类似以下内容的行(可能稍有不同):

UUID=xxxx-xxxx none swap sw 0 0

或者

/dev/sdXN none swap sw 0 0

在该行前面添加 # 符号来注释掉它,然后保存并关闭文件。

1.3.3 更新 GRUB 配置(可选)

在某些情况下,你可能还需要更新 GRUB 配置以确保在下次启动时不会使用交换分区。这通常不是必需的,但如果你之前在系统引导时配置了交换分区,那么可能需要执行此步骤。

grub2-mkconfig -o /boot/grub2/grub.cfg

1.3.4 重启系统

重启的 CentOS 7 系统以确保更改生效。

reboot

1.3.5 重新查看交换分区信息

重新连接服务器,查看交换分区信息是否关闭。如果没有关闭,检查/etc/fstab文件是否还有未注释的swap内容。有可能1.3.2 里面的两个都要注释掉。

swapon --show

2.配置jdk

cd /home/soft/package/
tar -xzvf jdk-8u121-linux-x64.tar.gz
mkdir -p /usr/local/java/
mv jdk1.8.0_121/ /usr/local/java/
vi /etc/profile
# 按键盘 shift+g,按键盘 o 字母,回车,添加下面的目录,目录路径为自己的jdk路径
export JAVA_HOME=/usr/local/java/jdk1.8.0_121
export PATH=$JAVA_HOME/bin:$PATH
# ESC退出,:wq保存
source /etc/profile
# 查看是否安装成功
java -version
# 查看JAVA_HOME路径
echo $JAVA_HOME

3.安装mysql客户端

Download - Apache Doris

下载免安装的 MySQL 客户端:8.0.36 -> Red Hat Enterprise Linux -> Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit) -> RPM Bundle

# 1.创建目录,解压包
mkdir mysql-package
mv mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar mysql-package/
# 进入目录,解压出全部的rpm包
tar -xvf mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar
# 2.删除原有的mariadb
# 先查看一下是否已经安装了,命令:
rpm -qa|grep mariadb
# 删除mariadb,命令:
rpm -e --nodeps mariadb-libs
# 检查是否已经删除
rpm -qa|grep mariadb
# 3.依次安装common、libs、client。出现安装依赖关系,报错后,先安装依赖,再重复执行就可以了
rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm
# 验证
mysql -V

4.Frontend(FE)

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

cd /home/soft/package/
tar -xzvf apache-doris-2.1.1-bin-x64.tar.gz
mkdir /home/soft/Doris/
mv apache-doris-2.1.1-bin-x64 /home/soft/Doris/
cd /home/soft/Doris/

配置 FE​

修改 FE 配置文件 conf/fe.conf

cd apache-doris-2.1.1-bin-x64/fe
vi conf/fe.conf

添加 priority_networks 参数,ip的前三位加上 .0/24

priority_networks=192.168.5.0/24

开端口8030

firewall-cmd --zone=public --add-port=8030/tcp --permanent
firewall-cmd --reload

启动FE

cd /home/soft/Doris/apache-doris-2.1.1-bin-x64/fe
./bin/start_fe.sh --daemon

查看 FE 运行状态

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

访问http://192.168.5.160:8030/,用户名root

连接 FE

执行mysql 命令行工具连接 Doris

mysql -uroot -P9030 -h127.0.0.1

这里使用的 root 用户是 doris 内置的默认用户,也是超级管理员用户,具体的用户权限查看 权限管理

-P:这里是我们连接 Doris 的查询端口,默认端口是 9030,对应的是 fe.conf 里的 query_port

-h:这里是我们连接的 FE IP 地址,如果你的客户端和 FE 安装在同一个节点可以使用 127.0.0.1。

执行下面的命令查看 FE 运行状态

mysql> show frontends\G;

如果结果里面 IsMaster、Join 和 Alive 三列均为 true,则表示节点正常。

停止 FE 节点

./bin/stop_fe.sh

5.Backend(BE)

主要负责数据存储、查询计划的执行。

配置 BE

进入到 apache-doris-2.1.1-bin-x64/be 目录

cd apache-doris-2.1.1-bin-x64/be vi conf/be.conf

5.1 修改 BE 配置文件 conf/be.conf

这里我们主要修改两个参数:priority_networks 及 storage_root ,如果你需要更多优化配置,请参考 BE 参数配置说明,进行调整。

添加 priority_networks 参数

priority_networks=192.168.5.0/24

配置 BE 数据存储目录(可选)

storage_root_path=/path/your/data_dir

注意:默认目录在 BE 安装目录的 storage 目录下。BE 配置的存储目录必须先创建好。

5.2 vm.max_map_count修改

启动如果报如下错误:

Please set vm.max_map_count to be 2000000 under root using 'sysctl -w vm.max_map_count=2000000'.

vm.max_map_count 是一个 Linux 内核参数,它定义了单个进程可以拥有的最大内存区域(memory mapping areas)的数量。这个参数对于某些使用内存映射的应用程序来说非常重要。

# 永久配置,在系统重启后仍然保持此设置
vi /etc/sysctl.conf
# 将以下行添加到 /etc/sysctl.conf 文件(或 /etc/sysctl.d/ 目录下的一个新文件中):
vm.max_map_count=2000000
# 然后,运行以下命令以使更改生效:
sudo sysctl -p

5.3 开端口9050

firewall-cmd --zone=public --add-port=9050/tcp --permanent
firewall-cmd --reload

启动 BE

在 BE 安装目录下执行下面的命令,来完成 BE 的启动。

cd /home/soft/Doris/apache-doris-2.1.1-bin-x64/be
./bin/start_be.sh --daemon

添加 BE 节点到集群(扩容)

通过 MySQL 客户端连接到 FE

mysql -uroot -P9030 -h127.0.0.1

或者访问http://192.168.5.160:8030/,PlayGround里面,选择information_schema数据库

执行下面的 SQL,将 BE 添加到集群中

# ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
ALTER SYSTEM ADD BACKEND "192.168.5.160:9050";

be_host_ip:这里是你 BE 的 IP 地址,和你在 be.conf 里的 priority_networks 匹配,。

heartbeat_service_port:这里是你 BE 的心跳上报端口,和你在 be.conf 里的 heartbeat_service_port 匹配,默认是 9050。

删除 BE 节点(缩容)

# 安全删除 BE 节点
ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
# 直接删除 BE 节点
ALTER SYSTEM DROPP BACKEND "be_host:be_heartbeat_service_port";
-- ALTER SYSTEM DROPP BACKEND "192.168.5.160:9050";

查看 BE 运行状态

你可以在 MySQL 命令行下执行下面的命令查看 BE 的运行状态。

mysql> SHOW BACKENDS\G;

或者访问http://192.168.5.160:8030/,PlayGround里面,选择information_schema数据库,执行 SHOW BACKENDS

Alive : true 表示节点运行正常

停止 BE 节点

./bin/stop_be.sh

6. 创建数据表

创建一个数据库

create database demo;
use demo;

创建数据表

CREATE TABLE IF NOT EXISTS demo.example_tbl
(`user_id` LARGEINT NOT NULL COMMENT "用户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"
);

示例数据

10000,2017-10-01,北京,20,0,2017-10-01 06:00:00,20,10,10
10000,2017-10-01,北京,20,0,2017-10-01 07:00:00,15,2,2
10001,2017-10-01,北京,30,1,2017-10-01 17:05:45,2,22,22
10002,2017-10-02,上海,20,1,2017-10-02 12:59:12,200,5,5
10003,2017-10-02,广州,32,0,2017-10-02 11:20:00,30,11,11
10004,2017-10-01,深圳,35,0,2017-10-01 10:00:15,100,3,3
10004,2017-10-03,深圳,35,0,2017-10-03 10:20:22,11,6,6

将上面的数据保存在test.csv文件中。

导入数据

这里我们通过 Stream load 方式将上面保存到文件中的数据导入到我们刚才创建的表里。

curl  --location-trusted -u root: -T test.csv -H "column_separator:," http://127.0.0.1:8030/api/demo/example_tbl/_stream_load

-T test.csv : 这里使我们刚才保存的数据文件,如果路径不一样,请指定完整路径

-u root : 这里是用户名密码,我们使用默认用户 root,密码是空

127.0.0.1:8030 : 分别是 fe 的 ip 和 http_port

执行成功之后我们可以看到下面的返回信息

{"TxnId": 30303,"Label": "8690a5c7-a493-48fc-b274-1bb7cd656f25","TwoPhaseCommit": "false","Status": "Success","Message": "OK","NumberTotalRows": 7,"NumberLoadedRows": 7,"NumberFilteredRows": 0,"NumberUnselectedRows": 0,"LoadBytes": 399,"LoadTimeMs": 381,"BeginTxnTimeMs": 3,"StreamLoadPutTimeMs": 5,"ReadDataTimeMs": 0,"WriteDataTimeMs": 191,"CommitAndPublishTimeMs": 175
}

NumberLoadedRows: 表示已经导入的数据记录数

NumberTotalRows: 表示要导入的总数据量

Status :Success 表示导入成功

到这里我们已经完成的数据导入,下面就可以根据我们自己的需求对数据进行查询分析了。

查询数据

mysql> select * from example_tbl;
mysql> select * from example_tbl where city='上海';
mysql> select city, sum(cost) as total_cost from example_tbl group by city;

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

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

相关文章

计算两个时间段的差值

计算两个时间段的差值 运行效果&#xff1a; 代码实现&#xff1a; #include<stdio.h>typedef struct {int h; // 时int m; // 分int s; // 秒 }Time;void fun(Time T[2], Time& diff) {int sum_s[2] { 0 }; for (int i 0; i < 1; i) { // 统一为秒数sum_s[…

git 删除本地分支 删除远程仓库中的分支

语法&#xff1a; 删除本地分支 git branch -D <分支名>删除远程分支 git push <remote名称> <分支名> --delete 示例&#xff1a; 删除本地分支 git branch -D feature/test_listview删除远程分支 git push origin feature/test_listview --delete 两个…

【考研数学】《660》+《880》高分搭配方法

&#x1f4dd;《660题》和《880题》高效刷题方法 1️⃣做题要有针对性&#xff0c;不要为了做题而做题 &#x1f4aa;660和880题虽然多&#xff0c;但是你不用全都做完&#xff0c;你可以把它当成是题源&#xff0c;里面的每一道题都很经典&#xff0c;如果搞懂一道&#xff…

Qlik Sense : Crosstable在数据加载脚本中使用交叉表

什么是Crosstable&#xff1f; 交叉表是常见的表格类型&#xff0c;特点是在两个标题数据正交列表之间显示值矩阵。如果要将数据关联到其他数据表格&#xff0c;交叉表通常不是最佳数据格式。 本主题介绍了如何逆透视交叉表&#xff0c;即&#xff0c;在数据加载脚本中使用 L…

WinRAR再爆0 day漏洞,0 day漏洞该如何有效预防

WinRAR再爆0 day漏洞&#xff0c;已被利用超过4个月。 Winrar是一款免费的主流压缩文件解压软件&#xff0c;支持绝大部分压缩文件格式的解压&#xff0c;全球用户量超过5亿。Group-IB研究人员在分析DarkMe恶意软件时发现WinRAR在处理ZIP文件格式时的一个漏洞&#xff0c;漏洞…

iptables/ebtables学习笔记

目录 一、前言 二、Netfilter 构成 三、Netfilter 转发框架 四、Netfilter 与 iptables 五、Netfilter 与 ebtables 一、前言 Netfilter 是 Linux 内核的数据包处理框架&#xff0c;由 Rusty Russell 于 1998 年开发&#xff0c; 旨在改进以前的 ipchains&#xff08;Lin…

实例解释遇到前端报错时如何排查问题

前端页面报错&#xff1a; 1、页面报错500&#xff0c;首先我们可以知道是服务端的问题&#xff0c;需要去看下服务端的报错信息&#xff1a; 2、首先我们查看下前端是否给后端传了id: 我们可以看到接口是把ID返回了&#xff0c;就需要再看下p_id是什么情况了。 3、我们再次请…

计算机网络 虚拟局域网划分

一、实验内容 1、分别把交换机命名为SWA、SWB 2、划分虚拟局域网 valn &#xff0c;并将端口静态划分到 vlan 中 划分vlan 方法一&#xff1a;在全局模式下划分vlan&#xff0c;在SWA交换机上创建三个vlan&#xff0c;分别为vlan2&#xff0c;vlan3&#xff0c;vlan4。 方…

飞驰云联入选金融信创生态实验室「金融信创优秀解决方案」

近日&#xff0c;由中国人民银行领导、中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布了第三期金融信创优秀解决方案&#xff0c;Ftrans飞驰云联“文件数据传输解决方案”成功入选&#xff01; 本次金融信创优秀解决方案遴选经方案征集、方案初审、专家评审等多环…

(2022级)成都工业学院数据库原理及应用实验三:数据定义语言DDL

唉&#xff0c;用爱发电连赞都没几个&#xff0c;博主感觉没有动力了 想要完整版的sql文件的同学们&#xff0c;点赞评论截图&#xff0c;发送到2923612607qq,com&#xff0c;我就会把sql文件以及如何导入sql文件到navicat的使用教程发给你的 基本上是无脑教程了&#xff0c;…

【线段树】2276. 统计区间中的整数数目

算法可以发掘本质&#xff0c;如&#xff1a; 一&#xff0c;若干师傅和徒弟互有好感&#xff0c;有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二&#xff0c;有无限多1X2和2X1的骨牌&#xff0c;某个棋盘若干格子坏了&#xff0c;如何在没有坏…

BJT 和 FET的知识点以及区别

一、晶体管的介绍 晶体管是一种三端半导体器件&#xff0c;它是一种用于大多数电子设备的有源器件。晶体管可根据需要用作绝缘体和导体。我们可以将晶体管用作开关和放大器。它可以与其他电路元件一起使用&#xff0c;并且能够放大电流和电压。我们可以将晶体管分为两种类型&am…

锐化空间滤波器--二阶微分图像增强(提高清晰度的另一种方式)

书上一阶微分的定义可以理解&#xff0c;毕竟这里不死数学上的曲线的概念&#xff0c;而是像素点上的曲线。所以&#xff0c;不同于数学的严格单调递增曲线的导数是大于等于零&#xff0c;这里的严格单调递增曲线&#xff0c;只能是大于零。 至于二阶微分的定义&#xff0c;就…

HarmonyOS实战开发-图片编辑、使用 TextArea 实现多文本输入

介绍 本示例使用 TextArea 实现多文本输入&#xff0c;使用 ohos.app.ability.common 依赖系统的图库引用&#xff0c;实现在相册中获取图片&#xff0c;使用 ohos.multimedia.image 生成pixelMap&#xff0c;使用pixelMap的scale()&#xff0c;crop()&#xff0c;rotate()接口…

idea 中运行spring boot 项目报 Command line is too long的解决办法。

Command line is too long 在这里选择edit configures 选择shrten command line , 选择 jar manifest 运行即可。

解决vue启动项目报错:npm ERR! Missing script: “serve“【详细清晰版】

目录 问题描述问题分析和解决情况一解决方法情况二&#xff08;常见于vue3&#xff09;解决方法情况三解决方法 问题描述 在启动vue项目时通常在控制台输入npm run serve 但是此时出现如下报错&#xff1a; npm ERR! Missing script: "serve" npm ERR! npm ERR! T…

IJKPLAYER源码分析-iOS端显示

1 简介 1.1 EAGL(Embedded Apple Graphics Library) 与Android系统使用EGL连接OpenGL ES与原生窗口进行surface输出类似&#xff0c;iOS则用EAGL将CAEAGLLayer作为OpenGL ES输出目标。 与 Android EGL 不同的是&#xff0c;iOS EAGL 不会让应用直接向 BackendFrameBuffer 和 F…

KKVIEW远程远程访问家里电脑

远程访问家里电脑&#xff1a;简易指南与价值所在 在数字化时代&#xff0c;电脑已成为我们日常生活和工作中不可或缺的工具。有时&#xff0c;我们可能在外出时急需访问家中电脑里的某个文件或应用&#xff0c;这时&#xff0c;远程访问家里电脑就显得尤为重要。本文将简要介…

微服务-7 Docker

一、镜像、容器、仓库 容器是镜像的实例&#xff0c;仓库中存储着镜像。 二、镜像的操作 三、容器的操作 创建容器停止容器&#xff0c;查看后发现没有了(docker ps 默认只展示没有停止的) docker ps -a (可以展示运行中和停止的镜像)删除容器&#xff1a;(docker rm 不能删除…

突破界限 千视将在 NAB 2024 展会上展示领先的 AV over IP 技术

突破界限&#xff01;千视将在 NAB 2024 展会上展示领先的 AV over IP技术 作为AV over IP领域的先驱者&#xff0c;Kiloview将于2024年4月14日至17日在NAB展会&#xff08;展台号&#xff1a;SU6029&#xff09;隆重登场&#xff0c;展示我们领先业界的AV over IP产品、解决方…