自学内容网 自学内容网

开发测试问题汇总

一、问题汇总

1、Linux添加静态IP

默认情况下是会自动ip,这个时候要改成手动的,然后再添加地址。

1.1 配置临时IP

ip addr add 192.168.237.128/24 dev eth2

1.2配置静态Ip地址

vim /etc/sysconfig/network-scripts/ifcfg-eth2

更改里面的配置
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.4.175
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="Auto eth2"
UUID=73ba0a16-841f-464c-9d44-4299ffcc005b
ONBOOT=yes
IPADDR2=192.168.237.128
PREFIX2=24
HWADDR=00:0C:29:88:98:E0
LAST_CONNECT=1691043850

或者可以考虑虚拟机可视化界面添加

2、当出现最大文件限制把内存填满

首先 df -h 查看是哪里使用率最高

df -h 查看完了之后  比如说是/ 目录  

cd /
du -sh *  可以查看哪个文件使用大小
之后一点点的递进 
知道找出占用最多的文件删除掉

3. git

git本地没有分支的情况下 切换分支

git checkout --track  origin/分支名   #这里本地与远程分支名字是一样的,相关联的

4 markdown绘制流程图

https://blog.csdn.net/zhw21w/article/details/125749449)

5、vscode (git graph出错)

报错内容:

加载 Web 视图时出错: Error: Could not register service worker: InvalidStateError: Failed to register a ServiceWorker: The document is in an invalid state…

解决方案 :

1、关闭vscode

2、按WIN + R,输入cmd,打开终端,然后输入命令

code --no-sandbox

3、会重启vscode,就可以正常使用了。

6.vscode更换字体

自带字体代码配置

Consolas, 'Courier New', monospace

重新配置字体


7. 压缩大文件

使用Bandzip压缩使用,很好用

8、navicat连接不上数据库,出现错误代码是1045

现在假设我本地机器的Ip是 192.168.2.2 ,服务器的ip是192.168.2.65

一定要保证在同意网段

直接在服务器登录mysql : mysql -u root -psunkaisens

直接在下面输入命令

 grant all privileges on *.* to 'root'@'192.168.2.2' identified by 'sunkaisens';

这行的命令是给远程服务器加上本地机器访问权限,可以远程访问mysql数据库可以远程访问mysql数据库

9 mysql++库

mysql++库里面的 connected()方法和ping()方法的区别

在MySQL++库中,ping()connected() 是用于检测连接状态的两种不同方法。

1、ping() 方法:

  • 作用: 发送一个PING命令到MySQL服务器,用于检测连接是否仍然处于活动状态。
  • 返回值: 如果连接活动,返回 true;如果连接不活动或已经断开,返回 false
  • 使用场景: 适用于在程序中定期检测连接状态,以便及时发现并处理失效的连接。
mysqlpp::Connection con("database", "user", "password", "localhost");

// 检测连接状态
if (con.ping()) {
    std::cout << "Connection is active." << std::endl;
} else {
    std::cout << "Connection is not active." << std::endl;
}

2、connected() 方法:

  • 作用: 返回一个布尔值,指示连接是否处于活动状态。
  • 返回值: 如果连接活动,返回 true;如果连接不活动或已经断开,返回 false
  • 使用场景: 适用于在程序中检查连接状态,以确定连接是否成功建立。
mysqlpp::Connection con("database", "user", "password", "localhost");

// 检查连接状态
if (con.connected()) {
    std::cout << "Connected to MySQL server." << std::endl;
} else {
    std::cout << "Connection failed." << std::endl;
}

区别:

  • ping() 主要用于在程序中定期检测连接状态,防止由于连接超时或其他原因导致连接失效。
  • connected() 主要用于在程序中检查连接状态,以确保连接成功建立。connected()函数只会检测之前数据库连接的状态

在实际应用中,可以根据具体的需求选择使用哪种方法,或者在适当的情况下结合使用这两种方法。例如,可以在程序启动时使用 connected() 检查连接状态,然后在程序运行过程中定期使用 ping() 来保持连接活动。

