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

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记

一、核心知识点(重点):

1.1 Cookie

1. Cookie:是一种客户端会话技术,数据会被保存在客户端,Cookie会携带数据访问服务器,用以完成一次会话内多次请求间的数据共享

2. 过程:浏览器(客户端)先向服务端发送请求,服务端会发送一个Cookie给客户端,在此后同一次会话中,每次客户端都会将Cookie发送给服务端,数据层层叠加。

3. Cookie存活时间:默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁。调用setMaxAge(int seconds)可以设置Cookie的存活时间。

4. Cookie的发送和获取:

 

1.2 Session

1. Session:服务端的会话跟踪技术,将数据保存在服务端。JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能。Session的实现是基于Cookie的。

2. Session的钝化和活化:(钝化:)在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中。(活化:)再次启动服务器后,从文件中加载数据到Session中。

3. Session的销毁,在web.xml中可以用<session-timeout>标签进行更改销毁时间。:

1.3 HTTP

1. HTTP(Hyper Text Transfer Protocol 超文本传输协议):规定了浏览器和服务器之间数据传输的规则(服务器和客户端之间进行数据交互的格式)。

2. HTTP协议特点:1. 基于TCP协议:面向连接、安全。2. 基于请求-响应模型的:一次请求对应一次响应。3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。缺点:多次请求间不能共享数据。(Java中用会话技术,如Cookie、Session来解决这个问题)优点:速度快。

3. GET和POST的区别:1. GET请求的请求参数在请求行中,没有请求体。POST请求的请求参数在请求体中。2. GET请求的请求参数大小有限制,POST没有限制。

4. 状态码:302  Found  找到。304  Not Modified  没有修改。400  Bad Request  错误的请求。403  Forbidden  拒绝。404  Not Found  请求资源不存在。428  Precondition Required 有条件请求。 429  Too Many Requests  太多请求。431   Request Header Fields Too Large  请求头太大。405   Method Not Allowed   请求方式有误。500   Internal Server Error   服务器发生不可预期的错误。503   Service Unavailable  服务器尚未准备好处理请求。511   Network Authentication Required  需要进行身份验证。

二、会话跟踪技术(Cookie+Session)

1.1 预备知识

1. 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。

2. 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一个浏览器,以便在同一次会话的多次请求间共享数据。

3. 为什么需要会话跟踪技术?

因为HTTP协议是无状态的(如果是有状态的则后面的请求要携带前面请求所有的数据,会导致请求的体量很大,访问的速度会很慢),每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享。

4. 实现方式:客户端会话跟踪技术:Cookie;服务端会话跟踪技术:Session。

1.2 Cookie基本使用

Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问。

过程:浏览器(客户端)先向服务端发送请求,服务端会发送一个Cookie给客户端,在此后同一次会话中,每次客户端都会将Cookie发送给服务端,数据层层叠加。

1.2.1 发送Cookie

在java-web-cookie路径下创建AServlet类,写入下面的代码:

@WebServlet("/aServlet")
public class AServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//发送CookieCookie cookie = new Cookie("username", "zhangsan");//1.创建Cookie对象response.addCookie(cookie);//2.发送Cookie。response}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

F12-设置-Cookie和网站权限-管理和删除cookie和站点数据-查看所有Cookkie和站点数据

1.2.2 获取Cookie

@WebServlet("/bServlet")
public class BServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取CookieCookie[] cookies = request.getCookies();//获取Cookie数组for(Cookie cookie:cookies) { //遍历数组String name = cookie.getName();if("username".equals(name)){String value = cookie.getValue(); //使用Cookie对象获取数据System.out.println(name + ":" + value);break;  } } }@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

1.3 Cookie原理和使用细节

Cookie的实现是基于HTTP协议的:响应头set-cookie(是服务端发送给浏览器,里面会装有Cookie携带的数据)请求头cookie(是浏览器发送给服务端,里面同样装有数据)

1. Cookie存活时间:默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁。

调用setMaxAge(int seconds)可以设置Cookie的存活时间。正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储,到时间自动删除。负数:默认值,当浏览器关闭,则Cookie被销毁。零:删除。

2. Cookie存储中文:Cookie不能直接存储中文。需要将中文转化成其它编码格式存储,等到要显示时再解析为非中文的数据。

