Apache Doris 2.0.2 安装步骤 Centos8

Linux 操作系统版本需求
Linux 系统版本当前系统版本
CentOS7.1 及以上CentOS8
Ubuntu16.04 及以上-
软件需求
软件版本当前版本
Java1.81.8.0_391
GCC4.8.2 及以上gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4)

1、查看操作系统版本

方法 1:使用命令行

  1. 打开终端或命令行窗口。
  2. 运行以下命令来查看 CentOS 版本信息:
cat /etc/centos-release

如果你看到输出中含有 CentOS 7 或 CentOS 8 的版本号,则可以确定当前系统的 CentOS 版本。

方法 2:使用运行版本命令

  1. 同样需要打开终端或命令行窗口。
  2. 运行以下命令来检查 CentOS 系统中 /etc/os-release 文件的内容:
cat /etc/os-release

这个命令会显示包含 CentOS 版本信息的输出。在 VERSION_ID 一行中,你将能够看到版本号,从而确定是 CentOS 7 还是 CentOS 8。

无论使用哪种方法,你都将能够确定当前系统运行的是 CentOS 7 还是 CentOS 8。

2、查看GCC版本

要查看 CentOS 8 上安装的 GCC 版本,你可以按照以下方法进行操作:

  1. 打开终端或命令行窗口。
  2. 运行以下命令来查看 GCC 版本信息:
gcc --version

该命令将输出 GCC 的版本信息,包括主版本号、次版本号等详细信息。

注意:如果你的系统中未安装 GCC,需要先通过以下命令安装:

sudo dnf install gcc

使用上述步骤,你将能够在 CentOS 8 上查看到安装的 GCC 版本。

3、集群做时钟同步

在 CentOS 8 上,你可以使用 chronyd 服务来进行时钟同步。以下是设置时钟同步的步骤:

  1. 确保 chronyd 服务已安装:

    sudo dnf install chrony
    

    如果你已安装了 chrony,则会显示已安装的版本号。

  2. 编辑 /etc/chrony.conf 文件:

    sudo vim /etc/chrony.conf
    

    打开文件后,你可以根据需要进行配置更改。

  3. 添加或更改时间服务器: 在 /etc/chrony.conf 文件中,你可以找到一些种类为 server 的行。你可以编辑这些行来添加或更改时间服务器。通常,你可以在互联网上找到公共的时间服务器。例如,你可以在 chrony.conf 文件中添加以下行:

    ## 注释掉这个一行
    # pool 2.centos.pool.ntp.org iburst
    # FE 同步授时中心cn.ntp.org.cn
    server cn.ntp.org.cn iburst
    
    # BE 同步FE的时间
    # server 10.10.8.156 iburst
    
    

    请将 time.example.com 替换为你选择的时间服务器。例如:cn.ntp.org.cn

  4. 启动并启用 chronyd 服务:

    sudo systemctl start chronyd
    sudo systemctl enable chronyd
    
  5. 检查时钟同步状态:

    chronyc sources
    

    这将显示与 chronyd 同步的时间服务器列表以及同步状态。

通过按照上述步骤设置 chronyd 服务,你将在 CentOS 8 上实现时钟同步。如果你修改了 chrony.conf 配置文件,请确保重新启动 chronyd 服务以使更改生效。

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

vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
# 重启服务器生效 reboot
# 通过ulimit 查看是否生效
ulimit -n

5、安装Java环境

# Oracle官网下载,上传JDK jdk-8u391-linux-x64.tar.gz
[root@localhost ~]# cd /u01/
[root@localhost u01]# tar -zxf jdk-8u391-linux-x64.tar.gz
[root@localhost u01]# vim /etc/profile
export JAVA_HOME=/u01/jdk1.8.0_391
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

# 重新加载资源
[root@localhost u01]# source /etc/profile
[root@localhost u01]# java -version
java version "1.8.0_391"
Java(TM) SE Runtime Environment (build 1.8.0_391-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)

6、Doris 配置 FE

