自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图解并查集,附赠几道leetcode练手题

前言并查集是一种非常有用且高效的数据结构,千万不要被这个极具专业性的名字吓到了,它的算法思想和代码实现都非常简单,不需要花太大力气就可以轻松掌握。下面就通过画图等方式为大家介绍一下这种神奇的数据结构。一、 图解并查集并查集有两个英文名:1、Disjoint Set,2、Union Find。它的作用就是把一个数据集分成若干个子集,每个子集内部数据可以互联互通,而子集之间则不具有连通性。并查集的底层结构类似于堆(不熟悉堆的同学赶紧去复习一下堆排序,面试频率很高哦),也是用数组描述一种树结构,但不同的是,

2020-06-17 10:27:15 367

原创 关于 TCP, 你需要了解的都在这里了

前言TCP(Transmission Control Protocol,传输控制协议) 是计算机网络的的重要组成部分,也是网络编程的重要内容,还有我们平时接触最多的 HTTP 也是基于 TCP 实现的。TCP 可以说是最重要的传输层协议,既然如此,作为开发人员,就有必要把 TCP 的核心概念和原理搞清楚。除此之外,诸如三次握手、四次挥手、滑动窗口和拥塞控制这些概念更是高频面试题,这就更有理由深入...

2020-03-28 09:16:43 1155

原创 手把手教你手动创建线程池

