当前位置: 首页 > news >正文

第四、五章图论和网络爬虫+网络搜索

第四章 图论和网络爬虫

4.1 构建网络爬虫工程重点

  • 构建网络爬虫的重点

    1. BFS还是DFS

      在不考虑时间的情况下,这两种不同的搜索方法都可以在相同的时间下爬下整个静态的互联网内容,但是在现实中肯定是需要考虑时间以及互联网动态变化的。所以重点应该是如何在有限时间里最多的爬下最重要的网页,类似BFS。

      考虑爬虫的分布式结构,一个大的网络爬虫可能有成千上万台服务器组成的分布式系统,这些服务器下载完一个网站后再进入另一个网站,而不是每个网络先下载5%,在回头继续第二批,这样可以避免握手(下载服务器和网络服务器建立通信的过程)次数过多,类似DFS。

      所以并不是单纯的BFS或者DFS,而是有相对复杂的下载优先级排序方法(调度系统)。

    2. 页面分析和URL提取

      当一个网站下载后,需要提取url,加入下载队列。

    3. 记录哪个网页已经下载过-URL表

      在互联网上一个网页可能会被多个网页的超链接指向,所以在遍历时可能被多次访问,为了避免一个网页被下载多次,可以使用哈希表记录那些网

      页已经被下载过。采用哈希表的好处是,判断url是否在表中,平均只需一次(或者略多)查找。遇到未下载的网页,除了下载该网页,还要适当将这个网页的URL存入哈希表中。如果有成千上万服务器下载网页,存储这个哈希表的服务器的通信就是整个爬虫系统的瓶颈了。

  • 总结:

    因为在现实生活中图的规模都是在几千个节点以内,比如公路图,铁路图等,图的遍历比较简单,所以在图论出现后的很长时间内,即使是计算机专业的学生也体会不到这个领域的研究有什么实际用处。但是随着互联网的出现,图的遍历方法一下子有了用武之地,很多数学方法如布尔代数,布尔运算等都是这样


第五章 网络搜索

