- 博客(19)
- 资源 (4)
- 收藏
- 关注
原创 java面试题集中营-02集合
由于本人要准备面试,所以更新一些常见的,自己收集的面试题java集合框架ListVector和ArrayList、LinkedList联系和区别?分别的使用场景ArrayList是数组实现的,线程不安全,查询修改快,增加和删除慢LinkList是双向链表实现的,线程不安全,查询修改满,增加和删除快Vector: 底层是数组实现,线程安全的,操作的时候使用synchronized进行加锁ArrayList是基于数组,数组在内存上是连续开辟的空间,数组中的每个元素的类型一致,占用的空间大小也就是一
2020-08-23 18:43:21 121
原创 java面试题集中营-01javase基础
由于本人要准备面试,所以更新一些常见的,自己收集的面试题javase基础1.短路运算符和位运算短路运算& 和 && 都可以实现 "和" 这个功能区别:& 两边都运算,而 && 先算 && 左侧,若左侧为false 那么右侧就不运算,判断语句中推荐使用 &&,效率更高| 和 || 和上面类似,都可以实现 "或" 这个功能区别:||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断把&&am
2020-08-12 13:54:06 111
原创 高并发研究室-08CAS与死锁
本章主要讲一下CAS与死锁的详解CASCAS是什么cas 全称 “Compare-And-Swap”。中文叫“比较并且交换”。是一种思想,一种算法。原子类与乐观锁的实现原理就是CAS.在多线程的情况下,各个代码的执行顺序是不能确定的,所以为了保证并发安全,我们可以使用互斥锁。而 CAS 的特点是避免使用互斥锁,当多个线程同时使用 CAS 更新同一个变量时,只有其中一个线程能够操作成功,而其他线程都会更新失败。不过和同步互斥锁不同的是,更新失败的线程并不会被阻塞,而是被告知这次由于竞争而导致的操作失
2020-07-24 14:33:13 345
原创 高并发研究室07-ThreadLocal讲解
本章主要讲一下本地线程变量ThreadLocalThreadLocal是什么在我们所知的并发中,多线程访问共享资源时,不能保证线程安全。一般使用者在访问共享变量的时候需要进行额外的同步操作才能进行操作。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。就是共享变量副本后存在线程自己内部。这样的话对变量的修改,不会影响到其他线程。ThreadLoca
2020-07-16 11:45:49 124
原创 高并发研究室06-原子类Atomic*
本章主要讲一下原子类原子类定义在了解原子类,我们先需要知道原子性。在程序中,原子性指的是一组操作要么全都操作成功,要么全都失败,不能只操作成功其中的一部分。原子类指的就是在java.util.concurrent.atomic 下的类,就是具有原子性的类,可以原子性地执行添加、递增、递减等操作。比如常见的线程不安全的i++,可以替换成getAndIncrement原子类的作用原子类是为了保证并发情况线程安全。比锁更具有一些优势,可以理解为乐观锁。粒度更细:原子变量可以把竞争范围缩小到变量级别,
2020-07-16 09:56:30 113
原创 高并发研究室01-线程池详解
线程池三种线程的创建方式继承Thread类实现Runnable接口使用callable与futher方式创建线程,这个是带返回值的。线程池的好处第一点,线程池可以解决线程生命周期的系统开销问题,同时还可以加快响应速度。因为线程池中的线程是可以复用的,我们只用少量的线程去执行大量的任务,这就大大减小了线程生命周期的开销。而且线程通常不是等接到任务后再临时创建,而是已经创建好时刻准备执行任务,这样就消除了线程创建所带来的延迟,提升了响应速度,增强了用户体验。第二点,线程池可以统筹内存和 CPU 的使
2020-07-14 18:43:17 81
原创 高并发研究室02-定制线程池以及线程复用原理
本章主要讲解我们如何通过真实业务情况定制合适的线程池,如何关闭线程池,线程复用原理线程数量的判断在我们准备根据业务环境定义一个线程池时,需要根据业务来判断一个任务执行的速度,耗费的性能。然后来确定线程数。我们大致把任务分为两种CPU密集型任务首先,我们来看 CPU 密集型任务,比如加密、解密、压缩、计算等一系列需要大量耗费 CPU 资源的任务。对于这样的任务最佳的线程数为 CPU 核心数的 1~2 倍,如果设置过多的线程数,实际上并不会起到很好的效果。此时假设我们设置的线程数量是 CPU 核心数的
2020-07-14 18:42:09 106
原创 高并发研究室03-锁的七大类浅谈
本章主要就根据锁的分类,大致的了解一些锁的概念锁的7大分类锁的分类是根据锁的特性来分类的。一把锁可能有多种特性,比如ReentrantLock既可以是可中断锁,又是可重入锁7大类分别是:偏向锁/轻量级锁/重量级锁;可重入锁/非可重入锁;共享锁/独占锁;公平锁/非公平锁;悲观锁/乐观锁;自旋锁/非自旋锁;可中断锁/不可中断锁。偏向锁/轻量级锁/重量级锁偏向锁/轻量级锁/重量级锁,这三种锁特指 synchronized 锁的状态,通过在对象头中的 mark word 来表明锁的状态。偏向锁如果
2020-07-14 18:40:56 136
原创 高并发研究室04-锁的相关技术点
本文章主要讲解一些自己对于锁的一些理解,monitor,lock等等一些技术点synchronized 与 monitor锁monitor锁是什么monitor英文翻译为监视器。java虚拟机中synchronized是基于monitor来实现的同步。每个 Java 对象都可以用作一个实现同步的锁,这个锁也被称为内置锁或 monitor 锁,获得 monitor 锁的唯一途径就是进入由这个锁保护的同步代码块或同步方法,线程在进入被 synchronized 保护的代码块之前,会自动获取锁,并且无论是
2020-07-14 18:40:22 109
原创 高并发研究室05-ConcurrentHashMap
本章主要讲解一些HashMap与ConcurrentHashMap的原理与对比。HashMap线程不安全put源码如下:这个modCount 是类变量,也就是在jvm内存结构中存放在方法区的,方法区是共享的,那么也就是modCount这个变量不是线程安全。而且源码中++modCount不是原子操作。这个其实有三个步骤先增加,后保存,最后读取。这三个操作不是加锁同步的。因此HashMap的put()是线程不安全的。jdk1.8中有多个线程同时使用put来添加元素,而且恰好两个put的数据hash值一
2020-07-14 18:38:19 100
原创 02-springcloud Ribbon 客户端负载均衡
这是本人自己记录的springcloud知识,相应源码在https://github.com/shijingfeng/spring-cloud-actual.git什么是负载均衡1. LB,即负载均衡(Load Balance),负载均衡是微服务架构中经常使用的一种技术。 负载均衡是我们处理高并发、缓解网络压力和进行服务端扩容的重要手段之一,简单的说就是将用户的请求平摊的分配到多个服务...
2020-03-14 19:36:39 135 1
原创 01-springcloud和eureka
这是本人自己记录的springcloud知识,相应源码在https://github.com/shijingfeng/spring-cloud-actual.git一 什么是 Spring Cloud Spring Cloud,基于 Spring Boot 提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监 控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组...
2020-03-14 19:21:58 230
原创 01-Flink运行架构
1.flink运行时的组件Flink 运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作:作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher)。因为 Flink 是用 Java 和 Scala 实现的,所以所有组件都会运行在Java 虚拟机上。每个组件的...
2020-02-05 21:35:31 305
原创 02-flink时间语义 与 Window 基础概念与实现原理
Flink 多种时间语义对比Flink 在流应用程序中支持不同的Time概念,就比如有 Processing Time、Event Time 和 Ingestion Time。下面我们一起来看看这三个 Time。Processing TimeProcessing Time 是指事件被处理时机器的系统时间。如果我们 Flink Job 设置的时间策略是 Processing Ti...
2020-01-30 17:19:44 129
原创 NPM包管理工具详解,使用教程
NPM 包管理工具1.1 定义:什么是 NPMNPM 全称 Node Package Manager,它是 JavaScript 的包管理工具, 并且是 Node.js 平台的默认包管理工具。通过NPM 可以安装、共享、分发代码,管理项目依赖关系。可从NPM服务器下载别人编写的第三方包到本地使用。 可从NPM服务器下载并安装别人编写的命令行程序到本地使用。 可将自己编写的包或命令行...
2019-09-13 22:57:37 331
hadoop权威指南第四版(高清,带书签,中文)附带hadoop实战和hadoop技术内幕
2018-05-17
hadoop 2.9.0 dll和winutils.exe文件64位和32位都有
2018-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人