cookiesession(会话技术)

news2025/6/20 7:48:01

会话技术

Http:超文本传输协议,不可靠。

​ 不保持连接的协议。无状态的。

什么是会话

会话是在一次会话中包含多次请求和响应

一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止

在这里插入图片描述

会话的作用

由于Http是一个无状态协议,同一个会话的连续两个请求相互独立,彼此并不了解,不能共享数据!

用于存储浏览器与服务器在请求和响应过程中产生的数据

会话技术

Cookie

什么是Cookie

在一次会话的多次请求之间共享数据,将数据保存到客户端(浏览器)

浏览器历史记录:记录的是网址;

网易、孔夫子旧书网 、哔哩哔哩,输入自己的用户名 密码 ,记住密码;下一次直接可以弹出的方式,要么可以进入。

cookie 的原理

在这里插入图片描述

cookie-api详解

使用步骤

  • 创建Cookie对象

    Cookie cookie = new Cookie(String name, String value) //创建cookie对象
    
  • 发送Cookie对象

    response.addCookie(Cookie cookie) //响应给浏览器,可以发送多次
    
  • 获取Cookie

     Cookie[]  request.getCookies() //获取服务器发送过来的所有的cookie
         
     cookie.getName()   	//获取cookie中的name
         
     cookie.getValue()  	//返回cookie的值
         
     cookie.setValue()  	//修改cookie里面的值,把原来的值,替换成新的值    
    
  • 遍历数组

    使用for循环遍历,获取每一个Cookie

代码实现

@WebServlet("/setServlet")
public class SetServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.创建cookie对象,设置数据
        Cookie cookie = new Cookie("name","jack");
        // 2.通过response,响应(返回)cookie
        response.addCookie(cookie);
    }
}
@WebServlet("/getServlet")
public class GetServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.通过request对象,接收cookie数组
        Cookie[] cookies = request.getCookies();
        // 2.遍历数组
        if(cookies != null){
            for(Cookie cookie : cookies){
                if(cookie.getName().equals("name")){
                    String value = cookie.getValue();
                    response.getWriter().write(value);
                }
            }
        }
    }
}

案例-记录上一次访问时间

在这里插入图片描述

package cn.yanqi.cookie;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Auther: yanqi
 * @Desc
 */
@WebServlet(urlPatterns = "/ServletCookie")
public class ServletCookie extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");

        //获取所有的cookie
        Cookie[] cookies = request.getCookies();

        //除谷歌以外的浏览器
        if(cookies == null){
            //创建cookie
            Cookie cookie = new Cookie("lastVisit",new Date().toLocaleString().replace(" ","-"));
            //发送给浏览器
            response.addCookie(cookie);
            response.getWriter().write("您是第一次访问!!");
            return;
        }


        //谷歌浏览器中会带有idea的cookie所以不为空,直接判断
        for(Cookie cookie : cookies){
            if(!"last".equals(cookie.getName())){
                //创建cookie
                cookie = new Cookie("last",new Date().toLocaleString().replace(" ","-"));
                //发送给浏览器
                response.addCookie(cookie);
                response.getWriter().write("您是第一次访问!!");
            }

            if("last".equals(cookie.getName())){
                //直接获取
                String value = cookie.getValue();
                response.getWriter().write("您上一次访问的时间是:"+value);

                cookie.setValue(new Date().toLocaleString().replace(" ","-"));
                response.addCookie(cookie);
            }

        }
    }
}

cookie工具类代码

public class CookieUtils {

    public static Cookie getCookies(Cookie[] cookie , String name){

        //判断是不是null 如果是null 不用再走
        if(cookie == null){
            return null;
        }

        //不是null
        for(Cookie c : cookie){
            if(name.equals(c.getName())){
                return c;
            }
        }
        return  null;
    }
}

工具类测试

@WebServlet(urlPatterns = "/ServletTestCookieUtils")
public class ServletTestCookieUtils extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, IOException {

