分类规则挖掘(三)

目录

    • 四、贝叶斯分类方法
      • (一)贝叶斯定理
      • (二)朴素贝叶斯分类器
      • (三)朴素贝叶斯分类方法的改进
    • 五、其它分类方法


四、贝叶斯分类方法

  贝叶斯 (Bayes) 分类方法是以贝叶斯定理为基础的一系列分类算法的总称。贝叶斯定理就是以研究者Thomas Bayes的姓氏命名的,他是一位英国牧师,也是18世纪概率论和决策论的早期研究者之一。

  1. 朴素贝叶斯 (Naive Bayes, NB) 分类器
  2. 树扩展的朴素贝叶斯 (Tree-Augmented Naive Bayes,TANB) 分类器
  3. 贝氏增强网络朴素贝叶斯 (Bayesian network-Augmented Naive Bayes, BAN) 分类器
  4. 贝叶斯多网 (Bayesian Multi-Net,BMN) 分类器
  5. 一般贝叶斯网络 (General Bayesian Network) 分类器

(一)贝叶斯定理

  设 Z Z Z 是类标号未知的样本点, H H H 表示 “样本 Z Z Z属于类别 C C C” 的假设,则分类问题就是计算概率 p ( H ∣ Z ) p(H|Z) p(HZ) 值的问题。

1、先验概率 (prior probability)

  指人们可以根据历史数据统计或历史经验分析得到的概率,其值一般通过对历史数据的分析和统计得到,或由专家根据专业知识人为的指定。用 p ( H ) p(H) p(H) 表示假设 H H H 的先验概率,用 p ( Z ) p(Z) p(Z) 表示没有类别标号的样本点 Z Z Z 的先验概率。

2、后验概率 (posterior probability)

  指一个随机变量在另一个随机变量取值已知的情况下取某一个特定值的概率,因此, 也称为条件概率:

  • p ( H = h ∣ Z = z ) p(H=h|Z=z) p(H=hZ=z) 是指在已知变量 Z Z Z 取值 z z z 的情况下,变量 H H H 取值 h h h 的概率,记作 p ( H ∣ Z ) p(H|Z) p(HZ),称为在已知 Z Z Z 取某个值的条件下, H H H 成立的后验概率。
  • p ( Z = z ∣ H = h ) p(Z=z|H=h) p(Z=zH=h) 是已知变量 H H H 取值 h h h 的情况下,变量 Z Z Z 取值 z z z 的概率,记作 P ( Z ∣ H ) P(Z|H) P(ZH),称为假设 H H H 成立的条件下,样本 Z Z Z 取某个值的后验概率。

例9-4 假设某证券营业部存有100个顾客的样本集 S S S (表9-16),条件属性为性别和年龄段,类别属性为 “是否买了基金”。

在这里插入图片描述
设随机变量 H H H 表示顾客购买了基金,即 “是否买了基金=‘是’” 这个假设,用 Z Z Z 表示一个新顾客:性别=“男”且年龄段=“30~39”,但类别标号未知,不知道它是否会买股票。

(1) p ( H ) p(H) p(H) 表示顾客买了基金的先验概率,则可用样本集 S S S 中类别属性 “是否买了基金=‘是’” 的顾客数 λ \lambda λ 再除以顾客总数 ∣ S ∣ |S| S 作为其估计值,即 p ( H ) = λ ÷ ∣ S ∣ p(H)=\lambda÷|S| p(H)=λ÷S。为了后续例子使用,假设 p ( H ) = 0.60 p(H)=0.60 p(H)=0.60

(2) Z Z Z 是一个没有类别标号的新样本,因此 p ( Z ) p(Z) p(Z) 其实是无法计算的,但可以用 S S S 中 “性别='男’且年龄段=‘30~39’” 的顾客数 τ \tau τ ∣ S ∣ |S| S 的比值作为其估计值,即 p ( Z ) = τ ÷ ∣ S ∣ p(Z)= \tau÷|S| p(Z)=τ÷S。为方便假设 p ( Z ) = 0.30 p(Z)=0.30 p(Z)=0.30

