xml系列篇之xml建模

news2025/1/17 2:55:11

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于xml的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

是什么

为什么要使用xml建模

怎么使用

1.建立Java模型对象的前期准备

2.建立Java模型对象【由上述分析可以知道,我们需要建立三个实体模型】 

3.运用工厂模式填充内容

💡辉辉小贴士:怎么样才知道自己精准掌握了呢?答案就是做个题目爽一爽

需求:对web.xml进行建模,并且通过url-pattern拿到servlet-class


是什么

  • XML建模是一种用于描述和定义XML文档结构的方法
    • 主要目的是为了确保XML文档的结构清晰、明确、规范
    • 在XML建模中,通常采用XML Schema、DTD或RELAX NG等XML文档结构定义语言描述XML文档的结构,其中包括元素、属性、命名空间等信息
    • 通过XML建模,可以准确地定义XML文档的结构,从而使得XML文档的操作和处理更为简便、高效
    • XML建模广泛应用于电子商务、金融管理、政府信息化、Web服务以及数据交换等领域

通俗来理解的话:就是将XML配置文件中的元素、属性、文本信息转换成Java对象的过程  

为什么要使用xml建模

  1. 使用XML建模的主要原因是XML的通用性和灵活性
  2. 使用XML建模可以对XML文档进行结构化描述,有效地减少了文档中存在的歧义和冗余。这有助于避免在XML数据交换过程中出现错误,提高了数据交换的精度和可靠性
  3. XML建模工具也可以提供界面化的编辑和校验功能,帮助开发人员更加方便地创建和维XML文档

⭐⭐总之,使用XML建模可以提高XML文档的规范化程度,降低数据交换的风险,提高数据处理的效率和质量

怎么使用

1.建立Java模型对象的前期准备

首先看一个配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config[
	<!ELEMENT config (action*)>
	<!ELEMENT action (forward*)>
	<!ELEMENT forward EMPTY>
	<!ATTLIST action
	  path CDATA #REQUIRED
	  type CDATA #REQUIRED
	>
	<!ATTLIST forward
	  name CDATA #REQUIRED
	  path CDATA #REQUIRED
	  redirect (true|false) "false"
	>
]>
<!-- config标签:可以包含0~N个action标签 -->
<config>
	<!-- action标签:可以饱含0~N个forward标签 path:以/开头的字符串,并且值必须唯一 非空 type:字符串,非空 -->
	<action path="/regAction" type="test.RegAction">
		<forward name="failed" path="/reg.jsp" redirect="false" />
		<forward name="success" path="/login.jsp" redirect="true" />
	</action>

	<action path="/loginAction" type="test.LoginAction">
		<forward name="failed" path="/login.jsp" redirect="false" />
		<forward name="success" path="/main.jsp" redirect="true" />
	</action>
</config>

对其进行分析

package com.wh.model;

public class Demo1 {

	
	
	/**
	 * 用面向对象的方式去处理xml文件【获取xml文件的内容】
	 * 1.用面向对象思想去形容或是说去封装模型对象(是xml文件)
	 * 2.将xml的内容初始化到到已经描述出来的模型之中
	 */
	
//	config.xml文件中的根节点是config,里面有action标签;
//	action标签中有两个属性(name和type),action中还有子节点forward;
//	forward标签中有两个属性(name,path,redirect);
//	可以往config标签中添加action标签,也可以往action标签中添加forward标签

/**
 * 面向对象去形容xml文件
 */
	//config
	// 在configModel中能够添加actionModel,而且actionModel在configModel中是唯一的,
	// 那么就会有一个容器(也就是属性),能够一对一的去存储actionModel

	//action
	//因为在actionModel中能够添加forwardModel,而且forwardModel在actionModel中是唯一的,
	//那么在actionModel中会有一个容器(属性),可以一对一存储forwardModel
	//actionModel中还有两个属性:name和type
	
	//forward
	//forwardModel中有属性:name,path,redirect
}

2.建立Java模型对象【由上述分析可以知道,我们需要建立三个实体模型】 

①ForwardModel

package com.wh.model;

public class ForwardModel {
	// forwardModel中有属性:name,path,redirect

	private String name;
	private String path;
	private boolean redirect;

