hibernate关联关系

2023-11-01

前言:今天要分享的知识是hibernate框架的关联关系

码字不易,点个赞

转载请说明!

开发工具:eclipse


目录

一、一对多的配置

二、懒加载

1、定义:懒加载可以这样理解,只加载某一项东西,其他的东西不会加载

2、操作:在我们进行项目的操作时候,就会想到,当自己把订单的id查出来之后,改订单id下面的对应的订单项会不会也同样出来

三、一对多的自关联

1、定义:一对多的自关联就好比做树形菜单的时候,就会出现一个最大的节点,下面会有很多的子节点。

2、案例

 四、多对多的配置

案例


一、一对多的配置

一对多的配置就是一个对应多个,例如:在订单表和订单项表中,一个订单有多个订单项,但是一个订单项只对应一个订单

配置(user.hbm.xml)

实体类:在order中包含了orderitems这个属性,就是实现一对多的路径

package com.zking.two.entity;
 
import java.util.HashSet;
import java.util.Set;
 
public class Order {
//	create table t_hibernate_order
//	(
//	  order_id int primary key auto_increment,
//	  order_no varchar(50) not null
//	);
	private Integer orderId;
	private String orderNo;
	
	//注意:变量属性一定用接口进行接受
	private Set<OrderItem> orderItems = new HashSet<>();
	
	private Integer initOrderItems = 0;//0代表懒加载,1代表强制加载
	
	
	public Integer getInitOrderItems() {
		return initOrderItems;
	}
	public void setInitOrderItems(Integer initOrderItems) {
		this.initOrderItems = initOrderItems;
	}
	public Set<OrderItem> getOrderItems() {
		return orderItems;
	}
	public void setOrderItems(Set<OrderItem> orderItems) {
		this.orderItems = orderItems;
	}
	public Integer getOrderId() {
		return orderId;
	}
	public void setOrderId(Integer orderId) {
		this.orderId = orderId;
	}
	public String getOrderNo() {
		return orderNo;
	}
	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo;
	}
	
}

 orderItems

package com.zking.two.entity;
 
public class OrderItem {
//	create table t_hibernate_order_item
//	(
//	  order_item_id int primary key auto_increment,
//	  product_id int not null,
//	  quantity int not null,
//	  oid int not null,
//	  foreign key(oid) references t_hibernate_order(order_id)
//	);
	private Integer orderItemId;
	private Integer productId;
	private Integer quantity;
	private Integer oid;
	
	private Order order;
	public Order getOrder() {
		return order;
	}
	public void setOrder(Order order) {
		this.order = order;
	}
	public Integer getOrderItemId() {
		return orderItemId;
	}
	public void setOrderItemId(Integer orderItemId) {
		this.orderItemId = orderItemId;
	}
	public Integer getProductId() {
		return productId;
	}
	public void setProductId(Integer productId) {
		this.productId = productId;
	}
	public Integer getQuantity() {
		return quantity;
	}
	public void setQuantity(Integer quantity) {
		this.quantity = quantity;
	}
	public Integer getOid() {
		return oid;
	}
	public void setOid(Integer oid) {
		this.oid = oid;
	}
	
}

运行结果

 

二、懒加载

1、定义:懒加载可以这样理解,只加载某一项东西,其他的东西不会加载

2、操作:在我们进行项目的操作时候,就会想到,当自己把订单的id查出来之后,改订单id下面的对应的订单项会不会也同样出来

OrderItemsDao

public class OrderDaoTest {
	private OrderDao orderDao = new OrderDao();
 
	/**
	 * org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.zking.two.entity.Order.orderItems, could not initialize proxy - no Session
	 * 1.正常查询
	 * 2.懒加载异常错误
	 * 3.性能调优
	 */
	@Test
	public void testGet() {
		Order order = new Order();
		order.setOrderId(7);
		order.setInitOrderItems(1);
		Order o = this.orderDao.get(order);
		System.out.println(o.getOrderNo());
		System.out.println(o.getOrderItems());
	}

会出现的懒加载错误

代码

public class OrderDaoTest {
	private OrderDao orderDao = new OrderDao();
 
