自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Java集合与数据结构 反射、枚举及Lambda表达式

Java集合与数据结构 反射、枚举及Lambda表达式反射定义用途反射基本信息反射相关的类Class类(反射机制的起源 )常用获得类相关的方法常用获得类中属性相关的方法(以下方法返回值为Field相关)获得类中注解相关的方法获得类中构造器相关的方法(以下方法返回值为Constructor相关)获得类中方法相关的方法(以下方法返回值为Method相关)反射优点和缺点枚举背景及定义使用switch语句常用方法枚举优点缺点Lambda表达式Lambda表达式的语法函数式接口语法精简Lambda在集合当中的使用La

2021-08-21 17:14:15 798 1

原创 Java集合与数据结构 Map 和 Set

Java集合与数据结构 Map和Set搜索树操作:查找、插入、删除搜索树二叉搜索树又称二叉排序树,它或者是一棵空树**,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树操作:查找、插入、删除逻辑代码:class BinarySearchTree { static class BSNode { public int val;

2021-08-21 13:59:10 248

原创 Java集合与数据结构 排序

Java集合与数据结构 排序概念插入排序直接插入排序代码实现性能分析希尔排序代码实现性能分析选择排序直接选择排序代码实现性能分析堆排序代码实现性能分析交换排序冒泡排序代码实现性能分析快速排序代码实现性能分析概念排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。平时的上下文中,如果提到排序,通常指的是排升序(非降序)。通常意义上的排序,都是指的原地排序(in place sort)。稳定性: 两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,

2021-08-17 22:55:54 381 3

原创 Java集合与数据结构 优先级队列【堆】

Java集合与数据结构 优先级队列【堆】二叉树的顺序存储存储方式堆(heap)操作-向下调整堆的应用-优先级队列操作-入队列操作-出队列二叉树的顺序存储存储方式使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。这种方式的主要用法就是堆的表示。下标关系:已知双亲(parent)的下标,则:左孩子(left)下标 = 2 * parent + 1;右孩子(right)下标 = 2 * parent + 2;已知孩子(不区

2021-08-16 14:45:23 152

原创 Java集合与数据结构 二叉树

Java集合与数据结构 二叉树树型结构概念重要概念树的表示形式二叉树概念二叉树的基本形态两种特殊的二叉树二叉树的性质树型结构概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的节点,称为根节点,根节点没有前驱节点。除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、…、Tm,其中每一个集合 Ti (1 <= i <

2021-08-14 17:28:58 115 1

原创 Java集合与数据结构 栈和队列

Java集合与数据结构 栈和队列栈(Stack)栈(Stack)概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶...

2021-07-23 14:31:48 120 1

原创 Java虚拟机(JVM)

Java虚拟机(JVM)JVM概念虚拟机简介JVM和其他两个虚拟机的区别JVM 布局(HotSpot)(JDK 1.8)堆JVM 栈(Java 虚拟机栈)本地方法栈程序计数器元空间(JDK 1.8)小结JVM 参数调优JVM概念虚拟机简介JVM(Java Virtual Machine的简称。意为Java虚拟机。虚拟机:指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。常见的虚拟机:JVM、VMwave、Virtual BoxJVM和其他两个虚拟机的区别

2021-06-02 21:43:05 276 2

原创 多线程(八):多线程高阶

多线程(八):多线程高阶乐观锁CAS(实现乐观锁的一种机制)乐观锁乐观锁假设认为数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会正式对数据是否产生并发冲突进行检测,如果发现并发冲突了,则返回用户错误的信息,让用户决定如何去做。CAS(实现乐观锁的一种机制)CAS: 全称 Compare and swap ,字面意思:”比较并交换“。假设内存中的原数据V,旧的预期值A,需要修改的新值B。比较 A 与 V 是否相等。(比 较)如果比较相等,将 B 写入 V。(交换)返回操作

2021-06-01 11:50:12 150 1

原创 多线程(七):单例模式+阻塞式队列

多线程(七):单例模式+阻塞式队列单例模式饿汉模式懒汉模式自定义阻塞队列单例模式单例模式:整个程序的运行中只存储了一个对象。饿汉模式优点:不用加锁也是线程安全的。饿汉模式的实现,示例代码如下:/* * 饿汉模式 */public class ThreadDemo84 { static class Singleton { //1.创建私用的构造函数(防止其他类直接创建) private Singleton() { }

2021-05-31 11:27:09 179 1

原创 多线程(六):线程池

多线程(六):线程池线程池的定义线程池的创建方式(7种)线程池的第一种创建方式:创建固定个数的线程池线程的缺点:线程的创建需要开辟内存资源:本地方法栈、虚拟机栈、程序计数器等线程私有变量的内存。频繁地创建和销毁线程,会带来一定的性能开销。使用线程不能很好的管理任务和友好的拒绝任务。在《Java开发手册》中,也有提到。线程池的定义使用池化技术来管理和使用线程的技术,就叫做线程池。线程池的创建方式(7种)线程池的第一种创建方式:创建固定个数的线程池public class Threa

2021-05-31 08:01:05 250 1

原创 多线程(五):解决线程不安全方案

多线程(五):解决线程不安全方案volatile关键字锁操作锁操作的关键步骤Java中解决线程安全操作(锁的)线程不安全原因解决方案①CPU抢占 执行(万恶之源)无法解决②代码非原子性在关键代码处,让使用的CPU排队执行(加锁)③(内存)不可见可使用 volatile 关键字④编译器/代码优化(指令重排序)可使用 volatile 关键字⑤多个线程同时修改了同一个变量不通用,修改难度大volatile关键字volatile 关键字 轻量级解决线

2021-05-16 21:54:39 1010 13

原创 多线程(四):线程安全

多线程(四):线程安全观察线程安全和线程不安全观察线程安全观察线程不安全线程安全概念导致线程不安全的原因观察线程安全和线程不安全观察线程安全单线程是线程安全的,示例代码如下:public class ThreadDemo25 { static class Counter { //定义私有变量 private int num = 0; //定义任务执行次数 private final int maxSize = 100000;

2021-05-09 10:34:49 931 5

原创 多线程(三):线程的状态

多线程(三):线程的状态观察线程的所有状态状态转换过程观察线程的所有状态线程的状态是一个枚举类型 Thread.State,我们可以通过程序来观察线程的所有状态。public class ThreadDemo22 { public static void main(String[] args) { //打印所有线程状态 for (Thread.State item : Thread.State.values()) { System.out

2021-05-09 00:34:02 131

原创 多线程(二):Thread 类及常见方法

多线程(二):Thread 类及常见方法Thread 的常见构造方法ThreadGroup:线程分组Thread 的几个常见属性线程优先级线程分类后台线程(守护线程)用户线程【默认为用户线程】Thread 类是 JVM 用来管理线程的一个类,换句话说,每个线程都有一个唯一的 Thread 对象与之关联。Thread 的常见构造方法示例如下public class ThreadDemo11 { public static void main(String[] args) {

2021-05-08 23:04:42 155

原创 多线程(一):认识线程,创建线程和线程的常用方法

多线程(一):认识线程,创建线程和线程的常用方法概念例程:实现字符缓慢输出多线程的优势-增加运行速度线程的创建方式,动手接触线程(三类六种)第一类:继承Thread类来实现线程的创建(2种创建方式)第二类:实现Runnable接口的方式来实现线程的创建(3种创建方式)第三类:实现Callable接口的方式来实现线程的创建(1种创建方式)线程休眠(实现方式有三种)典型例题:使用两个线程来打印"AABBCCDD"。概念进程是系统分配资源的最小单位,线程是系统调度的最小单位。一个进程内的线程之间是可以共享资源

2021-05-06 20:26:54 282 6

原创 初识操作系统

初识操作系统1.硬件组成:冯诺依曼体系结构2.操作系统(Operator System)概念OS定位设计OS的目的3.进程进程的初步认识时间片并发与并行内核态与用户态进程中的上下文进程状态进程/线程小结进程小结线程小结注意事项:线程的数量并不是越多越好1.硬件组成:冯诺依曼体系结构我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。具体什么是冯诺依曼体系结构,如图:输入设备:包括键盘,鼠标,扫描仪,写板等。中央处理器(CPU):含有运算器和控制器等。输出设备:显示

2021-05-04 20:35:43 167

原创 Java集合与数据结构 顺序表+链表

Java集合与数据结构 顺序表+链表线性表顺序表概念及结构代码实现线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。顺序表概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查

2021-04-26 08:42:58 229

原创 Java集合与数据结构 List

Java集合与数据结构 List预备知识-泛型(Generic)泛型的引入泛型的分类泛型类的定义的简单演示泛型背后作用时期和背后的简单原理泛型类的使用泛型总结预备知识-包装类(Wrapper Class)基本数据类型和包装类直接的对应关系包装类的使用,装箱(boxing)和拆箱(unboxing)自动装箱(autoboxing)和自动拆箱(autounboxing)javap 反编译工具List 的使用常见方法示例试题练习预备知识-泛型(Generic)泛型的引入泛型的分类泛型类的定义的简单演示泛

2021-01-22 20:19:34 239 2

原创 Java基础语法 String 类常见操作

Java基础语法 String 类常见操作字符串常见操作字符串比较字符串查找字符串替换字符串拆分字符串截取其他操作方法StringBuffer 和 StringBuilder字符串常见操作字符串比较通过使用过String类提供的equals()方法,该方法本身是可以进行区分大小写的相等判断。除了这个方法之外,String类还提供有如下的比较操作:代码示例: 是否区分大小写比较public class TestDemo { public static void main(String[]

2021-01-20 17:26:42 302 1

原创 Java基础语法 认识 String 类

Java基础语法 认识 String 类创建字符串字符串比较相等字符串常量池理解字符串不可变字符, 字节与字符串字符与字符串字节与字符串字符, 字节与字符串小结创建字符串常见的构造 String 的方式public class Test { public static void main(String[] args) { String str1 = "hello";//方法一 String str2 = new String("hello");//方法二

2021-01-19 21:02:17 263 1

原创 Java基础语法 认识异常

Java基础语法 认识异常异常的背景初识异常除以 0数组下标越界访问 null 对象防御式编程异常的好处异常的基本用法捕获异常异常处理流程抛出异常异常说明关于 finally 的注意事项Java 异常体系自定义异常类异常的背景初识异常我们曾经的代码中已经接触了一些 “异常” 了. 例如:除以 0public class TestDemo { public static void main(String[] args) { System.out.println(10/0);

2021-01-19 16:52:57 217 1

原创 Java面向对象总结性项目 之 图书馆管理代码

Java面向对象总结性项目 之 图书馆管理代码简介核心需求类的设计架构创建图书相关的类创建书架相关的类创建用户相关的类对于管理员对于用户创建 Main 类和 main 方法, 搭建整体逻辑实现具体的每个 Operation该Java程序运行结果用户端管理员简介利用前面所学的知识点:类,抽象类,封装,继承,多态,接口等进行的一个简单的代码练习。核心需求简单的登录功能对于管理员,实现以下功能:查找书籍增加书籍删除书籍显示所有图书退出系统对于用户,实现以下功能:查询书籍借阅书籍归还书

2021-01-18 19:06:46 1294 9

原创 Java入门(六)之 时间和空间复杂度

Java入门(六)之 时间和空间复杂度算法效率时间复杂度时间复杂度的概念大O的渐进表示法常见时间复杂度计算举例空间复杂度时间复杂度的概念常见空间复杂度计算举例复杂度是衡量一个算法效率的。时间效率:时间复杂度空间效率:空间复杂度算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在

2021-01-12 18:34:01 301 1

原创 Java入门(五)之 类和对象

Java入门(五)之 类和对象类与对象的初步认知类和类的实例化类的成员字段/属性/成员变量方法 (method)static 关键字1.修饰属性2.修饰方法代码块修饰类小结封装private实现封装getter和setter方法构造方法基本语法this关键字认识代码块什么是代码块普通代码块构造代码块静态代码块补充说明toString方法匿名对象类与对象的初步认知C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。而JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不

2021-01-11 00:30:21 603 1

原创 Java入门(四)之 数组的定义与使用

Java入门(四)之 数组的定义与使用<上>数组基本用法什么是数组创建数组数组的使用数组作为方法的参数基本用法理解引用类型认识 null初识 JVM 内存区域划分数组作为方法的返回值数组练习数组转字符串数组拷贝找数组中的最大元素求数组中元素的平均值查找数组中指定元素(顺序查找)查找数组中指定元素(二分查找)检查数组的有序性数组排序(冒泡排序)数组逆序数组数字排列二维数组数组基本用法什么是数组数组:一块连续的内存,且存储的是相同数据类型的集合。数组本质上就是让我们能 “批量” 创建相同类型

2021-01-10 02:18:09 955 2

原创 Java入门(三)之方法的使用

Java入门(三)之方法的使用方法的基本用法什么是方法方法存在的意义:固定写法方法的定义语法方法调用的执行过程实参与形参的关系无返回值的方法方法的重载方法递归方法的基本用法什么是方法方法就是一个代码片段。类似于 C 语言中的 “函数”。方法存在的意义:是能够模块化的组织代码(当代码规模比较复杂的时候)。做到代码被重复使用, 一份代码可以在多个位置使用。让代码更好理解更简单。直接调用现有方法开发。便于解耦。固定写法public static 返回值 方法名(形式参数){

2021-01-09 03:04:58 2064 1

原创 Java入门经典例题(二)

Java入门经典例题(二)这期依然为大家带来Java入门经典例题。一. 编写程序数一下 1到 任意整数 的所有整数中出现多少个数字9。上代码import java.util.Scanner;public class TextDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个正整数

2021-01-08 19:21:41 11268 23

原创 Java入门经典例题(一)

Java入门经典例题(一)一.根据年龄,来打印出当前年龄的人是少年(低于18),青年(19-28),中年(29-55),老年(56以上)。上代码import java.util.Scanner;public class TextDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入需要判断

2021-01-07 17:30:18 1880 2

原创 Java入门(二)

Java入门(二)Java中的运算符1.算术运算符基本四则运算符+ - * / %增量赋值运算符 += -= *= /= %=自增/自减运算符 ++ --2.关系运算符3.逻辑运算符逻辑与 &&逻辑或 ||逻辑非 !& 和 | (不推荐使用)4.位运算符按位与 &按位或 |按位取反 ~按位异或 ^5.移位运算(了解)左移 <<右移 >>无符号右移 >>>6.条件运算符7.运算符的优先级8.小结典型例题Java中的关键字用于定义访问权限

2021-01-06 15:58:39 7590 27

原创 Java入门(一)

Java入门(一)Java概述Java中重要的特性Java的运行机制初识Java和main方法最简单的Java程序mian方法的示例Java中的数据类型Java概述Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。Java中重要的特性1.简单性Java语法是C++语法的一个“纯净版本”

2021-01-05 17:53:36 3765 18

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除