	public ForwardModel() {
		// TODO Auto-generated constructor stub
	}

	public ForwardModel(String name, String path, boolean redirect) {
		super();
		this.name = name;
		this.path = path;
		this.redirect = redirect;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPath() {
		return path;
	}

	public void setPath(String path) {
		this.path = path;
	}

	public boolean isRedirect() {
		return redirect;
	}

	public void setRedirect(boolean redirect) {
		this.redirect = redirect;
	}

	@Override
	public String toString() {
		return "ForwardModel [name=" + name + ", path=" + path + ", redirect=" + redirect + "]";
	}

}

②ActionModel

package com.wh.model;

import java.util.HashMap;
import java.util.Map;

public class ActionModel {
	// action
	// forwardModel在actionModel中是唯一的,那么在actionModel中会有一个容器(属性),可以一对一存储forwardModel
	// actionModel中还有两个属性:path和type

	private String path;
	private String type;
	private Map<String, ForwardModel> forwardMap = new HashMap<>();

	public ActionModel() {
		// TODO Auto-generated constructor stub
	}

	public String getPath() {
		return path;
	}

	public void setPath(String path) {
		this.path = path;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	// 在actionModel中能够添加forwardModel
	public void push(ForwardModel forwardModel) {
		forwardMap.put(forwardModel.getName(), forwardModel);
	}

	// 通过name值在action中拿到forward
	public ForwardModel pop(String name) {
		return forwardMap.get(name);
	}

}

③ConfigModel

package com.wh.model;

import java.util.HashMap;
import java.util.Map;

public class ConfigModel {
	// config
	// actionModel在configModel中是唯一的,那么就会有一个容器(也就是属性),能够一对一的去存储actionModel
	
	private Map<String, ActionModel> actionMap=new HashMap<String, ActionModel>();
	
//	在configModel中能够添加actionModel
	public void push(ActionModel actionModel) {
		actionMap.put(actionModel.getPath(), actionModel);
	}
	
	//通过path在config里面拿到action
	public  ActionModel pop(String path) {
		return actionMap.get(path);
	}
	
	public static void main(String[] args) throws Exception {
		//获取第二个action中第二个forward的path
//		ConfigModel configModel = new ConfigModel();
//		ActionModel actionModel = configModel.pop("/loginAction");
//		ForwardModel forwardModel = actionModel.pop("success");
//		System.out.println(forwardModel.getPath());
		//题目需求已经完成,但是我们好像忽略了一个很重要的事,我们只是将xml文件封装了而已,并没有拿到xml文件的内容
		//在这里,我们需要用到设计模式中的工厂模式去获取xml中的内容
		
		ConfigModelFactory c=new ConfigModelFactory();
		ConfigModel build = ConfigModelFactory.build();
		ActionModel pop = build.pop("/loginAction");
		String path = pop.getType();
		System.out.println(path);
		ForwardModel pop2 = pop.pop("success");
		System.out.println(pop2);
		String name = pop2.getName();
		System.out.println(name);
		
	}
}

3.运用工厂模式填充内容

在这里我们需要完成一个需求:获取第二个action中第二个forward的path【在ConfigModel中我们已经做了相应的处理,可是我们还没有拿到xml文件的内容,所以我们需要用到设计模式中的工厂模式去获取xml中的内容】

ConfigModelFactory

package com.wh.model;

import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class ConfigModelFactory {
public static ConfigModel build() throws Exception {
	ConfigModel configModel = new ConfigModel();//示例ConfigModel
	InputStream in = ConfigModelFactory.class.getResourceAsStream("/config.xml");//获取流
	SAXReader sr = new SAXReader();
	Document read = sr.read(in);//读流
	List<Element> actionEles = read.selectNodes("/config/action");//获取节点
	//填充内容到ActionModel
	for (Element actionEle : actionEles) {
		ActionModel actionModel = new ActionModel();//实例
		actionModel.setPath(actionEle.attributeValue("path"));//path
		actionModel.setType(actionEle.attributeValue("type"));//type
		
		//填充内容到ForwardModel
		List<Element> forwardEles = actionEle.selectNodes("forward");
		for (Element forwardEle : forwardEles) {
			ForwardModel forwardModel = new ForwardModel();//实例
			forwardModel.setName(forwardEle.attributeValue("name"));//name
			forwardModel.setPath(forwardEle.attributeValue("path"));//path
			//因为redirect是Boolean类型,所以与上述操作有些许不一样
			forwardModel.setRedirect(!"false".equals(forwardEle.attribute("redirect")));
			actionModel.push(forwardModel);//把forwardModel的内容加到actionModel中
		}
		
		configModel.push(actionModel);//把actionModel的内容加到configModel中
		
	}
	return configModel; 
}

public static void main(String[] args) throws Exception {
	ConfigModel build = ConfigModelFactory.build();
	System.out.println(build);
//	ActionModel actionModel = configModel.pop("/loginAction");
//	ForwardModel forwardModel = actionModel.pop("success");
//	System.out.println(forwardModel.getPath());
	
	ActionModel pop = build.pop("/loginAction");
	System.out.println(pop.getType());
}
}

这样子的话,我们已经将题目的需求完成了,现在只需要测试一下了,可以选择在ConfigModelFactory中测试,也可以选择在ConfigModel中测试,这里博主是在ConfigModel中测试的,话不多说,让我们看看运行结果吧

 

以此类推,当我们熟练之后,就不需要再进行对配置文件的分析了,我们可以直接开始建立java模型对象

💡辉辉小贴士:怎么样才知道自己精准掌握了呢?答案就是做个题目爽一爽

需求:对web.xml进行建模,并且通过url-pattern拿到servlet-class

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
  	<servlet-name>jrebelServlet</servlet-name>
  	<servlet-class>com.zking.xml.JrebelServlet</servlet-class>
  </servlet>
   
