![](https://img-blog.csdnimg.cn/fbd2e452ffbe4b1091d27e96d3d059fe.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java编程 核心基础
文章平均质量分 91
Java基础数据类型,并发,IO流,面向对象,容器,Web开发等。
知了一笑
积累、总结、用心记录。
展开
-
JDK中「SPI」原理分析
SPI是JDK内置的服务提供加载机制,可以为服务接口加载实现类,解耦是其核心思想,也是很多框架和组件的常用手段;原创 2023-08-05 11:51:58 · 166 阅读 · 0 评论 -
异常体系与项目实践
程序中的异常可以反映系统的缺陷和待优化的点,并且是无法完全避免的,如何处理异常和降低异常出现的频率,是系统质量的基础保障;随着分布式架构的流行,各种复杂的请求链路给异常处理带来了巨大的麻烦;原创 2023-05-19 08:12:49 · 272 阅读 · 0 评论 -
聊一聊适配器模式
适配器模式(Adapter),是23种设计模式中的结构型模式之一,它就像我们电脑上接口不够时,需要用到的拓展坞,起到转接的作用。原创 2023-05-17 08:35:56 · 344 阅读 · 0 评论 -
聊一聊模板方法模式
模板方法模式,又叫模板模式,属于23种设计模式中的行为型模式。在抽象类中公开定义了执行的方法,子类可以按需重写其方法,但是要以抽象类中定义的方式调用方法。原创 2023-05-15 08:37:21 · 297 阅读 · 0 评论 -
Java中「Future」接口详解
有的任务只强调执行过程,并不需要追溯任务自身的执行结果;有些任务即强调执行过程,又需要追溯任务自身的执行结果;原创 2023-04-17 08:48:07 · 1266 阅读 · 0 评论 -
从ReentrantLock角度解析AQS
基于JDK8,今天重点来聊下JUC并发包下的一个类,AbstractQueuedSynchronizer。首先,浅显的从名字上看,抽象的队列同步器;实际上,这名字也跟它的作用如出一辙。抽象,即需要被继承;队列同步器,其内部维护了一个队列,供线程入队等待;最终实现多个线程访问共享资源的功能。原创 2023-04-14 08:36:49 · 207 阅读 · 0 评论 -
IO流中「线程」模型总结
客户端与服务端进行通信交互,可能是同步或者异步,服务端进行「流」处理时,可能是阻塞或者非阻塞模式,理逻辑看就是:读取数据-业务执行-应答写数据的形式;原创 2023-04-07 08:51:01 · 133 阅读 · 0 评论 -
网络编程与通信原理
应用层:HTTP超文本传输协议,基于TCP/IP通信协议来传递数据;传输层:TCP传输控制协议,采用三次握手的方式建立连接,形成数据传输通道;网络层:IP协议,作用是把各种传输的数据包发送给请求的接收方;原创 2022-12-11 19:09:22 · 497 阅读 · 0 评论 -
聊一聊装饰者模式
装饰者模式(Decorator Pattern)允许向一个现有的对象扩展新的功能,同时不改变其结构。主要解决直接继承下因功能的不断横向扩展导致子类膨胀的问题,无需考虑子类的维护。原创 2022-11-25 09:07:38 · 556 阅读 · 0 评论 -
Java注解与原理分析
无论是在JDK源码或者框架组件,都在使用注解能力完成各种识别和解析动作;在对系统功能封装时,也会依赖注解能力简化各种逻辑的重复实现;原创 2022-11-15 09:03:00 · 486 阅读 · 0 评论 -
聊一聊责任链模式
责任链模式(Chain of Responsibility Pattern)是将链中每一个节点看作是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一节点对象。原创 2022-11-01 08:40:55 · 655 阅读 · 0 评论 -
JDK中自带的JVM分析工具
解决常规的JVM异常时,通常依赖JDK中基础工具即可完成问题的定位,从而进行分析和解决,不过这些需要对基础工具熟练使用才行,而很多JDK自身的能力又是经常被忽略的;原创 2022-10-25 08:23:45 · 717 阅读 · 0 评论 -
深入分析JVM执行引擎
JVM执行引擎的作用就是将字节码指令解释或者编译为对应平台上的本地机器指令。简单来说,执行引擎充当了将高级语言翻译为机器语言的翻译者。原创 2022-08-29 22:17:51 · 375 阅读 · 0 评论 -
Java基础 | Stream流原理与用法总结
通常对于Stream的中间操作,可以视为是源的查询,并且是懒惰式的设计,对于源数据进行的计算只有在需要时才会被执行,与数据库中视图的原理相似;原创 2022-08-09 08:13:10 · 1010 阅读 · 1 评论 -
理解Java中对象基础Object类
源码注释Object类是所有类层级关系的Root节点,作为所有类的超类,包括数组也实现了该类的方法,注意这里说的很明确,指类层面。所以在Java中有一句常说的话,一切皆对象,这话并不离谱。既然Object作为所有类的父级别的类,则不需要在显式的添加继承关系,Each01编译期就会提示移除冗余。这里Each01与ObjEa02对象实例都有Object类中的hashCode方法,这里对既有结论的验证。再从JVM编译层面看下字节码文件,是如何加载,使用javap-c命令查看编译后的文件,注意Jdk版本;....原创 2021-09-01 08:21:02 · 458 阅读 · 0 评论 -
Java进阶 | 从整体上观察面向对象
面向对象是Java编程中最核心的思想,基本特征继承、封装、多态。原创 2021-08-10 08:02:40 · 136 阅读 · 0 评论 -
Java进阶 | IO流核心模块与基本原理
IO流向源文件->输入流->逻辑处理->输出流->目标文件;流动方向输入流、输出流;流数据类型字节流、字符流;IO流的模式有很多种,相应的API设计也很复杂,通常复杂的API要把握住核心接口与常用的实现类和原理。基础API字节流InputStream输入、OutputStream输出;数据传输的基本单位是字节;read()输入流中读取数据的下一个字节;读数据缓存到字节数组;指定字节写入输出流;数组字节写入输出流;字符流Reader读取、Writer写出;read()...原创 2021-07-13 08:04:42 · 1090 阅读 · 0 评论 -
Java进阶 | Proxy动态代理机制详解
在说Java动态代理之前,还是要说一下Jvm加载对象的过程,这个依旧是理解动态代理的基础性原理Java类即源代码程序.java类型文件,经过编译器编译之后就被转换成字节代码.class类型文件,类加载器负责读取字节代码,并转换成java.lang.Class对象,描述类在元数据空间的数据结构,类被实例化时,堆中存储实例化的对象信息,并且通过对象类型数据的指针找到类。所以通过New创建对象,独断其背后很多实现细节,理解上述过程之后,再了解一个常用的设计模式,即代理模式。...原创 2021-06-28 08:00:57 · 3292 阅读 · 0 评论 -
Java进阶 | 泛型机制与反射原理
在不指定类型的情况下,键值对都默认为Object类型,这样的容器在使用的时候要时刻注意不同的key类型和取出的value值类型,并且value要做类型转换,相比之下泛型机制就很有必要。在Map接口中,显然没有指定明确的类型,只是起到类型传递的作用,即K是key的类型,V是value的类型,在上面的源码中描述的很清楚,结合上面案例,在Map对象声明的时候可以明确指定的类型,也可以缺省为Object类型。...原创 2021-06-23 08:14:27 · 415 阅读 · 1 评论 -
Java容器 | 基于源码分析Map集合体系
集合体系的源码中,Map中的HashMap的设计堪称最经典,涉及数据结构、编程思想、哈希计算等等,在日常开发中对于一些源码的思想进行参考借鉴还是很有必要的。所以Map和Set的系列中,除特殊API之外,基本原理都依赖HashMap,只是在各自具体实现时,适用于不同特点的元素管理。...原创 2021-05-25 08:24:07 · 236 阅读 · 0 评论 -
Java容器 | 基于源码分析List集合体系
List集合体系应该是日常开发中最常用的API,而且通常是作为面试压轴问题(JVM、集合、并发),集合这块代码的整体设计也是融合很多编程思想,对于程序员来说具有很高的参考和借鉴价值。核心特性包括初始化与加载,元素管理,自动扩容,数组和链表两种数据结构。Vector底层基于ArrayList实现的线程安全操作,而ArrayList与LinkedList属于非线程安全操作,自然效率相比Vector会高,这个是通过源码阅读可以发现的特点。...原创 2021-05-17 08:21:35 · 214 阅读 · 0 评论 -
Java基础篇(05):函数式编程概念和应用
函数式编程是一种结构化编程的范式,主要思想是把运算过程尽量写成系列嵌套的函数调用。这里基于过程的方式做计算,上面的代码块着重在描述程序执行过程。函数式编程的核心要素传入参数,执行逻辑,返回值,也可以没有返回值。函数式的编程风格侧重描述程序的执行逻辑,不是执行过程。同上面计算过程相比,函数式编程也减少很多临时变量的创建,代码风格也变的简洁清楚。...原创 2021-03-08 08:20:38 · 508 阅读 · 0 评论 -
Java基础篇(04):日期与时间API用法详解
在系统开发中,日期与时间作为重要的业务因素,起到十分关键的作用,例如同一个时间节点下的数据生成,基于时间范围的各种数据统计和分析,集群节点统一时间避免超时等。日期和时间的用法在系统中通常是获取时间和一些常见的计算与格式转换处理,在一些垮时区的业务中就会变的复杂很多,例如在电商业务中的全球贸易或者海淘等。...原创 2021-02-18 21:44:53 · 246 阅读 · 0 评论 -
编程体系结构(09):分布式系统架构
所有业务服务和应用组件部署在一台服务上,节省成本,这是单服务结构,适用于并发低,业务单一的场景。业务量逐渐增大,并发高,把一台服务进行水平扩展,做一个服务群,请求压力分散到不同的服务上处理,每台服务称为集群的一个节点,到这就是集群服务。分布式结构就是按照业务功能,拆分成独立的子服务,独立的库表,可以独立运行,且服务之间通信和交互,带来的好处降低业务间的耦合度,方便开发维护,水平扩展,复用性高等等。服务基础架构Dubbo框架,SpringCloud框架;容器化运维数据存储。...原创 2020-10-16 12:02:52 · 2926 阅读 · 2 评论 -
编程体系结构(08):Spring.Mvc.Boot框架
1、框架概述Spring是一个开源框架,框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。Spring是一个分层的轻量级开源框架。基本特性:分层架构、高内聚低耦合、支持AOP编程、事务管理、集成测试、集成各种框架。2、核心组件核心容器:包含Bean的创建、配置、管理等功能。AOP切面编程:可以帮助应用程序解耦。数据访问:集成了JDBC,常用的Dao层框架hiberna原创 2020-10-15 11:51:17 · 614 阅读 · 0 评论 -
编程体系结构(07):JavaEE之Web开发
客户端/服务器(Client/Server)模式,既要编写服务器端程序,也要开发客户端程序,软件更新时需要同时更新客户端和服务器端,整体模式相比BS架构要复杂,但是安全性比较高。即浏览器/服务器(Browser/Server),只需要编写服务器端程序,浏览器的界面作为访问的服务端的入口,架构相对简单,可以快速迭代,但是安全性较差。传输控制协议/网际协议是指能够在多个不同网络间实现信息传输的协议簇。...原创 2020-10-09 15:31:25 · 416 阅读 · 1 评论 -
编程体系结构(06):Java面向对象
abstract修饰类该抽象类不能被实例化,抽象类与接口的不同之处,接口中不能有实例方法去实现业务逻辑,而抽象类中可以有实例方法,并实现业务逻辑,抽象类不能使用final关键字修饰,因为final修饰的类是无法被继承,而对于抽象类来说就是需要通过继承去实现抽象方法。abstract修饰方法抽象方法没有方法主体,与接口方法有点类似,抽象方法不能用private修饰,因为抽象方法必须被子类实现,抽象方法也不能用static修饰,抽象类.抽象方法这样的操作没有意义。...原创 2020-10-08 18:44:19 · 239 阅读 · 0 评论 -
编程体系结构(05):Java多线程并发
线程是操作系统能够进行运算调度的最小单位,包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。继承Thread类、实现Runnable接口、基于Callable和Future接口、Timer是后台线程、线程池。状态描述初始状态、运行状态、阻塞状态、等待状态、超时等待状态、终止状态。JVM中一个应用是可以有多个线程并行执行,线程被一对一映射为服务所在操作系统线程,调度在可用的CPU上执行,启动时会创建一个操作系统线程;...原创 2020-10-03 09:59:10 · 687 阅读 · 0 评论 -
编程体系结构(04):JavaIO流文件管理
输入流:从数据源中读取数据到应用中的流;输出流:从应用中将数据写入到目的地的流;原创 2020-09-28 16:53:35 · 224 阅读 · 0 评论 -
虚拟机系列 | 执行引擎和垃圾回收
应用程序经过编译,转换为字节码文件,字节码加载到内存空间并不能直接在操作系统上执行,执行引擎作为Java虚拟机核心的组成部分,作用就是将字节码指令解释/编译为对应系统平台上的本地机器指令。虚拟机启动时会根据预定义对字节码采用逐行解释的方式执行,将每条字节码文件中的内容解释为对应系统平台的本地机器指令执行;虚拟机将源代码编译成本地机器平台相关的机器语言,并且寻找热点高频执行的代码将其放入元空间中,即元空间中存放的JIT缓存代码;对于没有任何引用的对象标记为垃圾,会被回收释放内存空间。...原创 2020-09-25 11:35:55 · 242 阅读 · 0 评论 -
虚拟机系列 | JVM运行时数据区
内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。JVM的内存结构规定Java程序在执行时内存的申请、划分、使用、回收的管理策略,通说来说JVM的内存管理指运行时数据区这一大块的管理。...原创 2020-09-24 13:39:57 · 145 阅读 · 0 评论 -
虚拟机系列 | JVM类加载机制
类的加载机制是指把编译后的.class类文件的二进制数据读取到内存中,并为之创建一个java.lang.Class对象,用来封装类在元数据空间的数据结构。类在JVM中的生命周期为加载,连接,初始化,使用,卸载。不过这里只重点描述加载,连接,初始化这三个过程。...原创 2020-09-22 11:46:38 · 150 阅读 · 0 评论 -
虚拟机系列 | JVM特点,基础结构与执行周期
虚拟机(VirtualMachine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。...原创 2020-09-19 17:36:03 · 218 阅读 · 0 评论 -
编程体系结构(03):Java集合容器
这里对存储数量是受到程序和内存等环境制约的,从List的get()方法中可以看出,index的范围是Integer.MAX_VALUE。原创 2020-09-13 14:48:14 · 96 阅读 · 0 评论 -
编程体系结构(02):Java异常体系
优秀的程序代码,都在追求高效,安全,和低错误率,但是程序中的异常是无法避免的,降低异常出现的频率是关键,异常出现如何处理是另一个重要方面,Java体系中异常框架对于系统开发是十分重要的。面对系统异常时,不要慌乱,异常虽然是错误,也是系统发出的消息,标识系统的缺陷和需要改进的地方。...原创 2020-09-06 20:16:26 · 171 阅读 · 0 评论 -
编程体系结构(01):Java编程基础
一、数据类型1、基础类型整型:byte 、short 、int 、long浮点型:float、double字节型:char2、包装类型Byte,Short,Integer,LongFloat,DoubleCharacter3、String字符常用方法StringBuilder、StringBuffer4、类型转换自动转换:范围小类型->范围大类型强制转换:范围大类型->范围小类型二、流程控制1、分支语句if 语句else...if 语句switc原创 2020-09-06 19:44:09 · 288 阅读 · 0 评论 -
Java并发编程(08):Executor线程池框架
Executor系统中,将线程任务提交和任务执行进行了解耦的设计,Executor有各种功能强大的实现类,提供便捷方式来提交任务并且获取任务执行结果,封装了任务执行的过程,不再需要Thread().start()方式,显式创建线程并关联执行任务。...原创 2020-08-24 22:11:40 · 311 阅读 · 0 评论 -
Java并发编程(07):Fork/Join框架机制详解
Java提供Fork/Join框架用于并行执行任务,核心的思想就是将一个大任务切分成多个小任务,然后汇总每个小任务的执行结果得到这个大任务的最终结果。这种机制策略在分布式数据库中非常常见,数据分布在不同的数据库的副本中,在执行查询时,每个服务都要跑查询任务,最后在一个服务上做数据合并,或者提供一个中间引擎层,用来汇总数据核心流程切分任务,模块任务异步执行,单任务结果合并;在编程里面,通用的代码不多,但是通用的思想却随处可见。...原创 2020-08-16 15:15:41 · 492 阅读 · 0 评论 -
Java基础篇(03):流程控制语句,和算法应用
流程控制语句对任何一门编程语言都是非常重要的,Java中基于流程控制程序执行的不同步骤和代码块。原创 2020-07-26 16:35:26 · 222 阅读 · 1 评论 -
Java并发编程(06):Lock机制下API用法详解
重入锁的排它特性决定了性能会产生瓶颈,为了提升性能问题,JDK中还有另一套读写锁机制。读写锁中维护一个共享读锁和一个排它写锁,在实际开发中,读的场景还是偏多的,所以读写锁可以很好的提高并发性。提供两个基础方法,readLock获取读机制锁,writeLock获取写机制锁。接口ReadWriteLock的具体实现,特点基于读锁时,其他线程可以进行读操作,基于写锁时,其他线程读、写操作都禁止。...原创 2020-07-05 11:02:37 · 404 阅读 · 0 评论