JAVA爬虫系列

目录

准备工作

yml

1.入门程序(获取到静态页面)

2.HttpClient---Get

2.1 修改成连接池

3.HttpClient---Get带参数

3.1 修改成连接池

4.HttpClient---Post

4.1 修改成连接池

5.HttpClient---Post带参数

6.HttpClient-连接池

7.设置请求信息

8.jsoup介绍.

9.jsoup解析url

10.jsoup解析字符串

11.jsoup解析文件

12.所有dom方式获取元素

13.元素中获取数据


准备工作

导入依赖

 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.2</version></dependency>

yml

logging:level:root: infocom.lrm: debug

1.入门程序(获取到静态页面)

package com.itheima.reggie.utils;import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.IOException;/*** @Author lpc**/
public class CrawlerFirst {public static void main(String[] args) throws Exception {//1.打开浏览器,创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();//2.输入网址,发起get请求创建HttpGet对象HttpGet httpGet = new HttpGet("https://www.itcast.cn/");//3.按回车,发起请求,返回响应,使用Httpclient对象发起请求CloseableHttpResponse response = httpClient.execute(httpGet);//4.解析响应,获取数据//判斯状态码是否是200if (response.getStatusLine().getStatusCode()==200){HttpEntity httpEntity = response.getEntity();//获取前端静态页面String content = EntityUtils.toString(httpEntity,"utf8");System.out.println(content);}}
}

2.HttpClient---Get

package com.itheima.reggie.utils;import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.IOException;/*** @Author lpc* @Date 2024 03 12 00 23**/
public class CrawlerFirst {public static void main(String[] args){//1.打开浏览器,创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();//2.输入网址,发起get请求创建HttpGet对象HttpGet httpGet = new HttpGet("https://www.itcast.cn/");//3.按回车,发起请求,返回响应,使用Httpclient对象发起请求CloseableHttpResponse response = null;try {response = httpClient.execute(httpGet);//4.解析响应,获取数据//判斯状态码是否是200if (response.getStatusLine().getStatusCode()==200){HttpEntity httpEntity = response.getEntity();//获取前端静态页面String content = EntityUtils.toString(httpEntity,"utf8");System.out.println(content.length());}} catch (IOException e) {throw new RuntimeException(e);}finally {try {//关闭responseresponse.close();} catch (IOException e) {throw new RuntimeException(e);}try {//关闭浏览器httpClient.close();} catch (IOException e) {throw new RuntimeException(e);}}}
}

2.1 修改成连接池

package org.example;import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;import java.io.IOException;/*** @Author lpc* @Date 2024 03 14 09 38**/
public class Test {public static void main(String[] args) {//创建连接池PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();//设置最大连接数cm.setMaxTotal(100);//设置每个主机的最大连接数cm.setDefaultMaxPerRoute(10);//使用连接池管理器发起请求doGet(cm);}public static void doGet(PoolingHttpClientConnectionManager cm){//不是每次创建新的httpClient,而是从连接池中获取HttpClient对象CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();HttpGet httpGet = new HttpGet("http://www.itcast.cn");CloseableHttpResponse response=null;try {response = httpClient.execute(httpGet);if (response.getStatusLine().getStatusCode()==200){String content = EntityUtils.toString(response.getEntity(), "utf8");System.out.println(content.length());}} catch (IOException e) {throw new RuntimeException(e);}finally {if (response!=null){try {response.close();} catch (IOException e) {throw new RuntimeException(e);}//不能关闭,由连接池管理//  httpClient.close();}}}
}

3.HttpClient---Get带参数

package org.example;import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.net.URISyntaxException;/*** @Author lpc* @Date 2024 03 13 20 44**/
public class Test2 {public static void main(String[] args) throws Exception {//1.打开浏览器CloseableHttpClient httpClient = HttpClients.createDefault();//设置请求地址是: http://yun.itheima.com/search?keys=Java//带参数的get方法设置//创建URIBuilderURIBuilder uriBuilder = new URIBuilder("http://yun.itheima.com/search");//设置参数  可以设置多个uriBuilder.setParameter("keys","Java");//2.输入网址,发起get请求创建HttpGet对象HttpGet httpGet = new HttpGet(uriBuilder.build());System.out.println("发起请求的信息"+httpGet);//3.CloseableHttpResponse response=null;try {response = httpClient.execute(httpGet);if (response.getStatusLine().getStatusCode()==200){HttpEntity httpEntity = response.getEntity();//String s = EntityUtils.toString(httpEntity, "utf8");System.out.println(s);}} catch (IOException e) {throw new RuntimeException(e);}finally {try {response.close();} catch (IOException e) {throw new RuntimeException(e);}try {httpClient.close();} catch (IOException e) {throw new RuntimeException(e);}}}
}

3.1 修改成连接池

4.HttpClient---Post

package org.example;import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.IOException;/*** @Author lpc* @Date 2024 03 13 20 59**/
public class Post {public static void main(String[] args) {//1.打开浏览器CloseableHttpClient httpClient = HttpClients.createDefault();//2.输入网址,发起get请求创建HttpGet对象//HttpGet httpGet = new HttpGet("https://www.itcast.cn/");HttpPost httpPost = new HttpPost("https://www.itcast.cn/");//3.CloseableHttpResponse response=null;try {// response = httpClient.execute(httpGet);response = httpClient.execute(httpPost);if (response.getStatusLine().getStatusCode()==200){HttpEntity httpEntity = response.getEntity();//String s = EntityUtils.toString(httpEntity, "utf8");System.out.println(s);}} catch (IOException e) {throw new RuntimeException(e);}finally {try {response.close();} catch (IOException e) {throw new RuntimeException(e);}try {httpClient.close();} catch (IOException e) {throw new RuntimeException(e);}}}
}

4.1 修改成连接池

package org.example;import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;import java.io.IOException;/*** @Author lpc* @Date 2024 03 14 10 02**/
public class Postl {public static void main(String[] args){//创建连接池管理器PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();//设置最大连接数cm.setMaxTotal(100);//设置每个主机最大连接数cm.setDefaultMaxPerRoute(10);//发起请求doPost(cm);}private static void doPost(PoolingHttpClientConnectionManager cm) {//不是每次创建新的httpClient,而是从连接池中获取HttpClient对象CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();//2.输入网址 发起Post请求HttpPost httpPost = new HttpPost("http://yun.itheima.com/search");CloseableHttpResponse response=null;try {response = httpClient.execute(httpPost);if (response.getStatusLine().getStatusCode()==200){String s = EntityUtils.toString(response.getEntity());System.out.println(s.length());}} catch (IOException e) {throw new RuntimeException(e);}finally {if (response!=null){try {response.close();} catch (IOException e) {throw new RuntimeException(e);}}//不用关闭,由连接池管理// httpClient.close();}}
}

5.HttpClient---Post带参数

package org.example;import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;/*** @Author lpc* @Date 2024 03 13 20 59**/
public class Post {public static void main(String[] args) throws Exception {//1.打开浏览器CloseableHttpClient httpClient = HttpClients.createDefault();//2.输入网址 发起Post请求HttpPost httpPost = new HttpPost("http://yun.itheima.com/search");//声明List集合,封装表单中的参数List<NameValuePair> params =new ArrayList<NameValuePair>();//设置请求地址是: http://yun.itheima.com/search?keys=Javaparams.add(new BasicNameValuePair("keys","Java"));//创建表单的Entity对象,第一个参数就是封装的表单数据,第二个参数就是编码UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(params,"utf8");//设置表单的Entity对象到Post请求中httpPost.setEntity(urlEncodedFormEntity);CloseableHttpResponse response=null;try {// response = httpClient.execute(httpGet);response = httpClient.execute(httpPost);if (response.getStatusLine().getStatusCode()==200){HttpEntity httpEntity = response.getEntity();//String s = EntityUtils.toString(httpEntity, "utf8");System.out.println(s);}} catch (IOException e) {throw new RuntimeException(e);}finally {try {response.close();} catch (IOException e) {throw new RuntimeException(e);}try {httpClient.close();} catch (IOException e) {throw new RuntimeException(e);}}}
}

6.HttpClient-连接池

如果每次请求都要创建HttpClient,会有频繁创建和销毁的问题,可以使用连接池来解决这个问题。·
测试以下代码,并断点查看每次获取的HttpClient都是不一样的。。

package org.example;import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;import java.io.IOException;/*** @Author lpc* @Date 2024 03 14 09 38**/
public class Test {public static void main(String[] args) {//创建连接池PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();//设置最大连接数cm.setMaxTotal(100);//设置每个主机的最大连接数cm.setDefaultMaxPerRoute(10);//使用连接池管理器发起请求doGet(cm);}public static void doGet(PoolingHttpClientConnectionManager cm){//不是每次创建新的httpClient,而是从连接池中获取HttpClient对象CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();HttpGet httpGet = new HttpGet("http://www.itcast.cn");CloseableHttpResponse response=null;try {response = httpClient.execute(httpGet);if (response.getStatusLine().getStatusCode()==200){String content = EntityUtils.toString(response.getEntity(), "utf8");System.out.println(content.length());}} catch (IOException e) {throw new RuntimeException(e);}finally {if (response!=null){try {response.close();} catch (IOException e) {throw new RuntimeException(e);}//不能关闭,由连接池管理//  httpClient.close();}}}
}

7.设置请求信息
 

package org.example;import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;import java.io.IOException;/*** @Author lpc* @Date 2024 03 14 09 38**/
public class Test {public static void main(String[] args) {//创建连接池PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();//设置最大连接数cm.setMaxTotal(100);//设置每个主机的最大连接数cm.setDefaultMaxPerRoute(10);//使用连接池管理器发起请求doGet(cm);}public static void doGet(PoolingHttpClientConnectionManager cm){//不是每次创建新的httpClient,而是从连接池中获取HttpClient对象CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();HttpGet httpGet = new HttpGet("http://www.itcast.cn");//配置请求信息RequestConfig config=RequestConfig.custom().setConnectTimeout(1000) //创建连接的最长时间,单位是毫秒.setConnectionRequestTimeout(500)//设置获取连接的最长时间.setSocketTimeout(10*1000)//设置数据传输的最长时间.build();//给请求设置请求信息httpGet.setConfig(config);CloseableHttpResponse response=null;try {response = httpClient.execute(httpGet);if (response.getStatusLine().getStatusCode()==200){String content = EntityUtils.toString(response.getEntity(), "utf8");System.out.println(content.length());}} catch (IOException e) {throw new RuntimeException(e);}finally {if (response!=null){try {response.close();} catch (IOException e) {throw new RuntimeException(e);}//不能关闭,由连接池管理//  httpClient.close();}}}
}

8.jsoup介绍.

jsoup是一款Java 的 HTML解析器,可直接解析某个URL地址、HTML文木内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。.

jsoup 的主要功能如下:

1.从一个 URL,文件或字符串中解析HTML;

2.使用DOM或CSS选择器来查找、取出数据;

3.可操作HTML元素、属性、文本;·

依赖

<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.13.1</version>
</dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
</dependency><!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version>
</dependency><!-- lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version></dependency>

9.jsoup解析url

package jsoup;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.junit.Test;import java.net.MalformedURLException;
import java.net.URL;/*** @Author lpc* @Date 2024 03 14 10 44**/
public class jsoupTestFirst {@Testpublic void testJsoupUrl() throws Exception {//解析URL地址Document parse = Jsoup.parse(new URL("http://www.itcast.cn"), 10*1000);//获取title的内容Element title = parse.getElementsByTag("title").first();System.out.println(title.text());}}

10.jsoup解析字符串

package jsoup;import org.apache.commons.io.FileUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.junit.Test;import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;/*** @Author lpc* @Date 2024 03 14 10 44**/
public class jsoupTestFirst {@Testpublic void testString() throws Exception {//使用工具读取文件,获取字符串String file = FileUtils.readFileToString(new File("D:\\file.html"), "utf8");//解析字符串Document document = Jsoup.parse(file);//获取title的内容String title = document.getElementsByTag("title").first().text();System.out.println(title);}}

11.jsoup解析文件

@Testpublic void testFile() throws Exception {//解析文件Document parse = Jsoup.parse(new File("D:\\file.html"), "utf8");String title = parse.getElementsByTag("title").first().text();System.out.println(title);}

12.所有dom方式获取元素

 @Testpublic void testDom() throws Exception {//解析文件,获取Document对象Document parse = Jsoup.parse(new File("D:\\file.html"), "utf8");//获取元素//1.//Element elementById = parse.getElementById("popupMenu");//2.//Element elementById=parse.getElementsByTag("span").first();//3.// Elements elementById = parse.getElementsByClass("city_nav");//4.Elements elementById=parse.getElementsByAttribute("abc");System.out.println(elementById.text());}

13.元素中获取数据

 @Testpublic void testData() throws Exception {//解析文件Document parse = Jsoup.parse(new File("D:\\file.html"), "utf8");//根据id获取元素Element elementById = parse.getElementById("test");System.out.println(elementById);//1.从元素中获取idString str1=elementById.id();System.out.println(str1);//2.从元素中获取classNameString str2=elementById.className();System.out.println(str2);//3.从元素获取attr的值String str3=elementById.attr("id");System.out.println(str3);//4。从元素中获取所有属性Attributes attributes = elementById.attributes();System.out.println(attributes);//5.从元素中获取文本内容String str4=elementById.text();System.out.println(str4);}

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

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

相关文章

蓝桥真题——-小蓝重组质数(全排列和质数判断)

小蓝有一个十进制正整数n&#xff0c;其不包含数码0&#xff0c;现在小蓝可以任意打乱数码的顺序&#xff0c;小蓝想知道通过打乱数码顺序,n 可以变成多少个不同的质数。 #include <iostream> #include<bits/stdc.h> using namespace std; bool isprime(int n) {if…

讯鹏Andon系统解决方案帮助工厂打造生产过程透明化

在现代制造业中&#xff0c;高效透明的生产管理模式对企业的发展至关重要。Andon系统作为一种解决方案&#xff0c;通过软硬件结合的方式&#xff0c;为企业打造了高效透明的生产管理模式&#xff0c;帮助企业实现生产过程的优化和管理的可视化。 Andon系统的软硬件结合为企业提…

swiftUI中的可变属性和封装

swiftUI的可变属性 关于swift中的属性&#xff0c;声明常量使用let &#xff0c; 声明变量使用var 如果需要在swiftUI中更改视图变化那么就需要在 var前面加上state 。 通过挂载到state列表 &#xff0c;从而让xcode找到对应的改变的值 例子&#xff1a; import SwiftUIstruc…

【兆易创新GD32H759I-EVAL开发板】图像处理加速器(IPA)的应用

GD32H7系列的IPA&#xff08;Image Pixel Accelerator&#xff09;是一个高效的图像处理硬件加速器&#xff0c;专门设计用于加速图像处理操作&#xff0c;如像素格式转换、图像旋转、缩放等。它的优势在于能够利用硬件加速来实现这些操作&#xff0c;相比于软件实现&#xff0…

BLE---Service interoperability requirements

0 Preface/Foreword references: Bluetooth core specification V5.4 definition&#xff1a;定义 declaration&#xff1a;声明 1 service definition&#xff08;服务定义&#xff09; 服务定义&#xff08;definition&#xff09;&#xff1a;必须包含服务声明(declara…

【JavaScript】JavaScript 运算符 ① ( 运算符分类 | 算术运算符 | 浮点数 的 算术运算 精度问题 )

文章目录 一、JavaScript 运算符1、运算符分类2、算术运算符3、浮点数 的 算术运算 精度问题 一、JavaScript 运算符 1、运算符分类 在 JavaScript 中 , 运算符 又称为 " 操作符 " , 可以实现 赋值 , 比较 > < , 算术运算 -*/ 等功能 , 运算符功能主要分为以下…

MATLAB中visdiff函数用法

目录 语法 说明 示例 比较两个文件 比较两个文件并指定类型 发布比较报告 visdiff函数的功能是比较两个文件或文件夹。 语法 visdiff(filename1,filename2) visdiff(filename1,filename2,type) comparison visdiff(___) 说明 visdiff(filename1,filename2) 打开比较工…

海格里斯HEGERLS托盘搬运机器人四向车引领三维空间集群设备柔性运维

随着市场的不断迅猛发展变化&#xff0c;在物流仓储中&#xff0c;无论是国内还是海外&#xff0c;都对托盘式解决方案需求量很大。顾名思义&#xff0c;托盘式解决方案简单理解就是将产品放置在托盘上进行存储、搬运和拣选。 面对托盘式方案需求&#xff0c;行业中常见的方案是…

面试常问,ADC,PWM

一 PWM介绍 pwm全名&#xff08;Pulse Width Modulation&#xff09;&#xff1a;脉冲宽度调制 在具有惯性的系统中&#xff0c;可以通过对一系列脉冲的宽度进行调制&#xff0c;来等效地获得所需要的模拟参量&#xff0c;常应用于电机控速等领域。PWM一定程度上是数字到模拟…

Java使用Selenium实现自动化测试以及全功能爬虫

前言 工作中需要抓取一下某音频网站的音频&#xff0c;我就用了两个小时学习弄了一下&#xff0c;竟然弄出来&#xff0c;这里分享记录一下。 springboot项目 Selenium Java使用Selenium实现自动化测试以及全功能爬虫 前言1 自动化测试2 java中集成Selenium3 添加浏览器驱动4…

【linux】进程(一)

先看预备知识&#xff0c;对本篇文章更有帮助。 目录 进程概念&#xff1a;了解动态运行的概念&#xff1a;进程的本身内部属性&#xff1a;启动进程&#xff1a;关闭进程&#xff1a; 如何创建进程&#xff1a;进程状态&#xff1a;直接看进程状态&#xff1a;僵尸进程与孤儿…

llamma笔记:部署Llama2

1 申请Llama2 许可 Download Llama (meta.com) 地址似乎不能填中国 1.1 获取url 提交申请后&#xff0c;填的那个邮箱会受到一封meta发来的邮件&#xff0c;打码部分的url&#xff0c;之后会用得上 2 ubuntu/linux 端部署Llama2 2.1 git clone Llama2的github 仓库 bash g…

git基础命令(四)之分支命令

目录 基础概念git branch-r-a-v-vv-avv重命名分支删除分支git branch -h git checkout创建新的分支追踪远程分支同时切换到该分支创建新的分支并切换到该分支撤销对文件的修改&#xff0c;恢复到最近的提交状态&#xff1a;丢弃本地所有修改git checkout -h git merge合并指定分…

ASP.NET Mvc+FFmpeg+Video实现视频转码

目录 首先&#xff0c;做了视频上传的页面&#xff1a; FFmpeg&#xff1a;视频转码 FFmpegHelper工作类&#xff1a; 后台控制器代码&#xff1a; 前端视图代码&#xff1a; 参考文章&#xff1a; 首先&#xff0c;做了视频上传的页面&#xff1a; 借鉴了这篇文章 ASP.…

D. Tandem Repeats?

思路&#xff1a;首先我们要枚举长度&#xff0c;然后从前往后遍历&#xff0c;判断是否存在改长度的重复串。 代码&#xff1a; void solve(){string s;cin >> s;int n s.size();int ans 0;for(int len n / 2;len > 1;len --){int t 0;for(int i 0;i len <…

TSINGSEE青犀AI智能分析网关V4酿酒厂安全挂网AI检测算法

在酿酒行业中&#xff0c;安全生产一直是企业经营中至关重要的一环。为了确保酒厂生产过程中的安全&#xff0c;TSINGSEE青犀AI智能分析网关V4的安全挂网AI检测算法发挥了重要作用。 TSINGSEE青犀AI智能分析网关V4的安全挂网检测算法是针对酒厂里酒窖挂网行为进行智能检测与识…

个人简历主页搭建系列-03:Hexo+Github Pages 介绍,框架配置

今天的更新内容主要是了解为什么选择这个网站搭建方案&#xff0c;以及一些前置软件的安装。 Why Hexo? 首先我们了解一下几种简单的网站框架搭建方案&#xff0c;看看对于搭建简历网站的需求哪个更合适。 在 BuiltWith&#xff08;网站技术分析工具&#xff09;上我们可以…

【矩阵】73. 矩阵置零【中等】

矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 解题思路 1、…

SpringCloud Bus 消息总线

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第八篇&#xff0c;即介绍 Bus 消息总线。 二、概述 2.1 遗留的问题 在上一篇文章的最后&#xff0c;我…

汇编语言(Assemble Language)学习笔记(更新中)

零.学习介绍和使用工具 【1】我们使用的教材是机械工业出版社的《32位汇编语言程序设计第二版》。 指导老师是福州大学的倪一涛老师。 这门课程教授的是Intel 80*86系列处理器的32位汇编。我们现在的处理器都兼容这个处理器。 这篇博客只是大二下汇编语言学习的总结&#xff…