  <servlet-mapping>
  	<servlet-name>jrebelServlet</servlet-name>
  	<url-pattern>/jrebelServlet</url-pattern>
  </servlet-mapping>
  
  <servlet>
  	<servlet-name>jrebelServlet2</servlet-name>
  	<servlet-class>com.zking.xml.JrebelServlet2</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>jrebelServlet2</servlet-name>
  	<url-pattern>/jrebelServlet2</url-pattern>
  	<url-pattern>/jrebelServlet3</url-pattern>
  </servlet-mapping>
</web-app>

 建立java模型对象

WebAppModel

package com.wh.model;

import java.util.ArrayList;
import java.util.List;

public class WebAppModel {
	/**
	 * ServletModel
	 */
private List<ServletModel> ServletModelList = new ArrayList<ServletModel>();
public void push(ServletModel servletModel) {
	ServletModelList.add(servletModel);
}
public List<ServletModel> popServletModel() {
	return ServletModelList;
}

/**
 * ServletMappingModel
 */
private List<ServletMappingModel> ServletMappingModelList = new ArrayList<>();
public void push(ServletMappingModel servletMappingModel) {
	ServletMappingModelList.add(servletMappingModel);
}
public List<ServletMappingModel> popServletMappingModel(){
	return ServletMappingModelList;
}





}

ServletModel

package com.wh.model;

import java.util.ArrayList;
import java.util.List;

public class ServletModel {
private ServletNameModel servletNameModel;
private ServletClassModel servletClassModel;

public ServletNameModel getServletNameModel() {
	return servletNameModel;
}
public void setServletNameModel(ServletNameModel servletNameModel) {
	this.servletNameModel = servletNameModel;
}
public ServletClassModel getServletClassModel() {
	return servletClassModel;
}
public void setServletClassModel(ServletClassModel servletClassModel) {
	this.servletClassModel = servletClassModel;
}


}

ServletNameModel

package com.wh.model;

public class ServletNameModel {
	private String content;

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}
	
}

ServletClassModel

package com.wh.model;

public class ServletClassModel {
	private String content;

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}
}

ServletMappingModel

package com.wh.model;

import java.util.ArrayList;
import java.util.List;

public class ServletMappingModel {
	
private ServletNameModel servletNameModel;
public ServletNameModel getServletNameModel() {
	return servletNameModel;
}

public void setServletNameModel(ServletNameModel servletNameModel) {
	this.servletNameModel = servletNameModel;
}



private List<UrlPatternModel> UrlPatternModelList = new ArrayList<UrlPatternModel>();
public void push(UrlPatternModel urlPatternModel) {
	UrlPatternModelList.add(urlPatternModel);
}
public List<UrlPatternModel> popUrlPatternModel(){
	return UrlPatternModelList;
}
}

