JavaWeb 速通Cookie

目录

一、关于base标签

        1.引入 : 

        2.介绍 : 

        3.实例 : 

        4.细节 : 

二、Cookie的引入

        1.会话技术 : 

            1° 什么是会话技术?

            2° 会话技术用于解决什么问题?

        2.Cookie介绍

            1° Cookie有什么用?

            2° Cookie通讯机制

三、Cookie的基本使用

        1.创建Cookie对象并保存到浏览器 : 

        2.服务器端读取浏览器保存的Cookie : 

四、Cookie的应用实例

        1.关于“JSESSIONID”的说明 : 

        2.读取指定Cookie :

        3.修改Cookie : 

五、Cookie的生命周期

        1.基本介绍 : 

        2.setMaxAge(int expiry)方法 : 

        3. 应用实例 : 

六、Cookie有效路径

        1.规则 : 

        2.应用实例 : 

        3.cookie使用细节 : 


一、关于base标签

        1.引入 : 

                有两个html文件,位置如下 : 

                demo1.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>demo1</title>
</head>
<body><a href="d1/d2/demo2.html" target="_self">点我到demo2.html</a>
</body>
</html>

                demo2.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>demo2</title>
</head>
<body><a href="../../demo1.html">点我去demo1.html~</a>
</body>
</html>

                运行效果如下GIF图 : 

                1° 页面所有的相对路径,在 默认情 况下 ,都会参考当前浏览器地址栏的路径 http://IP:port/工程名/(也包含目录结构)  + 资源 来进行跳转。

                当Web工程中的文件数目较多时,频繁地使用相对路径会造成“工程路径复杂”的问题。
                解决方法——如果需要指定页面相对路径参考的的路径,可以使用base标签来指定。

        2.介绍 : 

         base标签是 HTML 语言中的基准网址标记, <base/>是一个单标签,位于网页头部文件的head标签内
           一个页面最多只能使用一个 base 元素,用来提供一个指定的默认目标,是一种表达路 径和连接网址的标记。
           常见的 url 路径形式分别有相对路径与绝对路径,如果 base 标签指定了目标, 浏览器 将通过这个目标来解析当前文档中的所有相对路径 ,包括的标签有( a img link,  form
           也就是说,浏览器解析时会在路径前加上 base 给的目标,而页面中的相对路径也都转 换成了绝对路径。使用了 base 标签就应带上 href 属性和 target 属性。

        3.实例 : 

                demo1.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>demo1</title><!-- base标签的href属性值最后必须添加斜杠/,否则无法拼接。Δ需要启动Tomcat服务!--><base href="http://localhost:8080/WebPath/"/>
</head>
<body><a href="d1/d2/demo2.html" target="_self">点我到demo2.html</a>
</body>
</html>

                demo2.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>demo2</title><base href="http://localhost:8080/WebPath/"/><!-- base标签的href属性值最后必须添加斜杠/,否则无法拼接。 -->
</head>
<body><a href="demo1.html">点我去demo1.html~</a>
</body>
</html>

                运行结果 : 

        4.细节 : 

        <base/>标签也可以应用于“请求转发”和“请求重定向”。PS : <base/>标签的href属性值最后加不加/,对实际作用效果影响很大。

        实际开发中,使用“绝对路径”。

        关于URL开头的"/",若/被服务器端解析,/会被解析成" /Web工程名/ "若/被浏览器端(客户端)解析,/会被解析成" http://IP[域名]:port/ "

            PS : 如果服务器端解析的URL开头没写/,默认隐含/;如果浏览器端解析的URL开头没有/,默认会以浏览器地址栏中的" http://IP[域名]:port/Web工程目录 "来和访问的资源进行拼接。

        在JavaWeb中,URL路径最后带"/" 和 不带"/"是两回事;URL最后带/表示访问的是一个路径,URL最后不带/表示访问的是一个资源

        请求重定向中,resp.sendRedirect("URL"); 语句虽然是在服务器端被执行,但解析URL是在浏览器端进行的。PS : 推荐使用this.getServletContext.getContextPath()方法来动态地获取Web工程路径,可以使URL配置更加灵活。


二、Cookie的引入

        1.会话技术 : 

            1° 什么是会话技术?

        会话可简单理解为:用户打开一个浏览器,点击多个超链接,访问Web服务器的多个web资源,然后关闭浏览器,整个过程称之为一个会话。会话是在浏览器端(客户端)和服务器端之间进行的。

            2° 会话技术用于解决什么问题?

        每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会 产生一些数据 ,服 务器会设法为 每个用户 保存各自的这些数据。
        eg : 多个用户分别点击购物网站的超链接,通过一个购物servlet各自购买了一个商品,服务器应该想办法把每一个用户购买的商品的信息保存在各自的地方,以便于这些用户点结账时,调用结帐servlet,结帐servlet 可以得到用户各自购买的商品信息为用户结帐。

        2.Cookie介绍

            1° Cookie有什么用?

        Cookie是客户端技术;服务器把每个用户的数据以cookie的形式写给用户各自的浏览器,当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

            2° Cookie通讯机制

                示意图如下 : 

                1> Cookie是服务器在客户端保存的用户相关信息,比如登录名,浏览记录等非敏感信息, 就可以通过cookie方式来保存.

                2> Cookie信息数据量并不大,服务器端在需要的时候可以从客户端/浏览器读取(遵循HTTP协议;req.getCookies()方法)。浏览器向服务器发送HTTP请求时,会在请求包中自动携带当前服务器域名下对应的Cookie。再次注意,Cookie是保存在浏览器端的。


三、Cookie的基本使用

        1.创建Cookie对象并保存到浏览器 : 

                CookieBaseServlet类代码如下 : 

package intro;import jakarta.servlet.ServletException;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;/*** @author : Cyan_RA9* @version : 21.0*/
public class CookieBaseServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("CookieBaseServlet's doPost is invoked");//1.创建一个Cookie对象(key是Cookie的名字,唯一)//可以创建多个Cookie对象Cookie cookie = new Cookie("username", "Cyan");Cookie cookie2 = new Cookie("platform", "CSDN");//2.将创建好的Cookie对象发送给浏览器,浏览器会将收到的Cookie信息进行保存resp.setContentType("text/html; charset=utf-8");resp.addCookie(cookie);resp.addCookie(cookie2);PrintWriter writer = resp.getWriter();writer.print("<h1>创建Cookie成功,已保存!</h1>");writer.flush();writer.close();}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}
}

                web.xml配置文件如下 : 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><servlet-name>CookieBaseServlet</servlet-name><servlet-class>intro.CookieBaseServlet</servlet-class></servlet><servlet-mapping><servlet-name>CookieBaseServlet</servlet-name><url-pattern>/cbServlet</url-pattern></servlet-mapping>