5.1 pagerank算法(度量网页质量)

  • pagerank算法中心思想

    如果一个网页被很多网页所连接,说明它收到普遍的承认和信赖,那么它的排名就高;排名高的网页的链接更可靠,需要区别对待,给予更大的权重,即网页排名高的网站贡献的链接权重大。

  • 计算网页排名的过程中需要用到网页自己的排名,布林假定所有网页排名相同,使用二维矩阵想乘并迭代计算的方法。

  • 假定向量
    B = ( b 1 , b 2 , ⋯ , b N ) ⊤ \boldsymbol{B}=\left(b_1, b_2, \cdots, b_N\right)^{\top} B=(b1,b2,,bN)

    为第一、第二……第 N N N 个网页的网页排名。知阵
    A = [ a 11 ⋯ a 1 n ⋯ a 1 M ⋯ ⋯ a m 1 ⋯ a m n ⋯ a m M ⋯ ⋯ a M 1 ⋯ a M n ⋯ a M M ] A=\left[\begin{array}{ccccc} a_{11} & \cdots & a_{1 n} & \cdots & a_{1 M} \\ \cdots & & & & \cdots \\ a_{m 1} & \cdots & a_{m n} & \cdots & a_{m M} \\ \cdots & & & & \cdots \\ a_{M 1} & \cdots & a_{M n} & \cdots & a_{M M} \end{array}\right] A= a11am1aM1a1namnaMna1MamMaMM

    为网页之间链接的数目. 其中 a m n a_{m n} amn 代表第 n n n 个网页指问第 m m m 个网页的链接数。 A A A 是已知的, B B B 是末知的, 是我们所要计算的。

    初始假设:所有网页的排名都是 1 / N 1 / N 1/N, 即
    B 0 = ( 1 N , 1 N , ⋯ , 1 N ) 。  \boldsymbol{B}_0=\left(\frac{1}{N}, \frac{1}{N}, \cdots, \frac{1}{N}\right) \text { 。 } B0=(N1,N1,,N1)  
    假定 B i B_i Bi 是第 i i i 论连代的结果,那么
    B i = A ⋅ B i − 1 \boldsymbol{B}_i=\boldsymbol{A} \cdot \boldsymbol{B}_{i-1} Bi=ABi1

  • 显然通过公式简单 (但是计算量非常大) 的知阵运算, 可以得到 B 1 , B 2 , ⋯ ⋯ B_1, B_2, \cdots \cdots B1,B2,⋯⋯ 可以证明 B i \boldsymbol{B}_i Bi 最终会收敛, 即 B i B_i Bi 无限趋近于 B \boldsymbol{B} B, 此时: B = B × A ± \boldsymbol{B}=\boldsymbol{B} \times \boldsymbol{A}_{ \pm} B=B×A±因此. 当两炏㑢代的结果 B i \boldsymbol{B}_i Bi B i − 1 \boldsymbol{B}_{i-1} Bi1 之间的差昇非常小, 接近于零时, 停止迭代运算, 算法结束。一般来进, 只要 10 次左右的造代基本上就收敛了。

    由于网页之间链接的数量相比互联网的规模非常稀疏, 因此计算网页的网页排名也需要对零概率或者小概率事件进行平滑处理。网页的排名是个一维向量, 对它的平清处理只能利用一个小的常数 α D \alpha_{\mathrm{D}} αD 这时, 公式 (1 变成
    B i = [ α N ⋅ I + ( 1 − α ) A ] ⋅ B i − 1 \boldsymbol{B}_i=\left[\frac{\alpha}{N} \cdot I+(1-\alpha) A\right] \cdot \boldsymbol{B}_{i-1} Bi=[NαI+(1α)A]Bi1

    其中 N N N 是互联网网页的数教, α \alpha α 是一个 (较小的) 常数, I I I 是单位矩阵。网页排名的计算主要是矩阵相乘, 这种计算很容易分解成许多小任务.在多台计算机上并行处理。


5.2 TF-IDF(度量网页与查询相关性)

5.2.1 影响搜索引擎的因素

  • 可以归纳为四大类
    1. 完备的索引。俗话说巧姻难为无米之㰠, 如果一个网页不在索引中, 那么再好的算法也找不到。
    2. 对网页质量的度量, 比如 PageRank。当然, 正如在前面一章中介绍的那样, 现在来看, PageRank 的作用比 10 年前已经小了很多,今天对网页质量的衝量是全方位的, 比如对网页内容权威性的度量,一些八卦网站的 PageRank 可能很高, 但是它们的内容权威性很低。
    3. 用户偏好。这一点也很容易理解,因为不同用户的㔛好不同,因此一个好的搜害引繁会针对不同用户, 对相同的搜索给出不同的排名。
    4. 确定一个网页和某个查询的相关性的方法。

5.2.2 TF( Term Frequency:单文本词频)

  • 度量网页和某个查询的相关性有个简单的办法,即直接使用各个关键词在网页中出现的总词频。
    T F = 关键词出现次数 网页总字数 TF=\frac{\text{关键词出现次数}}{\text{网页总字数}} TF=网页总字数关键词出现次数

    如果一个查询包含N个关键词 w 1 , w 2 , ⋯ , w N w_1, w_2, \cdots, w_N w1,w2,,wN, 它们在一个特定网页中的词频分别是: T F 1 , T F 2 , ⋯ , T F N T F_1, T F_2, \cdots, T F_{N} TF1,TF2,,TFN。那么, 这个直询和该网页的相关性 (即相似度) 就是:
    T F 1 + T F 2 + . . . . . + T F N TF_1+TF_2+.....+TF_N TF1+TF2+.....+TFN
    如搜索“原子能的应用”,假设网页总字数1000字,“原子能”出现2次,“的”出现35次,“应用”出现5次,则TF为
    0.002 + 0.035 + 0.005 = 0.042 0.002+0.035+0.005=0.042 0.002+0.035+0.005=0.042

    漏洞

    1. 停止词“的”,对确定网页主题几乎无用,但却占词频80%
    2. “原子能”是个很专业的词,权重应该比“应用”更重要,但是词频却小于应用
  • 因此我们需要给汉语中的每个词设置一个权重,每个词的权重应满足

    1. 一个词预测主题的能力越强, 权重越大, 反之, 权重越小。在网页中看到 “原子能” 这个词, 或多或少能了解网页的主题。而看到 “应用”一词, 则对主题基本上还是一无所知。因此, “原子能”的权重就应该比“应用”大。
    2. 停止词的权重为零。

    很容易发现, 如果一个关键词只在很少的网页中出现, 通过它就容易锁定搜索目标, 它的权重也就应该大。反之, 如果一个词在大量网页中出现,看到它仍然不很清楚要找什么内容, 它的权重就应该小。


5.2.3 IDF(Inverse Document Frequency:逆文本词频指数)

  • 在信息检索中,使用最多的权重就是IDF。嘉定一个关键词 W W W D W D_W DW个网页中出现过,那么 D W D_W DW越大, W W W权重越小,反之亦然
    I D F = log ⁡ D D W IDF=\log {\frac{D}{D_W}} IDF=logDWD
    其中D为所有网页数。

  • 所谓IDF的概念为在一个特定条件下关键词的概率分布的交叉熵。

5.2.4 TF-IDF

  • TF-IDF 被公认为是信息检索中最重要的发明
    T F − I D F = T F 1 ⋅ I D F 1 + T F 2 ⋅ I D F 2 + . . . + T F N ⋅ I D F N TF-IDF = TF_1\cdot IDF_1 + TF_2\cdot IDF_2 +...+TF_N\cdot IDF_N TFIDF=TF1IDF1+TF2IDF2+...+TFNIDFN

  • 如搜索“原子能的应用”,假设网页总字数1000字,“原子能”出现2次,“的”出现35次,“应用”出现5次,则TF为
    T F 原子能 = 0.002 T F 的 = 0.035 T F 应用 = 0.005 \begin{aligned} &TF_{原子能}=0.002\\ &TF_{的}=0.035\\ &TF_{应用}=0.005\\ \end{aligned} TF原子能=0.002TF=0.035TF应用=0.005

    假定中文网页数是 D = 10 D=10 D=10 亿, 停止词 “的”在所有的网页中都出现, 即 D w = 10 D_w=10 Dw=10 亿, 那么它的
    I D F 的 = log ⁡ ( 10 亿 / 10 亿 ) = log ⁡ ( 1 ) = 0 IDF_{的}=\log (10 亿 / 10亿 )=\log (1)=0 IDF=log(10亿/10亿)=log(1)=0
    假如专用词 “原子能” 在 200 万个网页中出现, 即 D w = 200 D_w=200 Dw=200 万, 则它的权重
    I D F 原子能 = log ⁡ ( 500 ) = 8.96 I D F_{原子能}=\log (500)=8.96 IDF原子能=log(500)=8.96
    又假定通用词 “应用”出现在五亿个网页中, 它的权重
    I D F 应用 = log ⁡ ( 2 ) = 1 I D F_{应用}=\log (2)=1 IDF应用=log(2)=1
    , 则只有 1 。也就是说, 在网页中找到一个 “原子能” 的命中率 (Hits) 相当于找到九个 “应用” 的命中率。利用 IDF, 上述相关性计算的公式就由词频的加权求和
    T F − I D F = T F 1 ⋅ I D F 1 + T F 2 ⋅ I D F 2 + . . . + T F N ⋅ I D F N = T F 原子能 ⋅ I D F 原子能 + T F 的 ⋅ I D F 的 + T F 应用 ⋅ I D F 应用 = 0.002 ⋅ 8.96 + 0.035 ⋅ 0 + 0.005 ⋅ 1 = 0.01798 + 0 + 0.005 = 0.02292 \begin{aligned} TF-IDF &= TF_1\cdot IDF_1 + TF_2\cdot IDF_2 +...+TF_N\cdot IDF_N\\ &=TF_{原子能}\cdot IDF_{原子能}+TF_{的}\cdot IDF_{的}+TF_{应用}\cdot IDF_{应用}\\ &=0.002 \cdot 8.96+0.035\cdot 0+0.005\cdot1\\ &=0.01798+0+0.005\\ &=0.02292 \end{aligned} TFIDF=TF1IDF1+TF2IDF2+...+TFNIDFN=TF原子能IDF原子能+TFIDF+TF应用IDF应用=0.0028.96+0.0350+0.0051=0.01798+0+0.005=0.02292
    如果结合网页排名算法如PageRank,那么给定一个查询,有关网页的综合排名大致由相关性和网页排名的乘积决定。


5.2.5 TF-IDF的信息论依据

  • 后续使用: w w w为关键词,N为整个语料库,D为中文网页数, D w D_w Dw w w w出现的网页/文献个数,
    T F ( w ) = 关键词w出现次数 当前网页 / 文献总字数 TF(w)=\frac{\text{关键词w出现次数}}{当前网页/文献总字数} TF(w)=当前网页/文献总字数关键词w出现次数

  • 一个查询中每一个关键词 w w w 的权重应该反映这个词对查询来讲提供了多少信息。一个简单的办法就是用每个词的信息量作为它的权重,
    I ( w ) = − P ( w ) log ⁡ P ( w ) = − T F ( w ) N log ⁡ T F ( w ) N = T F ( w ) N log ⁡ N T F ( w ) ∵ N 为常数 ∴ = T F ( w ) log ⁡ N T F ( w ) \begin{aligned} I(w) & =-P(w) \log P(w) \\ & =-\frac{T F(w)}{N} \log \frac{T F(w)}{N}\\ &=\frac{T F(w)}{N} \log \frac{N}{T F(w)}\\ \because~~&N为常数\\ \therefore~~&=T F(w) \log \frac{N}{T F(w)}\\ \end{aligned} I(w)    =P(w)logP(w)=NTF(w)logNTF(w)=NTF(w)logTF(w)NN为常数=TF(w)logTF(w)N

    上述公式有一个缺陷:两个词出现的频率 TF 相同, 一个是某篇特定文章中的常见词, 而另外一个词是分散在多篇文章中, 那么显然第一个词有更高的分辨率, 它的权重应该更大。显然, 更好的权重公式应该反映出关键词的分辨率。

    如果做一些理想的假设,

    1. 每个文献大小基本相同, 均为 M M M 个词, 即 M = N D = ∑ w T F ( w ) D M=\frac{N}{D}=\frac{\sum_w T F(w)}{D} M=DN=DwTF(w)
    2. 一个关键词在文献一旦出现, 不论次数多少, 贡献都等同, 这样一个词要么在一个文献中出现 c ( w ) = T F ( w ) D ( w ) c(w)=\frac{T F(w)}{D(w)} c(w)=D(w)TF(w) 次, 要么是零。注意, c ( w ) < M c(w)<M c(w)<M

    ∵ N = M D T F ( w ) = c ( w ) ⋅ D ( w ) ∴ I ( w ) = T F ( w ) log ⁡ N T F ( w ) = T F ( w ) log ⁡ M D c ( w ) D ( w ) = T F ( w ) log ⁡ ( D D ( w ) M c ( w ) ) = T F ( w ) log ⁡ ( D D ( w ) ) − T F ( w ) log ⁡ ( M c ( w ) ) ∵ I D F = log ⁡ D D W ∴ = T F ( w ) ⋅ I D F ( W ) − T F ( w ) log ⁡ ( M c ( w ) ) \begin{aligned} \because~~&N=MD\\ &TF(w)=c(w)\cdot D(w)\\ \therefore~~ I(w)&=T F(w) \log \frac{N}{T F(w)}\\ & =TF(w) \log \frac{M D}{c(w) D(w)} \\ & =TF(w) \log \left(\frac{D}{D(w)} \frac{M}{c(w)}\right)\\ & =TF(w) \log \left(\frac{D}{D(w)}\right)-TF(w) \log \left(\frac{M}{c(w)}\right)\\ \because~~&IDF=\log {\frac{D}{D_W}}\\ \therefore~~& =TF(w)\cdot IDF(W)-TF(w) \log \left(\frac{M}{c(w)}\right) \end{aligned}     I(w)    N=MDTF(w)=c(w)D(w)=TF(w)logTF(w)N=TF(w)logc(w)D(w)MD=TF(w)log(D(w)Dc(w)M)=TF(w)log(D(w)D)TF(w)log(c(w)M)IDF=logDWD=TF(w)IDF(W)TF(w)log(c(w)M)

    这样, 我们看到 TF-IDF 和信息量之间的差异就是公式 中的第二项。因为 c ( w ) < M c(w)<M c(w)<M, 所以第二项大于零, 它是 c ( w ) c(w) c(w) 的递减函数。把上面的公式重写成
    T F − I D F ( w ) = I ( w ) − T F ( w ) log ⁡ M c ( w ) T F-I D F(w)=I(w)-T F(w) \log \frac{M}{c(w)} TFIDF(w)=I(w)TF(w)logc(w)M

    可以看到, 一个词的信息量 I ( w ) I(w) I(w) 越多, TF-IDF 值越大; 同时 w w w 命中的文献中 w w w 平均出现的次数越多, 第二项越小, TF-IDF 也越大。这些结论和信息论完全相符。

  • TF-IDF 是对搜索关键词的重要性的度量, 并且具备很强的理论根据。因此, 即使是对搜索不是很精通的人, 直接采用 TF-IDF, 效果也不会太差。现在各家搜索引擎对关键词重要性的度量, 都在 TF-IDF 的基础上做了一定的改进和微调。但是, 在原理上与 TF-IDF 相差不远。

相关文章:

第四、五章图论和网络爬虫+网络搜索

第四章 图论和网络爬虫 4.1 构建网络爬虫工程重点 构建网络爬虫的重点 用BFS还是DFS 在不考虑时间的情况下&#xff0c;这两种不同的搜索方法都可以在相同的时间下爬下整个静态的互联网内容&#xff0c;但是在现实中肯定是需要考虑时间以及互联网动态变化的。所以重点应该是如…...

PyMysql 01|(包含超详细项目实战)连接数据库、增删改查、异常捕获

目录 一、数据库操作应用场景 二、安装PyMysql 三、事务的概念 四、数据库的准备 五、PyMysql连接数据库 1、建立连接方法 2、入门案例 六、PyMysql操作数据库 1、数据库查询 1️⃣查询操作流程 2️⃣cursor游标 ​3️⃣查询常用方法 4️⃣案例 5️⃣异常捕获 …...

(No space left on device )

错误日志&#xff1a; org.springframe tipart.MultipartException: Failed to parse multipart servlet request: nested excepti /ROOT/upload_e5046403_6cd4_4673_3313_479fb76773fe_00000004.tmp (No space left on device ) 分析&#xff1a; (No space left on devi…...

Conmi的正确答案——Cordova使用“src-cordova/config.xml”编辑“Android平台”的“uses-permission”

Cordova版本&#xff1a;12.0.0 (cordova-lib12.0.1) 1、配置例程&#xff1a; <platform name"android"><config-file target"AndroidManifest.xml" parent"/manifest"><uses-permission android:name"android.permission…...

LLaMA-Factory web微调大模型并导出大模型

LLaMA-Factory 开源大模型如LLaMA&#xff0c;Qwen&#xff0c;Baichuan等主要都是使用通用数据进行训练而来&#xff0c;其对于不同下游的使用场景和垂直领域的效果有待进一步提升&#xff0c;衍生出了微调训练相关的需求&#xff0c;包含预训练&#xff08;pt&#xff09;&am…...

针对数据库系统安全的漏洞扫描加固工具【WebSocket + MySQL】

一、系统背景 随着信息技术的迅猛发展和互联网的普及&#xff0c;数据库作为存储、管理和检索大量数据的关键组件&#xff0c;其安全性对于企业和组织来说至关重要。然而&#xff0c;由于网络环境的复杂性和攻击手段的多样性&#xff0c;数据库面临着越来越多的安全威胁&#…...

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2)

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2) 下面我们继续来介绍AutoSAR CP分层架构&#xff0c;下面的文字和图来自AutoSAR官网目前最新的标准R24-11的分层架构手册。该手册详细讲解了AutoSAR分层架构的设计&#xff0c;下面让我们来一起学习一下。 Introductio…...