6.1、查看操作系统是否支持avx2指令集,没有则下载noavx2的安装包。

要检查你的 CentOS 8 系统是否支持 AVX2 指令集,可以使用以下命令来检查 CPU 的功能:

grep avx2 /proc/cpuinfo

如果你看到类似下面的输出,说明你的 CPU 支持 AVX2 指令集:

flags		: ... avx2 ...

其中 flags 列表中包含了支持的 CPU 功能标记。如果你在其中找到了 avx2,则表示你的系统 CPU 支持 AVX2 指令集。

如果你的 CPU 不支持 AVX2 指令集,那么在上述输出中将找不到 avx2 标记。

请注意,要确保你的 CPU 支持 AVX2 指令集,你的 CPU 和主板必须支持该功能。虽然 CentOS 8 是一个 64 位操作系统,但该操作系统本身并不影响 CPU 功能。因此,支持 AVX2 指令集取决于你的 CPU 硬件。

6.2 解压缩,修改配置

# 这里没有avx2指令集 下载apache-doris-2.0.2-bin-x64-noavx2.tar.gz
# 上传到服务器 /u01目录下
# 1、解压缩包
[root@localhost u01]# tar -zxf apache-doris-2.0.2-bin-x64-noavx2.tar.gz
# 2、这里把FE的文件夹,单独拿到/u01 方便后面出问题后,删除重新复制一份
[root@localhost u01]# cp -r apache-doris-2.0.2-bin-x64-noavx2/fe/ /u01/

修改 FE 配置文件 conf/fe.conf ,这里我们主要修改两个参数:priority_networksmeta_dir ,如果你需要更多优化配置,请参考 FE 参数配置说明,进行调整。

  1. 添加 priority_networks 参数

    [root@localhost u01]# vim fe/conf/fe.conf
    
    # 修改内容如下
    priority_networks=x.x.x.0/24
    

    注意:

    这个参数我们在安装的时候是必须要配置的,特别是当一台机器拥有多个IP地址的时候,我们要为 FE 指定唯一的IP地址。

    这里假设你的节点 IP 是 172.23.16.32,那么我们可以通过掩码的方式配置为 172.23.16.0/24

  2. 添加元数据目录

    # 单独配置元数据目录,需要你提前创建好你指定的目录
    meta_dir=/u01/fe/doris-meta
    # 注意:生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好),测试开发环境可以使用默认配置(默认是在你的Doris FE 安装目录下的 doris-meta)
    

6.3 后台启动FE

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

[root@localhost fe]# ./bin/start_fe.sh --daemon

6.4查看 FE 运行状态

你可以通过下面的命令来检查 Doris 是否启动成功

root@narada:/u01/apache-doris-2.0.2-bin-x64/fe# curl http://127.0.0.1:8030/api/bootstrap
{"msg":"success","code":0,"data":{"replayedJournalId":0,"queryPort":0,"rpcPort":0,"version":""},"count":0}

这里 IP 和 端口分别是 FE 的 IP 和 http_port(默认8030),如果是你在 FE 节点执行,直接运行上面的命令即可。

如果返回结果中带有 "msg":"success" 字样,则说明启动成功。

你也可以通过 Doris FE 提供的Web UI 来检查,在浏览器里输入地址

http:// fe_ip:8030 即:http://x.x.x.x:8030/

可以看到下面的界面,说明 FE 启动成功

注意:

  1. 这里我们使用 Doris 内置的默认用户 root 进行登录,密码是空
  2. 这是一个 Doris 的管理界面,只能拥有管理权限的用户才能登录,普通用户不能登录。

6.5连接 FE

我们下面通过 MySQL 客户端来连接 Doris FE,下载免安装的 MySQL 客户端

解压刚才下载的 MySQL 客户端,在 bin/ 目录下可以找到 mysql 命令行工具。然后执行下面的命令连接 Doris。

[root@localhost bin]# pwd
/u01/mysql-5.7.22/bin
[root@localhost bin]# ./mysql -uroot -P9030 -h127.0.0.1

