EmguCV学习笔记 VB.Net 2.S 特别示例

 版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

教程VB.net版本请访问:
EmguCV学习笔记 VB.Net 目录-CSDN博客

教程C#版本请访问:EmguCV学习笔记 C# 目录-CSDN博客

笔者的博客网址:VB.Net-CSDN博客

教程配套文件及相关说明以及如何获得pdf教程和代码(博客上的教程内容会和pdf教程一致,教程中也会包含所有代码),请移步:EmguCV学习笔记

2.S 特别示例

本节示例参考《计算机视觉40例从入门到深度学习(OpenCV-Python)》。

2.S.1 生成随机值图像

随机值图像,即每个像素的颜色随机的图像。本节内容介绍了三种方式生成随机值图像。

1、通常的方式

直接使图像每个像素点的颜色为随机颜色。

【代码位置:frmChapter2_S1】Button1_Click

    '生成随机值图像1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        '使用Matrix来生成灰度(单通道)的随机值图像

        Dim s As New Size(400, 400)

        Dim matr As New Matrix(Of Byte)(s)

        Dim r As New Random()

        For i As Integer = 0 To s.Width - 1

            For j As Integer = 0 To s.Height - 1

                matr(i, j) = r.Next(256)

            Next

        Next

        ImageBox1.Image = matr.Mat

        '使用Image来生成彩色(多通道)的随机值图像

        Dim img As New Image(Of Bgr, Byte)(s)

        Dim r2 As New Random()

        For i As Integer = 0 To s.Width - 1

            For j As Integer = 0 To s.Height - 1

                img(i, j) = New Bgr(r2.Next(256), r2.Next(256), r2.Next(256))

            Next

        Next

        ImageBox2.Image = img.Mat

End Sub

运行后如下图所示:

图2-84 普通方法生成随机噪声图片

2、SetRandNormal

Matrix类的SetRandNormal方法用于将矩阵的每个元素设置为正态分布随机数。SetRandNormal方法的具体使用参看2.2.6节【随机矩阵】。

【代码位置:frmChapter2_S1】Button2_Click

    '生成随机值图像2 SetRandNormal

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Dim matr As New Matrix(Of Byte)(New Size(400, 400))

        matr.SetRandNormal(New MCvScalar(100), New MCvScalar(200))

        Dim m As New Mat

        m = matr.Mat

        ImageBox1.Image = m

        Dim matr1 As New Matrix(Of Byte)(400, 400, 3)

        matr1.SetRandNormal(New MCvScalar(100, 100, 100), New MCvScalar(200, 200, 200))

        Dim m1 As New Mat

        m1 = matr1.Mat

        ImageBox2.Image = m1

End Sub

运行后如下图所示:

 

图2-85 SetRandNormal方法生成随机噪声图片

3、SetRandUniform

Matrix类的SetRandUniform方法用于将矩阵的每个元素设置为均匀分布的随机数,要设置随机数的Matrix对象可以是单通道矩阵或多通道矩阵。该方法声明如下:

Public Sub SetRandUniform (

         floorValue As MCvScalar,

         ceilingValue As MCvScalar

)

参数说明:

  1. floorValue:随机数范围的下界(获取的值包含此下界)。
  2. ceilingValue:随机数范围的上界(获取的值不包含此上界)。

【代码位置:frmChapter2_S1】Button3_Click

    '生成随机值图像3 SetRandUniform

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

        Dim matr As New Matrix(Of Byte)(New Size(400, 400))

        matr.SetRandUniform(New MCvScalar(100), New MCvScalar(200))

        Dim m As New Mat

        m = matr.Mat

        ImageBox1.Image = m

        Dim matr1 As New Matrix(Of Byte)(400, 400, 3)

        matr1.SetRandUniform(New MCvScalar(100, 100, 100), New MCvScalar(200, 200, 200))

        Dim m1 As New Mat

        m1 = matr1.Mat

        ImageBox2.Image = m1

