自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试突击:ConcurrentHashMap 源码详解

哈喽,大家好,我是DanMu。这篇文章想和大家聊聊 ConcurrentHashMap 相关的知识点。严格来说,ConcurrentHashMap 属于,并属于通常意义上的容器,但是考虑到面试官非常喜欢打出 HashMap 和 ConcurrentHashMap 这套丝滑小连招,因此我决定将它们放在一起,来加深大家的印象,发车!

2024-07-01 10:30:00 601

原创 面试突击:HashMap 源码详解

(持续更新)

2024-06-29 10:52:31 968

原创 面试突击:Java 集合知识体系梳理

哈喽,大家好,我是DanMu。在 Java 开发中,集合类对象绝对是被使用最频繁的对象之一。因此,深入了解集合类对象的底层数据结构和原理,选择合适的集合类型能够极大程度上的影响程序的性能。在本文中,将先对 Java 中的集合类对象做一个整体的梳理,在后续文章中对重要的集合对象进行具体分析。

2024-06-27 23:03:12 1059

原创 面试突击:ArrayList源码详解

哈喽,大家好,我是DanMu。ArrayList 是我们日常开发中不可避免要使用到的一个类,并且在面试过程中也是一个非常高频的知识点,这篇文章将深入分析 ArrayList 的底层原理,助你彻底掌握 ArrayList相关的知识点。

2024-06-27 23:02:18 970

原创 如何优雅的删库跑路?

和 dd 命令一样,shred 也是通过覆盖文件的方式来实现数据的删除,不过与 dd 用空字符覆盖的温柔方式不同,shred 将采用随机生成的字符覆盖文件,并且默认将重复覆盖三次后将文件删除(顶级团队提供顶级服务)。在磁盘中依然留有痕迹,到当前为止,还是可以通过硬件方式直接从磁盘上恢复出原有的信息,我们当然不能满足于此,要做就要做的彻底。在日常工作中,通常公司也会有着严格的权限隔离制度,尽可能防止某个人误操作倒是重要数据被删除,但是还是不建议大家以身试法,一不小心真的就只能跑路了哈。👥 对暖男我来说真的。

2024-06-24 17:30:00 808

原创 面试突击:Java 中的泛型

哈喽,大家好,我是DanMu。今天想和大家聊聊 Java 中的泛型。Java 泛型(Generics)是 JDK 5 中引入的一个新特性。它允许我们通过预先定义模板,为多种不同的数据类型执行相同的逻辑,实现更好的代码复用。Java 编译器实现了对泛型参数进行检测,并且运行我们通过泛型参数来指定传入的对象类型,比如就指定了这个 ArrayList 中只能存放 Integer 对象,如果传入其他类型的对象就会报错。

2024-06-22 22:05:50 762

原创 面试突击:深入理解 Java 中的异常

哈喽,大家好,我是DanMu。今天想和大家聊聊 Java 中的异常。异常处理是一种重要的概念,因为程序总是会出现各种意料之外的问题:有可能是逻辑错误,也可能某位小可爱想看一个练习了 null 年半的练习生跳舞,程序不可能永远正确运行。但是,我们也希望程序在出错之后可以继续运行,不能影响正常用户的使用。因此,我们需要一种机制,保证程序能够在出错后进行一定程度的处理后继续运行。

2024-06-22 11:30:09 670

原创 单木:面试官超爱问的字符串,今天给它彻底讲透

哈喽,大家好,我是DanMu。今天这边文章,想和大家聊聊有关字符串的问题,字符串似乎很简单,但其实字符串几乎在所有编程语言里都是个特殊的存在,因为不管是数量还是体积,字符串都是大多数应用中的重要组成。这篇文章就让我们深入理解一下字符串相关的知识点。这篇文章的开始,就从 String 类的定义开始吧。String 类实现了三个接口:序列化接口,表明String具有序列化的能力。:默认实现了比较方法,因此可以采用来比较两个字符串是否相同(不过更经常用的是equals()方法):一个声明,不重要并且。

2024-06-20 22:40:26 705

原创 面试突击:面向对象基础

(持续更新)

2024-06-18 22:25:26 789

原创 Java面试突击:深入理解基本数据类型

虽然这部分知识点在面试中很少出现,但是一旦答不上来,面试官很容易就给你打上一个基础不扎实的标签。所幸这部分知识点其实也不多,所以还是尽量花点时间看一看。

2024-06-17 19:04:10 1027

原创 搭建自动化博客工作流(Elog+Vuepress+Jenkins+Github Action+Git)

(持续更新)哈喽,大家好,我是。开始写博客也有一段时间了,有写过博客的同学可能也知道,写博客除了需要输出优质的内容以外,有大量的时间其实是消耗在了一些重复工作上,比如说,这**真的很烦人!**有没有一种办法能够减少或者是自动化这些重复工作,今天和大家分享一下,我是如何搭建一个快速,自动化的博客编写工作流程。