# 设置登录密码
SET PASSWORD FOR 'root' = PASSWORD('narada2023');

注意:

  1. 这里使用的 root 用户是 doris 内置的默认用户,也是超级管理员用户,具体的用户权限查看 权限管理
  2. -P :这里是我们连接 Doris 的查询端口,默认端口是 9030,对应的是fe.conf里的 query_port
  3. -h : 这里是我们连接的 FE IP地址,如果你的客户端和 FE 安装在同一个节点可以使用127.0.0.1。
  4. mysql 无法运行的话,要先解决对应报错。

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

show frontends\G;

然后你可以看到类似下面的结果:

mysql> show frontends\G
*************************** 1. row ***************************
             Name: fe_cd86c1da_3c70_4ebe_add6_70c7e39b3827
             Host: x.x.x.x
      EditLogPort: 9010
         HttpPort: 8030
        QueryPort: 9030
          RpcPort: 9020
             Role: FOLLOWER
         IsMaster: true
        ClusterId: 1027578203
             Join: true
            Alive: true
ReplayedJournalId: 3379
    LastHeartbeat: 2023-12-06 14:29:20
         IsHelper: true
           ErrMsg: 
          Version: doris-2.0.2-rc05-ae923f7
 CurrentConnected: Yes
1 row in set (0.04 sec)
  1. 如果 IsMaster、Join 和 Alive 三列均为true,则表示节点正常。

7 Doris配置 BE

7.1 同样解压缩,复制be到/u01

[root@localhost u01]# tar -zxf apache-doris-2.0.2-bin-x64-noavx2.tar.gz
[root@localhost u01]# cp -r apache-doris-2.0.2-bin-x64-noavx2/be/ /u01

我们进入到 be 目录

