
java
文章平均质量分 93
从java小白到实践
东风难破
这个作者很懒,什么都没留下…
展开
-
Java并发编程:volatile关键字解析
本章目录一.内存模型的相关概念1.1 缓存不一致问题的产生1.2 缓存不一致问题的解决二.并发编程中的三个概念2.1 原子性2.2 可见性2.3 有序性三 Java内存模型3.1 原子性3.2 可见性3.3 有序性四 深入剖析volatile关键字4.1 volatile关键字的两层语义4.2 volatile保证原子性吗?4.3 volatile能保证有序性吗?4.4 volatile的原理和实现机制五 使用volatile关键字的场景5.1 状态标记量5.2 double checkvolatile这转载 2021-10-15 09:57:36 · 475 阅读 · 0 评论 -
Java设计模式(十)—状态模式、策略模式、职责链模式
本章目录标题第24章 状态模式24.1 应用场景:APP抽奖24.2 状态模式24.3 应用案例:APP抽奖14.4 状态模式的注意事项第24章 状态模式24.1 应用场景:APP抽奖请编写程序完成 APP 抽奖活动 具体要求如下:(1)假如每参加一次这个活动要扣除用户 50 积分,中奖概率是 10%(2)奖品数量固定,抽完就不能抽奖(3)活动有四个状态: 可以抽奖、不能抽奖、发放奖品和奖品领完 4) 活动的四个状态转换关系图24.2 状态模式基本介绍(1)状态模式(State Pat原创 2021-08-08 19:32:53 · 798 阅读 · 0 评论 -
Java设计模式(九)—中介者模式、备忘录模式、解释器模式
本章目录标题第21章 中介者模式21.1 应用场景:智能家居21.2 传统方式21.3 中介者模式21.4 应用案例:智能家居21.5 中介者模式的注意事项第22章 备忘录模式22.1 应用场景:游戏角色状态恢复问题22.2 传统方案解决游戏角色恢复22.3 备忘录模式22.4 应用案例:游戏角色恢复22.5 备忘录模式的注意事项和细节第23 章 解释器模式23.1 应用场景:四则运算问题23.2 传统方案23.3 解释器模式23.4 应用案例:解释器模式来实现四则第21章 中介者模式21.1 应用场景原创 2021-08-06 10:36:50 · 531 阅读 · 0 评论 -
Java设计模式(八)—访问者模式、迭代器模式、观察者模式
本章目录标题第18章 访问者模式18.1 应用场景:测评系统18.2 传统方式18.3 访问者模式18.4 应用案例:测评系统18.5 访问者模式的注意事项第19章 迭代器模式19.1 需求:院系展示19.2 传统方式19.3 迭代器模式19.4 应用案例:院系展示19.5 迭代器模式在JDK-ArrayList 集合应用19.6 迭代器模式的注意事项第20章 观察者模式20.1 应用场景:天气预报20.2 传统模式20.3 观察者模式20.4 应用案例:天气预报第18章 访问者模式18.1 应用场景:原创 2021-08-04 12:21:56 · 955 阅读 · 2 评论 -
Java设计模式(七)—代理模式、模板方法模式、命令模式
本章目录标题第15章 代理模式15.1 代理模式(Proxy)15.2 静态代理15.3 动态代理15.4 Cglib 代理(子类代理)第15章 代理模式15.1 代理模式(Proxy)基本介绍(1)代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。这样做的好处 是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。(2)被代理的对象:远程对象、创建开销大的对象、需要安全控制的对象(3)代理模式有不同的形式, 主要有三种 静态代理、动态代原创 2021-08-02 10:25:37 · 586 阅读 · 0 评论 -
Java设计模式(六)—组合模式、外观模式、享元模式
本章目录第 12 章组合模式(Composite Pattern)12.1 使用场景12.2 传统方案解决学校院系展示12.3 组合模式12.4 组合模式的应用案例12.5 组合模式在 JDK 集合的源码分析第 12 章组合模式(Composite Pattern)12.1 使用场景一个学校院系展示需求:编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图:12.2 传统方案解决学校院系展示传统方案解决学校院系展示存在的原创 2021-07-29 16:57:54 · 585 阅读 · 0 评论 -
Java设计模式(五)—适配器模式、桥接模式、装饰者模式
本章目录第九章 适配器模式9.1 基本情况9.2 类适配器9.2.1 类适配器模式的类9.2.2 应用案例第九章 适配器模式9.1 基本情况基本介绍(1)适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本 因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)(2)适配器模式属于结构型模式(3)主要分为三类:类适配器模式、对象适配器模式、接口适配器模式工作原理1(1)适配器模式:将一个类的接口转换成另原创 2021-07-28 20:53:18 · 364 阅读 · 0 评论 -
Java设计模式(四)—原型模式、建造者模式
这里写目录标题第七章 原型模式7.1 克隆羊问题7.2 传统方式解决克隆羊问题7.3 原型模式第七章 原型模式7.1 克隆羊问题现在有一只羊 tom,姓名为: tom, 年龄为:1,颜色为:白色,请编写程序创建和 tom 羊 属性完全相同的 10只羊。7.2 传统方式解决克隆羊问题类图代码实现(1)羊类public class Sheep { private String name; private int age; private String color; public S原创 2021-07-22 20:40:30 · 435 阅读 · 1 评论 -
Java设计模式(三)—单例设计模式、工厂模式
本章目录第 5 章 单例设计模式5.1 单例设计模式介绍5.2 饿汉式(静态常量)5.3 饿汉式(静态代码块)5.4 懒汉式(线程不安全)5.5 懒汉式(线程安全,同步方法)5.6 懒汉式(同步代码块)5.7 双重检查5.8 静态内部类5.9 枚举5.10 单例模式在 JDK 应用的源码分析5.11 单例模式注意事项和细节说明第 5 章 单例设计模式5.1 单例设计模式介绍单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方法(原创 2021-06-27 21:16:45 · 558 阅读 · 1 评论 -
Java设计模式(二)—UML类图、设计模式概述
本章目录第 3 章 UML 类图3.1 UML 基本介绍3.2 UML 图3.3 类图描述类之间的关系3.3.1 类图—依赖关系(Dependence)3.3.2 类图—泛化关系(generalization)3.3.3 类图—实现关系(Implementation)3.3.4 类图—关联关系3.3.5 类图—聚合关系(Aggregation)3.3.6 类图—组合关系(Composition)第 3 章 UML 类图3.1 UML 基本介绍UML——Unified modeling langua原创 2021-06-27 17:01:38 · 401 阅读 · 0 评论 -
Java设计模式(一)-七大原则
提示:本文参考尚硅谷韩顺平教学内容本章目录一 设计模式七大原则1.1 设计模式的目的2.2 设计模式七大原则2.3 单一职责原则2.3.1基本介绍3.1.2 单一职责原则注意事项和原则2.4 接口隔离原则(Interface Segregation Principle)2.4.1基本介绍2.5 依赖倒转原则(Dependence Inversion Principle)2.5.1基本介绍2.5.2应用实例2.5.3 依赖关系传递的三种方法和应用案例2.5.4依赖倒转原则的注意事项和细节一 设计模式七大原创 2021-06-27 14:48:05 · 721 阅读 · 1 评论 -
Java数据结构与算法(九)-程序员常用的10中算法
本章目录第14章 程序员常用的10中算法14.1 二分查找算法(非递归)14.1.1 二分查找算法(非递归)介绍14.2 分治算法14.2.1 分治算法介绍14.2.2 分治算法最佳实践-汉诺塔14.3 动态规划算法14.3.1 应用场景-背包问题14.3.2 动态规划算法介绍14.3.3 动态规划算法最佳实践-背包问题14.4 KMP算法14.4.1 应用场景-字符串匹配问题14.4.2 暴力匹配14.4.3 KMP 算法介绍14.4.4 KMP 算法最佳应用-字符串匹配问题14.5 贪心算法14.5.1原创 2021-06-24 20:07:41 · 998 阅读 · 1 评论 -
Java数据结构与算法(八)-多路查找树、图
本章目录第12章 多路查找树12.1 二叉树与B树12.1.1 二叉树的问题分析12.1.2 多叉树12.1.3 B树的基本介绍12.2 2-3树12.2.1 2-3 树介绍12.2.2 2-3树的应用案例12.2.3 其他说明12.3 B 树、B+树和 B*树12.3.1 B树的介绍12.3.2 B+树12.3.4 B*树第12章 多路查找树12.1 二叉树与B树12.1.1 二叉树的问题分析二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1 亿), 就原创 2021-06-18 22:10:26 · 320 阅读 · 0 评论 -
Java数据结构与算法(七)-树结构的实际应用
本章目录十一 树结构的实际应用11.1 堆排序11.1.1 堆排序的基本介绍11.1.2 堆排序基本思想11.1.3 堆排序图解说明11.1.4 堆排序的代码实现11.2 哈夫曼树11.2.1 基本介绍11.2.2 哈夫曼树集合重要概念11.2.3 赫夫曼树创建思路图解11.2.4 哈夫曼树创建的代码十一 树结构的实际应用11.1 堆排序11.1.1 堆排序的基本介绍堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复 杂度均为 O(nlogn),它也是原创 2021-06-18 21:27:49 · 875 阅读 · 0 评论 -
Java数据结构与算法(六)-树
本章目录十 树10.1 二叉树10.1.1 为什么需要树这种数据结构10.1.2 树示意图10.1.3 二叉树的概念10.1.4 二叉树遍历十 树10.1 二叉树10.1.1 为什么需要树这种数据结构数组存储方式的分析**优点:**通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。**缺点:**如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低ArrayList中维护了一个object类型的数组elementData.所以它也是用数组来实现的。当添加原创 2021-06-10 10:30:11 · 213 阅读 · 1 评论 -
Java数据结构和算法(五)-查找算法、哈希表
本行目录八 查找算法8.1 查找算法介绍8.2 线性查找8.2.1 线性查找思路8.2.2 线性查找的实现8.3 二分查找8.3.1 二分查找思路8.3.2 二分查找的代码实现8.3.3 二分查找的应用8.4 插值查找8.4 1 插值查找原理8.4.2 插值查找的注意事项8.4.3 插值查找的代码实现8.5 斐波那契(黄金分割法)查找8.5.1 插值查找原理8.5.2斐波那契(黄金分割法)原理:8.5.3 斐波那契查找的实现八 查找算法8.1 查找算法介绍在 java 中,我们常用的查找有四种:(1原创 2021-06-08 15:21:54 · 322 阅读 · 0 评论 -
Java数据结构和算法(四)-排序算法(全)
本章标题七 排序7.1 排序分类7.2 算法时间复杂度7.2.1 度量一个程序(算法)执行时间的两种方法7.2.2 时间频度7.2.3 时间频度举例说明7.2.4 时间复杂度7.2.5 常见的时间复杂度7.2.6 平均时间复杂度和最坏时间复杂度7.3 算法的空间复杂度7.5 冒泡排序7.5.1 基本介绍7.5.2 冒泡排序的实现7.5.3 冒泡排序的优化7.6 选择排序7.6.1 基本介绍7.6.2 选择排序思路分析图7.6.3 选择排序的代码实现7.7 插入排序7.7.1插入排序法介绍:7.7.2插入排转载 2021-06-07 11:09:20 · 106 阅读 · 0 评论 -
Java数据结构和算法(三)-栈、递归
本章目录一 栈1.1 栈的一个实际需求1.2 栈的基本原理1.3 栈的应用场景1.4 用数组模拟栈1.5 栈实现综合计算器1.5.1. 思路分析1.5.2 代码实现(中缀表达式)1.6 前缀、中缀、后缀表达式1.6.1 基本原理1.6.2 逆波兰表达式实现计算器1.7 中缀表达式转后缀表达式1.7.1 中缀表达式转后缀表达式的步骤1.7.2 中缀表达式转后缀表达式的实现一 栈1.1 栈的一个实际需求请输入一个表达式计算式:[722-5+1-5+3-3] 点击计算1.2 栈的基本原理基本概念原创 2021-06-06 09:39:44 · 805 阅读 · 2 评论 -
Java数据结构和算法(二)-双链表与单项环型链表
本章标题一 双链表1.1 双向链表的操作与分析1.2 双向链表的代码实现二级目录三级目录一 双链表1.1 双向链表的操作与分析使用带head头的双向链表实现-水浒传英雄排行榜管理单向链表的缺点:(1)单向链表,查找方向只能是一个方向,而双向链表可以向前或者向后查找。(2)单向链表不能自我删除,需要靠辅助节点 ,而双向链表,则可以自我删除,所以前面我们单链表删除时节点,总是找到 temp,temp 是待删除节点的前一个节点.双向链表遍历,添加,修改和删除(1)遍历 方和 单链表一样,只是原创 2021-06-04 10:01:16 · 123 阅读 · 3 评论 -
Java数据结构和算法(一)-稀疏矩阵、队列、单链表
这里写目录标题一 稀疏矩阵1.1 稀疏矩阵的基本内容1.2 应用场景举例1.3 实现思路1.4 代码实现二一 稀疏矩阵1.1 稀疏矩阵的基本内容当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。1.2 应用场景举例五子棋棋盘实例:1.3 实现思路创建一个原始的二维数组11*11;0:表示没有棋子,1:黑子;2:蓝子将二维数组转为稀疏矩阵(1)先遍历二维数组,得到非0数据的个数(2)创建对应的稀疏矩阵(3)给稀疏矩阵赋值将稀疏矩阵写入文件将稀疏原创 2021-06-03 09:42:06 · 1068 阅读 · 2 评论 -
eclipse的jsp文件中<option>标签中嵌入JSTL标签出现大量标红问题的解决
一 说明这是eclipse的一个bug,无法识别在< option>标签中的JSTL,只需要安装补丁即可,所需补丁可以官网下载:官网补丁如果嫌麻烦也可以直接网盘提取:链接:网盘补丁提取码:zrog二 解决问题在学习过程中,导入一个用例,其中的jsp文件中自< option >标签开始,出现大量的标红。三 解决过程下载“说明”中的补丁文件,无需解压。打开eclipse–>help–>install New SoftwareAdd–>archiv原创 2021-04-04 15:36:23 · 758 阅读 · 0 评论 -
eclipse的新建工程中没有C/C++选项问题的解决
今天遇到一个eclipse新建工程的选项中没有C/C++ Project的问题。首先声明自己的安装软件及环境(目前小白看到的大部分文章都没有说明自己解决问题所处的环境,导致许多小小白走了很多弯路)。一 安装软件:eclipse2020,win64。官网上可以免费下载。二 安装环境:JDK14,这个版本是Install eclipse的时候自动安装JDK,环境变量也是自动配置的(之前手动安装并配置过JDK1.7,并不影响eclipse正常工作)。三 出现的问题:此时eclipse并不.原创 2020-10-13 19:18:13 · 4425 阅读 · 7 评论