文心一言 VS 讯飞星火 VS chatgpt (221)-- 算法导论16.3 3题

三、如下所示,8个字符对应的出现频率是斐波那契数列的前8个数,此频率集合的赫夫曼编码是怎样的? a:1 b:1 c:2 d:3 e:5 f:8 g:13 h:21 你能否推广你的结论,求频率集为前 n 个斐波那契数的最优前缀码?

文心一言:

首先,赫夫曼编码是一种变长编码方式,其目标是使得编码的总长度最短。赫夫曼编码的生成基于赫夫曼树,其中树的每个内部节点表示两个子节点频率的和,而叶子节点则代表原始字符及其频率。在构建赫夫曼树时,我们每次选择频率最低的两个节点来生成一个新的父节点,直到只剩下一个节点(即根节点)为止。

对于给定的频率集合,我们可以按照频率从小到大的顺序来构建赫夫曼树。斐波那契数列有一个特性,即任意一项都等于前两项之和。这意味着在构建赫夫曼树时,我们可以直接将斐波那契数列中的相邻两项作为一对来生成父节点。

现在,我们针对给定的频率集合 a:1 b:1 c:2 d:3 e:5 f:8 g:13 h:21 来构建赫夫曼树,并确定每个字符的赫夫曼编码:

初始时,我们有8个叶子节点,分别对应8个字符及其斐波那契数列中的频率。
我们选择频率最低的两个节点(a和b,频率均为1)来生成一个父节点,该父节点的频率为2。
接下来,我们选择频率次低的两个节点(现在是c和频率为2的父节点)来生成另一个父节点,该父节点的频率为4。
这个过程继续下去,每次选择频率最低的两个节点来生成父节点,直到只剩下一个根节点为止。
在构建赫夫曼树的过程中,我们可以为每个字符分配一个从根节点到该字符叶子节点的路径作为编码。通常,我们约定左子树代表0,右子树代表1。

对于推广结论,如果频率集为前n个斐波那契数,我们可以使用类似的构建赫夫曼树的方法来找到最优前缀码。由于斐波那契数列的特性,我们可以将相邻的斐波那契数作为一对来生成父节点,并依次构建整个赫夫曼树。在构建过程中,我们可以为每个字符分配一个从根节点到该字符叶子节点的路径作为编码。

需要注意的是,赫夫曼编码不是唯一的,可能存在多种不同的赫夫曼树和对应的编码方式,但它们的编码总长度都是最优的。上述构建过程只是其中一种可能的实现方式。

在这里插入图片描述

讯飞星火:

首先,我们需要构建一个赫夫曼树(Huffman Tree)来得到每个字符的赫夫曼编码。在构建赫夫曼树时,我们每次选择两个最小的频率作为一对兄弟节点,合并为一个新节点,其频率为这两个子节点的频率之和。重复这个过程,直到只剩下一个节点为止。这个节点就是赫夫曼树的根节点。

给定的频率集合是斐波那契数列的前8个数:a:1, b:1, c:2, d:3, e:5, f:8, g:13, h:21。

按照赫夫曼编码的构建过程:

  1. 选择频率最小的两个字符 a 和 b,合并为一个新节点,频率为 2。
  2. 选择下一个最小的两个字符 c 和上一步合并的节点,合并为一个新节点,频率为 4。
  3. 继续选择下一个最小的两个节点 d 和上一步合并的节点,合并为一个新节点,频率为 7。
  4. 选择下一个最小的两个节点 e 和上一步合并的节点,合并为一个新节点,频率为 12。
  5. 选择下一个最小的两个节点 f 和上一步合并的节点,合并为一个新节点,频率为 20。
  6. 选择下一个最小的两个节点 g 和上一步合并的节点,合并为一个新节点,频率为 33。
  7. 最后,选择 h 和上一步合并的节点,合并为根节点,频率为 54。