</web-app>

                运行效果 : (如下GIF图)

                HTTP响应包分析 : 

                浏览器端Cookie存储 :

        2.服务器端读取浏览器保存的Cookie : 

                ReadCookiesServlet类代码如下 : 

\package intro;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;@WebServlet(urlPatterns={"/readServlet", "/read"})
public class ReadCookiesServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("ReadCookiesServlet's doPost is invoked~\n");//获取浏览器端保存的Cookie信息Cookie[] cookies = req.getCookies();if (cookies != null && cookies.length != 0) {for (Cookie cookie : cookies) {System.out.println("cookie's name = " + cookie.getName() +",cookie's value = " + cookie.getValue());}}//给浏览器回送消息resp.setContentType("text/html; charset=utf-8");PrintWriter writer = resp.getWriter();writer.print("<h1>收到!</h1>");writer.flush();writer.close();}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}
}

                运行效果(如下GIF图 ) :  

                通过抓包,可以找到HTTP请求包中的Cookie请求头,如下图所示 : 


四、Cookie的应用实例

        1.关于“JSESSIONID”的说明 : 

        浏览器保存的Cookie信息中,JSESSIONID用于唯一标识不同的会话;不同会话,JSESSIONID不同

        当浏览器向服务器发送HTTP请求时,服务器会从HTTP请求头的Cookie信息中找到JSESSIONID,根据JSESSIONID的值来判断当前会话的客户端是哪个。

        2.读取指定Cookie :

                先编写一个可以获取Cookie信息的工具类CookieUtils.
                CookieUtils类代码如下 : 