        response.setContentType("text/html;charset=utf-8");

        Date date = new Date();
        //cookie的值不能出现 分号(;)、逗号(,)、等号(=)等特殊符号,否则会出现异常
        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/ddHH:mm:ss");
        String format1 = format.format(date);
        System.out.println(format1);

        //改进我们cookie,使cookieutils
        Cookie[] cookies = request.getCookies();
        //使用cookie工具来获取cookie对象
        Cookie cookie = CookieUtils.getCookies(cookies, "last");
        //如果是null表示第一次访问
        if(cookie == null ){
            // cookie = new Cookie("last",new Date().toLocaleString().replace(" ","-"));
            cookie = new Cookie("last",format1);
            response.addCookie(cookie);
            response.getWriter().write("您是第一次访问!");

        }else{
            //否则就key匹配,直接取value
            String value = cookie.getValue();
            //重新设置值
            // cookie = new Cookie("last",new Date().toLocaleString().replace(" ","-"));
            cookie = new Cookie("last",format1);
            response.addCookie(cookie);
            response.getWriter().write("欢迎回来,上次访问的时间是:"+value);
        }
    }
}

cookie的生存时间

默认情况下,cookie存活在当前会话中,当浏览器关闭之后,会消失。那么如何让浏览器关闭之后仍然保存cookie
setMaxage();

设置cookie的过期时间。参数的单位是秒。cookie 将在经过该值表示的秒数后过期
@WebServlet(urlPatterns = "/ServletCookie")
public class ServletCookie extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");

        //改进我们cookie,使cookieutils
        Cookie[] cookies = request.getCookies();
        //使用cookie工具来获取cookie对象
        Cookie cookie = CookieUtils.getCookies(cookies, "last");
        //如果是null表示第一次访问
        if(cookie == null ){
            cookie = new Cookie("last",new Date().toLocaleString().replace(" ","-"));

            //设置cookie的生存时间,单位是秒
            cookie.setMaxAge(60*60*2);//两个小时

            response.addCookie(cookie);
            response.getWriter().print("您是第一次访问!");
        }else{
            //否则就key匹配,直接取value
            String value = cookie.getValue();
            //重新设置值
            cookie = new Cookie("last",new Date().toLocaleString().replace(" ","-"));

            //设置cookie的生存时间,单位是秒
            cookie.setMaxAge(60*60*2);//两个小时

            response.addCookie(cookie);
            response.getWriter().print("您上一次访问时间是:"+value);
        }
    }
}

删除cookie

cookie.setMaxAge();
          参数:   
              如果参数是负数: 表示关闭浏览器之后cookie删除
              如果参数是0 , 表示浏览器会马上删除cookie

 cookie.setMaxAge(0); //浏览器会马上删除cookie
 cookie.setMaxAge(-1); //关闭浏览器之后cookie删除

cookie访问有效路径

public void setPath(String url)

在这里插入图片描述

CookieWrite.jsp

<%
    //创建cookie
    Cookie cookie = new Cookie("abc","yanqi");
    //设置cookie的有效访问路径,只能在/cookiepath下才能读出cookie
    cookie.setPath("/cookiepath/");
    //响应给浏览器
    response.addCookie(cookie);
%>

CookieRead.jsp

<%
    //定义变量
    String cookieValue = null;

    //获取所有的cookie
    Cookie[] cookies = request.getCookies();
    //判断
    if(cookies != null && cookies.length>0){
        //遍历cookie
        for(Cookie cookie : cookies){
            //判断cookie中的key和访问的key是否一致
            if("abc".equals(cookie.getName())){
                //如查相同就取出值
                cookieValue = cookie.getValue();
            }
        }
    }

    if(cookieValue != null){
        out.print(cookieValue);
    }else{
        out.print("没有找到cookie!");
    }

%>

Cookie的特点和作用

Cooke的特点