《PC 上的开源神经网络多模态模型:开启智能交互新时代》

《PC 上的开源神经网络多模态模型&#xff1a;开启智能交互新时代》 一、引言二、多模态模型基础剖析&#xff08;一&#xff09;核心概念解读&#xff08;二&#xff09;技术架构探秘 三、开源多模态模型的独特魅力&#xff08;一&#xff09;开源优势尽显&#xff08;二&…...

Docker Desktop 构建java8基础镜像jdk安装配置失效解决

Docker Desktop 构建java8基础镜像jdk安装配置失效解决 文章目录 1.问题2.解决方法3.总结 1.问题 之前的好几篇文章中分享了在Linux(centOs上)和windows10上使用docker和docker Desktop环境构建java8的最小jre基础镜像&#xff0c;前几天我使用Docker Desktop环境重新构建了一个…...

【算法】八大排序算法

这篇文章是对数据结构中 八大经典排序算法 的详解&#xff0c;包括其原理、实现过程、时间复杂度、空间复杂度及其适用场景。最后两种排序不常见&#xff0c;但仍收录了进来保持文章结构的完整性。 排序(Sort)是将无序的记录序列&#xff08;或称文件&#xff09;调整成有序的…...

pytest+allure 入门

使用allure如何生成自动化测试报​​​​​​告 &#xff1f;一文详解allure的使用 。_allure测试报告-CSDN博客 例子&#xff1a; import allure import pytest import osallure.epic("闹钟") allure.feature("闹钟增删") class TestSchedule():def setu…...