修改 BE 配置文件 conf/be.conf ,这里我们主要修改两个参数:priority_networksstorage_root ,如果你需要更多优化配置,请参考 BE 参数配置说明,进行调整。

  1. 添加 priority_networks 参数

    [root@localhost u01]# cd be/conf/
    [root@localhost conf]# vim be.conf 
    priority_networks=x.x.x.0/24
    

    注意:

    这个参数我们在安装的时候是必须要配置的,特别是当一台机器拥有多个IP地址的时候,我们要为 BE 指定唯一的IP地址。

  2. 配置 BE 数据存储目录

    修改 be/conf/be.conf。主要是配置 storage_root_path:数据存放目录。默认在be/storage下,若需要指定目录的话,需要预创建目录。多个路径之间使用英文状态的分号 ; 分隔。
    可以通过路径区别节点内的冷热数据存储目录,HDD(冷数据目录)或 SSD(热数据目录)。如果不需要 BE 节点内的冷热机制,那么只需要配置路径即可,无需指定 medium 类型;也不需要修改FE的默认存储介质配置

    注意:

    1. 如果未指定存储路径的存储类型,则默认全部为 HDD(冷数据目录)。
    2. 这里的 HDD 和 SSD 与物理存储介质无关,只为了区分存储路径的存储类型,即可以在 HDD 介质的盘上标记某个目录为 SSD(热数据目录)。

    示例1如下:

    storage_root_path=/home/disk1/doris;/home/disk2/doris;/home/disk2/doris
    

    示例2如下:

    使用 storage_root_path 参数里指定 medium

    storage_root_path=/home/disk1/doris,medium:HDD;/home/disk2/doris,medium:SSD
    

    说明

    • /home/disk1/doris,medium:HDD: 表示该目录存储冷数据;
    • /home/disk2/doris,medium:SSD: 表示该目录存储热数据;

    实际操作: centos这边先不动了,直接用默认目录

    # 这里是测试环境没有多余的磁盘 用disk1 disk2 区分,生产环境:挂不同的地址可以用 u01 u02区分
    # 预创建目录:/u01/disk1/doris  /u01/disk2/doris
    storage_root_path=/u01/disk1/doris,medium:HDD;/u01/disk2/doris,medium:SSD
    
  3. 配置 JAVA_HOME 环境变量

    由于从 1.2 版本开始支持 Java UDF 函数,BE 依赖于 Java 环境。所以要预先配置 JAVA_HOME 环境变量,也可以在 start_be.sh 启动脚本第一行添加 export JAVA_HOME=your_java_home_path 来添加环境变量。

    **注意:**最开始安装JDK的时候,已经把环境变量配置好了,所有这里不用管

  4. 安装 Java UDF 函数

    安装Java UDF 函数因为从1.2 版本开始支持Java UDF 函数,需要从官网下载 Java UDF 函数的 JAR 包放到 BE 的 lib 目录下,否则可能会启动失败。

    **注意:**发现lib下面已经有 java_extensions/java-udf 。这里把他复制到lib下面

    [root@localhost lib]# pwd
    /u01/be/lib
    [root@localhost lib]# cp java_extensions/java-udf/java-udf-jar-with-dependencies.jar .
    

    7.2 启动 BE

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

    [root@localhost bin]# pwd
    /u01/be/bin
    [root@localhost bin]# ./start_be.sh --daemon
    

    提示报错1:

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

    解决方案:

    # 临时修改:使用sysctl命令临时修改参数的值
    sysctl -w vm.max_map_count=2000000
    # 永久修改:编辑/etc/sysctl.conf文件,并增加或修改以下行:
    root@narada:/u01/apache-doris-2.0.2-bin-x64/be# vim /etc/sysctl.conf
    vm.max_map_count=2000000
    
    # 保持文件后,使用一下命令更改生效
    root@narada:/u01/apache-doris-2.0.2-bin-x64/be# sysctl -p
    vm.max_map_count = 2000000
    

    提示报错2:

    Please disable swap memory before installation.
    

    解决方案:

    # 关闭交换分区(swap)
    # 使用swapoff -a命令可以关闭所有已启用的交换分区。在执行此命令之前,应仔细检查已启用的交换分区,并确保关闭它们不会对系统产生不利影响。
    swapoff -a
    

    7.3添加 BE 节点到集群

    通过MySQL 客户端连接到 FE 之后执行下面的 SQL,将 BE 添加到集群中

    -- 实例:ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
    ALTER SYSTEM ADD BACKEND "be1_ip:9050";
    ALTER SYSTEM ADD BACKEND "be2_ip:9050";
    ALTER SYSTEM ADD BACKEND "be3_ip:9050";
    
    1. be_host_ip:这里是你 BE 的 IP 地址,和你在 be.conf 里的 priority_networks 匹配
    2. heartbeat_service_port:这里是你 BE 的心跳上报端口,和你在 be.conf 里的 heartbeat_service_port 匹配,默认是 9050
    查看 BE 运行状态

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

    SHOW BACKENDS\G
    
    1. Alive : true表示节点运行正常

常见问题

1、MySQL连接报错

./mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

解决方案:

这个错误通常是由于缺少 libncurses.so.5 库文件引起的。要解决这个问题,你可以尝试以下方法:

  1. 安装 libncurses.so.5 库文件:

    sudo dnf install ncurses-compat-libs
    

    这个命令将安装 ncurses-compat-libs 软件包,它提供了 libncurses.so.5 库文件。

  2. 创建软链接: 如果安装了 ncurses-compat-libs 软件包但问题仍存在,可以尝试创建一个软链接来解决:

    # 安装以后没有,就再建一个软连接。如果已经有了 就不用管了
    sudo ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
    

    这个命令将在 /usr/lib64 目录下创建一个 libncurses.so.5 的软链接指向 libncurses.so.6。

尝试以上解决方法后,再次运行 ./mysql 命令,应该可以成功加载 libncurses.so.5 库文件并启动 MySQL 服务器。

2、导入数据时 max_allowed_packet 值过小

com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (1,347,330 > 1,048,576). You can change this value on the server by setting the 'max_allowed_packet' variable.

# 查询原来的大小是多少,默认是1G
select @@max_allowed_packet; -- 1048576
# 重新设置大小20*1024*1024;  20代表:20G
set global max_allowed_packet = 20*1024*1024;

