- 博客(11)
- 收藏
- 关注
原创 zookeeper的简单学习
1. 基本概念 官方文档:https://zookeeper.apache.org/doc/r3.6.3/zookeeperStarted.html 官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。 上面的解释有点抽象,简单来说zookeeper=文件系统+监听通知机制。 Zookeeper从设计模式角度来理解:是一个基于观察
2021-04-23 16:51:41 167
原创 JUC-并发基础
1 并发基础概念 1.1 并发和并行 他们都可以表示你两个或者多个任务一起执行,但是偏重点不同,并发偏重于多个任务交替执行,并行是真正意义上的同时执行。 并发和并行都能表示两个或多个任务一起执行,但是并发偏重于任务交替执行,多个任务之间很可能是串行的,而并行是真正意义上的"同时执行"。 并发三要素:原子性、可见性、有序性 1.2 java的内存模型(JMM)及基础 java内存模型(Java Memory Model,JMM)是java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作系统
2021-03-28 12:19:11 174
原创 JUC-线程基础
1. 概念 1.1 进程和线程 进程是一个系统运行程序的基本单位,是资源申请、调度和独立运行的单位。 线程是进程中的一个单一的连续控制流程。一个进程可以拥有多个线程。 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。 线程优先级单核计算机只有一个CPU,各个线程轮流获得CPU的使用权,才能执行任务: 优先级较高的线程有更多获得CPU的机会,反之亦然。 优先级用整数表示,取值
2021-03-28 12:18:11 143
原创 JVM-对象和垃圾回收算法
1. 对象 1.1 对象的创建方式 创建过程 一.虚拟机遇到一条new指令时, 首先将去检查这个指令的参数是否能在常量池中定位到一 个类的符号引用, 并且检查这个符号引用代表的类是否已被加载、 解析和初始化过。 如果没有, 那必须先执行相应的类加载过程. 二.在类加载检查通过后, 接下来虚拟机将为新生对象分配内存。 三.内存分配完成后, 虚拟机需要将分配到的内存空间都初始化为零值( 不包括对象头). 四.接下来, 虚拟机要对对象进行必要的设置 ,也就是设置对象头 五.在上面工作都完成之后, 从虚拟机的视
2021-03-21 17:18:29 127
原创 jvm-运行时数据区(二)
接上篇结构图如下 1. 堆区 1.1 概述 其大小通过 - Xms(最小值)和 -Xmx(最大值)参数设置(例如:java -Xms=1M -Xmx=2M HackTheJava),-Xms 为 JVM 启动时申请的最小内存,默认为操作系统物理内存的 1/64 但小于 1G,-Xmx 为 JVM 可申请的最大内存,默认为物理内存的 1/4 但小于 1G,默认当空余堆内存小于 40% 时,JVM 会增大 Heap 到 -Xmx 指定的大小,可通过 - XX:MinHeapFreeRation 来指定这个比
2021-03-20 21:26:46 246
原创 jvm-运行时数据区(一)
1. java运行区域 每个jvm只有一个Runtime实例.即为运行时环境,Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 整个类加载及运行时区域划分如下。 具体介绍: .java文件被编译后形成.class文件保存在本地硬盘上 被类加载器加载到到jvm中被称为DNA元数据模板然后放在方法区 再调用这个模板的构造方法创建对象存放在堆中,由这些具体的对象通过getclass可以获得由那个的创建 class文件–>JVM–>元数据模板,此过程由类
2021-03-20 16:53:18 108
原创 jvm-类的加载过程
马德兰的博客 1. 概述 从类的生命周期而言,一个类包括如下阶段: 加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序进行,而解析阶段则不一定,它在某些情况下可能在初始化阶段后在开始,因为java支持运行时绑定。 2. 类的加载过程 2.1 加载 1.通过一个类的全限定名获取此类的二进制字节流(从内存中读出) 2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 3.在内存中生成一个代表这个类的java.lang.class对象,作为方法区这个类的各
2021-03-19 17:43:44 190
原创 java基础-Arraylist
1. 综述 一个有序(元素存入集合的顺序和取出的顺序一致)容器,元素可以重复,可以插入多个null元素,元素都有索引。 常用的实现类有 ArrayList、LinkedList 和 Vector。 ArrayList:底层数组,线程不安全,支持随机查询。 Vector:底层数组,线程安全,速度慢,由arraylist代替。 LinkedList:底层为双向链表,适合增删 它定义了一些通用的方法: //添加元素 boolean add(E e); //添加元素到指定索引后 void add(int ind
2021-03-07 11:46:08 161
原创 java基础-java8日期api
原文连接 1.LocalDate 和 LocalTime LocalDate、 LocalTime、 LocalDateTime 类的实例是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息 . 你可以通过静态工厂方法of创建一个LocalDate实例。 LocalDate实例提供了多种方法来 读取常用的值,比如年份、月份、星期几等 now() 静态方法, 根据当前时间创建对象 LocalDa
2021-03-05 22:09:20 166
原创 java基础-注解
个人博客主页:http://www.madlandduke.cn/#/article 1. 注解的定义 注解通过 @interface 关键字进行定义。 public @interface TestAnnotation { } 它的形式跟接口很类似,不过前面多了一个 @ 符号。上面的代码就创建了一个名字为 TestAnnotaion 的注解。你可以简单理解为创建了一张名字为 TestAnnotation 的标签。 2. 注解的应用 创建一个类 Test,然后在类定义的地方加上 @TestAnnotatio
2021-02-21 22:49:21 208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人