服务器端渲染技术

news2024/10/5 23:30:49

文章目录

  • 1. JSP基本介绍
    • 1.1 JSP快速入门
    • 1.2 JSP(Java Server Pages)运行原理
    • 1.3 page指令介绍
    • 1.4 JSP脚本
      • 1.4.1 声明脚本
      • 1.4.2 表达式脚本
      • 1.4.3 java代码脚本
    • 1.5 jsp注释
    • 1.6 jsp内置对象
    • 1.7 JSP四大域对象
      • 1.7.1 域对象实例
      • 1.7.2 注意事项
    • 1.8 JSP请求转发标签
    • 1.9 作业布置
  • 2. EL表达式
    • 2.1 EL表达式快速入门
    • 2.2 EL表达式输出形式
    • 2.3 el运算符
    • 2.4 empty运算
    • 2.5 EL获取四个域数据
    • 2.6 EL获取HTTP相关信息
  • 3. JSTL标签库
    • 3.1 jstl 快速入门
    • 3.2 <c:set/>标签
    • 3.3 <c:if/>标签
    • 3.4 <c:choose/>标签
    • 3.5 <c:forEach/>标签
    • 3.6 作业布置

1. JSP基本介绍

e

  1. JSP全称是Java Server Pages, 即Java的服务器页面, 就是服务器端渲染技术
  2. JSP这门技术的最大的特点是, 写JSP就像在写HTML
  3. 相比html而言, html只能为用户提供静态数据, 而JSP(Java Server Pages)技术允许在页面中嵌套java代码, 为用户提供动态数据
  4. 相比Servlet而言, Servlet很难对数据进行排版, 而JSP(Java Server Pages)除了可以用java代码产生动态数据的同时, 也很容易对数据进行排版
  5. JSP技术基于Servlet, 可以理解成就是Servlet

1.1 JSP快速入门

  1. 新建java项目
    在这里插入图片描述
  2. 引入web框架
    在这里插入图片描述
    在这里插入图片描述
  3. 新建lib目录->导入servlet-api.jar, jsp-api.jar
    在这里插入图片描述
  4. 在web工程路径下新建jsp
    在这里插入图片描述
  5. 配置Tomcat
    在这里插入图片描述
  6. 运行结果
    在这里插入图片描述
    在这里插入图片描述
  7. 注意事项和细节
    jsp->(java server pages) 页面不能像HTML页面, 直接用浏览器运行, 只能是浏览器通过Tomcat来访问jsp页面
  8. 如何设置jsp模板
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

1.2 JSP(Java Server Pages)运行原理

  1. jsp(java server pages)页面本质是一个Servlet程序(本质就是java程序).
  2. 第1次访问jsp(java server pages)页面的时候, Tomcat服务器会把jsp页面解析成一个java源文件, 并且对它编译为.class字节码程序. 参考sum.jsp对应的sum_jsp.java和sum_jsp.class文件
  1. sum_jsp.java是sum.jsp对应的servlet
  2. sum_jsp.class是对应的字节码文件
  3. 这两个文件在tomcat启动时的Using CATALINA_BASE: 目录下
    在这里插入图片描述
    比如:C:\Users\97896\AppData\Local\JetBrains\IntelliJIdea2022.3\tomcat\934373ca-74e2-42fa-87e8-55ee0332e30c\work\Catalina\localhost\jsp\org\apache\jsp
    在这里插入图片描述
    在这里插入图片描述
    要想查看HttpJspBase的类图关系, 要引入jasper.jar包
    在这里插入图片描述

总结:
3. sum.jsp->sum_jsp.java
4. sum_jsp 继承 HttpJspBase
5. HttpJspBase 继承了 HttpServlet
6. 结论: sum.jsp本质就是servlet
7. 因为sum_jsp 类还继承了 HttpJspBase, 所以就有更强的功能

1.3 page指令介绍

<%@ page contentType=“text/html; charset=utf-8” languange=“java” %>

  1. language表示jsp翻译后是什么语言文件, 但是只支持java, 其它的不支持
  2. contentType表示jsp返回的数据类型, 对应源码中response.setContentType()的参数值
  3. pageEncoding属性 表示当前jsp页面文件本身的字符集
  4. import属性跟java源码中的一样, 用于导包, 导类

1.4 JSP脚本

1.4.1 声明脚本

  1. 声明脚本的格式: <%! 声明java代码 %>
  2. 作用: 定义jsp需要的属性, 方法, 静态代码块和内部类…
    在这里插入图片描述
    对应的statement_jsp 类
    在这里插入图片描述

