自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 问答 (13)
  • 收藏
  • 关注

原创 从源码的角度看 HashMap

先看 HashMap 类注释是怎么介绍 HashMap 的。译文:Map 接口的基于哈希表的实现,它实现了 Map 接口所有的抽象方法,并允许存储 null 键和 null 值。HashMap 与 HashTable 非常相似,除了它是非线程安全的和允许存储 null。HashMap 不保证元素的顺序,因为底层是哈希表和重新散列,它甚至不能保证在一段时间内顺序是一致的。HashMap 为基本操作(get 和 set)提供了恒定的时间性能。

2023-10-09 13:59:50 172

原创 IDEA Hierarchy Scope Pattern 限定在 rt.jar

在 IDEA 中可以使用 CTRL+H 快捷键查看类的继承关系,但是默认会在所有的 jar 中搜索继承关系,包括 classpath 中的 jar,比如我们只想看 rt.jar 中这个类的继承关系,可以通过配置 Scope Pattern 来限定搜索范围,rt.jar 的 Scope Pattern 是 lib:java…

2023-10-09 13:58:22 170

原创 Jakob Jenkov 个人博客 JCE 部分(译文)

MD2MD5SHA-1SHA-256SHA-384SHA-512并非所有的这些消息摘要算法都同样安全,建议使用 SHA-256 或更高版本以获得尽可能高的安全性。

2023-10-09 13:57:24 225

原创 Java API -- ThreadLocal

ThreadLocal 提供线程局部变量,使用它保存的变量在每个线程中都是独立的变量副本,ThreadLocal 通常是类中的私有静态字段,用于将状态与线程相关联。

2023-10-09 13:55:36 103

原创 JVM 性能监控与故障处理工具

需要注意的是,JDK 8 并不包含 JMC,你如果想要尝试 JMC 需要单独下载它,官方的下载地址是:https://jdk.java.net/jmc/,截至 2023-10-04,JMC 的最新版本是 JMC 8.3.1,从 JMC 8.1 开始运行 JMC 的 JDK 版本要求是 JDK 11 及以上,JMC 8.0 仍然仍然可以运行在 JDK 8 之上,所以你本地安装的是 JDK 8 的话,那么你需要下载 JMC 8.0 版本。

2023-10-09 13:52:07 365

原创 JVM 参数

JVM 参数类型大致分为标准参数、非标准参数和高级运行时参数。

2023-10-09 13:47:55 342

原创 JVM 运行时数据区和垃圾收集算法

在 《深入理解 Java 虚拟机》一书中,作者将运行时数据区和垃圾收集算法放在开头章节,说明了这两个知识点是进一步学习 JVM 的基础知识点,相比后续的 垃圾收集器和 JMM,它也更加的简单。

2023-10-09 13:44:58 344

原创 Jakob Jenkov 个人博客 Jackson 部分(译文)

JSON 是 JavaScript Object Notation 的缩写,JSON 是一种非常流行的数据交换格式,它通常被用来在浏览器和 web 服务器之间传递数据。

2023-10-09 13:43:24 76

原创 Java 与零拷贝

零拷贝是由操作系统实现的,使用 Java 中的零拷贝抽象类库在支持零拷贝的操作系统上运行才会实现零拷贝,如果在不支持零拷贝的操作系统上运行,并不会提供零拷贝的功能。

2023-09-12 12:28:09 88

原创 浅谈前后端分离的网络拓扑

前后端分离大体分为两种拓扑结构,前端和后端通过开放对外端口的拓扑结构和只有前端开放端口的拓扑结构。

2023-09-11 01:52:29 348

原创 基于ubuntu构建jdk镜像

Docker Hub 上有很多官方的 JDK 镜像,但是它们都不是基于 ubuntu 的,而是基于更小的 Linux 发行版,在使用一些命令行工具的之后老师报找不到,而且自己对 ubuntu 也更加熟悉。以此 Dockerfile 构建的镜像拥有国内的apt源,且安装了jdk8。如果有知道原因的可以在评论区解释一下。这样构建出来的镜像要自己手动进入容器里面重新执行。在构建此镜像的时候我遇到了一个问题,如果将。,如果不执行可能会在执行。

2023-09-10 16:33:51 511

