高低算法
来源:互联网 发布:sql注入病毒的原理 编辑:程序博客网 时间:2024/04/29 04:49
1.hilo 和 seqhilo生成器给出了两种hi/lo算法的实现。
配置方式如下:
①hilo生成器
<id name="id" type="id" column="id"> <generator class="hilo"> <paramname="table">hibernate_unique_key</param> <paramname="column">next_value</param> <paramname="max_lo">100</param> </generator></id>
②seqhilo生成器
<id name="id" type="long" column="cat_id"> <generator class="seqhilo"> <paramname="sequence">hi_value</param> <paramname="max_lo">100</param> </generator></id>
使用seqhilo生成器需要sequence的支持,下面我们只讨论更通用的hilo生成器。
2.hilo生成器默认请况下使用的表是hibernate_unique_key,默认字段叫作next_hi。
next_hi必须有一条记录否则会出现错误。
3.hi/lo算法中的几个基本概念:
①hi:高值——从数据库取得的那个值
②lo:低值——hibernate自动维护,取值1到max_low
③max_low:映射文件中配置的那个值
4.那hibernate怎样生成主键呢?
①从数据库中取得hi值,数据库的next_hi值加1
②hibernate取得lo值(0到max_lo-1循环,lo到max_lo时,执行步骤①得到+1后的next_hi值,然后lo继续从0到max_lo-1循环)
③根据下面的公式计算主键值:
hi*(max_lo+1)+lo;
5.例如hi初始为2,max_lo为3,按如下方式生成的主键:
①读取hibernate_unique_key表的next_hi列作为hi的值,现在是2,更新next_hi值为3,为下一次做准备。
2*(3+1)+0=82*(3+1)+1=92*(3+1)+2=102*(3+1)+3=11
②读取hibernate_unique_key表的next_hi列作为hi的值,现在是3。然后更新next_hi列的值为4,为下一次做准备。
3*(3+1)+0=123*(3+1)+1=13
③再下一次计算时,读取next_hi列作为hi值为4,hibernate_unique_key表的next_hi列的值变为5
4*(3+1)+0=16
④但是有一种特殊情况,就是hi是0的时候,那么第一个值不是0*(max_lo+1)+0=0而是跳过0,直接就是1
- 高低算法
- 算法——字节高低位交换
- 使用hilo高低位算法-生成商品编号
- 算法——字节高低位交换
- 使用hilo高低位算法-生成编号
- 效率高低有方法 数据挖掘十大经典算法
- 5-2 决策树算法预测销量高低代码
- 一分钟了解"英语表达:算法复杂度高低/速度快慢"
- 高低字节
- 地图高低
- 胆固醇高低
- 5-3 神经网络算法预测销量高低(改进版,消除了一些warning)
- 编程的层次高低
- 磊谿谷无异石古木寺高低
- 高低情商的表现
- 个人成就高低测试
- 高低帽变换
- 高低位交换
- 文章标题
- C++实验3-多分数段函数求值
- 侧滑
- ICA独立成分分析
- 行为型模式之观察者模式
- 高低算法
- leetcode 257. Binary Tree Paths
- Hadoop2的高可用性实现原理
- 虚继承
- PHP 运行方式(PHP SAPI介绍)
- 屏蔽Adobe连接验证服务器
- 安卓数据库编程总结(1)
- Host 'heChengjian' is not allowed to connect to this MySQL server
- webservice 入门笔记三通过payload发送消息