End Sub

运行后如下图所示:

图2-86 SetRandUniform方法生成随机噪声图像

2.S.2 图像加密

为了使读者更清楚掌握详细加解密过程,这里分为图像的整体加解密和图像的局部加解密,并附上详细操作步骤,请结合代码深入掌握。

一、图像整体加解密

具体实现步骤:

(一)准备

1、载入源图像(mSrc)

2、与源图像同等大小的随机值图像(mKey)

(二)加密

3、源图像(mSrc)和随机值图像(mKey)进行Xor操作,将源图像加密,生成加密图像(mEnc)。

(三)解密

4、加密图像(mEnc)和随机值图像(mKey)进行Xor操作,将加密图像解密,生成解密图像(mDec)。

以下是详细的代码实现:

【代码位置:frmChapter2_S1】Button4_Click

   '图像加密和解密

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

        Dim mSrc As New Mat("c:\lessons\lena.jpg", ImreadModes.Color)

        Dim mKey As New Mat

        '生成三通道随机值图像

        Dim matr1 As New Matrix(Of Byte)(mSrc.Rows, mSrc.Cols, 3)

        matr1.SetRandNormal(New MCvScalar(0, 0, 0), New MCvScalar(255, 255, 255))

        mKey = matr1.Mat

        '显示密钥图像

        ImageBox1.Image = mKey

        '加密

        Dim mEnc As New Mat()

        CvInvoke.BitwiseXor(mSrc, mKey, mEnc)

        '显示加密图像

        ImageBox2.Image = mEnc

        '解密

        Dim mDec As New Mat

        CvInvoke.BitwiseXor(mEnc, mKey, mDec)

        '显示解密图像

        ImageBox3.Image = mDec

End Sub

运行后如下图所示:

 

图2-87 图像整体加解密

二、三种方式生成加密图像的对比

为了更进一步地做好图像局部加解密,笔者这里将2.S.1节【生成随机值图像】的三种方法做成了函数,只需要输入图像大小就可以生成对应大小的随机值图像。具体代码如下:

【代码位置:frmChapter2_S1】getRandCh3、getRandNormalCh3、getRandUniformCh3

    '普通方式生成三通道随机值图像

    Private Function getRandCh3(ByVal s As Size) As Mat

        Dim img As New Image(Of Bgr, Byte)(s)

        Dim r As New Random()

        For i As Integer = 0 To s.Width - 1

            For j As Integer = 0 To s.Height - 1

                img(i, j) = New Bgr(r.Next(256), r.Next(256), r.Next(256))

            Next

        Next

        Return img.Mat

    End Function

    'SetRandNormal生成三通道随机值图像

    Private Function getRandNormalCh3(ByVal s As Size) As Mat

        Dim matr As New Matrix(Of Byte)(s.Height, s.Width, 3)

        matr.SetRandNormal(New MCvScalar(0, 0, 0), New MCvScalar(255, 255, 255))

        Return matr.Mat

    End Function

    'SetRandUniform生成三通道随机值图片

    Private Function getRandUniformCh3(ByVal s As Size) As Mat

        Dim matr As New Matrix(Of Byte)(s.Height, s.Width, 3)

        matr.SetRandUniform(New MCvScalar(0, 0, 0), New MCvScalar(255, 255, 255))

        Return matr.Mat

End Function

使用以上三个函数对图像加密实现代码如下:

【代码位置:frmChapter2_S1】Button5_Click

    '三种方式生成随机图像进行加密

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click

        Dim mSrc As New Mat("C:\learnEmgucv\lena.jpg", ImreadModes.Color)

        '加密1

        Dim mKey1 As New Mat

        mKey1 = getRandCh3(mSrc.Size)

        Dim mEnc1 As New Mat()

        mEnc1 = mSrc.Clone

        CvInvoke.BitwiseXor(mSrc, mKey1, mEnc1)

        ImageBox1.Image = mEnc1

        '加密2

        Dim mKey2 As New Mat

        mKey2 = getRandNormalCh3(mSrc.Size)

        Dim mEnc2 As New Mat()

        CvInvoke.BitwiseXor(mSrc, mKey2, mEnc2)

        ImageBox2.Image = mEnc2

        '加密3

        Dim mKey3 As New Mat

        mKey3 = getRandUniformCh3(mSrc.Size)

        Dim mEnc3 As New Mat()

        CvInvoke.BitwiseXor(mSrc, mKey3, mEnc3)

        ImageBox3.Image = mEnc3

End Sub

运行后如下图所示:

 

图2-88 三种方式生成加密图像

可以看到中间图像加密后隐约能够看到源图像的样子,而其它两种方式能够很好地对图像加密。采用SetRandNormal方式生成的随机值图像,由于使用了正态分布,作为加密方式不理想。

三、图像局部加解密

具体实现步骤:

(一)准备

1、载入源图像(mSrc)

2、生成背景黑色,区域白色的掩码图像1(mMask1)

3、生成背景白色,区域黑色的掩码图像2(mMask2)

4、生成密钥图像(mKey)

(二)加密

5、密钥图像(mKey)和源图像(mSrc)进行Xor操作,将源图像加密,生成加密图像(mEnc)。图2-SA1 第1张图。

6、将加密图像(mEnc)和掩码图像1(mMask1)进行And操作,生成背景黑色+区域加密图像1(mEncPart)。图2-SA1 第2张图。

7、将源图像(mSrc)和掩码图像2(mMask2)进行And操作,生成背景不加密+区域黑色图像2(mnoEncPart)。图2-SA1 第3张图。

8、将加密图像1(mEncPart)和黑色图像2(mnoEncPart)进行直接相加,去除黑色部分,生成背景不加密+区域加密的最终图像(mResult)。图2-SA1 第4张图。

 

图2-89 加密过程

(三)解密

9、将最终图像(mResult)和密钥图像(mKey)进行Xor操作,生成背景加密+区域解密图像1(mDecPart)。图2-SA2 第1张图。

10、将解密图像1(mDecPart)和掩码图像1(mMask1)进行And操作,生成背景黑色+区域解密图像2(monlyDecPart)。图2-SA2 第2张图。

11、将最终图像(mResult)和掩码图像2(mMask2)进行And操作,生成背景不加密+区域黑色图像(mnoDecPart)。图2-SA2 第3张图。

12、将解密图像2(monlyDecPart)和黑色图像(mnoDecPart)进行直接相加,去除黑色部分,生成生成解密图像(mDecResult)。图2-SA1 第4张图。

 

图2-90 解密过程

以下是详细的代码实现:

【代码位置:frmChapter2_S1】Button6_Click

    '图像局部加密和解密

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click

        Dim mSrc As New Mat("C:\learnEmgucv\lena.jpg", ImreadModes.Color)

        ImageBox1.Image = mSrc

        '(200,200,399,399)区域进行加密解密

        '生成背景黑色,区域白色的掩码图像1

        Dim mMask1 As New Mat(mSrc.Size, DepthType.Cv8U, 3)

        mMask1.SetTo(New MCvScalar(0, 0, 0))

        Dim mMask1RIO As New Mat(mMask1, New Rectangle(200, 200, 200, 200))

        mMask1RIO.SetTo(New MCvScalar(255, 255, 255))

        '生成背景白色,区域黑色的掩码图像2

        Dim mMask2 As New Mat(mSrc.Size, DepthType.Cv8U, 3)

        mMask2.SetTo(New MCvScalar(255, 255, 255))

        Dim mMask2RIO As New Mat(mMask2, New Rectangle(200, 200, 200, 200))

        mMask2RIO.SetTo(New MCvScalar(0, 0, 0))

        'Key图像

        Dim mKey As New Mat

        mKey = getRandUniformCh3(mSrc.Size)

        '加密

        Dim mEnc As New Mat

        'Xor 将源图像全加密

        CvInvoke.BitwiseXor(mSrc, mKey, mEnc)

        Dim mEncPart As New Mat

        'And 生成背景黑色+区域加密图像1

        CvInvoke.BitwiseAnd(mEnc, mMask1, mEncPart)

        Dim mnoEncPart As New Mat

        'And 生成背景不加密+区域黑色图像2

        CvInvoke.BitwiseAnd(mSrc, mMask2, mnoEncPart)

        Dim mResult As New Mat

        mResult = mEncPart + mnoEncPart

        '相加,去除黑色部分,生成背景不加密+区域加密的最终图像

        ImageBox2.Image = mResult

        '解密

        Dim mDecPart As New Mat

        'Xor 生成背景加密+区域解密图像1

        CvInvoke.BitwiseXor(mResult, mKey, mDecPart)

        Dim monlyDecPart As New Mat

        'And 生成背景黑色+区域解密图像2

        CvInvoke.BitwiseAnd(mDecPart, mMask1, monlyDecPart)

        Dim mnoDecPart As New Mat

        'And 生成背景不加密+区域黑色图像

        CvInvoke.BitwiseAnd(mResult, mMask2, mnoDecPart)

        Dim mDecResult As New Mat

        '相加,生成解密图像

        mDecResult = monlyDecPart + mnoDecPart

        ImageBox3.Image = mDecResult

End Sub

运行后如下图所示:

 

图2-91 图像局部加解密

以上代码仅显示了加密解密结果,有兴趣的朋友可以将每一步生成的图像显示出来进一步了解加解密过程。

2.S.3 文字纹理

将文字图像生成0和255的二值化图像,使文字部分为黑色(根据实际情况需要考虑反色),然后将文字图像和纹理图像直接相加,文字图像黑色(值为0)的部分相加后为纹理图像的颜色,文字图像白色(值为255)的部分相加后保持白色(255)。具体实现代码如下:

【代码位置:frmChapter2_S2】Button1_Click

    '灰度图像,以指定图像作为文字纹理

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim msrc As New Mat("c:\learnEmgucv\lena.jpg", ImreadModes.Grayscale)

        ImageBox1.Image = msrc

        '文字文件

        Dim mwatermark As New Mat("c:\learnEmgucv\watermark.jpg", ImreadModes.Grayscale)

        ImageBox2.Image = mwatermark

        Dim mmask As New Mat

        '二值化并反色:将文字部分变为黑色0

        CvInvoke.Threshold(mwatermark, mmask, 0, 255, ThresholdType.BinaryInv)

        Dim result As New Mat

        result = msrc + mmask

        ImageBox3.Image = result

End Sub

运行后如下图所示:

 

图2-92 灰度图像的文字增加纹理

如果是彩色图像,那么先将三个通道分解出来,分别与文字的二值化图像相加,最后再合并。具体实现代码如下:

【代码位置:frmChapter2_S2】Button2_Click

    '彩色图像,以指定图像作为文字纹理

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Dim msrc As New Mat("c:\learnEmgucv\lena.jpg", ImreadModes.Color)

        ImageBox1.Image = msrc

        '文字文件

        Dim mwatermark As New Mat("c:\learnEmgucv\watermark.jpg", ImreadModes.Grayscale)

        ImageBox2.Image = mwatermark

        Dim mmask As New Mat

        '二值化并反色:将文字部分变为黑色0

        CvInvoke.Threshold(mwatermark, mmask, 0, 255, ThresholdType.BinaryInv)

        '分解每个通道

        Dim mchanel3() As Mat

        mchanel3 = msrc.Split()

        '每个通道计算后再合并

        Dim mv As New VectorOfMat

        For i As Integer = 0 To mchanel3.Length - 1

            Dim msingle As New Mat

            msingle = mchanel3(i) + mmask

            mv.Push(msingle)

        Next

        Dim result As New Mat

        CvInvoke.Merge(mv, result)

        ImageBox3.Image = result