1.4.2 表达式脚本

  1. 表达式脚本的格式是: <%=表达式%>
  2. 表达式脚本的作用是: 在jsp(java server pages)页面上输出数据
  3. 脚本中的表达式不能以分号结束
    在这里插入图片描述
    在这里插入图片描述

1.4.3 java代码脚本

  1. 代码脚本的语法是: <% java代码 %>
  2. 代码脚本的作用是: 可以在jsp页面中(用java)编写我们需要的功能
  3. 可以由多个代码脚本块组合完成一个完整的java语句
  4. 代码脚本还可以和表达式脚本一起组合使用, 在jsp(java server pages)页面上输出数据
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.zzw.entity.Monster" %><%--
  Created by IntelliJ IDEA.
  User: 赵志伟
  Version: 1.0
 --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>代码脚本</title>
</head>
<body>
<h1>演示代码脚本</h1>
<%
    //创建ArrayList, 存放Monster对象
    ArrayList<Monster> monsters = new ArrayList<>();
    monsters.add(new Monster("铁扇公主", 3000, "芭蕉扇"));
    monsters.add(new Monster("白骨精", 2000, "魅惑"));
%>
<table border="1px">
    <tr>
        <th>编号</th>
        <th>名字</th>
        <th>年龄</th>
        <th>技能</th>
    </tr>
    <%
        for (int i = 0; i < monsters.size(); i++) {
            Monster monster = monsters.get(i);
    %>
    <tr>
        <td><%=i+1%></td>
        <td><%=monster.getName()%></td>
        <td><%=monster.getAge()%></td>
        <td><%=monster.getKill()%></td>
    </tr>
    <%
        }
    %>
</table>
</body>
</html>

对应的javacode_jsp 类
在这里插入图片描述

1.5 jsp注释

在这里插入图片描述

1.6 jsp内置对象

  1. JSP内置对象(即已经创建好的对象, 直接使用 英文名-inbuild), 是指Tomcat在翻译jsp页面成为Servlet后, 内部提供的九大对象, 叫内置对象
  2. 内置对象, 可以直接使用, 不需要手动定义
  1. out 向客户端输出数据 out.println(“”);
    在这里插入图片描述
    在这里插入图片描述
  2. request 客户端的http请求
    在这里插入图片描述
    在这里插入图片描述
  1. response 响应对象
    在这里插入图片描述
    在这里插入图片描述
  2. session 会话对象
    在这里插入图片描述
    在这里插入图片描述
  3. application 对应ServletContext
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. pageContext (jsp独有) jsp页面的上下文, 是一个域对象, 可以setAttribute(), 作用范围只是本页面
    在这里插入图片描述
    在这里插入图片描述
  5. exception异常对象, 使用比较少(jsp独有) getMessage()
  6. page对象(jsp独有) 代表jsp这个实例本身在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  7. config 对应ServletConfig在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

1.7 JSP四大域对象

  1. pageContext(域对象, 存放的数据只能在当前页面使用)
    在这里插入图片描述
  2. request(域对象, 存放的数据在一次request请求中有效, 数据和request对象绑定)
    在这里插入图片描述
  3. session(域对象, 存放的数据在一次会话中有效)
    在这里插入图片描述
  4. application(域对象, 存放的数据在整个web应用运行期间有效, 范围更大)
    在这里插入图片描述

1.7.1 域对象实例

  1. 请求转发
    在这里插入图片描述
    在这里插入图片描述
  2. 重定向
    在这里插入图片描述
    在这里插入图片描述
  3. 打开一个新的浏览器定位scope2.jsp
    在这里插入图片描述

1.7.2 注意事项

  1. 域对象是可以向Map一样存取数据的对象. 四个域对象功能一样, 不同的是它们对数据的存储范围
  2. 从存储范围(作用域范围看) pageContext < request < session < application

1.8 JSP请求转发标签

在这里插入图片描述

1.9 作业布置

calServlet