原创 国内 Docker 镜像加速器和国内公共镜像仓库那些事

首先我们知道,全球最大的公共镜像仓库是 Docker 公司自己搭建的 Docker Hub,也是权威性最高的,里面包含了各种各样的官方镜像,Docker Hub 为每一个注册用户提供了个人镜像仓库服务,该个人镜像仓库是公共的。以上都不是重点,重点是因为各种各样的原因,国内使用 Docker Hub 提供的镜像仓库会很慢,虽然 Docker 提供了 registry 镜像,用户可以通过 registry 搭建自己的镜像仓库,但是这种基础设施能用公共的就用公共。

2023-09-10 14:19:22 3230

原创 window和linux下载ffmpeg

【代码】window和linux下载ffmpeg。

2023-09-08 15:10:35 862

原创 快速入门 Logback

Logback 旨在作为流行的 log4j 项目的继承者。它是由 log4j 创始人 Ceki Gulcu 设计的。同时它也是 SpingBoot 项目的默认日志框架。

2023-09-08 12:36:42 782

原创 SpringBoot 官网翻译

自己看着 google 翻译手打的 SpringBoot 的官方文档,希望对初学者有帮助。快速开始使用 Spring Boot 可以很容易地构建出能直接运行的、独立的、生产级别的、基于 Spring 的 Java 应用程序。开发第一个 Spring Boot 应用让我们使用 Java 开发一个简单的 Hello World! web 应用程序,以便体现 Spring Boot 的一些关键特性。我们将使用 Maven 构建该项目,因为大多数 IDE 都支持它。创建 POM<?xml ve

2023-09-03 17:50:42 479

原创 HttpClient

HTTP 是基于请求响应的无状态协议,随着 HTTP 协议越来越受欢迎和采用,越来越多的系统开始将它用于它从未打算用于的应用程序,例如作为电子商务应用程序的传输。因此,对状态管理的支持成为一种必然。Cookie 是 HTTP 请求的一个请求头,它本质上是一份存储在用户本地的文件,里面包含了每次请求中都需要传递的信息。HTTP 请求可以由请求体,HTTP 响应也可以有响应体,在 HttpClient 中被称为实体,顶级接口就是 HttpEntity,它有很多的实现类,不同的类就表示不同类型的实体。

2023-09-03 16:57:16 232

原创 《多线程编程实战指南》总结

Java 并发和多线程编程推荐《Java 并发编程实战》和《多线程编程实战指南》,前者是外国非常受欢迎的书籍的翻译本,后者是国人写的书,符合国人的思维模式。

2023-09-03 15:21:10 427

原创 ZooKeeper

ZooKeeper 是应用于分布式应用程序分布式协调服务。ZooKeeper 最早起源于雅虎研究院的一个研究小组。当时,研究人员发现,在雅虎的很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统都存在分布式单点问题,所以雅虎的开发人员就试图开发出一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上。

2023-08-21 17:46:30 972

原创 设计原则 --《设计模式之美》总结篇

本文是阅读《设计模式之美》的总结和心得,跳过了书中对面试和工作用处不大或不多的知识点,总结总共分为三章,分别是面对对象编程范式、设计原则和设计模式。设计模式是代码设计时的一些经验总结。相比于设计模式,设计原则更抽象。

2023-08-20 01:48:38 443

原创 面对对象编程范式

本文是阅读《设计模式之美》的总结和心得,跳过了书中对面试和工作用处不大或不多的知识点,总结总共分为三章,分别是面对对象编程范式、设计原则和设计模式现如今,编程范式存在三种,它们分别是面向对象编程、面向过程编程和函数式编程。其中面向对象编程是目前最流行的,因为随着互联网技术的不断发展,应用程序的体量越来越大,代码行数越来越多,面对对象编程范式拥有的封装、抽象、继承和多态特性在面对大型系统的时候,可以让程序员更容易设计和组织出高内聚、低耦合、易扩展和已读的代码。

2023-08-20 01:21:37 539 1

原创 Tomcat 一次请求的生命周期