(3) p ( Z ∣ H ) p(Z|H) p(ZH) 表示在已经购买了基金的顾客中,其性别=‘男’且年龄段=‘30~39’的条件概率。类似地统计 S S S 中买了基金的顾客数 α \alpha α,再统计这些买了基金的顾客中性别=‘男’且年龄段=‘30~39’的顾客数 β \beta β,则 p ( Z ∣ H ) = β ÷ α p(Z|H)=\beta÷\alpha p(ZH)=β÷α,这里假设 p ( Z ∣ H ) = 0.20 p(Z|H)=0.20 p(ZH)=0.20

(4) p ( H ∣ Z ) p(H|Z) p(HZ) 表示已知顾客性别=‘男’和年龄段=‘30~39’条件下,该顾客可能购买基金的概率,即预测新顾客将来可能购买基金的概率。贝叶斯定理就是在已知先验概率 p ( H ) p(H) p(H) p ( Z ) p(Z) p(Z) 和后验概率 p ( Z ∣ H ) p(Z|H) p(ZH) 的情况下,计算后验概率 p ( H ∣ Z ) p(H|Z) p(HZ) 的方法。

定理9-1(贝叶斯定理),假设 Z Z Z H H H 是两个随机变量,则 p ( Z ∣ X ) = p ( X ∣ H ) p ( H ) p ( Z ) p(Z|X)=\frac{p(X|H)p(H)}{p(Z)} p(ZX)=p(Z)p(XH)p(H)

(二)朴素贝叶斯分类器

贝叶斯分类器根据训练样本集 S S S 估算样本 Z Z Z 属于某个类的概率。

1、训练集的要求

(1)训练集 S = { X 1 , X 2 , ⋯ , X n } S=\{X_1 ,X_2, \cdots,X_n\} S={X1,X2,,Xn} 由表9-1给出,其中 X i = { x i 1 , x i 2 , ⋯ , x i d } X_i=\{x_{i1},x_{i2},\cdots,x_{id}\} Xi={xi1,xi2,,xid} d d d 维向量, A 1 , A 2 , ⋯ , A d A_1, A_2,\cdots,A_d A1,A2,,Ad 为样本集的 d d d 个条件属性。
(2)训练集 S S S 的类别属性 C = { C 1 , C 2 , ⋯ , C k } C=\{C_1, C_2, \cdots, C_k\} C={C1,C2,,Ck},其中 C j C_j Cj 为类别属性的属性值或类别标号,它也表示训练集 S S S 中属于该类别的样本集合。

2、贝叶斯分类器

对没有类别标号的数据样本 Z Z Z,称公式 (9-11) 和 (9-12) 为朴素贝叶斯分类器,且它们将类别标号 C i C_i Ci 赋予 Z Z Z,其中 C i C_i Ci 满足 p ( C i ∣ Z ) = m a x { p ( C 1 ∣ Z ) , p ( C 2 ∣ Z ) , ⋯ , p ( C k ∣ Z ) } (9-11) p(C_i|Z) =max\{p(C_1|Z), p(C_2|Z), \cdots, p(C_k|Z)\}\tag{9-11} p(CiZ)=max{p(C1Z),p(C2Z),,p(CkZ)}(9-11) 且称 p ( C i ∣ Z ) p(C_i|Z) p(CiZ) 对应的类 C i C_i Ci 为最大后验假定,而 p ( C j ∣ Z ) p(C_j|Z) p(CjZ) 是已知 Z Z Z 的条件下, Z Z Z 属于类 C j C_j Cj 的条件概率。 p ( C j ∣ Z ) = p ( Z ∣ C j ) p ( C j ) p ( Z ) (9-12) p(C_j|Z)=\frac{p(Z|C_j)p(C_j)}{p(Z)}\tag{9-12} p(CjZ)=p(Z)p(ZCj)p(Cj)(9-12) 因此,贝叶斯分类器是最小错误率意义上的分类方法。

3、进一步说明

(1)从公式 (9-12) 可知, p ( Z ) p(Z) p(Z) 对于所有的类 C j ( j = 1 , 2 , ⋯ , k ) C_j(j=1,2, \cdots, k) Cj(j=1,2,,k) 均为同一个值,因此, C i C_i Ci 满足公式 (9-11) 的条件可以变成 C i C_i Ci 满足公式 (9-13)。 p ( Z ∣ C i ) p ( C i ) = m a x { p ( Z ∣ C 1 ) p ( C 1 ) , p ( Z ∣ C 2 ) P ( C 2 ) , ⋯ , p ( Z ∣ C k ) p ( C k ) } (9-13) p(Z|C_i)p(C_i)=max\{p(Z|C_1)p(C_1), p(Z|C_2)P(C_2), \cdots, p(Z|C_k)p(C_k)\}\tag{9-13} p(ZCi)p(Ci)=max{p(ZC1)p(C1),p(ZC2)P(C2),,p(ZCk)p(Ck)}(9-13)