	/**
	 * org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.zking.two.entity.Order.orderItems, could not initialize proxy - no Session
	 * 1.正常查询
	 * 2.懒加载异常错误
	 * 3.性能调优
	 */
	@Test
	public void testGet() {
		Order order = new Order();
		order.setOrderId(7);
		//order.setInitOrderItems(1);强行加载的代码注释
		Order o = this.orderDao.get(order);
		System.out.println(o.getOrderNo());
		System.out.println(o.getOrderItems());
	}

错误图示 

解决办法就是强行加载,或者将下面要执行代码注释掉

三、一对多的自关联

1、定义:一对多的自关联就好比做树形菜单的时候,就会出现一个最大的节点,下面会有很多的子节点。

2、案例

实体类

package com.zking.two.entity;
 
import java.util.HashSet;
import java.util.Set;
 
public class TreeNode {
	private Integer nodeId;
	private String nodeName;
	private Integer treeNodeType;
	private Integer position;
	private String url;
	private TreeNode parent;
	private Set<TreeNode> children = new HashSet<TreeNode>();
	private Integer initChildren = 0;
 
	public Integer getNodeId() {
		return nodeId;
	}
 
	public void setNodeId(Integer nodeId) {
		this.nodeId = nodeId;
	}
 
	public String getNodeName() {
		return nodeName;
	}
 
	public void setNodeName(String nodeName) {
		this.nodeName = nodeName;
	}
 
	public Integer getTreeNodeType() {
		return treeNodeType;
	}
 
	public void setTreeNodeType(Integer treeNodeType) {
		this.treeNodeType = treeNodeType;
	}
 
	public Integer getPosition() {
		return position;
	}
 
	public void setPosition(Integer position) {
		this.position = position;
	}
 
	public String getUrl() {
		return url;
	}
 
	public void setUrl(String url) {
		this.url = url;
	}
 
	public TreeNode getParent() {
		return parent;
	}
 
	public void setParent(TreeNode parent) {
		this.parent = parent;
	}
 
	public Set<TreeNode> getChildren() {
		return children;
	}
 
	public void setChildren(Set<TreeNode> children) {
		this.children = children;
	}
 
	public Integer getInitChildren() {
		return initChildren;
	}
 
	public void setInitChildren(Integer initChildren) {
		this.initChildren = initChildren;
	}
 
//	@Override
//	public String toString() {
//		return "TreeNode [nodeId=" + nodeId + ", nodeName=" + nodeName + ", treeNodeType=" + treeNodeType
//				+ ", position=" + position + ", url=" + url + ", children=" + children + "]";
//	}
 
	@Override
	public String toString() {
		return "TreeNode [nodeId=" + nodeId + ", nodeName=" + nodeName + ", treeNodeType=" + treeNodeType
				+ ", position=" + position + ", url=" + url + "]";
	}
	
 
}

xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="com.zking.two.entity.TreeNode" table="t_hibernate_sys_tree_node">
		<id name="nodeId" type="java.lang.Integer" column="tree_node_id">
			<generator class="increment" />
		</id>
		<property name="nodeName" type="java.lang.String"
			column="tree_node_name">
		</property>
		<property name="treeNodeType" type="java.lang.Integer"
			column="tree_node_type">
		</property>
		<property name="position" type="java.lang.Integer"
			column="position">
		</property>
		<property name="url" type="java.lang.String"
			column="url">
		</property>
		
		<many-to-one name="parent" class="com.zking.two.entity.TreeNode" column="parent_node_id"/>
		
		<set name="children" cascade="save-update" inverse="true">
			<key column="parent_node_id"></key>
			<one-to-many class="com.zking.two.entity.TreeNode"/>
		</set>
	</class>
</hibernate-mapping>

Dao方法

package com.zking.two.dao;
 
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
 
import com.zking.two.entity.TreeNode;
import com.zking.two.util.SessionFactoryUtil;
 
public class TreeNodeDao {
	public TreeNode load(TreeNode treeNode) {
		Session session = SessionFactoryUtil.getSession();
		Transaction transaction = session.beginTransaction();
		TreeNode t = session.load(TreeNode.class, treeNode.getNodeId());
		if(t != null && new Integer(1).equals(treeNode.getInitChildren())) {
			Hibernate.initialize(t.getChildren());
			Hibernate.initialize(t.getParent());
		}
		transaction.commit();
		session.close();
		return t;
	}
}

运行结果

 四、多对多的配置

例如在老师与班级的关系中,一个老师可能对应着多个班级,而班级会对应这不同的多个任课老师,而一般老师与班级只会建立两张表储存数据,而还会再建立一张中间表,以描述关系,这就构成了多对多的关联关系。

而多对多,以任何一方做参照看来,都是一对一,所以可以将一个多对多关系理解为两个一对多关系,而在hibernate中,也就是双方都有一对多的关联关系。而这里的一对多关系,是和中间表的关系。(中间表不建立实体类)

案例

entity

package com.zking.two.entity;
 
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
 
public class Book implements Serializable{
//	book_id int primary key auto_increment,
//	   book_name varchar(50) not null,
//	   price float not null
	private Integer bookId;
	private String bookName;
	private Float price;
	
