自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 阿里Java面经解析(一)

面经来源:牛客网1.谈一谈高并发,说一下ReentrantLock的应用场景,什么时候用CAS,你是如何使用高并发的 ,说一下volatile,应用场景是什么高并发随着用户量的增加,一个系统有可能会产生高并发的问题。高并发简单的来说就是在同一时刻很多用户访问同一资源的问题,专业一点的说法就是在同一时刻有很多个线程访问了同一个数据资源。ReentrantLock应用场景需要进行互斥访问的...

2019-08-15 23:29:06 1676

原创 对Paxos算法的理解

Paxos算法Paxos是一种分布式一致性算法。在多个节点中,每个节点可能都有一个值,并且这个值不一定相同,Paxos的作用就是选出一个值,并让所有节点接受这个值。在Paxos算法中,节点一个有三种角色:Proposer(提议者)、Acceptor(接受者)、Learner(告知者),并且每台机器可能拥有其中不止一种角色。Paxos算法分为两个阶段:Proposer向过半Accepto...

2019-08-14 22:02:45 319

原创 go语言入门

第一个程序:打印Hello World!Go 语言的基础组成有以下几个部分:包声明引入包函数变量语句 & 表达式注释package mainimport "fmt"func main() { fmt.Println("Hello World!")}变量定义// 1.指定类型的方式var a int = 6var b int // golang中变量...

2019-04-25 14:40:12 287

原创 Leetcode Top100题目和答案(Java完整版 面试必备)

最近忙着准备春招,复习完这个又复习那个。不过还是忙里偷闲,把剑指Offer这66道题目重新刷了一遍,收获还是很大的,下面贴出答案,又不懂的可以给我留言,博主会及时解答。我的github准备把春招复习的知识都整理到github上,一边是自己做个总结,一边也能供大家参考——leetcode数据库 19道题——剑指Offer 66道题以下摘自leetcode Top100精选题目文章目录1....

2019-03-26 00:44:45 81608 21

原创 剑指Offer66道题和答案(Java完整版 面试必备)

最近忙着准备春招,复习完这个又复习那个。不过还是忙里偷闲,把剑指Offer这66道题目重新刷了一遍,收获还是很大的,下面贴出答案,又不懂的可以给我留言,博主会及时解答。我的github准备把春招复习的知识都整理到github上,一边是自己做个总结,一边也能供大家参考附——leetcode数据库19道题以下摘自牛客网剑指Offer1.二维数组中的查找2.替换空格3.从尾到头打印链表...

2019-03-18 16:51:14 3092 1

原创 彻底理解ThreadLocal原理