现在我们可以给每个合并的节点分配一个二进制的标签,通常左边是0,右边是1。这样,我们就可以得到每个字符的赫夫曼编码。

最终的赫夫曼编码如下:

  • a: 1000101
  • b: 1000110
  • c: 10010
  • d: 101
  • e: 110
  • f: 1110
  • g: 11110
  • h: 11111

推广到前 n 个斐波那契数的最优前缀码,我们可以使用相同的方法构建赫夫曼树。由于斐波那契数列具有递归的性质(每个数是前两个数的和),我们可以推断出对于前 n 个斐波那契数的频率集合,其最优前缀码的构建过程将是一个递归的过程,每次合并最小的两个节点,直到只剩下一个节点为止。这样的编码将保证最优前缀码的长度是最短的,因为赫夫曼编码是一种贪心算法,它在每一步都做出局部最优的选择,从而保证了全局最优。

因此,对于前 n 个斐波那契数的频率集合,其最优前缀码将是这些数在斐波那契数列中的顺序对应的二进制表示。

在这里插入图片描述

在这里插入图片描述

360智脑:

首先,我们可以根据给定的频率构建一个赫夫曼树。赫夫曼树是一种用于构造最优前缀码的二叉树。在赫夫曼树中,频率较低的字符会先合并,直到只剩下一个节点,这个节点就是赫夫曼树的根节点。

对于给定的频率集合,我们按照斐波那契数列的顺序进行排序:a:1, b:1, c:2, d:3, e:5, f:8, g:13, h:21。然后,我们依次比较频率最低的两个字符,将它们合并,并更新频率。

步骤如下:

  1. 合并a和b,频率变为2,得到新的节点ab,其左子节点为a,右子节点为b。
  2. 合并c和d,频率变为5,得到新的节点cd,其左子节点为c,右子节点为d。
  3. 合并e和f,频率变为13,得到新的节点ef,其左子节点为e,右子节点为f。
  4. 合并g和h,频率变为34,得到新的节点gh,其左子节点为g,右子节点为h。
  5. 合并ab和cd,频率变为7,得到新的节点abcd,其左子节点为ab,右子节点为cd。
  6. 合并ef和gh,频率变为47,得到新的节点efgh,其左子节点为ef,右子节点为gh。

最后,我们得到的赫夫曼树如下:

           efgh
          /   \
     abcd     gh
    /   \    /  \
   a     b  c    d
            / \  / \
           e   f g   h

根据赫夫曼树,我们可以得到每个字符的最优前缀码。从根节点开始,向左的路径记为0,向右的路径记为1。字符a的编码为00,字符b的编码为01,字符c的编码为10,字符d的编码为11,字符e的编码为001,字符f的编码为011,字符g的编码为101,字符h的编码为111。

推广到前n个斐波那契数的最优前缀码,我们可以按照上述步骤,将频率集合排序后,依次合并频率最低的两个字符,直到只剩下一个节点。然后,根据赫夫曼树,我们可以得到每个字符的最优前缀码。

在这里插入图片描述

智谱清言:

根据给定的频率集合,即斐波那契数列的前8个数,我们可以构建赫夫曼编码。赫夫曼编码是一种用于无损数据压缩的最优前缀码,它通过给出现频率高的字符短的编码,而出现频率低的字符长的编码来优化存储空间。

首先,我们需要构建赫夫曼树,步骤如下:

1.将所有字符按照频率从小到大排序,并记录对应的二进制编码,初始时每个字符的编码都是其ASCII值的字符串表示。

2.创建叶子节点,每个节点包含一个字符和一个频率值。

3.重复以下步骤直到只剩下一个节点:

  • 选择两个最小的频率节点。

  • 创建一个新节点,将这两个节点的频率相加,作为新节点的频率。

  • 将新节点作为这两个节点的父节点,并更新它们的编码。

4.最终的树根节点即为赫夫曼树的根。

现在,让我们构建赫夫曼树和编码:

给定的频率是斐波那契数列的前8个数:


a: 1, b: 1, c: 2, d: 3, e: 5, f: 8, g: 13, h: 21

首先按频率排序:

a: 1, b: 1, c: 2, d: 3, e: 5, f: 8, g: 13, h: 21

我们开始构建赫夫曼树,每次选择两个最小的节点合并:

1. a+b = 2 (新编码为0)
   剩下的频率集合:1, 2, 3, 5, 8, 13, 21
2. c+d = 5 (新编码为00)
   剩下的频率集合:1, 2, 3, 5, 8, 13, 21
3. e+f = 13 (新编码为01)
   剩下的频率集合:1, 2, 3, 5, 8, 13, 21
4. g+h = 34 (新编码为010)
   剩下的频率集合:1, 2, 3, 5, 8, 34
5. 1+2 = 3 (新编码为000)
   剩下的频率集合:3, 5, 8, 34
6. 3+5 = 8 (新编码为001)
   剩下的频率集合:8, 34
7. 8+34 = 42 (新编码为011)
   剩下的频率集合:42
8. 最后合并根节点:42+85=127 (新编码为100)

赫夫曼树如下:

        (127)
       /    \
     (42)   (85)
    /  \    /   \
  (8)  (34) (5)  (3)
 / \    / \
(1)(2) (3)(5)

字符和对应的最优赫夫曼编码如下:

a: 111111 (出现1次)
b: 111110 (出现1次)
c: 1110 (出现2次)
d: 110 (出现3次)
e: 10 (出现5次)
f: 01 (出现8次)
g: 010 (出现13次)
h: 011 (出现21次)

对于斐波那契数列的前 ( n ) 个数的赫夫曼编码,你需要重复以上步骤,使用前 ( n ) 个斐波那契数作为频率值。赫夫曼编码不唯一,因为我们可以在任何时候将两个节点合并,但是最小的编码总是相同的。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

天工:

对于给定的8个字符及其对应的频率,我们可以构建赫夫曼树来得到最优前缀码。赫夫曼树的构造过程如下:

  1. 将所有叶子节点添加到最小优先队列中(或称堆)。
  2. 每次从堆中取出两个最小的节点,将它们合并成一个内部节点,该节点的频率是其子节点频率之和。
  3. 将新创建的内部节点加入到堆中。
  4. 重复步骤2和3,直到堆中只剩下一个节点,即根节点。

由于斐波那契数列具有性质 f(n) = f(n-1) + f(n-2) (其中 f(0) = 0, f(1) = 1),我们可以知道在赫夫曼树的构造过程中,每次合并的两个节点都会形成一个新的节点,其频率等于这两个节点的频率之和。因此,构造出的赫夫曼树会形成一棵完全二叉树。

具体到这个问题,赫夫曼树的构造过程如下:

  • 初始时,我们有8个叶子节点:a, b, c, d, e, f, g, h。
  • 按照频率从小到大进行排序,a和b的频率都是1,所以它们成为赫夫曼树的第一个分支。
  • 接下来,c的频率是2,所以它与a和b合并形成的内部节点的频率是3(1+1+1)。
  • 然后,d的频率是3,所以它与a、b和c合并形成的内部节点合并,形成一个新的内部节点,频率为6(3+3)。
  • 依此类推,e、f、g和h也会按照相同的规则被合并。

最后,我们得到的赫夫曼树会是一棵完全二叉树,每个节点的左子节点频率总是小于右子节点的频率,且每个节点的左右子节点都会形成赫夫曼编码的前缀码。

对于任意的前n个斐波那契数的频率集,构造赫夫曼树的过程是类似的。每次合并都会产生一个新的节点,其频率等于其子节点的频率之和。最终,我们会得到一个完全二叉树,其中每个叶子节点的赫夫曼编码就是我们要找的最优前缀码。

