
Java
文章平均质量分 85
小谷围最靓的仔
机会是留给有准备的人的!
展开
-
【Java基础】代理模式
1. 静态代理模式1.1 故事背景有一天,小明要结婚了,他有两种方式来完成结婚这件事。第一种就是小明亲力亲为,包揽婚礼所有事情。第二种就是找婚庆公司来帮忙筹办婚礼,小明只需要人来就行。这里的婚庆公司就是代理,婚礼的筹办过程就是代理模式的应用。在这个例子里,一共有3个角色:小明:真实角色,因为是小明要结婚。婚庆公司:代理角色,帮小明处理婚礼事宜。结婚(接口):这个是小明和婚庆公司都要做的事情,只是两者具体做的内容不一样。1.2 代码示例用代码来实现上述的静态代理模式的思想,如下:原创 2021-05-05 19:19:44 · 181 阅读 · 0 评论 -
【Java基础】基本数据类型、封装类、装箱、拆箱
1. 基本数据类型及其封装类基本类型大小(字节)默认值封装类byte1(byte)0Byteshort2(short)0Shortint40Integerlong80LLongfloat40.0fFloatdouble80.0dDoubleboolean-falseBooleanchar2\u0000(null)Character注意:boolean单独使用是占4个字节,在数组中又是原创 2021-06-08 19:06:37 · 606 阅读 · 2 评论 -
【集合】遍历 List 集合的几种方式
1. 初始化 List 集合List<String> list = new ArrayList<>();list.add("a");list.add("b");list.add("c");2. 遍历方式一:for循环最基础的遍历方式:for循环,指定下标位置,使用 List 集合的 get(i) 方法来获取元素。for(int i=0; i<list.size(); i++){ System.out.println(list.get(i));}方原创 2021-06-08 18:29:37 · 26835 阅读 · 2 评论 -
【集合】遍历 HashMap 的几种方式
在本文中,我们将通过示例讨论在 Java 上遍历 HashMap 的几种方式。1. 创建 HashMap首先新建 HashMap,代码如下:HashMap<Integer,String> map = new HashMap<>();map.put(1,"111");map.put(2,"222");map.put(3,"333");2. 遍历方式一:for-each循环 + entrySet()entrySet() 返回的是一个包含映射关系(键值对)的集合 ,类型原创 2021-06-06 14:46:14 · 220 阅读 · 0 评论 -
【集合】HashMap 的底层原理(附部分源码 + 面试题)
从结构实现来讲,HashMap是数组+链表+红黑树实现的(JDK1.8 新增加了红黑树部分)。如下图所示:1、数据底层具体存储的是什么?从源码可知,HashMap类中有一个非常重要的字段,就是 Node[] table ,即哈希桶数组,明显它是一个Node的数组。具体源码如下://JDK 1.8static class Node<K,V> implements Map.Entry<K,V> { final int hash; //用来定位数组索引位置 final K k原创 2021-03-15 13:36:12 · 375 阅读 · 0 评论 -
【Java面试题】集合
1、Java集合框架的基础接口有哪些?Collection 为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口任何直接的实现。Set 是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。List 是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List更像长度动态变换的数组。Map 是一个将key映射到value的对象,一个Map不能包含重复的key:每个key最多只能映射一个value。一些其它的原创 2021-03-15 16:27:33 · 148 阅读 · 0 评论 -
初次学习JVM
1. 什么是JVMJVM(Java Virtual Machine)是 Java 虚拟机,用于运行 Java 编译后的二进制字节码,最后生成机器指令。三大JVM:sun公司 HotSpotJRockitIBM J9 VM查看本机JVM版本:2. JVM所在的位置JVM是运行在操作系统之上的,与硬件没有直接的交互,但是可以用 JNI (Java Native Interface,Java本地方法接口)调用底层的硬件。3. JVM的体系结构简化版:详细版:4. 类加载器4.原创 2021-04-21 10:05:42 · 272 阅读 · 1 评论 -
【Java面试题】JVM
1、JDK、JRE、JVM关系?JDK(Java Development Kit):Java语言的软件开发包,包括 Java 运行时环境JRE。JRE(Java Runtime Environment)Java运行时环境,包括JVM。JVM(Java Virtual Machine):一种用于计算机设备的规范。Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以原创 2021-03-31 08:14:14 · 388 阅读 · 0 评论 -
【线程】JUC
Java真的可以开启线程吗?开不了,调用的本地方法,底层的C++,Java无法直接操作硬件。1. 前提所谓 JUC,其实就是 java.until.concurrent 工具包的简称。在阅读本篇博客之前,可以阅读 【Java基础】多线程 回顾以下基础知识点。进程、线程Java的1个进程默认有2个线程:main、GC并发、并行并发编程的本质:充分利用CPU的资源线程状态NEW:新生RUNNABLE:运行BLOCKED:阻塞WAITING:无限等待TIME_WAITIN.原创 2021-04-15 12:27:45 · 266 阅读 · 0 评论 -
【Java】单例模式
1. 单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。2. 介绍意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点原创 2021-04-14 19:34:04 · 223 阅读 · 0 评论 -
【Java基础】多线程
1. 概念1.1 程序 vs 进程 vs 线程术语概念程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念 。进程是执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单位。线程通常在一个进程中可以包含若干个线程,一个进程至少有一个线程。线程是CPU调度和执行的单位。1.2 并发 VS 并行术语概念并发指两个或者两个以上事件在同一时间间隔内发生,即交替做不同事的能力,多线程是并发的一种形式。并行指两个或原创 2021-04-07 22:13:47 · 117 阅读 · 0 评论 -
【Java基础】Lambda表达式
1. 函数式接口任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。对于函数式接口,我们可以通过Lambda表达式来创建该接口的对象。2. 为什么使用Lambda内部类?避免匿名内部类定义过多。去掉一堆没有意义的代码,只留下核心的逻辑,让代码看起来更简洁。Lambda表达式实质属于函数式编程的概念。(params) -> expression [表达式](params) -> statement [语句](params) -> {statements}原创 2021-04-06 22:55:18 · 201 阅读 · 0 评论 -
【Java面试题】多线程
1、什么是进程?进程是系统中正在运行的一个程序,程序一旦运行就是进程。进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等。2、什么是线程?线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。3、线程的实原创 2021-03-30 12:11:55 · 903 阅读 · 0 评论 -
【Java面试题】IO & NIO
1、什么是IO流?它是一种数据的流从源头流到目的地。比如文件拷贝,输入流和输出流。输入流从文件中读取数据存储到进程(process)中,输出流从进程中读取数据然后写入到目标文件。2、Java中有几种类型的流?按照单位大小:字符流、字节流。按照流的方向:输出流、输入流。3、字节流和字符流哪个好?怎么选择?绝大多数情况下使用字节流会更好,因为字节流是字符流的包装,而大多数时候 IO 操作都是直接操作磁盘文件,所以这些流在传输时都是以字节的方式进行的〔图片等都是按字节存储的)如果操作是需要通过原创 2021-03-16 17:43:09 · 1690 阅读 · 0 评论 -
【Java面试题】异常和反射
1、error 和 exception 有什么区别?error表示系统级的错误,是Java运行环境内部错误或者硬件问题,不能指望程序来处理这样的问题,除了退出运行外别无选择,它是Java虚拟机抛出的。exception表示程序需要捕捉、需要处理的异常,是由与程序设计的不完善而出现的问题,程序必须处理的问题。2、说出5个常见的RuntimeException?RuntimeException:运行时异常,这种异常我们不需要处理,完全由虚拟机接管。比如我们常见的NullPointerExceptio.原创 2021-03-15 22:25:27 · 189 阅读 · 0 评论 -
【Java面试题】基础知识
1、java语言的三大特性封装继承extends继承后的子类自动拥有父类的属性和方法,但是注意,父类的私有属性和构造方法并不能被继承。子类也可以写自己特有的属性和方法,目的是实现功能的扩展。子类也可以重写父类的方法。多态:Parent p = new Child();当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。多态需要向上转型(upcast),其中向上转型是由JVM自动实现的、是安全的的。但向下转型(downcast)原创 2021-03-13 23:01:36 · 689 阅读 · 0 评论 -
【IDEA】2020.3.2版本的IntelliJ IDEA 新建项目HelloWorld示例(非Maven项目)
作为IDEA新手小白,我在网上找了好多教程,发现我的IDEA新建项目过程跟网上的不太一样,不知道是不是版本不一样的原因,特此记录第一步:New Project第二步:创建一个空项目就是到这一步,我的页面跟网上的教程不太一样,甚至出现了报错:Error: library is not specified,我刚开始以为是我的安装环境出了问题,后来看到有的博主说, 是因为从2020.2.2版本开始,添加功能模块更改到了项目右键菜单上,项目右键选择Add Framework Support 即可 。简而原创 2021-02-24 16:39:35 · 2399 阅读 · 0 评论 -
cmd错误:找不到或无法加载主类 和 错误:找不到符号
背景在eclipse的文件目录:这是我写的一个编程基于udp的Ping课设,PingClient.java文件是客户端,PingServer.java是服务器端,ThreadServer.java是服务器的线程,在PingServer.java中调用了ThreadServer.java!在eclipse中运行一切正常,没有任何错误!在文件资源管理器中的目录:问题及解决方法...原创 2019-06-08 15:21:17 · 18613 阅读 · 5 评论