UrlPatternModel

package com.wh.model;

public class UrlPatternModel {
	private String content;

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}
}

WebAppModelFactory

package com.wh.model;

import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class WebAppModelFactory {
	/**
	 * 填充内容
	 * 
	 * @return webAppModel
	 * @throws Exception
	 */
	public static WebAppModel build() throws Exception {
		WebAppModel webAppModel = new WebAppModel();// 实例化
		InputStream in = ConfigModelFactory.class.getResourceAsStream("/web.xml");// 获取流
		SAXReader sr = new SAXReader();
		Document read = sr.read(in);// 读流

		// 填充内容到servlet
		List<Element> servletEles = read.selectNodes("/web-app/servlet");
		for (Element servletEle : servletEles) {
			// 填充内容到servletNameModel
			Element servletnameEle = (Element) servletEle.selectSingleNode("servlet-name");
			ServletNameModel servletNameModel = new ServletNameModel();
			servletNameModel.setContent(servletnameEle.getText());

			// 填充内容到servletClassModel
			Element servletclassEle = (Element) servletEle.selectSingleNode("servlet-class");
			ServletClassModel servletClassModel = new ServletClassModel();
			servletClassModel.setContent(servletclassEle.getText());

			// 填充内容到servlet
			ServletModel servletModel = new ServletModel();
			servletModel.setServletNameModel(servletNameModel);
			servletModel.setServletClassModel(servletClassModel);
			webAppModel.push(servletModel);
		}

		// 填充内容到servlet-mapping
		List<Element> servletmappingEles = read.selectNodes("/web-app/servlet-mapping");
		for (Element servletmappingEle : servletmappingEles) {
			// 填充内容到servletNameModel
			Element servletnameEle = (Element) servletmappingEle.selectSingleNode("servlet-name");
			ServletNameModel servletNameModel = new ServletNameModel();
			servletNameModel.setContent(servletnameEle.getText());
			// 填充内容到urlPatternModel
			Element urlpatternEle = (Element) servletmappingEle.selectSingleNode("url-pattern");
			UrlPatternModel urlPatternModel = new UrlPatternModel();
			urlPatternModel.setContent(urlpatternEle.getText());
			// 填充内容到servlet-mapping
			ServletMappingModel servletMappingModel = new ServletMappingModel();
			servletMappingModel.setServletNameModel(servletNameModel);
			servletMappingModel.push(urlPatternModel);
			webAppModel.push(servletMappingModel);
		}

		return webAppModel;

	}

	/**
	 * 通过url-pattern拿到servlet-class
	 * 
	 * @param url
	 *            传递进去的url
	 * @return servletclass
	 * @throws Exception
	 */
	public static String obtainservletclass(String url) throws Exception {
		WebAppModel webAppModel = WebAppModelFactory.build();// 拿到填充数据的方法
		String servletclass = " ";// 最终返回的servlet-class
		/**
		 * 操作:先通过url-pattern拿到servlet-name
		 */
		String servletname = " ";// 相应的url-pattern拿到的servlet-name
		// 先遍历url-pattern的父节点servlet-mapping
		List<ServletMappingModel> servletMappingModels = webAppModel.popServletMappingModel();
		for (ServletMappingModel servletMappingModel : servletMappingModels) {
			// 再拿到它的子节点url-pattern并且遍历
			List<UrlPatternModel> popUrlPatternModel = servletMappingModel.popUrlPatternModel();
			for (UrlPatternModel urlPatternModel : popUrlPatternModel) {
				// 如果我传进来的url与我的xml文件中的url-pattern标签中的值相等,那么我就拿到url-pattern同级的servlet-name【因为servlet中也有servlet-name这个标签】
				// 实质上是因为是通过了映射,所以servlet和servlet-mapping中所写的servlet-name需要一致
				if (url.equals(urlPatternModel.getContent())) {
					ServletNameModel servletNameModel = servletMappingModel.getServletNameModel();
					servletname = servletNameModel.getContent();
				}
			}
		}

		/**
		 * 通过servlet-name拿到对应的servlet-class
		 */
		// 先遍历servlet-name的父节点servlet
		List<ServletModel> servletModels = webAppModel.popServletModel();
		for (ServletModel servletModel : servletModels) {

			ServletNameModel servletNameModel = servletModel.getServletNameModel();
			// 如果我已经得到的servletname与servlet-name标签中的值相等,那么就拿到servlet-name同级的servlet-class
			if (servletname.equals(servletNameModel.getContent())) {
				ServletClassModel servletClassModel = servletModel.getServletClassModel();
				servletclass = servletClassModel.getContent();
			}
		}
		return servletclass;
	}

	public static void main(String[] args) throws Exception {
		String obtainservletclass = obtainservletclass("/jrebelServlet");
		System.out.println(obtainservletclass);

	}
}

              好啦,今天的分享就到这了,希望能够帮到你呢!😊😊              

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

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