因此可以在Cookie的发送端调用URLEncoder将字符串转化为UTF-8的格式:

String value="张三";
value = URLEncoder.encode(value, "UTF-8");

然后再Cookie的接收端调用URLDecoder将字符串解码为中文字符串: 

String value = cookie.getValue();
value = URLDecoder.decode(value,"UTF-8");

1.4 Session基本使用

Session:服务端的会话跟踪技术,将数据保存在服务端。JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能。

Session发送端: 

@WebServlet("/demo1")
public class SessionDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//存储到Session中HttpSession session = request.getSession();//1. 获取Session对象session.setAttribute("username","zs");//2. 存储数据}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

Session接收端:

@WebServlet("/demo2")
public class SessionDemo2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取数据,从session中HttpSession session = request.getSession();//1. 获取Session对象Object username = session.getAttribute("username");//2. 获取数据System.out.println(username);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

1.5 Session原理和使用细节

Session的实现是基于Cookie的。

通过打印发送端和接收端的Session地址,可以发现二者的地址都是相同的,因此在一次会话的多次请求中Session是相同的。

原理:Session对象具有唯一标识,叫作id。浏览器向网页发出请求,网页端的Tomcat作出响应,当发现使用了Session,会将id当作一个Cookie发送给浏览器,同时设置头set-cookie:JSESSIONID=id,浏览器会将Cookie存储在内存里。下一次浏览器携带cookie:JSESSIONID=id这个Cokie头访问服务器。服务器识别到Cookie头,就会在内存里寻找是否带有这个头的Session对象。

Session的钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中。

Session的活化:再次启动服务器后,从文件中加载数据到Session中。

所以服务器重启之后Session中的数据不会丢失,前提是要正常的关闭和重启。但是Session不是同一个Session。

Session的销毁:

默认:在web.xml中可以用<session-timeout>标签进行更改销毁时间。

1.6 案例

1. 用户登录

思路:Web层接收用户名和密码,调用Service层的方法,传入username和password,会在Dao层中执行SQL语句,最终会返回一个User对象,如果User不为null则登录成功,反之登录失败。

UserService代码如下:

public class UserService {SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();public User login(String username, String password){SqlSession sqlSession = factory.openSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);User user = mapper.select(username, password);sqlSession.close();return user;}
}

UserService代码如下:

public class UserService {SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();public User login(String username, String password){SqlSession sqlSession = factory.openSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);User user = mapper.select(username, password);sqlSession.close();return user;}
}

 LoginServlet代码如下:

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {private UserService service = new UserService();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");User user = service.login(username,password);if(user != null){//xxx,欢迎您,这里的xxx是username,所以要把username存到共享域里,用sessionHttpSession session = req.getSession();session.setAttribute("user",user); //第1个参数是键,第2个参数是值String contextPath = req.getContextPath(); //动态获取虚拟目录resp.sendRedirect(contextPath + "/selectAllServlet");}else{System.out.println("错误输出了");req.setAttribute("login_msg","用户名或密码错误"); //对应的是login.jsp中的${login_msg}用于显示错误信息//跳转到login.jsp,还要携带错误信息提示req.getRequestDispatcher("/login.jsp").forward(req,resp);//转发的原因是在request域里存储数据,只能用转发}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}
}

还要修改下面2个地方:

 

 2. 记住用户

 

在用户名和密码匹配成功且勾选的前提下的判断语句内加入如下代码:

if("1".equals(remember)){ //"1"写前面可以防止空指针异常Cookie c_username = new Cookie("username",username);//勾选了,发送Cookie,先创建对象Cookie c_password = new Cookie("password",password);c_username.setMaxAge(60*60*24*7);//设置保存时间c_password.setMaxAge(60*60*24*7);resp.addCookie(c_username); //发送cookieresp.addCookie(c_password);
}

更改下面这个地方:

3. 用户注册

在Service层的UserService中写入如下代码:

//注册方法public boolean register(User user){SqlSession sqlSession = factory.openSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);User user1 = mapper.selectByUsername(user.getUsername());if(user1==null) {mapper.add(user);sqlSession.commit();}sqlSession.close();return user1 == null;}

在Web层的RegisterServlet中写入如下代码:

@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {private UserService service = new UserService();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");User user = new User();user.setUsername(username);user.setPassword(password);boolean flag = service.register(user);if(flag){req.setAttribute("register_msg","注册成功请登录");req.getRequestDispatcher("/login.jsp").forward(req,resp);}else{req.setAttribute("register_msg","用户名已存在");req.getRequestDispatcher("/register.jsp").forward(req,resp);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}
}

然后再修改如下2个地方: 

 ​​​​​​

4. 验证码

首先要导入一个CheckCodeUtil用于生成验证码:

checkCode存储用户输入的验证码,checkCodeGen存储程序生成的验证码,存储在session中,然后对二者进行比对,执行跳转,如果匹配不成功直接返回。

   //获取用户输入的验证码String checkCode = req.getParameter("checkCode");//获取程序的验证码HttpSession session = req.getSession();String checkCodeGen = (String)session.getAttribute("checkCodeGen");//比对if(!checkCodeGen.equalsIgnoreCase(checkCode)){req.setAttribute("register_msg","验证码错误");
req.getRequestDispatcher("/register.jsp").forward(req,resp);return;
}

checkCodeServlet写入如下代码,用于生成验证码然后存储到session中:

@WebServlet("/checkCodeServlet")
public class CheckCodeServlet extends HttpServlet {private UserService service = new UserService();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletOutputStream os = resp.getOutputStream(); //输出流String checkCode = CheckCodeUtil.outputVerifyImage(100, 50, os, 4); //返回验证码的值HttpSession session = req.getSession();session.setAttribute("checkCodeGen",checkCode);// 存入session}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}
}

修改如下地方: 

三、HTTP相关知识点

1.1 预备知识

B/S架构:Browser/Server,浏览器/服务器 架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发给浏览器即可。好处:易于维护和升级,客户端无需任何部署可以使用新版本。

静态资源:HTML、CSS、JavaScript、图片等。负责页面展示

动态资源:Servlet、JSP等。负责逻辑处理。

数据库:负责存储数据。

Web服务器(Tomcat):负责解析HTTP协议,解析请求数据,并发送响应数据。

PS:自动登录、商品的历史记录是用会话技术实现的(Cookie、Session)。过滤器是过滤掉某些请求。

1.2 HTTP协议及特点

HTTP(Hyper Text Transfer Protocol 超文本传输协议):规定了浏览器和服务器之间数据传输的规则(服务器和客户端之间进行数据交互的格式)。

HTTP协议特点:

1. 基于TCP协议:面向连接、安全

2. 基于请求-响应模型的:一次请求对应一次响应

3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。缺点:多次请求间不能共享数据。(Java中用会话技术,如Cookie、Session来解决这个问题)优点:速度快。

1.3 HTTP请求数据格式

1. 请求行:请求数据的第一行。其中GET表示请求方式,斜杠/表示请求资源路径,HTTP/1.1表示协议版本。

2. 请求头:第二行开始,格式为key:value形式。(Host:表示请求的主机名。User-Agennt:浏览器的版本。Accept:浏览器能接收的资源类型,接收文本text/*,接收图片image/*,所有*/*。Accept-Language:表示浏览器偏好的语言。Accept-Encoding表示浏览器可以支持的压缩类型。)

3. 请求体:POST请求的最后一部分,存放请求参数。

1.4 GET和POST的区别

1. GET请求的请求参数在请求行中,没有请求体。POST请求的请求参数在请求体中。

2. GET请求的请求参数大小有限制,POST没有限制。

1.5 HTTP响应数据格式

1. 响应行:响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码,OK表示状态机描述。

2. 响应头:第二行开始,格式为key:value形式。(Content-Type:表示该响应内容的类型,比如text/html、image/jpeg。Content-Length:表示响应内容的长度。Content-Encoding:表示该响应压缩算法。Cache-Control:指示客户端应如何缓存。)

3. 响应体:最后一部分,存放响应数据。

1.6 状态码

1xx  响应中  ——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它。

 2xx  成功  ——表示请求已经被成功接收,处理已完成。

200  OK  客户端请求成功,即处理成功,这是我们最想看到的状态码

 3xx 重定向  ——(资源已经存储到了其它地方)重定向到其它地方:它让客户端再发起一个请求以完成整个处理。