简单的梳理了 HTTP 请求进入 Tomcat 的代码调用栈之后,我们可以通过上面的流程画出请求的流程图:Http11Processor 中主要是对 HTTP 协议的实现,相比于这部分,我对 Endpoint 中的处理更感兴趣,因为这部分更接近操作系统,这里我们只讨论了 Endpoint 在 NIO 模式下的处理流程,在使用 NIO 模式的时候,Tomcat 做了哪些设计和努力来让 Tomcat 能够支持高并发呢?

2023-08-17 14:37:28 2074 1

原创 数据结构与算法

时间复杂度大 O 表示法:表示代码执行时间随这数据规模增大的变化趋势。空间复杂度大 O 表示法:表示代码占用的存储空间随数据规模增大的变化趋势。编程语言中一般会有数组这种数据类型。不过,它不仅是编程语言中的数据类型,还是基础的数据结构。数组是一种线性表数据结构,它用一组连续的内存空间存储一组具有相同类型的数据。数组可以在 O(1) 时间复杂度内按照下标快速访问数组中的元素。数组适合查找,不适合插入和删除,当插入元素到数组中间时,需要将后边的元素往后搬移一个位置,如果这时数组空间不够,还需要扩容数组后插入元素

2023-08-01 20:55:47 134

原创 Java基础-内部类

内部类指的是在一个类的内部定义的类,Java 中存在四种内部类,分别是成员内部类、局部内部类、静态内部类和匿名内部类。

2023-07-19 20:54:51 1290

原创 Git 使用场景--恢复被覆盖的代码

此时你 git 中的 HEAD 和 INDEX 都是 A 提交的内容,但是工作目录是 D 提交的内容,所以会显示文件被改动,此时将改动提交到 INDEX,push 到远程仓库,则远程仓库的代码就和 D 分支一样了。同理,工作目录是 A 提交的内容,然后将改动 push 到远程,此时 dev 的远程仓库的代码就是 A 提交的代码了。同事给我的方案是在我的 dev 分支删除我的代码,合并到 uat,然后在 dev 重新提交我的代码,合并到 uat。你要将 dev 分支的代码回退到提交 D 然后合并到 uat。

2023-04-19 14:33:43 2306

原创 Tomcat 源码启动

要想学习 Tomcat 原理,看源码是最直接的方式,而想要理解源码,我们要想把它在本地跑起来。

2023-02-02 09:29:44 608

原创 try catch finally 中的 finally 和 return

这是因为案例二的返回值是引用类型,对于引用类型方法保存的返回值是引用的地址,我们不妨将方法保存的变量叫 returnType,那么 returnType 和 referenceType 指向同一个 Map 对象,所以 referenceType 的修改会反应到 returnType 上,但是将 referenceType = null 并不会修改 returnType,所以返回的 Map 对象不是 null。要分析两种情况,一种是 return 基本数据类型,另一种是 return 引用类型。

2023-01-03 22:17:44 91

原创 Java 中的 Clone()

Clone()方法是 Object 类提供的方法,顾名思义,通过调用改方法可以拷贝/克隆一个对象,作为 Java 语言的一个基本特性,在面试和工作中会经常遇到。

2022-12-17 19:10:51 1195

原创 Spring 创建 Bean 全过程

Spring 创建 Bean 的全过程。

2022-09-29 11:36:21 616

转载 MyBatis 三剑客之一 PageHelper

参考:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.mdhttps://github.com/abel533/Mybatis-Spring/tree/spring3.x添加依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper&

2022-04-25 14:53:43 300

原创 MyBatis 三剑客之一 Mybatis Generator

官方网站:https://mybatis.org/generator/通用 Mapper 的 MBG:https://github.com/abel533/Mapper/wiki/4.1.mappergenerator参考:https://blog.csdn.net/q258523454/article/details/82292045MyBatis Generator 简称 MBG,是 MyBatis 官方发布的代码生成器,它可以根据数据库的表生成对应的实体类,xml文件和mapper接口,提高开发

2022-04-25 11:44:19 271

原创 Mybatis 配置

参考:https://mybatis.org/mybatis-3/configuration.html依赖<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version></dependen

2022-04-24 19:59:40 652

转载 MyBatis 三剑客之一 通用 Mapper

官方文档地址:https://github.com/abel533/Mapper依赖<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>版本号</version></dependency>对象关系映射简单映射数据库表的字段名和实体类的

2022-04-23 23:09:45 483

原创 mysql 数据库迁移

