jsp内置对象

news2024/11/14 15:00:37

request

将要介绍request对象的作用范围及其常用的方法。用户每访问一个页面, 就会产生一个HTTP请求。这些请求中一般都包含了请求所需的参数值或者信息, 如果将request对象看作是客户请求的一个实例, 那么这个实例就包含了客户请求的所有数据。因此, 可以通过request来获取客户端和服务器端的信息,如IP地址、传递的参数名和参数值、应用系统名称、服务器主机名称等。

常见方法

方法方法说明
getParameter()取得请求中指定的参数值, 返回String类型, 如果有必要, 需要将取得的参数值转换为合适的类型
getParameterValues()将同名称的参数一次性地读入String类型的数组中
getParameterNames()获取参数名称,返回枚举类型
getMethod()获取客户提交信息的方式,即post或get.
getServletPath()获取JSP页面文件的目录
getHeader()获取HTTP头文件中的指定值,例如accept、user-agent、content-type、content-length等
getRemoteAddr()获取客户的IP地址
getServeName()获取服务器的名称
getServerPort获取服务器的端口号
getContextPath获取项目名称,如果项目为根目录,则得到空的字符串
getHeaders()获取表头信息,返回枚举类型

访问http://localhost:8080/web01_war_exploded/getParameter.jsp
在这里插入图片描述
访问http://localhost:8080/web01_war_exploded/getParameter.jsp?name=john&city=beijing
在这里插入图片描述
如果修改为http://localhost:8080/web01_war_exploded/getParameter.jsp?name=john&city=%E5%8C%97%E4%BA%AC
也可以正常显示
在这里插入图片描述
post请求,新建posttest.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="getParameter.jsp" method="post">
  <table>
    <tr>
      <td>姓名</td>
      <td>
        <input type="text" placeholder="请输入姓名" name="name">
      </td>
    </tr>
    <tr>
      <td>城市</td>
      <td>
        <input type="text" placeholder="请输入所在城市" name="city">
      </td>
    </tr>
  </table>
  <input type="submit" value="提交">
</form>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
可以看到乱码了
在这里插入图片描述
两种方式处理乱码问题

乱码问题

第一种方式
getParameter.jsp增加请求字符串编码设置

<%request.setCharacterEncoding("utf-8");%>

在这里插入图片描述
在这里插入图片描述
getParameter.jsp增加获取字符串时编码重新编码

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "utf-8");
String city = new String(request.getParameter("city").getBytes("ISO-8859-1"), "utf-8");

在这里插入图片描述
在这里插入图片描述
第3种方法, 通过编写一个Servlet过滤器来解决中文乱码问题, 并可以通过配置让过滤器解决所有请求处理字符集的问题,请求处理页面就不用关心字符集处理了。第3种方法可以有效防止上述问题且移植性强。

获取请求的头部信息

<%@ page import="java.util.*" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>获取请求头的头部信息</title>
</head>
<body>
<%
Enumeration<String> enumeration =request.getHeaderNames();
while (enumeration.hasMoreElements()){
    String name = enumeration.nextElement();
    String value = request.getHeader(name);
    if(value==null||"".equals(value)){
        value="空字符串";
    }
%>
<p>表头名称:<%=name%>,对应的值:<%=value%></p>
<%}%>
</body>
</html>

get请求
在这里插入图片描述
post请求
在这里插入图片描述

获取主机和客户机的信息

<%@ page import="java.util.*" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>本地机器信息:</h1>
<p>
    本地机器ip:<%=request.getLocalAddr()%>
</p>
<p>
    本地机器名称:<%=request.getLocalName()%>
</p>
<p>
    本地机器端口:<%=request.getLocalPort()%>
</p>
<h1>客户机信息:</h1>
<p>
    客户主机ip:<%=request.getRemoteAddr()%>
</p>
<p>
    客户主机名称:<%=request.getRemoteHost()%>
</p>
<p>
    客户主机端口:<%=request.getRemotePort()%>
</p>
<h1>服务器信息</h1>
<p>
    服务器ip:<%=request.getServerName()%>
</p>
<p>
    服务器端口:<%=request.getServerPort()%>
</p>
<p>
    网页地址:<%=request.getServletPath()%>
</p>
</body>
</html>

在这里插入图片描述

response

当用户访问一个页面时, 就会产生一个HTTP请求,服务器做出响应时调用的是response 响应包。response 响应包实现的是接口javax.servlet.http.HttpServletResponse。

