11 2021 档案

摘要:Lambda表达式 //匿名内部类 Runnable r1 = new Runnable() { @Override public void run() { System.out.println("测试"); } }; r1.run(); System.out.println("********** 阅读全文
posted @ 2021-11-30 17:32 无涯子wyz 阅读(50) 评论(0) 推荐(0) 编辑
摘要:主要利用Java NIO中TCP编程实现服务端和客户端通信,服务端接受客户端消息广播给其它客户端,客户端接受消息使用多线程实现。 服务端 服务端通过一个选择器来实现一个线程处理多个通道,实现IO多路复用。服务端代码: public class Server { public static void 阅读全文
posted @ 2021-11-30 09:58 无涯子wyz 阅读(73) 评论(0) 推荐(0) 编辑
摘要:一、Java NIO简介 NIO 是一种同步非阻塞的 I/O 模型,在 Java 1.4 中引入了 NIO 框架,对应 java.nio 包,提供了 Channel 、Selector、Buffer 等抽象。 NIO 中的 N 可以理解为 Non-blocking,不单纯是 New。它支持面向缓冲的 阅读全文
posted @ 2021-11-28 17:18 无涯子wyz 阅读(127) 评论(0) 推荐(0) 编辑
摘要:网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net 包中提供了低层次的网络通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。 java.net 包中提供了两种常见的网络协议的支持: TCP - TCP 是传输控制协议的缩写,它保障 阅读全文
posted @ 2021-11-27 11:45 无涯子wyz 阅读(36) 评论(0) 推荐(0) 编辑
摘要:1. Java 序列化简介 序列化(serialize) - 序列化是将对象转换为字节流。 反序列化(deserialize) - 反序列化是将字节流转换为对象。 序列化用途 序列化可以将对象的字节序列持久化——保存在内存、文件、数据库中。 在网络上传送对象的字节序列。 RMI(远程方法调用) 注意 阅读全文
posted @ 2021-11-27 11:28 无涯子wyz 阅读(327) 评论(0) 推荐(0) 编辑
摘要:所谓的I/O,就是计算机内存与外部设备之间拷贝数据的过程。由于 CPU 访问内存的速度远远高于外部设备,因此 CPU 是先把外部设备的数据读到内存里,然后再进行处理。 UNIX I/O 模型 UNIX 系统下的 I/O 模型有 5 种: 同步阻塞 I/O 同步非阻塞 I/O I/O 多路复用 信号驱 阅读全文
posted @ 2021-11-27 11:00 无涯子wyz 阅读(264) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 23.内存泄漏 内存泄漏 可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一个对象是否还被引用。那么对于这种情况下,由于代码的实现不同就会出现很多种内存泄漏问题(让JVM误以为此对象还在引用中,无法回收,造成内存泄漏)。 > 是否还被使用?是 > 是否还被需要? 阅读全文
posted @ 2021-11-23 15:26 无涯子wyz 阅读(71) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 22.JVM运行时参数 22.1. JVM参数选项 官网地址:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html 22.1.1. 类型一:标准参数选项 Server模式和Clien 阅读全文
posted @ 2021-11-23 15:14 无涯子wyz 阅读(123) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 21.JVM监控及诊断工具-GUI篇 21.1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但它们存在下列局限: 1.无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间等(这对定位应用性能瓶颈至关重要)。 2 阅读全文
posted @ 2021-11-23 11:00 无涯子wyz 阅读(242) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 20. JVM监控及诊断工具-命令行篇 20.1. 概述 性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验至上的今天,解决好应用的性能问题能带来非常大的收益。 Java 作为最流行的编程语言之一,其应用性能诊断一直受到业界广泛关注。可能造成 Java 阅读全文
posted @ 2021-11-22 15:50 无涯子wyz 阅读(84) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 19. 概述篇 19.1. 大厂面试题 支付宝: 支付宝三面:JVM性能调优都做了什么? 小米: 有做过JVM内存优化吗? 从SQL、JVM、架构、数据库四个方面讲讲优化思路 蚂蚁金服: JVM的编译优化 jvm性能调优都做了什么 JVM诊断调优工具用过哪些? 二面:jv 阅读全文
posted @ 2021-11-22 09:44 无涯子wyz 阅读(128) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 18.再谈类的加载器 18.1. 概述 类加载器是JVM执行类加载机制的前提。 ClassLoader的作用: ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过各种方式将Class信息的二进 阅读全文
posted @ 2021-11-21 16:06 无涯子wyz 阅读(58) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 17.类的加载过程(类的生命周期)详解 17.1. 概述 在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。 按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包 阅读全文
posted @ 2021-11-21 08:44 无涯子wyz 阅读(260) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 字节码指令集 16.1. 概述 16.1.1. 执行模型 如果不考虑异常处理的话,那么Java虚拟机的解释器可以使用下面这个伪代码当做最基本的执行模型来理解 do{ 自动计算PC寄存器的值加1; 根据PC寄存器的指示位置,从字节码流中取出操作码; if(字节码存在操作数) 阅读全文
posted @ 2021-11-20 15:32 无涯子wyz 阅读(152) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 15.class文件结构 15.1. Class字节码文件结构 类型 名称 说明 长度 数量 魔数 u4 magic 魔数,识别Class文件格式 4个字节 1 版本号 u2 minor_version 副版本号(小版本) 2个字节 1 u2 major_version 阅读全文
posted @ 2021-11-18 16:08 无涯子wyz 阅读(218) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 14.垃圾回收器 14.1. GC分类与性能指标 14.1.1. 垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器 阅读全文
posted @ 2021-11-17 15:32 无涯子wyz 阅读(190) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 13. 垃圾回收相关概念 13.1. System.gc()的理解 在默认情况下,通过system.gc()或者Runtime.getRuntime().gc() 的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而Syst 阅读全文
posted @ 2021-11-15 15:36 无涯子wyz 阅读(131) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 12. 垃圾回收概述及算法 12.1. 垃圾回收概述 12.1.1. 什么是垃圾? 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 关于垃圾收集有三个经典问题: 哪些内存需要回收? 什么时候回收? 如何回 阅读全文
posted @ 2021-11-15 09:54 无涯子wyz 阅读(295) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 11. StringTable 11.1. String的基本特性 String:字符串,使用一对""引起来表示 String声明为final的,不可被继承 String实现了Serializable接口:表示字符串是支持序列化的。 String实现了Comparable 阅读全文
posted @ 2021-11-14 14:53 无涯子wyz 阅读(54) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 10. 执行引擎 10.1. 执行引擎概述 执行引擎属于JVM的下层,里面包括解释器、及时编译器、垃圾回收器 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存 阅读全文
posted @ 2021-11-13 16:37 无涯子wyz 阅读(93) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 9.直接内存 9.1. 直接内存概述 不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存区间。来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。通常,访问直接内存的 阅读全文
posted @ 2021-11-13 14:12 无涯子wyz 阅读(98) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 8.1 对象实例化 面试题 美团: 对象在JVM中是怎么存储的? 对象头信息里面有哪些东西? 蚂蚁金服: Java对象头有什么? 8.1.1 创建对象的方式 new:最常见的方式、Xxx的静态方法,XxxBuilder/XxxFactory的静态方法 Class的newI 阅读全文
posted @ 2021-11-13 11:13 无涯子wyz 阅读(75) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 7. 方法区 从线程共享与否的角度来看 7.1. 栈、堆、方法区的交互关系 7.2. 方法区的理解 官方文档:Chapter 2. The Structure of the Java Virtual Machine (oracle.com) 7.2.1. 方法区在哪里? 阅读全文
posted @ 2021-11-13 09:59 无涯子wyz 阅读(105) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 6.1. 堆(Heap)的核心概述 堆针对一个JVM进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的。 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确 阅读全文
posted @ 2021-11-12 11:16 无涯子wyz 阅读(250) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 5.1. 什么是本地方法? 简单地讲,一个Native Method是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C 阅读全文
posted @ 2021-11-11 09:22 无涯子wyz 阅读(55) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 4.1. 虚拟机栈概述 4.1.1. 虚拟机栈出现的背景 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。 4.1.2. 初步 阅读全文
posted @ 2021-11-10 20:22 无涯子wyz 阅读(53) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 3.1. 运行时数据区 3.1.1. 概述 本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段 当我们通过前面的:类的加载-> 验证 → 准备 → 解析 → 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时 阅读全文
posted @ 2021-11-09 14:47 无涯子wyz 阅读(52) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 2.1. 内存结构概述 Class文件 类加载子系统 运行时数据区 方法区 堆 程序计数器 虚拟机栈 本地方法栈 执行引擎 本地方法接口 本地方法库 如果自己想手写一个Java虚拟机的话,主要考虑哪些结构呢? 类加载器 执行引擎 2.2. 类加载器与类的加载过程 类加载器 阅读全文
posted @ 2021-11-09 10:50 无涯子wyz 阅读(29) 评论(0) 推荐(0) 编辑
摘要:参考资料:尚硅谷JVM教程 JVM与Java体系结构 1.1前言 作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题? 运行着的线上系统突然卡死,系统无法访问,甚至直接OOM 想解决线上JVM GC问题,但却无从下手 新项目上线,对各种JVM参数设置一脸茫然,直接默认吧然后就JJ了 每次面试 阅读全文
posted @ 2021-11-08 14:35 无涯子wyz 阅读(64) 评论(0) 推荐(0) 编辑
摘要:解释器模式 四则运算问题 通过解释器模式来实现四则运算,如计算a+b-c的值,具体要求1.先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复 2.在分别输入a ,b, c, d, e 的值 3) 最后求出结果: 传统方案解决四则运算问题分析 编写一个方法,接收表达式的形式,然后 阅读全文
posted @ 2021-11-06 15:54 无涯子wyz 阅读(37) 评论(0) 推荐(0) 编辑
摘要:寻找一个链表倒数第k个节点 剑指 Offer 22. 链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个 阅读全文
posted @ 2021-11-05 22:15 无涯子wyz 阅读(36) 评论(0) 推荐(0) 编辑
摘要:迭代器模式 看一个具体的需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系 组成,一个学校有多个学院,一个学院有多个系。 传统的方式的问题分析 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 。实际上我们的要求是 :在一个页面中展示出学校的 阅读全文
posted @ 2021-11-05 17:00 无涯子wyz 阅读(38) 评论(0) 推荐(0) 编辑
摘要:代理模式 简单介绍 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象。代理模式有不同的形式, 主要有三种:静态代 阅读全文
posted @ 2021-11-04 17:27 无涯子wyz 阅读(31) 评论(0) 推荐(0) 编辑
摘要:装饰者模式 星巴克咖啡订单项目 星巴克咖啡订单项目(咖啡馆): 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式 咖啡)、Decaf(无因咖啡) 调料:Milk、Soy(豆浆)、Chocolate 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方 阅读全文
posted @ 2021-11-03 19:19 无涯子wyz 阅读(81) 评论(0) 推荐(0) 编辑
摘要:链表遍历 单链表中的每个结点不仅包含值,还包含链接到下一个结点的地址。通过这种方式,单链表将所有结点按顺序组织起来。所以我们对链表的遍历可以通过两种方式:迭代或者递归 我们约定链表结构如下: public class ListNode { int val; ListNode next; ListNo 阅读全文
posted @ 2021-11-02 22:35 无涯子wyz 阅读(69) 评论(0) 推荐(0) 编辑
摘要:原型模式 现在有一只羊tom,姓名为: tom, 年龄为:1,颜色为:白色,请编写程序创建和tom羊属性完全相同的10只羊。 传统方式,通过new一个对象,然后通过get方法获取属性,创建新对象。 优点是比较好理解,简单易操作。在创建新的对象时,总是需要重新获取原始对象的属性,如果创建的对象比较复杂 阅读全文
posted @ 2021-11-02 21:56 无涯子wyz 阅读(34) 评论(0) 推荐(0) 编辑
摘要:UML类图 UML基本介绍 UML——Unified modeling language UML (统一建模语言),是一种用于软件系统 分析和设计的语言工具,它用于帮助软 件开发人员进行思考和记录思路的结果 UML本身是一套符号的规定,就像数学 符号和化学符号一样,这些符号用于描 述软件模型中的各个 阅读全文
posted @ 2021-11-01 19:11 无涯子wyz 阅读(69) 评论(2) 推荐(0) 编辑
摘要:里氏替换原则 继承包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契约,但是如果子类对这些已经实现的方法任意修改,就会对整个继承体系造成破坏。继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵入性,程序的可移植性降低 阅读全文
posted @ 2021-11-01 10:06 无涯子wyz 阅读(38) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示