- 博客(52)
- 资源 (22)
- 收藏
- 关注

原创 多线程第十讲
HashMap和ConcurrentHashMap1、HashMap 为什么是线程不安全的put方法源码分析publicVput(Kkey,Vvalue){if(key==null)returnputForNullKey(value);inthash=hash(key.hashCode());inti=indexFor(hash,table.length);for(Entry<K,V>...
2021-03-24 22:16:57
213

原创 多线程第九讲
AQS1、AQS的作用AQS 是一个用于构建锁、同步器等线程协作工具类的框架,有了 AQS 以后,很多用于线程协作的工具类就都可以很方便的被写出来,有了 AQS 之后,可以让更上层的开发极大的减少工作量,避免重复造轮子,同时也避免了上层因处理不当而导致的线程安全问题,因为 AQS 把这些事情都做好了。2、AQS内部原理AQS 最核心的三大部分就是状态、队列和期望协作工具类去实现的获取/释放等重要方法state 状态/** * The synchronization state.
2021-03-24 21:52:46
263

原创 多线程第八讲
线程协作1、Semaphore信号量从图中可以看出,信号量的一个最主要的作用就是,来控制那些需要限制并发访问量的资源。具体来讲,信号量会维护“许可证”的计数,而线程去访问共享资源前,必须先拿到许可证。线程可以从信号量中去“获取”一个许可证,一旦线程获取之后,信号量持有的许可证就转移过去了,所以信号量手中剩余的许可证要减一。同理,线程也可以“释放”一个许可证,如果线程释放了许可证,这个许可证相当于被归还给信号量了,于是信号量中的许可证的可用数量加一。当信号量拥有的许可证数量减到 0 时,如果下
2021-03-23 21:31:23
184

原创 多线程第七讲
Java内存模型1、什么是java内存模型JMMJMM 是和多线程相关的一组规范,需要各个 JVM 的实现来遵守 JMM 规范,以便于开发者可以利用这些规范,更方便地开发多线程程序。这样一来,即便同一个程序在不同的虚拟机上运行,得到的程序结果也是一致的。2、指令重排什么是重排序假设我们写了一个 Java 程序,包含一系列的语句,我们会默认期望这些语句的实际运行顺序和写的代码顺序一致。但实际上,编译器、JVM 或者 CPU 都有可能出于优化等目的,对于实际指令执行的顺序进行调整,这就.
2021-03-22 21:11:37
178

原创 多线程第六讲
原子类1、原子类和CAS在编程领域里,原子性意味着“一组操作要么全都操作成功,要么全都失败,不能只操作成功其中的一部分”。而 java.util.concurrent.atomic 下的类,就是具有原子性的类,可以原子性地执行添加、递增、递减等操作。比如之前多线程下的线程不安全的 i++ 问题,到了原子类这里,就可以用功能相同且线程安全的 getAndIncrement 方法来优雅地解决。原子类的作用和锁有类似之处,是为了保证并发情况下线程安全。不过原子类相比于锁,有一定的优势:粒度更.
2021-03-22 20:36:41
106

原创 多线程第五讲
阻塞队列1、什么是阻塞队列 队列机构如图所示 阻塞队列,也就是 BlockingQueue,它是一个接口,继承了 Queue 接口,是队列的一种。Queue 和 BlockingQueue 都是在 Java 5 中加入的。BlockingQueue 是线程安全的,我们在很多场景下都可以利用线程安全的队列来优雅地解决我们业务自身的线程安全问题。阻塞队列区别于其他类型的队列的最主要的特点就是“阻塞”这两个字,所以下面重点介绍阻塞功能:阻塞功能使得生产者和消费者两端的能力得以平衡,当有任...
2021-03-22 20:09:44
125

原创 多线程第四讲
各种各样的锁1、锁的分类根据分类标准我们把锁分为以下 7 大类别,分别是:偏向锁/轻量级锁/重量级锁;第一种分类是偏向锁/轻量级锁/重量级锁,这三种锁特指 synchronized 锁的状态,通过在对象头中的 mark word 来表明锁的状态。偏向锁一个对象被初始化后,还没有任何线程来获取它的锁时,那么它就是可偏向的,当有第一个线程来访问它并尝试获取锁的时候,它就将这个线程记录下来,以后如果尝试获取锁的线程正是偏向锁的拥有者,就可以直接获得锁,开销很小,性能最好。轻量级锁J
2021-03-21 20:57:59
124

原创 多线程第三讲
线程池1、为什么需要线程池 创建线程时会产生系统开销,并且每个线程还会占用一定的内存等资源,更重要的是我们创建如此多的线程也会给稳定性带来危害,因为每个系统中,可创建线程的数量是有一个上限的,不可能无限的创建。线程执行完需要被回收,大量的线程又会给垃圾回收带来压力。但我们的任务确实非常多,如果都在主线程串行执行,那效率也太低了 使用线程池比手动创建线程主要有三点好处。第一点,线程池可以解决线程生命周期的系统开销问题,同时还可以加快响应速度。因为线程池中的线程是可以复...
2021-03-21 19:58:27
315

原创 多线程第二讲
一、线程的 6 种状态就像生物从出生到长大、最终死亡的过程一样,线程也有自己的生命周期,在 Java 中线程的生命周期中一共有 6 种状态。1.New(新创建)2.Runnable(可运行)3.Blocked(被阻塞)4.Waiting(等待)5.Timed Waiting(计时等待)6.Terminated(被终止)如果想要确定线程当前的状态,可以通过 getState() 方法,并且线程在任何时刻只可能处于 1 种状态。如图所示需要注意的是 J...
2021-03-21 18:29:52
1082

原创 多线程第一讲
一、为何说只有一种多线程实现方法?1、常见实现多线程方式 (1)继承Thread 类,重写run方法; (2)实现Runnable接口,重写run方法; (3)线程池创建线程 本质是通过线程工厂创建线程,默认采用DefaultThreadFactory,它会给创建的线程设置一些默认值,比如线程名字、是否是守护线程,以及线程优先级等。最终还是通过 new Thread()创建线程...
2021-03-21 18:13:46
126

转载 Arrays.asList 的使用
一、错误用法如果你这样使用过,那你可要注意了。1、错误一将基本类型数组作为asList的参数猜一下输出结果?2、错误二将数组作为asList参数后,修改数组或List3、错误三数组转换为集合后,进行增删元素二、深入探究我们通过asList()源码可发现其原因,但为了更直观,我们先通过IDEA debug来看看结果。其实它返回的是 jav...
2019-06-21 19:15:59
183

原创 kafka使用
1.maven依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> &am
2018-11-28 14:44:45
262

原创 最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化
Mysql中有哪几种锁?MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高Mysql中有哪些不同的表格?共有5种类型的表格:MyISAM Heap Merge INNODB ISAMMyISAM是M...
2018-11-16 09:16:04
1923
1

转载 最新天猫面试题(含总结):线程池+并发编程+分布式设计+中间件
一面:HashMap实现原理,ConcurrentHashMap实现原理 红黑树,为什么允许局部不平衡 TCP,UDP区别,为什么可靠和不可靠 一次HTTP请求的全过程,包括域名解析、定位主机等 TCP三次握手 MySQL事务是什么?四大特性,四大隔离级别 ConcurrentHashMap和Hashtable区别 spring IOC和AOP,以及各有什么优点 有哪几种常用的...
2018-11-14 09:24:54
198

转载 最全BAT架构师130面试题:微服务、高并发、大数据、缓存等中间件
一、数据结构与算法基础· 说一下几种常见的排序算法和分别的复杂度。 · 用Java写一个冒泡排序算法 · 描述一下链式存储结构。 · 如何遍历一棵二叉树? · 倒排一个LinkedList。 · 用Java写一个递归遍历目录下面的所有文件。二、Java基础· 接口与抽象类的区别? · Java中的异常有哪几类?分别怎么使用? · 常用的集合类有哪些?比如List如何排序?...
2018-11-14 09:23:47
281

转载 最全BAT数据库面试89题:mysql、大数据、redis
数据库 mysql面试题目:MySQL InnoDB、Mysaim的特点? 乐观锁和悲观锁的区别?? 行锁和表锁的区别? 数据库隔离级别是什么?有什么作用? MySQL主备同步的基本原理。 如何优化数据库性能(索引、分库分表、批量操作、分页算法、升级硬盘SSD、业务优化、主从部署) SQL什么情况下不会使用索引(不包含,不等于,函数) 一般在什么字段上建索引(过滤数据最多的字段)...
2018-11-14 09:21:29
473

原创 工作10年,面试超过300人想进阿里的同学,总结出的java面试69题
基础题目Java线程的状态 进程和线程的区别,进程间如何通讯,线程间如何通讯 HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别 Cookie和Session的区别 索引有什么用?如何建索引? ArrayList是如何实现的,ArrayList和LinkedList的区别?ArrayList如何实现扩容。 equals方法实现...
2018-11-14 09:18:57
689

原创 支付宝Java开发(1+2+3+HR四面):Ngnix+MQ队列+集群+并发抢购
一面介绍项目 java 线程池的实现原理,threadpoolexecutor关键参数解释 hashmap的原理,容量为什么是2的幂次 为什么要同时重写hashcode和equals ConcurrentHashMap如何实现线程安全? 介绍Java多线程的5大状态,以及状态图流转过程 介绍下Synchronized、Volatile、CAS、AQS,以及各自的使用场景 B+树和...
2018-11-13 15:08:41
217

原创 蚂蚁中间件团队面试题:Netty+Redis+Kafka+MongoDB+分布式
一面:自我介绍 JVM垃圾回收算法和垃圾回收器有哪些,最新的JDK采用什么算法。 新生代和老年代的回收机制。 讲一下ArrayList和linkedlist的区别,ArrayList与HashMap的扩容方式。 Concurrenthashmap1.8后的改动。 Java中的多线程,以及线程池的增长策略和拒绝策略了解么。 Tomcat的类加载器了解么 Spring的ioc和aop...
2018-11-13 15:07:51
1501
1

原创 rocketMQ使用
1.maven依赖<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.3.0</version> </dependen
2018-11-08 16:02:27
452

原创 mongoDB使用demo
1.简介 MongoDB 是一个基于分布式文件存储的数据库。 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系型数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,...
2018-11-08 09:29:13
739
1

原创 Elasticsearch 后台开发
1.jar包compile group: 'org.elasticsearch.client', name: 'transport', version: '5.1.1'compile group: 'io.searchbox', name: 'jest', version: '5.3.3'2.基本介绍 1.index 为库名称(相当于数据库库名) 2.type ...
2018-11-07 17:37:40
226

转载 jdk里的设计模式
结构型模式:适配器模式:用来把一个接口转化成另一个接口。java.util.Arrays#asList() javax.swing.JTable(TableModel) java.io.InputStreamReader(InputStream) java.io.OutputStreamWriter(OutputStream) javax.xml.bind.annotation...
2018-11-07 17:25:11
139
原创 Spring面试准备(一)
1.Spring框架中bean的生命周期(1)实例化a.通过反射推断构造函数进行实例化b.实例工厂 静态工厂(2)属性填充a.解析自动装配(byName byType 构造器 @Autowires)DI的体现b.循环依赖问题(3)初始化a.调用XXAware方法b.调用初始化生命周期的回调(@PostConstruct InitializingBean的afterPropertiesSet()方法 类中写一个init()方法配置init-method="init")..
2022-03-30 10:22:08
700
原创 常见的Web安全问题
XSS漏洞1.XSS简介跨站脚本(cross site script)简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式。XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码。2.XSS攻击的危害1、盗取用户资料,比如:登录帐号、网银帐号等...
2019-01-22 17:00:24
241
原创 Mybatis初始化原理
简介 MyBatis 是 Java 开发中非常流行的 ORM 框架,其封装了 JDBC 并且解决了 Java 对象与输入参数和结果集的映射,同时又能够让用户方便地手写 SQL 语句。MyBatis 的行为类似于以下几行代码: Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConne...
2019-01-22 14:59:49
302
原创 git学习
前言最近想把代码传到GitHub上,结果我发现的demo的npm全是本地安装,上穿到GitHub要死要死,几百M,然后我就搜了下怎么不上传node_modules弄了半天也没成功,于是准备静下心学一下git,也当一个笔记日后好翻阅.研究前我的只会5个命令$ git init $ git add .$ git commit -m "提交的xxxxx"$ git pull$ gi...
2018-12-25 10:33:36
169
原创 Java 5~11各个版本新特性
Java 5 Java5开发代号为Tiger(老虎),于2004-09-30发行特性列表泛型 枚举 自动装箱拆箱 可变参数 注解 foreach循环(增强for、for/in) 静态导入 格式化(System.out.println 支持%s %d等格式化输出) 线程框架/数据结构 JUC Arrays工具类/StringBuilder/instrument ...
2018-12-13 09:23:29
451
原创 加密算法比较和项目应用
加密技术通常分为两大类:"对称式"和"非对称式"。对称性加密算法:对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。非对称算法:非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开加密文件。发送双方A,...
2018-12-10 16:51:41
200
原创 最常用的正则表达式
一、校验数字的表达式1 数字:^[0-9]*$2 n位的数字:^d{n}$3 至少n位的数字:^d{n,}$4 m-n位的数字:^d{m,n}$5 零和非零开头的数字:^(0|[1-9][0-9]*)$6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$7 带1-2位小数的正数或负数:^(-)?d+(.d{1,2})?$8...
2018-12-10 11:08:39
126
原创 20个Spring MVC访谈问题
1. MVC是设计模式的缩写。它代表什么,它背后的想法是什么?答案:MVC是Model-View-Controller设计模式的缩写。该模式基于关注点分离设计原理,该原理促进处理不同层的不同功能以及层之间的松散耦合。在MVC模式中,模型包含由View和Controler帮助在请求处理和路由中呈现的数据。两个模型都不知道View,或View不依赖于Model,这意味着相同的模型可以由不同...
2018-12-04 13:19:13
193
原创 HTTP和HTTPS的介绍
一、HTTP和HTTPS的基本概念1、HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。2、HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。...
2018-12-03 09:25:00
388
原创 zookeeper
前言相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢?我本人曾经使用过 ZooKeeper 作为 Dubbo 的注册中心,另外在搭建 solr 集群的时候,我使用到了 ZooKeeper 作为 solr 集群的管理工具。前几天,总结项目经验的时候,我突然问自...
2018-12-03 09:20:58
152
原创 悲观锁+G1收集器+幻读+连接池+分布式架构 面试题
一面线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少? 数据库连接池介绍下,底层实现说下 hashset底层实现,hashmap的put操作过程 说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点? 说说B+树和B树的区别,优缺点等? 算法题,对一个链表进行归并排序,链表可能有...
2018-11-27 09:37:28
472
1
原创 深入研究java.lang.ThreadLocal类
一、概述ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程...
2018-11-27 09:34:25
117
原创 字符编码ASCII,Unicode 和 UTF-8
一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,...
2018-11-23 13:39:10
125
原创 高级 Java 面试题
hashcode相等两个类一定相等吗?equals呢?相反呢? 介绍一下集合框架? hashmap hastable 底层实现什么区别?hashtable和concurrenthashtable呢? hashmap和treemap什么区别?低层数据结构是什么? 线程池用过吗都有什么参数?底层如何实现的? sychnized和Lock什么区别?sychnize 什么情况情况是对象锁? 什么...
2018-11-22 13:36:25
193
原创 并发编程44题(含答案)
1、并发编程三要素?1)原子性原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。2)可见性可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。实现可见性的方法:synchronized或者Lock:保证同一个时刻只有一个线程获取锁执行代码,锁释放之前把最新的值刷新到主内存,实现可见...
2018-11-21 09:24:26
2935
原创 JVM相关笔试面试题目
1. 类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,他们的执行顺序先静态、先父后子。先静态:父静态 > 子静态优先级:父类 > 子类 静态代码块 > 非静态代码块 > 构造函数一个类的实例化过程:父类中的static代码块,当前类的static顺序执行父类的普通代码块父类的构造函数子类普通代码块子类(当前...
2018-11-21 09:21:33
343
原创 Java 多线程问题及答案
1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少...
2018-11-20 13:34:36
251
springboot整合
2018-07-06
springboot-webflux-redis
2018-07-03
springboot+webflux+mongodb+freemarker
2018-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人