2022 06-28

ArrayList源码解析

在平时Java,存储数据需要用到列表,而大多时候都能用到ArrayList,比如Mybatis查询数据列表,返回列表都是ArrayList,很多数据的存放也用到了ArrayList。 jdk版本:1.8 ArrayList是基于大小可变的数组实现,并允许添加null值,根据下标就能数据查询快。数组一旦初始化就确定好了大小,如果需要添加数据,就需要做数据的复制,这些操作比较耗时。 数组拷贝 ArrayList数组的扩容、添加和删除需要用到数组的拷贝,主要用到了以下两个方法: System.a

2022 06-28

ThreadLocal的简单理解

目录 一、背景 二、ThreadLocal解决的问题 三、如何创建一个ThreadLocal实例 四、ThreadLocal如何做到线程变量隔离 1、理解3个类 2、看下set方法是如何实现的 3、看看get方法如何实现 五、ThreadLocalMap中的hash冲突是如何处理的 1、ThreadLocal对象的hash值是怎样的 2、解决hash冲突 六、ThreadLocal内存泄漏 一、背景 最近有人问我ThreadLocal是如何做到在每个线程中的值都是隔离的,

2022 06-28

.NET混合开发解决方案24 WebView2对比CefSharp的超强优势

系列目录    【已更新最新开发文章,点击查看详细】 WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1WebView2简介 .NET混合开发解决方案2WebView2与Edge浏览器的区别 .NET混合开发解决方案3WebView2的进程模型 .NET混合开发解决方案4WebView2的线程模型 .NET混合开发解决方案5WebView2运行时与分发应用 .NET混合开发解决方案6&

2022 06-28

『现学现忘』Docker基础 — 40、发布镜像到Docker Hub

目录 1、准备工作 2、Docker登陆命令 3、Docker提交命令 4、总结: 5、补充:dockertag命令 1、准备工作 DockerHub地址:https://hub.docker.com/ (1)注册用户: 说明: SignIn:登陆,已有账户,点击这里进行登陆。 SignUp:注册,没有账户,点击这里进行注册。 GetStartedTodayforFree:立刻免费开始。 Alreadyhaveanaccount?SignIn:已经有帐号了?登入。 Sendm

2022 06-28

centos7 离线升级/在线升级操作系统内核

目录 一.前言 二.系统环境 三.系统内核下载网址 四.centos7离线升级系统内核 1.先查看系统环境 2.离线升级系统内核 五.在线升级系统内核 一.前言 CentOS(CommunityENTerpriseOperatingSystem)是Linux发行版之一,它是来自于RedHatEnterpriseLinux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的RedHatEnterpriseLin

2022 06-27

简单ELK配置实现生产级别的日志采集和查询实践

概述 生产问题 集群规模如何规划? 集群中节点角色如何规划? 集群之脑裂问题如何避免? 索引分片如何规划? 分片副本如何规划? 集群规划 准备条件 先估算当前系统的数据量和数据增长趋势情况。 现有服务器的配置如CPU、内存、磁盘类型和容量的了解。 建议设置 ElasticSearch推荐的最大JVM堆空间是30~32G,一般可以设置为30Gheap,大概能处理的数据量10T。单个索引数据量建议不超过5T,如果有100T数据量可以部署20个节点。 官方建议:节点分片最好按照JVM内存来

2022 06-27

抓包整理外篇fiddler————了解工具栏[一]

前言 抓包本篇还没写完,因为在工作中,发现有人用fiddler用的还不是很好,所以去介绍一下这个东西,fiddler大体分为10多个章节。 正文 首先了解一下fiddler的抓包原理哈。 可以看到当浏览器去访问baidu的时候,那么其实他访问了http://127.0.0.1:8888。 fiddler其实就是作为代理,浏览器将请求发送给fiddler,fiddler再去请求正在的服务,这种就是正向代理哈。 fiddler启动的时候会设置浏览器的代理,然后把,其实就是一个转发了。 这个和我们

2022 06-27

深入解析kubernetes controller-runtime

Overview controller-runtime是Kubernetes社区提供可供快速搭建一套实现了controller功能的工具,无需自行实现Controller的功能了;在Kubebuilder与OperatorSDK也是使用controller-runtime。本文将对controller-runtime的工作原理以及在不同场景下的使用方式进行简要的总结和介绍。 controller-runtimestructure controller-runtime主要组成是需要用户创建的Man

2022 06-27

MySQL十种锁,一篇文章带你全解析

MySQL有两个核心的知识点,索引和锁。前几篇文章已经详细讲解了MySQL索引实现机制,今天再一起学习一下MySQL的锁。 1为什么要加锁? 当多个事务并发操作同一批数据的时候,如果不加锁,就无法保证事务的隔离性,最后导致数据错乱。 加锁是为了保证并发操作下数据的正确性。 2锁的分类有哪些? 按锁的粒度可分为:表锁、页面锁、行锁、记录锁、间隙锁、临键锁 按锁的属性可分为:共享锁、排它锁 按加锁机制可分为:乐观锁、悲观锁 下面依次介绍一下这几种锁: 表锁: MyISAM和InnoDB引擎均支持表锁

2022 06-27

Java开发学习(六)----DI依赖注入之setter及构造器注入解析

一、DI依赖注入 首先来介绍下Spring中有哪些注入方式? 我们先来思考 向一个类中传递数据的方式有几种? 普通方法(set方法) 构造方法 依赖注入描述了在容器中建立bean与bean之间的依赖关系的过程,如果bean运行需要的是数字或字符串呢? 引用类型 简单类型(基本数据类型与String) Spring就是基于上面这些知识点,为我们提供了两种注入方式,分别是: setter注入 简单类型 引用类型 构造器注入 简单类型 引用类型 依赖注入的方式已经介绍完,接下来