C++ STL容器源代码

  • vector
  • set
  • pair & map
  • queue
  • stack
  • string

STL快速入门

vector

查看详细分析

#include<iostream>
using namespace std;
#include<memory.h>  // alloc是SGI STL的空间配置器
template <class T, class Alloc = alloc>
class vector
{
public:// vector的嵌套类型定义,typedefs用于提供iterator_traits<I>支持typedef T value_type;typedef value_type* pointer;typedef value_type* iterator;typedef value_type& reference;typedef size_t size_type;typedef ptrdiff_t difference_type;
protected:// 这个提供STL标准的allocator接口typedef simple_alloc <value_type, Alloc> data_allocator;iterator start;               // 表示目前使用空间的头iterator finish;              // 表示目前使用空间的尾iterator end_of_storage;      // 表示实际分配内存空间的尾void insert_aux(iterator position, const T& x);// 释放分配的内存空间void deallocate(){// 由于使用的是data_allocator进行内存空间的分配,// 所以需要同样使用data_allocator::deallocate()进行释放// 如果直接释放, 对于data_allocator内部使用内存池的版本// 就会发生错误if (start)data_allocator::deallocate(start, end_of_storage - start);}void fill_initialize(size_type n, const T& value){start = allocate_and_fill(n, value);finish = start + n;                         // 设置当前使用内存空间的结束点// 构造阶段, 此实作不多分配内存,// 所以要设置内存空间结束点和, 已经使用的内存空间结束点相同end_of_storage = finish;}public:// 获取几种迭代器iterator begin() { return start; }iterator end() { return finish; }// 返回当前对象个数size_type size() const { return size_type(end() - begin()); }size_type max_size() const { return size_type(-1) / sizeof(T); }// 返回重新分配内存前最多能存储的对象个数size_type capacity() const { return size_type(end_of_storage - begin()); }bool empty() const { return begin() == end(); }reference operator[](size_type n) { return *(begin() + n); }// 本实作中默认构造出的vector不分配内存空间vector() : start(0), finish(0), end_of_storage(0) {}vector(size_type n, const T& value) { fill_initialize(n, value); }vector(int n, const T& value) { fill_initialize(n, value); }vector(long n, const T& value) { fill_initialize(n, value); }// 需要对象提供默认构造函数explicit vector(size_type n) { fill_initialize(n, T()); }vector(const vector<T, Alloc>& x){start = allocate_and_copy(x.end() - x.begin(), x.begin(), x.end());finish = start + (x.end() - x.begin());end_of_storage = finish;}~vector(){// 析构对象destroy(start, finish);// 释放内存deallocate();}vector<T, Alloc>& operator=(const vector<T, Alloc>& x);// 提供访问函数reference front() { return *begin(); }reference back() { return *(end() - 1); }void push_back(const T& x){// 内存满足条件则直接追加元素, 否则需要重新分配内存空间if (finish != end_of_storage){construct(finish, x);++finish;}elseinsert_aux(end(), x);}iterator insert(iterator position, const T& x){size_type n = position - begin();if (finish != end_of_storage && position == end()){construct(finish, x);++finish;}elseinsert_aux(position, x);return begin() + n;}iterator insert(iterator position) { return insert(position, T()); }void pop_back(){--finish;destroy(finish);}iterator erase(iterator position){if (position + 1 != end())copy(position + 1, finish, position);--finish;destroy(finish);return position;}iterator erase(iterator first, iterator last){iterator i = copy(last, finish, first);// 析构掉需要析构的元素destroy(i, finish);finish = finish - (last - first);return first;}// 调整size, 但是并不会重新分配内存空间void resize(size_type new_size, const T& x){if (new_size < size())erase(begin() + new_size, end());elseinsert(end(), new_size - size(), x);}void resize(size_type new_size) { resize(new_size, T()); }void clear() { erase(begin(), end()); }protected:// 分配空间, 并且复制对象到分配的空间处iterator allocate_and_fill(size_type n, const T& x){iterator result = data_allocator::allocate(n);uninitialized_fill_n(result, n, x);return result;}template <class T, class Alloc>void insert_aux(iterator position, const T& x){if (finish != end_of_storage)    // 还有备用空间{// 在备用空间起始处构造一个元素,并以vector最后一个元素值为其初值construct(finish, *(finish - 1));++finish;T x_copy = x;copy_backward(position, finish - 2, finish - 1);*position = x_copy;}else   // 已无备用空间{const size_type old_size = size();const size_type len = old_size != 0 ? 2 * old_size : 1;// 以上配置元素:如果大小为0,则配置1(个元素大小)// 如果大小不为0,则配置原来大小的两倍// 前半段用来放置原数据,后半段准备用来放置新数据iterator new_start = data_allocator::allocate(len);  // 实际配置iterator new_finish = new_start;// 将内存重新配置try{// 将原vector的安插点以前的内容拷贝到新vectornew_finish = uninitialized_copy(start, position, new_start);// 为新元素设定初值 xconstruct(new_finish, x);// 调整水位++new_finish;// 将安插点以后的原内容也拷贝过来new_finish = uninitialized_copy(position, finish, new_finish);}catch(...){// 回滚操作destroy(new_start, new_finish);data_allocator::deallocate(new_start, len);throw;}// 析构并释放原vectordestroy(begin(), end());deallocate();// 调整迭代器,指向新vectorstart = new_start;finish = new_finish;end_of_storage = new_start + len;}}template <class T, class Alloc>void insert(iterator position, size_type n, const T& x){// 如果n为0则不进行任何操作if (n != 0){if (size_type(end_of_storage - finish) >= n){      // 剩下的备用空间大于等于“新增元素的个数”T x_copy = x;// 以下计算插入点之后的现有元素个数const size_type elems_after = finish - position;iterator old_finish = finish;if (elems_after > n){// 插入点之后的现有元素个数 大于 新增元素个数uninitialized_copy(finish - n, finish, finish);finish += n;    // 将vector 尾端标记后移copy_backward(position, old_finish - n, old_finish);fill(position, position + n, x_copy); // 从插入点开始填入新值}else{// 插入点之后的现有元素个数 小于等于 新增元素个数uninitialized_fill_n(finish, n - elems_after, x_copy);finish += n - elems_after;uninitialized_copy(position, old_finish, finish);finish += elems_after;fill(position, old_finish, x_copy);}}else{   // 剩下的备用空间小于“新增元素个数”(那就必须配置额外的内存)// 首先决定新长度:就长度的两倍 , 或旧长度+新增元素个数const size_type old_size = size();const size_type len = old_size + max(old_size, n);// 以下配置新的vector空间iterator new_start = data_allocator::allocate(len);iterator new_finish = new_start;__STL_TRY{// 以下首先将旧的vector的插入点之前的元素复制到新空间new_finish = uninitialized_copy(start, position, new_start);// 以下再将新增元素(初值皆为n)填入新空间new_finish = uninitialized_fill_n(new_finish, n, x);// 以下再将旧vector的插入点之后的元素复制到新空间new_finish = uninitialized_copy(position, finish, new_finish);}
#         ifdef  __STL_USE_EXCEPTIONScatch(...){destroy(new_start, new_finish);data_allocator::deallocate(new_start, len);throw;}
#         endif /* __STL_USE_EXCEPTIONS */destroy(start, finish);deallocate();start = new_start;finish = new_finish;end_of_storage = new_start + len;}}}
};

