[JavaWeb 基础增强][Servlet基础][Servlet 3.0+ 从XML配置到注解配置]

文章目录

  • [JavaWeb 基础增强][Servlet基础][Servlet 3.0+ 从XML配置到注解配置]
  • 前言
  • 各版本更新内容
  • Servlet 2.5及之前的配置
    • 使用xml配置servlet
    • 多Servlet时的配置
  • Servlet 3.0 及之后的配置
    • @WebServlet 注解
          • @WebServlet 主要属性列表
    • @WebFilter
          • @WebFilter 的常用属性
    • @WebInitParam 注解
          • @WebInitParam 的常用属性
    • @WebListener
          • @WebListener 的常用属性
  • Sevlet 3.0/4.0的一些其他新特性
    • 文件上传支持
          • @MultipartConfig注解 的常用属性
    • 使用Java配置加载框架
    • 服务器推送

前言

做JavaWeb开发的 不可能不知道Servlet 知道Servlet是JavaWeb应用的基础

不过搞懂的恐怕不多 毕竟实际开发多使用框架 Servlet被封装在最底层

但是Servlet版本不断演进 新的变化总应该学习和知晓

各版本更新内容

  • Servlet 1.0/2.0 初始的Servlet 功能很简陋 现已无学习必要
  • Servlet 2.2 引入自包含web应用概念
  • Servlet 2.3 增加过滤器Filter和过滤器链filter chain
    增加上下文\会话监听器context\session Listener
  • Servlet 2.4 增强请求处理的功能
  • Servlet 2.5 支持注解 简化的web.xml配置
  • Servlet 3.0 使用注解配置代替xml配置
  • Servlet 3.1 引入异步I/O处理
  • Servlet 4.0 支持HTTP/2 协议

Servlet 2.5及之前的配置

传统的Servlet 是使用web.xml文件配置的
众所周知十分的繁琐 而和此保持一致的框架
比如Spring (3.0之前) 因为配置太过繁杂
而被讥讽为xml地狱

使用xml配置servlet

建立一个web项目

项目结构

–src
|–java
|–resource
|–webapp

在java目录下源码目录新建servlet类

public class HelloServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("Get Http Connect...");response.getWriter().println("Get Http Connect Success");}
}

在webapp目录下的WEB-INF
建立web应用配置文件web.xml

    <display-name>First Web Application</display-name><description>第一个网络服务应用</description><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>First</servlet-name><servlet-class>tv.ciyuan2.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>First</servlet-name><url-pattern>/Hello</url-pattern></servlet-mapping>
  • 每个Servlet首先必须注册
    使用标签进行注册 子标签指定servlet名
    指定servlet的全限定路径 表明是哪个具体的类

  • 然后要把Servlet映射到URL地址
    使用标签进行映射
    子标签指定要映射的Servlet 此名名称要和之前注册的相同
    子标签映射URL地址 此处必须加上 / 符号 否则访问不到

其他标签如 可以指定欢迎页面

一个Servlet时还可以接受 能想象到多个Servlet实例时配置将会多么繁琐

多Servlet时的配置

在前面的基础上再添加多个Servlet

如登录 注册 提示等等

    <display-name>First Web Application</display-name><description>第一个网络服务应用</description><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>First</servlet-name><servlet-class>tv.ciyuan2.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>First</servlet-name><url-pattern>/Hello</url-pattern></servlet-mapping>   <servlet><servlet-name>Login</servlet-name><servlet-class>tv.ciyuan2.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>Login</servlet-name><url-pattern>/Login</url-pattern></servlet-mapping>  <servlet><servlet-name>Regist</servlet-name><servlet-class>tv.ciyuan2.RegistServlet</servlet-class></servlet><servlet-mapping><servlet-name>Regist</servlet-name><url-pattern>/Regist</url-pattern></servlet-mapping>  <servlet><servlet-name>Prompt</servlet-name><servlet-class>tv.ciyuan2.PromptServlet</servlet-class></servlet><servlet-mapping><servlet-name>Prompt</servlet-name><url-pattern>/Prompt</url-pattern></servlet-mapping>

web程序 过滤器必不可少

再添加上编码过滤器