1. cookie存储数据在客户端浏览器
2. 浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(50个)
3. 浏览器可以存储cookie的总数量为300个

Cookie的作用

1. cookie一般用于存出少量的不太敏感的数据
2. 在不登录的情况下,完成服务器对客户端的身份识别

Cookie的缺陷

1.不太安全
2.Cookie的value是String类型的,一个Cookie只能存储一个数据,如果需要存储多个数据,就得创建N个Cookie
3.一个站点对Cookie是有限制
	Cookie的存储的内容限制在4KB之内
	一台服务器在一个客户端最多保存50个Cookie
	一个浏览器最多可以存储300个Cookie
4.在设计上就有问题
	Cookie是浏览器与服务器之间数据交互的凭证。如果客户端把Cookie给清除掉了,服务器就获取不到数据
    一般来说,我们会把数据存储到服务器端即可

Session

什么是Session

在一次会话的多次请求之间共享数据,将数据保存到服务器端

Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的每一个浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把用户各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
你怎么知道哪个session是属于哪个浏览器的呢?通过jsessionid来找的,jsessionid是以cookie的方式来保存的(其实就是cookie)
jsessionid:xxxxxxxxxxxxx具体的内容

Session的生命周期

  • Session何时创建

    用户第一次调用request.getSession()方法时,session创建

    如果第一次访问jsp页面也会创建一个session

  • 何时销毁

    服务器非正常关闭		
    非活跃状态30分钟后
    	tomcat进行配置  /tocmat安装目录/conf/web.xml  默认30分钟 大概590行
    	session.invalidate();  手动销毁
    

    web.xml中配置当前项目下的session过期时间

        <!--设置当前项目的session过期时间,如果不配置默认是tomcat中的30分钟-->
        <session-config>
            <session-timeout>40</session-timeout>
        </session-config>
    
  • 作用范围

    一次会话中,多次请求之间

    注意:每一个浏览器跟服务器都是独立的会话

session-api

request.getSession()Session对象的获取
session.setAttribute(String name,Object value)session存入数据
session.getAttribute(String name)session取出数据
session.removeAttribute(String name)删除session中数据
session.invalidate()手动销毁

案例-记住用户名

案例分析

在这里插入图片描述

代码实现

页面

<body>


    <c:if test="${not empty sessionScope.username}" >
         你当前用户是: <span style="color: red">${sessionScope.username}</span>
    </c:if>

    <form action="userServlet" method="post">
        用户名:<input type="text" name="username" value="${sessionScope.username}"><br>
        密码:<input type="text" name="password"><br>

        <input type="submit" value="登录">
    </form>

</body>

代码

@WebServlet(urlPatterns = "/userServlet")
public class userServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //模拟登录
        if(username.equals(password)){
            //登录成功把用户用写入session中
            request.getSession().setAttribute("username",username);
            //跳转到index.jsp
            request.getRequestDispatcher("main.jsp").forward(request,response);
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
}

main.jsp

  <body>
      欢迎:<span style="color: red">${sessionScope.username}</span> 登录
      <a href="cat.jsp" target="_blank">购物车</a>
      <a href="play.jsp" target="_blank">支付</a>
  </body>

cat.jsp

<body>
    欢迎:<span style="color: red">${sessionScope.username}</span> 登录
    <h1>购物车</h1>
</body>

play.jsp

<body>
    欢迎:<span style="color: red">${sessionScope.username}</span> 登录
    <h1>支付页面</h1>
</body>

退出登录

main.jsp

  <body>
      欢迎:<span style="color: red">${sessionScope.username}</span> 登录
      
      <a href="outLoginServlet">退出登录</a>
      
      <a href="cat.jsp" target="_blank">购物车</a>
      <a href="play.jsp" target="_blank">支付</a>
  </body>

servlet代码