2024-06-07 21:22:55 744

原创 JAVA学习路书-2024年最新版

首先,我们要认识到,这几年就业形式确实是不太好,到处都是“Java卷爆了”的言论。对于这些言论,要分为两个部分一方面,确实现在的就业形式比较严峻,因此对于我们的要求已经大大提高。作为一名Java开发者,不仅需要掌握扎实的基础知识,还需要熟悉各种框架和工具,并具备解决复杂问题的能力,所以我们要做好长时间学习的准备。另一方面,现在Java仍然是需求量最大的编程语言。根据各种招聘网站的数据统计,Java相关的职位需求量始终位居前列。

2024-05-29 19:24:14 1006

原创 我说对象相等,HashCode一定相等,面试官笑了...

哈喽,大家哈,我是。今天在刷博客的时候刷到一个挺有意思的面试题:“ 两个对象相等,Hashcode一定相等,那如果?在Javaequalsequals==这也是老八股了,直接开始吟唱equals()

2024-05-25 15:23:11 351

原创 面试官:你来说说Redis是单线程的吗?

哈喽,大家哈,我是。今天在刷博客的时候刷到一个挺有意思的面试题:“ Redis”在平时看的文章中都会说 Redis 是单线程的。但是 Redis 中同样存在着异步执行的操作,比如bgsave命令,它它允许在后台异步地将当前数据持久化到磁盘,既然是异步操作,那么必然存在多个线程,为什么还说 Redis 是单线程的呢?其实 Redis 在4.0之后就已经部分引入了多线程机制,我们平常说的 Redis 是单线程的,主要指的是的主要功能,也就是和是由一个线程完成的。

2024-05-16 11:01:51 884

原创 我说数据分页用Limit,面试官直接让我回去等消息

游标分页非常适合于深分页的场景,能够大大减少需要的记录数量,但是由于游标依赖于上一次查询,所以无法实现跳页,并且只有作为游标的列有序的情况下才能使用游标。而且这个解决方案可以很容易的迁移到项目中任何需要分页的地方,非常适合作为面试时的技术亮点。

2024-04-27 15:00:00 458

原创 初学者必备:DiTing带你快速掌握Go面试必备7大技术栈

哈喽,大家好,我是DanMu。

2024-04-25 18:50:10 430

原创 不就是个聊天室,我从头撸给你看:2.怎样实现登录注册

Hello,我是单木。接下来我将会开启一个新的博客系列,使用 GoLang 从 0 到 1 实现一个IM聊天室项目。在上一篇文章中,我们已经实现了一个简单的聊天室 Demo ,接下来我们就要开始具体业务的实现部分。在这篇文章中,我们将会完成用户的登录和注册。

2024-04-01 20:40:55 1032

原创 不就是个聊天室,我从头撸给你看:1.实现一个最简单的Demo

Hello,我是单木。接下来我将会开启一个新的博客系列,使用 GoLang 从 0 到 1 实现一个IM聊天室项目。在上一篇文章中,我们已经成功的搭建好了项目的整体框架,废话少说,接下来让我们正式开始聊天室的开发。让一个用户发送的内容能够被其他用户接收。在这篇博客中,我们实现了一个最最基本的聊天室框架,当然,这个框架还有非常多不完善的地方,我们将在接下来逐步进行完善,敬请期待。

2024-03-31 17:02:30 733

原创 不就是个聊天室,我从头撸给你看:0.准备工作指南

Hello,我是单木。接下来我将会开启一个新的博客系列,使用 GoLang 从 0 到 1 实现一个IM聊天室项目。

2024-03-30 21:55:24 804

原创 一文搞懂设计模式--单例模式

Hi,大家好呀。今天要说的是单例模式。单例模式的核心思想十分的简单,在开发一个系统的时候,为了保证系统中的数据一致,我们会希望某些特殊的类在整个系统的运行过程中只能存在一个实例。最简单的时间方式就是将这个要求交给开发者,让开发者在开发的时候多加注意。当然,有时候我们不想要开发者人为的来维护这个实例,毕竟人总是会犯错的嘛,一不小心就会造成巨大的损失。因此,开发者们想出了一个设计模式来完成这件事情,这个设计模式就叫做单例模式。*采用懒汉式,才类加载时创建实例*添加volatile关键字防止指令重排。...

2022-07-20 15:47:08 141 1

原创 一文搞懂设计模式--工厂方法模式

今天一位尊敬的甲方来到你的公司,准备请你们帮助定制开发一个软件。产品经理几乎快说断了三寸不烂之舌,甲方代表终于满意的点点头,大手一挥在合同上写下大名。陪着甲方走出公司的大门后,产品经理终于有机会连灌了一瓶水下肚,紧接着就开始了对你的摧残。甲方的要求是这样今天的甲方是一个实业家,手下掌握有大量的工厂,生产众多不同的产品。但是随着工厂规模的扩大,生产过程中的环节为管理产品带来了许多问题,他希望你们能够开发一个软件帮助他管理产品生产的过程。你们经过详细的调研,了解到一个产品在工厂中通常会经历以下三个阶段。...