10 配置的IP

192.168.100.175

192.168.4.176

192.168.237.176

10.99.0.113

10.1.1.10

10.21.1.145

192.168.100.27

192.168.20.34

11 linux虚拟机进行扩容内部操作 (前提是在外面做了扩容)

#查看当前分区情况
fdisk -l
Disk /dev/sda: 53.6 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
 /dev/sda1   *           1          13      104391   83  Linux
 /dev/sda2              14        2610    20860402+  8e  Linux LVM

#Create a new partition that takes up the remaining space and is of filesystem type 8e (LVM):
fdisk /dev/sda
 n (new)
 p (primary)
 3 (partition number, since 1st and 2nd partition already exists)
 select default first available cylinder to the default last cylinder.
 t (type)
 3 (partition number)
 8e (set type to LVM)
 p (view the new partitions layout)
 w (write out the new partitions layout to disk)

#重启系统
#查看更新的分区:重启后,可以看到新增分区,格式为lvm
Fdisk -l
Device Boot      Start         End      Blocks   Id  System
 /dev/sda1   *           1          13      104391   83  Linux
 /dev/sda2              14        2610    20860402+  8e  Linux LVM
 /dev/sda3            2611        6527    31463302+  8e  Linux LVM

格式化硬盘格式(必选,由于不同的硬件环境有不同的格式,因此务必确认现有的磁盘格式,可以通过df -hT查看),如下是虚拟机常用的格式,xfs格式,注意如下命令的后缀代表了文件系统格式。

mkfs.xfs /dev/sda3
 pvdisplay 查看VG名称,拓展现有组

#pvcreate命令 用于将物理硬盘分区初始化为物理卷,以便LVM使用。
pvcreate /dev/vda3 
#通过 df -hT 查看所需添加到的卷组名称无须加root;或pvdisplay查看
vgextend rhel(卷名) /dev/vda3 
(note the free space now in the Volume Group which can now be assigned to a Logical Volume)
#vgdisplay确认拓展后结果
--- Volume group ---
 VG Name               VolGroup00
 System ID
 Format                lvm2
 Metadata Areas        2
 Metadata Sequence No  4
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                2
 Open LV               2
 Max PV                0
 Cur PV                2
 Act PV                2
 VG Size               49.88 GB
 PE Size               32.00 MB
 Total PE              1596
 Alloc PE / Size       636 / 19.88 GB
 Free  PE / Size       960 / 30.00 GB
 VG UUID               0JB6GV-gFJW-onuN-7Xq1-OKim-n5gM-EVPUKB
#拓展挂载点对应的文件系统。
lvextend -L +89G /dev/mapper/rhel-root /dev/vda3或
lvextend -l +100%FREE /dev/mapper/rhel-root /dev/vda3
#可选,立即使用拓展空间。注意这里与上面不一样,这是挂载点,是df命令的最后一列,而非第一列。
xfs_growfs /
#挂载点对应的文件系统名称可以df -h 1G,查看。
#Df -h确认根目录已经被拓展。

编译

编译4.2.0arm的smsc时候 去烧libudev库 在Makefile 里面 加上 -ludev链接试试

11、虚拟机共享文件配置了,终端不显示

sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

/mnt/hgfs/ 是挂载点,我们也可以修改为其它挂载点
-o allow_other 表示普通用户也能访问共享目录。

然后,再次进入 /mnt/hgfs 查看 (注意:挂载后必须要再次进入/mnt/hgfs才能查看到共享的文件夹)

目录共享成功。

注意:如果虚拟机重启,需要再次挂载共享文件夹。

12、Mysql++

1、mysql++编译x86版本

`./config`ure  (为了生成Makefile文件)

make 

make install 

2、mysql++编译arm版本

./configure   CXX=/root/Libary/gcc-linaro-5.4.1-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++  LDFLAGS="-L/root/Libary/gcc-linaro-5.4.1-2017.01-x86_64_aarch64-linux-gnu/lib" 



LIBS="-lmysqlpp.so -lmysqlclient.so"