算法--最大公约数,最小公倍数

1. 求两个数的最大公约数&#xff0c;最小公倍数 解释&#xff1a;这里Mymin和Mymax函数是自定义用于获取两数最大值和最小值的 求最大公约数的时候只需要得到两数之中最小的一项&#xff0c;向下逐个判断直到等于1 求最小公倍数的时候只需要得到两数之中最大的一项&#xf…...

【跨域问题】

跨域问题 官方概念&#xff1a; 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域本质来说&#xff0c;是前端请求给到后端时候&#xff0c;请求头里面&#xff0c;有一个 Origin &#xff0c;会带上 协议域名端口号等&#xff1b;后端接受到请求&…...

为什么在二维卷积操作中,将宽度(W)维度放在高度(H)之前会破坏空间局部性原则,并影响缓存性能

空间局部性原则 空间局部性指的是程序倾向于访问与最近访问过的内存位置接近的内存位置。对于深度学习模型中的张量数据&#xff0c;这意味着当处理图像或特征图时&#xff0c;如果能够连续地访问相邻像素的数据&#xff0c;那么可以最大化利用CPU/GPU缓存&#xff0c;因为缓存…...

【C语言】_函数指针数组/转移表与回调函数

目录 1. 示例1&#xff1a;函数指针数组的简单使用 2. 示例2&#xff1a;多同类型函数调用 2.1 switch-case实现 2.2 switch-case函数指针 2.3 函数指针数组实现 3. 回调函数 关于函数指针&#xff0c;专栏文章链接如下&#xff1a;【C语言】_函数指针变量-CSDN博客https…...

