查找 | 顺序查找、分块查找、二分查找、哈希查找 | 牛客刷题笔记

news2024/12/28 18:27:02

查找

  1. 就平均查找速度而言,下列几种查找速度从慢至快的关系是:顺序、分块、折半、哈希。

    顺序查找的时间复杂度为o(n)
    分块查找的时间复杂度为o(log2n)到o(n)之间
    二分查找的时间复杂度为o(log2n)
    哈希查找的时间复杂度为o(1)

  2. 用概率查找改进查找效率,是经过多次查找以后使得查找次数越多的元素往前放,查找速度越快
    • 平均性能:斐波纳切黄金分割查找折半查找更好。
    • 最坏情况下:斐波纳切黄金分割查找性能比折半查找差。
  3. 表中的数据类型必须是同一类型
  4. 在一个有8个int数据的数组中,随机给出数组的数据,找出最大和第二大元素一定需要进行(9)次比较:
    在这里插入图片描述

顺序查找O(n)

  1. 长度为n的顺序表中查找一个元素,假设需要查找的元素一定在表中,并且元素出现在表中每个位置上的可能性是相同的,则在平均情况下需要比较的次数为((n+1)/2)。在最坏情况下所需要的比较次数为N

    在顺序表中查找,最好情况下第一个元素就是要查找的元素,则比较次数为 1 ;在最坏情况下,最后一个元素才是要找的元素,则比较次数为 n 。两种情况平均即( 1+n ) /2 。

  2. 顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为(O(n))。
  3. 顺序查找的平均时间是n/2
  4. 支持随机读取的线性表为顺序表。能在O (1) 时间内访问线性表的第i个元素的结构是顺序表
  5. 对于静态表的顺序查找法,若在表头设置监视哨,则正确的查找方式为(从第n个元素往开始前查找该数据元素)。

    常把第一个或最后一个元素作为哨兵
    表头设置监视哨,就是将空出来的下标为0的这个元素的值设为Key,
    这样我们就不用多次判断 i 是否越界,因为就算静态表中找不到,也会在0位置上配对成功,返回0!
    n个元素都要比较一次,但都不成功,最后监视哨也要比较一次,比较成功,一共比较n+1次.
    例子:有5个元素,分别是1,2,3,4,5.要找的元素是8.那么8就是监视哨,数列如下:
    8,1,2,3,4,5.
    从5开始向前查找,一共要比较6次,比较到监视哨成功,监视哨所在的下标是0,所以返回值为0.

  6. 给定一个整数sum,从有N个有序元素的数组中寻找元素a,b,使得a+b的结果最接近sum,最快的平均时间复杂度是:O(n)。【双指针法】

分块查找O(log2n)~O(n)

  1. 分块查找又称索引顺序查找,基本思想是首先在索引表中进行查找,以便确定给定的关键字可能存在的块号,然后再在相应的块内进行顺序查找。
  2. 分块查找折半查找顺序查找的一种改进方法,分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况。【数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块】
  3. 分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。
  4. 一个文件包含了200个记录,若采用分块查找法,每块长度为4,则平均查找长度为28

要是有序,可以二分查找,然后确定在那一个块中((n+1)log2(n+1))/n - 1 ,然后在这个块中查找
要是无序,则顺序查找,平均查找长度就是 (1+50)/2=25.5,然后块中查找(1+4)/2=2.5 总共28

  1. 设顺序线性表的长度为30,分成5块,每块6个元素,如果采用分块查找,则其平均查找长度为(6.5)。

    (1+5)/2 = 3,(1+6)/2 = 3.5,所以为6.5.

二分查找/折半查找O(logn)

  1. 二分查找平均时间复杂度、最坏时间复杂度均是O(logn),只有在最坏的情况下才是O(n),所以,通常情况下是快于顺序查找,但在最坏的情况下是不优于顺序查找的。
  2. 在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是O(logn)
  3. 适用于折半查找的表的存储方式及元素排列要求为顺序方式存储,元素有序。【常见说法:关键码有序】【只能在已排序的数据上进行】

二分查找的关键字比较序列

  1. 不能构成折半查找中关键字比较序列的是 (500,200,450,180)。
    请添加图片描述

    可以构成的有【需要是二叉搜索树(二叉比较树)】:
    500,450,200,180
    180,500,200,450
    180,200,500,450

  2. 对于关键字序列(16,10,20,12,18,7,14,13,5,19),不可能构成其二叉排序树中一条查找路径的序列是16,10,7,12,14
    请添加图片描述

    可以构成的有:
    16,10,7,5
    16,20,18,19
    16,10,12,14