导出数据库使用 navicat右键要导出的数据库,然后点击 “转储 SQL 文件”选择导出的 sql 文件使用 mysqldump 命令mysqldump -u root -p --opt database > /tmp/data-export.sql导入数据库mysql -h[remote_server_ip] -u root -p -P10010 new_database < /tmp/data-export.sql参考:https://blog.csdn.n

2022-03-17 09:36:18 920

原创 Logstash8 从 MYSQL 导入数据到 ES

拉取镜像docker pull logstash:8.0.0运行进行并把配置文件拷贝出来,Logstash 有两种配置文件,管道配置文件(/usr/share/logstash/pipeline/)和Logstash启动配置文件(/usr/share/logstash/config/)docker run --rm --name logstash -d logstash:8.0.0docker cp logstash:/usr/share/logstash/pipeline/ .docker

2022-02-19 21:31:58 2201

原创 创建线程的三种方式

Thread:继承Thread类,重写 run() 方法,实例化后调用 start() 方法Runnable:实现Runnable接口,重写 run() 方法,传入Thread类的构造函数中,然后调用Thread类的 start() 方法Callable:实现 Callable 接口,重写 call() 方法,传入FutureTask类的构造函数中,然后将FutureTask的实例传入Thread类的构造函数中,然后调用Thread类的 start() 方法public class M..

2022-02-19 21:30:19 293

原创 rancher helm 部署安全 elasticsearch

官方 helm:https://github.com/elastic/helm-charts/blob/v7.16.2/elasticsearch查看官方的例子,可以看到要修改的点有elasticsearch.yml 设置开启 xpack在生产环境中,开启 xpack 必须开启 transport 的 ssl,所以还要生成证书并挂载es 超级管理员 elastic 的密码在修改 values.yaml 文件之前,我们要先创建用户密码的 secret 文件和证书的 secret 文件创建密码的

2022-01-05 10:09:48 3169

原创 Kibana警报之邮件连接器

1.创建电子邮件连接器在电子邮件连接器创建界面要设置如下信息连接器名称发送者:发送者的邮箱地址,这里我配置为我的163邮箱地址主机名和端口:发送者邮箱服务器的 stmp 服务器地址和端口号,这个百度可以搜索到,使用163邮箱和QQ邮箱必须开启“安全”身份验证:用户名为发送者邮箱地址,如果使用163邮箱和QQ邮箱,密码是授权码2.测试然后选择 测试 选项卡,我输入 QQ 邮箱地址,然后点击运行测试,可以看到测试成功进入QQ邮箱查看发送的邮件3.配置规则将之前创建的规则的连接器设置

2021-12-21 21:00:41 1325

原创 Kibana警报之索引连接器

创建索引连接器在 ”Stack Management“ 中选择 ”规则和连接器“,选择 ”创建连接器“选择 ”索引“输出 ”连接器名称“ 和 ”要写入的索引“,然后点击 ”保存“连接器列表出现我们创建的连接器创建规则在规则选项卡中点击创建规则按钮填写规则名称、标签、查询频率指执行 Elasticsearch 查询的频率,通知选择 ”仅在状态更改时“,规则类型选择 Stack Rules 中的 Elasticsearch 查询设置要查询的索引,以及查询的 DSL 语句。设置匹配

2021-12-20 15:50:25 1572 3

原创 Kibana和浏览器之间HTTPS连接

参考:https://www.elastic.co/guide/en/elasticsearch/reference/7.16/security-basic-setup-https.htmlhttps://xie.infoq.cn/article/17e7e5de164cabc48fe4b7b90官方网站给我们提供的例子是用 Kibana 的域名来创建一个 CSR,然后使用这个 CSR 到 CA 签署安全证书,这个 CA 可以是受信任的也可以是不受信任的,我们测试就使用不受信任的即可,其实 Elasti

2021-12-20 10:20:29 1807

原创 Filebeat和Elasticsearch之间HTTPS连接

参考:https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.htmlhttps://www.elastic.co/guide/en/beats/filebeat/current/securing-communication-elasticsearch.htmlhttps://www.elastic.co/guide/en/elasticsearch/reference/7.16/security-basic

2021-12-19 21:59:57 2500

空空如也

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

TA关注的人

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