2022-07-15 19:45:26 237

原创 一文搞懂设计模式--模板模式

Hi,大家好。今年的天气实在是太热了,七月份的厦门晒得我觉得身上冒出了烤肉香,不知道各位是否安好,但是在再热的天气也不能阻止我们学习的热情(doge)。今天的主题是模板(Template Method)模式......

2022-07-14 17:36:17 726

原创 一文搞懂设计模式--外传之为什么要使用设计模式

在思考为什么要使用设计模式之前,让我们先来思考如何设计一款优秀的软件?当然这里的软件指的是软件的实现架构。让我们思考一下软件架构设计所需要达成的目标,以及设计模式如何在这其中发挥作用对于软件开发而言,成本和时间永远是最重要的。代码复用是减少开发成本最常用的方式之一,这个想法看起来非常自然,但是实际在开发过程中,要让已有代码能够适配新的场景往往还是需要付出额外的代价。例如,不同的模块之间存在紧密的耦合关系,这使得复用这些代码变得更加困难。对于代码复用来说,最底层的复用通常会涉及到类、类库、容器等等可以独立存在

2022-07-13 12:17:23 174

原创 一次性搞懂设计模式--适配器模式

通用设计模式之适配器模式

2022-07-11 11:42:35 202

原创 java 集合

集合概述集合概览Java集合可分为Collection和Map两种体系Collection接口单列数据,定义了存取一组对象的方法的集合List元素有序、可重复的集合Set元素无序、不可重复的集合Map接口:双列数据,保存具有映射关系“key value对”的集合Collection接口Collection接口是List、Set和Queue接口的父接口,该接口里定义的方法既可用于操作Set集合,也可用于操作List和Queue集合。JDK不提供此接口的任何直接实现,而是提供更具

2020-07-31 17:10:00 122

原创 Java 比较器

Java比较器在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。Java实现对象排序的方式有两种 :自然排序: java.lang.Comparable定制排序: java.util.Comparator实现一:自然排序Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。实现 Comparable 的类必须实现 compareTo(Object obj) 方法,两个对象即通过 compareTo(Object obj

2020-07-27 21:24:31 107

原创 java String StringBuffer StringBuilder

String的特性String类: 代表字符串。 Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现String是一个final类,代表不可变的字符序列字符串是常量,用双引号引起来表示。 它们的值在创建之后不能更改String对象的字符内容是存储在一个字符数组value[]中的不可变的好处1.可以缓存 hash 值​ 因为 String 的 hash 值经常被使用,例如 String 用做 HashMap 的 key。不可变的特性可以使得 hash 值也不可变,因此

2020-07-27 17:14:41 106

原创 java 线程同步和通信

什么是线程同步同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。这里的同步千万不要理解成那个同时进行,应是指协同、协助、互相配合。线程同步是指多线程通过特定的设置(如互斥量,事件对象,临界区)来控制线程之间的执行顺序(即所谓的同步)也可以说是在线程之间通过同步建立起执行顺序的关系,如果没有同步,那线程之间是各自运行各自的!为什么要实现线程同步模拟火车站售票程序,开启三个窗口售票。class Window implements Runnable{ //假设一共有100张票

2020-07-25 17:52:07 254

原创 java 多线程

什么是多线程要说清楚什么是线程,首先要分清程序,进程线程的区别程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。 ——生命周期如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的进程作为资源分配的单位, 系统在运行时会为每个进程分配不同的内存区域线程(thread),进程可进一步细化为线程,是

2020-07-25 16:17:00 78

原创 java JDBC

什么是JDBCJDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这些类库可以以一种标准的方法、方便地访问数据库资源。JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系

2020-07-24 22:44:59 301

原创 java 泛型

什么是泛型泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型

2020-07-23 21:12:49 84

原创 java 泛型进阶

java泛型是如何实现的?java的泛型实际上是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除。Java的泛型基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛型中的类型信息的,使用泛型的时候加上类型参数,在编译器编译的时候会去掉,这个过程成为类型擦除。如在代码中定义List和List等类型,在编译后都会变成List,JVM看到的只是List,而由泛型附加的类型信息对JVM是看不到的。Java编译器会在编译时尽可能的发现可能出错的地方,

2020-07-23 21:12:07 130

原创 Java 多态

什么是多态概念多态是同一个行为具有多个不同表现形式或形态的能力。举个栗子,现实中,比如我们按下 F1 键这个动作:如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同样是按下F1,在不同的状态中就产生了完全不同的结果。在java中可以理解为不同的对象中调用同名的函数产生了不同的结果。如何使用多态三大前提要有继承关系子类要重写父类方法父类引用指向子类

2020-07-21 20:55:23 82

空空如也

空空如也

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

TA关注的人

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