302  Found  指示所请求的资源已移动到由`Location`响应头给定的 URL,浏览器会自动重新访问到这个页面(请求的资源移动到了另外一个位置,通过Location给出了位置的URL)。
304  Not Modified  没有修改。告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧,相当于隐式的重定向。

 4xx 客户端错误  ——【处理发生错误,责任在客户端】如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。

400  Bad Request  错误的请求。客户端请求有 语法错误 ,不能被服务器所理解。
403  Forbidden  拒绝。服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源 |
404  Not Found  请求资源不存在,一般是URL输入有误,或者网站资源被删除了
428  Precondition Required 有条件请求。 服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头 
429  Too Many Requests  太多请求,可以限制客户端请求某个资源的数量,配合 Retry-After(多长时间后可以请求)响应头一起使用(当前资源有太多人访问)。
431   Request Header Fields Too Large  请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。 
405   Method Not Allowed   请求方式有误,比如应该用GET请求方式的资源,用了POST 

 5xx 服务器端错误  ——【处理发生错误,责任在服务端】如:服务端抛出异常,路由出错,HTTP版本不支持等 |

500   Internal Server Error   服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧。
503   Service Unavailable  服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好。
511   Network Authentication Required  客户端需要进行身份验证才能获得网络访问权限。

相关文章:

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记

一、核心知识点&#xff08;重点&#xff09;&#xff1a; 1.1 Cookie 1. Cookie&#xff1a;是一种客户端会话技术&#xff0c;数据会被保存在客户端&#xff0c;Cookie会携带数据访问服务器&#xff0c;用以完成一次会话内多次请求间的数据共享 2. 过程&#xff1a;浏览器…...

分类预测 | MATLAB实现PCA-BiLSTM(主成分双向长短期记忆神经网络)分类预测