常用方法

方法方法说明
addHeader(String name,String value)向页面中添加头和对应的值
addCookie(Cookie cookie)添加Cookie信息
sendRedirect(String uri)实现页面重定向
setStatus(int code)设定页面的响应状态代码
setContentType(String type)设定页面的MIME类型和字符集
setCharacterEncoding(String charset)设定页面响应的编码类型
setHeader(String name,String value)设置请求头

设置头信息

设置头信息包括设置页面返回的MIME类型、返回的字符集、页面中的meta等信息。其中设置MIME类型和返回的字符集尤为重要, 因为它关系到页面的显示是否会出现乱码。有两种方法用于设置MIME类型和返回的字符集, 分别如下:

  • response.set ContentType(Stringtype) :其中type的值为“text/html; charset=utf-8”, 当然也可以为其他的MIME类型和字符集。
  • page 指令:基本固定格式为“<%@page contentType="text/html; charset=utf-8"language=“java”%>”
<%
    response.setContentType("text/html;charset=UTF-8");
    String str = new String("这是测试例子".getBytes("ISO-8859-1"), "utf-8");
%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<p>这是一段中文字符</p>
<hr>
<%=str%>
</body>
</html>

在这里插入图片描述
从运行结果可以看出, 脚本中经过转码的文字显示正常, 但在HTML中的字却是乱码。使用page指令设定字符集时, 在写法和处理上都相对简单些, HTML中的中文字不需要转码,而且脚本中的中文字也不需要转码。

<%@page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%
    String str = "这是测试例子";
%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<p>这是一段中文字符</p>
<hr>
<%=str%>
</body>
</html>

在这里插入图片描述
设置头meta信息是指在HTML页面中存在于之间的信息。例如:

  • <meta http-equiv="pragma"content=“no-cache”>:设定禁止浏览器从本地缓存中调取页面内容, 设定后离开网页就不能从Cache中再调用。
  • <meta http-equiv="cache-control"content=“no-cache”>:请求和响应遵循的缓存机制策略。<meta http-equiv="expires"content=“O”>:用于设定网页的到期时间,一旦过期就必须到服务器上重新调用。
  • <meta http-equiv="keywords"content=“keyword 1, keyw ord 2, keyword 3”>:向搜索引擎说明网页的关键字。
  • <meta http-equiv="description"content=“This is my page”>向搜索引擎说明网页的主要内容。
<%@ page import="java.util.*" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<p>
    现在时间是:
    <%
        out.print(""+new Date());
        response.setHeader("refresh","1");
        response.setHeader("descirption","实时显示当前时间");
        response.setHeader("keywords","实时显示当前时间");
        response.setHeader("cache-control","no-cache");
    %>
</p>
</body>
</html>

在这里插入图片描述

页面重定向

<%@ page import="java.util.*" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<p>
    <%
        response.sendRedirect("/index.jsp");
    %>
</p>
</body>
</html>

在这里插入图片描述

session

在Web开发中,session对象同样占据着极其重要的位置,它是一个非常重要的对象,可以用
来判断是否为同一用户,还可以用来记录客户的连接信息等。HTTP协议是一种无状态的协议(不
保存连接状态的协议),每次用户请求在接收到服务器的响应后,连接就关闭了,服务器端与客户
端的连接被断开,因此,如果用户的浏览器还没关闭时又发起请求,那么网站就应该识别出该用户
的情况。在这种情况下,session对象就起到了关键作用。

相关概念

名称说明
会话从用户打开浏览器连接到一个Wb应用或者是某个界面,直至关闭浏览器这个过程称为一个会话。其实打开一个浏览器就意味着打开了一个会话对象
session对象生命周期从用户访问某个页面到关闭浏览器这段时间称为session对象的生命周期,也可以说从会话开始到结束这段时间为session对象的生命周期
session对象与Cookiesession对象与Cookie对象是一一对应关系。JSP引擎会将创建好的session对象存放在对应的Cookie中

常见方法

方法说明
void setAttribute(String name,Object value)将参数名和参数值存放在session对象中
Object getAttribute(String name)返回session中与指定参数绑定的对象,如果不存在就返回null
Enumeration getAttributeName()一个用户一个线程,从而保证多个用户单击同一页面时session对象的唯一性
String getld()获取session对象的ID值
void removeAttribute(String name)移除session中指定名称的参数
long getCreationTime()获取对象创建的时间,返回结果是long型的毫秒数
int getMaxInactivelnterval()获取session对象的有效时间
void setMaxInactivelnterval()设置session对象的有效时间
boolean isNew()用于判断是否为一个新的客户端
void invalidate()使session对象不合法,即失效