3、centos8 查看CPU使用情况

在CentOS中,你可以使用 top 命令来查看 CPU 的使用情况。请按照以下步骤进行操作:

  1. 打开终端或 SSH 连接到 CentOS 服务器。

  2. 在终端中输入以下命令并按下回车运行:

    top
    
  3. 在顶部的信息栏中,你将看到类似下面的 CPU 使用情况:

    top - 08:45:23 up 1 day,  3:25,  1 user,  load average: 0.00, 0.01, 0.05
    Tasks: 176 total,   1 running, 175 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  2047812 total,   196180 free,  1192144 used,   653488 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.   659280 avail Mem
    

    %Cpu(s) 行列出了 CPU 的使用情况。其中,us 代表用户进程占用 CPU 的百分比,sy 代表系统进程占用 CPU 的百分比,ni 代表改变过优先级的进程占用 CPU 的百分比,id 代表空闲 CPU 的百分比,wa 代表等待 I/O 的进程占用 CPU 的百分比,hi 代表硬件中断占用 CPU 的百分比,si 代表软件中断占用 CPU 的百分比,st 代表虚拟机被强制获取 CPU 时间的百分比。

    在该信息栏中,你还可以看到系统的负载情况和内存使用情况等。你可以使用箭头键来上下滚动查看更多进程和信息。

除了 top 命令之外,你还可以使用其他一些命令来查看 CPU 使用情况,例如 htopmpstat。这些工具提供了更详细和交互式的 CPU 监控信息。你可以使用 yumdnf 命令安装这些工具。

4、centos8 查看IO使用情况

4.1 使用 iotop ,安装命令 sudo dnf install iotop

在 CentOS 8 中,你可以使用 iotop 命令来查看磁盘 I/O 使用情况。请按照以下步骤进行操作:

  1. 打开终端或通过 SSH 连接到 CentOS 8 服务器。

  2. 在终端中输入以下命令并按下回车运行:

    iotop
    
  3. 当命令运行后,你将看到类似下面的实时磁盘 I/O 使用情况的统计信息:

    在这里插入图片描述

该输出显示了每个活动的进程以及它们的磁盘 I/O 使用情况,包括磁盘读取速度(DISK READ)、磁盘写入速度(DISK WRITE)以及进程的资源占用情况。你可以根据需要来查看特定进程的 I/O 使用情况和排名。

iotop 命令提供了实时的磁盘 I/O 统计信息,可以帮助你监控磁盘活动,找到可能引起性能问题的进程。请注意,你可能需要以 root 用户身份运行 iotop 命令或具有相应权限的用户。如果系统中没有安装 iotop,你可以使用 yumdnf 命令来安装它。

4.2 使用 iostat ,安装命令 sudo dnf install sysstat

