自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 153

原创 多线程第九讲

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

2021-03-24 21:52:46 204

原创 多线程第八讲

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

2021-03-23 21:31:23 115

原创 多线程第七讲

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

2021-03-22 21:11:37 118

原创 多线程第六讲

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

2021-03-22 20:36:41 70

原创 多线程第五讲

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

2021-03-22 20:09:44 72

原创 多线程第四讲

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

2021-03-21 20:57:59 69

原创 多线程第三讲

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

2021-03-21 19:58:27 213

原创 多线程第二讲

一、线程的 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 1046

原创 多线程第一讲

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

2021-03-21 18:13:46 77

转载 Arrays.asList 的使用

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

2019-06-21 19:15:59 151

原创 kafka使用

1.maven依赖&lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter&lt;/artifactId&gt; &lt;/dependency&gt; &am

2018-11-28 14:44:45 217

原创 最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化

Mysql中有哪几种锁?MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高Mysql中有哪些不同的表格?共有5种类型的表格:MyISAM Heap Merge INNODB ISAMMyISAM是M...

2018-11-16 09:16:04 1811 2

转载 最新天猫面试题(含总结):线程池+并发编程+分布式设计+中间件

一面:HashMap实现原理,ConcurrentHashMap实现原理 红黑树,为什么允许局部不平衡 TCP,UDP区别,为什么可靠和不可靠 一次HTTP请求的全过程,包括域名解析、定位主机等 TCP三次握手 MySQL事务是什么?四大特性,四大隔离级别 ConcurrentHashMap和Hashtable区别 spring IOC和AOP,以及各有什么优点 有哪几种常用的...

2018-11-14 09:24:54 160

转载 最全BAT架构师130面试题:微服务、高并发、大数据、缓存等中间件

一、数据结构与算法基础· 说一下几种常见的排序算法和分别的复杂度。 · 用Java写一个冒泡排序算法 · 描述一下链式存储结构。 · 如何遍历一棵二叉树? · 倒排一个LinkedList。 · 用Java写一个递归遍历目录下面的所有文件。二、Java基础· 接口与抽象类的区别? · Java中的异常有哪几类?分别怎么使用? · 常用的集合类有哪些?比如List如何排序?...

2018-11-14 09:23:47 251

转载 最全BAT数据库面试89题:mysql、大数据、redis

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

2018-11-14 09:21:29 417

原创 工作10年,面试超过300人想进阿里的同学,总结出的java面试69题

基础题目Java线程的状态 进程和线程的区别,进程间如何通讯,线程间如何通讯 HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别 Cookie和Session的区别 索引有什么用?如何建索引? ArrayList是如何实现的,ArrayList和LinkedList的区别?ArrayList如何实现扩容。 equals方法实现...

2018-11-14 09:18:57 661

原创 支付宝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 200

原创 蚂蚁中间件团队面试题:Netty+Redis+Kafka+MongoDB+分布式

一面:自我介绍 JVM垃圾回收算法和垃圾回收器有哪些,最新的JDK采用什么算法。 新生代和老年代的回收机制。 讲一下ArrayList和linkedlist的区别,ArrayList与HashMap的扩容方式。 Concurrenthashmap1.8后的改动。 Java中的多线程,以及线程池的增长策略和拒绝策略了解么。 Tomcat的类加载器了解么 Spring的ioc和aop...

2018-11-13 15:07:51 1439 1

原创 rocketMQ使用

1.maven依赖&lt;dependency&gt; &lt;groupId&gt;org.apache.rocketmq&lt;/groupId&gt; &lt;artifactId&gt;rocketmq-client&lt;/artifactId&gt; &lt;version&gt;4.3.0&lt;/version&gt; &lt;/dependen

2018-11-08 16:02:27 388

原创 mongoDB使用demo

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

2018-11-08 09:29:13 644 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 176

转载 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 115

原创 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 646

原创 常见的Web安全问题

XSS漏洞1.XSS简介跨站脚本(cross site script)简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式。XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码。2.XSS攻击的危害1、盗取用户资料,比如:登录帐号、网银帐号等...

2019-01-22 17:00:24 212

原创 Mybatis初始化原理

简介 MyBatis 是 Java 开发中非常流行的 ORM 框架,其封装了 JDBC 并且解决了 Java 对象与输入参数和结果集的映射,同时又能够让用户方便地手写 SQL 语句。MyBatis 的行为类似于以下几行代码: Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConne...

2019-01-22 14:59:49 267

原创 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 126

原创 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 382

原创 加密算法比较和项目应用

加密技术通常分为两大类:"对称式"和"非对称式"。对称性加密算法:对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。非对称算法:非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开加密文件。发送双方A,...

2018-12-10 16:51:41 173

原创 最常用的正则表达式

一、校验数字的表达式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 89

原创 20个Spring MVC访谈问题

1. MVC是设计模式的缩写。它代表什么,它背后的想法是什么?答案:MVC是Model-View-Controller设计模式的缩写。该模式基于关注点分离设计原理,该原理促进处理不同层的不同功能以及层之间的松散耦合。在MVC模式中,模型包含由View和Controler帮助在请求处理和路由中呈现的数据。两个模型都不知道View,或View不依赖于Model,这意味着相同的模型可以由不同...