<display-name>First Web Application</display-name><description>第一个网络服务应用</description><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>CharactorEncodingFilter</filter-name><filter-class>filter.CharactorEncodingFilter</filter-class></filter><filter><filter-name>HtmlFilter</filter-name><filter-class>filter.HtmlFilter</filter-class></filter><filter-mapping><filter-name>CharactorEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>HtmlFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><servlet><servlet-name>First</servlet-name><servlet-class>tv.ciyuan2.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>First</servlet-name><url-pattern>/Hello</url-pattern></servlet-mapping>   <servlet><servlet-name>Login</servlet-name><servlet-class>tv.ciyuan2.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>Login</servlet-name><url-pattern>/Login</url-pattern></servlet-mapping>  <servlet><servlet-name>Regist</servlet-name><servlet-class>tv.ciyuan2.RegistServlet</servlet-class></servlet><servlet-mapping><servlet-name>Regist</servlet-name><url-pattern>/Regist</url-pattern></servlet-mapping>  <servlet><servlet-name>Prompt</servlet-name><servlet-class>tv.ciyuan2.PromptServlet</servlet-class></servlet><servlet-mapping><servlet-name>Prompt</servlet-name><url-pattern>/Prompt</url-pattern></servlet-mapping>

非常的繁杂 可以说是接近xml地狱了

所以JavaEE 6的Servlet 3.0标准中 提供了新的解决方案
使用注解初始化Servlet

Servlet 3.0 及之后的配置

Servlet 3.0 之后可以使用注解来配置 Servlet Filter Listener等Java Web组件

Servlet 3.0的注解支持 在web.xml中是可以设置的 web.xml的顶层标签 < web-app > 有一个 metadata-complete 属性 设置为false时则启用注解和web插件支持
true时则只初始化web.xml配置中的内容
默认当然是false 也就是启用注解和插件支持

@WebServlet 注解

@WebServlet 注解,用于代替在web.xml注册Servlet类的< servlet >,< servlet-mapping >
标签 可以方便的定义一个Servlet

还是刚才的HelloServlet 使用注解来配置

@WebServlet(name = "HelloServlet",urlPatterns="/hello")
public class HelloServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("Get Http Connect...");response.getWriter().println("Get Http Connect Success");}
}

简单了许多 只需一个注解 就可以配置成功
用过SpringMVC,Jersey等框架的 可以发现非常类似

都是通过注解标志 来指定请求处理 路径映射的

@WebServlet 主要属性列表
属性名 类型 描述
name String 指定 Servlet 的 name 属性,等价于 < servlet-name>。如果没有显式指定,则该 Servlet 的取值即为类的全限定名。
value String[] 该属性等价于 urlPatterns 属性。两个属性不能同时使用。
urlPatterns String[] 指定一组 Servlet 的 URL 匹配模式。等价于 < url-pattern> 标签。
loadOnStartup int 指定 Servlet 的加载顺序,等价于 < load-on-startup> 标签。
initParams WebInitParam[] 指定一组 Servlet 初始化参数,等价于 < init-param> 标签。
asyncSupported boolean 声明 Servlet 是否支持异步操作模式,等价于 < async-supported> 标签。
description String 该 Servlet 的描述信息,等价于 < description> 标签。
displayName String 该 Servlet 的显示名,通常配合工具使用,等价于 < display-name> 标签。

常用的就是映射路径的urlPatterns属性
初始化参数的inti-param属性
加载顺序的loadOnStartup 属性
很多教程里面把启动框架的servlet(如Spring)设置为loadOnStartup=1
就是为了第一个加载框架以便首先启动
(当然现在一般都是加载框架启动监听器 在Servlet初始化之前就启动框架)

@WebFilter

@WebFilter 用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器,等同于web.xml中< filter>标签

@WebFilter 的常用属性
属性名 类型 描述
filterName String 指定过滤器的 name 属性,等价于 < filter-name>
value String[] 该属性等价于 urlPatterns 属性。但是两者不应该同时使用。
urlPatterns String[] 指定一组过滤器的 URL 匹配模式。等价于 < url-pattern> 标签。
servletNames String[] 指定过滤器将应用于哪些 Servlet。取值是 @WebServlet 中的 name 属性的取值,或者是 web.xml 中 < servlet-name> 的取值。
dispatcherTypes DispatcherType 指定过滤器的转发模式。具体取值包括:
ASYNC、ERROR、FORWARD、INCLUDE、REQUEST。
initParams WebInitParam[] 指定一组过滤器初始化参数,等价于 < init-param> 标签。
asyncSupported boolean 声明过滤器是否支持异步操作模式,等价于 < async-supported> 标签。
description String 该过滤器的描述信息,等价于 < description> 标签。
displayName String 该过滤器的显示名,通常配合工具使用,等价于 < display-name> 标签。

一个登录过滤器