	private Set<Category> categories = new HashSet<Category>();
	private Integer initCategories = 0;
 
	public Integer getInitCategories() {
		return initCategories;
	}
 
	public void setInitCategories(Integer initCategories) {
		this.initCategories = initCategories;
	}
 
	public Integer getBookId() {
		return bookId;
	}
 
	public void setBookId(Integer bookId) {
		this.bookId = bookId;
	}
 
	public String getBookName() {
		return bookName;
	}
 
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
 
	public Float getPrice() {
		return price;
	}
 
	public void setPrice(Float price) {
		this.price = price;
	}
 
	public Set<Category> getCategories() {
		return categories;
	}
 
	public void setCategories(Set<Category> categories) {
		this.categories = categories;
	}
 
	@Override
	public String toString() {
		return "Book [bookId=" + bookId + ", bookName=" + bookName + ", price=" + price + "]";
	}
 
	public Book(Integer bookId, String bookName) {
		super();
		this.bookId = bookId;
		this.bookName = bookName;
	}
 
	public Book() {
		super();
	}
	
	
}
package com.zking.two.entity;
 
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
 
public class Category implements Serializable{
//	category_id int primary key auto_increment,
//	   category_name varchar(50) not null
	private Integer categoryId;
	private String categoryName;
	private Set<Book> books = new HashSet<Book>();
	public Integer getCategoryId() {
		return categoryId;
	}
	public void setCategoryId(Integer categoryId) {
		this.categoryId = categoryId;
	}
	public String getCategoryName() {
		return categoryName;
	}
	public void setCategoryName(String categoryName) {
		this.categoryName = categoryName;
	}
	public Set<Book> getBooks() {
		return books;
	}
	public void setBooks(Set<Book> books) {
		this.books = books;
	}
	@Override
	public String toString() {
		return "Category [categoryId=" + categoryId + ", categoryName=" + categoryName + "]";
	}
	
}

dao

package com.zking.two.dao;
 
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
 
import com.zking.two.entity.Book;
import com.zking.two.entity.Category;
import com.zking.two.util.SessionFactoryUtil;
 
 
public class BookDao /*extends BaseDao*/{
	public Integer addBook(Book book) {
		Session session = SessionFactoryUtil.getSession();
		Transaction transaction = session.beginTransaction();
		Integer bid = (Integer) session.save(book);
		transaction.commit();
		session.close();
		return bid;
	}
	
	public Integer addCategory(Category category) {
		Session session = SessionFactoryUtil.getSession();
		Transaction transaction = session.beginTransaction();
		Integer cid = (Integer) session.save(category);
		transaction.commit();
		session.close();
		return cid;
	}
	
	public Category getCategory(Category category) {
		Session session = SessionFactoryUtil.getSession();
		Transaction transaction = session.beginTransaction();
		Category c = session.get(Category.class, category.getCategoryId());
		transaction.commit();
		session.close();
		return c;
	}
	
	public Book getBook(Book book) {
		Session session = SessionFactoryUtil.getSession();
		Transaction transaction = session.beginTransaction();
		Book b = session.get(Book.class, book.getBookId());
		if (b != null && new Integer(1).equals(book.getInitCategories())) {
			Hibernate.initialize(b.getCategories());
		}
		transaction.commit();
		session.close();
		return b;
	}
	
	public void delBook(Book book) {
		Session session = SessionFactoryUtil.getSession();
		Transaction transaction = session.beginTransaction();
		session.delete(book);
		transaction.commit();
		session.close();
	}
	