《通过财报看企业》

“借贷关系”“净资产收益率”“财务报表”、净利润、盈利能力、现金流 第1章 净利润&#xff1a;决定一家公司的股价能涨多高 企业经营&#xff1a;存货周转率 企业市值&#xff1a;市值净利润市盈率 龙头企业&#xff1a;行业内收入规模最大、盈利能力最强&#xff0c;…...

年度技术突破奖|中兴微电子引领汽车芯片新变革

随着以中央计算区域控制为代表的新一代整车电子架构逐步成为行业主流&#xff0c;车企在电动化与智能化之后&#xff0c;正迎来以架构创新为核心的新一轮技术竞争。中央计算SoC&#xff0c;作为支撑智驾和智舱高算力需求的核心组件&#xff0c;已成为汽车电子市场的重要新增量。…...

力扣经典题目之912.排序数组(使用希尔排序解决)

今天继续给大家分享一道力扣的做题心得今天这道题目是 912.排序数组 题目链接&#xff1a;912. 排序数组 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a;给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题…...

QT升级及下载缓慢的问题解决办法

QT升级及下载缓慢的问题解决办法 QT安装慢解决办法&#xff1a; 官方下载地址: https://www.qt.io/download-dev 点开后点击download 填写相关信息后即可下载完成 线上安装工具。 安装工具&#xff08;qt-online-installer-windows-x64-4.8.1.exe&#xff09; 如下图: 此时不…...