iostat 命令可以提供关于磁盘 I/O 统计信息的详细报告。请按照以下步骤进行操作:

  1. 打开终端或通过 SSH 连接到 CentOS 8 服务器。

  2. 在终端中输入以下命令并按下回车运行:

    iostat
    
  3. 你将看到类似下面的输出,其中包含了磁盘 I/O 使用情况的统计信息:

    Linux 4.18.0-80.11.2.el8_0.x86_64 (centos)      08/25/20      _x86_64_       (1 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              0.10    0.00    0.48    1.13    0.00   98.29
    
    Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               0.83         2.36         2.82     161343     198840
    sdb               0.00         0.00         0.00         10         20
    

    在输出中,kB_read/s 表示每秒的读取速度(单位为 kB),kB_wrtn/s 表示每秒的写入速度(单位为 kB),tps 表示每秒的 I/O 操作次数。

4.3 使用 dstat ,安装命令 sudo dnf install dstat

dstat 命令可以提供实时的系统资源监视器,其中包括磁盘 I/O 使用情况。请按照以下步骤进行操作:

  1. 打开终端或通过 SSH 连接到 CentOS 8 服务器。

  2. 在终端中输入以下命令并按下回车运行:

    dstat -d
    
  3. 你将看到类似下面的输出,其中包含了磁盘 I/O 使用情况及其他资源的统计信息:

    ----total-cpu-usage---- --dsk/total- --dsk/sda-- --dsk/sdb-- --net/total- --paging-- ---system--
    usr sys idl wai hiq siq| read  writ | read  writ | read  writ | recv  send |  in   out | int   csw
    ...
    

    输出中的readwrit列分别表示读取和写入的数据量。

0.00 10 20


在输出中,`kB_read/s` 表示每秒的读取速度(单位为 kB),`kB_wrtn/s` 表示每秒的写入速度(单位为 kB),`tps` 表示每秒的 I/O 操作次数。

### 4.3 使用 `dstat  ` ,安装命令  `sudo dnf install dstat`

`dstat` 命令可以提供实时的系统资源监视器,其中包括磁盘 I/O 使用情况。请按照以下步骤进行操作:

1. 打开终端或通过 SSH 连接到 CentOS 8 服务器。

2. 在终端中输入以下命令并按下回车运行:

dstat -d


3. 你将看到类似下面的输出,其中包含了磁盘 I/O 使用情况及其他资源的统计信息:

----total-cpu-usage---- --dsk/total- --dsk/sda-- --dsk/sdb-- --net/total- --paging-- —system–
usr sys idl wai hiq siq| read writ | read writ | read writ | recv send | in out | int csw


输出中的`read`和`writ`列分别表示读取和写入的数据量。

这些工具可以帮助你监控磁盘 I/O 使用情况,以便了解系统的性能和负载情况。你可以根据需要来选择使用其中的一个工具。如果系统中没有安装这些工具,你可以使用 `yum` 或 `dnf` 命令来安装它们。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第九节HarmonyOS 常用基础组件9-TextArea

1、描述 多行文本输入框组件,当输入的文本内容超过组件宽度时会自动换行显示。 2、接口 TextArea(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextAreaController}) 3、参数 参数名 参数类型 必填 描述 placeholder Resour…

通信原理期末复习——计算大题(一)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

攀登者2 - 华为OD统一考试

OD统一考试 分值: 200分 题解: Java / Python / C++ 题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下…

yiyan.baidu.com生成爬取天气预报,并以xls的形式保存到本地

import requests import xlwt import json# 创建工作簿对象 workbook xlwt.Workbook(encodingutf-8-sig) # 创建工作表对象 worksheet workbook.add_sheet(天气数据)# 设置单元格样式 style xlwt.easyxf(font: bold True;)# 定义列标题 headers [date, city, country, weat…

华为云Stack 8.X流量模型分析(六)

八、基础云专线流量模型分析 ​ 华为官方对云专线定义是:用户数据中心通过运营商的物理专线(MPLS/VPN,以太专线)访问云内资源,云内资源呈现真实IP,通过设置的专线路由实现三层互通。 ​ 通过云专线直接访…

修改安卓apk设置为安卓主屏幕(launcher)

修改安卓apk 将apk可以设置安卓主屏幕 原理: 将打包好的apk文件进行拆包增加配置文件在重新编译回apk包 需要得相关文件下载 解包 apktool :https://pan.baidu.com/s/1oyCIYak_MHDJCvDbHj_qEA?pwd5j2xdex2jar:https://pan.baidu.com/s/1Nc-0vppVd0G…

MyBatis - 批量更新(update foreach)报错

在使用mybatis执行批量更新(update foreach)数据的时候报错如下: org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; c…

jquery图形验证码

效果展示 js图形随机验证码&#xff08;表单验证&#xff09; html代码片段 <form class"formwrap"><div class"item"><input type"text" id"code_input" value"" placeholder"请输入验证码"/>…

OpenHarmony底座升级指南(3.2升级4.0)

前言 本文旨在帮助开发者完成底座升级&#xff0c;文中主要以OpenHarmony 3.2 release 升级至OpenHarmony 4.0 release为模板描述。 一、流程概览&#xff1a; 1.1 准备工作 在准备阶段&#xff0c;需要完整收集所有的定制化修改&#xff0c;明确修改人&#xff1b;并且要将…