相关文章

NodeJS Mocha测试⑩④

文章目录 ✨文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持&#x1f618;前言Mocha 1、编写测试 2、SumJS代码 3、使用内置断言库 4、第三方库 chai断言库 5、第三方库 异步断言 6、http测试 7、钩子函数更多包工具总…

【Linux系统命令】——平均负载分析,以及cpu的性能检测,进程上下文切换分析

目录 1 平均负载 1.1概念 1.2 uptime指令&#xff08;检测平均负载&#xff09; 1.3 负载分析 1.4 单核cpu负载分析 1.5 不同时间内的load值分析 1.6 平均负载和cpu使用率的区别 2. 压测命令 2.1 对cpu进行压力测试 2.2 对内存进行压力测试 2.3对磁盘压力测试 2.…

RocketMQ常用操作

RocketMQ历史及发展 如果想要了解RocketMQ的历史&#xff0c;则需了解阿里巴巴中间件团队中的历史 2011年&#xff0c;Linkin(领英&#xff1a;全球知名的职场社交平台)推出Kafka消息引擎&#xff0c;阿里巴巴中间件团队在研究了Kafka的整体机制和架构设计之后&#xff0c;基…

NCI-2

10.5 NFCEE 状态 NFCC 使用此控制消息向 DH 通知启用的 NFCEE 状态的变化。 NFCC 发送 NFCEE_STATUS_NTF 来报告启用的 NFCEE 状态的变化。 对于任何禁用或无响应的 NFCEE&#xff0c;NFCC 不应发送 NFCEE_STATUS_NTF。 当启用 NFCEE 并且 NFCC 检测到与该 NFCEE 通信时存在不…

【图表】echart

文章目录 概述基础概念属性使用简单入门使用柱状图的中间显示数据 来源 概述 ECharts是一款基于JavaScript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。ECharts最初由百度团队开源&#xff0c;并于2…

Power Strings

Power Strings 题面翻译 题意简述&#xff1a; 求一个字符串由多少个重复的子串连接而成。 例如 ababab 由三个 ab 连接而成&#xff0c;abcd 由 abcd 由一个 abcd 连接而成。 输入格式 本题多组数据。 每一组数据仅有一行&#xff0c;这一行仅有一个字符串 s s s。 输…

nmap常用扫描命令

1. nmap扫描一台机器 nmap 192.168.133.672. nmap扫描一台机器,查看打开端口及详细信息 nmap -v 192.168.133.673. nmap 指定端口/端口范围扫描 nmap -p 1-65535 192.168.133.67nmap -p 1-100,135,8080,443 192.168.133.67 <

chatgpt赋能python:Python电脑上图标是什么样子?

Python电脑上图标是什么样子&#xff1f; 在计算机系统中&#xff0c;图标是一种可视化的元素&#xff0c;用于代表具体的应用程序或文件。Python是一种开源的高级编程语言&#xff0c;越来越多的人开始使用它进行软件开发和数据科学。在电脑上&#xff0c;Python的图标是怎样…

简单Web UI 自动化测试框架 seldom

pyse 更名为 seldom WebUI automation testing framework based on Selenium and unittest. 基于 selenium 和 unittest 的 Web UI自动化测试框架。 特点 提供更加简单API编写自动化测试。提供脚手架&#xff0c;快速生成自动化测试项目。自动生成HTML测试报告生成。自带断言方…