@WebServlet(urlPatterns = "/outLoginServlet")
public class outLoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //request.getSession().invalidate();
        request.getSession().removeAttribute("username");
        request.getRequestDispatcher("login.jsp").forward(request,response);
    }
}

Session的特点

1. session存储数据在服务器
2. session存储类型任意(Object)
3. session存储大小和数量没有限制(相对于内存)
4. session存储相对安全

Session与Cookie的区别

1. session存储数据在服务器端,Cookie在客户端
2. session没有数据大小限制,Cookie有
3. session数据安全,Cookie相对于不安全

Cookie和Session的选择

  1. cookie将数据保存在浏览器端,数据相对不安全.建议敏感的数据不要放在cookie中,而且数据大小是有限制的
    1. 成本低,对服务器要求不高
  2. session将数据保存在服务器端,数据相对安全.数据的大小要比cookie中数据灵活很多
    1. 成本较高,对服务器压力较大

实际应用中,浏览器不要禁止Cookie,如果禁止Cookie,那么服务器的应用将不能使用

面试题

当浏览器关闭后,Session对象是否销毁?
	浏览器属于客户端。session保存在服务器端。 
	关闭浏览器对服务器没有任何的影响。Session对象仍然存在,只是找不	到原来的jsessionid了

cookie被禁用,session是否还可以被使用?
	默认的情况,不能使用session,因为jsessionid找不到了
	
	其实也可以通过url重写的方式,再找回来,继续使用(代码如下)
	
	如果工作中,遇到用户把cookie禁止。session不能使用。告诉用户不能够禁止cookie。

URL重写

Session基于Cookie技术实现;浏览器的Cookie是可以禁用的,一旦禁用了之后,Session就会出现问题了。

开发中,一般我们是不关注用户的cookie是否禁用的,若用户禁用了cookie,只能别用网站了。若真想处理用户端的cookie禁用,我们可以使用url重写技术:

实现步骤:
	1、setSession  存入session数据
	2、getSession  获取session数据
	3、用户禁用cookie,getSession获取不了数据
	4、通过代码重写
	5、即使禁用依然可以使用session,找到session数据
/**
 * @Auther: yanqi
 * @Desc 添加session数据
 */
@WebServlet(urlPatterns = "/setSession")
public class setSession extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取session对象
        HttpSession session = request.getSession();
        // 向session中存数据
        session.setAttribute("username", "哈哈,即使浏览器禁用了cookie,也不影响我使用");

        //浏览器禁用cookie,通过url重写的方式找回session
        // 定义url
         String url = "/getSession";

        // 重写url,拼接JSESSIONID
         url = response.encodeURL(url);

         response.setContentType("text/html;charset=utf-8");
         response.getWriter().write("<a href='" + url + "'>跳转到获取session内容</a>");
    }
}
 * @Auther: yanqi
 * @Desc 获取session数据
 */
@WebServlet(urlPatterns = "/getSession")
public class getSession extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Object username = request.getSession().getAttribute("username");
        System.out.println("username:"+username);
    }
}
  response.setContentType("text/html;charset=utf-8");
     response.getWriter().write("<a href='" + url + "'>跳转到获取session内容</a>");
}

}