(2)若类 C j ( j = 1 , 2 , ⋯ , k ) C_j(j=1,2, \cdots, k) Cj(j=1,2,,k) 的先验概率未知,则假设都是等概率的,即 p ( C 1 ) = p ( C 2 ) = ⋯ = p ( C k ) = 1 / k p(C_1)=p(C_2) =\cdots=p(C_k)=1/k p(C1)=p(C2)==p(Ck)=1/k,则 (9-13) 转换为对 p ( Z ∣ C j ) p(Z|C_j) p(ZCj) 的最大化。

(3)如果类 C j ( j = 1 , 2 , ⋯ , k ) C_j(j=1,2, \cdots, k) Cj(j=1,2,,k) 的先验概率未知,又不是等概率的,那么类 C j C_j Cj 的先验概率可以通过训练集 S S S 来估算,即 p ( C j ) = ∣ C j ∣ ∣ S ∣ (9-14) p(C_j)=\frac{|C_j|}{|S|}\tag{9-14} p(Cj)=SCj(9-14) 其中是 ∣ C j ∣ |C_j| Cj C j C_j Cj 中的训练样本数,而 ∣ S ∣ |S| S 是训练样本总数。

(4)若样本集具有许多属性,则计算 p ( Z ∣ C j ) p(Z|C_j) p(ZCj) 的开销可能非常大。为降低计算 p ( Z ∣ C j ) p(Z|C_j) p(ZCj) 的开销,可以假设,对于任意给定类标号,条件属性之间是相互独立的,即在属性间不存在任何依赖联系的情况下, p ( Z ∣ C j ) = p ( z 1 , z 2 , ⋯ , z d ∣ C j ) = ∏ r = 1 d p ( z r ∣ C j ) (9-15) p(Z|C_j)=p(z_1,z_2,\cdots,z_d|C_j)=\prod_{r=1}^{d}p(z_r|C_j)\tag{9-15} p(ZCj)=p(z1,z2,,zdCj)=r=1dp(zrCj)(9-15) 其中 z r z_r zr Z Z Z 在属性 A r A_r Ar 上的取值,概率 p ( z r ∣ C j ) ( r = 1 , 2 , ⋯ , d ) p(z_r|C_j) (r=1,2,\cdots,d) p(zrCj)(r=1,2,,d) 可以由训练集 S S S 按以下方式进行估值。

① 如果 A r A_r Ar 是离散属性,令 S j r S_{jr} Sjr S S S 中在属性 A r A_r Ar 上取值为 z r z_r zr 且属于类 C j C_j Cj 的训练样本集,则 p ( z r ∣ C j ) = ∣ S j r ∣ ∣ C j ∣ (9-16) p(z_r|C_j)=\frac{|S_{jr}|}{|C_j|}\tag{9-16} p(zrCj)=CjSjr(9-16) ② 如果 A r A_r Ar 是连续值属性,则通常假定该属性服从高斯分布,即 p ( z r ∣ C j ) = g ( z r , μ C j , σ C j ) = 1 2 π σ C j e ( z r − μ C j ) 2 2 σ C j 2 (9-17) p(z_r|C_j)=g(z_r,\mu_{C_j},\sigma_{C_j})=\frac{1}{\sqrt{2\pi\sigma_{C_j}}}e^{\frac{(z_r-\mu_{C_j})^2}{2\sigma_{C_j}^2}}\tag{9-17} p(zrCj)=g(zr,μCj,σCj)=2πσCj 1e2σCj2(zrμCj)2(9-17)

