当前位置: 首页 > news >正文

html5做网页网站gwt 网站开发

html5做网页网站,gwt 网站开发,中国建设银行青海省分行网站,做网站可以参考的网站探究ThreadLocal 下面有一个很重要的HASH_INCREMENT,他的值是0x61c88647 public class ThreadLocalT {/***ThreadLocals依赖于附加到每个线程的每线程线性探针哈希映射 (thread.threadLocals和inheritableThreadLocals)。ThreadLocal对象充当键#xff0c;通过threa…探究ThreadLocal 下面有一个很重要的HASH_INCREMENT,他的值是0x61c88647 public class ThreadLocalT {/***ThreadLocals依赖于附加到每个线程的每线程线性探针哈希映射 (thread.threadLocals和inheritableThreadLocals)。ThreadLocal对象充当键通过threadLocalHashCode搜索。这是一个自定义哈希代码 (仅在ThreadLocalMaps中有用)它消除了在相同线程 *使用连续构造的ThreadLocals的常见情况下的冲突同时在不太常见的情况下保持良好的行为。*/private final int threadLocalHashCode nextHashCode();/*** 连续生成的哈希码之间的差异-将隐式顺序线程本地id转换为两次幂大小的表的近乎最佳扩展的乘法哈希值。*/private static AtomicInteger nextHashCode new AtomicInteger();/*** 连续生成的哈希码之间的差异-将隐式顺序线程本地id转换为两次幂大小的表的近乎最佳扩展的乘法哈希值。*/private static final int HASH_INCREMENT 0x61c88647;/*** 返回下一个哈希代码。*/private static int nextHashCode() {return nextHashCode.getAndAdd(HASH_INCREMENT);}//忽略}0x61c88647 0x是十六进制。 将61c88647放入进制转换器中 二进制1100001110010001000011001000111 十进制1640531527 这个数字表示黄金比例乘以2的31次方 ((sqrt(5)-1) * (2^31))。结果是一个黄金数即2654435769或-1640531527。 此外在ThreadLocalMap的哈希处理方式中我们可以看到HASH_INCREMENT与使用黄金比率的斐波那契哈希有关。标准的java.util.HashMap使用链表来解决哈希冲突。而ThreadLocalMap则只是寻找下一个可用的空间并将元素插入其中。它通过位掩码来找到第一个可用的空间因此只有较低的几位是有效的。如果第一个空间已满它会将元素放入下一个可用的空间。HASH_INCREMENT将键在稀疏的哈希表中分散排列以减小找到相邻值的可能性。 因此使用HASH_INCREMENT可以帮助减少ThreadLocalMap中哈希冲突的可能性保证元素在哈希表中分布均匀。这样可以提高ThreadLocal的性能和效率。 其中使用了Entry[] Entry对象是静态内部类 static class Entry extends WeakReferenceThreadLocal? {/** The value associated with this ThreadLocal. */Object value;Entry(ThreadLocal? k, Object v) {super(k);value v;}}使用了WeakReference这是弱引用。 Java中 4种引用的级别和强度由高到低依次为强引用 - 软引用 - 弱引用 - 虚引用 当垃圾回收器回收时某些对象会被回收某些不会被回收。垃圾回收器会从根对象 Object来标记存活的对象然后将某些不可达的对象和一些引用的对象进行回收。 表格说明如下 引用类型被垃圾回收时间用途生存时间强引用从来不会对象的一般状态JVM停止运行时终止软引用当内存不足时对象缓存内存不足时终止弱引用正常垃圾回收时对象缓存垃圾回收后终止虚引用正常垃圾回收时跟踪对象的垃圾回收垃圾回收后终止 为什么使用Entry数组 是因为多线程的情况要保证每个线程的副本值都有各自的值。 他用的是线性探测法。就是线程不多。不存在经常扩容的情况。 ThreadLocal 往往存放的数据量不会特别大而且key 是弱引用又会被垃圾回收及时让数据量更小这个时候开放地址法简单的结构会显得更省空间同时数组的查询效率也是非常高加上第一点的保障冲突概率也低 HashMap和ConcurrentHashMap1.8实现不再展开。 开放地址法容易产生堆积不适合大规模的数据存储。删除其中一个冲突的元素时需要移动元素。 链地址法平均查找长度短指针额外空间开销。适合大规模数据。 开放地址法   即使key产生hash冲突也不会形成链表而是将所有元素都存入哈希表里。发生hash冲突时就以当前地址为基准进行再寻址的方法去寻址下一个地址直到找到一个为空的地址为止。实现方式有 1.线性探测法发生hash冲突时顺序查找下一个位置直到找到一个空位置固定步长1探测 2.线性补偿探测法在发生hash冲突时在表的左右位置进行按一定步长跳跃式探测固定步长n探测 3.伪随机探测在发生hash冲突时根据公式生成一个随机数作为此次探测空位置的步长随机步长n探测从而可以避免堆聚 缺点容易产生堆积问题不适于大规模的数据存储散列函数的设计对冲突会有很大的影响插入时可能会出现多次冲突的现象删除的元素是多个冲突元素中的一个需要对后面的元素作处理实现较复杂结点规模很大时会浪费很多空间 拉链法   jdk1.8 中HashMapConcurrentHashMap都是采用这个方法使用链表来保存发生hash冲突的key即不同的key有一样的hash值将这些发生冲突的 value 组成一个单向链表。 优点 ①拉链法处理冲突简单且无堆积现象即非同义词决不会发生冲突因此平均查找长度较短 ②由于拉链法中各链表上的结点空间是动态申请的故它更适合于造表前无法确定表长的情况 ③开放定址法为减少冲突要求装填因子α较小故当结点规模较大时会浪费很多空间。而拉链法中可取α≥1且结点较大时拉链法中增加的指针域可忽略不计因此节省空间 ④在用拉链法构造的散列表中删除结点的操作易于实现。只要简单地删去链表上相应的结点即可 缺点   指针需要额外的空间故当结点规模较小时开放定址法较为节省空间而若将节省的指针空间用来扩大散列表的规模可使装填因子变小这又减少了开放定址法中的冲突从而提高平均查找速度 再哈希法   发生hash冲突时使用第二个第三个第四个哈希函数来计算地址直到无冲突时比较耗时。 建立公共溢出区   为所有发生hash冲突的关键字记录一个公共的溢出区来存放。在查找的时候先与哈希表的相应位置比较如果查找成功则返回。否则去公共溢出区按顺序查找。在冲突数据少时性能好冲突数据多的时候耗时。
http://www.zqtcl.cn/news/592357/

相关文章:

  • 网站开发方向paypal账号注册
  • 如何选择做pc端网站重庆平台网站建设企业
  • 一个人做网站好累电子商城采购流程
  • 网站制作维护价格信息网站建设方案
  • 如何选择建网站公司能看人与动物做的网站
  • 温州网站建设方案外包不能访问子目录的网站
  • 建设拼多多一样网站需要多少钱wordpress企业站主题免费
  • 无锡网站制作哪家公司好做微信文章的网站
  • 网站 制作信产部网站备案
  • 做流程图表的网站网络营销推广网站收录
  • iis5.1怎么新建网站电子商务网站建设与管理实训内容答案
  • 做网站背景步骤知名的vi设计公司
  • 中国室内设计师联盟网站我注册过的网站
  • 如何给自己的公司做网站网站设计电商首页
  • 成都网站开发培训综合网站开发实训总结
  • 个人备案网站名称文学网站开发
  • 花钱做推广广告哪个网站好泗洪网页设计
  • 望牛墩镇网站建设公司网站建设企业熊掌号
  • 做网站一般会出现的问题静态网站的好处就是安全性好从而
  • 做海鲜代理在什么网站建筑网片钢筋网生产厂家
  • 万网网站建设方案书导购网站开发要多少钱
  • 做网站muse好还是DW好用wordpress %link
  • html5门户网站模版做投标需要知道什么网站
  • 合肥网站制作推广seo引擎搜索网站关键词
  • 陕西建设厅网站wordpress 不显示ip
  • 郑州外贸网站制作营销号视频生成器手机版
  • 绵阳市建设工程质量监督站网站wordpress的插件目录
  • 建设和管理环保网站西安做兼职网站设计
  • 在网站中写小说想要删除如何做婚纱摄影的网站怎么做
  • 重庆自适应网站建设wordpress添加icon文件