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

熟悉网站空间 域名等相关知识营销网站建设规划

熟悉网站空间 域名等相关知识,营销网站建设规划,企业建设营销网站的基本步骤有哪些,化州 网站建设1.java常用集合 ArrayList动态数组,动态调整大小,实现List接口 LinkedList双向链表,实现list和queue接口,适用于频繁插入和删除操作 HashSet无序,使用哈希表实现 TreeSet有序,使用红黑树实现 HashMap无序&…

1.java常用集合

ArrayList动态数组,动态调整大小,实现List接口
LinkedList双向链表,实现list和queue接口,适用于频繁插入和删除操作
HashSet无序,使用哈希表实现
TreeSet有序,使用红黑树实现
HashMap无序,使用哈希表
TreeMap有序,使用红黑树
LinkedHashMap有序,使用哈希表和双向链表,保持插入顺序
Queue队列
PriorityQueue优先队列,按照优先级排序
Stack栈,后进先出

2.红黑树相比b+树的区别和使用场景

应用场景:java集合中的TreeSet和TreeMap,HashMap链表大于8转化红黑树;cpp的stl中的set和map;linux虚拟内存的管理
红黑树相比b+树的优点:rbt用于内部排序而b+t用于外存是一个磁盘友好的数据结构;红黑树具有较快的插入删除查找的时间复杂度

3.ArrayList和LinkedList对比

1.ArrayList是动态数组,LinkedList是链表
2.随机访问array快,linked增加删除快
3.arraylist需要手动设置固定大小,link自由度动态变化
4.arraylist扩容到1.5倍

4.ArrayList使用注意事项

1.线程不安全问题1:两个线程同时添加元素,判断ensureCapacity都成功,导致数组越界
2.线程不安全问题2:元素值覆盖为空问题,多线程同时写入
安全处理:synchronizedList,给add加锁,copyonwirteArrayList(写时复制),使用ThreadLocal确保线程封闭性

5.java线程池核心参数

corePoolSize:核心线程数,没有任务时线程池的基本大小
maximunPoolSize:线程池最大的线程数量
keepAliveTime:大于core时,多余的空闲线程在等待时期最长存活时间
unit:keepAliveTime时间单位
workQueue:存放待执行任务的阻塞队列
threadFactory:创建新线程的工厂类
handler:当线程池到达最大线程数量且任务队列已满,常见策略有抛出一场、丢弃任务、丢弃最老任务、直接在调用者线程个中执行

6.线程池工作原理

在这里插入图片描述

1.小于core,直接创建并执行在核心线程池
2.大于等于core,加入队列等待
3.queue满,创建非核心线程并立刻执行
4.queue满,大于等于max,handler处理
5.任务执行完移除,同时取下一个线程
6.空闲时间超过alivetime,且大于core,会停止回收多出来的线程

7.为什么要用阻塞队列

1.协调和控制线程执行,防止任务丢失或积压
2.任务缓冲,确保不会立即执行,有效平衡任务的生产和消费速度
3.线程管理,当线程池线程忙碌时,新任务在队列中等待

如果使用非阻塞队列,会产生
1.线程数不受控制,耗尽资源
2.任务丢失,如果队列已满新任务立刻丢弃
3.竞态条件,可能会导致数据一致性问题

8.hashMap的rehash

每个键的hashCode处以桶数组大小len,rehash的意思就是len变大,但是还是均匀的

9.CPU密集时如何设计线程池

采用cpu核数+1个线程,+1保证发生缺页中断阻塞时,额外的线程可以顶上去
最理想cpu所有的核心都在运行线程池中的线程

10.io密集如何设计线程池

最佳线程数 = 1 + io耗时/cpu耗时,从而提高cpu和io的利用率

11.threadlocal原理和使用场景

指线程本地变量,使得每个变量副本对于每一个 线程都是独立的,实现变量隔离性。
每个线程都有一个成员变量threadlocalmap,可以用来存数据
使用场景:
1.全局存储用户信息
2.进行线程隔离的变量使用threadlocal进行封装
3.多个方法使用同一个对象时,使用threadlocal替代参数的传递,减少代码耦合;例如@transaction中的就使用了threadlocal保存了connection

12.threadlocal使用注意

内存泄漏问题:指程序中动态分配的堆内存由于某种原因没有释放或无法释放,造成内存浪费,导致系统崩溃,最后堆积导致内存溢出。

由于entry对象被弱引用修饰,会在下次垃圾回收中清除掉,实现threadlocal和线程生命周期的解绑
,这个时候entry的key是null,但是threadlocalmap中存在current thread ref强引用,因此value无法清楚。

因此,需要我们手动remove掉entry对象。

使用弱引用的原因是因为在set和getEntry过程中会对key进行判断,如果key是null,value也会设置为null,这样即使忘了调用remove,当threadlocal被销毁,value值也会被清空

ThreadLocal中一个设计亮点是ThreadLocalMap中的Entry结构的Key用到了弱引用。试想如果使用强引用,等于ThreadLocalMap中的所有数据都是与Thread的生命周期绑定,这样很容易出现因为大量线程持续活跃导致的内存泄漏。使用了弱引用的话,JVM触发GC回收弱引用后,ThreadLocal在下一次调用get()、set()、remove()方法就可以删除那些ThreadLocalMap中Key为null的值,起到了惰性删除释放内存的作用。

其次就是在ThreadLocalMap会存在相应的遍历来查看key为null的槽位并且进行删除哦~

http://www.hrbkazy.com/news/54328.html

相关文章:

  • 网站建设需要的图片怎么弄网站统计工具有哪些
  • 新手如何学做网站第三波疫情将全面大爆发
  • 手机建站平台微点手赚网站快速有排名
  • 个人网站我的大学我做主页面电话投放小网站
  • 如何制作多网页网站谷歌竞价广告
  • 最权威的做网站设计哪家好网站关键词排名如何提升
  • 深圳商城网站建设报价单关键词的选取原则有
  • 做网站推广 优帮云镇江百度推广公司
  • 网站流量增长舆情分析系统
  • wordpress 小视频插件怎样优化关键词到首页
  • 开发一个电商平台app要多少钱威海seo公司
  • 查域名的网站seo网站关键字优化
  • 怎样对一个网站做性能测试百度关键词优化多少钱一年
  • wordpress指定分类子类抖音seo优化怎么做
  • 网站十大品牌网店运营实训报告
  • 开发网站制作如何快速推广app
  • 怎么浏览国外的设计网站小程序开发公司前十名
  • 设计师都上什么网站google框架一键安装
  • 毕业答辩企业网站开发的问题seo是什么意思怎么解决
  • wordpress 模板 字体大小win10优化
  • 网站移动端怎么做云南seo
  • 广州做商城网站网站竞价推广托管公司
  • 网站建设专业导航网站温州seo顾问
  • 做数学题好的网站安卓优化大师app下载
  • 珠海seo网站建设广州网站seo
  • 网站建设流程总结做任务赚佣金的正规平台
  • 做网站主流语言苹果cms永久免费全能建站程序
  • 网站排版的优点网络营销主要是什么
  • 青岛知名网站建设公司网站搜索引擎优化诊断
  • 站长之家网页模板下载最近的新闻摘抄