SpringMVC+Spring+MyBatis知识点
目录
一、相关概念
1.关系
2.网页
3.架构
4.URL
5.http
6.https
7.服务器
8.Tomcat
9.Servelet
10.Javaweb作用域对象
11.JSP
二、相关操作
1.RequestDispatcher
2.sendRedirect
4.Session
5.Filter过滤器
6.Listener监听器
7.MVC模型
8.JDBC连接数据库的开发步骤
9.maven
10.浏览器地址时页面处理过程
一、相关概念
1.关系
javase:java基础技术栈,包括javaweb、javaee
javaweb:java开发网站相关技术,包括Servlet、JDBC、Tomcat、Session/Cookie
javaee:Java Platform,Enterprise Edition,构建企业级的面向服务体系结构、微服务、组件等的技术栈,主流框架有Struts + Hibernate + Spring SSH、SpringMVC + Spring + Mybatis SSM、SpringBoot + Spring + Myabtis 新版SSM、微服务架构:MicroService : SpringCloud /Alibaba Cloud 、无服务架构:ServerLess 、服务网格:Service Mesh
2.网页
静态网页:内容都是不变的,由HTML+CSS+JS开发
动态网页:浏览器-》后端程序-》数据库的数据,浏览器和服务器进行数据交互,服务器端根据客户的不同请求动态的生成网页内容,开发模式为前端:HTML + CSS + JS + HTTP、后端:Servlet+Request+Response+Cookie+Session、数据库(类似excel):Mysql
3.架构
CS架构 客户机-服务器,即Client-Server(C/S)结构,缺少通用性。
BS架构 B/S架构即浏览器和服务器架构模式, WEB浏览器是客户端统一了客户端,系统功能实现的核心部分集中到服务器上。
类似于软件与网站的区别。
4.URL
统⼀资源定位符
标准格式: 协议(决定解析⽅式)://服务器IP(区分主机):端⼝(区分不同进程)/路径1(区分后端接口)/路径N ? key1=value1 & key2=value2
5.http
HyperText Transfer Protocol 超文本传输协议,规定好⼀种信息的格式,发送⽅与接 收端要按照这种格式发送或解析数据信息。http连接:客户端发送的每次请求都需要服务器回送响应。
常见协议下的数据格式
http请求
-
请求行
- 请求方法:
get向服务器获取资源,post向服务器提交数据,head和get类似,用于获取报头
- URL地址
- 协议名
-
请求头
- 报文头包含若干个属性 格式为“属性名:属性值”,
- 服务端据此获取客户端的基本信息
-
请求体
- 请求的参数,可以是json对象,也可以是前端表单生成的key=value&key=value的字符串
http响应
-
-
响应行
- 报文协议及版本、状态码
-
-
响应头
- 报文头包含若干个属性 格式为“属性名:属性值”
-
响应正文
- 响应报文体,我们需要的内容,多种形式比如html、json、图片、视频文件等
6.https
Hyper Text Transfer Protocol over SecureSocket Layer,即HTTP + SSL / TLS
可防止数据在传输过程中不被窃取、改变,确保数据的完整性
7.服务器
安装服务器程序监听对应端口的远程电脑,根据用户的请求去获取对应的数据并返回给调用方。
Web服务器和应用服务器是服务器电脑上安装的软件,web服务器处理的是Http协议,包括Apache、IIS、Nginx等;应用服务器还可以处理其他协议,包括Tomcat、Jboss等
8.Tomcat
Apache是web服务器,Tomcat是应用(java)服务器,它是一个servlet容器,是Apache的扩展,是一个开放源代码的Web应用服务器;
Tomcat目录文件:
bin存放启动和关闭tomcat脚本,conf存放配置文件,lib存放Tomcat运行需要的第三方包(jar包之类的),log存放运行的相关日志文件,webapps存放web项目,work:编译后产生的class文件
9.Servelet
JavaServlet,Java编写的运行在服务器上的程序,用于交互式地浏览和生成动态Web内容(接收用户通过浏览器传来的表单数据,或读取数据库信息返回给浏览器查看,创建动态网页)
两个常见的子类:HttpServlet、GenericServlet
HttpServletRequest对象可以获得请求的所有信息。
HttpServletResponse对象,封装了向客户端发送数据、发送响应头,发送响应状态码的方法,用于设置相关信息。
生命周期
Servlet 接口的5个方法:三个生命周期方法(初始化init()方法,在服务器装入 Servlet 时,仅执行一次 ;服务service方法,客户请求HttpServlet 对象被调用;销毁destroy方法,在服务器停止且卸装 Servlet 时,仅执行一次)和两个普通方法
想要具体实现效果可移步
https://mp.csdn.net/mp_blog/creation/editor/146452115
10.Javaweb作用域对象
对象的生命周期,在WEB服务器启动时创建,服务器关闭时销毁
四大作用域对象(用于存取数据):PageContext(页面)->ServletRequest(请求)->HttpSession(会话)->ServletContext(应用,即webapps下的目录,代表了servlet环境上下文的全局存储空间);
11.JSP
Java Server Pages,是一种动态网页开发技术,可用JSP标签在HTML网页中插入Java相关代码。其本身就是一种Servlet,是HttpServlet的子类。
区别:jsp就是在html里面写java代码,servlet就是在java里面写html代码
JSP
<%--Created by IntelliJ IDEA.User: xdclassDate: 2020/5/27Time: 下午10:04To change this template use File | Settings | File Templates.
--%>
<%--JSP组成:在html中嵌套java代码--%>
<%--java代码--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--html页面代码--%>
<html><head><title>$Title$</title></head><body>
小滴课堂</body>
</html>
Servlet
package net.xdclass.web;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;public class UserServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置响应内容resp.setContentType("text/html;charset=utf-8");//设置响应内容类型PrintWriter printWriter = resp.getWriter();printWriter.write("<div> hello world! </div>");//输出响应内容:嵌套html代码}
}
简介:代表服务器的响应,封装了向客户端发送数据、发送响应头,发送响应状态码的方法
JSP表达式的语法格式:(不能用分号结束)<%= 表达式 或者java代码段%>
二、相关操作
1.RequestDispatcher
请求转发,
格式
request.getRequestDispatcher(URL地址).forward(request, response)
过程:客户端(浏览器)发送请求----->服务器(servlet作相应的业务处理------>调用forward将资源)------>返回客户端(浏览器)
servlet类中
//设置请求req的属性存储到request作用域 req.setAttribute("name","xdclass"); User user = new User(); user.setHost("https://xdclass.net"); user.setId(1); user.setName("老王");//设置跳转至index.jsp页面,将数据内容传递过去 req.getRequestDispatcher("/index.jsp").forward(req,response);response.sendRedirect("/index.jsp");
index.jsp中
<hr><%--换行--%> <%--使用EL表达式对JSP页面进行简化 --%>name = ${user.name}<hr>id= ${user.id}<hr>host= ${user.host}
实现效果的过程:直接访问端口号+forward 此时,网页显示页面index(浏览器客户端)的name=由forward转发过来的值,但如果直接访问端口号+index.jsp页面(浏览器客户端)的name是没有值的。
拓展-EL表达式
Expression Language简化JSP,使JSP访问java对象(javaBean)更简单。
格式 ${ } 可通过属性范围来设置其作用范围
对比在JSP中嵌套java代码<%= (String)request.getAttribute("name")%> 等价于EL表达式 ${name}
2.sendRedirect
请求重定向
过程:客户端发送请求,Servlet做出业务逻辑处理------->response.sendRedirect("xxx.jsp")方法----->客户端浏览器重新访问服务器资源“xxx.jsp”------->服务器再次对客户端浏览器做出响应
特点:浏览器可以看到两个请求,取不到request中的存储的数据。
servlet类中
//设置请求req的属性存储到request作用域 req.setAttribute("name","xdclass"); User user = new User(); user.setHost("https://xdclass.net"); user.setId(1); user.setName("老王");//重定向 response.sendRedirect("/index.jsp");
访问浏览器一次时,会同时有index.jsp与forward两个请求出现
3.cookie
由于HTTP协议的无状态性,通过cookie为同个浏览器的多次请求生成一个统一的标识
过程:浏览器发送request请求到服务器------>服务器给请求分配一个唯一标识ID(cookie)和response------>返回给浏览器
特点:由服务端生成,用于标记客户端(浏览器)的唯一标识,在每次网络请求中,都会被传送。通过document.cookie只能获得本网页的cookie,有大小限制。
操作
获取请求的cookie
package net.xdclass.web.controller;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;@WebServlet(name ="cookieServlet",urlPatterns = {"/get_cookie_test"})
public class GetCookieServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取cookie,遍历并打印cookie的相关信息Cookie[] cookies = request.getCookies();for(Cookie cookie : cookies){System.out.println(cookie.getDomain());System.out.println(cookie.getName());System.out.println(cookie.getValue());}}
}
生成cookie请求
package net.xdclass.web.controller;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;@WebServlet("/gene_cookie_test")
public class GeneCookieServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//生成cookie,并设置相关属性Cookie cookie = new Cookie("token","sfwerawefewadaewfafewafa")//20秒过期时间,过期后不会自动携带过去cookie.setMaxAge(20);response.addCookie(cookie);request.getRequestDispatcher("/index.jsp").forward(request,response);}
}
4.Session
由于HTTP协议的无状态性,通过cookie和session让服务端知道多次http请求是否来自同一用户。
过程:浏览器第一次发送request请求到服务器-------->服务器给请求分配一个唯一标识sessionId和response------>返回给浏览器------->服务器在本地创建一个map结构(Session),存储sessionId和浏览器的关系------->第二次访问时会自动带上这个标识sessionId(cookie)
session是服务端自己维护的一个map数据结构,用于记录key-Object上下文内容状态
区别:cookie是保存在客户端,session是存在服务器,session依赖于cookie
操作
获取session请求
package net.xdclass.web.controller;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("/session_servlet")
public class SessionServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取session并打印相关信息HttpSession session = request.getSession();//获取sessionid,java里面叫jsessionidSystem.out.println("sessionid="+session.getId());//创建时间戳,毫秒System.out.println("getCreationTime="+session.getCreationTime());//是否是初次创建,记得情况浏览器的cookie,验证sessionidSystem.out.println("isNew="+session.isNew());//往session存储东西session.setAttribute("name","xdclass.net");}
}
具体实例:
5.Filter过滤器
动态地拦截请求和响应,通过元注解@WebFilter来配置过滤规则(servletNames指定过滤的Servlet;urlPatterns指定 Filter拦截的 URL;filterName指定Filter的名称)
生命周期:
init(容器初始化,即应用启动的时候加载一次) doFilter(命中过滤规则就触发调用chain.doFilter(request, response)方法,执行对应的servlet或url下的资源) destroy(容器销毁,即应用停止的时候调用一次)
相关参数
FilterConfig类(过滤器配置类),通过该类可获取过滤器基本信息;
dispatcherTypes 参数,指定过滤的dispatcher模式(转发模式),不符合不放行。
6.Listener监听器
是实现了特定接口的普通Java类,用于监听其他对象的创建和销毁及其方法执行和属性改变;
javaweb中监听器的作用:监听域对象的创建和销毁,主要包括ServletContextLitener、HttpSessionListener、ServletRequestListener。
实现步骤
创建一个Java类------->该类实现监听器的接口-------->实现监听器接口的所有方法------>用 @WebListener来配置监听器(或者在web.xml文件中配置信息)
具体实例移步
7.MVC模型
Model模型:承载数据用的Bean,即java对象,如实体类User、Dao层对象
View视图:页面比如JSP,为用户提供使用界面,与用户直接进行交互
Controller控制器:将用户请求转发给相应的 Model 进行处理,并根据 Model 的计算结果向用户提供相应响应,如Servlet、Controller
三层架构
视图层 View也叫web层:接收用户提交请求的代码
服务层 Service:系统的业务逻辑
持久层 Dao (Data Access Object):操作数据库的代码
常见的src目录结构
controller 存放控制器;service 存放业务接口;impl 存放业务接口或数据访问接口实现类;
dao 存放数据访问接口;domain 存放实体类;util 存放工具类;listener 存放监听器
filter 存放过滤器;config 存放配置
8.JDBC连接数据库的开发步骤
- 加载数据库连接驱动
- 获取数据连接对象
- 获取语句对象
会话对象有两种Statement和PreparedStatement
- 执行语句
- 处理结果集
- 关闭资源rs.close()、st.close()、conn.close() 注意关闭顺序以及处理异常
9.maven
一个基于项目对象模型(POM)的软件项目管理和综合工具,能够实现自动下载项目依赖库(直接在maven仓库添加配置,指定版本,自动下载),统一Java 项目结构。
仓库包括本地仓库( 用户目录下/.m2/repository/)和远程仓库。
添加依赖包后,Maven检查 pom.xml文件(确定下载的依赖),Maven 首先将从本地资源库获得依赖资源,如果没有找到,它才会从远程仓库去找。
生命周期
对所有的构建过程进行抽象和统一,主要有
clean 清理项目
build 构建处理项目
验证 validate->编译 compile->测试 Test->包装package->检查verify->安装 install->部署 deploy
site 项目文档创建处理
在pom.xml中导入依赖的参考配置网址:https://mvnrepository.com/
10.浏览器地址时页面处理过程
- 解析url地址合法性
- 浏览器检查是否有缓存, 如果有直接显示。
如果没有
- 在发送http请求前,需要域名解析(DNS解析),解析获取对应过的ip地址。
- 浏览器向服务器发起tcp链接,完成tcp三次握手
- 握手成功后,浏览器向服务器发送http请求
- 服务器收到处理的请求,将数据返回至浏览器
- 浏览器收到http响应。
- 浏览器解析响应。如果响应可以缓存,则存入缓存
- 浏览器进行页面渲染
相关文章:
SpringMVC+Spring+MyBatis知识点
目录 一、相关概念 1.关系 2.网页 3.架构 4.URL 5.http 6.https 7.服务器 8.Tomcat 9.Servelet 10.Javaweb作用域对象 11.JSP 二、相关操作 1.RequestDispatcher 2.sendRedirect 3.cookie 4.Session 5.Filter过滤器 6.Listener监听器 7.MVC模型 8.JDBC连接…...
程序化广告行业(58/89):系统架构与广告反作弊深度剖析
程序化广告行业(58/89):系统架构与广告反作弊深度剖析 大家好!在程序化广告这个充满挑战与机遇的领域,不断学习和探索是保持竞争力的关键。今天,我希望和大家一起学习进步,深入了解程序化广告行…...
一周学会Pandas2 Python数据处理与分析-NumPy简介
锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩…...
第二十七章:Python-Aquarel库与多种主题库结合实现Matplotlib美化
资源绑定附上完整资料供读者参考学习! 一、库介绍与安装 1.1 Aquarel库 Aquarel是一个轻量级的Python库,用于简化Matplotlib的样式配置,使数据可视化更加美观和高效。 1.2 Catppuccin库 Catppuccin是一个社区驱动的粉彩主题库࿰…...
leetcode155.最小栈
思路源自 【力扣hot100】【LeetCode 155】最小栈 为了让检索时间达到o(1),采用空间换时间,维护两个栈,第一个栈实现正常的push、pop、top,另一个栈的栈顶每次都只放以一个栈中最小的元素 class MinStack …...
Mysql 中的 MyISAM 引擎
🧱 什么是 MyISAM? MyISAM 是 MySQL 早期的默认存储引擎,特点是结构简单、读取速度快,但不支持事务和行级锁。 它适合那些 读多写少、对事务安全要求不高 的场景,比如旧版博客系统、数据仓库等。 📦 MyISA…...
操作系统、虚拟化技术与云原生及云原生AI简述
目录 操作系统基础 操作系统定义 操作系统的组成 操作系统的分类 Linux操作系统特性 虚拟化技术 概述 CPU虚拟化 内存虚拟化 I/O虚拟化 虚拟化技术 虚拟化平台管理工具 容器 容器与云原生:详细介绍 容器的特点 什么是云原生? 云原生的特点 容器与云原生的…...
Java EE期末总结(第二章)
目录 一、JSP页面里的page指令 二、JSP脚本元素 1、全局声明<%!……%> 2、表达式<%……%> 3、脚本程序段<%……%> 三、文件包含指令include 四、引入标签库指令taglib 五、JSP动作标签 1、包含文件动作标签 2、请求转发动作标签 3、JavaBean动作标签 …...
FreeRTOS任务查询和信息统计API
下面例举几个常见的任务查询API(其余可参考FreeRTOS开发手册): UBaseType_t Priority; Priority uxTaskPriorityGet(QUERYTask_Handler); printf("Task Pri %d \r\n",Priority); TaskStatus_t * TaskStatusArray; UBaseType_t …...
SQLark(百灵连接):一款面向信创应用开发者的数据库开发和管理工具
SQLark(百灵连接)是一款面向信创应用开发者的数据库开发和管理工具,用于快速查询、创建和管理不同类型的数据库系统。 目前可以支持达梦数据库、Oracle 以及 MySQL。 SQL 智能编辑器 基于语法语义解析实现代码补全能力,为你提供…...
Linux | 安装超级终端串口软件连接i.MX6ULL开发板(8)
01 它的安装步骤也非常简单,安装语言选择中文简体,点击确定,如下图所示。 点击下一步,如下图所示。 02...
Qt 事件系统负载测试:深入理解 Qt 事件处理机制
Qt 事件系统负载测试:深入理解 Qt 事件处理机制 文章目录 Qt 事件系统负载测试:深入理解 Qt 事件处理机制摘要引言实现原理1. 自定义事件类型2. 事件队列管理3. 性能指标监控4. 事件发送机制 性能监控实现1. 负载计算2. 内存监控3. 延迟计算 使用效果优化…...
如何评价Manus?
Manus是由Monica公司发布的全球首款通用型AI Agent产品,定位于一个性能强大的通用型助手,能够独立思考、规划并执行复杂任务,直接交付完整的任务成果。 Manus 这个名字灵感来源于拉丁格言 “Mens et Manus”(意为“头脑与双手”),寓意它既能动脑也能动手。 Manus的核…...
AI浪潮下的IT职业转型:医药流通行业传统IT顾问的深度思考
AI浪潮下的IT职业转型:医药流通行业传统IT顾问的深度思考 一、AI重构IT行业的技术逻辑与实践路径 1.1 医药流通领域的智能办公革命 在医药批发企业的日常运营中,传统IT工具正经历颠覆性变革。以订单处理系统为例,某医药集团引入AI智能客服…...
2011-2019年各省地方财政国土资源气象等事务支出决策数数据
2011-2019年各省地方财政国土资源气象等事务支出决策数数据 1、时间:2007-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政国土资源气象等事务支出决策数 4、范围:31省 5、指标说明&#x…...
《微服务概念进阶》精简版
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 什么是微服务(进阶精简版&#x…...
免费送源码:Java+SSM+Android Studio 基于Android Studio游戏搜索app的设计与实现 计算机毕业设计原创定制
摘要 本文旨在探讨基于SSM框架和Android Studio的游戏搜索App的设计与实现。首先,我们详细介绍了SSM框架,这是一种经典的Java Web开发框架,由Spring、SpringMVC和MyBatis三个开源项目整合而成,为开发企业级应用提供了高效、灵活、…...
栈回溯和离线断点
栈回溯和离线断点 栈回溯(Stack Backtrace) 栈回溯是一种重建函数调用链的技术,对于分析栈溢出的根本原因非常有价值。 实现方式 // 简单的栈回溯实现示例(ARM Cortex-M架构) void stack_backtrace(void) {uint32_…...
探索轻量高性能的 Rust HTTP 服务器框架 —— Hyperlane
探索轻量高性能的 Rust HTTP 服务器框架 —— Hyperlane 随着互联网应用对性能和实时性要求的不断提升,选择一个高效且易于扩展的 HTTP 服务器框架变得尤为重要。今天,我们将介绍一个专为 Rust 开发者设计的框架 —— Hyperlane。该框架不仅支持 HTTP 请…...
第四章 表单(3)- 表单验证
在Blazor中,表单的验证可以通过两种方式实现,一种是使用Blazor所提供表单验证特性,另一种是使用ValidationMessageStore进行验证。 表单验证的基础使用(内置特性) 一、内置特性表单验证的开启 Blazor中,使用表单组件<EditFo…...
手撕AVL树
引入:为何要有AVL树,二次搜索树有什么不足? 二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N),因此产生了AVL树,…...
Linux驱动开发练习案例
1 开发目标 1.1 架构图 操作系统:基于Linux5.10.10源码和STM32MP157开发板,完成tf-a(FSBL)、u-boot(SSBL)、uImage、dtbs的裁剪; 驱动层:为每个外设配置DTS并且单独封装外设驱动模块。其中电压ADC测试,采用linux内核…...
Redis 下载 — Ubuntu22.04稳定版,配置
官方文档 : https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/ Nano学习 : 【Linux环境下最先应该掌握的文本编辑器nano】https://www.bilibili.com/video/BV1p8411z7dJ?vd_source5ce003da2a16f44ea73ec9bbc30389e4 Redis配置…...
有没有可以帮助理解高数的视频或者书籍资料?
高数的学习是一个入门很高,但是一旦入门之后,就会变得比较简单的科目。 可是,我们应该怎么入门高数呢?在当年刚开始学习高数的时候,我也有过这样的困惑。 但是,后来我发现,我总是可以在经历一…...
了解拦截器
目录 什么是拦截器 拦截器的基本使用 拦截器的使用步骤 拦截器路径设置 拦截器执行流程 一、什么是拦截器 拦截器是Spring框架提供的核心功能之一,主要用来拦截用户的请求,在指定方法前后,根据业务需要执行预先设定的代码。 开发人员可以…...
Linux / Windows 下 Mamba / Vim / Vmamba 安装教程及安装包索引
目录 背景0. 前期环境查询/需求分析1. Linux 平台1.1 Mamba1.2 Vim1.3 Vmamba 2. Windows 平台2.1 Mamba2.1.1 Mamba 12.1.2 Mamba 2- 治标不治本- 终极版- 高算力版 2.2 Vim- 治标不治本- 终极版- 高算力版 2.3 Vmamba- 治标不治本- 终极版- 高算力版 3. Linux / Windows 双平…...
prism WPF 对话框
项目结构 1.创建对话框 用户控件 Views \ DialogView.xaml <UserControl x:Class"PrismWpfApp.Views.DialogView"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"…...
eventEmitter实现
没有做任何异常处理,简单模拟实现 事件对象的每一个事件都对应一个数组 /*__events {"事件1":[cb1,cb2],"事件2":[cb3,cb4],"事件3":[...],"事件4":[...],};*/class E{__events {};constructor(){}//注册监听回调on(type , callbac…...
Koordinator-NodeInfoCollector
Run 每秒执行一次 func (n *nodeInfoCollector) Run(stopCh <-chan struct{}) {go wait.Until(n.collectNodeInfo, n.collectInterval, stopCh) }collectNodeInfo() 采集node cpu信息采集node numa信息func (n *nodeInfoCollector) collectNodeInfo() {started := time.No…...
洛谷题单3-P5724 【深基4.习5】求极差 最大跨度值 最大值和最小值的差-python-流程图重构
题目描述 给出 n n n 和 n n n 个整数 a i a_i ai,求这 n n n 个整数中的极差是什么。极差的意思是一组数中的最大值减去最小值的差。 输入格式 第一行输入一个正整数 n n n,表示整数个数。 第二行输入 n n n 个整数 a 1 , a 2 … a n a_1,…...
SignalR给特定User发送消息
1、背景 官网上SignalR的demo很详细,但是有个特别的问题,就是没有详细阐述如何给指定的用户发送消息。 2、解决思路 网上整体解决思路有三个: 1、最简单的方案,客户端连接SignalR的Hub时,只是简单的连接,…...
新浪财经股票每天10点自动爬取
老规矩还是先分好三步,获取数据,解析数据,存储数据 因为股票是实时的,所以要加个cookie值,最好分线程或者爬取数据时等待爬取,不然会封ip 废话不多数,直接上代码 import matplotlib import r…...
【CSP】202403-1词频统计
文章目录 算法思路1. 数据结构选择2. 输入处理3. 统计出现的文章数4. 输出结果 代码示例代码优化 样例输入 4 3 5 1 2 3 2 1 1 1 3 2 2 2 2 3 2样例输出 2 3 3 6 2 2算法思路 1. 数据结构选择 vector<int>:用于存储每篇文章的单词列表(可能包含…...
CentOs系统部署DNS服务
1. 安装 Bind 软件包 首先需要安装bind以及相关的工具包,在终端中执行以下命令: bash sudo yum install bind bind-utils -y2. 配置主配置文件 Bind 的主配置文件是/etc/named.conf,你可以使用文本编辑器(如vim)打开…...
LintCode第974题-求矩阵各节点的最短路径(以0为标准)
描述 给定一个由0和1组成的矩阵,求每个单元格最近的0的距离。 两个相邻细胞之间的距离是1。 给定矩阵的元素数不超过10,000。 在给定的矩阵中至少有一个0。 单元格在四个方向上相邻:上,下,左和右。 样例 例1: 输入: [[0,0,0],[0,0,0],[0…...
吴恩达深度学习复盘(6)神经网络的矢量化原理
矢量化基础是线性运算,这里先简单复习一下。线性基本运算基本没什么,大量使用的有点乘和叉乘。 基本例子 1. 矩阵的基本概念 - 矩阵可以看作是一个块或者二维数组,这是对矩阵的一个在计算机计算的直观描述。 2. 向量的点积(内积…...
ISIS多区域配置
一、什么是ISIS多区域 ISIS(Intermediate System to Intermediate System)多区域是指网络被划分为多个逻辑区域(Areas),不同区域之间通过特定的ISIS路由器(Level-1-2)进行路由交互。多区域设计提…...
The emulator process for AVD xxx has terminated
问题描述 离线环境下部署Android虚拟机,启动时报错The emulator process for AVD xxx has terminated,其中xxx为虚拟机名称。 解决过程 可先在C:\Users\admin\AppData\Local\Google\AndroidStudio2024.3\log目录下找到idea.log文件,其中记录…...
Haskell语言的区块链扩展性
Haskell语言的区块链扩展性研究 引言 区块链技术近年来在金融、供应链、物联网等多个领域取得了显著的进展。作为一种分布式账本技术,区块链的核心在于其去中心化、不可篡改和透明性。然而,随着应用的不断深入,区块链面临着可扩展性、性能、…...
第11/100节:三点估算
第11/100节:三点估算 三、完成某信息系统集成项目中的一个最基本的工作单元 A 所需的时间,乐观的估计需 8 天,悲观的估计需 38天,最可能的估计需 20 天,按照三点估算方法进行估算,项目的工期应该为…...
Tourists
一道圆方树恶心题,*3200,不知道为什么不评黑。 这道题很容易直接想到圆方树:因为两个操作如果在树上,都需要树链剖分 线段树维护。而将这么一个普通图转化为一棵树,也就只有圆方树这种形式了。 于是就可以综合使用圆…...
【动态规划】深入动态规划:连续子结构的算法剖析
文章目录 前言例题一、最大子数组和二、环形子数组的最大和三、 乘积最大子数组四、乘积为正数的最长子数组五、等差数列划分六、最长湍流子数组七、单词拆分八、环绕字符串中唯一的子字符串 结语 前言 什么是是动态规划连续子数组、子串系列算法问题? 连续子数组问题通常聚焦…...
结肠镜3D视频数据集-C3VD论文中文版
文章目录 标题作者摘要一、介绍1.1. 相关工作1.1.1. 内镜重建数据集1.1.2. 注册真实和虚拟内窥镜图像1.1.3. 2D-3D注册1.2. 贡献 二、方法2.1. 幻影模型生产2.2. 数据采集2.3. 注册流程概述2.3.1. 数据预处理2.3.2. 目标深度估计2.3.3. 渲染深度帧2.3.4. 边缘损失和优化 2.4. 模…...
封装自己的api签名sdk
api平台接口调用,需要通过签名去核对是不是有效的用户,,一般会给两个key,acceeKey 和 secretKey,第一个相当于用户名,第二个相当于密钥,,,前端通过一定的算法,࿰…...
ASP.NET Core Web API 中 HTTP状态码的分类及对应的返回方法
文章目录 前言一、HTTP状态码分类及常用方法二、具体返回方法示例1) 2xx 成功类2)4xx 客户端错误3)5xx 服务器错误4)其他特殊状态码 三、高级返回方式1)使用 IActionResult 与 ActionResult<T>2)统一…...
函数和模式化——python
一、模块和包 将一段代码保存为应该扩展名为.py 的文件,该文件就是模块。Python中的模块分为三种,分别为:内置模块、第三方模块和自定义模块。 内置模块和第三方模块又称为库内置模块,有 python 解释器自带,不用单独安…...
LeetCode 1817 查找用户活跃分钟数
深入剖析 LeetCode 用户活跃分钟数统计问题 一、题目详情 给定用户在 LeetCode 的操作日志,日志以二维整数数组logs表示,其中每个logs[i][IDi, timei],意味着 ID 为IDi的用户在timei分钟时执行了某个操作。多个用户能够同时执行操作&#x…...
matlab从pytorch中导入LeNet-5网络框架
文章目录 一、Pytorch的LeNet-5网络准备二、保存用于导入matlab的model三、导入matlab四、用matlab训练这个导入的网络 这里演示从pytorch的LeNet-5网络导入到matlab中进行训练用。 一、Pytorch的LeNet-5网络准备 根据LeNet-5的结构图,我们可以写如下结构 import…...
网络:华为HCIA学习笔记:ICMP协议
ICMP(Internet Control Message Protocol)Internet控制消息协议 前言ICMPICMP重定向ICMP差错监测ICMP错误报告ICMP数据包格式ICMP消息类型和编码类型ICMP应用-PingICMP应用-Tracert 总结 前言 Internet控制消息协议ICMP (Internet Control Message Prot…...
导出为更清楚/高质量的图片(.png) | 在Word里面的visio图)
Visio | 将(.vsdx)导出为更清楚/高质量的图片(.png) | 在Word里面的visio图
此时大家在用Visio画完图直接复制到word里面后,如果后期需要重新保存高清图片,但是此时图片在word,是不是很多人会选择直接crtlA截图复制,这样出来的图又不清晰又小,完全不符合你导的审美,接下来跟着我&…...