目录

哈希概念

常见的哈希函数

直接定址法

除留余数法

闭散列和开散列

闭散列

 开散列

 封装unordered_map

 封装unordered_set

哈希的应用

位图

布隆过滤器

哈希切割


unordered系列的关联式容器之所以效率比较高,是因为其底层使用了哈希结构

哈希概念

顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经 过关键码的多次比较.顺序查找时间复杂度为O(N),平衡树中为树的高度,即O( log2
N),搜索的效率取决于搜索过程中元素的比较次数。
理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素
如果构造一种存储结构,通过 某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。
当向该结构中:
插入元素
根据待插入元素的关键码,以此函数计算出该元素的存储位置并按此位置进行存放
搜索元素
对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比 较,若关键码相等,则搜索成功
该方式即为哈希(散列)方法,哈希方法中使用的转换函数称为哈希(散列)函数,构造出来的结构称为哈希表 (Hash Table)(或者称散列表) 

常见的哈希函数

直接定址法

取关键字的某个线性函数为散列地址:HashKey= A*Key + B
优点:简单、均匀
缺点:需要事先 知道关键字的分布情况
使用场景:适合查找比较小且连续的情况

除留余数法

设散列表中允许的地址数为m,取一个不大于m,但最接近或者等于m的质数p作为除数,按照哈希函数:Hash(key) = key% p(p<=m),将关键码转换成哈希地址
哈希冲突:不同关键字通过相同哈希函数计算出相同的哈希地址,该种现象称为哈希冲突

那么如何解决哈希冲突呢?

闭散列和开散列

闭散列

也叫开放定址法,当发生哈希冲突时,如果哈希表未被装满,说明在哈希表中必然还有空位置,那么可以把key存放到冲突位置中的下一个” 空位置中去。

那么这个位置如何去找呢?

  • 线性探测
  • 二次探测

线性探测:通过哈希映射出来的位置已经冲突,那就需要往后线性找一个空位置存数据 

Hash(key)=key%len + i(i=0,1,2,3...)

二次探测:通过哈希映射出来的位置已经冲突,那就需要往后次方性找一个空位置存数据

Hash(key)=key%len + i^2(i=0,1,2,3...)

闭散列实现

namespace CLOSE_HASH
{enum State{EMPTY,EXITS,DELETE};template<class K,class V>struct HashDate{pair<K,V> _kv;State _state=EMPTY;};// 特化template<class K>struct Hash{size_t operator()(const K& key){return key;}};template<>struct Hash<string>{// "int"  "insert" // 字符串转成对应一个整形值,因为整形才能取模算映射位置// 期望->字符串不同,转出的整形值尽量不同// "abcd" "bcad"// "abbb" "abca"size_t operator()(const string& s){// BKDR Hashsize_t value = 0;for (auto ch : s){value += ch;value *= 131;}return value;}};template<class K,class V,class KHashFunc=Hash<string>>class HashTable{public:bool Insert(const pair<K, V>& kv){HashDate<K, V>* ret = find(kv.first);if (_table.size() == 0){_table.resize(10);}else if(_size*10 / _table.size() > 7){HashTable<K, V, KHashFunc> newHT;newHT._table.resize(_table.size() * 2);for (auto& e : _table){newHT.Insert(e._kv);}_table.swap(newHT._table);}KHashFunc hf;size_t start = hf(kv.first) % _table.size();size_t index = start;size_t i = 1;while (_table[index]._state == EXITS){index = start + i;index %= _table.size();++i;//index += i ^ 2;}_table[index]._kv = kv;_table[index]._state = EXITS;++_size;return true;}HashDate<K,V>* find(const K& key){KHashFunc hf;if (_table.size() == 0){return nullptr;}size_t i = 1;size_t start = hf(key) % _table.size();size_t index = start;while (_table[index]._state != EMPTY){if (_table[index]._kv.first==key&&_table[index]._state==EXITS){return &_table[index];}index = start + i;index %= _table.size();++i;}return nullptr;}bool Erase(const K& key){HashDate<K, V>* ret = find(key);if (ret == nullptr){return false;}else{ret->_state = DELETE;return true;}}private:vector<HashDate<K,V>> _table;size_t _size=0;//存储的有效数据的个数};
}

 开散列