需要注意的是,虽然赫夫曼编码是贪心算法的结果,但在实际应用中,由于构造赫夫曼树的时间复杂度为O(n log n),当n很大时,计算可能会变得非常耗时。此外,对于非常大的数据集,可能需要使用更高效的算法或近似方法来获得最优前缀码。

在这里插入图片描述

在这里插入图片描述

灵小智:

首先,我们可以观察到前8个斐波那契数列的和是34,即总频率为34。接下来,我们按照频率从小到大进行排序:"a:1 b:1 c:2 d:3 e:5 f:8 g:13 h:21"。

然后,我们可以使用贪心算法进行赫夫曼编码的构建:

  1. 选择频率最小的两个字符"a"和"b",分别用"0"和"1"进行编码,得到:“a:0 b:1 c:2 d:3 e:5 f:8 g:13 h:21”。
  2. 将编码后的"a"和"b"合并为一个新的节点,频率为它们的频率之和,即2。得到临时编码:“ab:01 c:2 d:3 e:5 f:8 g:13 h:21”。
  3. 在临时编码中选择频率最小的字符"c"和"d",分别用"00"和"01"进行编码,得到:“ab:01 c:00 d:01 e:5 f:8 g:13 h:21”。
  4. 将编码后的"c"和"d"合并为一个新的节点,频率为它们的频率之和,即5。得到临时编码:“ab:01 cd:0001 e:5 f:8 g:13 h:21”。
  5. 重复上述步骤,直到完成编码。最终的赫夫曼编码如下:
    a: 01
    b: 01
    c: 0001
    d: 0010
    e: 1
    f: 0011
    g: 0000
    h: 01

以上是前8个斐波那契数的最优前缀码。如果要推广到前n个斐波那契数的最优前缀码,可以按照同样的贪心算法进行编码构建,只需要将频率集合换成前n个斐波那契数。

在这里插入图片描述

chatgpt:

根据给定的频率集合,我们可以使用赫夫曼编码算法来构建最优前缀码。首先,将频率集合按照频率从小到大排序:

a: 1
b: 1
c: 2
d: 3
e: 5
f: 8
g: 13
h: 21

接下来,我们开始构建赫夫曼树。每次选择两个频率最小的字符进行合并,直到只剩下一个节点为止。每次合并后的权重是两个被合并节点的权重之和。

Step 1:
a, b -> ab (weight = 2)
c: 2
d: 3
e: 5
f: 8
g: 13
h: 21

Step 2:
ab, c -> abc (weight = 4)
d: 3
e: 5
f: 8 
g:13 
h:21

Step3:
abc, d -> abcd (weight =7)
e :5  
f :8  
g :13 
h :21 

Step4:
abcd,e->abcde(weight=12)    
f :8     
g :13   
h :21  

Step5:
abcde,f->abcdef(weight=20)       
g :13   
h :21   

Step6:
abcdef,g->abcdefgh(weight=33)           
h :21    

Step7:
abcdefgh,h->abcdefghi(weight=54)             

最终得到赫夫曼树如上所示。然后,对于每个字符,从根节点开始向下,左子树为0,右子树为1,依次得到每个字符的赫夫曼编码:

a: 11111
b: 11110
c: 1110
d: 110
e: 10
f: 0
g: 111
h: 110

这就是频率集合为前8个斐波那契数的最优前缀码。同样的方法可以推广到其他频率集合为前n个斐波那契数的情况。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

kimi:

首先,我们来构建给定字符及其频率的哈夫曼编码。哈夫曼编码是一种最优前缀编码,它的构建过程基于字符出现的频率。具体步骤如下:

  1. 根据字符出现的频率创建一个优先队列(通常是最小堆),其中每个节点包含一个字符及其频率,以及指向左右子节点的指针。
  2. 从优先队列中取出两个频率最小的节点,创建一个新的内部节点作为它们的父节点,其频率是这两个子节点频率的和。
  3. 将新的内部节点加入优先队列。
  4. 重复步骤2和3,直到优先队列中只剩下一个节点,这个节点就是哈夫曼树的根节点。
  5. 根据哈夫曼树构建编码,从根节点到每个叶子节点的路径代表该字符的编码,左子节点代表0,右子节点代表1。