set

查看详细分析

//代码摘录于stl_set.h
template <class _Key, class _Compare, class _Alloc>
class set {// requirements:__STL_CLASS_REQUIRES(_Key, _Assignable);__STL_CLASS_BINARY_FUNCTION_CHECK(_Compare, bool, _Key, _Key);public:// typedefs:typedef _Key     key_type;typedef _Key     value_type;typedef _Compare key_compare;typedef _Compare value_compare;
private:typedef _Rb_tree<key_type, value_type, _Identity<value_type>, key_compare, _Alloc> _Rep_type;_Rep_type _M_t;  // 采用红黑树来表现set
public:typedef typename _Rep_type::const_pointer pointer;typedef typename _Rep_type::const_pointer const_pointer;typedef typename _Rep_type::const_reference reference;typedef typename _Rep_type::const_reference const_reference;typedef typename _Rep_type::const_iterator iterator;//注意上一行,iterator定义为RB-tree的const_iterator,表示//set的迭代器无法执行写入操作typedef typename _Rep_type::const_iterator const_iterator;typedef typename _Rep_type::const_reverse_iterator reverse_iterator;typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;typedef typename _Rep_type::size_type size_type;typedef typename _Rep_type::difference_type difference_type;typedef typename _Rep_type::allocator_type allocator_type;// allocation/deallocation//注意,set一定使用RB-=tree的insert_unique()而非insert_equal()//multiset才使用RB-tree的insert_equal()set() : _M_t(_Compare(), allocator_type()) {}explicit set(const _Compare& __comp,const allocator_type& __a = allocator_type()): _M_t(__comp, __a) {}#ifdef __STL_MEMBER_TEMPLATEStemplate <class _InputIterator>set(_InputIterator __first, _InputIterator __last): _M_t(_Compare(), allocator_type()){ _M_t.insert_unique(__first, __last); }template <class _InputIterator>set(_InputIterator __first, _InputIterator __last, const _Compare& __comp,const allocator_type& __a = allocator_type()): _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
#elseset(const value_type* __first, const value_type* __last) : _M_t(_Compare(), allocator_type()) { _M_t.insert_unique(__first, __last); }set(const value_type* __first, const value_type* __last, const _Compare& __comp,const allocator_type& __a = allocator_type()): _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }set(const_iterator __first, const_iterator __last): _M_t(_Compare(), allocator_type()) { _M_t.insert_unique(__first, __last); }set(const_iterator __first, const_iterator __last, const _Compare& __comp,const allocator_type& __a = allocator_type()): _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
#endif /* __STL_MEMBER_TEMPLATES */set(const set<_Key,_Compare,_Alloc>& __x) : _M_t(__x._M_t) {}set<_Key,_Compare,_Alloc>& operator=(const set<_Key, _Compare, _Alloc>& __x){ _M_t = __x._M_t; return *this;}//以下所有的set操作,RB-tree都已提供,所以set只要传递调用即可// accessors:key_compare key_comp() const { return _M_t.key_comp(); }value_compare value_comp() const { return _M_t.key_comp(); }allocator_type get_allocator() const { return _M_t.get_allocator(); }iterator begin() const { return _M_t.begin(); }iterator end() const { return _M_t.end(); }reverse_iterator rbegin() const { return _M_t.rbegin(); } reverse_iterator rend() const { return _M_t.rend(); }bool empty() const { return _M_t.empty(); }size_type size() const { return _M_t.size(); }size_type max_size() const { return _M_t.max_size(); }void swap(set<_Key,_Compare,_Alloc>& __x) { _M_t.swap(__x._M_t); }// insert/erasepair<iterator,bool> insert(const value_type& __x) { pair<typename _Rep_type::iterator, bool> __p = _M_t.insert_unique(__x); return pair<iterator, bool>(__p.first, __p.second);}iterator insert(iterator __position, const value_type& __x) {typedef typename _Rep_type::iterator _Rep_iterator;return _M_t.insert_unique((_Rep_iterator&)__position, __x);}
#ifdef __STL_MEMBER_TEMPLATEStemplate <class _InputIterator>void insert(_InputIterator __first, _InputIterator __last) {_M_t.insert_unique(__first, __last);}
#elsevoid insert(const_iterator __first, const_iterator __last) {_M_t.insert_unique(__first, __last);}void insert(const value_type* __first, const value_type* __last) {_M_t.insert_unique(__first, __last);}
#endif /* __STL_MEMBER_TEMPLATES */void erase(iterator __position) { typedef typename _Rep_type::iterator _Rep_iterator;_M_t.erase((_Rep_iterator&)__position); }size_type erase(const key_type& __x) { return _M_t.erase(__x); }void erase(iterator __first, iterator __last) { typedef typename _Rep_type::iterator _Rep_iterator;_M_t.erase((_Rep_iterator&)__first, (_Rep_iterator&)__last); }void clear() { _M_t.clear(); }// set operations:iterator find(const key_type& __x) const { return _M_t.find(__x); }size_type count(const key_type& __x) const {return _M_t.find(__x) == _M_t.end() ? 0 : 1;}iterator lower_bound(const key_type& __x) const {return _M_t.lower_bound(__x);}iterator upper_bound(const key_type& __x) const {return _M_t.upper_bound(__x); }pair<iterator,iterator> equal_range(const key_type& __x) const {return _M_t.equal_range(__x);}#ifdef __STL_TEMPLATE_FRIENDStemplate <class _K1, class _C1, class _A1>friend bool operator== (const set<_K1,_C1,_A1>&, const set<_K1,_C1,_A1>&);template <class _K1, class _C1, class _A1>friend bool operator< (const set<_K1,_C1,_A1>&, const set<_K1,_C1,_A1>&);
#else /* __STL_TEMPLATE_FRIENDS */friend bool __STD_QUALIFIERoperator== __STL_NULL_TMPL_ARGS (const set&, const set&);friend bool __STD_QUALIFIERoperator<  __STL_NULL_TMPL_ARGS (const set&, const set&);
#endif /* __STL_TEMPLATE_FRIENDS */
};

