G1收集器基本介绍:https://blog.51cto.com/u_15450128/4782262概述ZGC是一款JDK 11中新加入的具有实验性质的低延迟垃圾收集器,ZGC可以说源自于是Azul System公司开发的 C4(Concurrent Continuously Compacting Collector) 收集器。ZGC目标主要与以下四点:1. 支持TB量级的堆。我们生产
概述G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC 停顿时间要求的同时,还具备高吞吐量性能特征. 停顿时间要求的同时,还具备高吞吐量性能特征. G1将Java堆划分为多个大小相等的独立区域(Region),JVM最多可以有2048个Region。 一般Region大小等于堆大小除以2048,比如堆大小为4096M,则
大型电商系统后端现在一般都是拆分为多个子系统部署的,比如,商品系统,库存系统,订单系统,促销系统,会员系 统等等。 我们这里以比较核心的订单系统为例 对于8G内存,我们一般是分配4G内存给JVM,正常的JVM参数配置如下: ‐Xms3072M ‐Xmx3072M ‐Xss1M ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M ‐XX:Surviv
一、对象创建的主要流程1. 类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 new指令对应到语言层面上讲是,new关键词、对象克隆、对象序列化等。2. 分配内存 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类
项目中一定有将文件上传到oss等云服务器的操作,有时文件过大导致单线程上传速度很慢,这时可以使用oss提供的分片上传,结合多线程提升上传速度。话不多说直接上代码:package com.fobcentury.syclass.backstage.utils;/** * @Author : suitianshuang * @Date : 2021/11/30 23:51 */@Componentpu
一转眼2021年的余额也已经不足了,突然发现时间过得很快,我们时时刻刻警惕着的新冠疫情都已经发生了两年了。这个话题非常好,回忆一下过去,才能更好的走稳未来的每一步,就好像我们学习历史更多的是在将来以史为鉴。希望我的经验能帮助到读完这篇文章的你。 关于程序员的第一家公司的选择:针对这个问题我是非常有发言权的。我的建议是能去大厂就去大厂,如果暂时能力达不到大厂的要求,可以去小
注解的概述注解是jdk5.0新增加的支持,注解是代码中的特殊标记。 JPA(java持久化框架)就是基于注解的,注解是一种趋势,因为极大程度的简化了程序员编写代码的行数。框架 = 注解 + 反射 + 设计模式。注解代替的是原本的xml文件。SpringBoot之所以简单就是因为使用注解代替了繁琐的xml配置。 如何自定义注解(Annotation)注解声明为@interface。内部定义成员,通
IO流IO:数据的写入写出,(数据持久化)针对操作数据的特点不同,采用不同的流。File类的使用File类的一个对象,代表一个文件或者一个文件目录。
InputStreamReader、OutputStreamReader转换流的使用转换流:属于字符流InputStreamReader :将一个字节的输入转化为字符的输入流OutputStreamReader : 将一个字符的输入转化为字节的输入流作用:提供字节流和字节流主之间的转换编码:字节、字节数组转化为字符数组字符串 解码:字符数组、字符串转化为字节、字节数组public classIn
jdk 1.8以后新的常用日期时间API//获取当前日期(年月日)、时间(时分秒)、日期➕时间(年月日时分秒)LocalDate localDate = LocalDate.now();LocalTime localTime = LocalTime.now();//相较于另外两个用的频率要高一些。LocalDateTime localDateTime = LocalDateTime.now();
自然排序像String 这样的包装类实现了Comparable接口,重写了compareTo()方法给出了比较两个对象大小的方式。可以直接调用sort方法进行排序。如果想排序自定义的类就需要自己重写compareTo()方法。自定义排序时候的规则是小的返回负数,大的返回正数,相等的返回0。String[] arr = new String[]{"AA","BB","DD","CC","ZZ","
String 代表不可变的字符序列(笔记) String 类型 常量池, 唯一一个可以直接String t1 = “abc” 而不需要new 的类,自面量的概念,常量池,String a1= “abc” 和String a2 = “abc” a1 和 a2 是使用同一块内存的,都是abc。当对现有的字符串进行重新操作的时候,需要新指定新的内存区域进行赋值,不能在原有的基础上进行赋值。String
System类System类的构造器是私有的,所以不可以实例化,System类的方法都是static的所以直接使用类型.方法就可以调用了。System.gc() 请求系统进行垃圾回收,但是是否会回收是取决于系统中垃圾回收算法的设计以及系统执行的情况,并不是一定就会进行垃圾回收。此外系统类还可以获得程序运行的系统的相关信息。 Math类基本上也都是静态的方法,其方法的参数和返回值类型一般基本都是d
ArrayList、LinkedList、Vector三者比较Collection接口下的List接口 list集合的特点:存储有序、可重复的数据,自动扩容,“动态数组”ArrayList:是List接口的一个主要实现类,他是一个线程不安全的集合,所以效率较高。 底层仍然使用的是Object[]数组存储。jdk1.7中 ArrayList 在创建对象的时候就创建了一个数组,默认大小为10,每次默
Iteratoriterator对象成为迭代器——设计模式的一种,主要用于遍历Collection集合中的元素。迭代器被定义为提供一种访问一个容器(container)对象中各个元素,而不需要暴露该对象的内部细节。迭代器模式,就是为容器而生。使用iterator遍历集合//省略往集合中放入元素...Iterator iterator = coll.iterator();//不推荐使用for(in
asList()的使用String[] arr = {"abc","ccc","ddd"}; /*把数组变成list集合的好处? * 可以使用集合的思想和方法来操作数组中的元素 * 注意:将数组变成集合,不可以使用集合的增删方法,因为数组的长度是固定的 * 如果增删了,那么会发生不支持操作异常 */ List<String> list
Map集合的遍历操作 HashMap的遍历Map map = new HashMap();map.put(1,"suitianshuang");map.put(2,"tianshuangsui");map.put(3,"shuangtiansui");//遍历所有的key集:使用keySet(),(map集合的key使用的是Set进行存储的)Set set = map.keySet();iter
Set接口下的HashSet、LinkedHashSet、TreeSet分析 Set接口框架Set接口:存储无序、不可重复的数据 HashSet:主要实现类,线程不安全,可以存储null值。 LinkedHashSet:是HashSet的子类,遍历内部的数据时,可以按照添加的顺序遍历。 TreeSet:可以按照添加的对象指定属性,进行排序。 如何理解Set的无序和不可重复无序性 不等于随机性,每
Map接口下继承树特点分析,结构分析 Map:双列数据,存储key-value数据 --类似于函数 y = f(x)HashMap :Map的主要实现类,线程不安全,效率高,可以存储null的key和value LinkHashMap:在原有的hashMap的基础上,添加了一对指针,指向前一个和后一个数据。 对于频繁的遍历操作,LinkedHashMap的的效率要高于HashMap.TreeMa
Collections:操作Collection和Map的工具类Collections和Collection的区别Collections是一个工具类,用来操作Collection和Map。Collections类中的常用方法。 reverse(List): 反转List中元素的顺序 shuffle(List): 将集合中的顺序随机排列(每次都是随机的) sort(list): 按照自然排序来进行
泛型(Generic)jdk1.5新增特性在jdk1.5之前没有泛型,会导致集合中加入的数据类型不统一,并且不会出现编译错误,但没有问题恰恰就是最大的问题。List<Stirng> list = new ArrayList<String>();所以引入了泛型,(泛型的类型是一个类,不能是基本数据类型,使用包装类)指定了某一种类型就不能加入另外一种类型,在编译的时候就会进行
对于文本文件使用字符流进行处理,对于非文本文件使用字节流进行处理。
为什么需要集合面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对多个对象进行存储,因为数组有一些弊端,所以引入了集合。集合和数组都是对多个数据进行存储的结构,简称Java容器。数组的特点,一旦初始化之后,其长度就固定了;声明数组的时候,需要指定数组的类型,其元素的类型也就确定了。比如:String [] arr; int [] arr; Object [] arr;3.
对象流作用:用于存储和读取基本数据类型对象或者对象的处理流,它的强大之处是将java中的对象写入到数据源中,也能发数据源中的数据还原回来。序列化与反序列化。对象的序列化机制:序列化:允许将内存中的Java对象转化为平台无关的二进制流,从而允许把这种二级制流 持久的保存在磁盘上,或者通过网络将这种二进制流传输到另一个网络节点。反序列化:当其他程序获取这种二级制流,就可以恢复成原来的Java对象。p
Java基础Socket的使用方法具体代码 基于TCP协议的Socket使用,模拟客户端发送数据,服务端接受数据@Test public void client() throws IOException { //创建socket对象,指明服务器的ip和端口号 InetAddress inetAddress = InetAddress.getByName("127
RandomAccessFileRandomAccessFile直接继承了Object类,实现了DataInput 和DataOutput接口它既可以作为输入流又可以作为一个输出流package com.ntt.sts;import org.junit.Test;import java.io.File;import java.io.FileNotFoundException;import jav
JAVA反射Java Reflection反射是被视为动态语言的关键,反射机制允许程序在执行期间借助Reflaction API取得任何类的内部信息,并且能直接操作任意对象的内部属性和方法。动态语言:是一类在运行时可以改变其结构的语言,例如新的函数、对象、甚至代码可以被引进,已有函数可以被删除或是其他结构上的改变,在运行时代码可以根据某些条件改变自身结构。除了静态语言。Object C php
Java8新特性——Lembda表达式-> 和方法引用、构造器引用、数组引用 :: 的写法说明 一、Lambda表达式的使用举例:(o1,02) -> Integer.compare(o1,o2);格式:Lambda操作符或箭头操作符 左边:lambda形参列表(其实就是接口中的抽象方法的形参列表) 右边:Lambda体(其实就是重写的抽象方法的方法体)Lambda表达式的使用(分
反射的应用:动态代理 动态代理,在编译时候不指明代理类,而在运行时确定。 静态代理:代理类和被代理类都是在编译期间就确定下来,这样不利于程序的拓展,同时每一个地阿里类只能为一个接口服务,这样一来程序开发必然会产生过多的代理,最好可以通过一个代理类完成全部的代理功能。 动态代理和静态代理相比的优点:抽象角色中(接口)声明的所有方法都被转移到调用处理器一个集中的方法中处理,这样我们就可以更加灵活和统
啊啊啊
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号