End Sub

运行后如下图所示:

 

图2-93 彩色图像的文字增加纹理

2.S.4 图像水印

将水印文件二值化后,与源文件相加,即可得到相应的水印图像。具体实现代码如下:

【代码位置:frmChapter2_S2】Button3_Click

    '图像水印

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

        Dim msrc As New Mat("c:\learnEmgucv\lena.jpg", ImreadModes.Grayscale)

        ImageBox1.Image = msrc

        '水印文件,与源图像大小相同

        Dim mwatermark As New Mat("c:\learnEmgucv\watermark.jpg", ImreadModes.Grayscale)

        ImageBox2.Image = mwatermark

        CvInvoke.Threshold(mwatermark, mwatermark, 0, 255, ThresholdType.Binary)

        Dim mendwatermark As New Mat

        '相加

        'mwatermark0的元素会将最后结果mendwatermark中对应位置的元素保持不变

        'mwatermark255的元素会将最后结果mendwatermark中对应位置的元素设置为255

        mendwatermark = mwatermark + msrc

        ImageBox3.Image = mendwatermark

    End Sub

运行后如下图所示:

 

图2-94 图像增加水印

除了直接相加外,还可以指定水印图像和源图像的权重再相加。

【代码位置:frmChapter2_S2】Button4_Click

    '图像水印

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

        Dim msrc As New Mat("c:\learnEmgucv\lena.jpg", ImreadModes.Grayscale)

        ImageBox1.Image = msrc

        '水印文件,与源图像大小相同

        Dim mwatermark As New Mat("c:\learnEmgucv\watermark.jpg", ImreadModes.Grayscale)

        ImageBox2.Image = mwatermark

        CvInvoke.Threshold(mwatermark, mwatermark, 0, 255, ThresholdType.Binary)

        Dim mendwatermark As New Mat

        'AddWeighted指定权重系数

        Dim mendwatermark2 As New Mat

        CvInvoke.AddWeighted(msrc, 0.4, mwatermark, 0.2, 0, mendwatermark2)

        ImageBox3.Image = mendwatermark2

End Sub

运行后如下图所示:

图2-95 图像增加水印

彩色图像水印仍然采取分解图像通道,分别处理后再合并的做法:

【代码位置:frmChapter2_S2】Button5_Click

    '彩色图像水印

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click

        Dim msrc As New Mat("c:\learnEmgucv\lena.jpg", ImreadModes.Color)

        ImageBox1.Image = msrc

        '水印文件,与源图像大小相同

        Dim mwatermark As New Mat("c:\learnEmgucv\watermark.jpg", ImreadModes.Grayscale)

        ImageBox2.Image = mwatermark

        CvInvoke.Threshold(mwatermark, mwatermark, 0, 255, ThresholdType.Binary)

        '分解每个通道

        Dim mchanel3() As Mat

        mchanel3 = msrc.Split()

        '每个通道计算后再合并

        Dim mv As New VectorOfMat

        For i As Integer = 0 To mchanel3.Length - 1

            Dim msingle As New Mat

            msingle = mchanel3(i) + mwatermark

            mv.Push(msingle)

        Next

        Dim result As New Mat

        CvInvoke.Merge(mv, result)

        ImageBox3.Image = result

End Sub

运行后如下图所示:

 

图2-96 彩色图像增加水印

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

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

相关文章

【区块链+金融服务】中国银联区块链可信存证服务 | FISCO BCOS应用案例

随着金融行业信息化的快速推进,“互联网 金融”业务产生了海量的电子数据。例如,截止到 2022 年第二季度, 全国累计信用卡发卡数量约 8.07 亿张,累计银行卡应偿信贷余额为 8.66 万亿元,累计信用卡逾期半年未尝信贷 总…