pair & map

来源

//stl_pair.h里 pair 的定义
template <class T1, class T2>
struct pair {typedef T1 first_type;typedef T2 second_type;T1 first;T2 second;pair() : first(T1()), second(T2()) {}pair(const T1& a, const T2& b) : first(a), second(b) {}#ifdef __STL_MEMBER_TEMPLATEStemplate <class U1, class U2>pair(const pair<U1, U2>& p) : first(p.first), second(p.second) {}
#endif
};
//stl_map.h 源代码
#ifndef __SGI_STL_INTERNAL_MAP_H
#define __SGI_STL_INTERNAL_MAP_H__STL_BEGIN_NAMESPACE#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
#pragma set woff 1174
#endif#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
template <class Key, class T, class Compare = less<Key>, class Alloc = alloc>
#else
template <class Key, class T, class Compare, class Alloc = alloc>
#endif
class map {
public:// typedefs:typedef Key key_type;  //键值类型typedef T data_type;   //数值类型typedef T mapped_type;typedef pair<const Key, T> value_type; //元素类型(键值/实值)typedef Compare key_compare; //键值比較函数// functor。 其作用是调用 "元素比較函数"class value_compare: public binary_function<value_type, value_type, bool> {friend class map<Key, T, Compare, Alloc>;protected :Compare comp;value_compare(Compare c) : comp(c) {}public:bool operator()(const value_type& x, const value_type& y) const {return comp(x.first, y.first); //以 x, y 的键值调用了键值比較函数}};private:typedef rb_tree<key_type, value_type,select1st<value_type>, key_compare, Alloc> rep_type;rep_type t;  // 以红黑树表现 map
public:typedef typename rep_type::pointer pointer;typedef typename rep_type::const_pointer const_pointer;typedef typename rep_type::reference reference;typedef typename rep_type::const_reference const_reference;//set 的 iterator 定义为 const 。由于它不同意改变 set 里的值//map 的 iterator 不定义为 const,由于它虽不同意改变键值。但同意改变实值typedef typename rep_type::iterator iterator;typedef typename rep_type::const_iterator const_iterator;typedef typename rep_type::reverse_iterator reverse_iterator;typedef typename rep_type::const_reverse_iterator const_reverse_iterator;typedef typename rep_type::size_type size_type;typedef typename rep_type::difference_type difference_type;// allocation/deallocationmap() : t(Compare()) {}explicit map(const Compare& comp) : t(comp) {}// 传递 Compare() 产生的函数对象给底层的红黑树作为初始化时设定的比較函数//不同意键值反复,所以仅仅能使用 RB-tree 的 insert_unique()
#ifdef __STL_MEMBER_TEMPLATEStemplate <class InputIterator>map(InputIterator first, InputIterator last): t(Compare()) { t.insert_unique(first, last); }template <class InputIterator>map(InputIterator first, InputIterator last, const Compare& comp): t(comp) { t.insert_unique(first, last); }
#elsemap(const value_type* first, const value_type* last): t(Compare()) { t.insert_unique(first, last); }map(const value_type* first, const value_type* last, const Compare& comp): t(comp) { t.insert_unique(first, last); }map(const_iterator first, const_iterator last): t(Compare()) { t.insert_unique(first, last); }map(const_iterator first, const_iterator last, const Compare& comp): t(comp) { t.insert_unique(first, last); }
#endif /* __STL_MEMBER_TEMPLATES */map(const map<Key, T, Compare, Alloc>& x) : t(x.t) {}map<Key, T, Compare, Alloc>& operator=(const map<Key, T, Compare, Alloc>& x){t = x.t;  // 调用了底层红黑树的 operator= 函数return *this;}//下面全部的 map 操作行为,RB-tree 都已提供,所以 map 仅仅要调用就可以// accessors:key_compare key_comp() const { return t.key_comp(); }value_compare value_comp() const { return value_compare(t.key_comp()); }iterator begin() { return t.begin(); }const_iterator begin() const { return t.begin(); }iterator end() { return t.end(); }const_iterator end() const { return t.end(); }reverse_iterator rbegin() { return t.rbegin(); }const_reverse_iterator rbegin() const { return t.rbegin(); }reverse_iterator rend() { return t.rend(); }const_reverse_iterator rend() const { return t.rend(); }bool empty() const { return t.empty(); }size_type size() const { return t.size(); }size_type max_size() const { return t.max_size(); }T& operator[](const key_type& k) {return (*((insert(value_type(k, T()))).first)).second;}void swap(map<Key, T, Compare, Alloc>& x) { t.swap(x.t); }// insert/erasepair<iterator,bool> insert(const value_type& x) { return t.insert_unique(x); }iterator insert(iterator position, const value_type& x) {return t.insert_unique(position, x);}
#ifdef __STL_MEMBER_TEMPLATEStemplate <class InputIterator>void insert(InputIterator first, InputIterator last) {t.insert_unique(first, last);}
#elsevoid insert(const value_type* first, const value_type* last) {t.insert_unique(first, last);}void insert(const_iterator first, const_iterator last) {t.insert_unique(first, last);}
#endif /* __STL_MEMBER_TEMPLATES */void erase(iterator position) { t.erase(position); }size_type erase(const key_type& x) { return t.erase(x); }void erase(iterator first, iterator last) { t.erase(first, last); }void clear() { t.clear(); }// map operations:iterator find(const key_type& x) { return t.find(x); }const_iterator find(const key_type& x) const { return t.find(x); }size_type count(const key_type& x) const { return t.count(x); }iterator lower_bound(const key_type& x) {return t.lower_bound(x); }const_iterator lower_bound(const key_type& x) const {return t.lower_bound(x);}iterator upper_bound(const key_type& x) {return t.upper_bound(x); }const_iterator upper_bound(const key_type& x) const {return t.upper_bound(x);}pair<iterator,iterator> equal_range(const key_type& x) {return t.equal_range(x);}pair<const_iterator,const_iterator> equal_range(const key_type& x) const {return t.equal_range(x);}friend bool operator== __STL_NULL_TMPL_ARGS (const map&, const map&);friend bool operator< __STL_NULL_TMPL_ARGS (const map&, const map&);
};template <class Key, class T, class Compare, class Alloc>
inline bool operator==(const map<Key, T, Compare, Alloc>& x,const map<Key, T, Compare, Alloc>& y) {return x.t == y.t;
}template <class Key, class T, class Compare, class Alloc>
inline bool operator<(const map<Key, T, Compare, Alloc>& x,const map<Key, T, Compare, Alloc>& y) {return x.t < y.t;
}#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDERtemplate <class Key, class T, class Compare, class Alloc>
inline void swap(map<Key, T, Compare, Alloc>& x,map<Key, T, Compare, Alloc>& y) {x.swap(y);
}#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
#pragma reset woff 1174
#endif__STL_END_NAMESPACE#endif /* __SGI_STL_INTERNAL_MAP_H */// Local Variables:
// mode:C++
// End:

queue

原文

	// 如果编译器不能根据前面模板参数推导出后面使用的默认参数类型,// 那么就需要手工指定, 本实作queue内部容器默认使用deque// 由于queue要求在队尾追加元素, 在队头获取和移除元素// 所以非常适合使用deque
#ifndef __STL_LIMITED_DEFAULT_TEMPLATEStemplate <class T, class Sequence = deque<T> >
#elsetemplate <class T, class Sequence>
#endif
class queue
{// 讲解见<stl_pair.h>中的运算符剖析friend bool operator== __STL_NULL_TMPL_ARGS (const queue& x, const queue& y);friend bool operator< __STL_NULL_TMPL_ARGS (const queue& x, const queue& y);public:// 由于queue仅支持对队头和队尾的操作, 所以不定义STL要求的// pointer, iterator, difference_typetypedef typename Sequence::value_type value_type;typedef typename Sequence::size_type size_type;typedef typename Sequence::reference reference;typedef typename Sequence::const_reference const_reference;protected:Sequence c;   // 这个是我们实际维护的容器,底层容器public:// 这些是STL queue的标准接口, 都调用容器的成员函数进行实现// 其接口和stack实现很接近, 参考<stl_stack.h>//以下完全利用Sequence c的操作完成queue的操作bool empty() const { return c.empty(); }size_type size() const { return c.size(); }reference front() { return c.front(); }const_reference front() const { return c.front(); }reference back() { return c.back(); }const_reference back() const { return c.back(); }void push(const value_type& x) { c.push_back(x); }void pop() { c.pop_front(); }
};// 详细讲解见<stl_pair.h>
template <class T, class Sequence>
bool operator==(const queue<T, Sequence>& x, const queue<T, Sequence>& y)
{return x.c == y.c;
}template <class T, class Sequence>
bool operator<(const queue<T, Sequence>& x, const queue<T, Sequence>& y)
{return x.c < y.c;
}