从以上分析可知,要利用贝叶斯分类器对一个没有类别标号的样本 Z Z Z 进行分类,对每个类 C j C_j Cj 计算 p ( Z ∣ C j ) p(Z|C_j) p(ZCj),将样本 Z Z Z 指派为类 C i ⇔ p ( Z ∣ C i ) p ( C i ) ≥ p ( Z ∣ C j ) p ( C j ) C_i \Leftrightarrow p(Z|C_i)p(C_i)≥p(Z|C_j)p(C_j) Cip(ZCi)p(Ci)p(ZCj)p(Cj),其中 1 ≤ j ≤ k 1≤j≤k 1jk j ≠ i j≠i j=i,即 Z Z Z 被指派到 p ( Z ∣ C i ) p ( C i ) p(Z|C_i)p(C_i) p(ZCi)p(Ci) 值最大的类 C i C_i Ci

(三)朴素贝叶斯分类方法的改进

1、条件概率的修正

  在公式 (9-14) 和 (9-15) 的后验概率计算过程中,当有一个属性的条件概率等于0,将导致整个类的后验概率等于0。

  为避免出现条件属性后验概率等于0这类问题,一般采用拉普拉斯 (Laplace) 估计对属性的条件概率进行修正,因此拉普拉斯估计又称为拉普拉斯校准或拉普拉斯估计法,它是用法国数学家Pierre Laplace的姓氏命名的。

  拉普拉斯估计法的思想比较简单,即在训练集中认为地增加一些训练样本来实现。

  设属性 A A A v v v 个不同值 { a 1 , a 2 , ⋯ , a v } \{a_1,a_2,\cdots,a_v\} {a1,a2,,av},则属性 A A A 划分 C j C_j Cj 所得子集为 { S 1 , S 2 , … ⋯ , S v } \{S_1,S_2,…\cdots,S_v\} {S1,S2,…⋯,Sv},设 C j C_j Cj 中在属性 A A A 上取值为 a i a_i ai 的样本为0个,即 p ( a i ∣ C j ) = 0 p(a_i|C_j)=0 p(aiCj)=0。为此,在 S i S_i Si 中增加 r > 0 r>0 r>0 个样本,即它们在属性 A A A 上取值为 a i a_i ai。为了平衡,同时在其它的 S t ( t = 1 , 2 , ⋯ , v , t ≠ i ) S_t(t=1,2,\cdots,v,t≠i) St(t=1,2,,v,t=i) 中也增加 r r r 个样本,这相当于在类 C j C_j Cj 中增加了 r × v r\times v r×v 个样本,因此,其后验概率修正为 p ( a i ∣ C j ) = ∣ S i ∣ + r ∣ C j ∣ + r × v , ( i = 1 , 2 , ⋯ , v ) (9-18) p(a_i|C_j)=\frac{|S_i|+r}{|C_j|+r\times v},(i=1,2,\cdots,v)\tag{9-18} p(aiCj)=Cj+r×vSi+r,(i=1,2,,v)(9-18) 因此,即使 ∣ S i ∣ = 0 |S_i|=0 Si=0,由于 r > 0 r>0 r>0,其后验概率也不会为0。

2、概率乘积转换为对数求和

  对于概率值,即使每个乘积因子都不为零,但当 d d d 较大时, p ( Z ∣ C j ) p(Z|C_j) p(ZCj) 也可能几乎为零,这在多个类别的条件概率进行比较时,将难以区分它们大小,即不利于选择最大 p ( A ∣ C j ) p ( C j ) ( j = 1 , 2 , ⋯ , k ) p(A|C_j)p(C_j)(j=1,2,\cdots,k) p(ACj)p(Cj)(j=1,2,,k) p ( Z ∣ C j ) p ( C j ) = p ( C j ) ∏ r = 1 d p ( z r ∣ C j ) (9-19) p(Z|C_j)p(C_j)=p(C_j)\prod_{r=1}^{d}p(z_r|C_j)\tag{9-19} p(ZCj)p(Cj)=p(Cj)r=1dp(zrCj)(9-19) log ⁡ 2 p ( Z ∣ C j ) p ( C j ) = log ⁡ 2 p ( C j ) ∏ r = 1 d p ( z r ∣ C j ) = log ⁡ 2 p ( C j ) + ∑ k = 1 d log ⁡ 2 p ( z r ∣ C j ) (9-20) \log_2p(Z|C_j)p(C_j)=\log_2p(C_j)\prod_{r=1}^{d}p(z_r|C_j)=\log_2p(C_j)+\sum_{k=1}^d\log_2p(z_r|C_j)\tag{9-20} log2p(ZCj)p(Cj)=log2p(Cj)r=1dp(zrCj)=log2p(Cj)+k=1dlog2p(zrCj)(9-20) 两式取极大值是一一对应的。因此,可以将 (9-19) 的乘积计算问题转化为 (9-20) 的加法计算问题,这样就可以避免所谓的 “溢出” 现象。

