![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础知识
文章平均质量分 74
trigger333
When you work, work. When you laugh, laugh.
展开
-
闭包通俗解释,Demo(Go Java Python)
闭包就好比是一个能够包含函数代码和其相关环境的封闭单元,而且可以在其定义的范围之外继续存在和生效。原创 2023-10-29 10:06:16 · 320 阅读 · 1 评论 -
Java 核心技术卷1 第一章 java程序设计概述
正像我们在第1版中已经指出的那样,Java并不只是一种语言。在此之前出现的那么多种语言也没有能够引起那么大的轰动。作为一名程序设计人员,常常希望能够有一种语言,它具有令人赏心悦目的语法和易于理解的语义(C+不是这样的)。与许多其他的优秀语言一样,Java恰恰满足了这些要求。有些语言,但是,没有提供一个大型的库。如果想要有奇特的绘图功能、网络连接功能和数据库存取功能就必须自己动手编写代码。正是因为它集多种优势于一身,所以对广大的程序设计人员有着不可抗拒的吸引力。原创 2023-02-23 23:28:21 · 1136 阅读 · 0 评论 -
Java 输入输出流简介和应用 (Java实现序列化工具类)
Java 流相关的类都封装在 java.io 包中,而且每个数据流都是一个对象。序列化:将一个实例对象序列化为字节数组并返回,或者将该字节数组保存在本地。反序列化:将一个字节数组反序列化为对象并返回,或者将本地的文件读取到内存中并且转成对象返回。原创 2022-11-29 15:07:24 · 452 阅读 · 0 评论 -
如何优雅的终止线程 Java
正因为 interrupt 的灵活性会比较高,所以在 JDK 的线程池中,关于关闭部分的实现也是采用了 interrupt 去实现。interrupt 这个方法并没有强制性地去中断线程任务,只是发送了一个信号给到线程自身,然后让线程自身去决定如何执行。stop 方法会真正杀死线程,如果这时线程锁住了共享资源,那么当它被杀死后就再也没有机会释放锁,其它线程将永远无法获取锁。这三种状态,则会导致被打断的线程抛出 InterruptedException,并清除打断标记,也就是置为 false。原创 2022-11-25 11:07:53 · 967 阅读 · 0 评论 -
正则表达式简介和使用(Java)
正则表达式是 字符串模式匹配 的技术,一般在使用的时候都会写一个 模式串,比如regStr,然后在s串中找和regStr或者说判断s串符不符合regStr的格式要求,也就是校验字符串,判定字符串是否合法,比如是不是邮箱,是不是电话号码等。正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。各个语言中都会有正则表达式的应用,下面会有Java的Demo。正则表达式 – 简介 | 菜鸟教程。原创 2022-11-08 00:06:22 · 225 阅读 · 0 评论 -
Java的SPI机制简介
SPI技术是当前各款中间件都在主流使用的一项扩展技术,其中比较具有代表性的RPC框架。原创 2022-10-17 20:35:06 · 261 阅读 · 0 评论 -
Java随机数类 Random 源码解析
由D.H.Lehmer和Donald E.Knuth在《计算机编程艺术》提出。返回 (int)(seed >>> (48 - bits)).Random(long seed)等效于。所以使用该构造器在实例化的时候。,因为没有调用系统的时间函数。原创 2022-10-17 00:06:06 · 517 阅读 · 0 评论 -
JDK自带的序列化框架使用
把对象转化为可传输的字节序列过程称为序列化。把字节序列还原为对象的过程称为反序列化。序列化最终的目的是为了对象可以跨平台存储,和进行网络传输。而我们进行跨平台存储和网络传输的方式就是IO,而我们的IO支持的数据格式就是字节数组。......原创 2022-07-30 17:14:46 · 1210 阅读 · 0 评论 -
2种动态代理方式的性能测试(JDK1.8 JDK > Cglib)
Cglib执行速度比JDK快?不同jdk版本不一样。JDK 1.8 动态代理 JDK > Cglib 1、cglib底层是ASM字节码生成框架,但是字节码技术生成代理类,在JDL1.6之前比使用java反射的效率要高2、在jdk6之后逐步对JDK动态代理进行了优化,在调用次数比较少时效率高于cglib代理效率3、只有在大量调用的时候cglib的效率高,但是在1.8的时候JDK的效率已高于cglib。......原创 2022-07-30 15:07:41 · 656 阅读 · 0 评论 -
JDK1.8 HashMap源码解析 (扩容机制,null键,与1.7的区别等)
hashmap支持null键吗?当扩容的时候,所有元素都会 rehash吗?怎么减少扩容次数为什么node数组的大小是2的n次?原创 2023-12-03 12:38:31 · 170 阅读 · 0 评论 -
Java创建一个对象的过程是怎样的
目录举个例子对象创建过程1.检测类是否被加载:2.为对象分配内存:3.为分配的内存空间初始化零值:4.对对象进行其他设置:5.执行 init 方法:Java属性在类加载过程中的初始化顺序举个例子 class Fu { { System.out.println("这是父类的匿名代码块:父类的非静态属性"); } static { System.out.printl原创 2022-04-04 16:53:04 · 146 阅读 · 0 评论 -
JVM的构成 (类加载子系统、执行引擎、运行时数据区)
目录JVM由三部分组成1. 类加载子系统,可以根据指定的全限定名来载入类或接口。Java类加载机制_trigger333的博客-CSDN博客_java类加载的机制2. 执行引擎,负责执行那些包含在被载入类的方法中的指令。3. 运行时数据区.JVM内存结构_trigger333的博客-CSDN博客_jvm内存结构具体的JVM由三部分组成类加载子系统、执行引擎、运行时数据区。1. 类加载子系统,可以根据指定的全限定名来载入类或接口。Java类加载机制_tr...原创 2022-04-03 17:25:04 · 863 阅读 · 0 评论 -
内部类简介 如何创建内部类(Java)
目录为什么要使用内部类?实际demo为什么内部类可以访问外围类的 private成员如何创建 内部类内部类的分类为什么要使用内部类?在《Think in java》中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。在我们程序设计中有时候会存在一些使用接口很难解决的问题,这个时候我们可以利用内部类提供的、可以继承多个具体的或者抽象的类的能力来解决这些程序设计问题。可.原创 2022-04-03 21:15:00 · 4595 阅读 · 0 评论 -
ConcurrentHashMap 1.8
sizeCtl【十四】Java集合之ConcurrentHashMap源码分析(1.8)_jy02268879的博客-CSDN博客_concurrenthashmap源码分析1.8一、简介java8中ConcurrentHashMap的结构是:数组+链表+红黑树。因为在hash冲突严重的情况下,链表的查询效率是O(n),所以jdk8中改成了单个链表的个数大于8时,数组长度小于64就扩容,数组长度大于等于64,则链表会转换为红黑树,这样以空间换时间,查询效率会变为O(nlogn)。红黑树在Node数组内部转载 2022-03-30 22:51:09 · 324 阅读 · 0 评论 -
Spring 中Bean的生命周期
Spring 中Bean的生命周期 是怎样的,五大阶段都做了什么。原创 2022-03-28 20:47:59 · 4306 阅读 · 0 评论 -
ThreadLocal 原理及例子
目录通俗解释三大特点:经典案例:二者区别应用场景ThreadLocal 图示ThreadLocal 的内存泄漏那么为什么key要用弱引用呢?黑马程序员Java基础教程由浅入深全面解析threadlocal_哔哩哔哩_bilibili刚接触的学员可以直接看零基础java入门av80585971课程全面,包含:ThreadLocal基本介绍,运用场景,源码分析,常见面试问题等结合源码和画图解构ThreadLocal,更加形象源码分析不仅仅停留在表面,有源码为何这样设.原创 2022-03-27 09:43:05 · 933 阅读 · 0 评论 -
Java多态是什么,怎么实现的,多态例子代码
目录子类型和子类多态分两种多态的用途多态的转型运行时多态的例子多态实现的机制 JVM部分内容摘自:Java多态的实现机制是什么,写得非常好!_Java技术栈的博客-CSDN博客子类型和子类子类型(Subtype)这个词和子类(Subclass)的区别,简单地说,只要是A类运用了extends关键字实现了对B类的继承,那么我们就可以说Class A是Class B的子类,子类是一个语法层面上的词,只要满足继承的语法,就存在子类关系。子类型比子类有更严格的要求,它不仅原创 2022-03-22 23:33:39 · 537 阅读 · 0 评论 -
Java基本数据类型知识点总结
参考:Java基本数据类型和Integer缓存机制 - 之石先生 - 博客园文章链接: Java中的基本数据类型 | 学习笔记目录字符型常量和字符串常量的区别?8种数据类型整型(byte、short、int、long)浮点型(float、double)字面值赋值例子:(byte) 156 等于多少:Integer 的缓存机制其他缓存的对象是否存在 x>x+1?为什么?switch语句能否作用在byte上,能否作用在long上,能否作用在stri..转载 2022-03-06 15:13:53 · 202 阅读 · 0 评论 -
Java类加载机制
类加载器,双亲委派机制,类加载的三个阶段。目录类加载过程加载阶段链接阶段验证准备解析初始化类加载机制类加载器双亲委派机制类加载过程我们编写的java文件都是保存着业务逻辑代码。java编译器将 .java 文件编译成扩展名为 .class 的文件。.class 文件中保存着java转换后,虚拟机将要执行的指令。当需要某个类的时候,java虚拟机会加载 .class 文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程被称为类的原创 2022-03-02 14:59:43 · 618 阅读 · 0 评论 -
Java属性的初始化顺序(代码验证)
java属性的初始化顺序静态优于非静态 > 父类优于子类只有在第一次创建对象的时候才会初始化静态块。(默认初始值,无参构造函数,静态代码块,构造代码块)下面应该是正确的a. 非静态属性:默认初始化 → 显示初始化 → 代码块初始化 → 无参构造初始化 or 有参构造初始化b. 静态属性:默认初始化 → 显示初始化 → 静态代码块初始化 → 非静态代码块初始化 → 无参构造结论:例子中A类加载了两次,实例化了一次,那么不仅可以得出static代码块在加载的时原创 2022-03-02 14:57:27 · 222 阅读 · 0 评论 -
JVM内存结构
问题:OOM,GC问题怎么解决,JVM调优。JVM参数设置。java api 还是运行在jvm虚拟机上。内功就是jvm 相当于公式的推导过程。底层问题,高工资。架构师关心的两个问题:如何让我的系统更快? 如何避免系统出现瓶颈。如何精进自己的技术?知乎上有条帖子:应该如何看招聘信息,直通年薪50万+?参与现有系统的性能优化,重构,保证平台性能和稳定性根据业务场景和需求,决定技术方向,做技术选型能够独立架构和设计海量数据下高并发分布式解决方案,满足功能和非功能需求解决...原创 2022-03-02 11:18:53 · 150 阅读 · 0 评论 -
Stringtable 串池经典面试题
Stringtable串池简单介绍常量池中的字符串仅是符号,第一次用到时才变为字符串对象利用串池的机制,来避免重复创建字符串对象 ,如果两个字符串(作为key)一样,那么就会使用同一份。可以使用 intern 方法,主动将串池中还没有的字符串对象放入串池1.6 将这个字符串对象尝试放入串池,如果有则并不会放入,如果没有会把此对象复制一份(原来的对象没有变,只是在常量池中多了一个字符串), 放入串池, 会把串池中的对象返回。1.8 将这个字符串对象尝试放入串池,如果有则并不会放入,如果原创 2022-03-02 11:02:43 · 157 阅读 · 0 评论 -
Synchronized和Lock的实现原理与区别 附代码
用Synchronized和Lock实现交替打印奇偶数。Synchronized private static void testSynchronized() { // 实现 synchronized 多线程交替打印奇数偶数 Object obj = new Object(); Thread thread1 = new Thread(() -> { for (int i = 0; i <= 100; i++)原创 2022-02-25 19:55:37 · 178 阅读 · 0 评论 -
Java线程池简介 参数设置原则
资料来源 javaguide 4java线程池是什么 有什么用重要参数饱和策略执行流程如何使用 见代码package cn.itcast.n8;import cn.itcast.n2.util.Sleeper;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.*;import java.util.concurrent.atomic.AtomicIntege...原创 2022-02-25 17:21:50 · 1557 阅读 · 0 评论 -
NC119 最小的K个数
目录题目描述解法1:排序+取值解法2:大根堆题目扩展前k个最大的数要求不能重复题目描述解法1:排序+取值数组排序后取前k个值,注意特殊情况的判断,比如input数组长度比k还小比如,那就返回整个数组即可。import java.util.*;public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input...原创 2022-02-17 10:55:03 · 214 阅读 · 0 评论 -
Java中堆 链表 队列 栈的实现汇总
public void test1(){ // 堆 PriorityQueue<Integer> pq = new PriorityQueue<>((o1, o2) -> { return o1 - o2;//小根堆 }); PriorityQueue<Integer> pq2 = new PriorityQueue<>((o1, o2) -> { .原创 2022-02-15 17:10:35 · 390 阅读 · 0 评论 -
二叉树题目经典模板(前中后层4种遍历 )
前中后的区别就在于 遍历根的顺序 1.先遍历根就是先序,先遍历左,后遍历右,中间遍历根就是中序,同理最后遍历根就是后序。2.左右节点的顺序总是先左后右。前中后序的遍历用到了dfs的思想,先遍历到底再往回返,用到的数据结构是栈。// 先序public void dfs(TreeNode root) { if (root == null) return ; System.out.println(root.val); dfs(root.left); dfs(ro原创 2022-02-15 16:50:12 · 331 阅读 · 0 评论 -
链表题目汇总(反转链表 回文链表 链表中点)
目录链表全部反转链表从m到n反转链表中点回文链表反转链表是面试中经常会问到的题目,可以作为模板理解后记忆。主要有两道,一个是将一个链表全部反转,一个是将链表的m到n个节点反转。这些模板可以应用在很多题目中比如234. 回文链表https://leetcode-cn.com/problems/palindrome-linked-list/链表全部反转public class Solution { public ListNode ReverseList.原创 2022-02-15 11:01:18 · 110 阅读 · 0 评论 -
Java算法代码模板整理 通用篇
目录常规代码模板核心代码模式ACM模式map set 遍历自定义比较器建立大跟堆、小根堆常规代码模板核心代码模式函数名,输入参数,输出参数类型都已经写好,只需要写函数体即可。ACM模式啥都没有,需要自己写这里提供一个模板,主要是读入示例,自己构建出输入参数,那么就可以转化为核心代码模式了,方便过渡。读入大致是分为两类,数字和字符串。import java.util.*;public class Main { public.原创 2022-02-15 09:57:15 · 1105 阅读 · 0 评论 -
手写RPC框架(文末附代码)
目录RPC是什么?应用场景RPC 优点写RPC框架需要具备哪些知识?RPC原理(摘自:什么情况下使用 RPC ? - 知乎)Netty框架具体代码代码目录apiproviderconsumerproxyregistryprotocol本地调用和远程调用 产生的对象有什么区别呢?RPC的调用速度如何?RPC是什么?RPC是远程过程调用(Remote Procedure Call)的缩写形式。通俗的理解就是我调用了一个函数func(args原创 2022-02-14 14:06:51 · 2116 阅读 · 0 评论 -
Java Map(hashmap)
1原创 2021-08-03 17:38:47 · 320 阅读 · 0 评论 -
Maven
Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。约定大于配置...原创 2021-03-28 15:53:08 · 97 阅读 · 0 评论 -
Spring5之AOP详解
简单介绍原创 2021-03-19 22:10:07 · 367 阅读 · 1 评论 -
Spring5之IOC详解
简单介绍把对象创建和对象之间的调用过程,交给spring进行管理使用IOC的目的就是为了降低耦合度底层原理xml解析+工厂模式+反射原创 2021-03-18 21:53:06 · 214 阅读 · 2 评论 -
java反射机制
反射机制就是一套API,重难点。//疑问1:通过直接new的方式或反射的方式都可以调用公共的结构,开发中到底用那个?//建议:直接new的方式。//什么时候会使用:反射的方式。 反射的特征:动态性//疑问2:反射机制与面向对象中的封装性是不是矛盾的?如何看待两个技术?//不矛盾。面向对象中的封装性指的是对于private属性的方法。属性,你最好不要碰,尽管你可以采用反射机制去调用。...原创 2021-03-17 21:25:54 · 172 阅读 · 2 评论 -
filter和threadlocal进行事务管理
threadlocal就是一个map,key是当前线程,value是自己可以设置的值,类型是object, threadLocal.set(o);ThreadLocal 的作用,它可以解决多线程的数据安全问题。ThreadLocal 的特点: 1、ThreadLocal 可以为当前线程关联一个数据。(它可以像 Map 一样存取数据,key 为当前线程) 2、每一个 ThreadLocal 对象,只能为当前线程关联一个数据,如果要为当前线程关联多个数据,就需要使用多个 ThreadLoc原创 2021-03-10 22:15:59 · 221 阅读 · 4 评论 -
数据库事务管理
事务(transaction)比如,我们去银行转账,操作可以分为下面两个环节: (1)从第一个账户划出款项。 (2)将款项存入第二个账户。 在这个过程中,两个环节是关联的。第一个账户划出款项必须保证正确的存入第二个账户,如果第二个环节没有完成,整个的过程都应该取消,否则就会发生丢失款项的问题。整个交易过程,可以看作是一个事物,成功则全部成功,失败则需要全部撤消,这样可以避免当操作的中间环节出现问题时,产生数据不一致的问题。一、含义事务:一条或多条sql语句组成一个执行单位,一.转载 2021-03-10 22:13:57 · 122 阅读 · 0 评论 -
EL表达式
什么是EL表达式EL表达式的全称是: Expression Language。是表达式语言。EL表达式的什么作用:EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出因为EL表达式在输出数据的时候,要比jsp的表达式脚本要简洁很多。<body> <% request.setAttribute("key","值"); %>表达式脚本输出 key 的值是: <%=request.getAttribute("key1")==nul原创 2021-03-01 20:22:05 · 240 阅读 · 4 评论 -
javaweb之文件上传和下载
IllegalStateExceptionRuntimeOperationsExceptionArtifact jsp:war exploded: Error during artifact deployment. See serverCaused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory找不到这个类原创 2021-03-01 20:02:04 · 240 阅读 · 2 评论 -
java中的 jsp是啥
jsp是java server pages的缩写,意思是java的服务器页面,和html页面一样,用来描述网页的一种语言,后缀名是.jsp。目录jsp简介jsp是谁发明的呢,html就可以实现显示功能,为什么需要jsp呢?jsp本质jsp的具体内容可参见:jsp的九大内置对象jsp的知识点总结(jsp的头部指令,常用脚本,常用标签)以及练习题(附代码)jsp简介jsp是谁发明的呢,html就可以实现显示功能,为什么需要jsp呢?jsp是sun公司(已被甲骨文公司收购)原创 2021-02-28 16:37:43 · 1770 阅读 · 3 评论