package instance;import jakarta.servlet.http.Cookie;/*** readCookieByName方法 : 返回指定name的Cookie*/
public class CookieUtils {public static Cookie readCookieByName(String name, Cookie[] cookies) {if (null == name || "".equals(name) || null == cookies || cookies.length == 0) {return null;}for (Cookie cookie : cookies) {if (name.equals(cookie.getName())) {return cookie;}}return null;}
}

                 编写一个测试类;ReadSpecificCookieServlet类代码如下 : 

package instance;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;@WebServlet(urlPatterns={"/readSpecificCookie"})
public class ReadSpecificCookieServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Cookie cookie = new Cookie("color", "pink");resp.addCookie(cookie);Cookie[] cookies = req.getCookies();Cookie color = CookieUtils.readCookieByName("color", cookies);if (null != color) {System.out.println("Cookie's name = " + color.getName() +", Cookie's value = " + color.getValue());} else {System.out.println("Can't find that Cookie with this specific name!");}resp.setContentType("text/html; charset=utf-8");PrintWriter writer = resp.getWriter();writer.print("<h1>The task of getting specific is completed~</h1>");writer.flush();writer.close();}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}
}

                运行效果如下 : (GIF) 

        3.修改Cookie : 

                修改浏览器端保存的Cookie信息有两种方式。
                方式一 : 新创建一个同名的Cookie对象,然后通过resp.addCookie(cookie); 方法,实现Cookie新值对旧值的覆盖
                方式二 : 先获取到要修改的Cookie对象,通过cookie.setValue("..."); 方法,修改Cookie的值,然后再通过resp.addCookie的方式,以HTTP响应的方式将修改后的Cookie打回给浏览器
                ModifyCookieServlet类代码如下 : 

package instance;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;@WebServlet(urlPatterns={"/modifyCookie"})
public class ModifyCookieServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//方式一 :Cookie cookie_username = new Cookie("username", "Cyan_RA9");if (cookie_username != null) {resp.addCookie(cookie_username);}//方式二 :Cookie[] cookies = req.getCookies();String cookieName = "color";Cookie cookie = CookieUtils.readCookieByName(cookieName, cookies);if (cookie != null) {cookie.setValue("bluish_green");    //Cookie信息中不能包含空格resp.addCookie(cookie);} else {System.out.println("当前访问服务器端的浏览器,没有保存该Cookie信息!");}//在服务器端遍历Cookiesfor (Cookie c : cookies) {System.out.println("cookie's name = " + c.getName() +", cookie's value = " + c.getValue() + "\n");}resp.setContentType("text/html; charset=utf-8");PrintWriter writer = resp.getWriter();writer.print("<h1>The task of updating Cookie is completed~</h1>");writer.flush();writer.close();}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}
}

                运行效果 : (GIF) (请求头抓包时,手贱刷新了一下


五、Cookie的生命周期

        1.基本介绍 : 

        Cookie的生命周期指的是如何管理Cookie的销毁,即 Cookie 什么时候被销毁(删除)。

        2.setMaxAge(int expiry)方法 : 

        public void setMaxAge(int expiry) : 该方法可以设置cookie的最大生存时间,以秒为单位

        Δ注意事项 : 

        expiry为正值,表示cookie将在经过该值对应的秒数后过期。即,该值是cookie过期的最大生存时间,而不是cookie 的当前生存时间。

        PS : cookie过期/失效,指的是浏览器在访问服务器时,HTTP请求头中不会携带过期的cookie信息浏览器根据cookie创建的时间,计时到expiry,就认为该cookie无效

        expiry为负值,表示cookie不会被持久存储,将在Web会话的浏览器退出时被删除。默认情况下,expiry = -1(会话级别的生命周期)。

        expiry = 0,表示令cookie立刻失效,立刻被"删除"。(销毁)

        3. 应用实例 : 

                CookieServletLife类代码如下 : 

package lifetime;import instance.CookieUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;@WebServlet(urlPatterns={"cookieLife"})
public class CookieLifeServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.创建测试的cookieCookie newCookie1 = new Cookie("test1", "haha");Cookie newCookie2 = new Cookie("test2", "NB");//2.设置cookie生命周期newCookie1.setMaxAge(10);   //10s后🐔newCookie2.setMaxAge(0);    //直接🐔Cookie[] cookies = req.getCookies();Cookie test1 = CookieUtils.readCookieByName("test1", cookies);Cookie test2 = CookieUtils.readCookieByName("test2", cookies);System.out.println("test1 = " + test1);System.out.println("test2 = " + test2);//3.别忘了将cookie信息发送给浏览器if (null != test1) {resp.addCookie(newCookie1);} else {System.out.println("没有找到该cookie__test1.");}if (null != test2) {resp.addCookie(newCookie2);} else {System.out.println("没有找到该cookie__test2.");}//4.回显信息给浏览器resp.setContentType("text/html; charset=utf-8");PrintWriter writer = resp.getWriter();writer.print("<h1>The task of testing cookie's lifetime is completed~</h1>");writer.flush();writer.close();}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}
}

                运行效果 :(GIF) 


