【C++】-List经典面试笔试题总结-删除-插入-情况-合并-排序等经典操作

在C++中,list 容器是标准模板库(STL)中的一种双向链表容器。以下是一些关于 list 的经典笔试面试题及解答:

1. list 容器的主要特点是什么?

解答
list 容器的主要特点包括:

  • 它是一个双向链表结构,每个元素都有两个指针,分别指向前一个和后一个元素。
  • 插入和删除操作的时间复杂度为 O(1),因为这些操作只需要改变指针。
  • 不支持随机访问,访问元素需要从头开始遍历,时间复杂度为 O(n)。
  • 元素在 list 中保持插入顺序。

2. list 容器有哪些常用的成员函数?

解答
list 容器的常用成员函数包括:

  • push_front():在列表前端插入元素。
  • push_back():在列表后端插入元素。
  • pop_front():删除列表前端元素。
  • pop_back():删除列表后端元素。
  • insert():在指定位置插入元素。
  • erase():删除指定位置的元素。
  • remove():删除所有匹配特定条件的元素。
  • reverse():反转列表中元素的顺序。
  • sort():对列表中的元素进行排序。
  • clear():清除列表中的所有元素。
  • empty():检查列表是否为空。
  • size():获取列表中元素的数量。

3. 如何反转一个 list 容器中的元素顺序?

解答
要反转 list 容器中的元素顺序,可以使用 reverse() 成员函数:

#include <iostream>
#include <list>
#include <algorithm>
int main() {std::list<int> myList{1, 2, 3, 4, 5};myList.reverse();// 现在 myList 的顺序是 5, 4, 3, 2, 1return 0;
}

或者,也可以使用 std::rotate() 函数或 std::reverse_iterator 来反转。

4. list 容器能否进行随机访问?为什么?

解答
list 容器不能进行随机访问。在 list 中,元素不是连续存储的,因此没有固定的索引。要访问 list 中的元素,必须从头节点开始遍历,这样的访问方式时间复杂度为 O(n),这与数组或向量等容器不同,它们可以随机访问元素,时间复杂度为 O(1)。

5. 在 list 容器中删除元素时,有哪些情况需要注意?

解答
list 容器中删除元素时,需要注意以下几点:

  • 如果删除的是列表的第一个元素,需要处理特殊情况,比如使用 pop_front() 函数。
  • 如果删除的是最后一个元素,需要使用 pop_back() 函数。
  • 如果删除的是列表中间的元素,那么需要更新前一个元素和后一个元素的指针,以保持链表的连续性。
  • 当删除一个元素后,若该元素是列表中唯一的元素,那么需要特别注意列表的 empty() 和 size() 函数的返回值。

6. 如何清空一个 list 容器?

解答
清空 list 容器有多种方式:

  • 使用 clear() 成员函数:
    myList.clear();
    
  • 也可以遍历列表并逐个删除元素:
    for (auto it = myList.begin(); it != myList.end(); ++it) {myList.erase(it);
    }
    

7. list 容器中插入元素时,如果指定的位置已经存在元素,应该如何处理?

解答
list 容器中插入元素时,如果指定的位置已经存在元素,新插入的元素会覆盖原来位置上的元素。例如:

#include <iostream>
#include <list>
int main() {std::list<int> myList{1, 2, 3, 4, 5};myList.insert(myList.begin() + 2, 100); // 在位置2插入元素100// myList 变为 1, 2, 100, 3, 4, 5return 0;
}

8. list 容器有哪些缺点?

解答
list 容器的主要缺点包括:

  • 不支持快速随机访问,访问元素需要从头开始遍历。
  • 插入和删除操作虽然快,但是不能在中间位置插入或删除,只能在一端操作。
  • 不能直接通过下标访问或修改元素,需要使用迭代器。
  • 相对于其他STL容器如 vectormaplist 的使用场景较为有限。

9. 如何在一个已排序的 list 容器中插入一个新元素,以保持排序?

解答
要在一个已排序的 list 容器中插入一个新元素以保持排序,可以使用 insert() 函数和 std::list::sort() 函数。首先,使用 insert() 函数在适当的位置插入新元素,然后调用 sort() 函数重新排序列表:

#include <iostream>
#include <list>
#include <algorithm>
int main() {std::list<int> myList{1, 3, 5, 7, 9};myList.insert(myList.begin() + 2, 4); // 在位置2插入元素4myList.sort(); // 排序,现在 myList 为 1, 3, 4, 5, 7, 9return 0;
}

10. list 容器与 vector 容器的主要区别是什么?

解答
list 容器与 vector 容器的主要区别包括:

  • list 是双向链表,而 vector 是连续存储的数组。
  • list 不支持随机访问,而 vector 支持随机访问。
  • list 的插入和删除操作在一般情况下更高效(O(1)),但在某些情况下(如在中间位置插入或删除)效率较低。
  • vector 的内存分配方式使得其在动态扩展时相对高效,而 list 的元素需要单独的节点内存。

11. 在 list 容器中,如何快速找到指定元素的下一个元素?

解答
list 容器中,要快速找到指定元素的下一个元素,可以使用迭代器。首先,通过迭代器找到要查找的元素,然后使用 std::next 函数或箭头操作符 -> 获取下一个元素的迭代器。例如:

#include <iostream>
#include <list>
int main() {std::list<int> myList{1, 2, 3, 4, 5};std::list<int>::iterator it = myList.begin();it++; // 指向第二个元素it++; // 指向第三个元素// 现在 it 指向第三个元素return 0;
}

12. list 容器中删除元素时,如何避免删除错误的元素?

解答
list 容器中删除元素时,要避免删除错误的元素,可以先找到要删除的元素,然后使用 erase() 函数删除。例如:

#include <iostream>
#include <list>
int main() {std::list<int> myList{1, 2, 3, 4, 5};std::list<int>::iterator it = myList.begin();it++; // 指向第二个元素myList.erase(it); // 删除第二个元素// 现在 myList 为 1, 3, 4, 5return 0;
}

13. 如何在一个 list 容器中删除所有值为特定值的元素?

解答
要在一个 list 容器中删除所有值为特定值的元素,可以使用 remove_if() 函数。例如:

#include <iostream>
#include <list>
#include <algorithm>
int main() {std::list<int> myList{1, 2, 3, 4, 5, 3};myList.remove_if([](int x) { return x == 3; });// 现在 myList 为 1, 2, 4, 5return 0;
}

14. 如何反转 list 容器中的元素顺序,不使用库函数?

解答
要反转 list 容器中的元素顺序,不使用库函数,可以使用迭代器手动交换每对相邻元素的位置。

#include <iostream>
#include <list>
void reverseList(std::list<int>& myList) {std::list<int>::iterator it1 = myList.begin();std::list<int>::iterator it2 = myList.end();while (it1 != it2) {std::iter_swap(it1, --it2);++it1;}
}
int main() {std::list<int> myList{1, 2, 3, 4, 5};reverseList(myList);// 现在 myList 的顺序是 5, 4, 3, 2, 1return 0;
}

15. 在 list 容器中,如何删除所有重复的元素?

解答
list 容器中删除所有重复的元素,可以使用 std::unique() 函数和 std::sort() 函数。首先使用 std::sort() 函数排序列表,然后使用 std::unique() 函数删除重复的元素。

#include <iostream>
#include <list>
#include <algorithm>
int main() {std::list<int> myList{1, 2, 3, 4, 4, 5, 5};myList.sort();myList.unique();// 现在 myList 的顺序是 1, 2, 3, 4, 5return 0;
}

16. 如何合并两个 list 容器?

解答
合并两个 list 容器,可以使用 std::merge() 函数。首先将两个列表排序,然后使用 std::merge() 函数将它们合并。

#include <iostream>
#include <list>
#include <algorithm>
int main() {std::list<int> list1{1, 3, 5};std::list<int> list2{2, 4, 6};list1.sort();list2.sort();std::list<int> mergedList(std::merge(list1, list2));// 现在 mergedList 的顺序是 1, 2, 3, 4, 5, 6return 0;
}

17. 如何清空一个 list 容器,同时保持其迭代器有效性?

解答
要清空一个 list 容器,同时保持其迭代器有效性,可以使用 clear() 函数。这会删除所有元素,但不会改变容器的大小,因此迭代器仍然有效。

#include <iostream>
#include <list>
int main() {std::list<int> myList{1, 2, 3, 4, 5};myList.clear();// myList 现在是空的,但迭代器仍然有效return 0;
}