3.跑马灯

1.GPIO的输出模式&#xff1a; 推挽模式输出&#xff1a;因为LED0和LED1阳极都是3.3V&#xff0c;需要将阴极设置为低电平才可以点亮LED&#xff1b;操作io口时&#xff0c;必须引入源文件和头文件&#xff1b;关于时钟的文件存放在rcc中&#xff1b; 2.GPIO库函数介绍&#…

【传感器】一种鲁棒的imu比例系数与偏移的校准算法

简介 最近在学习传感器相关的知识&#xff0c;在国外的一篇论文学习过程中&#xff0c;觉得这篇论文的校准方法是个不错的参考。 这种校准简单且比较鲁棒的算法&#xff0c;操作简单&#xff0c;且除了偏移与比例系数&#xff0c;还可以估计出传感器 xyz 轴相对于标准正交三轴…

《Python自动化测试九章经》

Python是当前非常流行的一门编程语言&#xff0c;它除了在人工智能、数据处理、Web开发、网络爬虫等领域得到广泛使用之外&#xff0c;他也非常适合软件测试人员使用&#xff0c;但是&#xff0c;对于刚入行的测试小白来说&#xff0c;并不知道学习Python语言可以用来完成哪些测…

chatgpt赋能python:Python用于炒股

Python用于炒股 随着互联网和数据科学的发展&#xff0c;越来越多的投资者开始依靠计算机和数据科学来进行更高效的投资。Python是一种广泛使用的编程语言&#xff0c;可以帮助投资者更好地处理数据和自动化交易。本文将简要介绍Python如何用于炒股&#xff0c;并分享一些有用…

canvas详解02-样式和颜色控制

在绘制图形的章节里&#xff0c;我只用到默认的线条和填充样式。而在这一章里&#xff0c;我们将会探讨 canvas 全部的可选项&#xff0c;来绘制出更加吸引人的内容。 #色彩 Colors 到目前为止&#xff0c;我们只看到过绘制内容的方法。如果我们想要给图形上色&#xff0c;有两…

捕捉信号/信号的处理步骤

一、信号会在合适的时候被处理 先摆出一个结论&#xff1a;信号会在合适的时候被处理。 当然&#xff0c;这里说的信号默认排除了实时信号&#xff0c;那个是已接收到信号就立马处理信号。 上面说的合适的时候其实就是进程从内核态切换到用户态的时候。 二、何为内核态和用户…

Golang -> Golang 变量

Golang 变量 Golang 变量使用的三种方式变量的声明&#xff0c;初始化和赋值程序中 号的使用数据类型的基本介绍int 的无符号的类型&#xff1a;int 的其它类型的说明:整型的使用细节 小数类型/浮点型小数类型分类浮点型使用细节 字符类型字符类型使用细节字符类型本质探讨 布…

java面向对象部分

在学校时学的比较乱&#xff0c;趁暑假再系统的学一遍 访问权限控制 private&#xff1a;私有&#xff0c;只能被本身类访问 什么都不写&#xff1a;默认&#xff0c;只能被类本身和同包中的其他类访问 protected&#xff1a;受保护的&#xff0c;只能被类本身和同包中的其…

计算物理专题:实对称矩阵特征值的求解问题

我们需要求出一个实对称阵的全部特征值与特征向量实对称矩阵特征值的求解是计算量子力学的基础之一&#xff08;算符是厄米的&#xff09;同时&#xff0c;实对称矩阵的求解也是使用有限差分法解本征方程的重要方法之一 雅克比方法 我知道这个推导过程非常的复杂&#xff0c;所…

计算物理专题:双向打靶法解决本征值问题

计算物理专题&#xff1a;双向打靶法解决本征值问题 双向打靶法全部代码 EigenMethods.py import numpy as np import matplotlib.pyplot as plt from SchrodingerTools import *#type-ode1: ## y(x)f(x)y(x) g(x) ##tips: ##lambda eigen,x:f(eigen,x)def replace_eigen(ei…

365天深度学习训练营-第T3周:天气识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;TensorFlow入门实战&#xff5c;第3周&#xff1a;天气识别&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 我的环境&#xff1a; 语言环境&#xff1a…