	public void delCategory(Category category) {
		Session session = SessionFactoryUtil.getSession();
		Transaction transaction = session.beginTransaction();
		Category c = session.get(Category.class, category.getCategoryId());
		if(c!=null) {
			for (Book b : c.getBooks()) {
//				通过在被控方通过主控方来解除关联关系,最后被控方再做删除
				b.getCategories().remove(c);
			}
		}
		session.delete(c);
		transaction.commit();
		session.close();
	}
	
	
	/*
	 * hql讲解用到(需要继承BaseDao)
	 */
	/**
	 * 没有使用BaseDao之前的代码
	 * @param book
	 * @param pageBean
	 * @return
	 */
//	public List<Book> list(Book book, PageBean pageBean) {
//		Session session = SessionFactoryUtil.getSession();
//		Transaction transaction = session.beginTransaction();
//		String hql = "from Book where 1 = 1";
//
//		if (StringUtils.isNotBlank(book.getBookName())) {
//			hql += " and bookName like :bookName";
//		}
//
//		Query query = session.createQuery(hql);
//		
//		if (StringUtils.isNotBlank(book.getBookName())) {
//			query.setParameter("bookName", book.getBookName());
//		}
//
//		if (pageBean != null && pageBean.isPagination()) {
//			query.setFirstResult(pageBean.getStartIndex());
//			query.setMaxResults(pageBean.getRows());
//		}
//		List<Book> list = query.list();
//		transaction.commit();
//		session.close();
//		return list;
//
//	}
	
	/**
	 * 使用BaseDao之后的代码
	 * @param book
	 * @param pageBean
	 * @return
	 */
//	public List<Book> list2(Book book, PageBean pageBean) {
//		Session session = SessionFactoryUtil.getSession();
//		Transaction transaction = session.beginTransaction();
//		String hql = "from Book where 1 = 1";
//		Map<String, Object> map = new HashMap<String, Object>();
//
//		if (StringUtils.isNotBlank(book.getBookName())) {
//			hql += " and bookName like :bookName";
//			map.put("bookName", book.getBookName());
//		}
//		List list = super.executeQuery(session, hql, map, pageBean);
//		transaction.commit();
//		session.close();
//		return list;
//	}
	
	/**
	 * 使用原生SQL
	 * @param book
	 * @param pageBean
	 * @return
	 */
//	public List list3(Book book, PageBean pageBean) {
		String sql = "select b.*,o.* from t_hibernate_book b,t_hibernate_Order o";
//		String sql = "select * from t_hibernate_book";
//		Session session = SessionFactoryUtil.getSession();
//		Transaction transaction = session.beginTransaction();
//		List list = session.createSQLQuery(sql).list();
//		transaction.commit();
//		session.close();
//		return list;
//	}
}

配置

运行结果

 

  到这里就结束了,欢迎大佬指点 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hibernate关联关系 的相关文章

  • Gradle 1.3:build.gradle 不构建类

    这里有一个新问题 我有一个 build gradle 文件apply plugin java在其中 并与 java 项目 包关联 当我跑步时gradle build从命令行我得到 compileJava UP TO DATE process
  • 在 Eclipse 工作区中搜索字符串

    如何在完整的eclipse工作区中搜索字符串 我无法在 Eclipse 工作区中找到文本 但是我无法在工作区中找到指定的字符串 在顶层菜单中 选择 搜索 gt 文件搜索 然后在底部附近 在范围内 有一个选项可以选择整个工作区 为您 文件搜索
  • 为 Eclipse 安装 Mercurial 插件时出错

    我刚刚为 Eclipse 安装了一个 Mercurial 插件 安装过程很顺利 但是安装后 当我重新启动 eclipse 时 显示错误 错误说 发生了多个 Mercurial 错误 请检查错误日志视图以获取详细信息 命令行 hg y deb
  • 在 Mac OSX 上将 JDK 7 或更高版本与 Android Studio 和 Eclipse 一起使用

    尽管已经安装了 JDK 8 Android Studio 和 Eclipse 都要求我安装 JDK 6 网上的几个解决方法告诉我更改 java home 以指向 JDK 8 安装位置 这样 usr libexec java home 和 j
  • ManyToOne 关系上的 Hibernate @Where 注释

    我最近开始重构我的项目 因为我必须在一些表中添加额外的列 额外的列是一个枚举 待定或活动 由于这一更改 我现在需要重构所有查询 以便仅在状态为 活动 时检索行 经过一些研究 我发现我们可以使用 Where 注释来注释实体 当我在简单的列上使
  • 我们可以在没有 hibernate 的情况下使用 jpa 吗

    我是 JPA 的新手 根据我的理解 JPA 是规范 Hibernate 实现 JPA 并提供附加功能以及 JPA 方法 但我正在浏览 JPA 教程 其中使用EntityManager对象我们可以对数据执行 CRUD 而无需使用 Hibern
  • 尽管 JPA Converter 可用,但 org.hibernate.MappingException

    我有一个自己的 Id 类型 public class Id
  • 如何从新类末尾删除空行 - Eclipse