List详解 - 双向链表的操作

在C中&#xff0c;std::list是标准模板库&#xff08;STL&#xff09;中的一个容器&#xff0c;它实现了双向链表的数据结构。与数组或向量&#xff08;std::vector&#xff09;不同&#xff0c;std::list允许在常数时间内进行插入和删除操作&#xff0c;尤其是在链表的任意位置…...

公众号如何通过openid获取unionid

通过接口 https://api.weixin.qq.com/cgi-bin/user/info?access_tokenxxxxxxx&langzh_CN 返回的数据如下&#xff1a; 前提是必须绑定 微信开放平台 token如何获取呢 代码如下&#xff1a; String tokenUrl "https://api.weixin.qq.com/cgi-bin/token"; …...

AIP-1 AIP目的和指南

原文AIP-1: AIP Purpose and Guidelines 随着Google API数量不断增加&#xff0c;API治理团队不断扩张&#xff0c;以满足API维护工作需求。越来越有必要为API生产者、审查者和其他相关方提供一套参考文档。API风格指南和一站式介绍文档简洁扼要。AIP集合提供了一种产出一致性…...

【学习】CMMM智能制造能力成熟度评估的重要性

CMMM认证通过对企业当前生产状态的全面评估&#xff0c;能够精准地确定其智能化生产的程度&#xff0c;并将企业的智能化生产水平划分为五个等级&#xff0c;包括初始级、已定义级、以管理级、卓越级和顶级。这种等级划分使得不同类型的企业能够根据自身实际情况&#xff0c;选…...

WebGIS在应急灾害中对村庄、风景区、机场的影响范围应用-以日喀则市定日县地震为例

目录 前言 一、关于影响范围 1、震中距离5公里 2、震中20公里范围 3、20到80公里范围 二、空间查询知识 1、相关数据介绍 2、空间数据查询 三、前后端数据查询以及web可视化实现 1、后台API实现 2、WebGIS前端实现 四、Web成果展示 1、空间位置分析 2、包含风景区…...

Flink系列知识讲解之:网络监控、指标与反压

Flink系列知识之&#xff1a;网络监控、指标与反压 在上一篇博文中&#xff0c;我们介绍了 Flink 网络协议栈从高层抽象到底层细节的工作原理。本篇博文是网络协议栈系列博文中的第二篇&#xff0c;在此基础上&#xff0c;我们将讨论如何监控网络相关指标&#xff0c;以识别吞…...

Postman接口测试05|实战项目笔记

目录 一、项目接口概况 二、单接口测试-登录接口&#xff1a;POST 1、正例 2、反例 ①姓名未注册 ②密码错误 ③姓名为空 ④多参 ⑤少参 ⑥无参 三、批量运行测试用例 四、生成测试报告 1、Postman界面生成 2、Newman命令行生成 五、token鉴权&#xff08;“…...

人工智能学习路线全链路解析