一、为什么要手动创建线程池?我们之所以要手动创建线程池,是因为 JDK 自带的工具类所创建的线程池存在一定的弊端,那究竟存在怎么样的弊端呢?首先来回顾一下 JDK 中线程池框架的继承关系:JDK 线程池框架继承关系图我们最常用的线程池实现类是ThreadPoolExecutor(红框里的那个),首先我们来看一下它最通用的构造方法:/** * 各参数含义 * corePoolSiz...

2020-02-28 17:47:51 794

原创 Java 虚拟机系列三:垃圾收集器一网打尽,船新的 ZGC 和 Shenandoah 听说过吗

前言上篇文章已经为大家详细介绍了 JVM 的垃圾收集机制,那么这次就一起来看看这些机制究竟是怎样应用到具体的垃圾收集器上的吧。Java 语言和 JVM 在不断迭代发展的同时,垃圾收集器也在不断地进化,从最初的的单线程收集器 Serial,到后来的并行收集器 Parallel 和并发收集器 CMS、G1,再到垃圾收集器最前沿成果——超低延迟的 Shenandoah 和 ZGC,还有不做垃圾收集的垃...

2020-02-27 14:54:25 689 1

原创 推荐10款超好用的 IDEA 插件,“效率”、“装X”两不误

IDEA 如今俨然已经成为了最主流的 Java IDE,优点在这儿就不一一列举了,但丰富的插件绝对是一大亮点。本文就为大家介绍几款我在开发中最喜欢的10款 IDEA 插件,既有效率工具,也有装X神器,绝对满足你的需求。第一部分:效率工具1. LombokLombok 的大名相信很多 Java 开发者都听说过,有了它,你的代码量可以瞬间减半,准确地说是实体类的代码量。安装插件后,再通过 pom...

2020-02-12 22:45:06 2684 1

原创 2020 年最受程序员欢迎的 20 个 CSS 框架,有没有你的菜?

前言转眼间 2020 年已经过去了一个月,在祈祷疫情尽快消散的同时,不要忘了学习。本文为大家搜罗了 20 款截至目前最受程序员欢迎的前端CSS框架,其中有的霸榜已久,也有不少后起之秀,有的是单纯的 CSS 框架,也有的结合了 JavaScript 以提供更丰富的功能。一起来看看有没有你的菜,以下按照 GitHub Star 数量进行排序。1. BootstrapBootstrap 无疑是目前...

2020-02-04 18:21:08 10182

原创 Java 虚拟机系列二:垃圾收集机制详解,动图帮你理解

前言上篇文章已经给大家介绍了 JVM 的架构和运行时数据区 (内存区域),本篇文章将给大家介绍 JVM 的重点内容——垃圾收集。众所周知,相比 C / C++ 等语言,Java 可以省去手动管理内存的繁琐操作,很大程度上解放了 Java 程序员的生产力,而这正是得益于 JVM 的垃圾收集机制和内存分配策略。我们平时写程序时并感知不到这一点,但是如果是在生产环境中,JVM 的不同配置对于服务器性能...

2020-02-01 14:18:26 535

原创 Java 虚拟机系列一:一文搞懂 JVM 架构和运行时数据区

前言之前写博客一直比较随性,主题也很随意,就是想到什么写什么,对什么感兴趣就写什么。虽然写起来无拘无束,自在随意,但也带来了一些问题,每次写完一篇后就要去纠结下一篇到底写什么,看来选择太多也不是好事儿,更重要的是不成体系的内容对读者也不够友好。所以以后的博客尽量按系列来写,不过偶尔也会穿插其他的内容。接下来一段时间我会把写博客的重点放在 JVM (Java Virtual Machine) 和 ...

2020-01-23 15:36:36 953 2

原创 HTTPS详解二:SSL / TLS 工作原理和详细握手过程

在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流程,但总感觉少了点什么,应该是少了对安全层的针对性介绍,那么这篇文章就算是对HTTPS 详解一的补充吧。还记得这张图吧。HTTPS 和 HTTP的区别显然,HTTPS 相比 HTTP最大的不同就是多了一层 SSL (Secure Sockets Layer 安全套接层)或 TLS (Transport Lay...

2020-01-12 16:12:12 1341 1

原创 HTTPS 详解一:附带最精美详尽的 HTTPS 原理图

前言作为一个有追求的程序员,了解行业发展趋势和扩充自己的计算机知识储备都是很有必要的,特别是一些计算机基础方面的内容,就比如本篇文章要讲的计算机网络方面的知识。本文将为大家详细梳理一下 HTTPS 的实现原理。近年来,随着用户和互联网企业安全意识的提高和 HTTPS 成本的下降,HTTPS 已经越来越普及。很多互联网巨头也在力推 HTTPS,比如谷歌的 Chrome 浏览器在在访问 HTTP ...

2020-01-05 20:23:13 1137 2

原创 华为和阿里都考过的多线程编程题,你会吗?多线程交替打印 ABC的多种实现方法

题目描述如下:编写一个程序,开启三个线程,这三个线程的 ID 分别是 A、B 和 C,每个线程把自己的 ID 再屏幕上打印 10 遍,要求输出结果必须按 ABC 的顺序显示,如 ABCABCABC… 依次递推这是一道经典的多线程编程面试题,首先吐槽一下,这道题的需求很是奇葩,先开启多线程,然后再串行打印 ABC,这不是吃饱了撑的吗?不过既然是道面试题,就不管这些了,其目的在于考察你的多线程...

2019-12-29 13:03:47 477

原创 Leetcode 反转链表系列 图解详细过程

对于一个程序猿来说,数据结构和算法的重要性就不用我多说了吧,算法题已然成了现在大厂笔试面试的重头戏,废话少说,Leetcode 刷起来呀。说起刷 Leetcode,我建议你按 tag 刷,不然只能像无头苍蝇,东一榔头西一棒槌,最后事倍功半 (过来人的惨痛经历)。最近正好在刷 Leetcode 上的链表题,也碰到了一些颇具代表性的题型,正好做个记录,也分享给有需要的小伙伴。对链表不太熟悉的小伙伴碰...

2019-12-22 18:05:14 473

原创 关闭线程池的正确姿势,shutdown(), shutdownNow()和awaitTermination() 该怎么用?

ExecutorService 接口提供了三个方法用于手动关闭线程池,分别是shutdown(),shutdownNow()和awaitTermination()。我们最经常使用的 ThreadPoolExecutor 正是 ExecutorService 的实现类,自然也实现了这些方法。相信有很多小伙伴都没搞明白这些方法的区别,也不清楚在不同的情况下应该使用哪个方法。本文将通过ThreadPoo...

2019-12-16 17:22:18 3128 2

原创 Java 线程池会自动关闭吗?

文章目录1. 线程池自动关闭的情况一:核心线程数为 0 并指定线程存活时间1.1. 手动创建线程池2.2 Executors.newCachedThrteadPool() 创建线程池2. 线程池自动关闭的情况二:通过 allowCoreThreadTimeOut 控制核心线程存活时间3. 超详细的线程池执行流程图4. 结语首先我们需要了解线程池在什么情况下会自动关闭。ThreadPoolExec...

2019-12-07 19:49:44 6799 1

原创 环境配置笔记:Mac环境下如何通过 Apache 服务器新建并访问 XML 和 JSON 文件

环境配置笔记:Mac系统下如何通过 Apache 服务器新建并访问 XML 和 JSON 文件最近在看《第一行代码》这本书,今天看到了编写安卓程序解析 XML 文件的部分,在写程序之前需要自行搭建 Apache 服务器并新建可访问的 XML 文件。不过作者只介绍了 Windows 环境下的操作方法,这与 Mac 环境还是有较大差别的,笔者经过一番折腾,终于在 Mac 环境下成功创建并访问到 XM...

2019-12-05 13:31:08 697 1

原创 Android Studio环境下,LayoutInflater的inflate方法取不到自定义布局文件

今天在跟着《第一行代码》敲那个聊天界面的小demo时碰到了一个问题,就是在调用 LayoutInflater 的 inflate 方法时,无法获取自定义布局文件。正确的代码如下所示,但是未解决问题之前一直会有错误提示:View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.msg_item, parent,fal...

2019-11-26 15:57:05 1558

原创 Hashtable, Collections.SynchronizedMap和ConcurrentHashMap线程安全实现原理的区别以及性能测试

Hashtable,Collections.SynchronizedMap和ConcurrentHashMap线程安全实现原理的区别以及性能测试这三种 Map 都是 Java 中比较重要的集合类,虽然前两个不太常用,但是因为与多线程相关,所以关于这几种 Map 的对比已经成为了 Java 面试时的高频考点。首先要说明的是,其中每一个单独拎出来都足够支撑一篇长篇大论的技术文章,所以本文把重点放在了...

2019-11-25 15:07:36 1635

空空如也

空空如也

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

TA关注的人

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