@WebFilter(filterName="LoginFilter",urlPatterns = "/hello") public class LoginFilter implements Filter {    @Overridepublic void init(FilterConfig filterConfig) throws ServletException {    System.out.println("LoginFilter Strat");}    @Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {    HttpServletRequest httpServletRequest=(HttpServletRequest)request;String userid=Optional.ofNullable((String)httpServletRequest.getSession().getAttribute("userid")).orElseGet(()->"");if(userid.isEmpty()){  response.getWriter().println("未登录 登陆后再试");  }else{chain.doFilter(request,response);}}@Overridepublic void destroy() {   } }

@WebInitParam 注解

该注解通常不单独使用,而是配合 @WebServlet 或者 @WebFilter 使用。它的作用是为 Servlet 或者过滤器指定初始化参数,这等价于 web.xml 中 < servlet> 和 < filter> 的 < init-param> 子标签。

@WebInitParam 的常用属性
属性名 类型 是否可选 描述
name String 指定参数的名字,等价于 < param-name>。
value String 指定参数的值,等价于 < param-value>。
description String 关于参数的描述,等价于 < description>。

这个标签是和@WebServlet 或者 @WebFilter 配合使用的
比如 使用阿里巴巴的Druid数据库连接池时
配置管理界面时

配置Druid的登录和管理界面