18. 如何反转 list 容器中的元素顺序,同时保持其迭代器有效性?

解答
要反转 list 容器中的元素顺序,同时保持其迭代器有效性,可以使用 reverse() 函数。这会交换每对相邻元素的位置,但不会改变迭代器的有效性。

#include <iostream>
#include <list>
int main() {std::list<int> myList{1, 2, 3, 4, 5};myList.reverse();// 现在 myList 的顺序是 5, 4, 3, 2, 1,迭代器仍然有效return 0;
}

19. 在 list 容器中,如何插入元素到特定位置?

解答
list 容器中,你可以使用 insert() 函数来插入元素到特定位置。这个函数接受两个参数:第一个参数是一个迭代器,表示你想要插入元素的位置;第二个参数是要插入的元素。如果插入位置已经存在元素,新元素将会覆盖那个位置上的元素。

#include <iostream>
#include <list>
int main() {std::list<int> myList{1, 2, 3, 4, 5};myList.insert(myList.begin(), 0); // 在列表开始处插入元素0myList.insert(++myList.begin(), 200); // 在第二个元素之前插入元素200myList.insert(myList.end(), 6); // 在列表末尾插入元素6// 现在 myList 的顺序是 1, 2, 200, 3, 4, 5, 6return 0;
}

20. 在 list 容器中,如何删除元素 using 迭代器?

解答
list 容器中,你可以使用 erase() 函数来删除元素。这个函数接受一个迭代器,表示你想要删除的元素的位置。删除操作之后,迭代器将指向下一个有效的元素。

#include <iostream>
#include <list>
int main() {std::list<int> myList{1, 2, 3, 4, 5};std::list<int>::iterator it = myList.begin();it++; // 指向第二个元素myList.erase(it); // 删除第二个元素// 现在 myList 的顺序是 1, 3, 4, 5return 0;
}

21. 如何在一个已排序的 list 容器中插入一个新元素,同时保持排序?

解答
要在一个已排序的 list 容器中插入一个新元素同时保持排序,可以使用 emplace() 函数。这个函数直接在指定的位置创建并插入元素,避免了复制或移动元素,因此在插入大量元素时更为高效。

#include <iostream>
#include <list>
int main() {std::list<int> myList{1, 3, 5, 7, 9};myList.emplace(myList.begin() + 2, 4); // 在第三个元素的位置插入元素4// 现在 myList 的顺序是 1, 3, 4, 5, 7, 9return 0;
}

22. 如何遍历 list 容器 using 迭代器?

解答
遍历 list 容器 using 迭代器非常直接。你可以使用标准迭代器来逐个访问容器中的元素。

#include <iostream>
#include <list>
int main() {std::list<int> myList{1, 2, 3, 4, 5};for (std::list<int>::iterator it = myList.begin(); it != myList.end(); ++it) {std::cout << *it << " ";}// 输出: 1 2 3 4 5return 0;
}

23. 如何反转 list 容器中的元素顺序,同时保持其迭代器有效性?

解答
要反转 list 容器中的元素顺序,同时保持其迭代器有效性,可以使用 reverse() 函数。这个函数会修改容器中的元素顺序,但不会影响迭代器的有效性。

#include <iostream>
#include <list>
int main() {std::list<int> myList{1, 2, 3, 4, 5};myList.reverse();// 现在 myList 的顺序是 5, 4, 3, 2, 1,迭代器仍然有效return 0;
}

24. list 容器如何进行插入操作?

解答
list 容器中插入元素有多种方式:

  1. 在容器开始处插入:insert(const T& elem)insert(const T& elem, const T& hint)
  2. 在指定位置插入:insert(const_iterator position, const T& elem)
  3. 插入多个元素:insert(const_iterator position, const T* first, const T* last)
  4. 插入范围:insert(const_iterator position, InputIt first, InputIt last)
    例如,要在列表的开始处插入一个元素,可以使用 insert(begin(), elem)。要在特定位置插入元素,可以使用 insert(position, elem),其中 position 是一个指向列表中当前位置的迭代器。

25. list 容器如何进行删除操作?