JavaScript 基础通关

快速熟悉 JavaScript 的基础语法&#xff0c;比较高级的比如事件放在后面的笔记中。 JavaScript 1. JavaScript 介绍 1.1 JavaScript 基本介绍 JavaScript 是一门运行在客户端&#xff08;浏览器&#xff09;的编程语言&#xff0c;实现人机交互的效果。实现网页特效、表单验…

计算机中的数据运算

放上计算机中的数据的表示方法 计算机中的数据表示方法-CSDN博客 补码的运算&#xff1a; 连同符号位一起相加&#xff0c;符号位产生的进位自然丢掉&#xff0c;这里要特别注意机器数的位数&#xff0c;计算数的位数决定了可以存放的数据的大小&#xff0c;加减产生的数据的…

【LeetCode:2807. 在链表中插入最大公约数 | 链表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

构建异地企业网络互联的高效路径

在当今数字化浪潮中&#xff0c;企业的业务拓展已不再受限于地理位置。为了在全球竞争中立于不败之地&#xff0c;越来越多的企业选择在不同城市设立分支机构&#xff0c;构建异地网络&#xff0c;实现高效的协同办公。本文将深入探讨在北上广等经济发达地区&#xff0c;如何通…

Nginx 访问控制

目录 1. 传输层禁止访问 2. 应用层访问控制 访问控制有两个方式&#xff0c;一种是在OSI模型的四层传输层&#xff0c;一种是在第七层应用层。 主机防火墙就是在四层传输控制&#xff0c;nginx就是在七层应用控制。 1. 传输层禁止访问 在进行访问控制前&#xff0c;先开启防…

力扣2807.在链表中插入最大公约数

思路&#xff1a;遍历链表&#xff0c;对于每一个结点求出它与下一个结点的最大公约数并插入到俩个结点之间 代码&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}…

详细平稳解

1.详细平衡 定义&#xff1a;一个在高斯白噪声激励下的动力学系统在状态空间中如果用如下运动方程描述&#xff1a; d d t X j \frac{d}{dt}\mathbf{X}_{j} dtd​Xj​ f j ( X ) f_{j}(\mathbf{X}) fj​(X) ∑ l 1 m g j l ( X ) W l ( t ) \sum_{l1}^{m}g_{jl}(\mathbf{X})W…

大语言模型的幻觉:解析、成因及解决方法

目录 前言1 大语言模型的幻觉现象解析1.1 输入冲突幻觉&#xff08;Input-conflicting&#xff09;1.2 上下文冲突幻觉&#xff08;Context-conflicting&#xff09;1.3 事实冲突幻觉&#xff08;Fact-conflicting&#xff09; 2 幻觉产生的原因2.1 数据偏差和模型缺陷2.2 知识…

1-02VS的安装与测试

一、概述 对于一名C语言程序员而言&#xff0c;进行C语言程序的开发一般需要一个文本编辑器加上一个编译器就足够了。但为了方便起见&#xff0c;我们选择使用集成开发环境——Visual Studio&#xff08;简称VS&#xff09;。安装Visual Studio 下面讲一下如何安装VS&#xff0…

计算机网络(8):因特网上的音频/视频服务

概述 计算机网络最初是为传送数据设计的。因特网 IP 层提供的 “尽最大努力交付” 服务以及每一个分组独立交付的策略&#xff0c;对传送数据信息十分合适。因特网使用的 TCP 协议可以很好地解决P层不能提供可靠交付这一问题。 音频/视频常称为多媒体信息 多媒体信息&#xff…

Linux第17步_安装SSH服务

secure shell protocol简称SSH。 目的&#xff1a;在进行数据传输之前&#xff0c;SSH先对联级数据包通过加密技术进行加密处理&#xff0c;然后再进行数据传输&#xff0c;确保数据传输安全。 1、在安装前&#xff0c;要检查虚拟机可以上网&#xff0c;否则可能会导致安装失…