开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结 点存储在哈希表中,也叫哈希桶

 

namespace OpenHash
{template<class K>struct Hash{size_t operator()(const K& key){return key;}};// 特化template<>struct Hash < string >{// "int"  "insert" // 字符串转成对应一个整形值,因为整形才能取模算映射位置// 期望->字符串不同,转出的整形值尽量不同// "abcd" "bcad"// "abbb" "abca"size_t operator()(const string& s){// BKDR Hashsize_t value = 0;for (auto ch : s){value += ch;value *= 131;}return value;}};template<class T>struct HashNode{HashNode<T>* _next;T _data;HashNode(const T& data):_next(nullptr), _data(data){}};// 前置声明template<class K, class T, class KeyOfT, class HashFunc>class HashTable;// 迭代器template<class K, class T, class KeyOfT, class HashFunc = Hash<K>>struct __HTIterator{typedef HashNode<T> Node;typedef __HTIterator<K, T, KeyOfT, HashFunc> Self;typedef HashTable<K, T, KeyOfT, HashFunc> HT;Node* _node;HT* _pht;__HTIterator(Node* node, HT* pht):_node(node), _pht(pht){}Self& operator++(){// 1、当前桶中还有数据,那么就在当前桶往后走if (_node->_next){_node = _node->_next;}// 2、当前桶走完了,需要往下一个桶去走。else{//size_t index = HashFunc()(KeyOfT()(_node->_data)) % _pht->_table.size();KeyOfT kot;HashFunc hf;size_t index = hf(kot(_node->_data)) % _pht->_table.size();++index;while (index < _pht->_table.size()){if (_pht->_table[index]){_node = _pht->_table[index];return *this;}else{++index;}}_node = nullptr;}return *this;}T& operator*(){return _node->_data;}T* operator->(){return &_node->_data;}bool operator != (const Self& s) const{return _node != s._node;}bool operator == (const Self& s) const{return _node == s.node;}};template<class K, class T, class KeyOfT, class HashFunc = Hash<K>>class HashTable{typedef HashNode<T> Node;template<class K, class T, class KeyOfT, class HashFunc>friend struct __HTIterator;public:typedef __HTIterator<K, T, KeyOfT, HashFunc> iterator;HashTable() = default; // 显示指定生成默认构造HashTable(const HashTable& ht){_n = ht._n;_table.resize(ht._table.size());for (size_t i = 0; i < ht._table.size(); i++){Node* cur = ht._table[i];while (cur){Node* copy = new Node(cur->_data);// 头插到新表copy->_next = _table[i];_table[i] = copy;cur = cur->_next;}}}HashTable& operator=(HashTable ht){_table.swap(ht._table);swap(_n, ht._n);return *this;}~HashTable(){for (size_t i = 0; i < _table.size(); ++i){Node* cur = _table[i];while (cur){Node* next = cur->_next;delete cur;cur = next;}_table[i] = nullptr;}}iterator begin(){size_t i = 0;while (i < _table.size()){if (_table[i]){return iterator(_table[i], this);}++i;}return end();}iterator end(){return iterator(nullptr, this);}size_t GetNextPrime(size_t prime){const int PRIMECOUNT = 28;static const size_t primeList[PRIMECOUNT] ={53ul, 97ul, 193ul, 389ul, 769ul,1543ul, 3079ul, 6151ul, 12289ul, 24593ul,49157ul, 98317ul, 196613ul, 393241ul, 786433ul,1572869ul, 3145739ul, 6291469ul, 12582917ul, 25165843ul,50331653ul, 100663319ul, 201326611ul, 402653189ul, 805306457ul,1610612741ul, 3221225473ul, 4294967291ul};size_t i = 0;for (; i < PRIMECOUNT; ++i){if (primeList[i] > prime)return primeList[i];}return primeList[i];}pair<iterator, bool> Insert(const T& data){KeyOfT kot;// 找到了auto ret = Find(kot(data));if (ret != end())return make_pair(ret, false);HashFunc hf;// 负载因子到1时,进行增容if (_n == _table.size()){vector<Node*> newtable;//size_t newSize = _table.size() == 0 ? 8 : _table.size() * 2;//newtable.resize(newSize, nullptr);newtable.resize(GetNextPrime(_table.size()));// 遍历取旧表中节点,重新算映射到新表中的位置,挂到新表中for (size_t i = 0; i < _table.size(); ++i){if (_table[i]){Node* cur = _table[i];while (cur){Node* next = cur->_next;size_t index = hf(kot(cur->_data)) % newtable.size();// 头插cur->_next = newtable[index];newtable[index] = cur;cur = next;}_table[i] = nullptr;}}_table.swap(newtable);}size_t index = hf(kot(data)) % _table.size();Node* newnode = new Node(data);// 头插newnode->_next = _table[index];_table[index] = newnode;++_n;return make_pair(iterator(newnode, this), true);}iterator Find(const K& key){if (_table.size() == 0){return end();}KeyOfT kot;HashFunc hf;size_t index = hf(key) % _table.size();Node* cur = _table[index];while (cur){if (kot(cur->_data) == key){return iterator(cur, this);}else{cur = cur->_next;}}return end();}bool Erase(const K& key){size_t index = hf(key) % _table.size();Node* prev = nullptr;Node* cur = _table[index];while (cur){if (kot(cur->_data) == key){if (_table[index] == cur){_table[index] = cur->_next;}else{prev->_next = cur->_next;}--_n;delete cur;return true;}prev = cur;cur = cur->_next;}return false;}private:vector<Node*> _table;size_t _n = 0;         // 有效数据的个数};
}

 封装unordered_map