public class CalServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String num1 = request.getParameter("num1");
        String num2 = request.getParameter("num2");
        String oper = request.getParameter("oper");
        String regStr = "^[+-]?([1-9]\\d*|0)$";
        if (Pattern.matches(regStr, num1) && Pattern.matches(regStr, num2)) {
            double num_1 = WebUtils.parseDouble(num1, 0);
            double num_2 = WebUtils.parseDouble(num2, 0);
            double result = 0;
            request.setAttribute("oper", oper);
            if ("+".equals(oper)) {
                result = num_1 + num_2;
            } else if ("-".equals(oper)) {
                result = num_1 - num_2;
            } else if ("*".equals(oper)) {
                result = num_1 * num_2;
            } else if ("/".equals(oper)) {
                result = num_1 / num_2;
                if (Double.isInfinite(result)) {
                    request.setAttribute("num2Error", "除数不能为零");
                    request.getRequestDispatcher("/cal/cal.jsp").forward(request, response);
                } else if (Double.isNaN(result)) {
                    request.setAttribute("num1Error", "被除数不能为零");
                    request.setAttribute("num2Error", "除数不能为零");
                    request.getRequestDispatcher("/cal/cal.jsp").forward(request, response);
                }
            }
            //String.format:格式化字符串
            String format = String.format("%s %s %s = %s", num1, oper, num2, result);
            request.setAttribute("result", format);
            System.out.println(format);
            request.getRequestDispatcher("/cal/result.jsp").forward(request, response);
        } else {
            request.setAttribute("error", "数据格式不正确");
            request.getRequestDispatcher("/cal/cal.jsp").forward(request, response);
        }
    }

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

cal.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%String path = application.getContextPath();%>
<html>
<head>
    <title>计算页面</title>
    <script type="text/javascript">
        function register() {
            var num1 = document.getElementById("num1").value;
            var num2 = document.getElementById("num2").value;
            var regStr = /^[+-]?([1-9]\d*|0)$/;
            if (!regStr.test(num1)) {
                var span_1 = document.getElementById("span_1");
                span_1.hidden = false;
                return false;
            }
            if (!regStr.test(num2)) {
                alert("num2数字错误");
                return false;
            }
            return true;
        };
        if (<%=request.getAttribute("error") != null%>) {
            alert("<%=request.getAttribute("error")%>");
        }
        window.onload = function () {
            if (<%=request.getAttribute("num2Error") != null%>) {
                var span_2 = document.getElementById("span_2");
                span_2.hidden = false;
            }
            if (<%=request.getAttribute("num1Error") != null%>) {
                var span_1 = document.getElementById("span_1");
                span_1.hidden = false;
            }
        }
    </script>
</head>
<body>
<form action="<%=path%>/calServlet" onsubmit="return register()">
    num1: <input type="text" id="num1" name="num1"><span id="span_1" hidden>num1错误:<%=request.getAttribute("num1Error")%></span><br/>
    num2: <input type="text" id="num2" name="num2"><span id="span_2" hidden>num2错误:<%=request.getAttribute("num2Error")%></span><br/>
    运算符号: <select name="oper">
    <option value="+">+</option>
    <option value="-">-</option>
    <option value="*">*</option>
    <option value="/">/</option>
</select><br/>
    <input type="submit" value="提交计算"/>
</form>
</body>
</html>

result.jsp
在这里插入图片描述

2. EL表达式

2.1 EL表达式快速入门

  1. EL表达式全称: Expression Language, 是表达式语言
  2. EL表达式主要是代替jsp页面的表达式脚本
  3. EL表达式输出数据时, 比jsp的表达式脚本简洁
  4. EL表达式基本语法: ${key1}
  5. EL表达式在输出null时, 输出的是""
  6. jsp表达式脚本输出null时, 输出的是"null"字符串
    在这里插入图片描述

2.2 EL表达式输出形式

public class Book {
    private String name;//书名
    private String[] writer;//作者
    private List<String> reader;//读者
    private Map<String, Object> topics;//评讲

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String[] getWriter() {
        return writer;
    }

    public void setWriter(String[] writer) {
        this.writer = writer;
    }

    public List<String> getReader() {
        return reader;
    }

    public void setReader(List<String> reader) {
        this.reader = reader;
    }

    public Map<String, Object> getTopics() {
        return topics;
    }