盲盒抽奖源码

介绍: 功能上还可以,商品和盲盒可以在你程序里添加,设置概率等!! 新盲盒星球抽奖商城手机网站源码 随机开箱抢购 代码有点大,三百多M。 教程搭建很简单,基本10分钟搭建一套,可一个服务器搭建多套,只要你…

云计算实训31——playbook(剧本)基本应用、playbook常见语法、playbook和ansible操作的编排

playbook(剧本): 是ansible⽤于配置,部署,和管理被控节点的剧本。⽤ 于ansible操作的编排。 使⽤的格式为yaml格式 一、YMAL格式 以.yaml或.yml结尾 ⽂件的第⼀⾏以 "---"开始,表明YMAL⽂件的开始(可选的) 以#号开头为注释 列表中的所有成员都开始于…

不能使用乘除法、for、while、if、else、switch、case求1+2+3+...+n

求123...n_牛客题霸_牛客网 (nowcoder.com) 描述 求123...n&#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句&#xff08;A?B:C&#xff09;。 数据范围&#xff1a; 0<n≤2000<n≤200 进阶&#xff1a; 空间复杂度 O(1)O(…

深度相机与红外光相机+摄像头RTSP协议

0、绪论 一般而言&#xff0c;从深度信息的角度考虑相机&#xff0c;相机可以分为&#xff1a;单目&#xff0c;双目&#xff0c;RGB-D相机&#xff1b;单目或者双目相机都是通过被动的接收信息之后通过算法解算得到图片中的深度信息&#xff0c;​ RGB-D相机是主动式的&#…

本地私有化部署PDF处理神器Stirling PDF并实现无公网IP远程在线访问

文章目录 前言1. 安装Docker2. 本地安装部署StirlingPDF3. Stirling-PDF功能介绍4. 安装cpolar内网穿透5. 固定Stirling-PDF公网地址 前言 本篇文章我们将在Linux上使用Docker在本地部署一个开源的PDF工具——Stirling PDF&#xff0c;并且结合cpolar的内网穿透实现公网随时随…

通过共享目录上传后门

本文来自无问社区&#xff0c;更多实战内容可前往查看http://www.wwlib.cn/index.php/artread/artid/13337.html 操作步骤 枚举目标主机开启的共享服务信息&#xff1a;10.0.0.6 smbclient -L //10.0.0.6 -U spotWARNING: The "syslog" option is deprecated Ente…

【数据结构】关于Java对象比较,以及优先级队列的大小堆创建你了解多少???

前言&#xff1a; &#x1f31f;&#x1f31f;Hello家人们&#xff0c;这期讲解对象的比较&#xff0c;以及优先级队列堆&#xff0c;希望你能帮到屏幕前的你。 &#x1f308;上期博客在这里&#xff1a;http://t.csdnimg.cn/MSex7 &#x1f308;感兴趣的小伙伴看一看小编主页&…

LeetCode --- 410周赛

题目列表 3248. 矩阵中的蛇 3249. 统计好节点的数目 3250. 单调数组对的数目 I 3251. 单调数组对的数目 II 一、矩阵中的蛇 只要按照题目要求模拟即可&#xff0c;代码如下 class Solution { public:int finalPositionOfSnake(int n, vector<string>& commands…

9 算术、关系、逻辑、赋值、位操作、三元运算符及其优先级

目录​​​​​​​ 1 运算符基础 1.1 什么是运算符 1.2 什么是表达式 1.3 左操作数和右操作数 1.4 运算符分类 1.4.1 按照操作数个数分类 1.4.2 按照功能分类 1.5 如何掌握运算符 2 算术运算符 2.1 正号和负号 2.2 加、减、乘、除 2.3 取模&#xff08;取余&#…

Git的使用-初级