最近准备找暑期实习,在看Java并发编程的艺术这本书,前面关于JMM的部分还是挺难的,看到第四章,终于进入了并发专题。突然出现了ThreadLocal这个类,一回忆,之前还用过这个类,使用ThreadLocal保存的值,只有在当前线程才可见。下面介绍一下其实现原理:首先进入ThreadLocal类,观察其set()方法源码: public void set(T value) { ...

2019-03-16 21:27:46 326

原创 leetcode数据库19道题答案全都在这了

最近复习了数据库的一些原理知识,也学习了一些Mysql索引,存储引擎等知识。现把leetcode数据库部分题目汇总在博客上,方便大家查看,后续我也会更新算法部分的题目答案。175.组合两个表176.第二高的薪水177.第N高的薪水178.分数排名180.连续出现的数字181.超过经理收入的员工182.查找重复的电子邮箱183.从不订购的客户184.部门工资最高的员工185....

2019-03-04 23:04:06 347

原创 JVM面试题总结

1. 介绍下Java内存区域(运行时数据区)JVM在执行Java程序的过程中会把它管理的内存分为若干个不同的区域,这些组成部分有些是线程私有的,有些则是线程共享的:线程私有的:程序计数器虚拟机栈本地方法栈线程共享的:方法区堆直接内存1. 程序计数器程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。程序计数器是唯一一个不会出现O...

2019-01-15 22:02:09 10967 4

原创 Java hashCode() 与 equals()详解

本篇博文的内容主要解决下面几个问题:equals() 的作用是什么?equals() 与 == 的区别是什么?hashCode() 的作用是什么?hashCode() 和 equals() 之间有什么联系?equals() 的作用equals() 是用来判断两个对象是否相等的方法。equals() 定义在Object类中,通过判断两个对象的地址是否相等(是否是同一个对象)来区分...

2019-01-15 17:59:01 119

翻译 操作系统IO模型

在学习NIO之前,我们非常有必要了解一下操作系统中的各种IO模型,否则是不会理解NIO的实现的.这篇文章是我翻译I/O Multiplexing: The select and poll Functions这篇文章中的前半部分关于IO模型的部分.这篇文章中,还对select()等系统调用有更加深入的介绍,各位不妨读一下.正文在Unix下,我们有五种不同的IO模型,分别是:阻塞IO(Bl...

2019-01-14 18:45:33 199

原创 利用Idea开发工具将数据表转换为POJP类

本次将介绍如何利用Idea开发工具自动生成POJP类。数据库脚本:create table tb_label( id varchar(20) not null comment '标签ID' primary key, labelname varchar(100) null comment '标签名称', state varchar(1) null...

2018-12-24 11:32:29 742

原创 Spring Data JPA 动态条件查询

Spring Data JPA是Spring基于Hibernate开发的一个JPA框架。如果用过Hibernate或者MyBatis的话,就会知道对象关系映射(ORM)框架有多么方便。但是Spring Data JPA框架功能更进一步,为我们做了一个数据持久层框架几乎能做的任何事情,本篇主要介绍其强大的条件查询功能。添加依赖本次我们采用基于Spring boot的形式讲解Spring Data...

2018-12-24 09:29:55 331

转载 TCP的三次握手和四次挥手

常用的熟知端口号MYSQL熟知端口 21,20 69 23 25 53 80 22 3306传输层协议 TCP UDP TCP TCP UDP TCP TCP的概述TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为19...

2018-12-21 19:44:26 144

原创 十大经典排序算法(Java实现)

import java.util.ArrayList;import java.util.Arrays;/** * @author lollipop * @email [email protected] * @date 2018/11/22 0022 8:36 */public class SortDemo { private static int[] array = {-8, 9, 3...

2018-11-24 11:26:21 525 1

原创 AVL树的java实现

AVL树类,其中用Node类封装了元素,左右儿子和高度来作为结点:public class AVLTree<E extends Comparable<E>> { // 树根结点 private Node<E> root; // 向树中插入数据 public Node<E> add(E element

2018-10-23 18:03:40 315 2

转载 LinkedList源码分析

上篇我们分析了ArrayList的底层实现,知道了ArrayList底层是基于数组实现的,因此具有查找修改快而插入删除慢的特点。本篇介绍的LinkedList是List接口的另一种实现,它的底层是基于双向链表实现的,因此它具有插入删除快而查找修改慢的特点,此外,通过对双向链表的操作还可以实现队列和栈的功能。LinkedList的底层结构如下图所示。F表示头结点引用,L表示尾结点引用,链表的每个...

2018-10-19 21:11:54 107

原创 ArrayList源码分析

本篇分析ArrayList的源码,在分析之前先跟大家谈一谈数组。数组可能是我们最早接触到的数据结构之一,它是在内存中划分出一块连续的地址空间用来进行元素的存储,由于它直接操作内存,所以数组的性能要比集合类更好一些,这是使用数组的一大优势。但是我们知道数组存在致命的缺陷,就是在初始化时必须指定数组大小,并且在后续操作中不能再更改数组的大小。在实际情况中我们遇到更多的是一开始并不知道要存放多少元素,而...

2018-10-19 19:41:18 156

转载 JDK动态代理(3)WeakCache缓存的实现机制

上一篇我们分析了Proxy类的内部是怎样产生代理类的,我们看到了Proxy内部用到了缓存机制,如果根据提供的类加载器和接口数组能在缓存中找到代理类就直接返回该代理类,否则会调用ProxyClassFactory工厂去生成代理类。这里用到的缓存是二级缓存,它的一级缓存key是根据类加载器生成的,二级缓存key是根据接口数组生成的。具体的内部机制我们直接贴上代码详细解释。//Reference引用队...

2018-10-19 14:31:35 188

转载 JDK动态代理(2)JDK动态代理的底层实现之Proxy源码分析

JDK动态代理(2)JDK动态代理的底层实现之Proxy源码分析在上一篇里为大家简单介绍了什么是代理模式?为什么要使用代理模式?并用例子演示了一下静态代理和动态代理的实现,分析了静态代理和动态代理各自的优缺点。在这一篇中笔者打算深入源码为大家剖析JDK动态代理实现的机制,建议读者阅读本篇前可先阅读一下笔者上一篇关于代理模式的介绍《JDK动态代理[1]----代理模式实现方式的概要介绍》上一篇动...

2018-10-18 21:16:40 272

转载 JDK动态代理[1]----代理模式实现方式的概要介绍

JDK动态代理[1]----代理模式实现方式的概要介绍1. 什么是代理模式?2. 为什么要使用代理?3. 代理模式有哪些实现?3.1 静态代理功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功...

2018-10-18 20:23:14 158

空空如也

空空如也

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

TA关注的人

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