六、Cookie有效路径

        1.规则 : 

        Cookie有效路径,指的是浏览器端保存的Cookie的path属性。如下图所示 : 

         Cookie 的 path 属性可以有效的过滤哪些Cookie会被携带在HTTP请求头中发送给服务器,哪些不会。

        path属性是通过请求的URL来进行有效的过滤,规则如下——

        若cookie未设置path属性,默认是"/Application context",即Web工程路径

        当请求的URL是Web工程路径的子路径时,即比Web工程路径更具体的路径,eg : /Cookie_Demo/d1,也会携带父路径的Cookie信息。(集合的包含关系)

        cookie.setPath("......"); 方法用于设置该cookie的path属性。

        2.应用实例 : 

                CookiePathServlet类代码如下 : 

package path;import instance.CookieUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;/**若没有采用web.xml配置文件的方式配置URL,就一定不要忘记配置@WebServlet注解*/
@WebServlet(urlPatterns={"/cookiePath"})
public class CookiePathServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Cookie cookie1 = new Cookie("fruit", "grape");/*也可以通过req.getContextPath来获取工程路径*/cookie1.setPath(req.getContextPath());Cookie cookie2 = new Cookie("animal", "cat");cookie2.setPath(req.getContextPath() + "/d1");resp.addCookie(cookie1);resp.addCookie(cookie2);resp.setContentType("text/html; charset=utf-8");PrintWriter writer = resp.getWriter();writer.print("<h1>Check the cookies inside the HTTP-request-bag.</h1>");writer.flush();writer.close();}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}
}

                运行效果 : (GIF)

        3.cookie使用细节 : 

        一个Cookie只能标识一种信息,它至少含有一个标识该信息的NAME和VALUE。PS:Cookie的name和value都是String类型

        一个WEB站点可以给一个浏览器发送多个Cookie,一个浏览器也可以存储多个WEB站点提供的Cookie

        cookie的总数量没有限制,但是每个域名下的cookie数量和每个cookie的大小是有限制的(不同的浏览器一般限制不同,了解即可);总之一句话,Cookie不适合存放数据量大的信息

         注意,删除cookie时,path必须一致,否则不会删除成功

        可以通过 String string = URLEncoder.encode("string", "utf-8"); 方法来设置指定value的编码。然后再通过Cookie cookie = new Cookie("key", string); 来创建指定了value编码格式的Cookie对象。最后,通过resp.addCookie(cookie); 即可将cookie信息发送给浏览器。

            如果需要对中文Cookie进行解码,使用String value = URLDecoder.decode(value, "utf-8"); 方法。

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

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

