Java语言核心基础知识
文章平均质量分 74
Java 基础、进阶以及高级知识。
青风微凉
程序员。写过:编程之美,设计思想感悟,大型网站架构演变。
展开
-
设计模式最佳实践(01) —— 工厂模式
当我们做支付项目时,常常项目中需要接入多种支付方式(微信、支付宝、银联等)。其实这些支付方式,都存在一些类似的业务接口,比如支付、查询、退款等等。区别就在于每一家参数不一致(参数名不一致)。我们可以利用工厂模式将支付厂商封装起来。利用工厂模式,我们可以更方便的选择支付方式接口。下面代码仅仅是结构,暂无具体的支付实现。下面代码以java代码为例,工厂模式与编程语言无关,其他编程语言也可以,如C# , Go。代码中类似ResultCreatePay、CreatePayParas仅仅是命名,暂无具体属原创 2020-07-16 17:24:24 · 190 阅读 · 0 评论 -
编程常用英语词汇和缩写
类型词汇发音释义octet[ɒkˈtet]八位字节原创 2021-09-09 10:52:38 · 564 阅读 · 0 评论 -
Java多线程基础(03) ———— ThreadLocal
目录第03课 线程本地 ThreadLocal 的介绍与使用ThreadLocal 概述ThreadLocal 与 Synchronized 同步机制的比较如何实现一个简单的 ThreadLocalThreadLocal 的应用第03课 线程本地 ThreadLocal 的介绍与使用ThreadLocal 概述我们通过上两篇的学习,我们已经知道了变量值的共享可...原创 2019-06-25 17:56:13 · 193 阅读 · 0 评论 -
Java高并发程序设计 | 01 详解java的volatile关键字
目录同步与异步,并行和并发死锁、饥饿、活锁线程并发级别Java内存模型JMM的关键技术点原子性可见性有序性不能重排的指令:Happens-Before 原则深入理解volatile关键字volatile的作用volatile的实现原理volatile的应用场景同步与异步,并行和并发同步和异步通常用来形容一次方法调用。同步方法调用...原创 2019-06-18 11:16:12 · 177 阅读 · 0 评论 -
Java多线程基础(01) ———— 线程安全和锁Synchronized概念
目录第01课 线程安全和锁 Synchronized 概念进程与线程的概念进程和线程的关系线程和进程各自有什么区别和优劣同步与异步并行与并发Java 实现多线程方式线程安全Synchronized 修饰符一个对象有一把锁,多个线程多个锁!对象锁的同步和异步Synchronized 应用第01课 线程安全和锁 Synchronized 概念进程...原创 2019-06-25 14:52:55 · 180 阅读 · 0 评论 -
Java多线程基础(02) ———— 可重入锁与Synchronized的其他特性
目录第02课 可重入锁与 Synchronized 的其他特性Synchronized 锁重入Synchronized 的其他特性volatile 与 synchronized 的区别volatile 的使用第02课 可重入锁与 Synchronized 的其他特性上一节中基本介绍了进程和线程的区别、实现多线程的两种方式、线程安全的概念以及如何使用 Synchro...原创 2019-06-25 17:26:41 · 278 阅读 · 0 评论 -
Think In Java | 01 面向对象
Java | 面向对象OOP文章目录Java | 面向对象OOP面向对象的抽象过程面向对象的抽象过程所有编程语言都提供抽象机制。汇编语言是对底层机器的轻微抽象。接着出现的许多所谓“命令式”语言(如FORTRAN、BASIC、C等)都是对汇编语言的抽象。但是它们所作的主要抽象仍要求在解决问题时要基于计算机的结构,而不是基于所要解决的问题的结构来考虑。面向对象方式通过向程序员提供表示问题空间中的元素的工具而更进了一步。这种表示方式非常通用,使得程序员不会受限于任何特定类型的问题。我们将问题空间中的元素原创 2021-08-31 09:33:18 · 122 阅读 · 0 评论 -
Java 基础知识 | 02 BigDecimal
BigDecimal基本使用使用示例:// 初始化BigDecimal bd1=new BigDecimal("456");BigDecimal bd2=new BigDecimal("123");// 加BigDecimal add=bd1.add(bd2);// 减BigDecimal subtract=bd1.subtract(bd2); // 乘BigDecimal multiply=bd1.multiply(bd2); // 除BigDecimal divide=bd原创 2021-05-11 20:55:36 · 271 阅读 · 2 评论 -
Java 基础知识(1) —— 流Stream
Java 8 StreamJava 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate原创 2021-03-21 15:32:53 · 163 阅读 · 0 评论 -
集合框架 | ArrayList
文章目录集合框架 | ArrayList实现方式数据结构实现接口操作逻辑扩容删除集合框架 | ArrayList实现方式数据结构实现接口因为 ArrayList 是基于数组实现的,所以支持快速随机访问。RandomAccess 接口标识着该类支持快速随机访问。public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable,原创 2020-07-09 17:51:50 · 106 阅读 · 0 评论 -
静态代理、动态代理、反射、AOP的关系、原理及实现方式
目录静态代理动态代理动态代理和反射的关系动态代理的几种实现方式Java实现动态代理的大致步骤Java 实现动态代理主要涉及哪几个类动态代理实现cglib动态代理AOP静态代理所谓静态代理,就是代理类是由程序员自己编写的,在编译期就确定好了的。来看下下面的例子:public interface HelloSerivice { pu...原创 2019-06-13 20:12:55 · 867 阅读 · 1 评论 -
JDK | 整型的缓存机制
本文将介绍Java中Integer的缓存相关知识。这是在Java 5中引入的一个有助于节省内存、提高性能的功能。首先看一个使用Integer的示例代码,从中学习其缓存行为。接着我们将为什么这么实现以及他到底是如何实现的。你能猜出下面的Java程序的输出结果吗。如果你的结果和真正结果不一样,那么你就要好好看看本文了。package com.javapapers.java;public cl...转载 2019-06-11 19:14:56 · 257 阅读 · 0 评论 -
JDK | 为什么说Java中只有值传递
Java是值传递还是引用传递?Java是什么传递?Java是值传递吗?Java是引用传递吗?为什么Java是值传递?为什么Java不是引用传递?什么是值传递?什么是引用传递?对于初学者来说,要想把这个问题回答正确,是比较难的。在第二天整理答案的时候,我发现我竟然无法通过简单的语言把这个事情描述的很容易理解,遗憾的是,我也没有在网上找到哪篇文章可以把这个事情讲解的通俗易懂。所以,就有...转载 2019-06-10 20:54:48 · 185 阅读 · 0 评论 -
JDK | JDK6和JDK7中substring的原理及区别
String是Java中一个比较基础的类,每一个开发人员都会经常接触到。而且,String也是面试中经常会考的知识点。String有很多方法,有些方法比较常用,有些方法不太常用。今天要介绍的subString就是一个比较常用的方法,而且围绕subString也有很多面试题。substring(int beginIndex, int endIndex)方法在不同版本的JDK中的实现是不同的。了解...转载 2019-06-11 19:36:09 · 135 阅读 · 0 评论 -
JDK | Switch对String的支持
Java 7中,switch的参数可以是String类型了,这对我们来说是一个很方便的改进。到目前为止switch支持这样几种数据类型:byteshortintcharString。但是,作为一个程序员我们不仅要知道他有多么好用,还要知道它是如何实现的,switch对整型的支持是怎么实现的呢?对字符型是怎么实现的呢?String类型呢?有一点Java开发经验的人这个时候都会猜测switc...转载 2019-06-11 19:50:12 · 14488 阅读 · 1 评论 -
JDK | Set如何保证元素不重复
在Java的Set体系中,根据实现方式不同主要分为两大类。HashSet和TreeSet。1、HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束2、TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值在HashSet中,基本的操作都是有HashM...转载 2019-06-11 19:59:29 · 1126 阅读 · 0 评论 -
JDK | 详解Map家族
目录Map大家族的那点事儿MapAbstractMapTreeMapHashMapWeakHashMapLinkedHashMapConcurrentHashMap参考文献Map大家族的那点事儿MapMap是一种用于快速查找的数据结构,它以键值对的形式存储数据,每一个键都是唯一的,且对应着一个值,如果想要查找Map中的数据,只需要传入一个...转载 2019-06-18 11:32:34 · 605 阅读 · 0 评论 -
BIO、NIO和AIO的区别、三种IO的原理与用法
目录IOBIONIOAIO区别及联系各自适用场景使用方式IO什么是IO? 它是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上是内置在操作系统中的。单独的程序一般是让系统为它们完成大部分的工作。在 Java 编程中,直到最近一直使用 流 的方式完成 I/O。所有 I/O 都被视...原创 2019-06-13 20:05:03 · 44773 阅读 · 10 评论