    public void setTopics(Map<String, Object> topics) {
        this.topics = topics;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", writer=" + Arrays.toString(writer) +
                ", reader=" + reader +
                ", topics=" + topics +
                '}';
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>el 表达式输出数据演示</title>
</head>
<body>
<h1>el 表达式输出数据演示</h1>
<%
    // private String name;//书名
    //private String[] writer;//作者
    //private List<String> reader;//读者
    //private Map<String, Object> topics;//评讲

    //创建Book, 放入相关属性
    Book book = new Book();
    book.setName("雪国");

    book.setWriter(new String[]{"川端康成","2"});

    ArrayList<String> list = new ArrayList<>();
    list.add("赵志伟");
    list.add("赵培竹");
    book.setReader(list);

    Map<String, Object> hashMap = new HashMap<>();
    hashMap.put("赵志伟", "讲的不错❤");
    hashMap.put("赵培竹", "Love❤");
    book.setTopics(hashMap);

    //把book对象 放入request域对象
    request.setAttribute("bookkey", book);
%>
book对象: ${bookkey}<br/>
book.name: ${bookkey.name}<br/>
book.writer: ${bookkey.writer}<br/>
book.writer[0]: ${bookkey.writer[0]}<br/>
book.readers: ${bookkey.reader}<br/>
book.readere.get(1): ${bookkey.reader.get(1)}<br/>
book.readere[0]: ${bookkey.reader[0]}<br/>
book.topics["赵志伟"]: ${bookkey.topics["赵志伟"]}<br/>
book.topics.get("赵培竹"): ${bookkey.topics.get("赵培竹")}<br/>
</body>
</html>

输出结果
在这里插入图片描述

2.3 el运算符

关系运算符说明范例结果
== 或 eq等于${5 == 5} 或 ${5 eq 5}true
!= 或 ne不等于${5 != 5} 或 ${5 ne 5}false
< 或 lt小于${3 < 5} 或 ${3 lt 5}true
> 或 gt大于${3 > 5} 或 ${3 gt 5}false
<= 或 le小于等于${3 <= 5} 或 ${3 le 5}true
>= 或 ge大于等于${3 >= 5} 或 ${3 ge 5}false
  • 逻辑运算
逻辑运算符说明范例结果
&& 或 and与运算${12 == 12 && 12 < 11}false
或 or或运算${12 == 12
! 或 not取反运算${ !true } 或 ${not true}false
  • 算术运算
算数运算符说明范例结果
+加法${12 + 12}30
-减法${24 - 12}12
/ 或 div除法${ 144 / 12 } 或 ${ 144 div 12 }12
% 或 mod取模${ 144 % 10 } 或 ${ 144 mod 10 }4

2.4 empty运算

  1. empty运算可以判断一个数据是否为空, 如果为空, 返回true, 否则返回false
  2. 以下几种情况为空
  • 值为null
  • 值为空串
  • 值是Object类型数组, 长度为零
  • list集合, 元素个数为零
  • map集合, 元素个数为零
    在这里插入图片描述
    在这里插入图片描述
  • 三元运算
    在这里插入图片描述

2.5 EL获取四个域数据

变量类型说明
pageContextPageContextImpl获取jsp中的九大内置对象
pageScopeMap<String, Object>获取pageContext域中的数据
requestScopeMap<String, Object>获取Request域中的数据
sessionScopeMap<String, Object>获取Session域中的数据
applicationScopeMap<String, Object>获取ServletContext域中的数据

在这里插入图片描述
在这里插入图片描述

2.6 EL获取HTTP相关信息

在这里插入图片描述
在这里插入图片描述

3. JSTL标签库

3.1 jstl 快速入门

  1. JSTL标签库是指 JSP Standard Tag Library(JSP标准标签库)
  2. EL表达式是为了替换jsp中的表达式脚本, JSTL是为了替换代码脚本. 这样jsp页面变得更加简洁
  3. JSTL由五个标签库组成
功能范围URI前缀
核心标签库http://java.sun.com/jsp/jstl/corec
格式化http://java.sun.com/jsp/jstl/fmtfmt
函数http://java.sun.com/jsp/jstl/functionsfn
数据库http://java.sun.com/jsp/jstl/sqlsql
XMLhttp://java.sun.com/jsp/jstl/xmlx
  1. 使用JSTL, 需要导入相关的jar包, 即taglibs-standard-impl-1.2.1.jar, taglibs-standard-spec-1.2.1.jar
    在这里插入图片描述

3.2 <c:set/>标签

  1. 介绍: <c:set scope=“request” var=“username” value=“赵志伟”/>

<c:set />标签可以往域中存放数据

  1. 等价于 域对象.setAttribute(key, value);
  2. scope属性 设置保存到哪个域
    page表示PageContext域 (如果不写, 默认值)
    request表示Request域
    session表示Session域
    application表示ServletContext域
  3. var属性 设置key值
  4. value属性 设置值
    在这里插入图片描述

3.3 <c:if/>标签

  1. 介绍: <c:if test=“${10 > 2}”>hello</c:if>

<c:if />

  1. if标签用来做if判断
  2. test属性表示判断的条件(用EL表达式输出)
    在这里插入图片描述

3.4 <c:choose/>标签

  1. 介绍: 多路判断, 跟switch…case…default非常接近
  1. 取值问题
    在这里插入图片描述
    在这里插入图片描述
  2. c:choose标签使用在这里插入图片描述

3.5 <c:forEach/>标签

  1. 介绍: c:forEach标签, 用来遍历输出, 主要有4种形式
  • 普通遍历输出 i 到 j
    在这里插入图片描述
  • 遍历数组
    在这里插入图片描述
  • 遍历Map
    在这里插入图片描述
  • 遍历List
    在这里插入图片描述

3.6 作业布置

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

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

相关文章

前列腺癌论文笔记

名词解释 MRF: 磁共振指纹打印技术( MR Fingerprinting)是近几年发展起来的最新磁共振技术&#xff0c;以一种全新的方法对数据进行采集、后处理和实现可视化。 MRF使用一种伪随机采集方法&#xff0c;取代了过去为获得个体感兴趣的参数特征而使用重复系列数据的采集方法&…

都抢发AI大模型,谁关注模型安全?

如果要给4月定一个主题&#xff0c;“大模型”应该当仁不让。 从4月7日阿里突然放出“通义千问”内测开始&#xff1b;8日&#xff0c;华为放出盘古大模型&#xff1b;10日&#xff0c;商汤推出类ChatGPT产品“商量SenseChat”&#xff1b;之后&#xff0c;11日的阿里云峰会&am…

数据优化 | CnOpenDataA股上市公司招聘数据

就业是经济的“晴雨表”&#xff0c;更是社会的“稳定器”。稳定和扩大就业一直是国家宏观调控的重要目标&#xff0c;2021年中央经济工作会议八次提到“就业”这一关键词。在新冠肺炎疫情蔓延、世界经济下行及人口老龄化加快等多重因素的叠加之下&#xff0c;稳就业保民生成为…

十、CNN卷积神经网络实战

一、确定输入样本特征和输出特征 输入样本通道数4、期待输出样本通道数2、卷积核大小33 具体卷积层的构建可参考博文&#xff1a;八、卷积层 设定卷积层 torch.nn.Conv2d(in_channelsin_channel,out_channelsout_channel,kernel_sizekernel_size,padding1,stride1) 必要参数&a…

【MySQL--03】表的操作

文章目录1.表的操作1.1创建表1.2创建表案例1.3查看表结构1.4修改表1.5删除表1.表的操作 1.1创建表 语法&#xff1a; CREATE TABLE table_name(filed1 datatype,filed2 datatype,filed3 datatype )character set 字符集 collate 校验规则 engine 存储引擎;说明&#xff1a; …

Redis,Redis Sentinel ,集群

1&#xff1a;由于服务器优先&#xff0c;只能在同一台服务器搭建2个Redis&#xff0c;2个Redis Sentinel&#xff0c;实现Redis的集群 2&#xff1a;Linux上下载Redis&#xff0c;并安装和配置 下载执行一下命令&#xff1a; $ wget http://download.redis.io/releases/redi…

MySQL数据库(Python)

文章目录一、数据库安装&#xff08;Windows版&#xff09;二、数据库概念三、MySQL数据库3.1 数据类型3.2 数据库基本操作&#xff08;windows&#xff09;3.3 数据表的操作3.4 表数据操作四、PyMySQL的使用一、数据库安装&#xff08;Windows版&#xff09; 到mysql数据库官…

MATLAB | R2023a更新了哪些好玩的东西

R2023a来啦&#xff01;&#xff01;废话不多说看看新版本有啥有趣的玩意和好玩的特性叭&#xff01;&#xff01;把绘图放最前面叭&#xff0c;有图的内容看的人多。。 1 区域填充 可以使用xregion及yregion进行区域填充啦&#xff01;&#xff01; x -10:0.25:10; y x.^…

spdk环境搭建

SPDK环境搭建运行环境源码拉取编译增加虚拟盘&#xff0c;运行样例本来21年就写了这篇博客&#xff0c;但因为在博客中放了vmware的密钥&#xff0c;违规了&#xff0c;最近正好又要用到spdk&#xff0c;就重新搭建一下spdk&#xff0c;简单改一下博客再发一遍运行环境 VMware…

Unity云渲染,加移动

上次我们根据官方所推出的教程&#xff0c;完成了云渲染&#xff0c;这次我们加个移动。 原谅我又水一篇文章&#x1f604;&#x1f604;&#x1f604;&#x1f604;&#x1f604;&#x1f604;&#x1f604;&#x1f604;&#x1f604; 云渲染的文章看这里&#xff1a;Unity…

关于nn.CrossEntropyLoss交叉熵损失中weight和ignore_index参数

目录 1. 交叉熵损失 CrossEntropyLoss 2. ignore_index 参数 3. weight 参数 4. 例子 1. 交叉熵损失 CrossEntropyLoss CrossEntropyLoss 交叉熵损失可函数以用于分类或者分割任务中&#xff0c;这里主要介绍分割任务 建立如下的数据&#xff0c;pred是预测样本&#xff…

MongoDB 聚合管道的字段投影($addFields,$set,$unset,$project)

上一篇我们介绍了MongoDB 聚合管道的文档筛选及分组统计&#xff1a; $match&#xff1a;文档过滤 $group&#xff1a;文档分组&#xff0c;并介绍了分组中的常用操作&#xff1a;$addToSet&#xff0c;$avg&#xff0c;$sum&#xff0c;$min&#xff0c;$max等。 如果需要进一…

Ceph集群修复 osd 为 down 的问题

问题描述 由于突然断电了&#xff0c;导致 ceph 服务出现了问题&#xff0c;osd.1 无法起来 ceph osd tree解决方案 尝试重启 systemctl list-units |grep ceph systemctl restart ceph-f0e59898-71d4-11ec-924c-000c290a1a98osd.1.service发现重启无望&#xff0c;可采用…

国内企业使用敏捷开发的多吗?《2022中国企业敏捷实践白皮书》发布(附完整版下载)

通过2021-2022调研数据对比发现&#xff0c;受访者所在企业的敏捷团队占比从2021年的55%提升至2022年的63%&#xff0c;说明越来越多的中国企业正在从传统研发模式转变为敏捷研发模式&#xff0c;并不断扩大敏捷适用范围来促进企业整体敏捷转型&#xff1b; 与2021年的白皮书相…

android jetpack Navigation的使用(java)

简介 Navigation通过图形化的方式管理配置页面的切换。 基本使用 添加依赖 implementation androidx.navigation:navigation-fragment:2.5.3implementation androidx.navigation:navigation-ui:2.5.3创建xml文件&#xff08;添加导航图&#xff09;——nav_graph.xml nav_…

Java奠基】Java经典案例讲解

目录 卖飞机票 找质数 开发验证码 数组元素的复制 评委打分 数字加密 数字解密 抢红包 模拟双色球 二维数组 卖飞机票 需求&#xff1a;机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。按照如下规则计算机票价格&#xff1a; 旺季&…

ROS实践14 分布式通信

文章目录运行环境&#xff1a;思路&#xff1a;1.1 设置固定IP2.1 修改hosts文件3.1 检查是否成功通信4.1 修改bashrc5.1 演示运行环境&#xff1a; ubuntu20.04 noetic 宏基暗影骑士笔记本 思路&#xff1a; 主机启动roscore和乌龟速度订阅节点&#xff0c;从机启动乌龟键盘…

大模型时代下做科研的思路

总结zhu老师观点 Efficient 1.这篇论文是真的好orz&#xff0c;总结了目前的视频类模型 修改周边的一些参数&#xff0c;来训练&#xff0c;不改基础的模型&#xff08;太大了。。。没资源没卡&#xff09; 引申&#xff1a; prompt 是你想模型干什么你就给提示&#xff08…

python win环境 pip setuptools wheel安装

2023年。 今年的测试小学弟问我python这个安装怎么这么啥b。没有安装pip时 python setup.py install时需要setuptools&#xff0c;安装setuptools需要安装pip。 我看了看他的python是官网下的压缩包解压来的&#xff0c;内部非常干净。python-3.10.11 1. 安装pip 遇到这种情况…

“智慧赟”平台型经济引领行业新标杆

​  2021年&#xff0c;国家高度重视区块链行业发展&#xff0c;各部委发布的区块链相关政策已超60项&#xff0c;区块链不仅被写入“十四五”规划纲要中&#xff0c;各部门更是积极探索区块链发展方向&#xff0c;全方位推动区块链技术赋能各领域发展。在区块链产业具体内容…