五、其它分类方法

1、粗糙集方法

  粗糙集 (Rough Set, RS) 理论是建立在分类机制的基础上的,它将分类理解为在特定空间上的等价关系,而等价关系构成了对该空间的划分。粗糙集能够在缺少关于数据先验知识的情况下,只以考察数据的分类能力为基础,解决模糊或不确定数据的分析和处理问题。

2、支持向量机方法

  支持向量机 (Support Vector Machine, SVM) 一种对线性和非线性数据进行分类的方法。SVM是一种算法,它使用一种非线性映射,将向量映射到一个更高维的空间,在这个空间里建立一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。平行超平面间的距离或差距越大,分类器的总误差越小。

3、神经网络方法

  神经网络,即人工神经网络 (Artificial Neural Network, ANN) 是模拟人脑思维方式的数学模型,是在现代生物学研究人脑组织成果的基础上提出的。神经网络是以大量简单神经元按一定规则连接构成的网络系统,从物理结构上模拟人类大脑的结构和功能,通过某种学习算法从训练样本中学习,并将获取的知识存储在网络各单元之间的连接权中。

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

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

相关文章

【C++STL详解(五)】--------list的介绍与使用

目录 前言 一、list的介绍 二、list的使用 Ⅰ.默认成员函数 1、构造函数 2、赋值重载 3、析构函数 Ⅱ、容量 1.size() Ⅲ、迭代器与遍历 1.beginend (正向迭代器) 2.rbeginrend (反向迭代器) 3.front 4.back Ⅳ、增删查改 1.push_front 2.pop_front 3.push_b…

c3 笔记7 css基本语法

相关内容:字体、段落、词间距、文字效果(对齐、上下标、阴影)、背景图、背景渐变、…… 单位pt与px的差别pt是印刷使用的字号单位,不管屏幕分辨率是多少,打印到纸上看起来都是相同的,lot的长度是0.01384英寸…

【STM32+HAL】SDIO+DMA模式读写SD卡

一、准备工作 有关CUBEMX的初始化配置,参见我的另一篇blog:【STM32HAL】CUBEMX初始化配置 二、所用工具 1、芯片: STM32F407ZGT6 2、IDE: MDK-Keil软件 3、库文件:STM32F4xxHAL库 三、实现功能 实现用SDIODMA读写S…

05_机器学习赛事_优惠券使用预测

1. 函数库导入 # import libraries necessary for this project import os, sys, pickleimport numpy as np import pandas as pdimport matplotlib.pyplot as plt import matplotlib.dates as mdatesimport seaborn as sns import datetime as dtfrom datetime import datefr…

如何删除BigKey

③第三方工具 利用第三方工具,如 Redis-Rdb-Tools 分析RDB快照文件,全面分析内存使用情况https://github.com/sripathikrishnan/redis-rdb-tools ④网络监控 自定义工具,监控进出Redis的网络数据,超出预警值时主动告警一般阿里…

拼多多新店和老店哪个好做

拼多多新店和老店哪个好做 拼多多推广可以使用3an推客。3an推客(CPS模式)给商家提供的营销工具,由商家自主设置佣金比例,激励推广者去帮助商家推广商品链接,按最终有效交易金额支付佣金,不成交不扣费。是商…

34.Docker基本操作

镜像相关的命令 镜像名称分为两部分组成:[repository]:[tag],tag就是镜像的版本。如果tag没有指定默认就是latest,表示最新版本的镜像。 查看docker命令的帮助信息 docker --help 具体某条命令的帮助信息 docker images --help 案例一:从DockerHub中…

5G赋能 扬帆未来|AGV无人仓成黑科技“顶流”

AGV 近年来,无人化这个概念逐渐被运用到了社会中的各个行业,而跟物流有关的就有无人分拣机器人、无人驾驶卡车、和无人叉车,越来越多的新装备也开始投入到实际运用中。 仓储管理在物流管理中占据着核心地位。传统的仓储管理中存在诸多的弊端…

发卡盗u源码系统搭建ZHU