获取sessionid

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>
<html>
<body>
<%
    String sessionId = session.getId();
    session.setAttribute("name","john");
    String author = (String)session.getAttribute("author");
    long time = session.getCreationTime();
    Date date = new Date(time);
%>
<p>您访问的是index.jsp</p>
<%=author%>,您的sessionid为<%=sessionId%>
<br>
<p>
    session对象的创建时间为:<%=date%>
</p>
<form action="index02.jsp" method="post">
    <input type="submit" value="跳转index02.jsp">
</form>
<a href="index03.jsp">跳转index03.jsp</a>
</body>
</html>

index02.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>
<html>
<body>
<%
    String sessionId = session.getId();
    String author = (String)session.getAttribute("name");
    long time = session.getCreationTime();
    Date date = new Date(time);
%>
<p>您访问的是index02.jsp</p>
<%=author%>,您的sessionid为<%=sessionId%>
<br>
<p>
    session对象的创建时间为:<%=date%>
</p>
<form action="index.jsp" method="post">
    <input type="submit" value="跳转index.jsp">
</form>
<a href="index03.jsp">跳转index03.jsp</a>
</body>
</html>

index03.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>
<html>
<body>
<%
    String sessionId = session.getId();
    String author = (String)session.getAttribute("name");
    session.setAttribute("name","smith");
    long time = session.getCreationTime();
    Date date = new Date(time);
%>
<p>您访问的是index03.jsp</p>
<%=author%>,您的sessionid为<%=sessionId%>
<br>
<p>
    session对象的创建时间为:<%=date%>
</p>
<form action="index.jsp" method="post">
    <input type="submit" value="跳转index.jsp">
</form>
<a href="index02.jsp">跳转index02.jsp</a>
</body>
</html>

在这里插入图片描述
点击跳转index02.jsp
在这里插入图片描述
点击跳转index03.jsp
在这里插入图片描述
点击跳转index.jsp
在这里插入图片描述

用户登录信息保存

login.jsp

<%@ page language="java" pageEncoding="utf-8" import="java.util.*" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";

%>
<!doctype html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>登录页面</title>
</head>
<body>
<h1>用户登录页面</h1>
<form action="validate.jsp" method="post">
    用户名称:
    <input type="text" name="username">
    <br>
    用户密码:
    <input type="password" name="pwd">
    <br>
    <input type="submit" value="登录">
</form>
</body>
</html>

validate.jsp

<%@ page language="java" pageEncoding="utf-8" import="java.util.*" %>
<!doctype html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>验证页面</title>
</head>
<body>
<%!
  //声明一个用户集合,模拟从数据库中取出数据
Map<String,String> map =new HashMap<String,String>();
//声明验证的标识
  boolean flag = false;
%>
<%
//像集合中添加数据
  map.put("John","123456");
  map.put("Smith","123456");
  map.put("Bob","123456");
  map.put("Bruth","123456");
%>
<%!
  /**
   * 声明验证方法
   * @param username
   * @param password
   * @return
   */
  boolean validate(String username,String password){
    String pwd = map.get(username);
    if(password!=null&&password.equals(pwd)){
      return true;
    }
    return false;
  }
%>
<%
//获取页面提交的用户名与密码
  String username = request.getParameter("username");
  String pwd = request.getParameter("pwd");
  if(username==null||username==""||pwd==null||pwd==""){
    response.sendRedirect("login.jsp");
    return;
  }
  flag = validate(username,pwd);
  if(flag){
    //保存到session中
    session.setAttribute("username",username);
    session.setAttribute("pwd",pwd);
    response.sendRedirect("class.jsp");
  }
%>
<%if(flag){%>
<p>用户登录</p>
<%}else{%>
<a href="login.jsp">重新登录</a>
<%}%>
</body>
</html>

class.jsp

<%@ page language="java" pageEncoding="utf-8" import="java.util.*" %>
<!doctype html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>班级管理页面</title>
</head>
<body>
<%
    String name = (String) session.getAttribute("username");
    if (name == null) {
        response.sendRedirect("login.jsp");
    }