对于给定的字符和频率(a:1, b:1, c:2, d:3, e:5, f:8, g:13, h:21),我们可以按照上述步骤构建哈夫曼编码:

  1. 创建初始优先队列(按频率排序):{a:1, b:1, c:2, d:3, e:5, f:8, g:13, h:21}。
  2. 取出频率最小的两个节点a和b,合并为新节点{ab:2},优先队列变为:{c:2, d:3, e:5, f:8, g:13, {ab}:2, h:21}。
  3. 再次取出频率最小的两个节点c和d,合并为新节点{cd:5},优先队列变为:{e:5, f:8, g:13, {ab}:2, {cd}:5, h:21}。
  4. 取出频率最小的两个节点{ab}:2和e:5,合并为新节点{{ab}e:7},优先队列变为:{f:8, g:13, {cd}:5, {ab}e:7, h:21}。
  5. 取出频率最小的两个节点{cd}:5和{ab}e:7,合并为新节点{{cd}{ab}e:12},优先队列变为:{f:8, g:13, h:21, {{cd}{ab}e}:12}。
  6. 取出频率最小的两个节点f:8和g:13,合并为新节点{fg:21},优先队列变为:{{cd}{ab}e}:12, h:21, {fg:21}。
  7. 最后,取出剩下的两个节点{{cd}{ab}e}:12和{fg:21},合并为根节点{{…}:33}。

现在我们可以构建哈夫曼编码:

  • a: 000
  • b: 001
  • c: 10
  • d: 110
  • e: 1110
  • f: 1111
  • g: 0
  • h: 1

接下来,我们考虑推广这个结论到前n个斐波那契数的频率集。斐波那契数列的特点是每个数都是前两个数的和,即F(n) = F(n-1) + F(n-2)。这意味着随着n的增加,频率的差异会变得越来越大。在构建哈夫曼编码时,这会导致一些字符的编码非常短,而其他字符的编码非常长。然而,由于哈夫曼编码的最优性质,我们无法通过改变编码方案来进一步减少平均编码长度。

对于前n个斐波那契数的最优前缀码,构建过程与上面描述的过程相同,只是在每次合并时,我们会根据斐波那契数列的特定频率来合并节点。最终的哈夫曼树和编码将反映这些特定的频率分布,其中频率较低的字符会有较短的编码,频率较高的字符会有较长的编码。由于斐波那契数列的特性,我们不会得到一个平衡的哈夫曼树,而是会得到一个高度不平衡的树,其中一些分支非常长,而其他分支非常短。

在这里插入图片描述

在这里插入图片描述

混元:

我们可以使用哈夫曼编码算法来找到给定频率集合的最优前缀码。首先,我们将按照频率从小到大的顺序对字符进行排序。

在这个例子中,字符及其频率已经按斐波那契数列排列如下:
a:1, b:1, c:2, d:3, e:5, f:8, g:13, h:21.

接下来,我们将构建一棵哈夫曼树。每次从频率列表中取出两个最小频率的元素,将它们相加得到新的元素,并将新元素的频率插入回列表中。重复这个过程,直到列表中只剩下一个元素。

  1. 将 a 和 b 结合得到一个新元素 x,频率为 1+1=2。更新后的列表:x(2), c(2), d(3), e(5), f(8), g(13), h(21)。
  2. 将 c 和 x 结合得到一个新元素 y,频率为 2+2=4。更新后的列表:y(4), d(3), e(5), f(8), g(13), h(21)。
  3. 将 d 和 y 结合得到一个新元素 z,频率为 3+4=7。更新后的列表:z(7), e(5), f(8), g(13), h(21)。
  4. 将 e 和 z 结合得到一个新元素 w,频率为 5+7=12。更新后的列表:w(12), f(8), g(13), h(21)。
  5. 将 f 和 w 结合得到一个新元素 t,频率为 8+12=20。更新后的列表:t(20), g(13), h(21)。
  6. 将 g 和 t 结合得到一个新元素 u,频率为 13+20=33。更新后的列表:u(33), h(21)。
  7. 将 h 和 u 结合得到一个新元素 v,频率为 21+33=54。更新后的列表:v(54)。

