1. 根据HBM设计控制体重方案
理想的体重控制方法要综合应用运动、饮食和行为改变法3种方式,而且能长期地在日常生活中应用与实践。美国运动医学会从专业的立场,提供6点体重控制的指导原则:
1.摄取的能量,成年人每日不得低于1200大卡,不能过度限制能量的摄取,以免无法获得足够的营养素。
2.提供的食物要让减肥者能接受,故要考虑社会文化背景、一般习惯、味道、价钱、食物来源等因素。
3.摄取的能量要低于所消耗的能量,即要达到能量的负平衡,每周减少的体重最多不能超过1千克,要逐渐地减轻体重。
4.配合行为改变法辨认和去掉那些导致肥胖的不良饮食习惯。
5.从事规律有氧运动(如快走、游泳、慢跑、登山、骑车等)。每日运动要消耗300大卡以上的热量(跑或走步每1500米大约消耗100大卡)。
6.提供的饮食和运动计划,使从事减肥者一辈子都能够持续不断地去实施,使他们的身材能维持在理想的体重当中。
由上述建议可知:单一方式的减肥或减重效果比不上3种方法的联合应用,而且体重控制的工作是一辈子都要注意维持的问题,因此良好的生活方式(像有规律地运动、合理地饮食),都要长期培养与重视。
2. 如何优化hibernate
是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100。Oracle数据库的JDBC驱动默认的Fetch
Size=15,设置Fetch
Size设置为:30、50,性能会有明显提升,如果继续增大,超出100,性能提升不明显,反而会消耗内存。
即在hibernate配制文件中进行配制:
1 <property name="hibernateProperties">
2 <props>3 <propkey="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
4 <prop key="hibernate.show_sql">false</prop>
5 <!-- Create/update the database tables automatically when the JVMstarts up
6 <prop key="hibernate.hbm2ddl.auto">update</prop> -->
7 <!-- Turn batching off for better error messages underPostgreSQL
8 <prop key="hibernate.jdbc.batch_size">100</prop> -->
9 <prop key="hibernate.jdbc.batch_size">50</prop>
10 </props>
11 </property>Fetch Size设的越大,读数据库的次数越少,速度越快;Fetch
Size越小,读数据库的次数越多,速度越慢。
2、如果是超大的系统,建议生成htm文件。加快页面提升速度。
3、不要把所有的责任推在hibernate上,对代码进行重构,减少对数据库的操作,尽量避免在数据库查询时使用in操作,以及避免递归查询操作,代码质量、系统设计的合理性决定系统性能的高低。
4、 对大数据量查询时,慎用list()或者iterator()返回查询结果,(1).
使用List()返回结果时,Hibernate会所有查询结果初始化为持久化对象,结果集较大时,会占用很多的处理时间。(2).
而
使用iterator()返回结果时,在每次调用iterator.next()返回对象并使用对象时,Hibernate才调用查询将对应的对象初始
化,对于大数据量时,每调用一次查询都会花费较多的时间。当结果集较大,但是含有较大量相同的数据,或者结果集不是全部都会使用时,使用
iterator()才有优势。
5、在一对多、多对一的关系中,使用延迟加载机制,会使不少的对象在使用时方会初始化,这样可使得节省内存空间以及减少数据库的负荷,而且若PO中的集合没有被使用时,就可减少互数据库的交互从而减少处理时间。
6、对含有关联的PO(持久化对象)时,若default-cascade="all"或者
“save-update”,新增PO时,请注意对PO中的集合的赋值操作,因为有可能使得多执行一次update操作。
7、对于大数据量新增、修改、删除操作或者是对大数据量的查询,与数据库的交互次数是决定处理时间的最重要因素,减少交互的次数是提升效率的最好途径,
所以在开发过程中,请将show_sql设置为true,深入了解Hibernate的处理过程,尝试不同的方式,可以使得效率提升。尽可能对每个页面的
显示,对数据库的操作减少到100----150条以内。越少越好。
3. 描述一下hibernate的工作机制,常用的类和方法
Hibernate是(1)中间件,介于应用程序和数据库的软件
(2)持久化工具,封装了和数据库访问的细节,可以让程序开发人员更加关注于业务逻辑的处理
(3)ORM工具,将面向对象的java同关系型数据库进行映射,可以实现内存中的数据和数据库中的数据双向同步更新
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
hibernate是如何查询数据库的.
1)先是创建pojo类(javaBean) (2)再是创建映射文件(.hbm.xml) (3)创建配置文件(hibernate.hbm.xml) (4)最后调用Hibernate API对数据库进行CRUD操作.
hibernate
工作原理:
1. 读取并解析配置文件
2. 读取并解析映射信息,创建SessionFactory
3. 打开Sesssion
4. 创建事务Transation
5. 持久化操作
6. 提交事务
7. 关闭Session
8. 关闭SesstionFactory
工作流程:
(1)先是创建pojo类(javaBean)
(2)再是创建映射文件(.hbm.xml)
(3)创建配置文件(hibernate.hbm.xml)
(4)最后调用Hibernate API对数据库进行CRUD操作.
4. 用显存类型hbm的显卡有影响么
先说好处,
1.
有效减小pcb板子的面积,因为显存和gpu堆叠在一起;
2.
位宽更高,注意是位宽,不是带宽,带宽=位宽x频率;
坏处
1.
gpu产生的热量和显存产生的热量会相互影响,导致散热更加困难,需要大型散热器(见非公版fury)或者厚冷排的一体式水冷(见furyx),导致实际体积并没有减小,而且多卡的时候
furyx更加难以安装;
2.
由于gpu和显存高度集成,基本上与非公版无缘了,fury的时候只有非完整版的fury
pro有非公版,实际上就是fury
x的pcb板子换了个散热器;
3.
由于只有sk海力士在生产hbm显存,容易出现因为产能不足导致的恶性循环,以前fury
x是严重滞后于980ti发布,而且真正能买到的时间更加延后,现在hbm2同样也是这个问题,1080ti已经开始铺货,vega还是没影子。
5. Hibernate3 使用原生sql 返回集能用hbm.xml配置文件映射到类里吗
不能
一.Hibernate映射文件的作用:
Hibernate映射文件是Hibernate与数据库进行持久化的桥梁
二,Hibernate映射文件主要内容:
(1).映射内容的定义:
Hibernate映射文件由<hibernate-mapping package="JavaBean所在包的全路径">节点定义映射内容并指定所对应的JavaBean的位置(也可以不在该节点中用package属性指定对应的JavaBean位置,而在该节点下的class节点中的name属性中指定)
(2).数据库和JavaBean的关联:
Hibernate映射文件中用<hibernate-mapping>节点下的
<class name="JavaBean名称" table="对应数据库中的表名">节点指定数据库表和JavaBean的关联。
( 该节点的父节点中用package属性指定了JavaBean的包名时用)/全路径(该节点的父节点中没用package属性指定JavaBean的包名时用)
(3).主键映射:
在<class >节点下用
<id name="数据库中主键在JavaBean中的属性名称" column="数据库中主键名" type="string">节点映射对应的主键,该节点必须有且只有一个(因为主键只有一个),同时必须放在<property ...>节点前
(4).普通字段映射:
在<class ...>节点下用
<property name="数据库中字段在JavaBean中的属性名称" column="数据库中的字段名" type="string"/>节点映射普通字段,该节点可有多个(一个字段用一个该节点来映射)
三,heibernate的主键映射方式:
在<id ...>节点下用<generator class="映射方式"/>节点指定Hibernate向数据库插入数据时主键的生成方式
lassigned:应用程序自身对id赋值。当设置<generator class="assigned"/>时,应用程序自身需要负责主键id的赋值,由外部程序负责生成(在session.save()之前为对象的主键设置值),无需Hibernate参与,一般应用在主键为自然主键时。例如XH为主键时,当添加一个学生信息时,就需要程序员自己设置学号的值,这时就需要应用该id生成器。
lnative:由数据库对id赋值。当设置<generator class="native"/>时,数据库负责主键id的赋值,最常见的是int型的自增型主键。例如,在SQLServer中建立表的id字段为identity,配置了该生成器,程序员就不用为该主键设置值,它会自动设置。
lidentity:采用数据库提供的主键生成机制,为long/short/int型列生成唯一标识如SQL Server、MySQL中的自增主键生成机制。
lhilo:通过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。
lseqhilo:与hi/lo类似,通过hi/lo算法实现的主键生成机制,只是主键历史状态保存在sequence中,适用于支持sequence的数据库,如Oracle。
lincrement:主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,由于各个实例各自维护主键状态,不同实例可能生成同样的主键,从而造成主键重复异常。因此,如果同一个数据库有多个实例访问,这种方式应该避免使用
lsequence:采用数据库提供的sequence机制生成主键,用于用序列方式产生主键的数据库(如:Oracle、DB2等的Sequence),用于为long/short/int型列生成唯一标识,如:<generator class="sequence"><param name="sequence">序列名</param></generator>如Oracle sequence。
luuid.hex:由Hibernate基于128位唯一值产生算法,根据当前设备IP、时间、JVM启动时间、内部自增量等4个参数生成十六进制数值(编码后长度为32位的字符串表示)作为主键。即使是在多实例并发运行的情况下,这种算法在最大程度上保证了产生id的唯一性。当然,重复的概率在理论上依然存在,只是概率比较小。一般而言,利用uuid.hex方式生成主键将提供最好的数据插入性能和数据平台适应性。
luuid.string:与uuid.hex类似,只是对生成的主键进行编码(长度为16位)。在某些数据库中可能出现问题。
lforeign:使用外部表的字段作为主键。该主键一般应用在表与表之间的关系上,会在后面的表对应关系上进一步讲解。
lselect:Hibernate 3新引入的主键生成机制,主要针对遗留系统的改造工程。
由于常用的数据库,如SQLServer、MySQL等,都提供了易用的主键生成机制(如auto-increase字段),可以在数据库提供的主键生成机制上,采用native生成器来配置主键生成方式。
四,映射文件的元素结构和属性
1,根元素:<hibernate-mapping>,每一个hbm.xml文件都有唯一的一个根元素,包含一些可选的属性
[html]view plain
<hibernate-mappingpackage="com.demo.hibernate.beans">
<classname="User"...>
</hibernate-mapping>
<hibernate-mapping>
<classname="com.demo.hibernate.beans.User"...>
</hibernate-mapping>
(1).package: 指定当前映射文件对应的持久类的完整包名(如:package="entity.")
(2).schema: 指定当前映射文件对应的数据库表的schema名
(3).catalog: 指定当前映射文件对应的数据库表的catalog名
(4).default-cascade: 设置默认的级联方式(默认值为none)
(5).default-access: 设置默认的属性访问方式(默认值为property)
(6).default-lazy: 设置对没有指定延迟加载的映射类和集合设定为延迟加载(默认值为true)
(7).auto-import: 设置当前映射文件中是否可以在HQL中使用非完整的类名(默认值为true)
hibernate-mapping节点的字节点:
(1).class: 为当前映射文件指定对应的持久类名和对应的数据库表名
(2).subclass: 指定多态持久化操作时当前映射文件对应的持久类的子类
(3).meta: 设置类或属性的元数据属性
(4).typedef: 设置新的Hibernate数据类型
(5).joined-subclass: 指定当前联结的子类
(6).union-subclass: 指定当前联结的子类
(7).query: 定义一个HQL查询
(8).sql-query: 定义一个SQL查询
(9).filter-def: 指定过滤器
2,<class>定义类:根元素的子元素,用以定义一个持久化类与数据表的映射关系,如下是该元素包含的一些可选的属性
(1).name: 为当前映射文件指定对应的持久类名
(2).table: 为当前映射文件指定对应的数据库表名
(3).schema: 设置当前指定的持久类对应的数据库表的schema名
(4).catalog: 设置当前指定的持久类对应的数据库表的catalog名
(5).lazy: 设置是否使用延迟加载
(6).batch-size: 设置批量操作记录的数目(默认值为1)
(7).check: 指定一个SQL语句用于Schema前的条件检查
(8).where: 指定一个附加的SQL语句的where条件
(9).rowid: 指定是否支持ROWID
(10).entity-name:实体名称 默认值为类名
(11).subselect: 将不可变的只读实体映射到数据库的子查询中
(12).dynamic-update: 指定用于update的SQL语句是否动态生成 默认值为false
(13).dynamic-insert: 指定用于insert的SQL语句是否动态生成 默认值为false
(14).insert-before-update: 设定在Hibernate执行update之前是否通过select语句来确定对象是否确实被修改了,如果该对象的值没有改变,update语句将不会被执行(默认值为false)
(15).abstract: 用于在联合子类中标识抽象的超类(默认值为false)
(16).emutable: 表明该类的实例是否是可变的 默认值为fals
(17).proxy: 指定延迟加载代理类
(18).polymorphism: 指定使用多态查询的方式 默认值为implicit
(19).persister: 指定一个Persister类
(20).discriminator-value: 子类识别标识 默认值为类名
(21).optimistic-lock: 指定乐观锁定的策略 默认值为vesion
class节点的字节点:
(1).id: 定义当前映射文件对应的持久类的主键属性和数据表中主键字段的相关信息
(2).property: 定义当前映射文件对应的持久类的属性和数据表中字段的相关信息
(3).sql-insert: 使用定制的SQL语句执行insert操作
(4).sql-delete: 使用定制的SQL语句执行delete操作
(5).sql-update: 使用定制的SQL语句执行update操作
(6).subselect: 定义一个子查询
(7).comment: 定义表的注释
(8).composite-id: 持久类与数据库表对应的联合主键
(9).many-to-one: 定义对象间的多对一的关联关系
(10).one-to-one: 定义对象间的一对一的关联关系
(11).any: 定义any映射类型
(12).map: map类型的集合映射
(13).set: set类型的集合映射
(14).list: list类型的集合映射
(15).array: array类型的集合映射
(16).bag: bag类型的集合映射
(17).primitive-array: primitive-array类型的集合映射
(18).query: 定义装载实体的HQL语句
(19).sql-query: 定义装载实体的SQL语句
(20).synchronize: 定义持久化类所需要的同步资源
(21).query-list: 映射由查询返回的集合
(22).natural-id: 声明一个唯一的业务主键
(23).join: 将一个类的属性映射到多张表中
(24).sub-class: 声明多态映射中的子类
(25).joined-subclass: 生命多态映射中的来连接子类
(26).union-subclass: 声明多态映射中的联合子类
(27).loader: 定义持久化对象的加载器
(28).filter: 定义Hibernate使用的过滤器
(29).component: 定义组件映射
(30).dynamic-component: 定义动态组件映射
(31).properties: 定义一个包含多个属性的逻辑分组
(32).cache: 定义缓存的策略
(33).discriminator: 定义一个鉴别器
(34).meta: 设置类或属性的元数据属性
(35).timestamp: 指定表中包含时间戳的数据
(36).vesion: 指定表所包含的附带版本信息的数据
4,<id>定义主键:
Hibernate使用OID(对象标识符)来标识对象的唯一性,OID是关系数据库中主键在Java对象模型中的等价物,在运行时,Hibernate根据OID来维持Java对象和数据库表中记录的对应关系
id节点的属性:
(1).name: 指定当前映射对应的持久类的主键名
(2).column: 指定当前映射对应的数据库表中的主键名(默认值为对应持久类的主键/属性名)
(3).type: 指定当前映射对应的数据库表中的主键的数据类型
(4).unsaved-value: 判断此对象是否进行了保存
(5).daccess: Hibernate访问主键属性的策略(默认值为property)
5.generator节点的属性:
(1).class: 指定主键生成器
(2).name: 指定当前映射对应的持久类的主键名
(3).column: 指定当前映射对应的数据库表中的主键名(默认值为对应持久类中的主键名)
(4).type: 指定当前映射对应的数据库中主键的数据类型
(5).unique: 设置该字段的值是否唯一(默认值为false)
(6).not-null: 设置该字段的值是否可以为null(默认值为false)
(7).update: 设置update操作时是否包含本字段的数据(默认值为true)
(8).insert: 设置insert操作时是否包含本字段的数据(默认值为true)
(9).formula: 设置查询操作时该属性的值用指定的SQL来计算
(10).access: Hibernate访问这个属性的策略(默认值为property)
(11).lazy: 设置该字段是否采用延迟加载策略(默认值为false)
(12).optimistic-lock: 指定此属性做更新操作时是否需要乐观锁定(默认值为true)
6.property节点的属性:
用于持久化类的属性与数据库表字段之间的映射,包含如下属性:
(1)name:持久化类的属性名,以小写字母开头
(2)column:数据库表的字段名
(3)type:Hibernate映射类型的名字
(4).formula: 设置当前节点对应的持久类中的属性的值由指定的SQL从数据库获取
注:指定的SQL必须用()括起来,指定SQL中使用列时必须用表的别名加.加列名的方式访问,但如果指定SQL中要使用当前映射对应的列时不能用表的别名加.加列名的方式访问,而是直接访问即可
如:formula="(select tn.columnName from tableName tn where tn.columnName=当前映射中的属性名)"
(5).unique: 设置该字段的值是否唯一(默认值为false)
(6).not-null: 设置该字段的值是否可以为null(默认值为false)
(7).not-found: 设置当当前节点对应的数据库字段为外键时引用的数据不存在时如何让处理(默认值为exception:产生异常,可选值为ignore:对不存在的应用关联到null)
(8).property-ref: 设置关联类的属性名,此属性和本类的关联相对应 默认值为关联类的主键
(9).entity-name: 被关联类的实体名
(10).lazy: 指定是否采用延迟加载及加载策略(默认值为proxy:通过代理进行关联,可选值为true:此对象采用延迟加载并在变量第一次被访问时抓取、false:此关联对象不采用延迟加载)
(11).access: Hibernate访问这个属性的策略(默认值为property)
(12).optimistic-lock: 指定此属性做更新操作时是否需要乐观锁定(默认值为true)
7.one-to-one节点的属性:
(1).name: 映射类属性的名字
(2).class: 关联类的名字
(3).formula: 绝大多数一对一关联都指向其实体的主键。在某些情况下会指向一个或多个字段或是一个表达式,此时可用一个SQL公式来表示
(4).cascade: 设置级联操作时的级联类型
(5).constrained: 表明当前类对应的表与被关联的表之间是否存在着外键约束默认值为false
(6).fetch: 设置抓取数据的策略 可选值为 join外连接抓取、select序列选择抓取
(7).property-ref: 设置关联类的属性名,此属性和本类的主键相对应 默认值为关联类的主键
(8).access: Hibernate访问这个属性的策略(默认值为property)
(9).lazy: 指定是否采用延迟加载及加载策略 默认值为proxy通过代理进行关联 可选值为 true此对象采用延迟加载并在变量第一次被访问时抓取、false此关联对象不采用延迟加载
(10).entity-name: 被关联类的实体名
8.many-to-one 元素:
(1).name: 映射类属性的名字
(2).class: 关联类的名字
(3).formula: 绝大多数一对一关联都指向其实体的主键。在某些情况下会指向一个或多个字段或是一个表达式,此时可用一个SQL公式来表示
(4).column: 中间关联表映射到目标关联表的关联字段
(5).cascade: 设置级联操作时的级联类型
(6).fetch: 设置抓取数据的策略 默认值为select序列选择抓取 可选值为join外连接抓取
(7).lazy: 指定是否采用延迟加载及加载策略 默认值为proxy通过代理进行关联 可选值为 true此对象采用延迟加载并在变量第一次被访问时抓取、false此关联对象不采用延迟加载
(8).update: 进行update操作时是否包含此字段
(9).insert: 进行insert操作时是否包含此字段
(10).not-found: 指定外键引用的数据不存在时如何让处理 默认值为exception产生异常 可选值为ignore对不存在的应用关联到null
9.many-to-many 元素
10.set 元素
(1).name: 映射类属性的名字
(2).table: 关联的目标数据库表
(3).schema: 目标数据库表的schema名字
(4).catalog: 目标数据库表的catalog名字
(5).subselect: 定义一个子查询
(6).sort: 设置排序的类型 默认值为 unsorted不排序 可选值为 natural自然排序、comparatorClass实现接口类作为排序算法 避免与order-by同时使用
(7).lazy: 是否采用延迟加载
(8).inverse: 用于标识双向关联中被动的一方 默认值为false
(9).cascade: 设置级联操作时的级联类型
(10).mutable: 标识被关联对象是否可以改变 默认值为true
(11).order-by: 设置排序规则
(12).where: 增加筛选条件
(13).batch-size: 延迟加载时,一次读取数据的数量 默认值为1
(14).fetch: 设置抓取数据的策略 可选值为 join外连接抓取、select序列选择抓取
11.list 元素
12.map 元素
6. 在热处理硬度表示中HBM是什么意思
HBM是不对的,热处理布氏硬度有两种标尺:HBS和HBW,不过从1993年开始HBS已经废止了,目前通用的是HBW的或者HB的
7. hbm影响行为转变的因素
个体感知和积极采取。
HBM认为个体感知、积极采取是以行动、相信自己能采取推荐的行动是行为转变的重要因素。
HBM传感器提供从虚拟到真实的物理测量的产品和服务从1950年成立起,HBM传感器便在测试和测量领域具有极高的声誉,在多种工业领域为客户提供高精度,高可靠的传感器,仪表到完整的测量解决方案。
8. 什么是健康信念模型(Health Belief Model,HBM)
正常人的一切行为都受到心理意识的控制,不受心理意识控制的行为只有婴幼儿的本能行为(如吮吸)、精神病行为(如自伤和伤人)和神经症行为(强迫性洗手)。
而决定人们采取某种行为的最直接心理活动就是人的知觉(perception)、态度(attitude)和信念(belief)。知觉也可以理解为意识,如一个人是否能够意识到过咸饮食习惯可引起高血压?是否能够意识到高血压对人的健康会产生严重的危害?是否意识到自己具有改变过咸饮食习惯的能力?态度可以理解为一个人对一件事物或一个人的看法及心理倾向,如改变过咸饮食习惯是否值得去做?预防高血压是一件很重要的事吗?信念是态度的强化,是一种稳定的心理倾向,如高血压会对人的健康产生严重的危害,改变过咸饮食习惯对于预防高血压十分重要。
健康信念模型(HBM)正是一个通过干预人们的知觉、态度和信念等心理活动,从而改变人们的行为的健康教育模型,由当时服务于美国公共卫生机构的社会心理学家Hochbaum等创立于19世纪50年代,其后经过不断的充实和发展,已成为人们开展健康行为干预项目和活动的重要工作模式。
HBM的理论假设是:
一个人的行为会发生改变,如果他:--感到一种疾病或残疾是可以预防或避免发生的;--意识到只要采取建议的措施(行为)就可以避免其发生;--自信自己能够成功地改变这种行为;
HBM自创建以来,被广泛地应用于控烟、营养、性病艾滋病、高血压筛查、安全带使用、乳腺自检、锻炼等众多的健康教育与健康促进项目和活动的计划、设计和实施工作之中。HBM模型的基本思路可以用图1表示。
HBM模型也存在一些缺点,主要包括:
1、到目前为止,多数健康教育与健康促进项目只用到了其中的部分内容;
2、作为一个心理学的行为改变模型,未考虑到其他因素对人们行为的影响,如环境因素、经济因素等;
该模型未考虑社会规范、同伴压力对人们行为的影响。