相关文章

Pandas 的Merge函数详解

在日常工作中&#xff0c;我们可能会从多个数据集中获取数据&#xff0c;并且希望合并两个或多个不同的数据集。这时就可以使用Pandas包中的Merge函数。在本文中&#xff0c;我们将介绍用于合并数据的三个函数 merge、 merge_ordered、 merge_asofmerge merge函数是Pandas中…

如何实现对主机的立体监控?

主机监控是保证系统稳定性和性能的重要环节之一&#xff0c;那应该如何实现对主机的立体监控&#xff1f; 本期EasyOps产品使用最佳实践&#xff0c;我们将为您揭晓&#xff1a; 主机应该如何分组和管理&#xff1f; 主机监控应该关注哪些关键性指标&#xff1f; 背 景 通…

MySQL建表和增添改查

1.创建一个名为mydb的数据库 mysql> show database mydb; 查询 mysql> show database mydb; 2.创建一个学生信息表 mysql> create table mydb.student_informtion( -> student_id int UNSIGNED NOT NULL PRIMARY KEY, //非空&#xff08;不允许为空&#xff0…

FastAPI(七)应用配置

目录 一、在apps下新建文件夹config 二、新建配置文件app_conf.py 一、在apps下新建文件夹config 二、新建配置文件app_conf.py from functools import lru_cachefrom pydantic.v1 import BaseSettingsclass AppConfig(BaseSettings):app_name: str "Windows10 插件&qu…

WGS_1984_UTM、WGS_1984_Mercator坐标转化为经纬度坐标python

1、遥感影像的PROJECTION有哪些 遥感影像常见的投影类型有很多&#xff0c;具体选择哪种投影方式取决于数据的特性和使用需求。以下列举了一些常见的遥感影像投影类型&#xff1a; UTM (Universal Transverse Mercator) 投影&#xff1a;最常见的投影类型之一&#xff0c;将地…

uboot详解

uboot入口 在PC机上引导程序一般由BIOS开始执行&#xff0c;然后读取硬盘中位于MBR(Main Boot Record&#xff0c;主引导记录)中的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。然而在嵌入式系统中通常没有像BIOS那样的固件程序&#xff0c;因此整个系统的加载启动…

Unity之ShaderGraph 节点介绍 UV节点

UV节点 Flipbook&#xff08;翻页或纹理帧动画&#xff09; Polar Coordinates&#xff08;将输入 UV 的值转换为极坐标。&#xff09; Radial Shear&#xff08;径向剪切变形&#xff09; Rotate&#xff08;将UV 的值旋转&#xff09; Spherize&#xff08;鱼眼镜头的球形变…

Spring系列三:基于注解配置bean

文章目录 &#x1f497;通过注解配置bean&#x1f35d;基本介绍&#x1f35d;快速入门&#x1f35d;注意事项和细节 &#x1f497;自己实现Spring注解配置Bean机制&#x1f35d;需求说明&#x1f35d;思路分析&#x1f35d;注意事项和细节 &#x1f497;自动装配 Autowired&…

【基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型】

逻辑回归进行鸢尾花分类的案例 背景说明&#xff1a; 基于IDEA Spark 3.4.1 sbt 1.9.3 Spark MLlib 构建逻辑回归鸢尾花分类预测模型&#xff0c;这是一个分类模型案例&#xff0c;通过该案例&#xff0c;可以快速了解Spark MLlib分类预测模型的使用方法。 依赖 ThisBui…

maven 删除下载失败的包

本文介绍了当Maven包报红时&#xff0c;使用删除相关文件的方法来解决该问题。文章详细说明了_remote.repositories、.lastUpdated和_maven.repositories文件的作用&#xff0c;以及如何使用命令行删除这些文件。这些方法可以帮助开发者解决Maven包报红的问题&#xff0c;确保项…

Linux 中利用设备树学习Ⅳ

系列文章目录 第一章 Linux 中内核与驱动程序 第二章 Linux 设备驱动编写 &#xff08;misc&#xff09; 第三章 Linux 设备驱动编写及设备节点自动生成 &#xff08;cdev&#xff09; 第四章 Linux 平台总线platform与设备树 第五章 Linux 设备树中pinctrl与gpio&#xff08;…

OBD针脚定义参考

OBD定义的一种标准的参考&#xff0c;不同的车场有不同的定义&#xff0c;貌似没有统一。 在某宝上看到的ODB转db9的不同的线序&#xff1a; 1&#xff09;1/2/3/6几个针脚都是一样的&#xff0c;分别上下针脚对应。 2&#xff09;其中一种4/5/7/8也是上下对应的&#xff1b;另…

自动化处理,web自动化测试处理多窗口+切换iframe框架页总结(超细整理)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 web 自动化之处理…

APP外包开发的学习流程

学习iOS App的开发是一项有趣和富有挑战性的任务&#xff0c;是一个不断学习和不断进步的过程。掌握基础知识后&#xff0c;不断实践和尝试新的项目将使您的技能不断提升。下面和大家分享一些建议&#xff0c;可以帮助您开始学习iOS App的开发。北京木奇移动技术有限公司&#…

小红书 KOL 种草执行策略揭秘:打造爆款产品,提升品牌影响力

随着互联网的普及和社交媒体的发展&#xff0c;小红书成为了众多年轻人购物决策的重要参考平台。小红书 KOL 种草作为一种新兴的营销方式&#xff0c;以其强大的传播力和影响力&#xff0c;越来越受到各大品牌的重视。本文伯乐网络传媒将给大家深入探讨小红书 KOL 种草的执行策…

mysql转sqlite3

在项目中需要将mysql迁移到sqlite3中&#xff0c;此时需要作数据转换 准备工作 下载mysql2sqlite转换工具 https://github.com/dumblob/mysql2sqlite/archive/refs/heads/master.zip 下载sqlite3 https://www.sqlite.org/download.html 转换 命令行中输入如下命令 1、cd …

海康威视摄像头二次开发_云台控制_视频画面实时预览(基于Qt实现)

一、项目背景 需求:需要在公司的产品里集成海康威视摄像头的SDK,用于控制海康威视的摄像头。 拍照抓图、视频录制、云台控制、视频实时预览等等功能。 开发环境: windows-X64(系统) + Qt5.12.6(Qt版本) + MSVC2017_X64(使用的编译器) 海康威视提供了设备网络SDK,设备网…

Zabbix监控系统详解及配置

前言 作为一个运维&#xff0c;需要会使用监控系统查看服务器状态以及网站流量指标&#xff0c;利用监控系统的数据去了解上线发布的结果&#xff0c;和网站的健康状态。利用一个优秀的监控软件&#xff0c;我们可以&#xff1a; 通过一个友好的界面进行浏览整个网站所有的服务…

Data analysis|Tableau基本介绍及可实现功能

一、基础知识介绍 &#xff08;一&#xff09;什么是tableau tableau 成立于 2003 年&#xff0c;是斯坦福大学一个计算机科学项目的成果&#xff0c;该项目旨在改善分析流程并让人们能够通过可视化更轻松地使用数据。Tableau可以帮助用户更好地理解和发现数据中的价值&#x…

虚拟机centos7配置网络

虚拟机centos7配置网络 centos7克隆之后需要配置网络才能联网。 实验环境&#xff1a; VMware Workstation Pro 16CentOS 7系统虚拟机主机Windows 11系统 1.VMware网络模式设置为NAT模式 虚拟机–设置–网络适配器– ​​ ‍ 2.查看虚拟机 子网IP和网关IP 编辑–虚拟网…