随笔分类 - 后端
摘要:简介 Jmap (Memory Map for Java)命令⽤于⽣成堆转储快照。如果不使⽤ jmap 命令,要想获取 Java 堆转储快照,还有⼀些⽐较“暴⼒”的⼿段: -XX: +HeapDumpOnOutOfMemoryError参数,可以让虚拟机在 OOM 异常出现之后⾃动⽣成 dump ⽂
阅读全文
摘要:图解 从reference出发,指向堆中的1个对象,该对象又指向另一个对象,这就是引用链 没有被reference指向的,或没有被其他对象指向的会被标记为待回收,标记达到指定次数时,则触发垃圾回收机制 可达性分析算法的概念(⼜叫跟搜索法) 根搜索算法是从离散数学中的图论引⼊的,程序把所有的引⽤关系看
阅读全文
摘要:垃圾回收机制 Java语⾔中⼀个显著的特点就是引⼊了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃⽽解。由于有个垃圾回收机制,Java中的对象不再有“作⽤域”的概念,只有对象的引⽤才有“作⽤域”。 垃圾回收可以有效的防⽌内存泄露,有效的使⽤空闲的内存 引用计数器 堆中每个对象实例都有⼀个引⽤
阅读全文
摘要:java对象内存布局 对象头⽤于存储对象的元数据信息: Mark Word 部分数据的⻓度在32位和64位虚拟机(未开启压缩指针)中分别为32bit和64bit,存储对象⾃身的运⾏时数据如哈希值等。Mark Word⼀般被设计为⾮固定的数据结构,以便存储更多的数据信息和复⽤⾃⼰的存储空间。 类型指针
阅读全文
摘要:图示 虚拟机遇到⼀条new指令时,⾸先检查这个对应的类能否在常量池中定位到⼀个类的符号引⽤ 判断这个类是否已被加载、解析和初始化 为这个新⽣对象在Java堆中分配内存空间,其中Java堆分配内存空间的⽅式主要有以下两种 指针碰撞 分配内存空间包括开辟⼀块内存和移动指针两个步骤 ⾮原⼦步骤可能出现并发
阅读全文
摘要:本地方法栈 简介 ⽤于作⽤域本地⽅法执⾏的⼀块Java内存区域 本地方法就是native方法 import java.util.concurrent.atomic.AtomicInteger; public class A { public native static void c(); publi
阅读全文
摘要:简介 ⽤于作⽤于⽅法执⾏的⼀块Java内存区域 作用 每个⽅法在执⾏的同时都会创建⼀个栈帧(Stack Framel)⽤于存储局部变量表、操作数栈、动态链接、⽅法出⼝等信息。 每⼀个⽅法从调⽤直⾄执⾏完成的过程,就对应着⼀个栈帧在虚拟机栈中⼊栈到出栈的过程 代码案例 import java.util
阅读全文
摘要:简介 线程共享数据区:⽅法区、堆 线程隔离数据区:虚拟机栈、本地⽅法栈、堆、程序计数器 图解 程序计算器 程序计数器是⼀块较⼩的内存空间,它可以看作是当前线程所执⾏的字节码的⾏号指示器 线程是⼀个独⽴的执⾏单元,是由CPU控制执⾏的 字节码解释器⼯作时就是通过改变这个计数器的值来选取下⼀条需要执⾏的
阅读全文
摘要:依赖关系(Dependence) 只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编绎都通过不了 1) 类中用到了对方 2) 如果是类的成员属性 3) 如果是方法的返回类型 4) 是方法接收的参数类型 5) 方法中使用到 代码案例 public class PersonDao{}
阅读全文
摘要:简介 1) UML——Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 2) UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关
阅读全文
摘要:发送post请求,并使用Authorization Basic + application/json @GetMapping("/test4") @ResponseBody public String test4() throws IOException { String url ="http://
阅读全文
摘要:案例1 public class TestLambda1 { //原来的匿名内部类 @Test public void test1(){ Comparator<Integer> com = new Comparator<Integer>(){ @Override public int compare
阅读全文
摘要:旧的写法:没有break,则匹配的case后⾯会⼀直输出, value类型 可以是 byte、short、int 、char、String 类型 # 案例1 public void testOldSwitch1(){ int i = 1; switch(i){ case 0: System.out.
阅读全文
摘要:旧的写法:在java代码⾥⾯编写多⾏源码带有特殊字符则需要转义,如HTML,sql等 # 案例1 public class Main{ public static void main(String [] ags){ String html = "<html>\n" + " <body>\n" + "
阅读全文
摘要:OpenJDK和OracleJDK版本区别 OpenJDK是JDK的开放源码版本,以GPL协议的形式发布(General Public License) Oracle JDK采⽤了商业实现 LTS Long Term Support ⻓期⽀持的版本,如JDK8、JDK11都是属于LTS JDK9 和
阅读全文
摘要:编写Main.java public class Main{ public static void main(String [] ags){ String text = "xdclass.net "; //String 类新增的repeat(int num) 方法,用于字符串循环输出 System.
阅读全文
摘要:HTTP2协议的强制要求https,如果⽬标URI是HTTP的,则⽆法使⽤HTTP 2协议 测试 -> https://http2.akamai.com/demo 判断⽹站是否是http2协议 浏览器 -> network⾯板 -> 右键名称 -> 选择protocol 浏览器 -> network
阅读全文
摘要:发送post请求,json格式 public class Main { public static void main(String[] args) throws Exception { testPost(); } private static final String targetUrl1 = "
阅读全文
摘要:JDK11新增HttpClient,⽀持 HTT/1.1, HTTP/2 常⽤类和接⼝讲解 HttpClient.Builder HttpClient 构建⼯具类 HttpRequest.Builder HttpRequest 构建⼯具类 HttpRequest.BodyPublisher 将jav
阅读全文
摘要:Java是⼀种强类型, 许多流⾏的编程语⾔都已经⽀持局部变量类型推断,如js,Python,C++等 JDK10 可以使⽤var作为局部变量类型推断标识符 Local-Variable Type Inference(局部变量类型推断),顾名思义只能⽤做为局部变量 仅适⽤于局部变量,如 增强for循环
阅读全文
浙公网安备 33010602011771号