一、基础准备阶段&#xff08;预计 2-3 个月&#xff09; &#xff08;一&#xff09;数学知识巩固与深化 线性代数&#xff08;约 1 个月&#xff09;&#xff1a; 矩阵基础&#xff1a;回顾矩阵的定义、表示方法、矩阵的基本运算&#xff08;加法、减法、乘法&#xff09;&…...

图像处理 | 图像二值化

在图像处理领域&#xff0c;图像二值化是一个重要的操作&#xff0c;它将彩色或灰度图像转换为只有两种颜色&#xff08;通常是黑白&#xff09;的图像。二值化广泛应用于文字识别、图像分割、边缘检测等领域&#xff0c;尤其在处理简洁和高对比度的图像时非常有效。本文将深入…...

ASP.NET Core 中服务生命周期详解:Scoped、Transient 和 Singleton 的业务场景分析

前言 在 ASP.NET Core 中&#xff0c;服务的生命周期直接影响应用的性能和行为。通过依赖注入容器 (Dependency Injection, DI)&#xff0c;我们可以为服务定义其生命周期&#xff1a;Scoped、Transient 和 Singleton。本文将详细阐述这些生命周期的区别及其在实际业务中的应用…...

鼠标自动移动防止锁屏的办公神器 —— 定时执行专家

目录 ◆ 如何设置 ◇ 方法1&#xff1a;使用【执行Nircmd命令】任务 ◇ 方法2&#xff1a;使用【模拟键盘输入】任务 ◆ 定时执行专家介绍 ◆ 定时执行专家最新版下载 ◆ 如何设置 ◇ 方法1&#xff1a;使用【执行Nircmd命令】任务 1、点击工具栏第一个图标【新建任务】&…...

开源库:jcon-cpp

说明 jcon-cpp 是一个用于 C 的 JSON-RPC 库&#xff0c;它允许开发者通过 JSON-RPC 协议进行进程间通信&#xff08;IPC&#xff09;。JSON-RPC 是一种轻量级的远程过程调用协议&#xff0c;基于 JSON 格式数据进行通信。基于MIT协议&#xff0c;最新代码基于Qt6实现。可通过…...

Docker入门之docker基本命令

Docker入门之docker基本命令 官方网站&#xff1a;https://www.docker.com/ 1. 拉取官方镜像并创建容器&#xff08;以redis为例&#xff09; 拉取官方镜像 docker pull redis# 如果不需要添加到自定义网络使用这个命令&#xff0c;如需要&#xff0c;直接看第二步 docker r…...

C++ Qt练习项目 QChar功能测试

个人学习笔记 代码仓库 GitCode - 全球开发者的开源社区,开源代码托管平台 新建项目 设计UI 1、拖入group box去掉名字 2、拖入2个LineEdit 3、拖入两个Label 4、拖入两个PushButton 5、点栅格布局 1、拖入GroupBox 2、拖入4个PushButton 3、点栅格布局 1、拖入GroupBo…...

Taro+react 开发第一节创建 带有redux状态管理的项目

Taro 项目基于 node&#xff0c;请确保已具备较新的 node 环境&#xff08;>16.20.0&#xff09;&#xff0c;推荐使用 node 版本管理工具 nvm 来管理 node&#xff0c;这样不仅可以很方便地切换 node 版本&#xff0c;而且全局安装时候也不用加 sudo 了。 1.安装 npm inf…...

【SOC 芯片设计 DFT 学习专栏 -- RTL 中的信号名和 Netlist 中的信号名差异】

Overview 本文将介绍 soc 设计中 RTL-to-Netlist 映射及 RTL 中的信号名和 Netlist 中的信号名差异&#xff0c; 在 SoC设计中&#xff0c;RTL-to-Netlist映射 是从RTL&#xff08;Register Transfer Level&#xff09;代码转换为Netlist的过程。这通常涉及将用硬件描述语言&…...

551 灌溉

常规解法&#xff1a; #include<bits/stdc.h> using namespace std; int n,m,k,t; const int N105; bool a[N][N],b[N][N]; int cnt; //设置滚动数组来存贮当前和下一状态的条件 //处理传播扩散问题非常有效int main() {cin>>n>>m>>t;for(int i1;i&l…...

计算机网络之---OSI七层模型

为什么会有七层模型 OSI七层模型的出现源于计算机网络技术的发展需求&#xff0c;主要解决以下几个问题&#xff1a; 标准化与互操作性 随着计算机网络的快速发展&#xff0c;不同厂商、不同技术之间的设备和系统需要能够无缝通信。而不同厂商在网络硬件、软件、协议等方面存在…...

spring task使用

Spring Task 简介 Spring Task 是 Spring 框架原生自带的任务调度框架&#xff0c;它犹如一把瑞士军刀&#xff0c;为开发者提供了丰富多样的功能&#xff0c;助力轻松创建和管理定时任务。相较于其他一些第三方任务调度框架&#xff0c;Spring Task 最大的优势在于其与 Sprin…...