Git 主要可以使用的远程仓库有 Github &#xff0c;Gitee 如果在国内建议使用 Gitee 比较快 从远程仓库下载工程 在安装好了 Git 后&#xff0c;我们右键单击一个本地的文件夹作为下载的目的地&#xff0c;选择 Git Bash Here 便可以通过 Linux 命令行的形式操作 Git Linux…

Redis的基本概念和使用

目录 一、Redis简介 1、NOSQL 2、NOSQL和关系型数据库比较 3、主流的NOSQL产品 4、什么是Redis 5、启动Redis 二、Redis基本操作 1、大概操作 三、 Redis 数据类型&#xff08;5种常用&#xff09; 1、redis 数据存储格式 2、String 3、hash 4、list 5、Set 6、…

【Linux入门】Linux常见指令

目录 前言 一、Linux基本指令 1.ls指令 2.pwd命令 3.cd 指令 4.touch指令 5.mkdir指令 6.rmdir指令 && rm 指令 7.man指令 8.cp指令 9.mv指令 10.cat 11.date 12.top 13.shutdown-关机 14.重要的几个热键 二、Linux扩展指令 总结 前言 Linux指令是在…

自学编程从哪个语言入手比较好?

自学编程时选择哪个语言作为起点&#xff0c;仍然取决于你的个人兴趣、学习目标和职业规划。希望以下建议可以帮到你。 Python&#xff1a; 如果你对数据分析、机器学习、人工智能、Web 开发或自动化脚本编写等领域感兴趣&#xff0c;Python 是一个非常好的起点。它的语法简洁…

Charles 抓包工具的使用

Charles 是一个网络抓包工具&#xff0c;我们可以用它抓取 APP 运行过程中产生的所有请求内容和响应内容&#xff0c;这和在浏览器开发者工具的 Network 面板中看到网页产生的内容是一样的道理 Charles , Fiddler 等都是非常强大的 HTTP 抓包软件&#xff0c;功能基本类似&…

网站配置了https证书,但浏览器访问时却访问了http

是由于缺少强制将 HTTP 请求重定向到 HTTPS 的规则 # HTTP 到 HTTPS 重定向配置 server {listen 80;server_name www.xlqd.site xlqd.site;return 301 https://$host$request_uri; } # 那么你原来的server块就要删除 listen 80;

Linux系统之部署轻量级Markdown文本编辑器

Linux系统之部署轻量级Markdown文本编辑器 一、项目介绍1.1 项目简介1.2 使用方法 二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查系统版本3.2 检查系统内核版本3.3 检查软件源 四、安装Apache24.1 安装Apache2软件4.2 启动apache2服务4.3 查看ap…

【Nginx】Nginx 安装(平滑升级和回滚)

一、 Nginx 概述 Nginx 介绍 Nginx &#xff1a; engine X &#xff0c; 2002 年开发&#xff0c;分为社区版和商业版 (nginx plus ) 2019 年 3 月 11 日 F5 Networks 6.7 亿美元的价格收购 Nginx 是免费的、开源的、高性能的 HTTP 和反向代理服务器、邮件代理服务器、以…

【word】修改图名/表名/公式编号后快速更新交叉引用的内容;交叉引用的字体不跟随正文如何解决

本文解决两个问题&#xff0c;不是什么特别正规的方法&#xff0c;主打一个迅速且通用。 问题描述 修改图名/表名/方程编号后快速更新交叉引用的内容 假设我们现在word文档中某处用了交叉引用。显然&#xff0c;图 1两个字颜色更深&#xff0c;就是我交叉引用的地方。 由于某…

贝莱德与摩根大通的最新季度持仓分析

近期&#xff0c;华尔街的两大投资巨头贝莱德和摩根大通公布了其2024年第二季度的13F报告&#xff0c;揭示了他们在投资组合上的最新动向。通过分析这些持仓数据&#xff0c;我们可以更清楚地了解这些顶级投资机构的投资策略和市场偏好。 贝莱德的科技巨头与能源投资 根据贝莱…