现在我们得到了一棵哈夫曼树,树的叶子节点表示原始字符及其频率。从根节点到每个叶子节点的路径就是对应字符的哈夫曼编码。

根据这棵树,我们可以得到字符的哈夫曼编码如下:
a: 00
b: 01
c: 100
d: 1010
e: 10110
f: 101110
g: 1011110
h: 1011111

为了推广这个结论,我们可以得出以下算法:

  1. 对于给定的前 n 个斐波那契数,构造一个包含 n 个元素的元组列表,其中每个元组的第一个元素是一个字符,第二个元素是其对应的频率。
  2. 根据频率对列表进行排序。
  3. 使用哈夫曼编码算法构建一棵哈夫曼树。
  4. 从根节点遍历哈夫曼树,得到每个字符的哈夫曼编码。

通过这个算法,我们可以为任意前 n 个斐波那契数构成的频率集找到最优前缀码。

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pytorch中tensor类型转换的几个函数

目录 IntTensor转FloatTensor FloatTensor转IntTensor Tensor类型变为python的常规类型 IntTensor转FloatTensor .float函数: FloatTensor转IntTensor .int函数 Tensor类型变为python的常规类型 item函数

Matlab 2024a版本在Linux系统上的安装配置

目录 前言一、​Matlab 2024a安装总结 前言 Matlab是一种高级技术计算和编程环境,广泛应用于科学、工程和金融等领域。它提供了丰富的工具和函数库,用于数据分析、可视化、模型建立、算法开发和应用部署等任务。注:文末附有下载链接&#xf…

一文告诉你如何用 Python 操作 ChatGPT

ChatGPT 相信大家都用过,你觉得它给你的工作带来了多少帮助呢? 对这块感兴趣的,可以群里聊聊 目前我们使用 ChatGPT 的方式是通过浏览器访问 chat.openai.com,然后输入问题,就像下面这样。 除了网页之外&#xff0…

Qt打开已有工程方法

在Qt中,对于一个已有工程如何进行打开? 1、首先打开Qt Creator 2、点击文件->打开文件或项目,找到对应文件夹下的.pro文件并打开 3、点击配置工程 这样就打开对应的Qt项目了,点击运行即可看到对应的效果 Qt开发涉及界面修饰…

2024-03-22 问AI: 介绍一下深度学习中的 sigmoid函数

