JSP 的学习。

核心功能模块
1.
源代码层 ( src

  • HelloWorld :主程序入口
  • 领域模型 : domain 包含User.java和ceshi.java
  • 控制器 : servlet 包含登录验证和验证码相关Servlet
  1. Web表现层 ( web

    • JSP页面:包含首页(index.jsp)、登录页(login.jsp)等
    • 技术组件 :
      • EL表达式: el 目录下4个示例页面
      • JSTL标签库: jstl 目录下4个示例页面
    • 依赖库: lib 包含Servlet和JSTL相关jar包
  2. 构建输出 ( out

    • 编译产物:production目录下为编译后的class文件
    • 部署包:artifacts目录包含Web应用的 exploded 部署版本
  • 后端 :Java + Servlet
  • 前端 :JSP + EL + JSTL
  • 构建工具 :IntelliJ IDEA内置构建工具
  • 服务器 :Java Web容器 Tomcat

项目包含:

  • 用户登录验证功能(LoginServlet)
  • 验证码生成功能(CheckCodeServlet)
  • 基础的页面跳转和数据展示功能
  • EL与JSTL标签库的学习示例页面
├── .idea\
│   ├── .gitignore
│   ├── libraries\
│   │   └── lib.xml
│   ├── misc.xml
│   ├── modules.xml
│   └── workspace.xml
├── day22.iml
├── src\
│   └── com\
│       └── demo\
│           ├── HelloWorld.java
│           ├── domain\
│           │   ├── User.java
│           │   └── ceshi.java
│           └── servlet\
│               ├── CheckCodeServlet.java
│               └── LoginServlet.java
└── web\├── 500.jsp├── WEB-INF\│   └── lib\│       ├── javax.servlet.jsp.jstl.jar│       └── jstl-impl.jar.│       └── javax.servlet.jar├── el\│   ├── el1.jsp│   ├── el2.jsp│   ├── el3.jsp│   └── el4.jsp├── home.jsp├── index.jsp├── jstl\│   ├── jstl1.jsp│   ├── jstl2.jsp│   ├── jstl3.jsp│   └── jstl4.jsp├── login.jsp├── success.jsp└── top.jsp

登录html


<!-- 登录页 login.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>login</title><style>span{color: #62c6ff;}</style><script>window.onload = function(){document.getElementById("img").onclick = function(){this.src = "/checkCodeServlet?" + new Date().getTime();}}</script>
</head>
<body>
<form action="/loginServlet"><table><tr><td>用户名:</td><td><input type="text" name="username"/><span><%=request.getAttribute("login_error") == null ? "" : request.getAttribute("login_error")%></span></td></tr><tr><td>密 码:</td><td><input type="password" name="pwd"/></td></tr><tr><td>验证码:</td><td><input type="text" name="checkCode"/><span><%=request.getAttribute("cc_error") == null ? "" : request.getAttribute("cc_error")%></span></td></tr><tr><td colspan="2"><img id="img" src="/checkCodeServlet"><a href="">看不清,换一张</a></td></tr><tr><td colspan="2"><input type="submit" value="登录"/></td></tr></table>
</form></body>
</html><!-- 登录成功后跳转的页面 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html>
<head><title>success</title>
</head>
<body>
<h1><%=request.getSession().getAttribute("user")%>,欢迎您!</h1>
</body>
</html><!-- jsp组件概念 top.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<h1>首页logo的位置</h1><!-- jsp组件概念 home.jsp 使用 top.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page trimDirectiveWhitespaces="true" %>
<%@ include file="top.jsp" %>
<html>
<head><title>首页</title><style>span {color: red;}</style>
</head>
<body><h3> 这是home.jsp</h3>
<span><%=pageContext.getAttribute("msg")%></span></body>
<%out.println("hello QQ!");%><!-- jsp组件概念 index.jsp 使用 home.jsp -->
<%@ page import="java.util.*" %><%--<%@ page contentType="text/html;charset=UTF-8" errorPage="500.jsp" language="java" buffer="16kb" %>--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" buffer="16kb" %><html><head><title>$Title$</title><style>span{color: red;}</style></head><body><%List list = new ArrayList();
//          int a = 3 / 0;%><%pageContext.setAttribute("msg","hello jsp!");%><span><%=pageContext.getAttribute("msg")%></span><%request.getRequestDispatcher("/home.jsp").forward(request,response);%>$END$111</body>
</html></html><!-- 异常页面 500.jsp -->
<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" language="java" %><html>
<head><title>Title</title>
</head>
<body><h1>服务器正忙... ...</h1>
<%String message = exception.getMessage();out.println(message);
%></body>
</html>

后端实现

import java.text.SimpleDateFormat;
import java.util.Date;public class User {private String name;private int age;private Date birthday;public User(String name, int age, Date birthday) {this.name = name;this.age = age;this.birthday = birthday;}/*** 逻辑视图* @return*/public String getStrDate(){if(birthday != null){SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");return sdf.format(birthday);}else{return "";}}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}
}import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;@WebServlet("/checkCodeServlet")
public class CheckCodeServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {int width = 100;int height = 50;//1、创建一个对象,用来生成验证码图片BufferedImage bufferedImage = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//2、美化//2.1填充背景颜色Graphics graphics = bufferedImage.getGraphics();//画图对象graphics.setColor(Color.PINK);graphics.fillRect(0,0,width,height);//2.2画边框graphics.setColor(Color.BLUE);graphics.drawRect(0,0,width-1,height-1);//2.3实现验证码随机生成String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";//随机生成角标Random random = new Random();//存储生成的验证码StringBuilder stringBuilder = new StringBuilder();for (int i = 1; i <=4 ; i++) {int index = random.nextInt(str.length());char c = str.charAt(index);stringBuilder.append(c);graphics.drawString(c+"",width/5 * i,height/2);}String checkCode_session = stringBuilder.toString();//存储验证码到session中HttpSession session = request.getSession();session.setAttribute("checkCode_session",checkCode_session);//2.4画干扰线graphics.setColor(Color.GREEN);for (int i = 0; i < 10 ; i++) {int x1 = random.nextInt(width);int x2 = random.nextInt(width);int y1 = random.nextInt(height);int y2 = random.nextInt(height);graphics.drawLine(x1,y1,x2,y2);}//3、输出验证码到浏览器ImageIO.write(bufferedImage,"jpg", response.getOutputStream());}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1、设置request的编码方式request.setCharacterEncoding("utf-8");//2、获取参数String username = request.getParameter("username");String password = request.getParameter("pwd");//用户输入的验证码String checkCode = request.getParameter("checkCode");//3、获取验证码HttpSession session = request.getSession();String checkCode_session = (String)session.getAttribute("checkCode_session");//移除验证码session.removeAttribute("checkCode_session");//4、判断用户输入的验证码和生成的验证码是否一致//判断输入的验证码不能为空if(checkCode != null && checkCode.equalsIgnoreCase(checkCode_session)){//验证码正确//判断用户名和密码发是否正确if("zhangsan".equals(username) && "123".equals(password)) {  //应该使用UserDao访问数据库得到的//用户名和密码正确//存储数据session.setAttribute("user",username);//跳转页面  success.jsp  重定向response.sendRedirect(request.getContextPath() + "/success.jsp");}else{//返回提示信息request.setAttribute("login_error","用户名或密码错误!");//跳转页面   转发request.getRequestDispatcher("/login.jsp").forward(request,response);}}else{//验证码错误,给用户返回提示信息request.setAttribute("cc_error","验证码错误!");//跳转页面(转发)request.getRequestDispatcher("/login.jsp").forward(request,response);}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}

jsp 练习

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>el表达式</title>
</head>
<body><%boolean a = 3 > 4;out.println(a);String str = "123";request.setAttribute("str",str);request.setAttribute("a",null);
%>
<hr>\${ 3 > 4}
<h3>运算符</h3>
${ 3 + 4}<br>
${ 3 - 4}<br>
${ 3 * 4}<br>
${ 3 / 4}<br>
${ 3 div 4}<br>
${ 3 % 4}<br>
${ 3 mod 4}<br><h3>比较运算符</h3>
${ 3 == 3 }<h3>逻辑运算符</h3>
${ 4 > 3 and 5 > 4 ? "ok" : "no"}
${ 4 > 3 && 5 > 4 ? "ok" : "no"}<h3>空运算符</h3>${ str }
${ empty str }${ a }
${ not empty a }</body>
</html><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>el获取值</title>
</head>
<body><%request.setAttribute("name","张三");session.setAttribute("ok","别瞌睡!");session.setAttribute("name","李四");%><h1>${ requestScope.name }</h1><h1>${ sessionScope.ok }</h1><h1>${ sessionScope.name }</h1><h1>${ name }</h1></body>
</html><%@ page import="com.demo.domain.User" %>
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>el获取对象、List集合、Map集合的值</title>
</head>
<body>
<%User user = new User();user.setName("乔丹");user.setAge(57);user.setBirthday(new Date());request.setAttribute("user", user);List list = new ArrayList();list.add("aaa");list.add("bbb");list.add(user);request.setAttribute("list",list);Map map = new HashMap();map.put("a","aaa");map.put("b","bbb");map.put("u",user);request.setAttribute("map",map);%><h3>el获取对象的值</h3>
<%--获取对象的值的规则是:1)通过setter或getter方法,然后去掉set或者get,然后首字母小写2)getName -- >   Name -- > name
--%>${ requestScope.user }
${ requestScope.user.name }
${ requestScope.user.age }${ requestScope.user.strDate }<hr>
<h3>el获取List的值</h3>
${ requestScope.list }
${ requestScope.list[0] }
${ requestScope.list[1] }
${ requestScope.list[2].name }<hr>
<h3>el获取Map的值</h3>
${ requestScope.map }
${ requestScope.map.a }
${ requestScope.map["b"] }
${ requestScope.map.u.name }</body>
</html><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>el的隐式对象</title>
</head>
<body>${ pageContext.request.contextPath }</body>
</html>

JSTL练习

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>c:if的学习</title>
</head>
<body>
<%--
常用的JSTL标签
1. if:相当于java代码的if语句1. 属性:* test 必须属性,接受boolean表达式* 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容* 一般情况下,test属性值会结合el表达式一起使用2. 注意:* c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签--%>
<%//获取request域中的list集合,并判断是否为null,如果不为null则输出“遍历集合”List list = new ArrayList();list.add("a");request.setAttribute("list",list);request.setAttribute("number", 4);%><c:if test="${ not empty list }">遍历集合... ...</c:if>
<c:if test="${number % 2 == 0}">${number}是偶数
</c:if><c:if test="${number % 2 != 0}">${number}是奇数
</c:if></body>
</html><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>c:choose的学习</title>
</head>
<body><%//根据一个数字来显示对应的星期几/*** 1、存储一个数字;* 2. 使用choose标签声明         			相当于switch声明* 3. 使用when标签做判断         			相当于case* 4. 使用otherwise标签做其他情况的声明    	相当于default*/request.setAttribute("number",50);%><c:choose><c:when test="${number == 1}">星期一</c:when><c:when test="${number == 2}">星期二</c:when><c:when test="${number == 3}">星期三</c:when><c:when test="${number == 4}">星期四</c:when><c:when test="${number == 5}">星期五</c:when><c:when test="${number == 6}">星期六</c:when><c:when test="${number == 7}">星期七</c:when><c:otherwise>数字对应的星期找不到了!</c:otherwise></c:choose></body>
</html><%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<html>
<head><title>c:forEach的学习</title>
</head>
<body><%
//         1. 完成重复的操作
//         for(int i = 0; i < 10; i ++){
//
//         }
//         * 属性:
//         begin:开始值
//         end:结束值
//         var:临时变量
//         step:步长
//         varStatus:循环状态对象
//         index:容器中元素的索引,从0开始
//         count:循环次数,从1开始
//         2. 遍历容器
//         List<User> list;
//         for(User user : list){
//
//         }
//
//         * 属性:
//         items:容器对象
//         var:容器中元素的临时变量
//         varStatus:循环状态对象
//         index:容器中元素的索引,从0开始
//         count:循环次数,从1开始List list = new ArrayList();list.add("aaa");list.add("bbb");list.add("ccc");request.setAttribute("list",list);%><c:forEach begin="1" end="10" var="i" step="2" varStatus="s">${i} <h3>${ s.index }</h3> ${ s.count } <hr></c:forEach><hr>
<%--遍历集合--%><c:forEach items="${ list }" var="ltt" varStatus="str">${ str.index } <h3>${ str.count }</h3> ${ ltt }<br></c:forEach></body>
</html><%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="com.demo.domain.User" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>c标签练习</title>
</head>
<body><%//需求:在request域中有一个存有User对象的List集合。//      需要使用jstl+el将list集合数据展示到jsp页面的表格table中,并且偶数行显示红色,奇数行显示绿色List list = new ArrayList();list.add(new User("张三", 20, new Date()));list.add(new User("李四", 20, new Date()));list.add(new User("王五", 20, new Date()));//将list集合存储在request域中request.setAttribute("list", list);%>
<table border="1" width="500" align="center"><tr><td>编号</td><td>姓名</td><td>年龄</td><td>生日</td></tr><c:if test="${ not empty list }"><c:forEach items="${ list }" var="haha" varStatus="s"><c:if test="${ s.count % 2 != 0 }"><tr style="background: red;"><td>${ s.count }</td><td>${ haha.name }</td><td>${ haha.age }</td><td>${ haha.strDate }</td></tr></c:if><c:if test="${ s.count % 2 == 0 }"><tr style="background: green;"><td>${ s.count }</td><td>${ haha.name }</td><td>${ haha.age }</td><td>${ haha.strDate }</td></tr></c:if></c:forEach></c:if><c:if test="${ empty list }"><%--<%--%><%--if(list == null || list.size() == 0){--%><%--%>--%><tr><td>无数据</td><td>无数据</td><td>无数据</td><td>无数据</td></tr><%--<%--%><%--}--%><%--%>--%></c:if></table></body>
</html>

使用到的jar
javax.servlet.jar
javax.servlet.jsp.jstl.jar
jstl-impl.jar

访问:
http://localhost:8081/login.jsp
http://localhost:8081/index.jsp
http://localhost:8081/el/el1.jsp
http://localhost:8081/el/el2.jsp
http://localhost:8081/el/el3.jsp
http://localhost:8081/el/el4.jsp
http://localhost:8081/jstl/jstl1.jsp
http://localhost:8081/jstl/jstl2.jsp
http://localhost:8081/jstl/jstl3.jsp
http://localhost:8081/jstl/jstl4.jsp

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

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

相关文章

VSCode 完全指南:释放你的编码潜能

零、简介 在当今的软件开发领域&#xff0c;代码编辑器的选择至关重要&#xff0c;它就像是工匠手中的工具&#xff0c;直接影响着工作效率和成果质量。Visual Studio Code&#xff08;简称 VSCode&#xff09;自问世以来&#xff0c;迅速在全球开发者社区中崭露头角&#xff…

《n8n基础教学》第一节:如何使用编辑器UI界面

在本课中&#xff0c;你将学习如何操作编辑器界面。我们将浏览画布&#xff0c;向您展示每个图标的含义&#xff0c;以及在 n8n 中构建工作流程时在哪里可以找到您需要的东西。本课程基于 n8n 最新版本 。在其他版本中&#xff0c;某些用户界面可能有所不同&#xff0c;但这不会…

gcc g++ makefile CMakeLists.txt cmake make 的关系

gcc&#xff1a;C语言编译器g&#xff1a;C编译器makefile&#xff1a;定义编译规则、依赖关系和构建目标。可以手动编写&#xff0c;也可以由CMakeLists.txt生成cmake&#xff1a;读取CMakeLists.txt文件&#xff0c;生成Makefilemake&#xff1a;构建工具&#xff0c;执行Mak…

SFT 训练器

SFT 训练器 “训练时间到!” 我们现在终于可以创建一个监督微调训练器的实例了: trainer = SFTTrainer( model=model, processing_class=tokenizer, args=sft_config, train_dataset=dataset, )SFTTrainer 已经对数据集进行了预处理,因此我们可以深入查看,了解每个小批次…

Android Material Components 全面解析:打造现代化 Material Design 应用

引言 在当今移动应用开发领域&#xff0c;用户体验(UX)已成为决定应用成功与否的关键因素之一。Google推出的Material Design设计语言为开发者提供了一套完整的视觉、交互和动效规范&#xff0c;而Material Components for Android(MDC-Android)则是将这些设计理念转化为可重用…

Windows使用Powershell自动安装SqlServer2025服务器与SSMS管理工具

安装结果: 安装前准备: 1.下载mssql server 2025安装器 2.下载iso镜像 3.下载好SSMS安装程序,并放到iso同目录下 4.执行脚本开始自动安装

09 RK3568 Debian11 ES8388 模拟音频输出

1、设备树配置 确认自己的i2c,使用sdk带的驱动es8323 /SDK/kernel/sound/soc/codecs/es8323.c es8388_sound: es8388-sound {status = "okay";compatible = "rockchip,multicodecs-card"; rockchip,card-name = "rockchip,es8388-codec"; …

力扣-199.二叉树的右视图

题目链接 199.二叉树的右视图 class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer> res new ArrayList<>();Queue<TreeNode> queue new LinkedList<>();if (root null)return res;queue.offer(root);while …

Android Bitmap 完全指南:从基础到高级优化

在 Android 开发中&#xff0c;图像处理是一个核心且复杂的领域&#xff0c;而 Bitmap 作为 Android 中表示图像的基本单位&#xff0c;贯穿了从简单图片显示到复杂图像编辑的各个场景。然而&#xff0c;Bitmap 处理不当往往会导致应用性能下降、内存溢出&#xff08;OOM&#…

unity日志过滤器

背景&#xff1a;之前做游戏的时候和同组的同事聊过说日志过滤尽量不要限制大家怎么使用日志打印的接口&#xff0c;不要加额外的参数&#xff0c;比如多加一个标签string,或者使用特定的接口&#xff0c;枚举。最好就是日志大家还是用Debug.Log无感去用&#xff0c;然后通过勾…

OpenGL Camera

一. lookAt函数的参数含义glm::mat4 view glm::lookAt(cameraPos, // 相机在世界坐标系中的位置&#xff08;任意值&#xff09;cameraPos cameraFront, // 相机看向的目标点&#xff08;位置朝向&#xff09;cameraUp // 相机的"上方向"&#xff08;通…

Android RTMP推送|轻量级RTSP服务同屏实践:屏幕+音频+录像全链路落地方案

一、背景&#xff1a;从“移动终端”到“远程协作节点”&#xff0c;同屏音频录像为何成刚需&#xff1f; 在数字化办公、智慧医疗与远程教育等快速发展的推动下&#xff0c;手机作为随身终端&#xff0c;已不再只是“内容接收者”&#xff0c;而逐步成为远程信息发布与可视化…

NLP 和 LLM 区别、对比 和关系

理解自然语言处理(NLP)和大语言模型(LLM)的区别、对比和关系对于把握现代人工智能的发展非常重要。以下是清晰的分析: 核心定义 NLP (Natural Language Processing - 自然语言处理): 是什么: 一个广阔的计算机科学和人工智能子领域,致力于让计算机能够理解、解释、操作…

Altium 移除在原理图之外的元器件

Altium新手&#xff0c;最近在画原理图的时候&#xff0c;遇见了这种不小心拖到界面外的元器件&#xff0c;发现拖不回来了了&#xff0c;查阅了一下&#xff0c;总结在这里 官方推荐的方法----------------使用“SCH List”面板删除 链接&#xff1a;如何移除在原理图之外的元…

【Linux我做主】细说环境变量

Linux环境变量Linux环境变量github地址前言1. 基本概念环境变量的本质2. 认识常见的环境变量PATH查看PATH修改PATHHOMESHELL其他常见环境变量PWD与OLDPWDLOGNAME与USERSSH_TTY由环境变量理解权限使用系统调用获取环境变量理解权限3. 总结什么是环境变量3. 命令行参数和环境变量…

leecode-15 三数之和

我的解法&#xff08;不是完全解309/314&#xff09;我的思路是定义一个left和一个right&#xff0c;然后在向集合里去查询&#xff0c;看看有没有除了nums[left]&#xff0c;和nums[right]的第三个元素&#xff0c;把这个问题转换为一个遍历查找问题 利用List.contains()方法来…

精通分类:解析Scikit-learn中的KNN、朴素贝叶斯与决策树(含随机森林)

在机器学习领域&#xff0c;分类任务占据核心地位。Scikit-learn作为Python的机器学习利器&#xff0c;提供了丰富高效的分类算法。现在进行初步探讨三种经典算法&#xff1a;K最近邻&#xff08;KNN&#xff09;、朴素贝叶斯&#xff08;Naive Bayes&#xff09;和决策树&…

Galaxea机器人由星海图人工智能科技有限公司研发的高性能仿人形机器人

Galaxea机器人是由星海图人工智能科技有限公司研发的高性能仿人形机器人&#xff0c;具有多种型号&#xff0c;包括Galaxea R1和Galaxea R1 Pro。以下是关于Galaxea机器人的详细介绍&#xff1a; GitHub官网 产品特点 高自由度设计&#xff1a;Galaxea R1是一款全尺寸仿人型机…

python基础:用户输入和 while 循环

一、input() 函数的工作原理input() 函数让程序暂停运行&#xff0c;等待用户输入一些文本。获取用户输入后&#xff0c;Python 将其赋给一个变量&#xff0c;以便使用。message input("Tell me something, and I will repeat it back to you: ") print(message) 结…

开启云服务器mysql本地连接(is not allowed to connect to this mysql server)

is not allowed to connect tothis mmysql server 阿里云上安装的mysql&#xff0c;发现用本地电脑的navicat链接不上。通过了解知道了原因&#xff0c;小二在此写了一篇&#xff0c;省的以后自己在碰到。 错误如图。 aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTU4MTU1My8…