- 博客(21)
- 收藏
- 关注
原创 JVM 类加载机制
类加载机制类是在运行期间第一次使用时动态加载的,而不是一次性加载所有类。因为如果一次性加载,那么会占用很多的内存。类的生命周期 包括以下 7 个阶段:加载(Loading)验证(Verification)准备(Preparation)解析(Resolution)初始化(Initialization)使用(Using)卸载(Unloading)类加载过程包含了加载、验证、准备、解析和初始化这 5 个阶段。1. 加载加载是类加载的一个阶段,注意不要混淆。加载过程完成以下三件
2021-08-04 15:36:52
161
原创 JVM 内存分配与回收策略
内存分配与回收策略Minor GC 和 Full GCMinor GC:回收新生代,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行,执行的速度一般也会比较快。Full GC:回收老年代和新生代,老年代对象其存活时间长,因此 Full GC 很少执行,执行速度会比 Minor GC 慢很多。内存分配策略1. 对象优先在 Eden 分配大多数情况下,对象在新生代 Eden 上分配,当 Eden 空间不够时,发起 Minor GC。2. 大对象直接进入老年代大对象是指需
2021-08-04 15:27:28
194
原创 jvm 垃圾收集
垃圾收集垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。判断一个对象是否可被回收1. 引用计数算法为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。在两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。正是因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法。publ
2021-08-04 14:18:18
196
原创 jvm 运行时数据区域
运行时数据区域 程序计数器记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。Java 虚拟机栈每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小,在 JDK 1.4 中默认为 256K,而在 JDK 1.5+ 默认为 1Mjava -Xss2M HackThe
2021-08-04 11:55:25
114
原创 计算机网络 - 网络层
计算机网络 - 网络层计算机网络 - 网络层概述IP 数据报格式IP 地址编址方式1. 分类2. 子网划分3. 无分类地址解析协议 ARP网际控制报文协议 ICMP1. Ping2. Traceroute虚拟专用网 VPN网络地址转换 NAT路由器的结构路由器分组转发流程路由选择协议1. 内部网关协议 RIP2. 内部网关协议 OSPF3. 外部网关协议 BGP概述因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只
2021-07-26 12:00:39
244
原创 计算机网络 - 链路层
计算机网络 - 链路层计算机网络 - 链路层基本问题1. 封装成帧2. 透明传输3. 差错检测信道分类1. 广播信道2. 点对点信道信道复用技术1. 频分复用2. 时分复用3. 统计时分复用4. 波分复用5. 码分复用CSMA/CD 协议PPP 协议MAC 地址局域网以太网交换机虚拟局域网基本问题1. 封装成帧将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。 2. 透明传输透明表示一个实际存在的事物看起来好像
2021-07-26 11:58:30
282
原创 计算机网络 - 物理层
计算机网络 - 概述计算机网络 - 概述网络的网络ISP主机之间的通信方式电路交换与分组交换1. 电路交换2. 分组交换时延1. 排队时延2. 处理时延3. 传输时延4. 传播时延计算机网络体系结构1. 五层协议2. OSI3. TCP/IP4. 数据在各层之间的传递过程网络的网络网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。 IS
2021-07-26 11:53:12
87
原创 ArrayList 源码分析
ArrayList 源码分析源码分析基于 JDK 1.8。在 IDEA 中 double shift 调出 Search EveryWhere,查找源码文件,找到之后就可以阅读源码。1、概述因为 ArrayList 是基于数组实现的,所以支持快速随机访问。RandomAccess 接口标识着该类支持快速随机访问。public class ArrayList<E> extends AbstractList<E> implements List<E>
2021-07-26 10:54:34
76
原创 Java 容器
Java 容器Java 容器一、概览CollectionMap二、容器中的设计模式迭代器模式适配器模式一、概述容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。Collection 1、setTreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet
2021-07-26 10:45:23
162
原创 SpringBoot高级使用
自动配置的实现原理【精通】SpringBoot通过Spring提供的Condition条件,预制了常用框架的核心类。SpringBoot如何自定义条件Condition?【精通】实现Condition接口在matches方法中,返回条件是否成立使用@Conditional注解,在需要判断条件的方法是使用@Bean@Conditional(ClassCondition.class)public User user(){ return new User();}Spri
2020-11-26 18:36:08
518
原创 SpringBoot快速之门
什么是SpringBoot?定义:是一个用于快速搭建或开发Spring项目的脚手架(工具)功能自动配置:依据项目依赖的jar或者配置属性,在项目启动时,自动实例化相关的类自动依赖:自动传递依赖spring所用到的jar,无需自己手动导入,主要指pom文件中的jar快速启动:springboot内置tomcat,可直接jar运行统一监控:统一了所有springboot项目的监控api使用:(如何搭建springboot工程?)导包设置父工程<parent>
2020-11-26 18:35:46
81
原创 RabbitMQ高级使用
如何保证Rabbitmq不丢失消息的6大步【精通】使用confirm来保障发送消息不丢使用return来保障没有找到队列的消息不丢失使用ack来保障消息的消费不丢失exchanger、queue、消息都要设置持久化要搭建高可用的服务器集群,保障消息有备份使用死信队列来处理丢弃的消息在如何使用Confirm发送消息?开启confirmpublisher-confirms=“true”<!-- 定义rabbitmq connectionFactory -->
2020-11-26 18:35:18
425
原创 RabbitMQ快速使用详细
什么是MQ?【熟悉】定义:MessageQueue,消息队列应用场景:在微服务之间进行消息通信优势:应用解耦:提高系统的容错性和可扩展性异步提速:提高系统的吞吐量削峰填谷:提高系统的高可用劣势:系统复杂度提高相关产品什么是RabbitMQ?【精通】定义:是一个实现了AMQP协议的消息中间件产品(AMQP是一个类似于http,用于网络传输数据格式组织的协议)组成:producer(生产者):发送消息channel(管道):用于同时读写消
2020-11-26 18:34:46
338
原创 ES中文分词器-ik分词器安装
IK分词器安装1、环境准备Elasticsearch 要使用 ik,就要先构建 ik 的 jar包,这里要用到 maven 包管理工具,而 maven 需要java 环境,而 Elasticsearch 内置了jdk, 所以可以将JAVA_HOME设置为Elasticsearch 内置的jdk1)设置JAVA_HOMEvim /etc/profile# 在profile文件末尾添加#java environmentexport JAVA_HOME=/opt/elasticsearch-7.4.
2020-11-26 18:34:02
2279
原创 Elasticsearch Linux安装详细步骤
1 ElasticSearch 安装1.1 ElasticSearch安装1、上传ElasticSearch安装包alt+p # 打开sftp窗口# 上传es安装包put e:/software/elasticsearch-7.4.0-linux-x86_64.tar.gz2、执行解压操作 ,如下图 # 将elasticsearch-7.4.0-linux-x86_64.tar.gz解压到opt文件夹下. -C 大写 tar -zxvf elasticsearch-7.4.0-linux
2020-11-26 18:33:31
3462
原创 Zookeeper安装
1.1 下载安装1、环境准备ZooKeeper服务器是用Java创建的,它运行在JVM之上。需要安装JDK 7或更高版本。2、上传将下载的ZooKeeper放到/opt/ZooKeeper目录下#上传zookeeper alt+pput f:/setup/apache-zookeeper-3.5.6-bin.tar.gz#打开 opt目录cd /opt#创建zooKeeper目录mkdir zooKeeper#将zookeeper安装包移动到 /opt/zooKeepermv a
2020-11-26 18:32:01
158
原创 docker 私有仓库
Docker 私有仓库一、私有仓库搭建# 1、拉取私有仓库镜像 docker pull registry# 2、启动私有仓库容器 docker run -id --name=registry -p 5000:5000 registry# 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功# 4、修改daemon.json vim /etc/docker/daemon.json
2020-11-11 14:55:39
192
原创 docker-compose
Docker Compose一、安装Docker Compose# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docke
2020-11-11 14:55:01
72
原创 dockerfile
Dockerfile关键字作用备注FROM指定父镜像指定dockerfile基于那个image构建MAINTAINER作者信息用来标明这个dockerfile谁写的LABEL标签用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看RUN执行命令执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,“p
2020-11-11 14:54:21
70
原创 docker应用部署
Docker 应用部署一、部署MySQL搜索mysql镜像docker search mysql拉取mysql镜像docker pull mysql:5.6创建容器,设置端口映射、目录映射# 在/root目录下创建mysql目录用于存储mysql数据信息mkdir ~/mysqlcd ~/mysqldocker run -id \-p 3307:3306 \--name=c_mysql \-v $PWD/conf:/etc/mysql/conf.d \-v $P
2020-11-11 14:53:51
81
原创 安装docker
一、安装Docker# 1、yum 包更新到最新 yum update# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-mapper-persistent-data lvm2# 3、 设置yum源yum-config-manager --add-repo https://download.docker.com/linux/centos/docke
2020-11-11 14:50:20
71
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人