    我目前在 Eclipse Juno 4 2 上工作 但问题也与旧版本的 eclipse 有关 我发现了一个令人恼火的问题 当我们尝试使用默认格式化程序设置创建新类时 Eclipse 在文件末尾放置一个空行 我试图自己弄清楚如何删除这个恼人的
  • 设计抽象类时是否应该考虑序列化问题?

    一般来说这个问题来自Eclipse建议在抽象类上添加串行版本UID 由于该类是抽象类 因此该类的实例永远不会存在 因此它们永远不会被序列化 只有派生类才会被序列化 所以我的问题是放置一个安全 SuppressWarnings serial
  • Intellij IDEA 断点停止在 JAR 中,而不是我的项目的源代码中

    我在 java 文件中设置了一个断点 我通过 maven jetty 插件启动了 jetty 我设置断点的java文件也打包成JAR了 Intellij 在断点处停止 但它显示了打包到 JAR 中的文件而不是 java 文件 它的行为就像我
  • Eclipse 快捷方式查找覆盖某个方法的所有子类

    Is there an Eclipse shortcut to see all class overriding the method m Highlight select put cursor on the method name and
  • Android:R 类停止生成

    我是 android 编程的新手 我正在做 Commsware 教程中的教程 确切地说是 T3 教程 期间我清理了项目 之后 R 类文件停止生成 我删除了该项目 看起来相同的错误正在传播到我正在创建的其他新项目 新创建的项目也会出现此错误
  • (更好的方法)使用 Eclipse 和 XText 获取项目中的文件

    我正在编写一个 XText 编辑器 并进行一些语义突出显示 我正在解析的部分语言引用了文件 这些文件应该存在于项目中 我想根据这些文件是否位于正确的位置来突出显示 目前 我有一个非常丑陋的解决方案 但我确信有更好的方法 public voi
  • 检查更新时 Maven 无限期挂起

    我正在使用 Maven 构建一个项目 我是新手 并且它挂起 mvn package INFO Scanning for projects INFO INFO Building Presentation Reports INFO task s
  • Java环境变量设置方法

    我已将以下行插入 bash profile export GOOGLE APPLICATION CREDENTIALS Users jun Downloads export PATH PATH GOOGLE APPLICATION CRED
  • Hibernate 序列乘以 50 生成“@Id”?

    private static final String SEQUENCE my seq Id GeneratedValue strategy GenerationType SEQUENCE generator SEQUENCE Sequen
  • 如何从 JUnit 测试读取 Maven 属性?

    我正在使用 Maven 3 0 3 和 JUnit 4 8 1 在我的 JUnit 测试中 如何读取 Maven pom xml 文件中定义的 project artifactId 在我的 pom 中 我有
  • Maven 按顺序构建所有内容

    我有一个项目 其中所有项目都有一个父 pom 定义如下
  • Spring Boot 中的 JSTL 支持

    虽然我知道有JSP 支持中的一些限制 http docs spring io spring boot docs current reference html boot features developing web applications
  • Lombok 不适用于 Eclipse Neon

    我下载了lombok jar lombok 1 16 14 jar 并将其放入我的下载中 然后我点击这个 jar 执行正确地识别了我的 MacOS 上的 Eclipse 实例 然后我选择了我想要的实例 Lombok也在pom xml中指定

随机推荐

  • XSS-labs靶场1-13关解法答案

    目录 XSS labs克隆 下载地址 第一关 解法 第二关 解法 第三关 解法 第四关 解法 第五关 解法 第六关 解法 第七关 解法 第八关 解法 第九关 解法 第十关 解法 第十一关 解法 第十二关 解法 第十三关 解法 从XSS pa
  • 关于利用python解压文件出现文件名乱码的问题

    利用python中的zipfile模块解压zip文件会出现文件名乱码的问题 会成为莫名的字符 例如 出现原因 zipfile模块中的源代码如下 if flags 0x800 UTF 8 file names extension filena
  • C++异常详解

    文章目录 前言 一 C语言传统的处理错误的方式 二 C 异常概念 三 异常的使用 3 1 异常的抛出和捕获 3 2 异常的重新抛出 3 3 异常安全 3 4 异常规范 四 C 标准库的异常体系 五 自定义异常体系 六 异常的优缺点 C 异常
  • 创建线程的第三种方式:实现Callable接口(含部分源码解析)

    创建线程的第三种方式 实现Callable接口 package com lqy Multithreading import java util concurrent Callable import java util concurrent
  • 递归和迭代的区别

