- 浏览: 109322 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
ldwtill:
overwrite呢?
overload,overwrite和override比较 -
dafeiwang:
...
过滤器和拦截器的区别
Inverse 和 cascade的区别
实际上,他们是互不相关的概念:
inverse是指的关联关系的控制方向,而cascade指的是层级之间的连锁操作。
级联删除
在默认情况下,当Hibernate删除一个持久化对象时,不会自动删除与他关联的其他持久化对象,如果希望Hibernate删除Customer对象时,自动删除和Customer关联的Order对象,可以把cascade的属性设置为delete。
注意:在关联的双方的哪一方设置cascade为delete呢?是不是要在双方都要设置呢?这个主要看项目本身。
如果项目是针对一对多的,应该在“one”方设置cascade为delete,不能在“many”方设置cascade为delete 。
提示:所谓删除一个持久化对象,并不是指从内存中删除这个对象,而是从数据库中删除相关的记录。这个对象依然存在于内存中,只不过由持久化状态转变成为临时状态。
cascade属性可以有多个值,中间用逗号分开,eg:cascade="save-update,delete
<set name="orders" cascade="all-delete-orphan" inverse="true">
<key column="c_id"></key>
<one-to-many class="net.mbs.mypack.Order" />
</set>
Cascade属性的all-delete-orphan值
当我们解除Customer和Order对象之间的关系时:
customer.getOrdersa().remove(order);
order.setCustomer(null);
系统会执行 update order set c_id=null where id=? //前提: c_id列允许为null
如果希望Hibernate自动删除不再和Customer对象关联的Order对象,可以把cascade属性设置为all-delete-orphan
all-delete-orphan值的总结
1:当保存Customer对象时,级联保存所有关联的Order对象,相当于cascade=“save-update”
2:当删除Customer对象时,级联删除所有关联的Order对象,相当于cascade=“delete” .
3;删除不再和Customer对象关联的所有Order对象
当关联双方存在父子关系时,就可以把父方的cascade属性设置为“all-delete-orphan”
] 所谓父子关系,是指由父方子方的持久化生命周期,子方对象必须和一个父方对象关联
如果删除父方对象,应该级联删除所有的关联的子方对象。
如果子方对象不再和一个父方对象关联,应该把这个子方对象删除。
类与类之间是否存在父子关系是由业务逻辑需求来决定 的,通常认为Customer和Order之间存在父子关系,而Company和Worker 之间不存在父子关系。
食品类别---->蔬菜---水果
蔬菜------->西红柿类别
水果------->苹果----柿子
上面的每种类别代表一个Category对象,这些对象形成了树型数据结构,每个Category对象可以和一个父类别Category对象关联,同时还可以和一组子类别Category对象关联
为了实现上面的图例,我们制作一Category类,为了表达双向关联关系,我们在Category类中定义两个属性:
1:parentCategory:引用父类别的Category对象(比如苹果类别对象的parentCategory就是水果)
2。childCategories :引用一组子类别Category对象
现在相成的关系是
一个Category对象可以一个父Category对象关联(如水果类别对象有一个父类,而食品类别的父类是自身)
一个Category对象可以和零个(如苹果类别对象没有子类)或一组子类Category对象关联(如水果类别对象有一组子类)
数据库表方面,我们只提供了一个叫category的表,有三列
ID :标识列,表示每一类别
Name:类别的名字 ;
category_id 当前类别的父类别的id号,如果是顶级类别,如食品类别,category_id列的值自的OID。
注意 category_id列必须允许为null,否则在插入时,将丢出nullPointException异常
注意事项
1:在category.hbm.xml中应该配置set的cascade属性值为 all-delete-orphan,这样在删除一个父类别后,只要让他的所有子类别的对应的父类别为null ,就可以方便的删除所有子类别。
2:在OID中,在更新了两个类别之间的关系,并进行事务的提交后,必须调用session.clear()将session缓存进行清空,否则在以后用load()或get()加载的对象还是没有更新前的状态(如果session缓存中已经在要加载OID相同的对象)
3。在删除一个类别时,必须先删除此类别和父类别以及所有子类别的关联。
Category category=(Category)session.load(Category.class,cate.getId());
category.getParentCategory().getChildCategories().remove(category);
Object [] cs=category.getChildCategories().toArray();
System.out.println("数组长度"+cs.length);
for(int i=0;i < cs.length;i++)
{//删除和所有子类别的关联关系
Category child=(Category)cs;
chlid.setParentCategory(null);
category.getChildCategories().remove(cs);
}
session.delete(category);
实际上,他们是互不相关的概念:
inverse是指的关联关系的控制方向,而cascade指的是层级之间的连锁操作。
级联删除
在默认情况下,当Hibernate删除一个持久化对象时,不会自动删除与他关联的其他持久化对象,如果希望Hibernate删除Customer对象时,自动删除和Customer关联的Order对象,可以把cascade的属性设置为delete。
注意:在关联的双方的哪一方设置cascade为delete呢?是不是要在双方都要设置呢?这个主要看项目本身。
如果项目是针对一对多的,应该在“one”方设置cascade为delete,不能在“many”方设置cascade为delete 。
提示:所谓删除一个持久化对象,并不是指从内存中删除这个对象,而是从数据库中删除相关的记录。这个对象依然存在于内存中,只不过由持久化状态转变成为临时状态。
cascade属性可以有多个值,中间用逗号分开,eg:cascade="save-update,delete
<set name="orders" cascade="all-delete-orphan" inverse="true">
<key column="c_id"></key>
<one-to-many class="net.mbs.mypack.Order" />
</set>
Cascade属性的all-delete-orphan值
当我们解除Customer和Order对象之间的关系时:
customer.getOrdersa().remove(order);
order.setCustomer(null);
系统会执行 update order set c_id=null where id=? //前提: c_id列允许为null
如果希望Hibernate自动删除不再和Customer对象关联的Order对象,可以把cascade属性设置为all-delete-orphan
all-delete-orphan值的总结
1:当保存Customer对象时,级联保存所有关联的Order对象,相当于cascade=“save-update”
2:当删除Customer对象时,级联删除所有关联的Order对象,相当于cascade=“delete” .
3;删除不再和Customer对象关联的所有Order对象
当关联双方存在父子关系时,就可以把父方的cascade属性设置为“all-delete-orphan”
] 所谓父子关系,是指由父方子方的持久化生命周期,子方对象必须和一个父方对象关联
如果删除父方对象,应该级联删除所有的关联的子方对象。
如果子方对象不再和一个父方对象关联,应该把这个子方对象删除。
类与类之间是否存在父子关系是由业务逻辑需求来决定 的,通常认为Customer和Order之间存在父子关系,而Company和Worker 之间不存在父子关系。
食品类别---->蔬菜---水果
蔬菜------->西红柿类别
水果------->苹果----柿子
上面的每种类别代表一个Category对象,这些对象形成了树型数据结构,每个Category对象可以和一个父类别Category对象关联,同时还可以和一组子类别Category对象关联
为了实现上面的图例,我们制作一Category类,为了表达双向关联关系,我们在Category类中定义两个属性:
1:parentCategory:引用父类别的Category对象(比如苹果类别对象的parentCategory就是水果)
2。childCategories :引用一组子类别Category对象
现在相成的关系是
一个Category对象可以一个父Category对象关联(如水果类别对象有一个父类,而食品类别的父类是自身)
一个Category对象可以和零个(如苹果类别对象没有子类)或一组子类Category对象关联(如水果类别对象有一组子类)
数据库表方面,我们只提供了一个叫category的表,有三列
ID :标识列,表示每一类别
Name:类别的名字 ;
category_id 当前类别的父类别的id号,如果是顶级类别,如食品类别,category_id列的值自的OID。
注意 category_id列必须允许为null,否则在插入时,将丢出nullPointException异常
注意事项
1:在category.hbm.xml中应该配置set的cascade属性值为 all-delete-orphan,这样在删除一个父类别后,只要让他的所有子类别的对应的父类别为null ,就可以方便的删除所有子类别。
2:在OID中,在更新了两个类别之间的关系,并进行事务的提交后,必须调用session.clear()将session缓存进行清空,否则在以后用load()或get()加载的对象还是没有更新前的状态(如果session缓存中已经在要加载OID相同的对象)
3。在删除一个类别时,必须先删除此类别和父类别以及所有子类别的关联。
Category category=(Category)session.load(Category.class,cate.getId());
category.getParentCategory().getChildCategories().remove(category);
Object [] cs=category.getChildCategories().toArray();
System.out.println("数组长度"+cs.length);
for(int i=0;i < cs.length;i++)
{//删除和所有子类别的关联关系
Category child=(Category)cs;
chlid.setParentCategory(null);
category.getChildCategories().remove(cs);
}
session.delete(category);
到底在哪用cascade="..."?
cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或删除对像时更方便一些,只要在cascade的源头上插入或是删除,所有 cascade的关系就会被自己动的插入或是删除。便是为了能正确的cascade,unsaved-value是个很重要的属性。Hibernate通 过这个属性来判断一个对象应该save还是update,如果这个对象的id是unsaved-value的话,那说明这个对象不是 persistence object要save(insert);如果id是非unsaved-value的话,那说明这个对象是persistence object(数据库中已存在),只要update就行了。saveOrUpdate方法用的也是这个机制。
2、到底在哪用inverse="ture"?
“set的inverse属性决定是否把对set的改动反映到数据库中去。inverse=false————反映;inverse=true————不反映”inverse属性默认为false
inverse属性默认是false的,就是说关系的两端都来维护关系。这个意思就是说,如有一个Student, Teacher和TeacherStudent表,Student和Teacher是多对多对多关系,这个关系由TeacherStudent这个表来表 现。那么什么时候插入或删除TeacherStudent表中的记录来维护关系呢?在用hibernate时,我们不会显示的对 TeacherStudent表做操作。对TeacherStudent的操作是hibernate帮我们做的。hibernate就是看hbm文件中指 定的是"谁"维护关系,那个在插入或删除"谁"时,就会处发对关系表的操作。前提是"谁"这个对象已经知道这个关系了,就是说关系另一头的对象已经set 或是add到"谁"这个对象里来了。前面说过inverse默认是false,就是关系的两端都维护关系,对其中任一个操作都会处发对表系表的操作。当在 关系的一头,如Student中的bag或set中用了inverse="true"时,那就代表关系是由另一关维护的(Teacher)。就是说当这插 入Student时,不会操作TeacherStudent表,即使Student已经知道了关系。只有当Teacher插入或删除时才会处发对关系表的 操作。所以,当关系的两头都用inverse="true"是不对的,就会导致任何操作都不处发对关系表的操作。当两端都是inverse= "false"或是default值是,在代码对关系显示的维护也是不对的,会导致在关系表中插入两次关系。
在一对多关系中inverse就更有意义了。在多对多中,在哪端inverse="true"效果差不多(在效率上)。但是在一对多中,如果要一方维护关 系,就会使在插入或是删除"一"方时去update"多"方的每一个与这个"一"的对象有关系的对象。而如果让"多"方面维护关系时就不会有update 操作,因为关系就是在多方的对象中的,直指插入或是删除多方对象就行了。当然这时也要遍历"多"方的每一个对象显示的操作修关系的变化体现到DB中。不管 怎样说,还是让"多"方维护关系更直观一些。
(1)对one-to-many而言,改变set,会让hibernate执行一系列的update语句, 不会delete/insert数据
(2)对many-to-many而言,改变set,只修改关系表的数据,不会影响many-to-many的另一方。
(3)虽然one-to-many和many-to-many的数据库操作不一样,但目的都是一个:维护数据的一致性。
3、cascade和inverse有什么区别?
可以这样理解,cascade定义的是关系两端对象到对象的级联关系;而inverse定义的是关系和对象的级联关系。
inverse只对set+one-to-many(或many-to-many)有效,对many-to-one, one-to-one无效。cascade对关系标记都有效。
inverse对集合对象整体起作用,cascade对集合对象中的一个一个元素起作用,如果集合为空,那么cascade不会引发关联操作。
比如将集合对象置为null, school.setStudentSet(null)
inverse导致hibernate执行:udpate STUDENT set SCHOOL_ID=null where SCHOOL_ID=?
cascade则不会执行对STUDENT表的关联更新, 因为集合中没有元素。
再比新增一个school, session.save(school)
inverse导致hibernate执行:
for( 对(school的每一个student ){
udpate STUDENT set SCHOOL_ID=? where STUDENT_ID=? //将学生的school_id改为新的school的id
}
cascade导致hibernate执行:
for( 对school的每一个student ){
session.save(aStudent); //对学生执行save操作
}
extends:如果改变集合中的部分元素(比如新增一个元素),
inverse: hibernate先判断哪些元素改变了,对改变的元素执行相应的sql
cascade: 它总是对集合中的每个元素执行关联操作。
(在关联操作中,hibernate会判断操作的对象是否改变)
两个起作用的时机不同:
cascade:在对主控方操作时,级联发生。
inverse: 在flush时(commit会自动执行flush),对session中的所有set,hibernate判断每个set是否有变化,
对有变化的set执行相应的sql,执行之前,会有个判断:if( inverse == true ) return;可以看出cascade在先,inverse在后。
inverse 对set + one-to-many 和 set + many-to-many 起的作用不同。hibernate生成的sql不同。
对one-to-many,hibernate对many方的数据库表执行update语句。
对many-to-many, hibernate对关系表执行insert/update/delte语句,注意不是对many方的数据库表而是关系表。
cascase 对set都是一致的,不管one-to-many还是many-to-many。都简单地把操作传递到set中的每个元素。所以它总是更新many方的数据库表。
4、cascade和inverse有什么相同?
这两个属性本身互不影响,但起的作用有些类似,都能引发对关系表的更新。
5、 建议:只对set + many-to-many设置inverse=false,其他的标记不考虑inverse属性,都设为inverse=true。对cascade,一 般对many-to-one,many-to-many,constrained=true的one-to-one 不设置级联删除。
cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或删除对像时更方便一些,只要在cascade的源头上插入或是删除,所有 cascade的关系就会被自己动的插入或是删除。便是为了能正确的cascade,unsaved-value是个很重要的属性。Hibernate通 过这个属性来判断一个对象应该save还是update,如果这个对象的id是unsaved-value的话,那说明这个对象不是 persistence object要save(insert);如果id是非unsaved-value的话,那说明这个对象是persistence object(数据库中已存在),只要update就行了。saveOrUpdate方法用的也是这个机制。
2、到底在哪用inverse="ture"?
“set的inverse属性决定是否把对set的改动反映到数据库中去。inverse=false————反映;inverse=true————不反映”inverse属性默认为false
inverse属性默认是false的,就是说关系的两端都来维护关系。这个意思就是说,如有一个Student, Teacher和TeacherStudent表,Student和Teacher是多对多对多关系,这个关系由TeacherStudent这个表来表 现。那么什么时候插入或删除TeacherStudent表中的记录来维护关系呢?在用hibernate时,我们不会显示的对 TeacherStudent表做操作。对TeacherStudent的操作是hibernate帮我们做的。hibernate就是看hbm文件中指 定的是"谁"维护关系,那个在插入或删除"谁"时,就会处发对关系表的操作。前提是"谁"这个对象已经知道这个关系了,就是说关系另一头的对象已经set 或是add到"谁"这个对象里来了。前面说过inverse默认是false,就是关系的两端都维护关系,对其中任一个操作都会处发对表系表的操作。当在 关系的一头,如Student中的bag或set中用了inverse="true"时,那就代表关系是由另一关维护的(Teacher)。就是说当这插 入Student时,不会操作TeacherStudent表,即使Student已经知道了关系。只有当Teacher插入或删除时才会处发对关系表的 操作。所以,当关系的两头都用inverse="true"是不对的,就会导致任何操作都不处发对关系表的操作。当两端都是inverse= "false"或是default值是,在代码对关系显示的维护也是不对的,会导致在关系表中插入两次关系。
在一对多关系中inverse就更有意义了。在多对多中,在哪端inverse="true"效果差不多(在效率上)。但是在一对多中,如果要一方维护关 系,就会使在插入或是删除"一"方时去update"多"方的每一个与这个"一"的对象有关系的对象。而如果让"多"方面维护关系时就不会有update 操作,因为关系就是在多方的对象中的,直指插入或是删除多方对象就行了。当然这时也要遍历"多"方的每一个对象显示的操作修关系的变化体现到DB中。不管 怎样说,还是让"多"方维护关系更直观一些。
(1)对one-to-many而言,改变set,会让hibernate执行一系列的update语句, 不会delete/insert数据
(2)对many-to-many而言,改变set,只修改关系表的数据,不会影响many-to-many的另一方。
(3)虽然one-to-many和many-to-many的数据库操作不一样,但目的都是一个:维护数据的一致性。
3、cascade和inverse有什么区别?
可以这样理解,cascade定义的是关系两端对象到对象的级联关系;而inverse定义的是关系和对象的级联关系。
inverse只对set+one-to-many(或many-to-many)有效,对many-to-one, one-to-one无效。cascade对关系标记都有效。
inverse对集合对象整体起作用,cascade对集合对象中的一个一个元素起作用,如果集合为空,那么cascade不会引发关联操作。
比如将集合对象置为null, school.setStudentSet(null)
inverse导致hibernate执行:udpate STUDENT set SCHOOL_ID=null where SCHOOL_ID=?
cascade则不会执行对STUDENT表的关联更新, 因为集合中没有元素。
再比新增一个school, session.save(school)
inverse导致hibernate执行:
for( 对(school的每一个student ){
udpate STUDENT set SCHOOL_ID=? where STUDENT_ID=? //将学生的school_id改为新的school的id
}
cascade导致hibernate执行:
for( 对school的每一个student ){
session.save(aStudent); //对学生执行save操作
}
extends:如果改变集合中的部分元素(比如新增一个元素),
inverse: hibernate先判断哪些元素改变了,对改变的元素执行相应的sql
cascade: 它总是对集合中的每个元素执行关联操作。
(在关联操作中,hibernate会判断操作的对象是否改变)
两个起作用的时机不同:
cascade:在对主控方操作时,级联发生。
inverse: 在flush时(commit会自动执行flush),对session中的所有set,hibernate判断每个set是否有变化,
对有变化的set执行相应的sql,执行之前,会有个判断:if( inverse == true ) return;可以看出cascade在先,inverse在后。
inverse 对set + one-to-many 和 set + many-to-many 起的作用不同。hibernate生成的sql不同。
对one-to-many,hibernate对many方的数据库表执行update语句。
对many-to-many, hibernate对关系表执行insert/update/delte语句,注意不是对many方的数据库表而是关系表。
cascase 对set都是一致的,不管one-to-many还是many-to-many。都简单地把操作传递到set中的每个元素。所以它总是更新many方的数据库表。
4、cascade和inverse有什么相同?
这两个属性本身互不影响,但起的作用有些类似,都能引发对关系表的更新。
5、 建议:只对set + many-to-many设置inverse=false,其他的标记不考虑inverse属性,都设为inverse=true。对cascade,一 般对many-to-one,many-to-many,constrained=true的one-to-one 不设置级联删除。
发表评论
-
hibernate五大核心接口及其应用
2011-05-02 20:28 899所有的Hibernate应用中都会访问Hibernate的5个 ... -
hibernate fetch 和lazy
2011-05-02 19:42 1083经过测试发现Hibernate annotation ... -
hibernate优化
2011-05-02 09:56 751口诀 1、使用双向一对多关联, ... -
Hibernate详解(一)------->>入门
2011-05-02 09:35 783Hibernate是一个开放源代码的对 ... -
hibernate详解(二)---->>继承关系映射(一)
2011-05-02 09:34 818继承是面对对象编程中一个很 ... -
hibernate详解(二)----->>继承关系映射(二、三)
2011-05-02 09:33 794这篇文章紧接着hibernate详解(二)- ... -
hibernate详解(三)----->>组件映射(一)
2011-05-02 09:33 798Hibernate建议在进行领域模型建模时要细 ... -
hibernate详解(三)----->>组件映射(二)之复合主键
2011-05-02 09:31 9523、组件类作为持久化类的对象标识符属性 ... -
Hibernate详解(四)---->>关联关系映射(二)
2011-05-02 09:29 9673、单向一对一 每个中国公民都有一张身份证 ... -
Hibernate详解(四)---->>关联关系映射(一)
2011-05-02 09:27 845关联关系是在领域模型建模中经常使用到的一 ... -
hibernate的二级缓存
2011-05-02 08:58 613Hibernate二级缓存也称为进程级的缓存或Sessio ... -
全面讲解Hibernate二级缓存
2011-05-02 08:56 675在向大家详细介绍Hibernate二级缓存之前,首先让大家了解 ... -
hibernate工作原理及为什么要使用
2011-05-02 08:51 906Hibernate工作原理及其作用 Java学习笔记 201 ... -
hibernate连接池
2011-05-02 08:49 802我分别用以下链接方式测试了一下:tomcat自带的连接池< ... -
hibernate关联
2011-05-02 08:35 758Hibernate关联关系 收藏 在域模型钟, ... -
Hibernate Criteria Query
2011-05-02 08:34 674Hibernate-Criteria Query 收藏 Cri ... -
Spring中配合hibernate使用的简单例子
2011-05-01 20:42 677最近在看SPRING和hibernate,学习了sprin ... -
hibernate 之inverse重点复习
2011-05-01 20:00 683inverse的原因,在于单向的一对多的低效而造成的.举个 ... -
hibernate中只选取某些列的写法
2011-05-01 18:44 790在普通的sql中,为了选取某些列,其实是很简单的,就sele ... -
HQL返回值
2011-05-01 18:35 1207Hibernate查询单个字段,Hibernate把每个id做 ...
相关推荐
2024嵌入式面试资料FreeRTOS基本使用提取方式是百度网盘分享地址
仅提供示例代码
资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom116.0.5796.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver116.0.5796.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)
PyCharm官网本身并不直接提供使用技巧,但PyCharm作为一款强大的Python集成开发环境(IDE),确实有许多实用的使用技巧可以帮助开发者更高效地进行编程。以下是一些常用的PyCharm使用技巧,供您参考: 设置代码字体和界面文字大小: 进入File > Settings(或使用Ctrl+Alt+S快捷键)。 在搜索框中输入“font”找到字体设置。 在“Font”下设置代码字体大小,建议18或20。 如需调整菜单界面文字大小,进入“Appearance”并勾选“Use custom font”,然后设置大小。 快速多行注释或取消注释: 选中多行代码,按Ctrl+/进行多行代码的注释或取消注释。 代码格式化: 使用Ctrl+Alt+L快捷键自动格式化代码,提高代码可读性。 快速修改变量或类名: 选中需要重新命名的变量或类名,右键选择Refactor > Rename,进行全局修改。 快速查找变量、函数等: 使用Ctrl+F快捷键调出查找框,输入关键字进行查找。 更改编辑器字体: 除了在“Settings”中设置外,还可以直接在“Preferences” > “Editor”
数据分析资源包介绍 本资源包汇聚了数据分析领域的核心工具和资源,为数据科学家、分析师和爱好者提供一站式解决方案。内含多种数据处理和分析软件、算法库、可视化工具,以及丰富的数据集和案例研究。资源包还包括了数据清洗、统计分析、机器学习、数据挖掘等各个方面的实用教程和技巧,帮助用户快速掌握数据分析的核心技能。我们持续跟踪数据分析领域的最新发展,定期更新资源包内容,确保用户能够获取到最前沿的知识和技术。无论你是数据分析新手还是专家,这个资源包都将是你不可多得的宝贵财富。立即拥有,开启你的数据分析之旅!
行业报告
2024嵌入式面试资料C&C++提取方式是百度网盘分享地址
.2.《【方法1】从图象看解集(下)》 (1)【课程出自拼多多店铺:北大网课资料店】
资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom115.0.5772.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver115.0.5772.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)
虎年春节送祝福微信小程序源码下载,新版UI支持多种流量主,这是一款网友用以前发过的一款端午送祝福改的一款小程序。 里面的背景图包括祝福语都已经修改成与虎年相关的内容了,总体来说找的背景图还是可以的,不过有些地方和细节小编也给完善了一下。 然后小编测试的时候发现还没有流量主,所以小编也给加了几个流量主进去,到时候大家直接替换流量主的ID就可以了。 另外支持更多小程序推荐,拥有独立的推荐界面 PS:进入送祝福的按钮,部分机型是在老虎的帽子那里,部分是在金元宝那里
"乐享校园"这个校园二手商品交易平台是一个很好的毕业设计选题,它能够解决校园内学生之间的二手物品交易需求,促进资源的循环利用。以下是基于JavaWeb技术实现该平台的设计建议: 1. 需求分析 用户角色:确定系统的主要用户角色,如学生用户、管理员等。 核心功能: 商品发布与管理:用户可以发布商品、编辑商品信息和下架商品。 商品浏览与搜索:用户可以根据分类、关键词等搜索商品。 购物车与订单管理:用户可以将商品加入购物车,并进行订单的生成、支付和查询。 用户评价:用户可以对购买过的商品进行评价。 客服与争议解决:提供用户与卖家之间的沟通渠道,解决交易中的争议。 用户体验:界面友好,操作简便,适应不同用户的操作习惯。 安全性:确保用户数据和交易过程的安全。 2. 技术选型 前端:HTML5、CSS3、JavaScript(可选框架如Bootstrap、Vue.js等)。 后端:Java(Spring Boot)、JPA/Hibernate或MyBatis用于数据库操作。 数据库:MySQL、Oracle或PostgreSQL等。 服务器:Tomcat或Jetty。 开发工具:Eclipse
h3cne综合实验 配置和管理H3C交换机和路由器。 配置VLAN、生成树协议(STP)、链路聚合等交换机功能。 配置静态路由、动态路由协议(如RIP、OSPF)等路由器功能。 配置访问控制列表(ACL)和网络地址转换(NAT)。
Swift语言教程&案例
2023年MISAT医学图像分割与标注软件套装推出了免费试用的标准版,经过技术团队精心研发打磨,MISAT专业版今天正式推出和大家见面了。 相比具备基础标注功能的标准版,MISAT专业版带来了更高的医学图像显示质量、更丰富的标注工具、更高效的标注数据导入流程,以及全新的自定义标签管理与标注复核功能。 MISAT团队将一如既往地深耕多模态医学图像的标注与分割,支持规范化、高质量医学图像标注数据集的构建,助力医学临床人工智能技术的应用推广。
简易版RPC框架中包含RPC框架运行的核心基本组件: 消费者模块、服务提供者模块、公共模块、Web服务器、本地服务注册器、序列化器、请求处理器和基于代理模式(动态代理)。 简易版框架已经实现了远程过程调用的整体流程,扩展版会在该版本基础上进行改造开发。
参看华为交换机设备巡检命令,可以从命令显示设备目前的状态
2024嵌入式大厂面经百度研发工程师笔试题提取方式是百度网盘分享地址
2024嵌入式大厂面经东华软件面试题(部分)提取方式是百度网盘分享地址
Tableau数据可视化实训,清华大学出版社《大数据可视化技术与应用书籍》教材p139-145 实训
私信博主免费看所有华为OD真题、考试报告、手撕代码、面试记录