%>
<table>
    <tr>
        <td>姓名</td>
        <td>小明</td>
    </tr>
    <tr>
        <td>年龄</td>
        <td>18</td>
    </tr>
</table>
<a href="logout.jsp">退出登录</a>
</body>
</html>

logout.jsp

<%@ page language="java" pageEncoding="utf-8" import="java.util.*" %>
<%
session.removeAttribute("username");
session.invalidate();
response.sendRedirect("login.jsp");
%>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
退出登录即可
在这里插入图片描述

application

application对象实现的接口为javax.servlet.ServletContext,它的生命周期是从application对象创建到应用服务器关闭, 也就是说当服务器关闭时application对象才消失。可以将它视为Web应用的全局变量,当服务器运行时有效,如果关闭服务器,其中保存的信息也就消失了。

方法解释
getAttribute(String name)获得存放在application中的含有关键字为name的对象
setAttribute(String name, Object obj)将关键字name的指定对象obj放进application对象中
Enumeration getAttribute Names()获取application中所有参数的名字, 返回值是枚举类型
removeAttribute(String name)移除application对象中name指定的参数值
getServlet Info()获取Servlet的当前版本信息
getContext(String uri path)获取uri path指定路径的context内容
getRealPath(String path)获取指定文件的实际路径
getMimeType(String file)获取指定的文件格式

获取指定页面的路径

<%@page import="java.util.*" pageEncoding="utf-8" language="java" %>
<!doctype html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>获取指定页面的路径</title>
</head>
<body>
<p>
    当前服务器版本和名称:
    <%=application.getServerInfo()%>
</p>
<p>
    当前页面jsp的实际路径:
    <%=application.getRealPath("index.jsp")%>
</p>
<p>
    当前页面的URL:
    <%=application.getResource("index.jsp")%>
</p>
<p>
    当前web程序的路径:
    <%=application.getContextPath()%>
</p>
</body>
</html>

在这里插入图片描述

设计一个网页计数器

<%@page import="java.util.*" pageEncoding="utf-8" language="java" %>
<%
    Integer count = (Integer) application.getAttribute("count");
    if (count == null) {
        count = 1;
    } else {
        count++;
    }
    application.setAttribute("count", count);
%>
<!doctype html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>网站计数器</title>
</head>
<body>
<p>欢迎访问本网站,您是第<%=count%>位访问用户!</p>
</body>
</html>

在这里插入图片描述

out

方法方法说明
append(char c)将字符添加到输出流中
clear()清空页面缓存中的内容
close()关闭网页流的输出
flush()网页流的刷新
println()将内容直接打印在HTML标记中
write()与println()方法相似,区别在于println()方法可以输出各种类型的数据,而write方法只能输出与字符相关的数据,例如字符、字符数组、字符串等

输出html

<%@page import="java.util.*" pageEncoding="utf-8" language="java" %>
<!doctype html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Out输出内容</title>
</head>
<body>
<%
    out.println("<h1>");
    out.println("out输出内容");
    out.println("</h1>");
%>
</body>
</html>

在这里插入图片描述

clear方法

<%@page language="java" pageEncoding="utf-8" import="java.util.*" %>
<!doctype html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>out Clear方法</title>
</head>
<body>
<h1>这是html中的内容</h1>
<%
    out.println("<h1>这是out内容</h1>");
    //清除数据
    out.clear();
%>
<h1>这是html中的内容!!</h1>
</body>
</html>

在这里插入图片描述

page

page对象的实质是java.lang.Object对象,它代表转译后的Servlet.。page对象是指当前的JSP页面本身,在实际开发中并不常用。

常见方法

方法解释
getClass()返回当时被转译的Servlet类
hashCode()返回此时被转译的Servlet类的哈希代码
toString()将此时被转译的Servlet类转换成字符串
equals(Object obj)比较此时的对象是否与指定的对象相等
clone()将此时的对象复制到指定的对象中
copy(Object obj)对指定对象进行克隆

案例

<%@ page import="java.util.*" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Page页面</title>
</head>
<body>
<%
int code = page.hashCode();
String str = page.toString();
out.println("page对象的hash码:"+code);
out.println("page对象的字符串:"+str);
%>
</body>
</html>

在这里插入图片描述

config

config对象实现了javax.servlet.ServletConfig接口,它一般用于在页面初始化时传递参数。

常见方法