    http blog csdn net laoyang360 article details 7855860 http www zhihu com question 20278387 深究递归和迭代的区别 联系 优缺点及实例对比 1 概念区分
  • JavaWeb核心技术(上)

    目录 第一章 Servlet核心技术 上 前端相关 1 1 基本概念 常识 1 1 1 C S架构的概念 1 1 2 B S架构的概念 1 1 3 JavaWeb的概念 1 2 HTTP协议 熟悉 1 2 1 HTTP协议的概念 1 2 2
  • Leetcode动态规划部分典型题目分类及总结

    参考内容 https leetcode cn com problems longest palindromic substring solution zhong xin kuo san dong tai gui hua by liweiwe
  • 创建vue脚手架时,npmERR报错的解决方法

    创建vue脚手架 1 我是刚学vue的小白 在安装vue脚手架的时候 遇到了安装时出现的问题 查阅了我几个小时 苦苦在挣扎着 确实难受 想借此机会把它给记录下来 希望能帮助更多的初学者解决疑惑 2 我在安装时遇到了这个问题 当时我一直在网上
  • Ubuntu安装nvidia显卡驱动,CUDA与CUDNN

    本文提到的文件可以在这里下载 链接 https pan baidu com s 1cfo0xqrXoK3pA4pHUN3Mcw 提取码 kdjq 目录 1 安装nvidia显卡驱动 2 安装CUDA 3 安装CUDNN 1 安装nvidia
  • [错误解决] paramiko.ssh_exception.SSHException: Error reading SSH protocol banner

    最近项目中需配置sftp上传下载 配置好环境后连接报错 报错信息如图 paramiko ssh exception SSHException Error reading SSH protocol banner 解决方式一 设置banner
  • 域名解析的查看

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 一 配置域名解析 DNS与Host 1 hosts文件 2 配置DNS 3 Host表解析与DNS机械的次序由文件 etc host conf决定 Hosts优先于DN
  • 图的广度优先遍历 + 拓扑排序(笔记)

    广度优先遍历 模板题 广度优先遍历的大体思路就是 每次扩展当前一步能到达的未标记的点加入队列中并标记 每次也从队列中拿出一个点进行扩展 该题是让求最权值都相等的短路我们就可以利用广度优先搜索来求 include
  • 数据仓库理论知识

    一 数据仓库与数据集市 可以简单理解为数据仓库是面向整个企业 而数据集市是面向某个部门的 数据集市的数据来自数据仓库 当然 如果没有数据仓库 数据集市的数据也可以直接取自业务数据库 1 离线与实时 离线数仓 从业务上看 对已知范围的数据定时
  • linux 动态库 段错误,dlopen加载so动态链接库出现段错误的问题

    so库中暴露出来的函数 写在某基类头文件中 大体如下 ifdef cplusplus extern C endif Object construct return new Object void destroy Object object
  • Linux操作系统基础知识学习

    Q1 什么是GNU Linux与GNU有什么关系 A 1 GNU是GNU is Not Unix的递归缩写 是自由软件基金会 Free Software Foundation FSF 的一个项目 该项目已经开发了许多高质量的编程工具 包括e
  • STM32串口调试一直打印 00 00

    在STM32串口调试过程中 通过printf函数往串口打印英文字母 串口助手却一直收到 00 凭直觉 这种情况一般都是时钟没配置好 但是查代码很难找到原因 经过反复查找 发现是STM32CubeMX中时钟源选择错误 就是下面这个地方 切记一
  • Go 语言运行时环境变量快速导览

    原文 http dave cheney net 2015 11 29 a whirlwind tour of gos runtime environment variables Go 语言运行时环境变量快速导览 介绍 Go Runtime除
  • ubuntu 打包deb并带有安装目录

    0 简介 当在ubuntu下开发了一个工程 期望以deb包的形式发布出去的时候 会涉及到打包操作 基本指令是 dpkg b
  • docker registry2 仓库搭建与使用

    docker registry2 仓库搭建与使用 docker pull registry 1 docker io distribution registry 2 1 1 以TLS证书认证启动docker registry2 产生证书 mk
  • hibernate关联关系

    前言 今天要分享的知识是hibernate框架的关联关系 码字不易 点个赞 转载请说明 开发工具 eclipse 目录 一 一对多的配置 二 懒加载 1 定义 懒加载可以这样理解 只加载某一项东西 其他的东西不会加载 2 操作 在我们进行项