```java
 * @Auther: yanqi
 * @Desc 获取session数据
 */
@WebServlet(urlPatterns = "/getSession")
public class getSession extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Object username = request.getSession().getAttribute("username");
        System.out.println("username:"+username);
    }
}

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

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

相关文章

微服务之Eureka服务注册中⼼

关于务注册中⼼服 服务注册中⼼本质上是为了解耦服务提供者和服务消费者,尽可能量使两者联系可控在一定的范围外 1.在父项目下下引入 Spring Cloud 依赖 <dependencyManagement> <dependencies> <!-- SCN --> <dependency> <groupId> org.sp…

【记录】SMB|Windows下修改SMB端口并挂载

环境&#xff1a;Window11 使用背景&#xff1a;勒索病毒导致445端口不安全&#xff0c;故而该端口在服务器端被全面禁用了&#xff0c;如需使用SMB服务需要换个SMB服务端口。 方法1&#xff1a;端口转发 winx点开管理员权限的终端&#xff1a; 运行以下指令&#xff0c;检查…

ROS:URDF使用

目录 一、URDF集成Rviz&#xff08;实例讲解&#xff09;1.1需求1.2流程1.3code操作1.3.1创建功能包1.3.2编写 URDF 文件1.3.3在 launch 文件中集成 URDF 与 Rviz1.3.4在 Rviz 中显示机器人模型1.3.5优化 rviz 启动 二、URDF语法详解2.1robot2.1.1属性2.2.2子标签 2.2link2.2.1…

手把手教你玩转内存函数(含模拟实现)

目录 一、memcpy 1.认识memcpy 2.使用memcpy 3.拓展&#xff1a;模拟实现memcpy 二、memmove 1.认识memmove 2.使用memmove 3.拓展&#xff1a;模拟实现memmove 三、memcmp 1.认识memcmp 2.使用memcmp 四、memset 1.认识memset 2.使用memset 3.拓展&#xff1a;模…

【网络编程】应用层协议——HTTP协议

文章目录 一、HTTP协议基本认识二、URL的认识2.1 urlencode和urldecode 三、HTTP协议格式3.1 HTTP请求与响应格式3.2 如何保证请求和响应被应用层完整读取&#xff1f;3.3 请求和响应如何做到序列化和反序列化&#xff1f;3.4 代码验证请求格式3.5 代码验证响应格式3.5.1 telne…

小程序开发及生态丰富,还需要App吗?

微信小程序自2017年推出以来&#xff0c;其生态系统得到了迅速的发展和壮大。作为中国最大的社交平台之一&#xff0c;微信拥有庞大的用户基础。微信小程序作为微信生态系统的一部分&#xff0c;自然而然地吸引了大量用户。据对公开资料进行统计&#xff0c;2021年全网小程序数…

校园跑腿小程序:为学生提供便捷的服务

随着社会的发展和人们生活水平的提高&#xff0c;高等教育越来越受到重视。大学校园不仅是学习的地方&#xff0c;也是学生们日常生活的场所。然而&#xff0c;在繁忙的学业和生活压力下&#xff0c;学生可能经常面临诸如代购、快递、取餐等各种琐碎但繁琐的任务。基于这个需求…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 Cohere 集成搭建智能问答系统

目录 准备工作 主要参数 准备数据 创建 Collection 插入数据 测试问答 本文将演示如何使用 Zilliz Cloud 和 Cohere 搭建基于 SQuAD 数据集 的问答系统。其中,Zilliz Cloud 负责提供向量数据库,Cohere 负责提供获取指定文字向量表示的接口。 准备工作 本示例中的脚…

黑马前端三大件

文章目录 1.html1.1 标题标签1.2 段落标签1.3换行标签1.4 水平分割线标签1.5 文本格式化标签1.6 图片标签1.7 音频标签1.8 视频标签1.9 链接标签的介绍1.10列表标签1.10.1 无序列表1.10.2 无序列表1.10.3 自定义列表 1.11表格属性1.11.1表格的基本标签1.11.2 表格相关属性1.11.…

使用layui滑块slider遇到问题解决:1、加标尺2、兼容移动端拖拽1、多个滑块使用赋值4、切换箭头赋值问题

使用layui框架 滑块组件 slider 时遇到的问题&#xff0c;以下图为例&#xff0c;我创建了一个总滑块和3个滑块&#xff0c;改变总滑块可以控制滑块123&#xff1a; 1、我的需求是加上标尺&#xff0c;layui没有该功能&#xff0c;自己写了一个简单的,代码在下面。 2、移动端…

Linux:输入输出流、重定向、管道命令

相关文章 Linux&#xff1a;chgrp、chown、chmod权限属性更改指令 Linux&#xff1a; 磁盘状态观察命令lsblk、blkid Linux&#xff1a;df、du容量查询指令 1、标准流文件 数据流重定定向由字面上的意思来看&#xff0c;就是将数据定向到其他地方去&#xff0c;事实也是如此…

ModaHub魔搭社区:非结构化数据范式转变和示例

目录 范式转变——非结构化数据 非结构化数据示例 范式转变——非结构化数据 既然我们对结构化数据和半结构化数据有了清晰的理解,现在让我们开始谈谈非结构化数据。与结构化数据和半结构化数据不同,非结构化数据可以采取任何形式,可以有任意大小或尺寸,并需要大量的运行…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 HuggingFace 集成搭建问答系统

目录 准备工作 主要参数 创建 Collection 插入数据 测试问答 本文将演示如何使用 Zilliz Cloud 和 HuggingFace 搭建问答系统。其中,Zilliz Cloud 负责提供向量数据库,HuggingFace 负责提供获取指定文字向量表示的接口。 准备工作 本示例中的脚本需要安装 pymilvus,…

寡头竞争和混合策略均衡

纯寡头的产量竞争 两家企业生产相同的产品,产量是决策变量,市场上只有一种价格。市场需求/Demand:P = 100 - (Q1+Q2) Q 是企业生产的产量 假设生产成本为0 这个案例可能存在的结果 (1)合谋 (2)古诺-纳什均衡 每个企业将它竞争对手的产量水平视为固定的,然后决定自己…

【C++学习笔记】C++如何规范C语言中的类型转换

C的类型转换 1 C语言中类型转换的缺陷2 为什么C要规范C的类型转换3 C强制类型转换3.1 static_cast3.2 reinterpret_cast3.3 const_cast3.4 dynamic_cast 1 C语言中类型转换的缺陷 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&a…

【kubernetes系列】Kubernetes之RBAC

概述 k8s的权限控制在实际工作中不那么经常使用&#xff0c;但是却是很重要的&#xff0c;我们需要深入理解才能很好的解决某些问题。在我们现目前的了解中&#xff0c;常用的授权插件有以下几种&#xff1a; Node&#xff08;节点认证&#xff09; ABAC(基于属性的访问控制) …

【UE4 C++】03-新建UE C++工程,新建C++类

UE版本&#xff1a;4.26 步骤 新建一个空白模板工程&#xff0c;选择C项目&#xff0c;选择项目名和项目存储位置&#xff0c;然后点击创建项目。 新建C类 选择父类为Character 命名&#xff0c;选择公有&#xff0c;然后点击创建类 等待编译完成 此时在Visual Studio中可以看…

源启:云原生计算架构的行业实现

7月5日&#xff0c;由工业和信息化部网络安全产业发展中心、中国软件行业协会等单位指导&#xff0c;中国电子主办的“麒麟傲天聚创未来2023操作系统产业大会”在京举行。中电金信研究院副院长陈书华在大会上发表主旨演讲。 陈书华认为数字经济已成为社会发展的重要引擎&#…

【论文解读】基于分层判断的 x264 快速模式选择算法

简介 题目&#xff1a; 基于分层判断的 x264 快速模式选择算法 原文&#xff1a; https://www.nstl.gov.cn/paper_detail.html?id77880ade9a55b3cc527192010242d90e 级别&#xff1a; EI 年份&#xff1a; 2010 年 机构&#xff1a; 上海交通大学 结论&#xff1a; 相比较 HE…

汽车+ChatGPT 车内生活体验再升级

这两年&#xff0c;人工智能工具ChatGPT爆火&#xff0c;在全球掀起了大模型之战。如今&#xff0c;最前沿的自然语言处理大模型应用到了人类的出行工具上&#xff0c;梅赛德斯-奔驰和微软官宣正在合作测试车载ChatGPT人工智能&#xff0c;并将面向约90万车主开启测试&#xff…