热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ELK性能优化实战总结:java的list集合详解

一、前言长文警告,事实上我不愿意写太长的文章,一面是太冗余,一方面读者容易疲倦,但是只要是涉及到源码级别的,就

一、前言


长文警告,事实上我不愿意写太长的文章,一面是太冗余,一方面读者容易疲倦,但是只要是涉及到源码级别的,就肯定篇幅不短,因为太短肯定没意义也解释不清楚,但是相信,耐心看完这个文章一定会对Spring源码有所收获!

最近有很多读者面试的时候都被问到了有关于Spring三级缓存的解决方案,很多读者在面试受挫之后,试着自己去读源码,试着去跟断点又发现一层套一层,一会自己就懵了,我这几天总结了一下,为了能够让读者更加的去了解Spring解决循环依赖问题,我决定从以下四个方面去讲述:

  1. 什么是循环依赖
  2. 如果不依赖于Spring自己解决循环依赖如何解决?
  3. 自己实现的方式有什么缺陷?
  4. Spring中是如何解决循环依赖的?

线程

  • 线程的启动
  • 实现Runnab1e接口
  • 继承Thread类
  • 实现Callable接口
  • 线程的状态
  • 线程的方法
  • 线程的优先级
  • 守护线程
  • 未捕获异常处理器

并发编程的问题

  • 线程引入开销:上下文切换与内存同步
  • 线程安全性(原子性+可见性)
  • 死锁

线程间通信/线程同步 工具使用

  • synchronized
  • Lock
  • volatile
  • Atomic

Lock使用 深入

  • 可重入锁 ReentrantLock
  • Condition与wait¬ify区别
  • await&signal
  • 公平锁
  • 读写锁 ReentrantReadWriteLock
  • LockSupport(锁住的是线程,synchronized锁住的是对象)
  • synchronized与Lock的区别
  • 原子操作类使用

Java内存模型 线程同步工具原理

  • JMM抽象结构
  • 指令重排序
  • 内存屏障
  • happens-before(抽象概念,基于内存屏障)
  • 顺序一致性
  • volatile原理
  • synchronized原理
  • 原子操作原理
  • 锁的比较
  • 锁的优化
  • 锁的分类
  • 偏向锁(只有一个线程进入临界区)
  • 轻量级锁(多个线程交替进入临界区)
  • 重量级锁(多个线程同时进入临界区)
  • CPU如何实现原子操作
  • Java如何实现原子操作
  • CAS在OpenJDK中的实现

同步容器

  • ConcurrentHashMap
  • CopyOnWriteArrayList
  • BlockingQueue
  • ThreadLocal

同步工具使用

  • Semaphore (信号量)
  • Cycli eBarrier (可循环使用的屏障/栅栏)
  • Exchanger (两个线程交换数据)
  • CountDownLatch (闭锁)
  • FutureTask (Future实现类)
  • 将批量同步操作转为异步操作(并行流/CompletableFuture)
  • 多个异步任务合并
  • API

线程池使用

  • 引入原因
  • 继承体系
  • ExecutorService
  • ScheduledExecutorService
  • ThreadPoolExecutor
  • 创建线程池
  • 线程动态变化
  • 扩展ThreadPoolExecutor
  • ScheduledThreadPoolExecutor
  • Executors
  • CompletionService

J.U.C 源码解析

  • AQS的接口
  • AQS使用实例(互斥锁,tryAcquire只需一次CAS)
  • AQS实现
  • 同步队列
  • 独占式同步状态
  • 共享式同步状态
  • 独占式超时获取同步状态
  • ReentrantLock公平锁
  • ReentrantReadWriteLock
  • 读写状态的设计
  • 写锁的获取与释放
  • 读锁的获取与释放(放弃)
  • 锁降级
  • LockSupport
  • Condition
  • 等待队列
  • AtomicInteger
  • ThreadPoolExeuctor
  • 状态转换
  • 成员变量
  • 构造方法
  • 执行任务

并发体系思维导图

Java内存模型(JMM)

  • 线程通信机制
  • 内存模型
  • synchronized
  • volatile
  • DCL

并发基础

  • AQS
  • CAS

  • ReentrantLock
  • ReentrantReadWriteLock
  • Condition

并发工具类

  • CyclicBarrier
  • CountDownLatch
  • Semaphore
  • Exchanger

其他

  • ThreadLocal
  • Fork/Join

Java并发集合

  • ConcurrentHashMap
  • ConcurrentLinkedQueue
  • Concurr entSkipListMap
  • ConcurrentSkipListSet

atomic

  • 基本类型类
  • 数组
  • 引用类型
  • 字段类

阻塞队列

  • ArrayBlockingQueue
  • LinkedBlockingQueue
  • PriorityBlockingQueue
  • DelayQueue
  • SynchronousQueue
  • LinkedTransferQueue
  • LinkedBlockingDeque

线程池

  • Executor
  • Future

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。

我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。

不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话记得帮忙点个赞支持一下

如何快速更新自己的技术积累?
  • 在现有的项目里,深挖技术,比如用到netty可以把相关底层代码和要点都看起来。
  • 如果不知道目前的努力方向,就看自己的领导或公司里技术强的人在学什么。
  • 知道努力方向后不知道该怎么学,就到处去找相关资料然后练习。
  • 学习以后不知道有没有学成,则可以通过面试去检验。

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目,有需要的朋友点击这里即可免费领取

八年CRUD,疫情备战三个月,三面头条、四面阿里拿offer面经分享

八年CRUD,疫情备战三个月,三面头条、四面阿里拿offer面经分享

败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!**

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目,有需要的朋友点击这里即可免费领取

[外链图片转存中…(img-1V7e9HzR-1622779052288)]

[外链图片转存中…(img-F3QeX207-1622779052289)]


推荐阅读
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 在Java中,我会做这样的事情:classPerson{privateRecordrecord;publicStringname(){record().get(name);}p ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • NotSupportedException无法将类型“System.DateTime”强制转换为类型“System.Object”
    本文介绍了在使用LINQ to Entities时出现的NotSupportedException异常,该异常是由于无法将类型“System.DateTime”强制转换为类型“System.Object”所导致的。同时还介绍了相关的错误信息和解决方法。 ... [详细]
author-avatar
mobiledu2502887867
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有