文心一言 Sigmoid函数是深度学习中常用的一种激活函数,主要用于将神经元的输出值压缩到0和1之间。这种特性使得sigmoid函数在二分类问题中特别有用,因为输出值可以被解释为属于某个类别的概率。 sigmoid函数的数学表达式为: σ(x) 1 / (1…

CMake笔记之将任意官方库作为third_party完整地包含在工程项目中使用的通用模板

CMake笔记之将任意官方库作为third_party完整地包含在工程项目中使用的通用模板 —— 杭州 2024-03-20 凌晨1:06 code review! 文章目录 CMake笔记之将任意官方库作为third_party完整地包含在工程项目中使用的通用模板1.通用CMakeLists.txt模板2.GPT4给出的改进建议3.git clon…

kubernetes负载均衡-service

一、service的概念 1、什么是service 在Kubernetes中,pod是应用程序的载体,当我们需要访问这个应用时,可以通过Pod的IP进行访问,但是这里有两个问题:1、Pod的IP地址不固定,一旦Pod异常退出、节点故障,则会…

Windows11 安装confluence 7.4.0

Windows11安装confluence:7.4.0 1.打开终端管理员(管理员权限的PowerShell)2.按顺序执行以下命令,安装confluence服务3.浏览器(如Microsoft Edge) 打开 http://127.0.0.1:8100/ 配置confluence4.图示 本文是Windows11 安装confluence 7.4.0的步骤 本文参考 1.打开终端管理员(管…

使用React搭建single-spa

自己搭建的Demo GitHub - ftao123/single-spa-react-demo: single-spa-react-demo 修改子应用的webpack配置 library: "app2"和libraryTarget: "umd"配置必须添加。 可以看到filename在开发环境下的地址是static/js/bundle.js,所以我们主应用…

PySide6-YOLO8目标检测、追踪可视化界面

目录 项目地址实现效果DetectTrack 项目地址 https://github.com/zhengjie9510/pyside-yolo 实现效果 Detect Track

MySQL 查询性能优化

优质博文:IT-BLOG-CN​ 如果把查询看作是一个任务,那么它由一些列子任务组成,每个子任务都会消耗一定的时间。如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数。通常…

matlab批量读取目录下的文件的方法

批量处理可以提高效率,这里提供一个可以批量读取nc文件的代码: address C:\Users\Hello World!!\DESKTOP\TerraClimate_ppt\; % Get the list of files udir address; form *.nc; % Get the list of station names files GetFiles(udir,form); [n,p…

Linux 进程通信:命名管道、共享内存

目录 一、命名管道 1、概念 2、特点 3、原理 4、创建 5、匿名管道与命名管道的区别 6、命名管道的打开规则 二、命名管道—实现客户端和服务器之间的通信 1、Makefile 2、comm.hpp 3、Log.hpp 4、server.cxx 5、client.cxx 运行测试: 三、system V…

模拟实现 atoi 函数

一、函数介绍 原型 int atoi(const char *nptr); 二、使用atoi 三、使用发现 可以发现:会先过滤掉空格,还能识别正负号,当第一次遇到正负号了,后面没接着是数字就返回0, 如果45 5aa 结果是45,说明前面识…

JavaScript代码执行原理

JavaScript代码是如何被机器理解并执行的呢? 作为 JavaScript 开发者,通常我们不需要关心JavaScript引擎是如何执行代码的。但是,了解 JavaScript 引擎的工作原理,知晓它如何处理我们编写的 JS 代码、肯定是有益的。 注意&#…

面试算法-94-将有序数组转换为二叉搜索树

题目 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视…

微服务之Nacos配置管理

文章目录 前言一、统一配置管理Nacos操作二、统一配置管理java操作1.引入依赖2.创建配置文件3.测试4.总结 三、Nacos配置自动更新1.添加注解RefreshScope2.使用ConfigurationProperties注解3.总结 四、Nacos多环境配置共享1.配置文件2.多种配置的优先级3.总结 总结 前言 一、统…

飞鸟写作能用吗 #笔记#笔记

飞鸟写作是一个强大的论文写作工具,不仅可以帮助用户高效、准确地完成论文写作,还能帮助用户对论文进行查重和降重。那么,飞鸟写作能用吗?答案是肯定的,飞鸟写作非常好用! 首先,飞鸟写作拥有强大…

2024智能EDM邮件营销系统使用攻略

在数字化营销领域,智能EDM(Electronic Direct Mail)邮件营销作为一种高效、精准的推广方式,正日益受到企业的高度重视。而要实现这一策略的成功落地,一个高可靠性和高稳定性的专业邮件发送平台则是不可或缺的关键环节。…

Nginx 故障排查之斜杠(/) --(附 Nginx 常用命令)

问题场景: 项目中用到了多个子域名,测试环境通过子域名进行接口访问的时候返回 404 NOT_FOUND,经过排查测试后确定是 Nginx 配置问题,而导致事故的根本原因是运维在Nginx配置的时候少配置了一个斜杠(/)&am…