方法解释
getlnitParameter(String arg0)获得指定的初始化值
getServletName()获得Servlet名字
getServletContext()获得ServletContext值
equals(Object obj)比较此时的对象是否与指定的对象相等
getInitParameterNames()获得初始化值的枚举值
toString()获得此对象的值

案例

修改WEB-INF下的web.xml

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <servlet-name>jspconfigdemo</servlet-name>
        <jsp-file>/config.jsp</jsp-file>
        <init-param>
            <param-name>url</param-name>
            <param-value>http://www.baidu.com</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>jspconfigdemo</servlet-name>
        <url-pattern>/config.jsp</url-pattern>
    </servlet-mapping>
</web-app>
<%@ page import="java.util.*" contentType="text/html;charset=UTF-8" language="java" %>
<!doctype html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<%
String url = config.getInitParameter("url");
String str = config.toString();
out.println("config对象的initParameter方法"+url+"<br/>");
out.println("config对象的toString方法"+str+"<br/>");
%>
</body>
</html>

在这里插入图片描述

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

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

相关文章

Nuxt3 布局layouts和NuxtLayout的使用

Nuxt3是基于Vue3的一个开发框架&#xff0c;基于服务器端渲染SSR&#xff0c;可以更加方便的用于Vue的SEO优化。 用Nuxt3 SSR模式开发出来的网站&#xff0c;渲染和运行速度非常快&#xff0c;性能也非常高&#xff0c;而且可SEO。 接下来我主要给大家讲解下Nuxt3的layouts布…

CF - Li Hua and Pattern

题意&#xff1a;给出了矩阵&#xff0c;里面每个位置分为蓝色或红色&#xff08;数据上用1和0体现了&#xff09;&#xff0c;给出了一个操作次数&#xff0c;每次可以改变一个坐标的颜色&#xff0c;问能否通过操作使得图像旋转180度后不变。 解&#xff1a;很容易想到&…

修改DaemonSet 的/args参数后多个pod重启的顺序

理论 当您修改了DaemonSet的/args参数时&#xff0c;DaemonSet控制器会自动触发Pod的滚动更新。滚动更新的过程是逐个将旧的Pod删除并创建新的Pod&#xff0c;以确保应用程序的高可用性和稳定性。 在进行滚动更新时&#xff0c;DaemonSet控制器会按照以下步骤逐个重启Pod&…

flask+apscheduler+企业微信消息机器人推送

简介&#xff1a;APScheduler是一个轻量级的Python库&#xff0c;用于在后台运行定时任务和延迟任务。它可以轻松地安排任务并支持多种类型的触发器&#xff0c;例如固定间隔、日期/时间表达式、CRON表达式等。APScheduler还提供了多个后台调度器实现&#xff0c;例如基于线程池…

51单片机(五)LCD1602调试工具

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

4月24日~4月26日学习总结

一&#xff0c;刷题目情况&#xff0c;已经完成了8道题目&#xff0c;对于其中一些题目做一下题解。 这个题目的意思是找到的两个位置l和r&#xff0c;为了做到这个数组的l到r的子数组经过排序后&#xff0c;会变成输入的另外一个数组&#xff0c;这个题目的思路就是首先找到在…

【1G-6G】移动通信技术发展

移动通信技术发展 1G 早在1947年&#xff0c;贝尔实验室的科学家就提出了蜂窝通信的概念&#xff0c;在20世纪60年代对此进行了系统的实验。20世纪60年代末、70年代初开始出现了第一个蜂窝&#xff08;Cellular&#xff09;系统。蜂窝的意思是将一个大区域划分为若干个相邻的…

nodejs+vue 古诗词数字化分享平台

目录 第一章 绪论 5 1.1 研究背景 5 1.2系统研究现状 5 1.3 系统实现的功能 6 1.4系统实现的特点 6 1.5 本文的组织结构 6 第二章开发技术与环境配置 7 2.1nodejs语言简介 7 2.2vue技术 8 2.3 MySQL环境配置 8 2.4 MyEclipse环境配置 9 2.5 mysql数据库介绍 9 2.6 B/S架构 9 第…

31-基于GA遗传算法的车辆充电调度系统优化matlab程序

资源地址&#xff1a; 主要内容&#xff1a; 研究多辆电动汽车的充电调度问题&#xff0c;考虑某时段区域范围内有M 辆电动汽车发出充电请求时&#xff0c;周围有N 个充电桩可以提供充电位的调度情况。把当前调度时段电动汽车和充电桩的基本数据加载到调度中心&#xff0c;调度…

