自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一文搞懂GC日志分析

GC日志分析要分析GC日志,就必须让JVM跑一段代码,本文通过一段代码获得一段GC输出,分析这个GC输出来学习如何分析GC日志。Java版本:java version “1.8.0_301”代码该代码引用了周明耀的《深入理解 JVM & G1 GC》import java.util.HashMap;public class StopWorldDemo { public static class MyThread extends Thread { HashMa

2021-11-24 21:31:22 1145

原创 Java代码是怎么运行的

Java代码是怎么运行的Java为什么要运行在虚拟机上Java作为一门高级程序语言,它的语法非常复杂,抽象成都也很高。因此,直接在硬件上运行这种复杂的程序并不现实,因此在运行Java程序之前,我们需要对其进行一番转换。转换的思路:设计一个面向Java语言特性的虚拟机,并通过编译器将Java程序转换成该虚拟机所能识别的指令序列,也称Java字节码。字节码之所以取名为字节码,是因为Java字节码指令的操作码(opcode)被固定为一个字节。Java虚拟机是怎么运行Java字节码的从虚拟机角度看待

2021-11-11 10:08:06 381

原创 单元测试常用 -- Mock 框架

文章目录**单元测试常用 -- Mock 框架****Mockito 框架****常用注解****示例代码****PowerMock 框架****Mock 入参对象****Mock 方法内部 new 出来的对象****Mock 普通对象的 final 方法****Mock 普通对象的静态方法、私有方法****踩坑指南**单元测试常用 – Mock 框架Mockito 框架常用注解@Mock:功能类似于 Spring 的注解 @Autowied,但不会真的注入单例,而是表示这个类要被 mock。@I

2021-10-25 20:38:35 2151

原创 一文搞懂 Mybatis Plus

文章目录一文搞懂 Mybatis Plus快速开始数据表构造初始化SpringBoot项目导入依赖配置文件编写代码测试CRUD 接口InsertDeleteUpdateSelect一文搞懂 Mybatis Plus本文参考:https://mp.baomidou.com/,列出了主要需要学习的对象。快速开始数据表构造DROP TABLE IF EXISTS user;CREATE TABLE user( id BIGINT(20) NOT NULL COMMENT '主键ID', nam

2021-10-23 23:38:00 186

原创 Kafka 监控实现机制学习

文章目录Kafka 监控实现机制学习监控实现思路初始化 MetricsMetrics 及其下的 MetricSensorStat总结参考文献Kafka 监控实现机制学习这篇文章概述了 kafka 的 Metrics 模块架构:https://blog.csdn.net/u010952362/article/details/103808259,建议看完本篇后食用。监控实现思路初始化 Metrics第一步:在 kafkaServer 的 startup()方法中,metrics 第一次被初始化:me

2021-07-18 12:20:39 338

原创 记一个疑惑--一个进程中的两个线程,有一个线程挂了,另外一个线程能正常运行吗?

如题,今天遇到这个疑惑,于是打开 idea 准备做下试验,代码如下: public static void main(String[] args) { Solution solution = new Solution(); new Thread(()->{ System.out.println(1/0); }).start(); new Thread(()->{

2021-07-12 08:28:54 558

原创 深入理解 Java 内存模型与线程

参考文献:《深入理解 Java 虚拟机》 周志明

2021-06-21 21:53:11 79

原创 深入理解 Java 垃圾回收算法

文章目录垃圾收集器如何判断一个对象是垃圾?引用计数法可达性分析算法标记几次才会被清除?垃圾收集算法分代收集理论标记 - 清除算法标记 - 复制算法标记 - 整理算法经典垃圾收集器Serial 收集器Serial Old 收集器CMS 收集器G1 收集器参考文献垃圾收集器今天我们来一起探讨一下JVM中的垃圾收集器,这是Java面试者几乎必问的一个知识点,因此有必要对它进行深入的学习。我们先来看看大纲。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p9sQ4bBr-1624

2021-06-21 16:56:03 103

原创 原来键入一个 URL 的过程还能这么回答

分析在浏览器输入框键入一个 URL 的过程在浏览器输入框键入一个 URL 的过程,这是一道已经被问烂了的面试题,相信不少同学都已经有一套自己的回答说辞了,针对这道题目,我给一个我自己的回答,期望能对各位小伙伴有帮助。当我们在浏览器输入一个URL并按下Enter后,浏览器会解析我们输入的URL,并将其转为HTTP请求消息,正常情况下,我们键入的是域名,当前的浏览器默认使用HTTPS协议,当然也可以使用HTTP协议,我这里以HTTP协议为例。与此同时,浏览器会根据URL解析出域名信息,委托DNS服务找到域

2021-06-20 20:58:33 152 1

原创 JVM 运行时数据区

文章目录JVM 运行时数据区运行时数据区程序计数器虚拟机栈本地方法栈Java 堆方法区JVM 运行时数据区运行时数据区这两张图能够很好的帮大家建立起JVM运行时数据区的图像,接下来让我们一步一步揭开运行时数据区的神秘面纱。程序计数器在讲程序计数器之前,我得先扯一下CPU运行相关的知识,我们都知道CPU的运行是需要上下文的,同时CPU其实就是一个不断地执行指令、运算的芯片,为了让CPU的功能正常运行,我们需要有寄存器以及程序计数器来配合CPU的工作。这是计算机的底层。到了上层的应用程序其实也离

2021-06-17 20:18:23 83 1

原创 Stream流式编程

Stream流式编程这是 Java 8 的另外一个新特性,Stream 的出现在笔者认为更像是 Java 随着时代的发展在进步,大数据的发展促使了 Java 的进步以及 Stream 流式编程的出现。在Stream出现之前,如果我们想要遍历一个集合并对其进行操作的话,一般是用for循环或者是iterator迭代器。Stream与前面的iterator的功能一样,其实就是遍历整个集合,不过Stream提供了更多的API,使开发者可以更方便的在程序的内存中处理数据。为了代码演示方便,这里创建一个App

2021-06-17 16:31:14 120

原创 Java 8 新特性之 lambda 表达式以及 函数式编程

文章目录Java 8 新特性之 lambda 表达式以及 函数式编程Quick Start引用方法引用构造函数引用配合函数式接口类型推导Java 8 新特性之 lambda 表达式以及 函数式编程lambda表达式是Java 8的一个很重要的新特性,对于我们Java开发者来说,学会使用lambda是十分重要滴。本文带你快速学会并掌握lambda表达式的使用以及函数式编程~~~Quick Startlambda表达式能用在两个地方:创建匿名内部类创建对象我们直接上代码创建匿名内部类pu

2021-06-16 22:16:39 220 2

原创 操作系统_内存管理

文章目录内存管理虚拟内存内存分段内存分页段页式内存管理虚拟内存没有操作系统的单片机程序是直接使用物理地址的,但对于有操作系统的电脑而言,直接操作物理地址简直不能忍,现在的应用程序这么多,直接操作物理地址会产生一系列严重的问题,例如我存在某个位置的数据会被其他应用程序擦除。因此我们需要有一个虚拟内存地址,应用程序可以在自己的虚拟地址内随意玩耍,操作系统负责将你的虚拟内存映射成物理内存。这个管理者在操作系统中被称为 MMU (Memery Management Unit)内存管理单元。于是我们就可以进

2021-06-15 09:12:18 193 1

原创 CPU缓存一致性

CPU缓存一致性CPU 缓存出现的原因CPU的运算速度是十分快的,而内存的数据交换速度远远小于CPU。假如CPU每次运算的时候都需要从内存拿数据,那么每一次计算就等待内存一次,这是十分不合理的,同样时间下,CPU可以运算 100 次,而内存只能读一次数据。由于上述问题,就像我们为了解决硬盘读取速度太慢而出现了内存这样子设计一样,计算机科学家同样创造除了CPU缓存的概念。CPU Cache的数据交换的基本单位CPU每次读取数据的时候不是一个一个字节从内存中进行读取的,CPU Line是CPU将数据从

2021-06-13 15:00:55 165

原创 Java NIO的学习笔记

本笔记记录了视频Java NIO 视频教程全集的学习笔记。1. Java NIO 简介Java NIO( New IO) 是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同, NIO支持面向缓冲区的、基于通道的IO操作。 NIO将以更加高效的方式进行文件的读写操作。2. Java NIO 与 IO 的主要区别3. 缓冲区(Buffer)和通道(Channel)Java NIO系统的核心在于:通

2021-05-31 19:59:26 153

原创 Docker常用命令:容器命令:新建并启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG..]OPTIONS说明(常用):有些是一个减号,有些是两个减号命令功能--name="容器新名字"为容器指定一个名称-d后台运行容器,并返回容器ID,也即启动守护式容器-i以交互模式运行容器,通常与 -t 同时使用-t为容器重新分配一个伪输入终端,通常与-i同时使用-P随机端口映射-p指定端口映射,有四种格式:ip:hostPort:containerPort

2021-04-22 11:39:14 623

原创 你想知道你的计算机一秒能做多少次运算吗?

最近在刷算法题,凡算法题就涉及到时间复杂度的讨论,在算法题中,这道题能否在规定时间内通过与你算法的平均时间复杂度有关,也与这道题的数据量大小有关,因此写算法题的时候要综合考虑这两个因素,我们的算法基础基本够我们估计出平均时间复杂度,那么我们如何根据数据量以及平均复杂度估计算法解决问题的大概时间内,这个是可以的。每台电脑的硬件不同,每秒的计算量必定不同,但我这里给出一个大概的计算方法:package com.db.JUC;import java.time.Duration;import java.t

2021-04-22 08:31:50 10225 4

原创 Linux-组管理和权限管理

2021-04-17 19:03:06 80

原创 Lambda Expression

拷贝小括号,写死右箭头,落地大括号函数式接口–@FunctionalInterfacedefault静态方法实现From 尚硅谷周阳

2021-04-17 12:42:46 65

原创 MySQL高级-索引优化总结口诀

全值匹配我最爱,最左前缀要遵守;带头大哥不能死,中间兄弟不能断;索引列上少计算,范围之后全失效;Like百分写最右,覆盖索引不写星;不等空值还有or,索引失效要少用;VAR引号不可丢,SQL高级也不难!From 尚硅谷_周阳...

2021-04-16 21:04:21 225

原创 用户管理

2021-04-14 21:39:02 51

原创 Vi和Vim编辑器

2021-04-14 21:38:31 63

原创 开机、重启和用户登录注销指令

2021-04-14 21:37:34 85

原创 Linux目录结构

2021-04-14 21:36:54 61

原创 设计模式---结构型

文章目录结构型桥接(Bridge)组合(Composite)装饰(Decorator)外观(Facade)享元(Flywight)代理(Proxy)结构型定义把一个类接口转换成另一个用户需要的接口。桥接(Bridge)定义将抽象与实现分离开来,使它们可以独立变化组合(Composite)定义将对象组合成树形结构来表示“整理/部分”层次关系,允许用户以相同的方式处理单独对象和组合对象。装饰(Decorator)定义为对象动态添加功能装饰者(Decorator)和具体组件(Co

2021-04-11 23:02:16 115

原创 设计模式---行为型

文章目录行为型责任链(Chain Of Responsibility)命令解释器(Interpreter)迭代器(Iterator)中介者(Mediator)备忘录(Memento)观察者模式(Observer)状态(State)策略(Strategy)模板方法(Template Method)访问者(Visitor)空对象(Null)行为型责任链(Chain Of Responsibility)定义使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象形成一条链,并沿着

2021-04-11 23:01:39 80

原创 设计模式---创建型

文章目录创建型单例模式饿汉式懒汉式双重检查静态内部类枚举单例模式在JDK的应用简单工厂简单工厂在JDK的应用工厂方法抽象工厂原型模式浅拷贝与深拷贝生产者模式(生成器)创建型单例模式定义:所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类中只提供一个取得其对象实例的方法(静态方法)饿汉式静态常量实现这里使用了一个小知识,构造器私有化,防止外部new,通过这个技术可以实现在这个类的内部实例化对象;在内部使用private static关键字对实例

2021-04-11 23:00:47 83

原创 原型模式---多例

原型模式碎碎念:由于从来没有了解过原型,导致我说原型的时候总是会说多例,用多例来形容原型其实并无大问题,但应该知道原型与多例其实是同一个东西(prototype),我在面试阿里的时候就出过这样的窘境,面试官在说原型原型,我在说多例多例,我总以为面试官跟我说的其实是不同的东西,害,其实原型就是多例,多例就是原型。在原型模式之前,我们先来看看传统的模式是如何创建一样的对象,例如我要创建10个一样的student对象Student xiaoming = new Student(10,'小明');Stud

2021-04-08 19:27:22 355

原创 工厂模式--从无工厂模式到工厂模式的变化

简单工厂定义在创建一个对象时,不向客户暴露内部细节,并提供一个创建对象的通用接口类图简单工厂把实例化的操作单独放到一个类中,这个类就称为简单工厂类,让简单工厂类来就决定应该用哪个具体子类来实例化。这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么素偶又的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。简单工厂在JDK的应用JDK中的Calendar使用了简单工厂

2021-04-08 17:33:37 156

原创 简单工厂(深入理解)

简单工厂定义:在创建一个对象时,不向客户暴露内部细节,并提供一个创建对象的通用接口。举例子:例如我有一家披萨店,店里有很多披萨供客户选择,使用工厂与不使用工厂时的区别在于,使用工厂前,每次我需要什么披萨,我都需要自己手动创建,new对象的任务交给类本身执行,如果这个时候,我要创建一个新的披萨,那么我需要修改的代码就是所有new披萨的地方,当这些地方很少的情况下,这样子的修改是可以接受的,但如果很多地方都使用了类似的代码,那么修改的过程是漫长且痛苦的。简单工厂模式应运而生,其内涵在于,业务类不再自己创

2021-04-07 17:54:16 81

原创 单例模式

文章目录单例模式饿汉式懒汉式双重检查静态内部类枚举单例模式在JDK的应用单例模式定义:所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类中只提供一个取得其对象实例的方法(静态方法)饿汉式静态常量实现这里使用了一个小知识,构造器私有化,防止外部new,通过这个技术可以实现在这个类的内部实例化对象;在内部使用private static关键字对实例进行修饰,在类装载的过程中就对类进行实例化,通过这样的方式实现单例,避免线程同步问题,但无法起到懒加载

2021-04-07 17:53:47 80

原创 在浏览器输入URL后,执行的全部过程(理解过程)

流程概述:浏览器解析URL生成HTTP请求→解析域名(DNS)→HTTP请求委托TCP协议→TCP委托IP→加上MAC头→客户端网卡(转成电信号)→进入网线,CDN、负载均衡→服务器防火墙→服务器网卡→IP协议→TCP协议→HTTP协议…(后面大同小异)流程细节:浏览器先解析URL,解析完成后获得web服务器消息及其资源文件名,根据这些消息生成HTTP请求消息,但我们都知道HTTP协议位于应用层,不具备将消息发送到网络中的功能,因此这一功能需要委托操作系统来实现。在进行这一操作的时候,还需要查询网址中

2021-04-06 17:04:14 616

原创 设计模式七大原则的理解以及记忆方式

最近在学习设计模式,有必要记忆七大原则,方便后面学习具体的设计模式。我想了一个口诀来方便我记忆(大家可以想自己的口诀来记忆):开接一单,里(迪)合。我用上面的话来记忆七大原则,比如开接一单,我脑海里的场景就是开始接单了,这是第一单,里合,我脑海里就是离合。以下是我自己对七大原则的简单理解:(按照口诀的顺序)开闭原则一个类的模块和函数,应该对扩展开放,对修改关闭接口隔离原则一个类对另一个类的依赖应该简历在最小的接口上依赖倒转原则一种表述:抽象不应该依赖于细节,细节应当依赖于抽

2021-04-06 10:30:13 617

原创 基础知识

2021-04-02 10:16:36 57

原创 TCP_流量控制

2021-03-25 17:45:28 65

原创 TCP_可靠传输

2021-03-25 17:20:51 50

原创 TCP_头部

2021-03-25 17:07:21 88

原创 B+树索引

本文来自:牛客网友:吕布仅作自己学习使用:B+树的优势1.单一节点存储更多的元素,使得查询的IO次数更少。2.所有查询都要查找到叶子节点,查询性能稳定。3.所有叶子节点形成有序链表,便于范围查询。为什么mysql用B+树来存储索引呢?MySQL中存储索引用到的数据结构是B+树,B+树的查询时间跟树的高度有关,是log(n),如果用hash存储,那么查询时间是O(1)。既然hash比B+树更快,为什么mysql用B+树来存储索引呢?一、从内存角度上说,数据库中的索引一般时在磁盘上,数据量大的情

2021-03-25 11:18:48 125

原创 网络层

2021-03-23 19:18:25 65

原创 数据链路层

2021-03-23 11:14:01 45

空空如也

空空如也

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

TA关注的人

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