分类预测 | MATLAB实现PCA-BiLSTM(主成分双向长短期记忆神经网络)分类预测 目录 分类预测 | MATLAB实现PCA-BiLSTM(主成分双向长短期记忆神经网络)分类预测预测效果基本介绍程序设计参考资料致谢 预测效果 基本介绍 分类预测 | MATLAB实现PCA-BiLSTM(主成分双向长短期记忆神经网…...

Yarn 和 npm 的区别

Yarn 和 npm 都是 JavaScript 的包管理工具&#xff0c;它们的主要区别在于以下几个方面&#xff1a; 性能&#xff1a;Yarn 的安装速度和包的下载速度通常比 npm 更快&#xff0c;这是因为 Yarn 使用本地缓存和并行下载等技术来提高性能。 可靠性&#xff1a;Yarn 具有更好的…...

第20章 原子操作实验(iTOP-RK3568开发板驱动开发指南 )

在上一章节的实验中&#xff0c;对并发与竞争进行了实验&#xff0c;两个app应用程序之间对共享资源的竞争访问引起了数据传输错误&#xff0c;而在Linux内核中&#xff0c;提供了四种处理并发与竞争的常见方法&#xff0c;分别是原子操作、自旋锁、信号量、互斥体&#xff0c;…...

Android 开机自启动

APP需要开机自启动&#xff0c;要通过开机广播实现。 1&#xff0c;在AndroidManifest.xml中增加权限 <!-- .接收启动完成的广播权限 --><uses-permission android:name"android.permission.RECEIVE_BOOT_COMPLETED" /> 2&#xff0c;在AndroidManifes…...

01_前端css编写的三种方式

前言 CSS的引入方式共有三种&#xff1a;行内样式、内部样式表、外部样式表 一、内联式引入 用法&#xff1a; 在元素上直接通过style属性进行设置css样式设置 示例&#xff1a; <h1 style"color:red;">style属性的应用</h1> <p style"font-si…...

07-垃圾收集算法详解

上一篇&#xff1a;06-JVM对象内存回收机制深度剖析 1.分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法&#xff0c;这种算法没有什么新的思想&#xff0c;只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代&#xff0c;这样我们就可以根据各…...

Redis高并发分布式锁实战

高并发场景秒杀抢购超卖bug实战重现 秒杀抢购场景下实战JVM级别锁与分布式锁 大厂分布式锁Resisson框架实战 Lua脚本语言快速入门与使用注意事项 Redisson分布式锁源码剖析 Redis主从架构锁失效问题解析 从CAP角度剖析Redis与Zookeeper分布式锁区别 Redlock分布式锁原理与…...

MybatisPlus分页插件使用

一. 效果展示 二. 代码编写 2.1 pom <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version> </dependency>2.2 添加配置类 Configuration MapperScan(…...

Linux指令二【进程,权限,文件】

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程&#xff0c;是操作系统进行 资源分配和调度的一个独立单位&#xff0c;是应用程序运行的载体。 一、进程基本指令 1.ps&#xff1a;当前的用户进程 ps 只显示隶属于自己的进程状态ps -aux 显示所有进程…...

uni-app运行到微信开发者工具-没有打印的情况

前言 到我们进场使用微信开发者工具时&#xff0c;就会发现它经常会有bug&#xff0c;特别是在软件更新&#xff0c;组件库更新之后 最近在更新微信开发者工具之后发现所有打印都不显示了&#xff0c;虽然是小问题-但对于强迫症很烦 以为是代码配置问题-结果是更新之后打印开…...

由前端接口入门学习后端的controller层

由前端接口入门学习后端的controller层 一、简单介绍一下controller层&#xff1a;二、前端调用后端接口时&#xff0c;一般会传递参数给后端&#xff0c;后端的控制层是如何接收的呢&#xff1f;三、更深入地介绍一下关于请求体参数DTO作为入参Map作为入参 本文是以一个前端工…...

HJ71 字符串通配符

Powered by:NEFU AB-IN Link 文章目录 HJ71 字符串通配符题意思路代码 HJ71 字符串通配符 题意 问题描述&#xff1a;在计算机中&#xff0c;通配符一种特殊语法&#xff0c;广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。 要求&#xff…...

ffmpeg 开发笔记

参考&#xff1a; FFmpeg音视频处理 - 知乎 通过python实时生成音视频数据并通过ffmpeg推送和混流 - 知乎 直播常用 FFmpeg & ffplay 命令 - 知乎 音视频 FFMPEG 滤镜使用 - 知乎 官网&#xff1a; ffmpeg Documentation...

一种基于注意机制的快速、鲁棒的混合气体识别和浓度检测算法,配备了具有双损失函数的递归神经网络

A fast and robust mixture gases identification and concentration detection algorithm based on attention mechanism equipped recurrent neural network with double loss function 摘要 提出一个由注意力机制组成的电子鼻系统。首先采用端到端的编码器译码器&#xff…...

[运维|系统] go程序设置开机启动踩坑笔记

参考文献 记systemctl启动go程序 在Ubuntu上作为systemctl服务运行时Go找不到文件 go语言程序设置开机启动&#xff0c;配置不生效 需要在服务配置文件中加入工作目录配置&#xff0c;示例 WorkingDirectory/path/to/go/program/directory...

CRC原理介绍及STM32 CRC外设的使用

1. CRC简介 循环冗余校验&#xff08;英语&#xff1a;Cyclic redundancy check&#xff0c;简称CRC&#xff09;&#xff0c;由 W. Wesley Peterson 于 1961 年首次提出的一种纠错码理论。 CRC是一种数据纠错方法&#xff0c;主要应用于数据通信或者数据存储的场合&#xff…...

Python 操作 Word

上次给大家介绍了 Python 如何操作 Excel &#xff0c;是不是感觉还挺有趣的&#xff0c;今天为大家再介绍下&#xff0c;用 Python 如何操作 Word &#xff0c;这个可能跟数据处理关系不大&#xff0c;用的也不多&#xff0c;不过可以先了解下都能实现什么功能&#xff0c;以备…...

Linux--进程创建(fork)-退出--孤儿进程

进程创建&#xff1a; ①使用fork函数创建一个进程&#xff0c;创建的新进程被称为子进程。 #include <unistd.h>//头文件 pid_t fork(void); fork函数调用成功&#xff0c;返回两次&#xff1a; 返回值为0&#xff0c; 代表当前进程为子进程&#xff1b; 返回值为非负数…...

LeetCode 热题 HOT 100:链表专题

LeetCode 热题 HOT 100&#xff1a;https://leetcode.cn/problem-list/2cktkvj/ 文章目录 2. 两数相加19. 删除链表的倒数第 N 个结点21. 合并两个有序链表23. 合并 K 个升序链表141. 环形链表142. 环形链表 II148. 排序链表160. 相交链表206. 反转链表234. 回文链表 2. 两数相…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...