2024最新UI发卡盗U/支持多语言/更新UI界面/支持多个主流钱包去除后门板,最好是部署智能合约后用合约地址来授权包含转账支付页面盗U授权源码。 完美提U,教程包含如何提u 。功能完美。 1.Php静态 2.目录puicta 3.扩sal 4.ssl不强https

SQL数据库

一.什么是数据库 数据库:存储数据的仓库,数据是有组织的进行存储。(database 简称DB) 数据库管理系统:管理数据库的大型软禁(DataBase Management System 简称DBMS) SQL:操作关系…

Golang | Leetcode Golang题解之第63题不同路径II

题目&#xff1a; 题解&#xff1a; func uniquePathsWithObstacles(obstacleGrid [][]int) int {n, m : len(obstacleGrid), len(obstacleGrid[0])f : make([]int, m)if obstacleGrid[0][0] 0 {f[0] 1}for i : 0; i < n; i {for j : 0; j < m; j {if obstacleGrid[i]…

《读懂财务报表》手绘版读书笔记:通过报表找好公司

通过财报的三张表判断好公司&#xff1a; 然后是在三表中&#xff0c;计算各个项目占总体的比例&#xff0c;以及做比率分析&#xff0c; 比率分析&#xff0c;从偿还能力&#xff0c;运营能力&#xff0c;盈利能力三方面分析&#xff1a; 1&#xff09; 偿还能力 2&#xff09…

【工具】--- Adobe Illustrator 下载-入门绘图

文章目录 软件下载入门项目可看课程 尝试使用Adobe Illustrator&#xff08;设计师常用软件&#xff09;进行科研绘图。 软件下载 阿里云盘下载 入门项目 绘制一个箭头并保持为SVG&#xff0c; 直线->画线->窗口->描边->选择想要的箭头样式->颜色->改为蓝…

Python量化炒股的获取数据函数—get_index_weights()

Python量化炒股的获取数据函数—get_index_weights() 获取指数成分股权重函数get_index_weights()可以获取一个指数给定日期在平台交易的成分股权重&#xff0c;其语法格式如下&#xff1a; get_index_weights(index_id, dateNone)该函数的参数与获取指数成分股代码函数get_i…

人工智能|推荐系统——工业界的推荐系统之概要

以小红书为例的推荐系统的转化流程&#xff0c;用户看到内容就是曝光&#xff0c;可以点击进去&#xff0c;然后进行一些“交互”行为&#xff0c;比如评论、点赞、收藏、转发。 通常会考虑用户的一些消费指标 而从推荐系统的角度则会考虑一些北极星指标&#xff0c;也就是优化…

微信小程序demo-----制作文章专栏

前言&#xff1a;不管我们要做什么种类的小程序都涉及到宣传或者扩展其他业务&#xff0c;我们就可以制作一个文章专栏的页面&#xff0c;实现点击一个专栏跳转到相应的页面&#xff0c;页面可以有科普类的知识或者其他&#xff0c;然后页面下方可以自由发挥&#xff0c;添加联…

OBD读取车辆里程数

OBD(On-Board Diagnostics)系统可以通过车辆的OBD接口读取多种车辆数据,但关于里程数的读取,情况稍微复杂一些。以下是关于通过OBD读取车辆里程数的详细解释: OBD输出信息中与里程相关的数据: 在标准的OBD输出信息中,并不直接提供车辆的总里程数。它主要提供的是与故障相…

spring boot学习第十八篇:使用clickhouse

1、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://…

ConcurrentLinkedQueue 原理

文章目录 1. 模仿 ConcurrentLinkedQueue 1. 模仿 ConcurrentLinkedQueue ConcurrentLinkedQueue 的设计与 LinkedBlockingQueue 非常像&#xff0c;也是 两把【锁】&#xff0c;同一时刻&#xff0c;可以允许两个线程同时&#xff08;一个生产者与一个消费者&#xff09;执行…

Node.js -- MongoDB

文章目录 1. 相关介绍2. 核心概念3. 命令行交互3.1数据库命令3.2 集合命令3.3 文档命令 4. 数据库应用场景4.1 新增4.2 删除4.3 更新4.4 查询 5. 图形化工具Robo 3T 1. 相关介绍 一、简介 Mongodb是什么 MongoDB是一个基于分布式文件存储的数据库&#xff0c;官方地址https://…