namespace ljx
{template<class K, class V>class unordered_map{struct MapKeyOfT{const K& operator()(const pair<K, V>& kv){return kv.first;}};public:typedef typename OpenHash::HashTable<K, pair<K, V>, MapKeyOfT>::iterator iterator;iterator begin(){return _ht.begin();}iterator end(){return _ht.end();}pair<iterator, bool> insert(const pair<K, V>& kv){return _ht.Insert(kv);}V& operator[](const K& key){pair<iterator, bool> ret = _ht.Insert(make_pair(key, V()));return ret.first->second;}private:OpenHash::HashTable<K, pair<K, V>, MapKeyOfT> _ht;};
}

 封装unordered_set

namespace ljx
{template<class K>class unordered_set{struct SetKeyOfT{const K& operator()(const K& k){return k;}};public:typedef typename OpenHash::HashTable<K, K, SetKeyOfT >::iterator iterator;iterator begin(){return _ht.begin();}iterator end(){return _ht.end();}pair<iterator, bool> insert(const K k){return _ht.Insert(k);}private:OpenHash::HashTable<K, K, SetKeyOfT> _ht;};
}

哈希的应用

位图

所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。
实现
namespace Y
{template<size_t N>class BitSet{public:BitSet(){_bits.resize(N / 32 + 1, 0);}// 把x映射的位标记成1void Set(size_t x){assert(x < N);// 算出x映射的位在第i个整数// 算出x映射的位在这个整数的第j个位size_t i = x / 32;size_t j = x % 32;// _bits[i] 的第j位标记成1,并且不影响他的其他位_bits[i] |= (1 << j);}void Reset(size_t x){assert(x < N);size_t i = x / 32;size_t j = x % 32;// _bits[i] 的第j位标记成0,并且不影响他的其他位_bits[i] &= (~(1 << j));}bool Test(size_t x){assert(x < N);size_t i = x / 32;size_t j = x % 32;// 如果第j位是1,结果是非0,非0就是真// 如果第j为是0,结果是0,0就是假return _bits[i] & (1 << j);}private:vector<int> _bits;};
}

应用于求交集,快速查找一个数是否在一个集合中.

优点:节省空间,速度快                        缺点:只能处理整形

布隆过滤器

布隆过滤器是由布隆(Burton Howard Bloom)在1970年提出的 一种紧凑型的、比较巧妙的概率型数据结 ,特点是高效地插入和查询,可以用来告诉你某样东西一定不存在或者可能存在”,它是用多个哈希函 数,将一个数据映射到位图结构中。此种方式不仅可以提升查询效率,也可以节省大量的内存空间

布隆过滤器的思想是将一个元素用多个哈希函数映射到一个位图中,因此被映射到的位置的比特位一定为1。 所以可以按照以下方式进行查找:分别计算每个哈希值对应的比特位置存储的是否为零,只要有一个为零, 代表该元素一定不在哈希表中,否则可能在哈希表中。

判断在不准确,存在误判,判断不在,准确;针对更多的是字符串

一般不支持删除

有一种删除的办法,使用多个比特位作为计数器,多个值映射时,++计数,删除时,--计数;

struct HashBKDR
{// "int"  "insert" // 字符串转成对应一个整形值,因为整形才能取模算映射位置// 期望->字符串不同,转出的整形值尽量不同// "abcd" "bcad"// "abbb" "abca"size_t operator()(const std::string& s){// BKDR Hashsize_t value = 0;for (auto ch : s){value += ch;value *= 131;}return value;}
};struct HashAP
{// "int"  "insert" // 字符串转成对应一个整形值,因为整形才能取模算映射位置// 期望->字符串不同,转出的整形值尽量不同// "abcd" "bcad"// "abbb" "abca"size_t operator()(const std::string& s){// AP Hashregister size_t hash = 0;size_t ch;for (long i = 0; i < s.size(); i++){ch = s[i];if ((i & 1) == 0){hash ^= ((hash << 7) ^ ch ^ (hash >> 3));}else{hash ^= (~((hash << 11) ^ ch ^ (hash >> 5)));}}return hash;}
};struct HashDJB
{// "int"  "insert" // 字符串转成对应一个整形值,因为整形才能取模算映射位置// 期望->字符串不同,转出的整形值尽量不同// "abcd" "bcad"// "abbb" "abca"size_t operator()(const std::string& s){// BKDR Hashregister size_t hash = 5381;for (auto ch : s){hash += (hash << 5) + ch;}return hash;}
};template<size_t N, class K = std::string,
class Hash1 = HashBKDR,
class Hash2 = HashAP,
class Hash3 = HashDJB>
class BloomFilter
{
public:void Set(const K& key){//Hash1 hf1;//size_t i1 = hf1(key);size_t i1 = Hash1()(key) % N;size_t i2 = Hash2()(key) % N;size_t i3 = Hash3()(key) % N;cout << i1 << " " << i2 << " " << i3 << endl;_bitset.Set(i1);_bitset.Set(i2);_bitset.Set(i3);}bool Test(const K& key){size_t i1 = Hash1()(key) % N;if (_bitset.Test(i1) == false){return false;}size_t i2 = Hash2()(key) % N;if (_bitset.Test(i2) == false){return false;}size_t i3 = Hash3()(key) % N;if (_bitset.Test(i3) == false){return false;}// 这里3个位都在,有可能是其他key占了,在是不准确的,存在误判// 不在是准确的return true; }private:bit::BitSet<N> _bitset;bit::vector<char> _bitset;};void TestBloomFilter()
{/*BloomFilter<100> bf;bf.Set("张三");bf.Set("李四");bf.Set("牛魔王");bf.Set("红孩儿");cout << bf.Test("张三") << endl;cout << bf.Test("李四") << endl;cout << bf.Test("牛魔王") << endl;cout << bf.Test("红孩儿") << endl;cout << bf.Test("孙悟空") << endl;*/BloomFilter<600> bf;size_t N = 100;std::vector<std::string> v1;for (size_t i = 0; i < N; ++i){std::string url = "https://www.cnblogs.com/-clq/archive/2012/05/31/2528153.html";url += std::to_string(1234 + i);v1.push_back(url);}for (auto& str : v1){bf.Set(str);}for (auto& str : v1){cout << bf.Test(str) << endl;}cout << endl << endl;std::vector<std::string> v2;for (size_t i = 0; i < N; ++i){std::string url = "https://www.cnblogs.com/-clq/archive/2012/05/31/2528153.html";url += std::to_string(6789 + i);v2.push_back(url);}size_t n2 = 0;for (auto& str : v2){if (bf.Test(str)){++n2;}}cout << "相似字符串误判率:" << (double)n2 / (double)N << endl;std::vector<std::string> v3;for (size_t i = 0; i < N; ++i){std::string url = "https://zhuanlan.zhihu.com/p/43263751";url += std::to_string(6789 + i);v3.push_back(url);}size_t n3 = 0;for (auto& str : v3){if (bf.Test(str)){++n3;}}cout << "不相似字符串误判率:" << (double)n3 / (double)N << endl;}

哈希切割

哈希切割就是一种哈希的切割思想,通过切分成不均匀的部分,方便操作

通过切分把相同元素放到同一个下标的文件中,然后去比较

比如给一个超过100G大小的log fifile, log中存着IP地址, 设计算法找到出现次数最多的IP地址?

方法:

  1. 假设生成A0~A99 100个小文件,依次读取ip,计算每个ip映射的文件号,i=HashBKDR()(ip)%100这个ip就进去Ai号小文件,相同的ip一定进入了通一个小文件中,所以我们直接统计小文件中的次数即可
  2. 再处理A0~A99,读取Ai文件,如果文件大于2G,可以再切分一次,如果小于2G,那就使用一个map<string,int>统计次数
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 1081 检查密码 (15 分)

    本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成&#xff0c;并且只能有英文字母、数字和小数点 .&#xff0c;还必须既有字母也有数字。 输入格式&#xff1a; 输入第一行给出一个正整数 N&#xff08;≤ …...

    2024/4/13 15:06:10
  2. 【练习】19. 字符串函数

    #字符串字符个数 select char_length(hello); #返回字符数 select length(hello); #返回字节长度 #字符串合并 select concat(a,b); #不指定分隔符 select concat_ws(,,a,b); #指定分隔符 #返回字符串在列表中的位置 select field(aaa,asa,aaa,bbb); #去除字符串左边空格 selec…...

    2024/5/4 15:43:06
  3. HTTP 400 Bad Request问题的解决

    原文链接:这里 0.背景 调试项目的时候&#xff0c;一个PUT请求提交数据&#xff0c;总是报 400,Bad Request&#xff0c; 后台debug模式也进不了断点&#xff0c;后来搜索了很多才解决。本文只说我遇到的实际问题和解决办法。 1.问题原因及解决办法 网上有很多解决办法&#…...

    2024/5/4 19:00:10
  4. AtCoder4380 [AGC027F] Grafting(拓扑排序)

    problem 洛谷链接 solution 首先特判掉两棵树一开始就相同的情况。 那么接下来就是一定要操作才能相同的情况了。 群龙无首不行&#xff0c;我们先定根。不妨枚举第一步的叶子操作&#xff0c;即枚举叶子以及其接的点。 然后对于 A,BA,BA,B 都以这个叶子为根&#xff0c;…...

    2024/4/13 15:06:20
  5. 数组双指针之二分搜索(二)

    4.俄罗斯套娃信封问题 leetcode354题 给你⼀个⼆维整数数组 envelopes&#xff0c;其中 envelopes[i] [wi, hi]&#xff0c;表示第 i 个信封的宽度和⾼度。 当另⼀个信封的宽度和⾼度都⽐这个信封⼤的时候&#xff0c;这个信封就可以放进另⼀个信封⾥&#xff0c;如同俄罗斯…...

    2024/4/13 15:06:25
  6. java面试题:谈谈 ThreadLocal 的用途

    前言 ThreadLocal 提供了线程的局部变量&#xff0c;每个线程在对局部变量进行操作时&#xff0c;不会与其他线程的局部变量发生冲突&#xff0c;从而实现线程的数据隔离。那么&#xff0c;在了解了 ThreadLocal 的基本原理后&#xff0c;请大家思考一个问题&#xff0c;Threa…...

    2024/4/15 10:19:52
  7. mysql数据库(5): 创建表

    目录 &#xff08;1&#xff09;查看有哪些表 &#xff08;2&#xff09;创建一个宠物表关于名字&#xff0c;主人&#xff0c;种类&#xff0c;性别。 &#xff08;3&#xff09;查看下创建的表 &#xff08;4&#xff09;查看某个表内容 &#xff08;1&#xff09;查看有…...

    2024/4/13 15:06:00
  8. 【YBTOJ】同余方程

    思路&#xff1a; 先变成axby1的形式&#xff0c;然后就是同余方程。 exgcd直接乱搞 codecodecode #include<iostream> #include<cstdio> #define ll long longusing namespace std;ll a, b, x, y;ll exgcd(ll a, ll b, ll &x, ll &y) {if(b0){x1;y0;retu…...

    2024/4/18 17:32:32
  9. 一、01-go基础

    一、基础语法 1、程序格式 package main //属于可以执行的文件import "fmt" //导入fmt模块实现输入输出/* func 函数 main 主要执行函数 ()参数 {}函数体 */ func main() {fmt.Println("Hello golang, 今天开始学习golang&#xff0c;这是一个伟大的开始&qu…...

    2024/4/21 9:55:47
  10. 文件上传-SpringBoot

    IO流回顾&#xff1a; 1.输入流input&#xff1a;读取外部数据(硬盘、光盘等储存设备的数据)到内存(也就是程序)中&#xff1b; 2.输出output&#xff1a;将程序&#xff08;内存&#xff09;的数据输出到硬盘等储存设备中&#xff1b; 其实文件下载和上传可以这样理解&#x…...

    2024/4/13 15:06:25
  11. JNI Native动态注册演练

    前言&#xff1a; 前几天分享了一篇关于TS流解析的文章&#xff0c;有朋友在问&#xff0c;你怎么不使用动态注册呀&#xff0c;什么是JN动态注册呢&#xff1f;今天给大家介绍使用一下。 一、JNI Native注册介绍 jni native注册主要有2种&#xff0c;静态注册和动态注册&am…...

    2024/4/21 9:55:24
  12. FreeDOS初体验-安装

    下载 去官网http://freedos.org下载FreeDOS LiveCD版本。 安装 Install to harddisk 然后一路yes就可以了 软件安装 使用 FDIMPLES包管理器安装需要的软件&#xff0c;如vim、ping等。 注&#xff1a;上下箭头选中项目&#xff0c;左右箭头切换介绍/OK/CANCEL。 DOS中ED…...

    2024/4/25 1:51:39
  13. slf4j-log4j12与log4j-slf4j-impl对比

    结论&#xff1a;它俩都是适配器&#xff0c;适配具体的日志实现给slf4j facade接口。但是slf4j-log4j12是使用log4j&#xff0c;而log4j-slf4j-impl使用log4j2. 从项目依赖可以看出。 log4j只需要引入一个jar包即可&#xff0c; <dependency> <groupId>log4j&l…...

    2024/4/20 5:18:42
  14. 小白鼠排队

    描述 N只小白鼠(1 < N < 100)&#xff0c;每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量&#xff0c;要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色。帽子的颜色用“red”&#xff0c;“blue”等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白…...

    2024/4/7 21:05:56
  15. HTML第二次培训笔记

    ...

    2024/4/9 0:56:02
  16. AUTOSAR NvMFee Configuration

    针对NVM Block 分为3种类型NATIVE/DATASET/REDUNDANT,本文将以这三种为例子进行介绍NVM/FEE的介绍&#xff0c;对于AUTOSAR NVM的介绍还请参考AUTOSAR NVM Introduction 一文&#xff0c;本文还是以介绍NVM/FEE 模块的配置为主。 还是那句话配置内容是基于AUTOSAR 标准&#x…...

    2024/4/23 7:39:16
  17. day01 面试题 java基础

    1.什么是面向对象 1&#xff09;面向对象和面向过程是处理问题的不同角度&#xff0c;面向过程注重事情的执行过程和顺序&#xff0c;而面向对象是注重事情的参与者以及参与者所负责功能 2&#xff09;面向过程开发&#xff0c;简洁高效&#xff0c;面向对象开发&#xff0c;…...

    2024/4/13 15:08:05
  18. 域渗透之pth hash传递攻击

    当你拿到了一台服务器的权限,然后使用mimikatz进行读取hash也就是密文,读取到了有admin这个账号,接着把账号和hash注入到内存当中,使用mimikatz把hash传递给另外一台服务器,并且打开一个cmd,说得简单一点就是撞他,赌他们是一样hash和账号的. 下面实验分别是一台08域控和一台wi…...

    2024/4/13 15:06:50
  19. 关于idea中JSP文件无法编译

    之前搞了一天&#xff0c;在jsp文件中写java语句老是报错&#xff0c;代码如下&#xff1a; 运行结果如下图所示&#xff1a; idea中的报错信息如下&#xff1a; 网上的好多方法我都试了最后没用&#xff0c;最后是发现jdk版本问题&#xff0c;在项目里换了jdk就可以用了&…...

    2024/4/13 15:06:50
  20. ROS 入门基础(十)监听坐标系

    现在自己写一个监听的试试。 新的功能&#xff0c;那就新的package啊。 catkin_create_pkg learning_tf roscpp rospy tf turtlesim **仔细看看啊&#xff0c;比平时多了一个tf 开始写Python了。 turtle_tf_broadcast.py #!/usr/bin/env python import roslib roslib.lo…...

    2024/4/13 15:07:25

最新文章

  1. 做事做生意的思维模式||重要,持续更新

    做事情做生意两种出发点&#xff1a;看有什么条件做什么事情&#xff0c;看做什么再找条件。 有什么资源和有什么条件 待补 做事情和做生意时&#xff0c;确实存在两种不同的出发点或策略&#xff0c;它们各有优势和局限性&#xff1a; 1. **看有什么条件做什么事情&#xff0…...

    2024/5/4 19:14:47
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 在 Visual Studio Code (VSCode) 中隐藏以 . 开头的文件

    打开VSCode。 按下Ctrl ,快捷键打开设置。您也可以点击屏幕左下角的齿轮图标&#xff0c;然后选择“Settings”。 在设置搜索框中&#xff0c;键入files.exclude。 在找到的Files: Exclude项中&#xff0c;点击Add Pattern按钮来添加一个新的模式&#xff0c;或者直接在搜索…...

    2024/5/2 2:37:00
  4. 记 SpringBoot 使用@RequestBody 接收不到参数

    POST请求&#xff0c;前端传的参数名字跟后端规定的参数一样。但是通过RequestBody注解接收的参数始终为NULL&#xff01; //实体类中属性没有用驼峰命名 private String SubscribeID; /*** 标题*/ private String Title;解决方案&#xff1a; 1、字段上使用JsonProperty(valu…...

    2024/5/4 17:26:48
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/3 23:10:03
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/4 18:20:48
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/4 2:59:34
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  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