ADB->查看进程并强杀进程

查看进程 adb shell ps | findstr com.example.myapplication// result u0_a275 26312 914 17185988 193260 do_freezer_trap 0 S com.example.myapplication用户USER: u0_a275 该字段表示运行此进程的用户。在 Android 中&#xff0c;应用通常以 uN_aM 的格式表…...

Qt重写webrtc的demo peerconnection

整个demo为&#xff1a; 可以选择多个编码方式&#xff1a; cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMA…...

comfyui精准作图之gligen

简介 在 Stable Diffusion&#xff08;SD&#xff09;中&#xff0c;GLIGEN 是一种用于增强文本到图像生成模型可控性的技术。它通过在现有的预训练扩散模型&#xff08;如 Stable Diffusion&#xff09;基础上&#xff0c;引入额外的定位输入&#xff08;如边界框、关键点或参…...

再次梳理ISP的大致流程

前言&#xff1a; 随着智能手机的普及&#xff0c;相机与我们的生活越来越紧密相关。在日常生活中&#xff0c;我们只需要轻轻按下手机上的拍照按钮&#xff0c;就能记录下美好时刻。那么问题来了&#xff1a;从我们指尖按下拍照按钮到一张色彩丰富的照片呈现在我们面前&#x…...

系统思考与因果智慧

“众生畏果&#xff0c;菩萨畏因”&#xff0c;这句话蕴藏着深厚的因果智慧&#xff0c;与系统思考不谋而合。 众生畏果&#xff0c;体现了大多数人的行为模式&#xff1a;关注的是眼前的问题与结果&#xff0c;比如失败、冲突、痛苦。正如在系统思考中&#xff0c;我们称之为…...

k8s排错集:zk集群的pod报错 Init:CrashLoopBackOff无法启动

zk三节点集群&#xff0c;zk-0无法启动 statefulset 进到该node节点上查看容器的报错日志&#xff0c;发现在初始化container的时候一个命令有问题 查看正常zk集群的pod的资源配置文件 解决办法&#xff1a; 修改资源配置文件 应该修改为 chown -R 1000:1000 /zkenv kubec…...

商品详情API接口数据解析,API接口系列(示例返回数据(JSON格式))

商品详情API接口是用于获取特定商品详细信息的编程接口。它通常返回JSON格式的数据&#xff0c;包含商品的各种属性&#xff0c;如名称、价格、描述、库存状态、图片URL等。以下是一个典型的商品详情API接口数据解析示例&#xff0c;以及如何调用和使用这些数据的基本步骤。 示…...

Qt官方下载地址

1. 最新版本 Qt官方最新版本下载地址&#xff1a;https://www.qt.io/download-qt-installer 当前最新版本Qt6.8.* 如下图&#xff1a; 2. 历史版本 如果你要下载历史版本安装工具或者源码编译方式安装&#xff0c;请转至此链接进行下载&#xff1a;https://download.qt.i…...

Python自学 - 类进阶(可调用对象)

返回目录 1 Python自学 - 类进阶(可调用对象) 可调用对象在Python中有很重要的作用&#xff0c;那什么是可调用对象呢&#xff1f; 可以简单的理解为&#xff0c;凡是对象可以加括号给参数的都叫可调用对象&#xff0c;如&#xff1a;obj(x)中obj就是可调用对象&#xff0c;因…...

键盘过滤驱动

文章目录 概述注意源码参考资料 概述 irp请求会从io管理器中传递到设备栈中依次向下发送&#xff0c;当到达底层真实设备处理完成后&#xff0c;会依次返回&#xff0c;这时如果在设备栈中有我们自己注册的设备&#xff0c;就可以起到一个过滤的功能。键盘过滤驱动就是如此&am…...

Type-C单口便携显示器-LDR6021

Type-C单口便携显示器是一种新兴的显示设备&#xff0c;它凭借其便携性、高性能和广泛的应用场景等优势&#xff0c;正在成为市场的新宠。以下是Type-C单口便携显示器的具体运用方式&#xff1a; 一、连接与传输 1. **设备连接**&#xff1a;Type-C单口便携显示器通过Type-C接…...

ClickHouse vs StarRocks 选型对比

一、面向列存的 DBMS 新的选择 Hadoop 从诞生已经十三年了&#xff0c;Hadoop 的供应商争先恐后的为 Hadoop 贡献各种开源插件&#xff0c;发明各种的解决方案技术栈&#xff0c;一方面确实帮助很多用户解决了问题&#xff0c;但另一方面因为繁杂的技术栈与高昂的维护成本&…...