stack

原文

#ifndef __SGI_STL_INTERNAL_STACK_H
#define __SGI_STL_INTERNAL_STACK_H__STL_BEGIN_NAMESPACE#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
template <class T, class Sequence = deque<T> > //默认以 deque 为底层容器
#else
template <class T, class Sequence>
#endif
class stack {friend bool operator== __STL_NULL_TMPL_ARGS (const stack&, const stack&);friend bool operator< __STL_NULL_TMPL_ARGS (const stack&, const stack&);
public:typedef typename Sequence::value_type value_type;typedef typename Sequence::size_type size_type;typedef typename Sequence::reference reference;typedef typename Sequence::const_reference const_reference;
protected:Sequence c; //底层容器
public://下面全然利用 Sequence c 的操作完毕 stack 的操作bool empty() const { return c.empty(); }size_type size() const { return c.size(); }reference top() { return c.back(); }const_reference top() const { return c.back(); }//改动接口使符合 stack "前进后出"的特性void push(const value_type& x) { c.push_back(x); }void pop() { c.pop_back(); }
};template <class T, class Sequence>
bool operator==(const stack<T, Sequence>& x, const stack<T, Sequence>& y) {return x.c == y.c;
}template <class T, class Sequence>
bool operator<(const stack<T, Sequence>& x, const stack<T, Sequence>& y) {return x.c < y.c;
}
__STL_END_NAMESPACE
#endif /* __SGI_STL_INTERNAL_STACK_H */
// Local Variables:
// mode:C++
// End:

string

源码解析

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

相关文章

  1. django 用户验证,restframework用户验证

    的风格的...

    2024/4/6 8:48:39
  2. C++ 类型转换

    1、类型转换介绍 C风格的强制类型转换(Type Cast)很简单&#xff0c;不管什么类型的转换统统是&#xff1a; TYPE b (TYPE)a C风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 1、 static_cast<>() 静态类型转换&#xff0c;编译的时c编译器会做类…...

    2024/5/1 6:11:27
  3. PCIE配置和地址空间

    来源&#xff1a;https://www.jianshu.com/p/574e9a2cbc4e 每个PCIe设备&#xff0c;有这么一段空间&#xff0c;Host软件可以读取它获得该设备的一些信息&#xff0c;也可以通过它来配置该设备&#xff0c;这段空间就叫做PCIe的配置空间。不同于每个设备的其它空间&#xff0c…...

    2024/4/23 14:07:44
  4. Redis哨兵详解

    实现故障恢复自动化&#xff1a;详解Redis哨兵技术 原文出处&#xff1a; http://www.redis.cn/articles/20181020001.html 在前面分享的《读完这篇文章&#xff0c;就基本搞定了Redis主从复制》中我们曾提到&#xff0c;Redis主从复制的作用有数据热备、负载均衡、故障恢复…...

    2024/4/6 8:48:36
  5. 以表格存储为例,解密阿里在分布式负载均衡的核心力

    目录 一、表格存储概览 需求驱动 特性 架构 数据模型 负载均衡关键能力 二、多租户负载均衡 背景&定义 价值&终态 从0到1 从1到N 挑战&方案 请求资源量化和统计 水位和公平流控 触发时机 SLA闭环联动 三、总结 一、表格存储概览 需求驱动 先来看…...

    2024/4/6 8:48:35
  6. 使用pytorch cuda11 cudnn8.02 Docker搭建nnUNet训练环境

    使用pytorch cuda11 cudnn8.02 Docker搭建nnUNet训练环境 本文目的是加速训练过程&#xff0c;平时使用pytorch1.6 cuda10.2训练一个epoch将近400秒&#xff0c;搭建好docker环境后&#xff0c;使用cuda11、cudnn8.0.2 的环境&#xff0c;一个epoch的时间只需要160秒左右。加速…...

    2024/4/27 0:21:57
  7. (JAVA)Druid简单应用

    1.简单介绍 Druid&#xff1a;数据库连接池实现技术&#xff0c;由阿里巴巴提供的步骤&#xff1a; 导入jar包 druid-1.0.9.jar定义配置文件&#xff1a; 是properties形式的可以叫任意名称&#xff0c;可以放在任意目录下 加载配置文件。Properties获取数据库连接池对象&…...

    2024/4/6 8:48:33
  8. Ubuntu系统进入后出现分辨率问题

    进入先在DELL界面连按F12&#xff0c;选择Ubuntu&#xff0c;按E&#xff0c;并在$vt_handoff后面增加acpi_osilinux nomodeset,然后按F10&#xff0c;这样可以正常开机。 解决分辨率问题&#xff1a;屏蔽驱动程序nouveau 编辑文件 sudo vim /etc/modprobe.d/blacklist.conf点…...

    2024/4/23 20:57:24
  9. AI软件编辑文字时出现“滚滚长江东逝水”解决方法

    滚滚长江东逝水是Adobe软件工程师怕你找不到文字编辑&#xff0c;先用一段话占用了&#xff0c;哈哈哈大衣哥的既视感&#xff0c;估计那人喜欢我们山东朱之文… 解决方法&#xff1a; 软件顶部编辑—首选项—文字&#xff0c;用占位符文本填充新文字对象这里&#xff0c;取消…...

    2024/4/23 8:49:54
  10. django权限验证,restframework权限验证,drf

    待续...

    2024/4/26 8:05:13
  11. QRCode.js:使用 JavaScript 生成二维码

    在厂里做erp&#xff0c;有要求写一个扫码枪扫描二维码生成的demo&#xff0c;如下&#xff1a; 使用到的类库有&#xff1a;jQuery&#xff0c;qrcode两个。 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"><script type"t…...

    2024/4/6 8:48:29
  12. CSS优先级

    CSS优先级...

    2024/4/11 22:31:15
  13. 《前端》使用element UI中的table的模糊搜索功能,出不来input搜索框

    解决&#xff1a;vue版本低&#xff0c;将原本的2.4版本会按成2.6版本就好。 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width…...

    2024/4/22 13:25:24
  14. 剑指 Offer 07.重建二叉树

    菜鸡刷题之路QAQ 思路 看到二叉树&#xff0c;首先要想到递归&#xff0c;那么我们来整理一下思路 前序遍历数组中&#xff0c;第一个数是根节点&#xff0c;&#xff0c;找到此节点在中序数组的位置&#xff0c;左边为左子树&#xff0c;右边为右子树&#xff0c;依次往下进行…...

    2024/4/29 21:37:50
  15. 数据库中的常用函数

    聚合函数&#xff1a; 函数名称作用COUNT统计查询结果的行数AVG平均值&#xff0c;返回指定列数据的平均值SUM求和&#xff0c;返回指定列的总和MAX查询指定列的最大值MIN查询指定列的最小值 数值型函数&#xff1a; 函数名称作用ABS求绝对值SQRT求二次方根POW和 POWER两个函…...

    2024/4/27 11:29:55
  16. 静态路由配置教程

    要求&#xff1a;让三台电脑互相能ping通 通过配置静态路由实现 1.先如图配置与选好路由器和PC&#xff0c;并配置PC相应的IP地址 2.给路由器增加接口并开启&#xff0c;然后进行连接 3.给路由配置PC 的网关地址&#xff0c;3个路由器配置3次。注意&#xff1a;PC要能ping通网关…...

    2024/4/23 7:25:42
  17. Leetcode算法题

    数组 链表 字符串 动态规划 树 回溯算法 深度优先搜索 广度优先搜索 哈希表 栈和队列 位运算 排序 并查集 二分查找 贪心算法...

    2024/4/9 22:20:04
  18. TypeError: img should be PIL Image. Got <class ‘torch.Tensor‘>

    出现报错如图&#xff1a; 问题原因&#xff1a; 在定义transforms.Compose()时&#xff0c;把ToTensor()方法写在了随机旋转图片的方法RandomHorizontalFlip()之前&#xff0c;造成顺序不对 解决方法&#xff1a;将ToTensor()方法移动到RandomHorizontalFlip()之后 此时运行…...

    2024/4/6 6:52:04
  19. JS事件循环机制

    JS事件循环机制...

    2024/4/6 6:52:03
  20. Spring篇:Controller没有返回值,默认跳转到方法名称的视图页面

    1.Controller没有返回值&#xff0c;默认跳转到方法名称的视图页面 2.代码 3.运行结果 4.修改方式 加上ResponseBody 没有404错误了...

    2024/4/27 3:40:20

