菜鸟学习Spring——60s学会Spring与Hibernate的集成

菜鸟学习SSH——目录 菜鸟学习Struts——配置Struts环境菜鸟学习Struts——简易计算器菜鸟学习Struts——bean标签库菜鸟学习Struts——Scope属性菜鸟学习Struts——国际化菜鸟学习Struts——总结菜鸟学习Hibernate——配置Hibernate环境菜鸟学习Hibernate——持久层框架菜鸟学习Hibernate——简单的一个例子菜鸟学习Hibernate——简单的增、删、改、 阅读详情

一、概述。
        Spring与Hibernate的集成在企业应用中是很常用的做法通过Spring和Hibernate的结合能提高我们代码的灵活性和开发效率,下面我就一步一步的给大家讲述Spring如何和Hibernate集成的。
二、代码演示。
导入Hibernate的jar包
Hibernate-3.2/lib/*.jar
Hibernate-3.2/hibernate3.jar
还有导入Spring的相关jar包
我用的数据库是MySql所以要导入MySql的驱动jar包:
mysql-connector-java-3.1.13-bin.jar

目录结构:


Hibernate的实体映射:

Log.java

  1. package com.tgb.usermgr.domain;  
  2.   
  3. import java.util.Date;  
  4.   
  5.   
  6.   
  7. public class Log {  
  8.   
  9.     private int id;  
  10.       
  11.     private String type;  
  12.       
  13.     private String detail;  
  14.       
  15.     private Date time;  
  16.   
  17.     public int getId() {  
  18.         return id;  
  19.     }  
  20.   
  21.     public void setId(int id) {  
  22.         this.id = id;  
  23.     }  
  24.   
  25.     public String getType() {  
  26.         return type;  
  27.     }  
  28.   
  29.     public void setType(String type) {  
  30.         this.type = type;  
  31.     }  
  32.   
  33.     public String getDetail() {  
  34.         return detail;  
  35.     }  
  36.   
  37.     public void setDetail(String detail) {  
  38.         this.detail = detail;  
  39.     }  
  40.   
  41.     public Date getTime() {  
  42.         return time;  
  43.     }  
  44.   
  45.     public void setTime(Date time) {  
  46.         this.time = time;  
  47.     }  
  48.       
  49. }  
	package com.tgb.usermgr.domain;
	
	import java.util.Date;
	
	
	
	public class Log {
	
		private int id;
		
		private String type;
		
		private String detail;
		
		private Date time;
	
		public int getId() {
			return id;
		}
	
		public void setId(int id) {
			this.id = id;
		}
	
		public String getType() {
			return type;
		}
	
		public void setType(String type) {
			this.type = type;
		}
	
		public String getDetail() {
			return detail;
		}
	
		public void setDetail(String detail) {
			this.detail = detail;
		}
	
		public Date getTime() {
			return time;
		}
	
		public void setTime(Date time) {
			this.time = time;
		}
		
	}


User.java

  1. package com.tgb.usermgr.domain;  
  2.   
  3. public class User {  
  4.   
  5.     private int id;  
  6.       
  7.     private String name;  
  8.   
  9.     public int getId() {  
  10.         return id;  
  11.     }  
  12.   
  13.     public void setId(int id) {  
  14.         this.id = id;  
  15.     }  
  16.   
  17.     public String getName() {  
  18.         return name;  
  19.     }  
  20.   
  21.     public void setName(String name) {  
  22.         this.name = name;  
  23.     }  
  24.       
  25. }  
	package com.tgb.usermgr.domain;
	
	public class User {
	
		private int id;
		
		private String name;
	
		public int getId() {
			return id;
		}
	
		public void setId(int id) {
			this.id = id;
		}
	
		public String getName() {
			return name;
		}
	
		public void setName(String name) {
			this.name = name;
		}
		
	}


Log.hbm.xml

  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping>  
  6.     <class name="com.tgb.usermgr.domain.Log" table="t_log">  
  7.         <id name="id">  
  8.             <generator class="native"/>  
  9.         </id>  
  10.         <property name="type"/>  
  11.         <property name="detail"/>  
  12.         <property name="time"/>  
  13.     </class>  
  14. </hibernate-mapping>  
	<?xml version="1.0"?>
	<!DOCTYPE hibernate-mapping PUBLIC 
		"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
	<hibernate-mapping>
		<class name="com.tgb.usermgr.domain.Log" table="t_log">
			<id name="id">
				<generator class="native"/>
			</id>
			<property name="type"/>
			<property name="detail"/>
			<property name="time"/>
		</class>
	</hibernate-mapping>


User.hbm.xml

  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping>  
  6.     <class name="com.tgb.usermgr.domain.User" table="t_user">  
  7.         <id name="id">  
  8.             <generator class="native"/>  
  9.         </id>  
  10.         <property name="name"/>  
  11.     </class>  
  12. </hibernate-mapping>  
	<?xml version="1.0"?>
	<!DOCTYPE hibernate-mapping PUBLIC 
		"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
	<hibernate-mapping>
		<class name="com.tgb.usermgr.domain.User" table="t_user">
			<id name="id">
				<generator class="native"/>
			</id>
			<property name="name"/>
		</class>
	</hibernate-mapping>


Hibernate的工具类

HibernateUtils.java

  1. package com.tgb.usermgr.util;  
  2.   
  3. import org.hibernate.Session;  
  4. import org.hibernate.SessionFactory;  
  5. import org.hibernate.cfg.Configuration;  
  6.   
  7. public class HibernateUtils {  
  8.   
  9.     private static SessionFactory factory;  
  10.       
  11.     private HibernateUtils() {  
  12.     }  
  13.       
  14.     static {  
  15.         try {  
  16.             Configuration cfg = new Configuration().configure();  
  17.             factory = cfg.buildSessionFactory();  
  18.         }catch(Exception e) {  
  19.             e.printStackTrace();  
  20.             throw new java.lang.RuntimeException(e);  
  21.         }     
  22.     }  
  23.       
  24.     public static SessionFactory getSessionFactory() {  
  25.         return factory;  
  26.     }  
  27.       
  28.     public static Session getSession() {  
  29.         return factory.openSession();  
  30.     }  
  31.       
  32.     public static void closeSession(Session session) {  
  33.         if (session != null) {  
  34.             if (session.isOpen()) {  
  35.                 session.close();  
  36.             }  
  37.         }  
  38.     }  
  39. }  
	package com.tgb.usermgr.util;
	
	import org.hibernate.Session;
	import org.hibernate.SessionFactory;
	import org.hibernate.cfg.Configuration;
	
	public class HibernateUtils {
	
		private static SessionFactory factory;
		
		private HibernateUtils() {
		}
		
		static {
			try {
				Configuration cfg = new Configuration().configure();
				factory = cfg.buildSessionFactory();
			}catch(Exception e) {
				e.printStackTrace();
				throw new java.lang.RuntimeException(e);
			}	
		}
		
		public static SessionFactory getSessionFactory() {
			return factory;
		}
		
		public static Session getSession() {
			return factory.openSession();
		}
		
		public static void closeSession(Session session) {
			if (session != null) {
				if (session.isOpen()) {
					session.close();
				}
			}
		}
	}
	


业务逻辑实现和接口:

LogManager.java

  1. package com.tgb.usermgr.manager;  
  2.   
  3. import com.tgb.usermgr.domain.Log;  
  4.   
  5. public interface LogManager {  
  6.   
  7.     public void addLog(Log log);  
  8. }  
	package com.tgb.usermgr.manager;
	
	import com.tgb.usermgr.domain.Log;
	
	public interface LogManager {
	
		public void addLog(Log log);
	}


LogManagerImpl.java

  1. package com.tgb.usermgr.manager;  
  2.   
  3. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
  4.   
  5. import com.tgb.usermgr.domain.Log;  
  6. import com.tgb.usermgr.util.HibernateUtils;  
  7.   
  8. public class LogManagerImpl extends HibernateDaoSupport implements LogManager {  
  9.   
  10.     public void addLog(Log log) {  
  11.         //getSession().save(log);  
  12.         getHibernateTemplate().save(log);  
  13.     }  
  14.   
  15. }  
	package com.tgb.usermgr.manager;
	
	import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
	
	import com.tgb.usermgr.domain.Log;
	import com.tgb.usermgr.util.HibernateUtils;
	
	public class LogManagerImpl extends HibernateDaoSupport implements LogManager {
	
		public void addLog(Log log) {
			//getSession().save(log);
			getHibernateTemplate().save(log);
		}
	
	}


UserManager.java

  1. package com.tgb.usermgr.manager;  
  2.   
  3. import com.tgb.usermgr.domain.User;  
  4.   
  5. public interface UserManager {  
  6.   
  7.     public void addUser(User user) throws Exception;  
  8.       
  9. }  
	package com.tgb.usermgr.manager;
	
	import com.tgb.usermgr.domain.User;
	
	public interface UserManager {
	
		public void addUser(User user) throws Exception;
		
	}


UserManagerImpl.java

  1. package com.tgb.usermgr.manager;  
  2.   
  3.   
  4.   
  5. import java.util.Date;  
  6.   
  7. import org.hibernate.Session;  
  8. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
  9.   
  10. import com.tgb.usermgr.domain.Log;  
  11. import com.tgb.usermgr.domain.User;  
  12. import com.tgb.usermgr.util.HibernateUtils;  
  13.   
  14. public class UserManagerImpl extends HibernateDaoSupport implements UserManager {  
  15.   
  16.     private LogManager logManager;   
  17.       
  18.   
  19.   
  20.     public void addUser(User user)   
  21.     throws Exception {  
  22.         //this.getSession().save(user);  
  23.         this.getHibernateTemplate().save(user);  
  24.       
  25.         Log log = new Log();  
  26.         log.setType("操作日志");  
  27.         log.setTime(new Date());  
  28.         log.setDetail("XXX");  
  29.           
  30.         logManager.addLog(log);  
  31.           
  32.         throw new Exception();  
  33.     }  
  34.       
  35.     public void setLogManager(LogManager logManager) {  
  36.         this.logManager = logManager;  
  37.     }  
  38.   
  39. }  
	package com.tgb.usermgr.manager;
	
	
	
	import java.util.Date;
	
	import org.hibernate.Session;
	import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
	
	import com.tgb.usermgr.domain.Log;
	import com.tgb.usermgr.domain.User;
	import com.tgb.usermgr.util.HibernateUtils;
	
	public class UserManagerImpl extends HibernateDaoSupport implements UserManager {
	
		private LogManager logManager; 
		
	
	
		public void addUser(User user) 
		throws Exception {
			//this.getSession().save(user);
			this.getHibernateTemplate().save(user);
		
			Log log = new Log();
			log.setType("操作日志");
			log.setTime(new Date());
			log.setDetail("XXX");
			
			logManager.addLog(log);
			
			throw new Exception();
		}
		
		public void setLogManager(LogManager logManager) {
			this.logManager = logManager;
		}
	
	}


客户端的测试类:

UserManagerImplTest.java

  1. package com.tgb.usermgr.manager;  
  2.   
  3. import org.springframework.beans.factory.BeanFactory;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5.   
  6. import com.tgb.usermgr.domain.User;  
  7.   
  8. import junit.framework.TestCase;  
  9.   
  10. public class UserManagerImplTest extends TestCase {  
  11.   
  12.     public void testAddUser() {  
  13.     BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext-*.xml");  
  14.         UserManager userManager = (UserManager)factory.getBean("userManager");  
  15.           
  16.         User user = new User();  
  17.         user.setName("张三");  
  18.         try {  
  19.             userManager.addUser(user);  
  20.         } catch (Exception e) {  
  21.             // TODO Auto-generated catch block  
  22.             e.printStackTrace();  
  23.         }  
  24.           
  25.     }  
  26.   
  27. }  
	package com.tgb.usermgr.manager;
	
	import org.springframework.beans.factory.BeanFactory;
	import org.springframework.context.support.ClassPathXmlApplicationContext;
	
	import com.tgb.usermgr.domain.User;
	
	import junit.framework.TestCase;
	
	public class UserManagerImplTest extends TestCase {
	
		public void testAddUser() {
		BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext-*.xml");
			UserManager userManager = (UserManager)factory.getBean("userManager");
			
			User user = new User();
			user.setName("张三");
			try {
				userManager.addUser(user);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	
	}


配置文件:

hibernate.cfg.xml

  1. <!DOCTYPE hibernate-configuration PUBLIC  
  2.     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  3.     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  4.   
  5. <hibernate-configuration>  
  6.     <session-factory>  
  7.         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
  8.         <property name="hibernate.connection.url">jdbc:mysql://localhost/spring_hibernate_2</property>  
  9.         <property name="hibernate.connection.username">root</property>  
  10.         <property name="hibernate.connection.password">root</property>  
  11.         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
  12.         <property name="hibernate.show_sql">true</property>  
  13.         <property name="hibernate.hbm2ddl.auto">update</property>  
  14.   
  15.         <mapping resource="com/tgb/usermgr/domain/User.hbm.xml"/>  
  16.         <mapping resource="com/tgb/usermgr/domain/Log.hbm.xml"/>  
  17.     </session-factory>  
  18. </hibernate-configuration>  
	<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
	
	<hibernate-configuration>
		<session-factory>
			<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
			<property name="hibernate.connection.url">jdbc:mysql://localhost/spring_hibernate_2</property>
			<property name="hibernate.connection.username">root</property>
			<property name="hibernate.connection.password">root</property>
			<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
			<property name="hibernate.show_sql">true</property>
			<property name="hibernate.hbm2ddl.auto">update</property>
	
			<mapping resource="com/tgb/usermgr/domain/User.hbm.xml"/>
			<mapping resource="com/tgb/usermgr/domain/Log.hbm.xml"/>
		</session-factory>
	</hibernate-configuration>
	


applicationContext-common.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <beans xmlns="http://www.springframework.org/schema/beans"  
  4.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.          xmlns:aop="http://www.springframework.org/schema/aop"  
  6.          xmlns:tx="http://www.springframework.org/schema/tx"  
  7.          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  8.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd  
  9.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">  
  10.     <!-- 配置SessionFactory -->  
  11.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  12.         <property name="configLocation">  
  13.             <value>classpath:hibernate.cfg.xml</value>  
  14.         </property>  
  15.     </bean>  
  16.       
  17.     <!-- 配置事务管理器 -->  
  18.     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  19.         <property name="sessionFactory">  
  20.             <ref bean="sessionFactory"/>            
  21.         </property>  
  22.     </bean>  
  23.       
  24.     <!-- 那些类那些方法使用事务 -->  
  25.     <aop:config>  
  26.         <aop:pointcut id="allManagerMethod" expression="execution(* com.tgb.usermgr.manager.*.*(..))"/>  
  27.         <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>  
  28.     </aop:config>  
  29.       
  30.     <!-- 事务的传播特性 -->    
  31.     <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  32.         <tx:attributes>  
  33.             <tx:method name="add*" propagation="REQUIRED"/>  
  34.             <tx:method name="del*" propagation="REQUIRED"/>  
  35.             <tx:method name="modify*" propagation="REQUIRED"/>  
  36.             <tx:method name="*" propagation="REQUIRED" read-only="true"/>  
  37.         </tx:attributes>  
  38.     </tx:advice>  
  39. </beans>  
	<?xml version="1.0" encoding="UTF-8"?>
	
	<beans xmlns="http://www.springframework.org/schema/beans"
		     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		     xmlns:aop="http://www.springframework.org/schema/aop"
		     xmlns:tx="http://www.springframework.org/schema/tx"
		     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
	           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
	           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
		<!-- 配置SessionFactory -->
		<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
			<property name="configLocation">
				<value>classpath:hibernate.cfg.xml</value>
			</property>
		</bean>
		
		<!-- 配置事务管理器 -->
		<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
			<property name="sessionFactory">
				<ref bean="sessionFactory"/>			
			</property>
		</bean>
		
		<!-- 那些类那些方法使用事务 -->
		<aop:config>
			<aop:pointcut id="allManagerMethod" expression="execution(* com.tgb.usermgr.manager.*.*(..))"/>
			<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
		</aop:config>
		
		<!-- 事务的传播特性 -->	
		<tx:advice id="txAdvice" transaction-manager="transactionManager">
			<tx:attributes>
				<tx:method name="add*" propagation="REQUIRED"/>
				<tx:method name="del*" propagation="REQUIRED"/>
				<tx:method name="modify*" propagation="REQUIRED"/>
				<tx:method name="*" propagation="REQUIRED" read-only="true"/>
			</tx:attributes>
		</tx:advice>
	</beans>
	


applicationContext-beans.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <beans xmlns="http://www.springframework.org/schema/beans"  
  4.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.          xmlns:aop="http://www.springframework.org/schema/aop"  
  6.          xmlns:tx="http://www.springframework.org/schema/tx"  
  7.          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  8.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd  
  9.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">  
  10.              
  11.     <bean id="userManager" class="com.tgb.usermgr.manager.UserManagerImpl">  
  12.         <property name="sessionFactory" ref="sessionFactory"/>  
  13.         <property name="logManager" ref="logManager"/>  
  14.     </bean>  
  15.       
  16.     <bean id="logManager" class="com.tgb.usermgr.manager.LogManagerImpl">  
  17.         <property name="sessionFactory" ref="sessionFactory"/>  
  18.     </bean>  
  19. </beans>  
	<?xml version="1.0" encoding="UTF-8"?>
	
	<beans xmlns="http://www.springframework.org/schema/beans"
		     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		     xmlns:aop="http://www.springframework.org/schema/aop"
		     xmlns:tx="http://www.springframework.org/schema/tx"
		     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
	           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
	           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
	           
		<bean id="userManager" class="com.tgb.usermgr.manager.UserManagerImpl">
			<property name="sessionFactory" ref="sessionFactory"/>
			<property name="logManager" ref="logManager"/>
		</bean>
		
		<bean id="logManager" class="com.tgb.usermgr.manager.LogManagerImpl">
			<property name="sessionFactory" ref="sessionFactory"/>
		</bean>
	</beans>


效果图:


三、总结。

        Hibernate与Spring的结合使系统变的更加灵活,能应对一定的需求变化。Hibernate解决了我们数据库变换的问题,Spring解决了我们类与类之间变化的问题。不仅让系统变的灵活了而且大大的提高了我们开发人员的开发效率和维护效率。

手把手教你用Python 3.11和Node.js 18在Windows 11上搭建Dify开发环境 本文提供了一份详尽的Windows 11本地Dify开发环境搭建指南。文章手把手教你完成从Python 3.11、Node.js 18的安装配置,到PostgreSQL、Redis数据库服务的部署,再到前后端服务的启动与联调的全过程,并包含常见问题排查与效能优化建议,旨在帮助开发者构建一个稳定、可调试的Dify本地开发环境。 阅读详情

相关推荐

学术报告系列(二) - 智能自主作业机器人感知与控制技术及发展趋势

收集整理于2022年模式识别高峰论坛湖南大学王耀南院士报告(报名题目:智能自主作业机器人感知与控制技术及发展趋势)

Make something people want. 4699

spring+hibernate+其他应用组装心得小结

 spring,hibenate,再搭配一个X(就是本文标题中的+x),已经几乎横扫目前的JAVA应用界,好象目前一讲JAVA应用开发,都必须要懂这三样东西的。最近花了些时间来学习之,发现其实还是有不少模式和规律可以找到的,现将心得小结之,总结这些带规律的“板斧”类东西,呵呵。以一个最简单的一对多例子来讲解。比如有目录category,产品类product,目录和产品的关系是一对多关系

jackyrongvip的专栏 981

UE4游戏开发:GameInstance与GameMode的实战应用与避坑指南

本文深入解析了UE4中GameInstance与GameMode的核心差异与实战应用。GameInstance作为贯穿游戏进程的全局单例,负责跨关卡数据持久化与系统管理;而GameMode则定义特定关卡内的游戏规则与逻辑,随关卡加载销毁。文章通过数据存储、动态模式切换及网络游戏等场景,提供了清晰的应用指南与常见避坑方案,帮助开发者构建更健壮的UE4游戏架构。

kubernetes8ctl的博客 230

Spring与hibernate整合心得

a651944226的专栏 1517

NXP S32K-144开发环境搭建与Keil MDK 5调试实战

嵌入式开发中,Cortex-M系列微控制器凭借其高性能和低功耗特性广泛应用于汽车电子和工业控制领域。以NXP S32K-144为例,该芯片采用Cortex-M4内核,支持SWD两线制调试协议,通过CoreSight调试系统可实现硬件断点、实时内存访问等高级功能。开发环境搭建涉及Keil MDK 5工具链配置、RTX5实时系统集成以及CMSIS-DSP算法库调用,其中SWD接口优化和ITM跟踪技术能显著提升调试效率。在汽车电子等对可靠性要求高的场景中,结合MPU内存保护单元和窗口看门狗等安全机制,可构建符合功

weixin_33722405的博客 324

零样本缺陷检测新体验:用AnomalyGPT大模型快速搭建智能质检系统(附Win10适配指南)

本文详细介绍了如何利用AnomalyGPT大模型在Windows 10系统上快速搭建零样本工业缺陷检测系统。通过实战指南,涵盖从环境部署、模型准备到工程化落地的全过程,包括将模型封装为API服务、接入工业相机以及开发可视化监控看板,为制造业智能质检提供了一套高效、低门槛的本地部署解决方案。

weixin_29094775的博客 310

java计算机毕业设计企业间信息交互系统源码+程序+lw文档+mysql数据库

java计算机毕业设计企业间信息交互系统源码+程序+lw文档+mysql数据库。springboot基于springboot的健身俱乐部综合管理系统。ssm基于SSM+VUE技术的小区车辆档案车位管理系统设计与实现。springboot企业固定资产管理系统的设计实现。jsp基于JavaWeb的社区商超系统的设计与实现。ssm基于SSM高校教师个人主页网站的设计与实现。JSP网上测试系统的研究与设计sqlserver。springboot基于Vue框架的养生系统。springboot多维分类的知识管理系统。

qckj88的博客 292

图神经网络实战——利用节点回归预测网络流量

在机器学习中,回归指的是对连续值的预测。通常与分类形成鲜明对比,分类的目标是找到正确的类别(即离散值,而非连续值)。在图数据中,分类和回归分别对应于节点分类和节点回归。在本节中,我们将尝试预测每个节点的连续值,而非分类变量。

盼小辉丶的博客 1万+

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

静态时序分析(STA)—— 标准单元库

目录 1、时序库 概览 2、时序模型 1、基本概念 2、影响因素 3、线性延时模型 4、非线性延时模型 5、单元时序弧 1、组合逻辑单元 2、时序逻辑单元 6、线负载模型 参考说明 上一篇,学习了 STA相关的基本概念,本篇继续学习 STA相关的 标准单元库。 1、时序库 概览 库文件概览: 2、时序模型 1、基本概念 2、影响因素 对于组合逻辑的时序弧而言,其延时的大小取决于: 1、输出负载,即,输出端的电容负载的大小。容性负载越大,...

记录所学,分享知识,结识挚友 2855

遥感影像建筑物变化检测

遥感影像建筑物变化检测

yilvyangguang520的博客 423

第3章:OpenJDK从源码到字节码——Class 文件与 javac 管线

文章摘要 本文通过一个团队从JDK 8升级到JDK 21时遇到的反射异常问题,揭示了Java字节码层面的兼容性挑战。项目背景中指出了开发者面临的三大痛点:黑盒编译、语法糖陷阱和字节码增强盲区。随后通过师徒对话的形式,生动讲解了Class文件结构(魔数、常量池)和关键字节码指令(如invokevirtual等)。最后给出实战示例,分析自动装箱、泛型、lambda等语法糖在字节码层面的实现原理,帮助开发者建立字节码阅读能力,解决跨版本兼容性问题。

davidwang456的专栏 502

YOLOv11 改进 - 注意力机制 | Deformable-LKA 可变形大核注意力:自适应采样网格优化特征捕捉,提升不规则目标感知

本文介绍了可变形大核注意力(D-LKA Attention)及其在YOLOv11中的结合。D-LKA Attention是一种简化的注意力机制,采用大卷积核利用体积上下文信息,通过可变形卷积灵活调整采样网格,适应多样数据模式。它有2D和3D版本,3D版本在跨深度数据理解上表现出色,共同构成了D-LKA Net架构。我们将D-LKA Attention集成进YOLOv11,在模型的检测头部分引入deformable_LKA_Attention模块。实验表明,该方法在分割任务上表现优于现有方法,提升了模型的检测

魔改工程师的博客 1172

校招面试总结(一)

校招过程中的面试总结: 先写了这几个 之后会把美团、头条、滴滴和一些小公司的面经在第二个总结补充一下A.阿里(菜鸟)二面GG一面:40分钟1.简单自我介绍2.Java的面向对象怎么理解3.简历上有写MATLAB 怎么去用的 数学建模吗?4.集合类 hashMap源码 发生hash碰撞怎么办 1.8版本之后有什么更新 为什么用红黑树 时间复杂度5.hashMap线程不安全体现的点 怎么变成线程安全6...

zlj1217的博客 988

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

第三篇 第 6 课

前置:第三篇第 1 课(stdx 引入),第二篇第 1 课(std.regex)。环境:仓颉 SDK 1.2.0。本文所有代码与输出均逐行实测。

weixin_41618057的博客 544

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MCP 2026-07-28 无状态协议大改版:Spring AI 2.1 多轮往返请求与网关路由落地

无状态,所以任何实例都能处理任何请求,扩容不再需要粘性会话;显式句柄,所以跨调用状态是可审计、可过期的,而不是藏在进程内存里;幂等重放,所以交互式中断在分布式环境下也可恢复,代价是你要自己保证副作用可对账;头部路由,所以网关能在不解析 body 的前提下做治理,而校验 header/body 一致性成了新的安全底线。这些没有一个是在发明新概念。它们是分布式系统里被验证过二十年的老手艺:无状态、显式上下文、幂等、网关治理、fail-fast、可观测。

qq_36021478的博客 173

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

压缩省了60%磁盘,写入TPS掉了25%——InnoDB页压缩的三类隐性代价与适用边界

InnoDB页压缩能显著降低表空间占用,但磁盘的节省不是免费的。压缩页在写入时需要CPU执行压缩算法、读取时需要CPU解压;压缩后的页在Buffer Pool中占用更少空间,但命中后的解压开销和未命中时的解压延迟会改变缓存的实际效能;写密集场景下,压缩/解压带来的写入放大可能让TPS明显下降。本文拆解InnoDB页压缩的物理机制、三类隐性代价的量化表现,以及“什么场景该用、什么场景该绕开”的判断框架。

DBAxiaoye的博客 337

实际工程问题:AI 生成 Spring Cache(@Cacheable / @CachePut / @CacheEvict)缓存注解踩坑

商品详情服务,要求:商品基础信息走缓存,减少 DB 查询;典型:AI 只贴注解,忽略 AOP 代理、key 设计、缓存穿透/击穿/过期、序列化、同步刷新,本地单测正常,上线后缓存脏数据、命中率异常、雪崩。如果业务在事务中,@CacheEvict / @CachePut 如果在事务提交前执行,一旦事务回滚,缓存已经被删掉/更新,数据不一致。• 如果在同一个类里用 this.xxx() 调用带缓存注解的方法,不走代理,缓存直接失效;// 更新商品:先更新 DB,再删除缓存,而不是直接 @CachePut。

2401_89363342的博客 489

Spring 事务详解:@Transactional 如何生效、何时回滚、传播行为怎么选

从订单与库存写入出发,拆解 @Transactional 的代理调用链、默认回滚规则与自调用问题;通过 Spring Boot + H2 的五个验证用例比较 REQUIRED、REQUIRES_NEW、NESTED,并说明数据库事务与 Redis、消息和远程接口的边界。

qq_74421990的博客 333

SpringBoot 新闻推荐系统:88个Java文件105个接口,首页推荐位是后端按点击数排出来的

# SpringBoot 新闻推荐系统:88个Java文件105个接口,首页推荐位是后端按点击数排出来的 > 这是一套基于 Spring Boot 的新闻推荐系统源码,配套 `db.sql` 建表脚本,业务覆盖新闻发布、排行榜管理、评论回复、点赞点踩、收藏夹和轮播图配置。形态是**前后台双端**:前台是读者用的 layui 静态站,后台是管理员用的 Vue 单页应用(编译产物已嵌在工程里)。最值

面朝大海 877

模型“看不见”中间的东西——prompt cache 与 Zone 分区

本文揭示了LLM系统中promptcache失效的根源:动态内容错置于系统提示词前缀,导致缓存命中率从80%骤降至4%。核心教训是“变化内容必须排在最后”——通过Zone分区(ZoneA稳定区、ZoneB动态区),将每轮可能变化的内容移至末尾,可确保前缀稳定,恢复高命中率。关键在于:前缀匹配要求逐字节相同,任何一处变动即导致后续全部失效。修复建议包括:重构提示词结构、正确分类内容、监控缓存单位(字节与token不可混用)、避免压缩破坏前缀。最终实现成本降低9倍,提升推理效率。

qinglongcn的博客 221
上一篇: 三种方法编写的简单html界面(3)
下一篇: Hibernate基础映射
Sakura_sql
博客等级 码龄12年 3粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值