make 

make install 

3、清除 make clean

13、openssl(版本是1.1.1w)

OpenSSL静态库编译及使用(linux环境)_openssl编译静态库 pbkdf1.c:(.text+0x153): undefined ref-CSDN博客

这个是编译动态链接库的链接 Linux(centos7)下安装OpenSSL 安装详解_/usr/include/openssl-CSDN博客

在makefile中加上 -lssl, -lcrypto

14.虚拟机配置桥接模式

vmware的NAT模式改成桥接模式_原本使用nat模式能换成桥接-CSDN博客

15、可以单独连接某个服务器

def ssh_execute_command(self, card_id, command):
        """
        通过SSH连接到远程服务器并执行命令。

        参数:
        card_id (str): 板卡ID,用于获取相应的SSH连接对象。
        command (str): 要执行的命令。

        返回:
        str: 命令执行结果。
        """
        # 建立SSH连接
        ssh = self.cardSSHCon[int(card_id)]
        stdin, stdout, stderr = ssh.exec_command(command)
        result = stdout.read().decode().strip()
        ssh.close()
        return result

16 麒麟v10系统配置lmt

16.1 第一种方式

1、首先安装openssl_dev版本的库, 因为原来的没有头文件, 导致pip不可用

yum install openssl_devel.aarch64

2、安装python3.9.5的源码包

python3.9.5的包在这个目录下 E:\lmt\python源码包

tar -zxvf Python-3.9.5.tgz
cd Python-3.9.5/
./configure --with-ssl --prefix=/usr/local/python3.9.5
make 
make install 

配置环境变量 在 /etc/profile下面配置

printenv 打印环境变量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

export PATH=/usr/local/python3.9.5/bin/:$PATH

之后输入 python3 -V pip3 -V 检测一下

在这里插入图片描述
在这里插入图片描述
3、安装pv

yum install pv 

4、安装nginx

yum install nginx*  
是因为之前的nginx缺少库

cp /usr/sbin/nginx  /opt/zqlmt/sbin/

5、配置lmt

执行install.sh 路径在 /opt/zqlmt/installShell/install.sh
在这里插入图片描述

先输入1 , 在输入2

进入目录

cd /op/zqlmt/

关闭

./stopweb.sh

开启

./startweb.sh

6、把softPackage 包移到/home/ 解压 tar -xvf 包名 ,

把pconfig.conf移动到softpackage替换掉

7、yum源联网配置

###Kylin Linux Advanced Server 10 - os repo###

[ks10-adv-os]
name = Kylin Linux Advanced Server 10 - Os 
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP2/os/adv/lic/base/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 1

[ks10-adv-updates]
name = Kylin Linux Advanced Server 10 - Updates
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP2/os/adv/lic/updates/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 1

[ks10-adv-addons]
name = Kylin Linux Advanced Server 10 - Addons
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP2/os/adv/lic/addons/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 0

8.离线源配置

[ks10-adv-cdrom]
name = Kylin Linux Advanced Server 10 - cdrom
#baseurl = file:///run/media/root/KYLIN10-SVR
baseurl = file:///media/KylinV10
#baseurl = http://archive2.kylinos.cn/rpm/kylin/Library/custom/kylin-server/KY10-GFB-aarch64
gpgcheck = 0
enabled = 1

16,2 第二种方式


17电脑共享服务器网络

我现在能ping通的地址是200.200.200.20

1、那就在下面虚一个网卡

ifconfig enP1p6s0f0:2 本机联网ip  
route -n 查看一下有没有路由
route add default gw 192.168.137.1  添加一个网关
vim /etc/resolv.conf
输入nameserver 114.114.114.114

2、下面在电脑上就行共享

在这里插入图片描述

专用网络连接选择以太网

之后通过配置的 本机联网ip 就可以登录了