最新文章

  1. Hotcoin Research | 市场洞察:2024年4月22日-28日

    加密货币市场表现 本周内加密大盘整体呈现出复苏状态&#xff0c;在BTC减半后进入到震荡上行周期。BTC在$62000-66000徘徊&#xff0c;ETH在$3100-3300徘徊&#xff0c;随着港交所将于 4 月 30 日开始交易嘉实基金的比特币和以太坊现货 ETF&#xff0c;周末行情有一波小的拉升…...

    2024/5/1 8:50:51
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. linux系统编程 线程 p1

    线程 1.线程的概念2.线程的创建/终止/取消&#xff0c;栈的清理2.1线程创建2.2线程终止2.3 栈的清理 1.线程的概念 线程就是一个正在运行的函数。 posix线程是一套标准&#xff0c;而不是实现。 openmp线程。 线程标识&#xff1a;pthread_t &#xff08;linux环境下是整形数&…...

    2024/5/1 8:30:13
  4. Redis命令-List命令

    4.6 Redis命令-List命令 Redis中的List类型与Java中的LinkedList类似&#xff0c;可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。 特征也与LinkedList类似&#xff1a; 有序元素可以重复插入和删除快查询速度一般 常用来存储一个有序数据&#xff…...

    2024/4/30 10:36:49
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/4/30 9:36:27
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/4/30 0:57:52
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/4/29 18:43:42
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/1 4:07:45
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/4/30 23:32:22
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/4/30 23:16:16
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/1 6:35:25
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/4/29 21:25:29
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/1 4:35:02
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/4/30 14:53:47
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/4/30 22:14:26
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/1 6:34:45
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/4/30 22:57:18
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/4/30 20:39:53
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/1 4:45:02
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/1 8:32:56
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/4/29 3:42:58
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/4/29 19:56:39
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/1 5:23:20
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/4/30 20:52:33
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57