JavaWeb学习笔记
Maven:自动导入配置jar包。
Maven项目架构管理工具:核心思想:约定大于配置
Maven:环境优化
1.修改web.xml为最新的
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true"></web-app>
2.将Maven的结构搭建完整–java-- resources
重写方法快捷键Ctrl+O;
ServletContext:
package com.jun.servlet;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext context = this.getServletContext();String username="tiantian";context.setAttribute("username",username);System.out.println("小满");}
}
package com.jun.servlet;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class GetServlet extends HelloServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext context = this.getServletContext();String username = (String) context.getAttribute("username");resp.setContentType("text/html");resp.setCharacterEncoding("utf-8");resp.getWriter().print("名字"+username);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true">
<servlet><servlet-name>hello</servlet-name><servlet-class>com.jun.servlet.HelloServlet</servlet-class>
</servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping><servlet><servlet-name>getc</servlet-name><servlet-class>com.jun.servlet.GetServlet</servlet-class></servlet><servlet-mapping><servlet-name>getc</servlet-name><url-pattern>/getc</url-pattern></servlet-mapping>
</web-app>
测试访问
获取初始化参数:
<context-param><param-name>url</param-name><param-value>jdbc:mysql://localhost:3306/mybatis</param-value></context-param><servlet><servlet-name>gp</servlet-name><servlet-class>com.jun.servlet.ServletDemo03</servlet-class></servlet><servlet-mapping><servlet-name>gp</servlet-name><url-pattern>/gp</url-pattern></servlet-mapping>
package com.jun.servlet;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class ServletDemo03 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext context = this.getServletContext();String url=context.getInitParameter("url");resp.getWriter().print(url);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}
请求转发
HttpServletResponse
web服务器接收到客户端的Http请求,针对这个请求,分别会创建一个代表请求的HttpServletRequest对象和代表响应的一个HttpServletResponse
如果获取客户端请求过来的参数:找HttpServletRequest
如果要给客户端响应一些信息:找HttpServletResponse
生成验证码:
package com.jun.servlet;import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;public class ImageServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//如何让浏览器三秒自动刷新一次resp.setHeader("refresh","3");//在内存中创建一个图片BufferedImage image = new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);//得到图片Graphics2D g = (Graphics2D)image.getGraphics();//设置图片背景颜色g.setColor(Color.white);g.fillRect(0,0,80,20);//给图片写数据g.setColor(Color.blue);g.setFont(new Font(null,Font.BOLD,20));g.drawString(makeNum(),0,20);//告诉浏览器,这个请求用图片的方式打开resp.setContentType("image/jpeg");//网站存在缓存,不让浏览器缓存resp.setDateHeader("expires",-1);resp.setHeader("Cache-Control","no-cache");resp.setHeader("Pragma","no-cache");//把图片写给浏览器ImageIO.write(image,"jpg",resp.getOutputStream());}
//生成随机数private String makeNum() {Random random=new Random();String num=random.nextInt(999999)+"";StringBuffer sb=new StringBuffer();for (int i = 0; i < 6-num.length(); i++) {sb.append("0");}num=sb.toString()+num;return num;}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
乱码问题解决
URLEncoder.encode("天意","utf-8")//编码
URLDecoder.decode(cookie.getValue(),"utf-8")//解码
Cookies测试
package com.jun.servlet;import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;public class CookieDemo01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");PrintWriter out= resp.getWriter();Cookie[] cookies = req.getCookies();//服务器从客户端获取Cookieif(cookies!=null){out.write("您上次访问的时间是:");for (int i = 0; i <cookies.length; i++) {Cookie cookie=cookies[i];if (cookie.getName().equals("lastlogintime")){long last=Long.parseLong(cookie.getValue());Date date=new Date(last);out.write(date.toLocaleString());}}}Cookie cookie = new Cookie("lastlogintime",System.currentTimeMillis()+"");//服务器给客户端响应一个Cookiecookie.setMaxAge(24*60*60);//设置cookie有效期resp.addCookie(cookie);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
session和cookie的区别
cookie是把用户的数据写给用户的浏览器,浏览器保存
session是把用户的数据写到用户独占session中,服务器保存
session对象由服务器创建
使用场景:
保存一个登录用户的个人信息
购物车信息
在整个网站中经常使用的数据,我们将它保存在session中
使用session
package com.jun.servlet;import com.jun.servlet.com.jun.pojo.Person;
//import com.jun.servlet.com.jun.pojo.person;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;public class SessionDemo01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//解决乱码问题req.setCharacterEncoding("UTF-8");resp.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=utf-8");//得到SessionHttpSession session = req.getSession();//给session中存东西session.setAttribute("name",new Person("jack",18));//获取Session的IDString sessionId = session.getId();//判断Session是不是新创建的if (session.isNew()){resp.getWriter().write("创建成功,ID:"+sessionId);}else{resp.getWriter().write("已创建"+sessionId);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
package com.jun.servlet.com.jun.pojo;public class Person {private String name;private int age;public Person(){}public Person(String name,int age){this.name=name;this.age=age;}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;}@Overridepublic String toString() {return "person{" +"name='" + name + '\'' +", age=" + age +'}';}
}
package com.jun.servlet;import com.jun.servlet.com.jun.pojo.Person;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;public class SessionDemo02 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//解决乱码问题req.setCharacterEncoding("UTF-8");resp.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=utf-8");//得到SessionHttpSession session = req.getSession();//给session中存东西Person name = (Person) session.getAttribute("name");System.out.println(name.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
package com.jun.servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;public class SessionDemo03 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HttpSession session = req.getSession();session.removeAttribute("name");session.invalidate();//手动关闭Session}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
什么是JSP
Java Server Pages:Java服务器端页面,也和Servlet一样,用于动态Web技术
最大特点:写JSP就像在写HTML
区别:
HTML只给用户提供静态的数据
JSP页面中可以嵌入Java代码,用于给用户提供动态数据
JSP脚本片段
<%int sum=0;for (int i = 0; i <=100 ; i++) {sum+=i;}out.println("<h1>Sum="+sum+"<h1>");%>
JSP脚本再实现
<%for (int i = 0; i <5 ; i++) {%><h1>Hello,World! <%=i%></h1><%}%>
JSP声明
%!static{System.out.println("Loading");}private int globalVar=0;public void kuang(){System.out.println("你好");}%>
JSP注释不会在客户端显示,html注释会在客户端显示。
修改xml文件需要重启web服务器。
9大内置对象
PageContext:存东西
Request:存东西
Response
Session:存东西
Application:【ServletContext】存东西
config:【ServletConfig】
out
page:几乎不用
exception
pageContext.setAttribute("name1","jack1");//保存的数据只在一个页面中有效
request.setAttribute("name2","jack2");//保存的数据只在一次请求中有效
session.setAttribute("name3","jack3");//保存的数据只在一次会话中有效
application.setAttribute("name4","jack4");//保存的数据只在服务器中有效,从打开服务器到关闭服务器
EL表达式:${}
获取数据、执行运算、获取web开发的常用对象
JSP标签
<jsp:forward page="/jsptag2.jsp"><jsp:param name="name" value="tiantian"></jsp:param><jsp:param name="age" value="18"></jsp:param></jsp:forward>
JSTL表达式
JSTL标签库的使用就是为了弥补html标签的不足;它自定义许多标签,可以供我们使用,标签的功能和Java代码一样。
<%--Created by IntelliJ IDEA.User: 星辰Date: 2023/7/27Time: 18:42To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入JSTL核心标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head><title>Title</title>
</head>
<body>
<h4>测试</h4>
<hr>
<form action="coreif.jsp"method="post"><input type="text"name="username"value="${param.username}"><input type="submit"value="登录">
</form>
<%--判断如果提交的用户名是管理员,则登录成功--%>
<c:if test="${param.username=='admin'}" var="isAdmin"><c:out value="管理员欢迎您!"/>
</c:if>
<%--自闭和标签--%>
<c:out value="${isAdmin}"/>
</body>
</html>
编写过滤器
package com.jun.filter;import javax.servlet.*;
import java.io.IOException;public class CharacterEncodingFilter implements Filter {public void init(FilterConfig filterConfig) throws ServletException {System.out.println("chushihua");//初始化web服务器启动,就可以初始化}public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;charset=UTF-8");System.out.println("qian");filterChain.doFilter(servletRequest,servletResponse);//让我们的请求继续走System.out.println("hou");}public void destroy() {System.out.println("xiaohui");//web服务器关闭的时候,过滤就会销毁}
}
在xml文件中配置
<filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>com.jun.filter.CharacterEncodingFilter</filter-class></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/servlet/*</url-pattern></filter-mapping>
实现监听器
package com.jun.listener;import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;public class OnlineCountListener implements HttpSessionListener {//一旦创建,就会触发一次这个事件public void sessionCreated(HttpSessionEvent httpSessionEvent) {ServletContext ctx = httpSessionEvent.getSession().getServletContext();Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");if(onlineCount==null){onlineCount=new Integer(1);}else{int count=onlineCount.intValue();onlineCount=new Integer(count+1);}ctx.setAttribute("OnlineCount",onlineCount);}public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {}
}
在xml中配置
<listener><listener-class>com.jun.listener.OnlineCountListener</listener-class></listener>
导入数据库依赖
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependency>
相关文章:
JavaWeb学习笔记
Maven:自动导入配置jar包。 Maven项目架构管理工具:核心思想:约定大于配置 Maven:环境优化 1.修改web.xml为最新的 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee&…...
ad+硬件每日学习十个知识点(24)23.8.4(时序约束,SignalTap Ⅱ)
文章目录 1.建立时间和保持时间2.为什么要建立时序约束?3.SignalTap Ⅱ4.SignalTap Ⅱ使用方法5.HDL的仿真软件(modelsim)6.阻抗匹配 1.建立时间和保持时间 答: 2.为什么要建立时序约束? 答: 3.Sign…...
FortiGate防火墙日志审计运维
环境介绍 CPU:8核,内存:16GB,硬盘:100GB 操作系统版本:CentOS-7-x86_64-DVD-2003 平台版本:鸿鹄2.7.0 安装组件 安装环境支持确认 鸿鹄计算引擎使用了 AVX2 高级指令集做向量计算加速…...
基于yolo v5与Deep Sort进行车辆以及速度检测与目标跟踪实战
项目实验结果展示: 基于yolo v5与Deep Sort进行车辆以及速度检测与目标跟踪实战——项目可以私聊 该项目可以作为毕业设计,以及企业级的项目开发,主要包含了车辆的目标检测、目标跟踪以及车辆的速度计算,同样可以进行二次开发。 …...
以指标驱动,保险、零售、制造企业开启精益敏捷运营的新范式
近日,以“释放数智生产力”为主题的 Kyligence 用户大会在上海前滩香格里拉大酒店成功举行。大会包含上午的主论坛和下午的 4 场平行论坛,并举办了闭门会议、Open Day 等活动。来自金融、零售、制造、医药等行业的客户及合作伙伴带来了超过 23 场主题演讲…...
MyBatis-动态SQL-foreach
目录 标签有以下常用属性: 小结 <froeach> <foreach>标签有以下常用属性: collection:指定要迭代的集合或数组的参数名(遍历的对象)。item:指定在迭代过程中的每个元素的别名(遍历…...
VUE框架:vue2转vue3全面细节总结(3)路由组件传参
大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人_python人工智能视觉(opencv)从入门到实战,前端,微信小程序-CSDN博客 最新的uniapp毕业设计专栏也放在下方了: https://blog.csdn.net/lbcy…...
音视频技术开发周刊 | 305
每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 大神回归学界:何恺明宣布加入 MIT 「作为一位 FAIR 研究科学家,我将于 2024 年加入麻省理工学院(MIT)电气工程与计算机科学…...
vue 图片base64转化
import html2canvas from ‘html2canvas’ html2canvas(canvasDom, options).then(canvas > { //此时的图片是base64格式的,我们将图片格式转换一下 let type ‘png’; let imgData canvas.toDataURL(type); // 照片格式处理 let _fixType function(type) { …...
TS学习03-类
类 calss A {name: stringconstructor(name:string) {this.name name}greet() {return hello, this.name} } let people new A(RenNing)继承 子类是一个派生类,他派生自父类(基类),通过 extends关键字 派生类通常被称作 子类…...
FastAPI(七)应用配置
目录 一、在apps下新建文件夹config 二、新建配置文件app_conf.py 一、在apps下新建文件夹config 二、新建配置文件app_conf.py from functools import lru_cachefrom pydantic.v1 import BaseSettingsclass AppConfig(BaseSettings):app_name: str "Windows10 插件&qu…...
eclipse Java Code_Style Code_Templates
Preferences - Java - Code Style - Code Templates Eclipse [Java_Code_Style_Code_Templates_ZengWenFeng] 2023.08.07.xml 创建一个新的工程,不然有时候不生效,旧项目可能要重新导入eclipse 创建一个测试类试一试 所有的设置都生效了...
01《Detecting Software Attacks on Embedded IoT Devices》随笔
2023.08.05 今天读的是一篇博士论文 论文传送门:Detecting Software Attacks on Embedded IoT Devices 看了很长时间,发现有一百多页,没看完,没看到怎么实现的。 摘要 联网设备的增加使得嵌入式设备成为各种网络攻击的诱人目标&…...
APP外包开发的学习流程
学习iOS App的开发是一项有趣和富有挑战性的任务,是一个不断学习和不断进步的过程。掌握基础知识后,不断实践和尝试新的项目将使您的技能不断提升。下面和大家分享一些建议,可以帮助您开始学习iOS App的开发。北京木奇移动技术有限公司&#…...
第0章 环境搭建汇总
mini商城第0章 环境搭建汇总 本文是整个mini商城的前置文档,所有用到的技术安装都在本篇文档中有详细描述。所有软件安装不分先后顺序,只是作为一个参考文档,需要用到什么技术软件,就按照文档安装什么软件,切不可一上来全部安装一遍。 文章中有些截图中服务器地址是192.16…...
大数据培训课程-《机器学习从入门到精通》上新啦
《机器学习从入门到精通》课程是一门专业课程,面向人工智能技术服务,课程系统地介绍了Python编程库、分类、回归、无监督学习和模型使用技巧以及算法和案例充分融合。 《机器学习从入门到精通》课程亮点: 课程以任务为导向,逐步学…...
暗黑版GPT流窜暗网 降低犯罪门槛
随着AIGC应用的普及,不法分子利用AI技术犯罪的手段越来越高明,欺骗、敲诈、勒索也开始与人工智能沾边。 近期,专为网络犯罪设计的“暗黑版GPT”持续浮出水面,它们不仅没有任何道德界限,更没有使用门槛,没有…...
数电与Verilog基础知识之同步和异步、同步复位与异步复位
同步和异步是两种不同的处理方式,它们的区别主要在于是否需要等待结果。同步是指一个任务在执行过程中,必须等待上一个任务完成后才能继续执行下一个任务;异步是指一个任务在执行过程中,不需要等待上一个任务完成,可以…...
JAVA Android 正则表达式
正则表达式 正则表达式是对字符串执行模式匹配的技术。 正则表达式匹配流程 private void RegTheory() {// 正则表达式String content "1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台(简称为Java2) &qu…...
【MFC】07.MFC第三大机制:消息映射-笔记
本专栏上两篇文章分别介绍了【MFC】05.MFC第一大机制:程序启动机制和【MFC】06.MFC第二大机制:窗口创建机制,这篇文章来为大家介绍MFC的第三大机制:消息映射 typfd要实现消息映射,必须满足的三个条件: 类必…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