解答
list 容器中删除元素也有多种方式:

  1. 删除指定元素:erase(const_iterator position)
  2. 删除指定元素(通过值):erase(const T& elem)
  3. 删除范围:erase(const_iterator first, const_iterator last)
    例如,要删除一个特定位置的元素,可以使用 erase(position),其中 position 是一个指向要删除元素的迭代器。要删除所有值为特定值的元素,可以使用 remove(elem)remove_if(pred),其中 pred 是一个符合 std::remove_if_tstd::predicate 类型的函数对象或函数指针。

26. list 容器如何进行排序操作?

解答
list 容器不保证元素的自然顺序,但你可以使用 sort() 函数对其进行排序。要排序 list,可以使用 sort(comp),其中 comp 是一个符合 std::lessstd::greater 类型的比较函数。

#include <algorithm>
#include <list>
int main() {std::list<int> myList{3, 1, 4, 1, 5, 9};myList.sort(); // 使用默认比较器// 现在 myList 的顺序是 1, 1, 3, 4, 5, 9return 0;
}

27. list 容器如何进行合并操作?

解答
要合并两个 list 容器,可以使用 merge() 函数。这个函数将一个列表中的元素合并到另一个已排序的列表中。

#include <algorithm>
#include <list>
int main() {std::list<int> list1{1, 3, 5};std::list<int> list2{2, 4, 6};list1.sort();list2.sort();list1.merge(list2);// 现在 list1 的顺序是 1, 2, 3, 4, 5, 6return 0;
}

28. list 容器如何进行旋转操作?

解答
list 容器中,旋转操作可以将列表中的元素围绕一个指定的元素进行旋转。这可以通过交换元素来实现,但需要注意的是,旋转操作不一定会保持列表的排序。

#include <list>
void rotateList(std::list<int>& myList, int pos) {if (pos <= 0) return;auto it = myList.begin();std::advance(it, pos);myList.splice(myList.begin(), myList, it);
}
int main() {std::list<int> myList{1, 2, 3, 4, 5};rotateList(myList, 2); // 将列表旋转2个位置// 现在 myList 的顺序是 4, 5, 1, 2, 3return 0;
}

29. list 容器如何进行拆分操作?

解答
list 容器中,拆分操作通常指的是将一个列表分割成两个或多个列表。这可以通过使用 split() 函数来实现,该函数接受一个迭代器作为分隔点,并将列表拆分为两部分。

#include <algorithm>
#include <list>
void splitList(std::list<int>& myList, const std::list<int>::const_iterator& pos) {auto second_half = std::make_unique<std::list<int>>(myList.begin(), pos);myList.erase(myList.begin(), pos);myList.splice(myList.end(), *second_half);
}
int main() {std::list<int> myList{1, 2, 3, 4, 5};auto it = myList.begin();std::advance(it, 2); // 选择第三个元素作为分隔点splitList(myList, it);// 现在 myList 包含前两个元素:1, 2// second_half 包含后三个元素:3, 4, 5return 0;
}

30. list 容器与 vector 容器的主要区别是什么?

解答
list 容器和 vector 容器都是顺序容器,但它们在实现和性能上有一些关键区别:

  1. 内存分配vector 使用连续的内存块,这使得访问元素非常快,只需常数时间 O(1)。而 list 使用双向链表结构,每个元素都需要额外的空间来存储到下一个和前一个元素的链接,这影响了元素的访问速度,访问通常需要线性时间 O(n)
  2. 插入和删除:在 vector 中插入或删除元素可能会导致内存重新分配,这需要移动大量元素,因此时间复杂度为 O(n)。在 list 中,插入和删除元素只需要改变链接,这可以在常数时间内完成。
  3. 大小和容量vector 的大小和容量是动态变化的,它会根据需要自动增长。而 list 的大小是固定的,但它可以无限增长,因为链表的元素可以在内存中的任意位置。
  4. 迭代器vector 的迭代器是随机访问迭代器,可以快速访问容器中的任意元素。list 的迭代器是双向迭代器,可以向前和向后遍历,但不能随机访问。

31. 在使用 list 容器时,如何避免无限循环的问题?

解答
在使用 list 容器时,避免无限循环的关键是确保不要创建循环引用。在 list 中,每个元素都包含两个指针,分别指向前一个元素和后一个元素。如果删除操作没有正确更新这些指针,就可能导致元素之间的链接没有被正确断开,从而形成循环。
为了避免无限循环,应该总是在删除元素之前删除指向它的所有引用,并且在删除元素时总是从链表的头部开始。此外,使用 erase() 函数时,确保不要删除最后一个元素后立即访问下一个元素,因为这时下一个元素的指针可能仍然指向已被删除的元素。
例如,下面的代码可能会导致无限循环,因为它尝试访问已被删除元素的下一个元素:

#include <list>
int main() {std::list<int> myList{1, 2, 3, 4, 5};auto it = myList.begin();while (it != myList.end()) {it = myList.erase(it); // 删除当前元素并返回下一个元素}// 在这里尝试访问 it 可能会导致无限循环,因为 myList 已经为空return 0;
}

正确的做法是在循环中直接使用 erase() 函数的返回值来更新迭代器:

#include <list>
int main() {std::list<int> myList{1, 2, 3, 4, 5};while (!myList.empty()) {myList.erase(myList.begin()); // 删除并返回第一个元素}// myList 现在为空,没有无限循环的风险return 0;
}

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

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

相关文章

检索算法和技术的本质回顾

目录 一、数据结构和存储特点对检索效率的重大影响总结 二、数组和链表的线性结构检索 &#xff08;一&#xff09;基本分析 &#xff08;二&#xff09;使用二分查找提升数组检索效率 &#xff08;三&#xff09;灵活改造链表提升检索效率 问题背景 解决方案 歌曲块链…

循序渐进丨使用 Python 向 MogDB 数据库批量操作数据的方法

当我们有时候需要向数据库里批量插入数据&#xff0c;或者批量导出数据时&#xff0c;除了使用传统的gsql copy命令&#xff0c;也可以通过Python的驱动psycopg2进行批量操作。本文介绍了使用psycopg2里的executemany、copy_from、copy_to、copy_expert等方式来批量操作 MogDB …

ES6的Set与Map

在ES6之前&#xff0c;我们存储数据的结构主要有两种&#xff1a;数组、对象&#xff0c;而在ES6中新增了另外两种数据结构&#xff1a;Set、Map。 一、什么是Set&#xff1f; Set是ES6新增的数据结构&#xff0c;类似数组&#xff0c;但是它的元素成员是唯一的。 Set的使用&am…

[C++][算法基础]求a的b次方模p的值(快速幂)

给定 n 组 &#xff0c;对于每组数据&#xff0c;求出 的值。 输入格式 第一行包含整数 n。 接下来 n 行&#xff0c;每行包含三个整数 。 输出格式 对于每组数据&#xff0c;输出一个结果&#xff0c;表示 的值。 每个结果占一行。 数据范围 1≤n≤100000, 1≤≤2 …

移动Web学习09-响应式布局bootstrap案例开发

3、综合案例-AlloyTeam移动全端 准备工作 HTML 结构 <title>腾讯全端</title> <link rel"shortcut icon" href"favicon.ico" type"image/x-icon"> <!-- 层叠性&#xff1a;咱们的css 要 层叠 框架的 --> <link rel&…

匿名函数与gorm中的Transaction事务方法

整理下go中的匿名函数&#xff0c;项目中很多地方都在用。 1、函数类型的变量 Go中&#xff0c;函数也是一种数据类型。定义一个函数&#xff0c;把这个函数赋值给一个变量&#xff0c;这个变量就是函数类型的变量&#xff0c;用这个变量等价于直接调函数&#xff1a; packa…

数字阅览室解决方案

一、方案概述 “数字阅览室”概念一经提出&#xff0c;就得到了广泛的关注&#xff0c;纷纷组织力量进行探讨、研究和开发&#xff0c;进行各种模型的试验。随着数字地球概念、技术、应用领域的发展&#xff0c;数字阅览室已成为数字地球家庭的成员&#xff0c;为信息高速公路…

介绍TCP窗口

在TCP通信中&#xff0c;TCP窗口是用于控制发送方发送数据的速率的机制之一。TCP窗口大小会根据网络情况和接收方的处理能力进行动态调整&#xff0c;以最大化网络吞吐量并减少拥塞和丢包的风险。 当发送方以较快速度发送TCP数据包时&#xff0c;TCP窗口大小可能会自动调整&am…

高频前端面试题汇总之JavaScript篇(上)

一、数据类型 1. JavaScript有哪些数据类型&#xff0c;它们的区别&#xff1f; JavaScript共有八种数据类型&#xff0c;分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。 其中 Symbol 和 BigInt 是ES6 中新增的数据类型&#xff1a; Symbol 代…

如何免费申请长期HTTPS证书?

长期HTTPS证书申请步骤&#xff1a; 第一步&#xff1a;确定证书类型 根据你的网站需求&#xff0c;选一种适合的HTTPS证书。一般有这几种&#xff1a; - 域名型&#xff08;DV&#xff09;证书&#xff1a;最基础&#xff0c;验证你对域名的所有权&#xff0c;适合个人网站或…

构建有序链表,有序链表的归并,反转链表

本次将对于构建有序链表&#xff0c;有序链表的归并&#xff0c;反转链表&#xff0c;进行一一介绍和代码分享。 首先是一些链表中的基本的函数&#xff1a; Node* creatList() {Node* headNode (Node*)malloc(sizeof(Node));assert(headNode);headNode->next NULL;retu…

海信电视:中国游戏的影像“黑神话”

【潮汐商业评论/文】 《西游记》最后一难中&#xff0c;通天河老鼋回唐三藏“何时才能修成正果”&#xff0c;《黑神话&#xff1a;悟空》也曾面临这个拷问&#xff0c;如今海信电视与它正在共同回答这个命题。 自2020年发布预告片震动行业后&#xff0c;这部游戏就承载着太多…

小程序插件引入宿主的函数

微信小程序的插件和宿主应用是独立的&#xff0c;插件无法直接通过 require 引用宿主应用中的文件。错误信息 Plugin module "" is not defined 表明你尝试在插件中使用了 require 来加载一个不存在的模块。 当需要在插件中使用宿主的某些方法时&#xff0c;必须通过…

Shader 渐变屏幕

渐变 前置工作&#xff0c;创建缓冲&#xff0c;对顶点着色器传递顶点数据 function main() {var canvas document.getElementById(webgl);var gl getWebGLContext(canvas);if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)) returnvar n initVertexBuffers(gl); }fu…

HBM 发展史与前景(持续更新)

主页&#xff1a; 元存储博客 文章目录 前言1. JEDEC 规范2. HBM 发展历程3. HBM 应用场景4. HBM 市场前景5. 发展挑战 翻译自&#xff1a; https://namu.wiki/w/HBM 前言 NVIDIA H2 上的 HBM100e。 1. JEDEC 规范 2. HBM 发展历程 HBM技术曾被视为一种噱头&#xff0c;因为它…

PSAvatar:一种基于点的可变形形状模型,用于3D高斯溅射的实时头部化身创建

PSAvatar: A Point-based Morphable Shape Model for Real-Time Head Avatar Creation with 3D Gaussian Splatting PSAvatar&#xff1a;一种基于点的可变形形状模型&#xff0c;用于3D高斯溅射的实时头部化身创建 Zhongyuan Zhao1,2, Zhenyu Bao1,2, Qing Li1, Guoping Qiu3,…

工时管理软件全攻略,8大关键因素一网打尽!

工时管理往往与项目管理与人力资源结合起来&#xff0c;考察每位员工的绩效指标。可以说&#xff0c;工时管理软件至关重要。什么叫工时管理&#xff1f;考虑到工时管理软件的八个关键要素包含&#xff1a;功能、使用体验、集成能力、扩展性、成本效率、安全隐私、技术支持、用…

javaWeb项目-智慧餐厅点餐管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、JavaScript Java…

【漏洞复现】泛微e-cology ProcessOverRequestByXml接口存在任意文件读取漏洞

漏洞描述 泛微e-cology依托全新的设计理念,全新的管理思想。 为中大型组织创建全新的高效协同办公环境。 智能语音办公,简化软件操作界面。 身份认证、电子签名、电子签章、数据存证让合同全程数字化。泛微e-cology ProcessOverRequestByXml接口存在任意文件读取漏洞 免责声…

虚拟机磁盘剩余空间不足

VMware 弹出提示&#xff1a; 对文件“E:\Virtual Machine\CentOS 7 1810 的克隆 (2)\CentOS 7 1810-cl1.vmdk”的操作失败。 如果该文件位于远程文件系统上&#xff0c;请确保网络连接以及该磁盘所在的服务器正常工作。如果该文件位于可移动介质中&#xff0c;请重新连接该介…