enP1p6s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 200.200.200.20  netmask 255.255.255.0  broadcast 200.200.200.255
        inet6 fe80::3209:f9ff:fe25:13b5  prefixlen 64  scopeid 0x20<link>
        ether 30:09:f9:25:13:b5  txqueuelen 1000  (Ethernet)
        RX packets 136185  bytes 11792323 (11.2 MiB)
        RX errors 0  dropped 4434  overruns 0  frame 0
        TX packets 8097  bytes 861195 (841.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enP1p6s0f0:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.137.14  netmask 255.255.255.0  broadcast 192.168.137.255
        ether 30:09:f9:25:13:b5  txqueuelen 1000  (Ethernet)

18 麒麟V10系统配置永久静态IP

1、首先进入 
vim/etc/sysconfig/network-ifcfg-enP1p5s0f0:1
2、创建一个网卡的配置文件  
cp ifcfg-enP1p5s0f0  ifcfg-enP1p5s0f0:1
3、打开 ifcfg-enP1p5s0f0:1文件  
vim ifcfg-enP1p5s0f0:1
4、修改参数
HWADDR=30:09:F9:21:21:19
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_PRIVACY=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="enP1p5s0f0:1"
UUID=c199806a-6b2b-4237-b6f6-9189a61d1b55
DEVICE=enP1p5s0f0:1
ONBOOT=yes
IPADDR=200.200.200.45
NETMASK=255.255.255.0

5、重启网卡
systemctl restart network.service 

19mysql事务抢占锁

要调整数据库中锁等待超时的阈值,需要根据具体的数据库管理系统来设置。以下是一些常见数据库系统(如MySQL/MariaDB)中调整锁等待超时阈值的方法示例:

MySQL / MariaDB 示例

在 MySQL 或 MariaDB 中,可以通过设置 innodb_lock_wait_timeout 参数来调整锁等待超时的阈值。这个参数控制了一个事务在等待锁释放的时间长度,单位是秒。

  1. 查看当前设置

    SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';
    
  2. 设置新值

    SET GLOBAL innodb_lock_wait_timeout = 60;  -- 将锁等待超时时间设置为60秒
    

    或者在配置文件(如 my.cnfmy.ini)中添加或修改以下行:

    目录在/etc/my.cnf.d/mariadb-server.cnf

    [mysqld]
    innodb_lock_wait_timeout = 60
    
  3. 重新启动数据库: 修改完配置文件后,需要重新启动数据库服务使配置生效。

注意事项:

  • 单位:超时时间的单位是秒。
  • 影响:增加锁等待超时时间可能会使得长时间等待锁的事务能够成功完成,但也可能会导致其他事务等待时间变长或者资源争用加剧。因此,设置合适的超时时间需要根据实际应用和数据库负载情况来权衡。
  • 权限:修改 innodb_lock_wait_timeout 需要相应的权限(通常是 SUPER 权限)。

在实际应用中,建议根据数据库的负载和事务处理需求来调整这些配置参数,以提升系统性能和稳定性。

二、开发

1、前端获取数据时创建弹窗

<template>
  <div class="student-data-container">
    <!-- 加载按钮 -->
    <el-button type="primary" @click="fetchStudentData">获取学生数据</el-button>

    <!-- 数据表格 -->
    <el-table :data="studentData" style="width: 100%; margin-top: 20px;">
      <el-table-column prop="name" label="姓名" width="180"></el-table-column>
      <el-table-column prop="age" label="年龄" width="180"></el-table-column>
      <el-table-column prop="class" label="班级" width="180"></el-table-column>
    </el-table>

    <!-- 弹窗 -->
    <el-dialog
      title="正在获取用户数据,请稍等..."
      :visible.sync="dialogVisible"
      :close-on-click-modal="false"
    >
      <el-progress :text-inside="true" :percentage="progressPercentage"></el-progress>
    </el-dialog>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      studentData: [],
      dialogVisible: false,
      progressPercentage: 0,
    };
  },
  methods: {
    async fetchStudentData() {
      // 显示加载弹窗
      this.dialogVisible = true;
      this.progressPercentage = 0;

      try {
        const response = await axios.get('/api/students'); // 根据实际的API接口调整URL
        this.studentData = response.data;
      } catch (error) {
        console.error('获取学生数据失败:', error);
        this.$message.error('获取学生数据失败');
      } finally {
        // 关闭加载弹窗
        this.dialogVisible = false;
      }
    },
  },
};
</script>

