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

推广链接网站网站外链建设可以提升网站权重对吗

推广链接网站,网站外链建设可以提升网站权重对吗,前端刚毕业开多少工资,怎么给网站做缓存1 CopyOnWriteArrayList介绍 CopyOnWriteArrayList是一个线程安全的ArrayList。 CopyOnWriteArrayList是基于lock锁和数组副本的形式去保证线程安全。 在写数据时#xff0c;需要先获取lock锁#xff0c;需要复制一个副本数组#xff0c;将数据插入到副本数组中#xff0c…1 CopyOnWriteArrayList介绍 CopyOnWriteArrayList是一个线程安全的ArrayList。 CopyOnWriteArrayList是基于lock锁和数组副本的形式去保证线程安全。 在写数据时需要先获取lock锁需要复制一个副本数组将数据插入到副本数组中将副本数组赋值给CopyOnWriteArrayList中的array。 因为CopyOnWriteArrayList每次写数据都要构建一个副本如果你的业务是写多并且数组中的数据量比较大尽量避免去使用CopyOnWriteArrayList因为这里会构建大量的数组副本比较占用内存资源。 CopyOnWriteArrayList是弱一致性的写操作先执行但是副本还有落到CopyOnWriteArrayList的array属性中此时读操作是无法查询到的。 2 核心属性方法 主要查看2个核心属性以及2个核心方法还有无参构造 /** 写操作时需要先获取到的锁资源CopyOnWriteArrayList全局唯一的。 */ final transient ReentrantLock lock new ReentrantLock(); /** CopyOnWriteArrayList真实存放数据的位置查询也是查询当前array */ private transient volatile Object[] array; // 获取array属性 final Object[] getArray() { return array; } // 替换array属性 final void setArray(Object[] a) { array a; } /** * 默认new的CopyOnWriteArrayList数组长度为0。 * 不像ArrayList初始长度是10每次扩容1/2, CopyOnWriteArrayList不存在这个概念 * 每次写的时候都会构建一个新的数组 */ public CopyOnWriteArrayList() { setArray(new Object[0]); } 3 读操作 CopyOnWriteArrayList的读操作就是get方法基于数组索引位置获取数据。 方法之所以要差分成两个是因为CopyOnWriteArrayList中在获取数据时不单单只有一个array的数组需要获取值还有副本中数据的值。 // 查询数据时只能通过get方法查询CopyOnWriteArrayList中的数据 public E get(int index) { // getArray拿到array数组调用get方法的重载 return get(getArray(), index); } // 执行get(int)时内部调用的方法 private E get(Object[] a, int index) { // 直接拿到数组上指定索引位置的值 return (E) a[index]; } 4 写操作 CopyOnWriteArrayList是基于lock锁和副本数组的形式保证线程安全。 // 写入元素不指定索引位置直接放到最后的位置 public boolean add(E e) { // 获取全局锁并执行lock final ReentrantLock lock this.lock; lock.lock(); try { // 获取原数组还获取了原数组的长度 Object[] elements getArray(); int len elements.length; // 基于原数组复制一份副本数组并且长度比原来多了一个 Object[] newElements Arrays.copyOf(elements, len 1); // 将添加的数据放到副本数组最后一个位置newElements[len] e; // 将副本数组赋值给CopyOnWriteArrayList的原数组 setArray(newElements); // 添加成功返回true return true; } finally { // 释放锁~ lock.unlock(); } } // 写入元素指定索引位置。不会覆盖数据 public void add(int index, E element) { // 拿锁加锁~ final ReentrantLock lock this.lock; lock.lock(); try { // 获取原数组还获取了原数组的长度 Object[] elements getArray(); int len elements.length; // 如果索引位置大于原数组的长度或者索引位置是小于0的。 if (index len || index 0) throw new IndexOutOfBoundsException(Index: index , Size: len); // 声明了副本数组 Object[] newElements; // 原数组长度 - 索引位置等到numMovedint numMoved len - index; // 如果numMoved为0说明数据要放到最后面的位置 if (numMoved 0) // 直接走了原生态的方式正常复制一份副本数组 newElements Arrays.copyOf(elements, len 1); else { // 数组要插入的位置不是最后一个位置 // 副本数组长度依然是原长度 1 newElements new Object[len 1]; // 将原数组从0索引位置开始复制复制到副本数组中的前置位置 System.arraycopy(elements, 0, newElements, 0, index); // 将原数组从index位置开始复制复制到副本数组的index 1往后放。 // 这时index就空缺出来了。 System.arraycopy(elements, index, newElements, index 1, numMoved); } // 数据正常放到指定的索引位置 newElements[index] element; // 将副本数组赋值给CopyOnWriteArrayList的原数组 setArray(newElements); } finally { // 释放锁 lock.unlock(); } }
http://www.yutouwan.com/news/293360/

相关文章:

  • 北京网站建设市场织梦高清电影网站模板
  • 青海小学网站建设c 做彩票网站
  • google外贸网站推广织梦网站上传保存文档
  • 张家界网站建设方案投资公司投资流程
  • 学校门户网站模板wordpress 新添加页面模板
  • 拼多多网站建设合同做网站是用啥软件做的
  • 中英双语营销型网站wordpress 文章付费查看
  • wordpress建站给媒体分类视觉设计师多少钱一个月
  • 安陆市网站邯郸企业网站建设
  • 有没有专门做外贸的网站网站建设服务兴田德润
  • 宁波网站建设公司哪家比较好个人建网站多少钱
  • 公司宣传网站建设开题报告做360优化网站都有哪家
  • 重庆网站建设小能手wordpress发不出邮件
  • wix怎么做网站教程包含导航栏至少包含三个布局
  • 如何编辑网站后台WordPress做成小程序
  • 用wordpress开发网站婚庆网站大全
  • 访问网站详细过程宿迁公司注册
  • 网站建设有什么证哪里找装修设计师
  • c语言基础知识入门谷歌优化seo
  • qq官方网站登录广东省建设厅
  • wordpress oauth正规seo关键词排名哪家专业
  • 昆山自适应网站建设域名抢注哪个平台好
  • 贷款 东莞网站建设网站后台版权
  • 微商城网站建设服务网页与网站设计什么是主题
  • 南昌做网站优化的公司免费24小时在线心理医生
  • 上海公司黄页网站大众服务器网站
  • 如何提高网站安全性网站架构布局
  • 金融网站 源码网页制作专业知识
  • 苏州专业设计网站怎么形容网站做的很好
  • 湟源县网站建设wordpress header.php