![](https://img-blog.csdnimg.cn/20200509000714913.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java学习
文章平均质量分 66
基础学习
ysw!不将就
不将就
展开
-
RabbitMQ快速入门 学习笔记
MQ本质上是一个队列,FIFO先入先出原则。只不过队列中存放的内容是message而已。还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。默认情况下RabbitMQ退出或由于某种原因崩溃时,它忽略队列和消息,除非告知它不要这样做。确保消息不会丢失需要做两件事:我们需要将队列和消息都标记为持久化。原创 2023-03-27 11:36:01 · 737 阅读 · 1 评论 -
Java,从网络URL中下载文件并保存到本地
Java,从网络URL中下载文件并保存到本地1. 代码演示创建Maven项目,导入Hutool工具包<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.4.5</version></dependency>代码import cn.hutool.c原创 2021-11-02 17:04:17 · 5410 阅读 · 1 评论 -
Java替换或删除字符串中的指定字符
1. 代码演示public class TestDemo { @Test public void test() { //需要替换的字符串 String target = "验证码:${code},您正在登录管理后台,5分钟内输入有效。"; //正则表达式 String regEx = "[$]"; //替换之后的新字符 String replace = ""; Patt原创 2021-09-09 14:34:59 · 1459 阅读 · 0 评论 -
Java 8 新特性整理
Java8 新特性一、Lambda表达式1.1 简介Lambda是一个匿名函数,可将该表达式理解为一段可传递的代码。可以使代码更简洁灵活,使代码风格更加紧凑,提升Java语言的表达能力。 /** * @return void * @Param * @Date 22:04 2021/7/26 * @Description: 匿名内部类 **/ @Test public void test() { Comparato原创 2021-08-13 11:20:04 · 100 阅读 · 0 评论 -
Java反射学习笔记
Java反射机制一、概述概述Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期间借助Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法加载完类之后,在堆内存的方法区中就产生一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的内部结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射相关APIjava.lang.Class:代原创 2020-08-01 11:07:15 · 179 阅读 · 0 评论 -
Java异常处理学习笔记
Java异常处理一、概述编写代码过程中难免会出现一些问题,例如客户端的输入格式、网络是否流畅等。此时程序员则需要考虑处理异常,Java语言中发生的不正常情况称为"异常"(开发过程中的语法错误或逻辑错误不是异常)Java程序在执行过程中发生的异常事件可分为两类:Error:Java虚拟机无法解决的严重问题。如JVM系统内部错误、资源耗尽等严重情况。例如StackOverflowError和OOMException:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理原创 2020-07-31 09:09:44 · 183 阅读 · 0 评论 -
Java常用类,String、Arrays工具类、日期API、Java比较器
Java中的常用类一、String1.1 概述String类代表字符串,Java中所有字符串字面值(“abc”)都作为该类的实例String是一个final类(不可被继承),代表不可变的字符序列字符串是常量,用双引号引起来表示。它们的值在创建后不能被修改String对象的字符内容是存储在一个字符数据vlaue[]中String类实现了Serializable接口:表示字符串支持序列化实现了Comparable接口:即String可以比较大小1.2 不可变性通过字面量的方式(区别去n原创 2020-07-31 09:07:02 · 227 阅读 · 0 评论 -
Java面向对象总结
面向对象编程一、面向对象概述1. 面向对象的编程思想1.1 面向过程(POP)与面向对象(OOP)二者都是一种思想,面向对象是相对于面向过程而言。面向过程强调的是功能行为,以函数为最小单位。面向对象,将功能封装进对象中,强调具备了功能的对象,以类为最小单位。面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等“人把大象装进冰箱”人{ 打开(冰箱){ 冰箱.打开(); } 抬起(大象){ 大象.进入(冰箱); } 关闭(冰箱){原创 2020-07-28 07:54:12 · 315 阅读 · 1 评论 -
SpringMVC学习笔记
SpringMVC一、概述1.1 三层架构开发框架一般基于两种形式,一种为C/S架构,即客户端/服务器;另一种为B/S架构,即浏览器服务器架构。在JavaEE开发中,几乎都是B/S架构。B/S架构中,系统标准的三层架构包括:表现层、业务层、持久层。表现层:即Web层,它负责接收客户端请求,向客户端响应结果,通常客户端使用HTTP协议请求web层,web需要接收HTTP请求,完成HTTP响应。表现成包括展示层和控制层,控制层负责接收请求,展示层负责结果的展示,表现层依赖业务层,接收到客户端请求一般会原创 2020-07-04 11:10:03 · 155 阅读 · 0 评论 -
Spring学习笔记
Spring一、概述Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IoC(Inverse Of Control;反转控制)和AOP(Aspect Oriented Programming;面向切面编程)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架二、体系结构核心容器:核心容器由spring-core,原创 2020-07-04 11:09:02 · 141 阅读 · 0 评论 -
MyBatis学习笔记
MyBatis一、概述1.1 框架软件开发中的一套解决方案,不同的方案解决不同的问题。框架封装了很多的细节,使开发者以极简的方式实现功能,大大提高了开发效率1.2 MyBatisMyBatis是一个Java持久层框架,它封装了jdbc,使开发者只关注sql语句本身MyBatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中的sql的动态参数进行映射生成最终执行的SQL语句采用ORM思想解决了实体和数据库映射的问题,对JDBC进行封装,原创 2020-06-29 23:12:34 · 198 阅读 · 0 评论 -
Servlet详解
Servlet一、概述server appletServlet是一个接口,定义了java类被浏览器访问到(Tomcat识别)的规则将来我们定义一个类,实现Servlet接口,复写方法二、快速入门创建JavaEE项目定义一个类,实现Servlet接口实现接口中的抽象方法public class ServletDemo1 implements Servlet { @Override public void init(ServletConfig servlet原创 2020-06-29 23:09:52 · 168 阅读 · 0 评论 -
Java,JVM虚拟机详解,JVM从入门到了解
文章目录JVM概述及类加载子系统一、概述1.1. 虚拟机1.2. Java虚拟机1.2.1 概述1.2.2 作用二、JVM的整体结构三、JVM架构模型四、JVM生命周期4.1. 虚拟机的启动4.2. 虚拟机的执行4.3. 虚拟机的退出五、类加载过程5.1. 加载5.2. 链接5.2.1 验证(Verify)5.2.2 准备(Prepare)5.2.3 解析3. 初始化六、类加载器分类6.1. 启动类加载器6.2. 扩展类加载器6.3. 应用程序类加载器七、双亲委派机制7.1 概述7.2 工作原理7.3 优势原创 2020-06-07 23:42:52 · 707 阅读 · 0 评论 -
Java迪杰斯特拉算法
一、迪杰斯特拉算法1. 最短路径问题本地区有7个村庄(A,B,C,D,E,F,G),现有六个邮差,从G点出发,需要分别把邮件送到A,B,C,D,E,F六个村庄各个村庄的距离用边线表示(权),例如A-B距离5公里问:如何计算出G村庄到其他各个村庄的最短距离?如果从其他点出发到各个点的最短距离又是多少?2. 算法概述迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个...原创 2020-02-22 18:19:06 · 470 阅读 · 0 评论 -
Java普利姆算法和克鲁斯卡尔算法
常用算法一、普利姆算法1. 应用场景–修路问题一个地区有7个村庄(A,B,C,D,E,F,G),现在需要修路把7个村庄连通各个村庄的距离用边上的权值表示,比如A–B的距离为5公里要保证各个村子连通,且总的公路里程最短2. 最小生成树给定一个带权的无向连通图,如何选择一棵生成树,使树上所有的边上的权的总和为最小,则此树称为最小生成树N个顶点一定有N-1条边包含全部顶点3...原创 2020-02-20 19:22:34 · 429 阅读 · 0 评论 -
Java数据结构--图
图一、概述图是一种数据结构,其中节点可以具有零个或多个相邻元素。两个节点之间的连接称为边,节点也可也以称为顶点1. 图的常用概念2. 图的表示方式2.1 邻接矩阵邻接矩阵是表示图形中顶点之间相邻关系的矩阵,对于n个顶点的图而言,矩阵是row和col表示的1……n个点2.2 邻接表邻接矩阵需要为每个顶点分配n个边的空间,很多边都不会存在,会造成空间的浪费邻接表的实现只关心存在...原创 2020-02-16 16:11:25 · 518 阅读 · 0 评论 -
Java二叉排序树和平衡二叉树
二叉排序树一、概述二叉排序树:BST(Binary Sort Tree),对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。特别说明:如果有相同的值,可以将该叶子节点放在左子节点或右子节点二、创建和遍历/** * @author DELL * @Date 2020/2/13 11:23 **/public class Binar...原创 2020-02-14 17:12:41 · 126 阅读 · 0 评论 -
Java树结构应用
树结构应用一、堆排序1. 概述堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏、最好、平均时间复杂度均为O(logn),它也是不稳定排序堆是具有以下性质的完全二叉树:每个节点的值都大于或等于其左右节点的值,称为大顶堆,**注意:**没有要求左右孩子值的大小关系每个节点的值都小于或等于其左右孩子的值,称为小顶堆大顶堆举例:一般升序采用大顶堆,降序采...原创 2020-02-13 11:01:56 · 352 阅读 · 0 评论 -
Java树结构基础
树结构基础一、概述为什么需要树这种数据结构:树存储方式能够提高数据存储、读取的效率,比如利用**二叉排序树(Binary Sort Tree),**既可以保证数据的检索速度,同时可以保证数据的插入、删除、修改的速度树的常用术语:节点的权(节点值)路径(从root到大该节点的路线)树的高度(最大层数)森林:多颗子树结构构成森林二、二叉树1. 概述每个节点最多只能有...原创 2020-02-10 21:02:56 · 508 阅读 · 0 评论 -
Java哈希表
哈希表一、概述散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。它通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速度。这个映射函数称为散列函数,存放记录的数组叫做散列表二、举例分析通过哈希表进行员工信息的管理import java.util.Scanner;/** * @author DELL * @Dat...原创 2020-02-05 14:14:53 · 165 阅读 · 0 评论 -
Java查找算法
查找算法一、概述顺序(线性)查找二分查找(折半查找)插值查找斐波那契查找二、线性查找说明:找到元素返回下标,若没有找到则返回-1此处找到一个满足要求的就返回/** * @author DELL * @Date 2020/2/3 17:53 **/public class SequenceSearch { public static void main(S...原创 2020-02-04 17:15:07 · 111 阅读 · 0 评论 -
Java排序算法
排序算法一、概述排序算法(Sort Algorithm),排序是将一组数据依指定的顺序进行排列的过程1. 分类1.1 内部排序将需要处理的所有数据都加载到**内部存储器(内存)**中进行排序1.2 外部排序数据量过大时,无法全部加载到内存中,需要借助外部存储器进行排序2. 常见排序算法二、算法的时间复杂度1. 时间频度一个算法花费的时间与算法中语句的执行次数成正比例,算法中...原创 2020-02-03 17:31:32 · 247 阅读 · 2 评论 -
Java回溯解决八皇后问题
八皇后问题1. 概述八皇后问题是一个古老而著名的问题,是回溯算法的经典案例,该问题是国际西洋棋手马克斯-贝瑟尔于1848年提出来:在8 x 8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线,计算有多少种摆法2. 分析第一个皇后先放在第一行第一列第二个皇后放在第二行第一列,然后判断是否可以,如果不可以,继续放在第二列、第三列…依次把所有列...原创 2020-01-31 17:17:18 · 333 阅读 · 0 评论 -
Java使用递归解决迷宫问题
递归一、概述递归就是方法自己调用自己,每次调用时传入不同的变量,**递归有助于编程者解决复杂的问题,**同时可以让代码变得简洁1. 递归的调用机制1.1 打印问题public class RecursionTest { public static void main(String[] args) { test(4); } public stat...原创 2020-01-31 11:59:45 · 620 阅读 · 0 评论 -
Java中缀表达式转后缀表达式
中缀表达式转后缀表达式1. 概述初始化两个栈:运算符栈s1和存储中间结果的栈s2从左向有扫描中缀表达式遇到操作数时将其压入s2遇到运算符时,比较其与s1栈顶运算符的优先级:如果s1为空,或栈顶元素为’(’,则将此运算符入栈否则,若优先级比栈顶运算符的优先级高,则将运算符压入s1栈否则,将s1栈顶的运算符弹出并压入到s2中,再次转到1,与新的栈顶元素进行比较遇到括号时:...原创 2020-01-29 19:01:07 · 180 阅读 · 0 评论 -
Java逆波兰表达式求值
前缀、中缀、后缀表达式(逆波兰表达式)1. 前缀表达式1.1 概述前缀表达式又称为波兰表达式,前缀表达式的运算符位于操作数之前举例:(3+4)x5-6 的前缀表达式为- x + 3 4 5 61.2 前缀表达式计算机求值从右至左扫描表达式,遇到数字时将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,使用运算符对他们做相应运算,并将结果入栈;重复上述过程直到表达式的最左端,最...原创 2020-01-29 13:27:43 · 254 阅读 · 1 评论 -
Java中缀表达式计算
表达式计算(中缀表达式)1. 分析通过index索引遍历表达式如果发现为数字则入数字栈如果扫描到为符号则:如果符号栈为空则直接入栈如果符号栈不为空,则进行比较:如果当前符号优先级小于或等于栈中的操作符,则需要从数字栈中pop出两个数,再从符号栈中pop出一个符号,进行运算,将结果入数字栈,如果当前**操作读优先级大于栈中符号优先级则直接入符号栈**。当表达式扫描完...原创 2020-01-28 17:40:29 · 370 阅读 · 0 评论 -
Java数据结构——链表和栈
链表(Linked List)一、概述链表是有序的列表,他在内存中的存储如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Grazwmvg-1580196847881)(F:\Java笔记\图片\链表.png)]链表以节点的方式存储,是链式存储结构每个节点包含data域,next域:指向下一个节点如图:链表的每个节点不一定是连续存储链表分带头节点的...原创 2020-01-28 15:36:44 · 428 阅读 · 0 评论 -
Java—IO流
流的分类操作数据单位:字节流、字符流数据流向:输入流、输出流流的角色:字节流、处理流具体代码分析1、FileReader的使用(字符流)(1)read()的简单使用public class FileReaderWriterTest { @Test public void testFileReader() { //1、实例化File类的对象,指...原创 2019-11-01 12:07:27 · 84 阅读 · 0 评论 -
Java单例模式---饿汉式,懒汉式,双重校验锁
单例模式一、概述设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式二、单例设计模式(Singleton)采取一定的方法保证在软件系统中对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们让类在虚拟机中只产生一个对象,首先必须将类的构造器私有化(private),这样就不能用new操作符在类的外部产生该类的对象,但在类的内部仍可以产生类的对象。因为在类的外部开始无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只原创 2020-05-17 09:58:12 · 646 阅读 · 0 评论 -
Java蓝桥杯基础练习芯片测试
芯片测试问题描述有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关)。给出所有芯片的测试结果,问哪些芯片是好芯片。输入格式输入数据第一行为一个整数n,表示芯片个数。第二行到第n+1行为n*n的一张表,...原创 2020-03-25 23:46:53 · 207 阅读 · 0 评论 -
Java蓝桥杯基础练习2n皇后问题
问题描述给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。输入格式输入的第一行为一个整数n,表示棋盘的大小。接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表...原创 2020-03-24 17:19:39 · 642 阅读 · 0 评论 -
Java—会话技术
Java–会话技术一、概述会话:一次会话中包含多次请求和响应一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止功能:在一次会话的范围内有多次请求间共享数据方式:客户端会话技术:Cookie服务端会话技术:Session二、Cookie1、概念客户端会话技术,将数据保存到客户端2、快速入门使用步骤:创建Cookie对象,绑定数据...原创 2019-11-23 13:28:23 · 248 阅读 · 0 评论 -
Java网络编程
Java网络编程一、概述Java是Internet上的语言,它从语言级上提供了对网络应用程序的支持,可以方便的开发常见的网络应用程序Java提供网络类库,联网的底层被隐藏在Java的本机安装系统中,由JVM进行控制。并且Java实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境二、网络基础1、计算机网络把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规...原创 2019-11-21 19:14:22 · 135 阅读 · 0 评论 -
Java集合详解
集合一、集合框架概述集合、数组都是对多个数据进行存储操作的结构,简称Java容器说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,数据库中)二、集合框架(一)Collection接口概述:单列集合,用来存储对象结构:① List接口 ② Set接口1、List接口概述:存储有序的、可重复的数据...原创 2019-11-13 18:24:12 · 125 阅读 · 0 评论 -
Java多线程学习笔记,超详细
多线程一、基本概念1、程序概念:为了完成特定的任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象2、进程概念:是程序的执行过程,或是正在运行中的程序。是一个动态的过程:有它自身的产生、存在、消亡过程。进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域。3、线程概念:进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个进程同一时间并...原创 2019-11-10 18:49:48 · 151 阅读 · 0 评论 -
Java内存解析
原创 2019-10-19 17:02:50 · 121 阅读 · 0 评论 -
Java数组
数组相同数据类型的集合,内存连续定义格式int []array={1,2,3};int []array=new int[]{1,2,3};int[] array=new int[3];注意① 数组越界会报告异常:java.lang.ArrayIndexOutOfBoundsException② 数组名.length 代表数组长度③ length不是方法,是数组的属性...原创 2019-10-19 16:57:02 · 80 阅读 · 0 评论 -
Java数据类型详解
Java数据类型Java基本的数据类型byte 1字节int 4字节 integer.MAX_VALUE(求int最大值)short 2字节long 8字节 定义数据时后面加Ldouble 8字节float ...原创 2019-09-28 17:47:30 · 103 阅读 · 0 评论