<style scoped>
.student-data-container {
  padding: 20px;
}
</style>

1.1 api模拟

如果没有实际的API,可以使用json-server模拟一个API:

 npm install -g json-server

创建一个db.json文件:

{
  "students": [
    { "name": "张三", "age": 18, "class": "一班" },
    { "name": "李四", "age": 19, "class": "二班" },
    { "name": "王五", "age": 20, "class": "三班" }
  ]
}

运行json-server

json-server --watch db.json

这样,你就可以在http://localhost:3000/students访问到模拟的学生数据API。将axios.get的URL改为http://localhost:3000/students即可进行测试。

1.2 搜索框点击回车刷新页面问题

在这里插入图片描述

出现这个问题的主要原因是因为浏览器的默认行为。当一个输入框在表单中处于焦点时,用户按下回车键,浏览器会自动尝试提交该表单。这种行为是浏览器的默认设置,用于提交用户输入的数据。

1.2.1具体原因分析:

  1. 浏览器默认表单提交行为
    • 当用户在表单中按下回车键时,浏览器会尝试提交整个表单。这在普通的 HTML 表单中是有用的,因为它允许用户在填完表单后快速提交数据。
    • 如果这个提交行为没有被阻止,页面会刷新,因为表单提交的默认行为是重新加载当前页面或导航到表单的 action 指定的目标页面。
  2. Vue 与 Element UI 的组合
    • Vue 在处理表单时,如果没有显式地阻止提交,依然会遵循浏览器的默认行为,即使表单中没有指定 action
    • 在使用 Element UI 这样的 UI 框架时,表单控件如 <el-input> 会自动嵌套在 <el-form> 中,用户按下回车时的默认表单提交行为依然存在,导致页面刷新。
  3. 解决方案:阻止默认行为
    • 通过在 <el-form> 中添加 @submit.native.prevent,你显式地阻止了表单的默认提交行为,防止页面刷新。
    • 使用 @keyup.enter.native.prevent 在输入框按下回车时,进一步阻止默认行为,并处理自定义的搜索逻辑。

550863346)]

[外链图片转存中…(img-R57Q9qxa-1731550863346)]

出现这个问题的主要原因是因为浏览器的默认行为。当一个输入框在表单中处于焦点时,用户按下回车键,浏览器会自动尝试提交该表单。这种行为是浏览器的默认设置,用于提交用户输入的数据。

1.2.1具体原因分析:

  1. 浏览器默认表单提交行为
    • 当用户在表单中按下回车键时,浏览器会尝试提交整个表单。这在普通的 HTML 表单中是有用的,因为它允许用户在填完表单后快速提交数据。
    • 如果这个提交行为没有被阻止,页面会刷新,因为表单提交的默认行为是重新加载当前页面或导航到表单的 action 指定的目标页面。
  2. Vue 与 Element UI 的组合
    • Vue 在处理表单时,如果没有显式地阻止提交,依然会遵循浏览器的默认行为,即使表单中没有指定 action
    • 在使用 Element UI 这样的 UI 框架时,表单控件如 <el-input> 会自动嵌套在 <el-form> 中,用户按下回车时的默认表单提交行为依然存在,导致页面刷新。
  3. 解决方案:阻止默认行为
    • 通过在 <el-form> 中添加 @submit.native.prevent,你显式地阻止了表单的默认提交行为,防止页面刷新。
    • 使用 @keyup.enter.native.prevent 在输入框按下回车时,进一步阻止默认行为,并处理自定义的搜索逻辑。

总结来说,这个问题源于浏览器的默认表单提交行为,在使用 Vue 和 Element UI 时,如果没有正确处理,就可能会导致页面刷新。通过显式地阻止这些默认行为,可以解决这个问题。


原文地址:https://blog.csdn.net/qq_44139121/article/details/143760027

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!