基于springboot“漫画之家”系统(附源码、设计文档)

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

Linux->管道和共享内存通信

目录 1 管道 1.1 管道是什么 1.1 匿名管道通信 1.2 父子进程通信 1.3 匿名管道实现多进程文件的写入读取 1.4 命名管道 2 共享内存 1 管道 1.1 管道是什么 管道顾名思义&#xff0c;他就是一个像是连通器一样的东西&#xff0c;原本不存在联系的东西之间建立起一定的关…

数据结构学习记录——平衡二叉树的调整(基本介绍、右单旋、左单旋、左右双旋、右左双旋、平衡因子的计算)

目录 基本介绍 右单旋 左单旋 左右双旋 右左双旋 平衡因子的计算 基本介绍 首先&#xff0c;平衡二叉树也是一棵二叉搜索树。 当我们在一棵平衡二叉树进行插入或者删除时&#xff0c;可能会把原来的平衡二叉树变得不平衡&#xff0c; 这个时候我们就需要进行调整了。…

《个人博客部署上线教程一》Halo搭建个人博客网站

Halo搭建个人博客网站 一、docker部署Halo 目前测试了两种方法安装Halo&#xff0c;第一种是使用Jar包安装:提供JAR包资源&#xff0c;不过因为使用jar包部署需要Java11才可以&#xff0c;我本机使用的是Java8&#xff0c;所以暂时不做调整。第二种是通过docker安装。 1.1 启…

MySQL的学习小结

SQL技巧总结 表连接要展示的最终结果放在前面的select语句里面 小表提取在前面&#xff0c;大表在后面连接 表连接实例 连接查询的时候&#xff0c;注意 on 后面跟的 and 条件是连接条件 &#xff0c;如果要连接后查询 where 可以用 selecter.exam_id,count(distinct er.ui…

C++入门基础知识[博客园长期更新......]

0.博客园链接 博客的最新内容都在博客园当中&#xff0c;所有内容均为原创(博客园、CSDN同步更新)。 C知识点集合 1.命名空间 在往后的C编程中&#xff0c;将会存在大量的变量和函数&#xff0c;因为有大量的变量和函数&#xff0c;所以C的库会非常多。那么在C语言编程中&a…

宽带IPTV一线复用

宽带IPTV一线复用 1、前言 为了解决家里电视墙只预留了一个网口&#xff0c;IPTV无法与路由器共存的问题。 网络环境&#xff1a;中国联通 作者使用的路由器&#xff1a;云易家AX18C 2、光猫获取超管密码 黑龙江&#xff1a;hljcuadmin 重庆&#xff1a;cqadmin 浙江&…

Java笔记_12(集合进阶)

Java笔记_12 一、集合的体系结构二、Collection2.1、迭代器遍历2.2、增强for遍历2.3、Lambda表达式遍历 三、list集合3.1、List集合的特有方法3.2、 List集合的遍历方式 四、数据结构4.1、数据结构概述4.2、栈4.3、队列4.4、数组4.5、链表4.6、树二叉查找树平衡二叉树 4.7、红黑…

Linux系列讲解 —— SSH登录

讲解一下ssh远程登陆的基础知识。 目录 0. 基本原理1. 安装ssh程序&#xff1a;1.1 windows平台(Win10)1.2 Linux平台(Ubuntu18.04) 2. 密码方式远程登录3. 密钥方式远程登录3.1 生成私钥公钥对3.2 将公钥复制到远程机器3.3 尝试ssh远程登录 4. 常见问题4.1 sun192.168.1.21: P…

Pycharm卡顿、反应慢、CPU占用高

环境&#xff1a; Windows10 22H2 pycharm 2020.1.5专业版 pytorch1.10.1 这是第二次遇到这个问题了&#xff0c;之前尝试过更换pycharm版本&#xff0c;问题是解决了&#xff0c;但是又出现了其他bug。今天研究了半天&#xff0c;使用排除法确定了问题所在。 网上的解决方案…

opencv之图像遍历方法详解

1.IplImage IplImage是OpenCV2、3 中CxCore部分基础的数据结构&#xff0c;用来表示图像。IplImage结构体如下所示&#xff1a; typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; /* 版本 (0)*/ int nChannels; /* 大多数OPE…