@WebServlet(urlPatterns = "/druid/*",initParams={@WebInitParam(name="allow",value=""),// IP白名单 (没有配置或者为空,则允许所有访问)@WebInitParam(name="loginUsername",value="admin"),// 用户名@WebInitParam(name="loginPassword",value="admin"),// 密码@WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能}) public class DruidStatViewServlet extends StatViewServlet { }

从上可知 @WebInitParam是编写在@WebServler注解的initParam标签之中的

配置Druid的资源过滤器

@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",initParams={@WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源}) public class DruidFilter extends WebStatFilter { }

同样 @WebInitParam也可以编写在@WebFilter注解的initParam标签之中的

@WebListener

该注解用于将类声明为监听器,被 @WebListener 标注的类必须实现以下至少一个接口:

  • ServletContextListener
  • ServletContextAttributeListener
  • ServletRequestListener
  • ServletRequestAttributeListener
  • HttpSessionListener
  • HttpSessionAttributeListener

该注解使用非常简单,其属性如下:

@WebListener 的常用属性
属性名 类型 是否可选 描述
value String 该监听器的描述信息。

一个监听来访客户的网络地址的监听器

@WebListener(value="VisitListener")`
public class VisitListener implements ServletRequestListener {    @Overridepublic void requestInitialized(ServletRequestEvent sre) {    String ipaddress=sre.getServletRequest().getRemoteHost();System.out.println("id address="+ipaddress);}   }

如此,则不需要在 web.xml 中配置 < listener> 标签了。它等价的 web.xml 中的配置形式如下:

<listener>
<listener-class>*.VisitListener</listener-class>
</listener>

Sevlet 3.0/4.0的一些其他新特性

文件上传支持

使用@MultipartConfig注解 启用文件上传支持

过去需要借助第三方工具 Servlet3.0以后就不需要了

@WebServlet(name = "UploadServlet",urlPatterns = "/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {@Overridepublic void init() throws ServletException {System.out.println("UploadServlet Strat");}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Collection<Part> parts=request.getParts();//此处一个Part对应一个上传的文件}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}
@MultipartConfig注解 的常用属性
属性名 类型 是否可选 描述
fileSizeThreshold int 当数据量大于该值时,内容将被写入文件。
location String 存放生成的文件地址。
maxFileSize long 允许上传的文件最大值。默认值为 -1,表示没有限制。
maxRequestSize long 针对该 multipart/form-data 请求的最大数量,默认值为 -1,表示没有限制。

使用Java配置加载框架

使用web.xml配置框架加载 大部分人应该都是很熟悉了

原理是在web.xml中配置监听器或者Servlet
这样在应用容器启动时会自动加载框架的启动器

那么 使用注解后 应该怎样加载框架呢

JavaEE 也提供了解决方案

那就是 ServletContainerInitializer

javax.servlet.ServletContainerInitializer

源码

public interface ServletContainerInitializer {public void onStartup(Set<Class<?>> c, ServletContext ctx)throws ServletException; 
}

所有实现这接口的类 它的*OnStratip()*方法
将在web应用容器启动的时候被调用

  • 例如Spring

在Srping中是SpringServletContainerInitializer
这个类实现了ServletContainerInitializer

所以容器 启动时会自动 加载SpringServletContainerInitializer的onStratup方法

@HandlesTypes(WebApplicationInitializer.class)
public class SpringServletContainerInitializer implements ServletContainerInitializer {//入参 webAppInitializerClasses 即包括所有webAppInitializer类型的Class 通常都是Spring的Java形式的配置文件@Overridepublic void onStartup(@Nullable Set<Class<?>> webAppInitializerClasses, ServletContext servletContext)throws ServletException {List<WebApplicationInitializer> initializers = new LinkedList<>();if (webAppInitializerClasses != null) {for (Class<?> waiClass : webAppInitializerClasses) {// 如果该Class 不是接口,不是抽象类,并且是WebApplicationInitializer类型的类if (!waiClass.isInterface() && !Modifier.isAbstract(waiClass.getModifiers()) &&WebApplicationInitializer.class.isAssignableFrom(waiClass)) {try {//实例化该类,并加入到initializers集合中initializers.add((WebApplicationInitializer)ReflectionUtils.accessibleConstructor(waiClass).newInstance());}catch (Throwable ex) {throw new ServletException("Failed to instantiate WebApplicationInitializer class", ex);}}}}if (initializers.isEmpty()) {servletContext.log("No Spring WebApplicationInitializer types detected on classpath");return;}servletContext.log(initializers.size() + " Spring WebApplicationInitializers detected on classpath");AnnotationAwareOrderComparator.sort(initializers);//遍历initializers集合中的类for (WebApplicationInitializer initializer : initializers) {//调用其onStartup方法 启用其配置的内容initializer.onStartup(servletContext);}}
}

而 我们需要重写的Spring配置类 AbstractAnnotationConfigDispatcherServletInitializer

public abstract class AbstractAnnotationConfigDispatcherServletInitializer

就是一个WebAppInitializerClass的子类
在SpringServletContainerInitializer 启动的时候
就会被加载并调用其方法

这样 框架就被启动起来了

服务器推送

服务端推送 很显然 这是一个为HTTP/2准备的功能

所以这是Servlet 4.0提供的新特性

服务器推送使服务器能预测客户端请求的资源需求。然后,在完成请求处理之前,它可以将这些资源发送到客户端。

客户端发出一个针对该网页的请求。服务器然后分析所请求的页面,确定呈现它所需的资源,并主动将这些资源发送到客户端的缓存(比如大量的图片 视频等流媒体)。

在执行所有这些操作的同时,服务器仍在处理原始网页请求。客户端收到响应时,它需要的资源已经位于缓存中,注意是存放于浏览器缓存。

要推送资源 首先得获取推送器
Servlet通过推送器向客户端发出推送

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {PushBuilder pushBuilder = request.newPushBuilder();}

每次调用 newPushBuilder() 方法时,都将返回 PushBuilder 的新实例。如果服务器推送不可用,newPushBuilder() 将返回null。在某些情况下,客户端可能会为请求事务拒绝服务器推送。如果客户端没有使用安全连接,服务器推送也不会起作用。因此,务必要在对 PushBuilder 实例调用方法之前,针对 null 返回值进行测试。

发送推送内容

PushBuilder pushBuilder = request.newPushBuilder();if (pushBuilder != null) {pushBuilder.path("images/bigBackground.png").push();pushBuilder.path("video/demo.mp4").push();
}
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 采用开源软件建站的麻​烦

    相信很多人用开源软件搭建自己的站点。搭建速度快,功能全,很多资源可供使用 这是很好的优点但是同时带来的麻烦也有不少,容易被人找到漏洞攻击,你需要不停的升级系统,如果不及时跟进,可能面临系统瘫痪的风险也大很多。 Wordpress程​序的强大 据Pingdom 2009年的调查表明…...

    2024/4/11 17:51:24
  2. 分享一个定时自动备份oracle数据库的脚本

    分享一个定时自动备份oracle的脚本#!/bin/sh export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 export PATH=${ORACLE_HOME}:${PATH} workDIR=`pwd` DUMPDIR=/home/oracle/db_bak runDay=`date +%Y%m%d` runTime=`date +%Y%m%d_%H%M` logFile=${workDIR}/log/expdp_${r…...

    2024/4/17 16:20:25
  3. python快速将excel文件转化为txt文件

    在进行数据预处理的时候,我们可能习惯于将用于存储数据的其他格式的文件转换为.txt文件,因为这类文件读取、写入和处理起来都比较高效。这篇博客主要介绍一种快速地将excel文件转化为.txt文件的方法,希望对大家有帮助。我们可以使用xlrd模块读出excel文件中的数据,然后再使…...

    2024/4/12 14:46:23
  4. Servlet 技术简介

    Web技术的发展静态页面阶段用户访问页面过程:用户用浏览器通过HTTP协议请求服务器上的Web页面 服务器上的Web服务器软件接收到请求后,读取URI所标识的资源 在读取的资源上加上消息报头发送给客户端的浏览器。 浏览器解析响应中的HTML数据,想用户呈现内容。 CGI(Common Gat…...

    2024/4/20 16:15:52
  5. 数据结构之---c语言实现循环单链表操作

    //=========杨鑫========================// //循环单链表的实现 #include <stdio.h> #include <stdlib.h>typedef int ElemType; //定义结点类型 typedef struct Node {ElemType data; struct Node *next; }Node,*LinkedList; int co…...

    2024/4/26 15:50:51
  6. oracle 备份文件*.dmp 还原步骤

    oracle 备份文件*.dmp 还原步骤1.SQLPLUS 创建用户和授权登陆: system/manager as sysdba创建用户\密码:create user eam_fuwa identified by eam_fuwa account unlock;用户授权: grant connect,dba,imp_full_database to orcl;2.进入cmd命令,imp导入数据库进…...

    2024/4/17 16:21:25
  7. 从多个txt文档导入excel

    Sub 读取数据()Dim fd As FileDialogSet fd = Application.FileDialog(msoFileDialogFilePicker)Dim NewWB As WorkbookSet NewWB = Workbooks.AddNewWB.Application.ActiveWindow.Caption = "临时数据.xls"With fd.Filters.Clear.Filters.Add "文本文件",…...

    2024/4/17 9:05:12
  8. 推荐本servlet的书

    1,尚学堂马士兵老师讲的servlet和jsp视频就可以了,迅雷就能下到,讲解的清晰易懂,还有实例,你跟着视频一步一步操作就ok2,电子工业出版社的 Java Servlets 2.3编程指南 3,孙卫琴的《Tomcat与Java Web开发技术详解》(第二版) 电子出版社4,Java Servlet & JSP经典实…...

    2024/4/18 7:57:37
  9. 当你开始正式学习建站之前,要做好哪些基本准备才能更好的坚持下去

    每当我们刚开始涉足一个未知的行业、未知的领域的时候,其实在我们的内心中总是有一种莫名的恐惧感,这也许就是人类与之俱来的不确定性。因此当你在初学建站的时候有这样的心理感受完全是正常的,甚至说它是一件在正常不过的事情了。 因此,只要明白每个人在心中其实都会有恐惧…...

    2024/4/12 12:42:14
  10. java实现在线预览--poi实现word、excel、ppt转html

    java实现在线预览 - -之poi实现word、excel、ppt转html ###简介 java实现在线预览功能是一个大家在工作中也许会遇到的需求,如果公司有钱,直接使用付费的第三方软件或者云在线预览服务就可以了,例如永中office、office web 365(http://www.officeweb365.com/)他们都有云在线…...

    2024/4/20 8:52:28
  11. 导出Windows服务器下的Oracle数据库并导入到Linux服务器下的Oracle数据库中。

    说明:1、Windows Oracle数据库操作系统:Windows Server 2008 R2IP地址:192.168.0.128Oracle数据库版本:Oracle11gR1SID:orcl端口:1521Oracle相关账号:账号:system 密码:123456账号:OSYUNWEI 密码:OSYUNWEI账号:OSYUNWEILOG 密码:OSYUNWEILOG2、Linux Oracle数据库操…...

    2024/4/18 18:31:39
  12. 分享最实用的pdf转换成excel格式的方法

    大家都知道excel格式的文档通常保存的都是比较重要的数据,所以大多数朋友都会选择用pdf格式保存,但是后期需要修改时pdf文件就不那么方便了,这是又需要将pdf转回成excel格式,转过去容易,可转回来怎么转呢?下面看小编的方法吧。1.先找到pdf转换软件,将其下载到电脑中;2.…...

    2024/4/17 16:21:30
  13. Servlet入门完全教程

    Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求。尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求。 Servlet必须部署在Java servlet容器才能使用。虽然很多开发者都使用JavaServer Pages(JSP)和Java Server Faces(JSF)…...

    2024/4/20 6:32:13
  14. ORACLE 数据库备份还原命令

    备份,在开始运行中CMDexp ay_user/ay@zhf file=e:/名称.dmp log=e:/log.txt full=y //ay_user 用户名 zhf 密码 要备份的数据库名和地址,log=e:/log.txt 备份生成的日志文件的地址和名称。full=y完全备份 还原,在开始运行中CMDimp zhf/huifeng@zhf file=f:/名称.dmp log=f:/…...

    2024/4/4 22:24:22
  15. 给菜鸟站长的全面易懂的建站教程!

    摘要: 史上最全建站教程。常用镜像,一键触达。为了方便您搭建网站,文档君汇总了阿里云云市场上最常用的应用镜像的使用教程,并提供了教程和云市场镜像的链接,让您一键触达,轻松建站。熟悉搭建云服务器环境的用户,还可以参阅详细的建站教程,浏览并选购云市场产品,个性化…...

    2024/4/20 8:46:27
  16. 获取mysql中的数据并转化为txt或者excel文档

    1. 输出所有用户的物品 $uids = sql_fetch_rows("select uid from sys_user"); foreach($uids as $uid) { $goodText = $uid["uid"];$goodNames = sql_fetch_rows("select name from sys_goods where uid = $uid"); foreach(){$goodText .…...

    2024/4/17 16:22:25
  17. 数据结构 树 层次遍历二叉树 C语言版

    //层次遍历二叉树并输出结点的算法 #include <stdio.h> #include <stdlib.h> typedef struct NNode {char data;struct NNode *LChild;struct NNode *RChild; } BiTNode,*BiTree; //定义二叉树结点和结点指针typedef BiTree QueueElementType; typedef struct No…...

    2024/4/11 17:52:31
  18. 微擎模块 全能自助建站系统1.4.5 独家修复 三模块均包含 去除后门 修复跳转

    此源码本站独家修复 去除后门(其他论坛的开源版本包含后门 卸载模块会删除用户表) 修复域名跳转首页问题 内含详细使用教程压缩包内包含三个模块 请全部安装好1、三个模块全部安装好2、用压缩包内的mysite.html 替换.addons/agent_site/66/template/mobile下的mysite.html此处为…...

    2024/4/18 9:02:53
  19. oracle定时备份与删除过期数据库方法

    set NOWDATE=%date:~0,4%-%date:~5,2%-%date:~8,2% ::用户名 set ORACLE_USERNAME=scott ::密码 set ORACLE_PASSWORD=123456 ::数据库实例名 set ORACLE_DB=kuma1000 ::文件保存位置 set DATA_CURDIR_A0=C:\数据库备份\oracle set DATA_CURDIR_A1=C:\数据库备份\oracle\%NOWDA…...

    2024/4/19 10:42:32
  20. java 将一个数组导出 txt 文件或 excel 里面的一个简单方法

    网上搜了不少方法,java 将数据读取到excel 里面非常麻烦,添加第三方包,还要定义表头,定义工作簿,单元格,并且要一个单元格一个单元格读取。自己又在国外网站搜了一个简单的方法:就像导出 txt 文件那样导出到 excel,只不过把文件名后缀改为 xls,打开文件时用 excel 打开…...

    2024/4/24 22:49:03

最新文章

  1. 【电路笔记】-Twin-T振荡器

    Twin-T振荡器 文章目录 Twin-T振荡器1、概述2、Twin-T振荡器3、Twin-T放大4、Twin-T 振荡器示例5、总结Twin-T 振荡器是另一种 RC 振荡器电路,它使用两个并联的 RC 网络来产生单一频率的正弦输出波形。 1、概述 Twin-T 振荡器是另一种类型的 RC 振荡器,它产生正弦波输出,用…...

    2024/5/10 6:13:25
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/9 21:23:04
  3. 策略模式图

    策略模式 小小的图解 主要的三个角色 Strategy—抽象策略角色ConcreateStrategy—具体策略角色Context—上下文角色 封装了对具体策略的调用可以使用set的依赖注入也可以使用构造方法 核心是上下文角色 只要调用上下文角色就行&#xff0c;实现解耦 策略 工厂 将上下文角…...

    2024/5/8 7:01:36
  4. Redis -- 缓存雪崩问题

    缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。 可能原因 : 同一时间大量的key到期 ; 解决方案&#xff1a; 给不同的Key的TTL添加随机值 利用Redis集群提高服务的可用性 给缓存业务添加降…...

    2024/5/10 0:12:02
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/9 15:10:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/9 4:20:59
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/8 20:48:49
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/8 19:33:07
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/8 20:38:49
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/9 7:32:17
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/9 17:11:10
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57