2018-12-04 13:19:13 164

原创 HTTP和HTTPS的介绍

一、HTTP和HTTPS的基本概念1、HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。2、HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。...

2018-12-03 09:25:00 320

原创 zookeeper

前言相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢?我本人曾经使用过 ZooKeeper 作为 Dubbo 的注册中心,另外在搭建 solr 集群的时候,我使用到了 ZooKeeper 作为 solr 集群的管理工具。前几天,总结项目经验的时候,我突然问自...

2018-12-03 09:20:58 111

原创 悲观锁+G1收集器+幻读+连接池+分布式架构 面试题

一面线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少? 数据库连接池介绍下,底层实现说下 hashset底层实现,hashmap的put操作过程 说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点? 说说B+树和B树的区别,优缺点等? 算法题,对一个链表进行归并排序,链表可能有...

2018-11-27 09:37:28 392 1

原创 深入研究java.lang.ThreadLocal类

一、概述ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程...

2018-11-27 09:34:25 91

原创 字符编码ASCII,Unicode 和 UTF-8

一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,...

2018-11-23 13:39:10 93

原创 高级 Java 面试题

hashcode相等两个类一定相等吗?equals呢?相反呢? 介绍一下集合框架? hashmap hastable 底层实现什么区别?hashtable和concurrenthashtable呢? hashmap和treemap什么区别?低层数据结构是什么? 线程池用过吗都有什么参数?底层如何实现的? sychnized和Lock什么区别?sychnize 什么情况情况是对象锁? 什么...

2018-11-22 13:36:25 140

原创 并发编程44题(含答案)

1、并发编程三要素?1)原子性原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。2)可见性可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。实现可见性的方法:synchronized或者Lock:保证同一个时刻只有一个线程获取锁执行代码,锁释放之前把最新的值刷新到主内存,实现可见...

2018-11-21 09:24:26 2779

原创 JVM相关笔试面试题目

1. 类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,他们的执行顺序先静态、先父后子。先静态:父静态 &gt; 子静态优先级:父类 &gt; 子类 静态代码块 &gt; 非静态代码块 &gt; 构造函数一个类的实例化过程:父类中的static代码块,当前类的static顺序执行父类的普通代码块父类的构造函数子类普通代码块子类(当前...

2018-11-21 09:21:33 294

原创 Java 多线程问题及答案

1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少...

2018-11-20 13:34:36 225

keepalived附件

keepalived附件

2022-07-29

vue初学者的尝试

本人初学vue 在项目中首次用到 确实很实用 很方便。

2018-12-27

Emoji表情的转码和解码

本工具类包含了Emoji表情的转码和解码 包括了通过url获取文件大小的功能

2018-12-25

微信有关工具

微信相关工具留着后方便实用,暂时没有测试以后用到的时候在测

2018-12-11

阿里编码规范

阿里的编码规范,及一些容易猜到的坑 您值得拥有。。。

2018-12-03

kafka 简单demo

初学者欢迎来学习,kafka简单的一个小demo 容易上手 欢迎下载

2018-11-13

RocketMQ 的小demo

初学者可以来学习一下,rocketMQ的简单的小demo 简单易懂

2018-11-13

面试题汇总

中科软面试题 小米 阿里经典面试 。

2018-11-13

添加了Twitter ID生成算法的工具,每秒支持12万ID生成

添加了Twitter ID生成算法的工具,每秒支持12万ID生成

2018-11-09

苹果内购验证工具类1.0

开发过程中碰到的问题,需要进行苹果内部支付,亲测可用

2018-09-28

图片上传工具类

总结了工作中所用到的两种图片上传 音频上传的工具类,欢迎使用

2018-09-19

excel导出可带图片

可进行excel的导出 支持图片的导出,亲自使用的整合到了一起

2018-09-18

springboot整合

pringBoot骨架项目,集成SpringBoot、Mybatis、Druid、Mapper、PageHelper、Redis、Shiro、Swagger2、Log4j2等技术

2018-07-06

常用工具类

通用的Java工具类,主要包括基础工具类(时间、正则表达式、字符串、随机数等等),excel解析生成、word解析生成、文件操作、图片操作

2018-07-06

文件压缩解压缩

简单的一个工具类,支持zip、rar、tar等的压缩解压缩,亲自测过可用

2018-07-06

文件压缩zip

简单的实现文件压缩,支持zip格式的文件压缩,新的一版

2018-07-06

文件解压缩实现

简单实现文件的解压缩,支持zip文件格式的压缩和解压缩

2018-07-06

图片压缩工具类

对图片的压缩,很实用的一个工具类,很容易,本人亲测可用

2018-07-06

springboot-webflux-redis

本小demo是集成于springboot和spring新提出的webflux模式,数据先从redis缓存中查找,在到mongodb中查找

2018-07-03

springboot+webflux+mongodb+freemarker

本小demo是集成于springboot和spring新提出的webflux模式,前端采用了freemarker模板,数据存储在mongodb中

2018-07-03

spring源码

spring源码,欢迎感兴趣的开发人员下载,欢迎大家的支持。

2018-06-28

iBase4J-master

iBase4J-master项目中整体封装的非常好,开源少有的精品之作。 实现了 nginx 反向代理与后台进行动静分离,基于接口进行业务处理。

2018-06-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除