二分查找的平均查找长度

  1. 具有12个关键字的有序表,折半查找的平均查找长度(3.1

    第一层 1个元素 1次
    第二层 2个元素 2次
    第三层 4个元素 3次
    第四层 5个元素 4次
    总共查询次数: 1×1+2×2+4×3+5×4=37
    平均查询次数为:37/12=3.1
    请添加图片描述

二分查找的最大查找次数

请添加图片描述

  1. 154个元素组成有序表进行二分法查找,可能的比较次数为?1、2、3、4、5、6、7、8

    用二分查找法查找某个数据,最多需要比较(logn)+1次,注意这里的对数函数是以2为底,并且是向下取整。
    因为2^7=1282^8=256,所以log(154)约等于7log(154)+1=8,所以最多需要比较8次。

  2. 广告系统为了做地理位置定向,将IPV4分割为627672个区间,并标识了地理位置信息,区间之间无重叠,用二分查找将IP地址映射到地理位置信息,请问在最坏的情况下,需要查找多少次?20

    因为2^19 = 500 0002^20 = 1000 000,所以log(627672)≈19【向下取整】。所以log(627672)+1 = 20

  3. 设有序表中有1000个元素,则用二分查找查找元素X最多需要比较(10)次。【log(1000)+1 = 9+1 = 10】

二分查找某元素需要的比较次数

若给定制与中间记录的关键字相等,则查找成功。

  1. 用二分法查找表 (a0,a1,a2,a3,……a16) ,需要比较 2 次才能找到的元素是(a3和a12请添加图片描述
  2. 在有序表( 7, 13, 33, 87, 99, 97, 117, 123,129,131,137)中,使用二分查找算法查找13时需要的关键字比较次数是(4

    第一次:low=0,high=10,mid=5,97>13,high=mid-1
    第二次:low=0,high=4,mid=2,33>13,high=mid-1
    第三次:low=0,high=1,mid=0,7<13,low=mid+1
    第四次:low=1,high=1,mid=1,查找成功
    请添加图片描述

哈希查找O(1)

  1. Hash表的平均查找长度与冲突处理方法和装填因子有关与哈希表长无关

  2. 散列法存储的思想是由关键字值决定数据的存储地址。

  3. 在哈希法存储中,冲突指的是不同关键字值对应到相同的存储地址。装填因子越大,发生冲突的可能性越大。
    哈希冲突:当关键字集合很大时,关键字值不同的元素可能会映像到哈希表的同一地址上,即K1!=K2,但f(K1)=f(K2),这种现象称为hash冲突,实际中冲突是不可避免的,只能通过改进哈希函数的性能来减少冲突。

  4. 产生哈希冲突的影响因素有哪些:装填因子、哈希函数、处理冲突的方法。【不包括:哈希表长】

  5. 哈希法基本思想:首先在元素的关键字K和元素的位置P之间建立一个对应关系f,使得P=f(K),其中f成为哈希函数。

  6. 创建哈希表时,把关键字K的元素直接存入地址为f(K)的单元;查找关键字K的元素时利用哈希函数计算出该元素的存储位置P=f(K)。

  7. 设哈希表长为14,哈希函数是H(key)=key%11,表中已有数据的关键字为15,38,61,84共四个,现要将关键字为49的结点加到表中,用二次探测再散列法解决冲突,则放入的位置是(9)。

  8. 一个线性序列(30,14,40,63,22,5),假定采用散列函数Hash(key)=key%7来计算散列地址,将其散列存储在A[0~6]中,采用链地址法解决冲突。若查找每个元素的概率相同,则查找成功的平均查找长度是(4/3)。

    30%7=2,查找次数为1,
    14%7=0,查找次数为1,
    40%7=5,查找次数为1,
    63%7=0,查找次数为2,
    22%7=1,查找次数为1,
    5%7=5,查找次数为2,
    平均查找长度为(1+1+1+2+1+2)/6=4/3

  9. 下面属于构造散列(hash)函数的方法是:直接定址法、数字分析法、乘余取整法、平方取中法。

  10. 哈希函数进行模除取余时,最好取素数进行模除。素数就像物理中的原子,是构成所有数的基础。

  11. 线性表如果要频繁的执行插入和删除操作,该线性表采取的存储结构应该是链式

  12. 假设把整数关键码K散列到有N个槽的散列表,以下那些散列函数是好的散列函数?h(k)=k mod N

  13. 设哈希表长度为11,哈希函数H(K)=(K的第一个字母在字母表中的序号)MOD11,若输入顺序为(D,BA,TN,M,CI,I,K,X,TA),采用内散列表,处理冲突方法为线性探测法,要求构造哈希表,在等概率情况下查找成功平均查找长度为20/9

  14. 设哈希表长m=13,哈希函数H(key)=key MOD 11。表中已有4个节点:addr(16)=5,addr(28)=6,addr(84)=7,addr(19)=8,其余地址为空,如用线性探测再散列处理冲突,则关键字为38的地址为9

  15. 查找哈希表,解决冲突的方法包括链地址法线性探测再散列法

  16. 哈希查找中k个关键字具有同一哈希值,若用线性探测法将这k个关键字对应的记录存入哈希表中,至少要进行k(k+1)/2次探测。

  17. 假设哈希表中关键字序列有13个,装填因子a的大小为0.75,那么构造出来的散列表中链首指针构成的指针数组大小为(18)。

  18. 在哈希表中勿需任何比较就可找到记录在表中的位置❌【比如链表法处理冲突,发生冲突后在链表中查找,这时就要比较键的值。】

    • 二叉排序树中,查找的平均时间复杂度是O(logn);
    • 对于栈和队列来说,查找就意味着把元素挨个出栈或者出队,故平均时间复杂度是O(n);
    • 哈希表,直接通过关键码查找元素,平均为O(1);故哈希表速度是最快的
  19. runtime会将weak对象放入hash表数据结构中。

  20. 采用线性探测法处理散列时的冲突,当从哈希表删除一个记录时,不应将这个记录的所在位置置空,因为这会影响以后的查找。

  21. 开放定址更适合于造表前无法确定表长的情况。❌

  22. 若采用开放定址法处理冲突,则删除元素只需直接将该元素从哈希表中删去即可。❌【因为删除后将会导致下次查找关键字时找不到位置,造成哈希冲突】

    • 通常有两类方法处理冲突:开放定址(Open Addressing)法拉链(Chaining)法
    • 在用拉链法构造的散列表中,删除结点的操作易于实现
    • 拉链法的缺点是:指针需要额外的空间,故当结点规模较小时,开放定址法较为节省空间
  23. 设哈希表长为8,哈希函数为Hash (key)=key%7。初始记录关键字序列为(32,24,15,27,20,13),用链地址法作为解决冲突方法的平均查找长度是1.5

  24. 以下哪个不属于单向哈希表的特征(假设没有冲突):它把固定的信息转换成任意长度信息输出。

  25. 不属于hash碰撞解决方法的是:单旋转法

  26. 属于hash碰撞解决方法的是:线性探测、二次探测、拉链法、双重散列、多重散列。

  27. HASH 函数冲突处理方式不包括以下哪一项:插入排序法。【插入排序法是排序算法,放这儿不是搞事情么】

  28. HASH 函数冲突处理方式包括以下哪一项:开放定址法、链地址法、公共溢出区法。

  29. 哈希表是一个在时间和空间上做出权衡的经典例子。如果没有内存限制,那么可以直接将键作为数组的索引。那么所有的查找时间复杂度为O(1)

  30. 线性表实现相对比较简单

  31. 平衡二叉树的各项操作的时间复杂度为O(log(n))

  32. 解决哈希冲突的链地址算法中,关于插入新数据项的时间表述正确的是随装载因子线性增长

    哈希表的装填因子
    装填因子 = (哈希表中的记录数) / (哈希表的长度)
    装填因子是哈希表装满程度的标记因子。值越大,填入表中的数据元素越多,产生冲突的可能性越大。

  33. 为了保证代码的异常安全性,应该避免在析构函数中抛异常。【effective C++“条款08:别让异常逃离析构函数”指出来如果析构函数抛出异常,对于vector这样的一个对象数组,如果第一个Widget析构有异常抛出,这时候还要销毁数组中剩下的Widget否则会造成内存泄漏,但是如果剩下的Widget析构时也抛出异常,就会两个异常同时存在,程序如果不是结束执行就会产生不明确行为。即使不是使用容器或数组,在析构函数中抛出异常也可能导致程序过早结束或不明确行为。】

  34. 对于unordered_map和map这两个容器,迭代器的有效性皆不受删除操作影响❌【当unorder_map和map某迭代器it指向的元素被删除时,只有该迭代器it失效,其他的迭代器不会失效。】
    对于unordered_map和map这两个容器,迭代器的有效性皆不受插入操作影响❌【map插入时不会引起迭代器失效;unorder_map插入时一般情况下不会引起迭代器失效,只有当容器增长到需要rehash时,原来的所有迭代器失效。】
    为了保证代码的异常安全性,应该避免在构造函数中抛异常❌【构造函数抛出异常后,已经构造的成员对象会被逆序析构,申请的内存资源会被系统释放,不会调用析构函数。而且构造函数抛出异常是唯一表明构造失败的方法。】

  35. 现有一完全的P2P共享协议,每次两个节点通讯后都能获取对方已经获取的全部信息,现在使得系统中每个节点都知道所有节点的文件信息,共17个节点,假设只能通过多次两个对等节点之间通讯的方式,则最少需要30次通讯。

  36. 线程安全的map在JDK 1.5及其更高版本环境 有哪几种方法可以实现?Map map = new ConcurrentHashMap();Map map = Collections.synchronizedMap(new HashMap());

  37. 稀疏矩阵压缩的存储方法是:三元组十字链表

  38. Hashtable 和 HashMap 的区别是:

    • HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接口
    • Hashtable 线程安全的,而 HashMap 是线程不安全的
    • Properties 类 继承了 Hashtable 类,而 Hashtable 类则继承Dictionary 类
    • HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
  39. 如果两个关键字的值不等但哈希函数值相等,则称这两个关键字为同义词。

  40. 设某散列表的当前状态如下:
    在这里插入图片描述
    该散列表的负载因子约为(0.37)。

    本题考查负载因子的概念。
    散列表的一个重要参数是负载因子a,a=散列表中结点的数目/基本区域能容纳的结点数。
    负载因子的大小体现散列表的装满程度。a越大,发生碰撞的可能性越大,一般取a<1。
    题目中的散列表结点的数目为7,基本区域能容纳的结点数为19,因此a=7/19≈0.37。

  41. 对数组A[]={4,78,3,64,32,89,43,12}进行Hash存储时,选用H(K)=K%7作为Hash函数,则Hash地址为1的元素有(3)个。

  42. 用哈希(散列)方法处理冲突(碰撞)时可能出现堆积(聚集)现象,下列选项中,会受堆积现象直接影响的是平均查找长度

  43. 采用再散列法处理冲突不易产生聚集

  44. 对包含n个元素的散列表进行检索,平均检索长度不直接依赖于n

    散列表是线性表查找的一种方法。这种方法的一个特点是,平均检索长度不直接依赖于元素的个数。元素的个数增加,其平均检索长度并不增加,而与负载因子有关。

  45. 某项目需要针对某结构进行一些频繁的存放操作,而针对该结构的读操作则相对较小,list(链表)数据结构最能够保证效率。

  46. 基于哈希的索引和基于树的索引有什么区别?:

    • hash索引仅满足“=”、“IN”和“<=>”查询,不能使用范围查询
    • hash索引无法被用来进行数据的排序操作
    • 对于组合索引,Hash索引在计算Hash值的时候是组合索引键合并后再一起计算Hash值,而不是单独计算Hash值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash索引也无法被利用
    • Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高
  47. 执行广度优先搜索图操作时,需要使用队列作为辅助存储空间。

  48. 有B+Tree/Hash_Map/STL Map三种数据结构。对于内存中数据,查找性能较好的数据结构是Hash_Map,对于磁盘中数据,查找性能较好的数据结构是B+Tree

    • 开放定址法解决冲突的做法是:当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐个单元地查找,直到找到给定 的关键字,或者碰到一个开放的地址(即该地址单元为空)为止。
    • 拉链法解决冲突的做法是:将所有关键字为同义词的结点链接在同一个单链表中
    • 拉链法处理冲突简单,且无堆积现象,即非同义词决不会发生冲突,因此平均查找长度较短
    • 具有相同函数值的关键字对该 哈希 函数来说称为 同义词
  49. 当结点规模较大时,开放定址法较为节省空间❌

  50. 设H(x)是一哈希函数,有K个不同的关键字(X1, X2, …Xk)满足H(x1)=H(x2)…=H(Xk),若用线性探测法将这K个关键字存入哈希表中,则至多要探测K-1次,至少要探测1次。

  51. 在求两个集合并集的过程中,可能需用到的操作是取元素、插入元素、比较操作、求表长

  52. 为提高散列(Hash)表的查找效率,可以采取的正确措施:

    • 设计冲突(碰撞)少的散列函数
    • 处理冲突(碰撞)时避免产生聚集(堆积)现象【装填得越满越容易发生冲突】
    • 减小装填(载)因子【装填得越满越容易发生冲突】

散列函数

  • 散列文件使用散列函数将记录的关键字值计算转化为记录的存放地址。由于散列函数不是一对一的关系,所以选择好的散列函数和冲突处理方法是散列文件的关键。
    • 平方取中法:先通过求关键字的平方值扩大相近数的差别,然后根据表长度取中间的几位数作为散列函数值。
    • 除余法:它是以表长m来除关键字,取其余数作为散列地址,即 h(key)=key%m
      • 设某散列表的长度为1000,散列函数为除留余数法,H(K)=K%P,则P通常情况下最好选择997

        使用除留余数法的一个经验是,若散列表表长为m,通常p为小于或等于表长(最好接近m)的最小质数或不包含小于20质因子的合数。

      • 若线性表(24,13,31,6,15,18,8)采用散列(Hash)法进行存储和查找,设散列函数为H(Key)=Key mod 11,则构造散列表时发生冲突的元素为(24和13)(其中的mod表示整除取余运算)。

        构造散列表时,若关键字k1≠k2,而H(k1)=H(k2),即关键字不同的元素被映射到同一个散列地址,称发生了冲突,称k1和k2互为同义词。根据题中给出的散列函数H(Key)=Key mod 11,H(24)=2,H(13)=2,H(31)=9,H(6)=6,H(15)=4,H(18)=7,H(8)=8,则发生冲突的元素为24和13。

        24和13取模11结果都为2。

    • 相乘取整法:首先用关键字key乘上某个常数A(0<A<1),并抽取出key.A的小数部分;然后用m乘以该小数后取整
    • 随机数法:选择一个随机函数,取关键字的随机函数值为它的散列地址

平均查找长度

设散列表中有 m 个存储单元,散列函数 H(key)= key % p ,则 p 最好选择(小于等于m的最大素数)。
散列函数有共同的性质,则函数值应当以同等概率取其值域的每一个值。

  1. 链地址法

    • 设散列表的长度为10,散列函数H(n)=n mod 7,初始关键字序列为 (33,24,8,17,21,10),用链地址法作为解决冲突的方法,平均查找长度是1.5
      在这里插入图片描述
    • 一个线性序列(30,14,40,63,22,5),假定采用散列函数Hash(key)=key%7来计算散列地址,将其散列存储在A[0~6]中,采用链地址法解决冲突。若查找每个元素的概率相同,则查找成功的平均查找长度是(4/3)。

      30%7=2 查找一次
      14%7=0 查找一次
      40%7=5 查找一次
      63%7=0 查找两次
      22%7=1 查找一次
      5%7=5 查找两次
      (1+1+1+2+1+2)/6=4/3
      【链地址法解决冲突:将所有关键字相同的结点链接在表中同一个位置,相同位置上后加进来的元素连接在之前加进来的元素后面,形成链表形式;】

  2. 线性探测法

    • 已知一个线性表(38,25,74,63,52,48),假定采用散列函数h(key) = key%7 计算散列地址,并散列存储在散列表A[0…6]中,若采用线性探测法解决冲突,则在该散列表上进行等概率成功查找的平均查找长度为2.0

    • 直接定址法是直接取关键字的某个线性函数值为散列地址。当散列函数为H(key)=a*key+b时,假设常数a和b的值分别为0.6和3,散列表的长度为20,那么在不考虑冲突的情况下,key值为10的关键字散列的地址位置为9

  3. 现有线性表(16,37, 43,55, 73,97,110,100),对其进行散列存储, 若选用H(K)=K%9作为散列函数,则散列地址为1的元素有(4)个。
    在这里插入图片描述

  4. 对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K % 9作为散列函数,则计算的散列地址为1的元素有(4)个。
    在这里插入图片描述

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

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

相关文章

本周热门chatGPT之AutoGPT-AgentGPT,可以实现完全自主实现任务,附部署使用教程

AutoGPT 是一个实验性的开源应用程序&#xff0c;它由GPT-4驱动&#xff0c;但有别于ChatGPT的是&#xff0c;​ 这与ChatGPT的底层语言模型一致。 ​AutoGPT 的定位是将LLM的"思想"串联起来&#xff0c;自主地实现你设定的任何目标。 简单的说&#xff0c;你只用提出…

界面组件Telerik ASP.NET MVC使用指南 - 如何自定义网格过滤

Telerik UI for ASP. NET MVC拥有使用JavaScript和HTML5构建网站和移动应用所需的70UI部件&#xff0c;来满足开发者的各种需求&#xff0c;提供无语伦比的开发性能和用户体验。它主要是针对专业级的 ASP.NET开发&#xff0c;通过该产品的强大功能&#xff0c;开发者可以开发出…

消息队列面试题-RocketMQ

1.为什么要使用消息队列&#xff1f; 2.消息队列有什么优点和缺点&#xff1f; 3.如何解决重复消费&#xff1f; 幂等性&#xff1a; 概念&#xff1a;一次和多次请求某一个资源对于资源本身应该具有同样的结果&#xff08;网络超时等问题除外&#xff09;。也就是说&#xf…

前端项目-09-购物车-游客列表-变更选中状态-删除

目录 1-加入购物车成功 2-购物车成功页面跳转 3-游客身份获取购物车列表 4-动态渲染购物车列表 5-处理商品数量 6-删除购物车商品 6.1-删除购物车单个商品 6.2-删除全部选中商品 7-修改产品状态 7.1-修改单个产品的状态​编辑 7.2-修改多个产品的状态 1-加入购物车成功…

【2023】分享一份网友的Linux运维面试题

原只有问题&#xff0c;没有答案。答案是我整理的&#xff0c;如发现有什么问题可以在评论区留言告诉我&#xff01;目录1.grep如何查找一个字符串如何忽略大小写2.kill -9和kill -15有什么区别3.简单描述一下TCP的建立和断开4.Linux服务在什么情况下CPU使用率会超过100%5.服务…

【机器学习(四)】基于KNN算法对鸢尾花类别进行分类预测

文章目录专栏导读1、KNN算法原理2、实战案例-对鸢尾花类别分类预测2.1确定特征和类别2.2对特征进行处理2.3对模型调参&#xff0c;选择最优参数2.4使用分类模型进行预测2.5评估模型&#xff0c;检验模型效果3、完整代码及结果专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c…

nginx-代理多个服务

目录 1.主机多Ip 1.1单网卡多ip主机配置 1.2修改default.conf 1.3server1.conf 1.3server2.conf 1.4测试文件 1.4重启测试 2.主机多端口 2.1server1.conf 2.2server2.conf 3.多域名代理 3.1server1.conf 3.2server2.conf 1.主机多Ip 1.1单网卡多ip主机配置 # 查看…

echart图表渲染合并策略

目录 调用方式 notMerge 普通合并 规则 例子 替换合并 规则 例子 echarts渲染函数setOption 调用方式 chart.setOption(option, {notMerge: boolean;replaceMerge?: string | string[];lazyUpdate: boolean; }); notMerge false &#xff08;默认&#xff09; 如果…

【Unity URP】2种描边方案:模板测试和正面剔除

写在前面 风格化不像PBR&#xff0c;好像没有套路可言&#xff0c;&#xff0c;&#xff0c;简直是《怎么好看怎么来》的最大化实践了&#xff01;感觉出的PBRNPR也是为了更好地利用PBR资产才诞生的这样一个渲染方案。&#xff08;当然我的评价非常非常的片面&#xff0c;瞎说…

帆软FineReport学习篇(四)——父子格设置

帆软FineReport学习篇(四)——父子格设置 1.概念 子单元格设置父单元格后,子单元格随父单元格进行扩展 简易的说,子单元格根据父单元格分组显示2 对比示意图 2.1 左父格对比示意图 2.2 上父格对比示意图 3 制作分组报表 3.1 新建普通报表WorkBook2.cpt 3.1.1 点击文件➡点…

OldWang带你了解MySQL(六)

文章目录&#x1f525;SQL函数&#x1f525;单行函数&#x1f525;字符函数&#x1f525;数字函数&#x1f525;日期函数&#x1f525;转换函数&#x1f525;通用函数&#x1f525;SQL函数 函数介绍 函数是 SQL 的一个非常强有力的特性&#xff0c;函数能够用于下面的目的&a…

【 SpringBoot ⽇志⽂件 】

文章目录一、⽇志的作用二、认识⽇志三、⾃定义⽇志打印3.1 在程序中得到⽇志对象3.2 使⽤⽇志对象打印⽇志3.3 ⽇志格式说明四、⽇志级别4.1 ⽇志级别的作用4.2 ⽇志级别的分类与使⽤4.2.1 ⽇志级别的分类4.2.2 ⽇志使⽤4.2.2.1 配置全局日志级别4.2.2.2 配置局部文件夹的日志…

【通过Cpython3.9源码看看python的内存回收机制】

一&#xff1a;建立对象引用计数 1. 相关代码 void _Py_NewReference(PyObject *op) {if (_Py_tracemalloc_config.tracing) {_PyTraceMalloc_NewReference(op);} #ifdef Py_REF_DEBUG_Py_RefTotal; #endifPy_SET_REFCNT(op, 1); #ifdef Py_TRACE_REFS_Py_AddToAllObjects(op…

【算法】AB3DMOT之Sutherland Hodgman多边形裁剪

在AB3MOT模型中有一个步骤为计算IOU时&#xff0c;需要先计算两个立体在地面的投影2D形状&#xff0c;然后计算两个投影的重叠部分&#xff0c;实际上为多边形的裁剪算法。 AB3MOT classmethod def box2corners3d_camcoord(cls, bbox):Takes an objects 3D box with the repr…

懒人式迁移服务器深度学习环境(完全不需要重新下载)

换服务器了&#xff1f;想迁移原来服务器上的深度学习环境&#xff0c;但又觉得麻烦懒得重新安装一遍anaconda、pytorch&#xff1f;有没有办法能不费吹灰之力直接迁移&#xff1f;接下来跟着我一起&#xff0c;懒汉式迁移。   本方法适用于在同一内网下的两台服务器之间互相…

【深度强化学习】(8) iPPO 模型解析,附Pytorch完整代码

大家好&#xff0c;今天和各位分享一下多智能体深度强化学习算法 ippo&#xff0c;并基于 gym 环境完成一个小案例。完整代码可以从我的 GitHub 中获得&#xff1a;https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model 1. 算法原理 多智能体的情形相比于单智…

SpringCloud GateWay与Nacos使用

网关就相当于一个内网与外网的出入口&#xff0c;起着 安全、验证的功能&#xff0c;如果没有网关&#xff0c;那么如果需要实现验证的功能&#xff0c;除非 SpringCloud GateWay 作为微服务的网关,起着如下作用 ① 作为所有API接口服务请求的接入点 ② 作为所有后端业务服务…

SpringBoot 整合 RabbitMQ (四十一)

二八佳人体似酥&#xff0c;腰间仗剑斩愚夫。虽然不见人头落&#xff0c;暗里教君骨髓枯。 上一章简单介绍了SpringBoot 实现 Web 版本控制 (四十),如果没有看过,请观看上一章 关于消息中间件 RabbitMQ, 可以看老蝴蝶之前的文章: https://blog.csdn.net/yjltx1234csdn/categor…

还不懂如何与AI高效交流?保姆级且全面的chatGPT提示词工程教程来啦!(一)基础篇

还不懂如何与chatGPT高效交流&#xff1f;保姆级且全面的chatGPT提示词工程教程来啦&#xff01;&#xff08;一&#xff09;基础篇 文章目录还不懂如何与chatGPT高效交流&#xff1f;保姆级且全面的chatGPT提示词工程教程来啦&#xff01;&#xff08;一&#xff09;基础篇一&…

CDH6.3.2大数据集群生产环境安装(七)之PHOENIX组件安装

添加phoenix组件 27.1. 准备安装资源包 27.2. 拷贝资源包到相应位置 拷贝PHOENIX-1.0.jar到/opt/cloudera/csd/ 拷贝PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha、PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel到/opt/cloudera/parcel-repo 27.3. 进入cm页面进行分发、…