
Java
文章平均质量分 62
翟文彪
人生苦短,快学C、JAVA、Python.....
展开
-
分布式事务-Seata-详细图文讲解
一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。原创 2023-10-24 15:56:38 · 681 阅读 · 0 评论 -
通俗易懂理解——布隆过滤器
很长的二进制向量(数组):判断一个数据在这个数组中是否存在,如果不存在为0,存在为1:将“你好”存入到布隆过滤器中——插入过程:我们可以根据下标到布隆过滤器中查询数据是否存在,只有当三个下标查询的结果都为1的时候才能确认数据存在。只要有一个下标的二进制数据不是1就证明不存在。现状:下标为2的位置存储了两个数据:你好 & hello,在这种情况下,我们就不知道下标为2的这个地方是你好还是hello。这是由于这些数据由于一系列的hash运算计算出来的,哈希值相同导致根据哈希值计算出来的。原创 2023-02-16 17:01:10 · 777 阅读 · 0 评论 -
从计算器小例子的总结思考
老师前段时间给我安排了一个小任务,使用面向对象的编程思想实现一个能支持加减乘除的计算器,并且要符合开闭原则,可以随意添加新的运算符(例如添加一个开方运算符)。这个小例子,从老师布置给我到现在已经过去了好几天,由于自己的不理解,一直没有动手开工。偶然今早老师找我过问起这件事,老师帮我梳理了这其中的业务以及一些技术问题,好几天没有头绪的小例子,今天半天的时间就做出来了。不知道你们在遇到问题的时候会怎么处理,我是习惯先自己凭空琢磨,然后再根据琢磨的结果去查资料找答案,往往在这个过程中就已经浪费了大部分的时间,而且原创 2022-06-11 00:17:27 · 721 阅读 · 0 评论 -
理解面向对象——多态
导语什么是多态?我们先来看看百度百科给出的回答——在编程语言和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。 多态类型(英语:polymorphic type)可以将自身所支持的操作套用到其它类型的值上。而我理解的多态其实究其根本就只有一句话就是——子类的实现指向父类的引用。下面我们通过实例来学习了解一下面向对象中的多态。简单工厂什么是简单工厂?我们将实例化子类的过程交由一个单独的类来去创造实例,这个单独的类就是我们说的工厂。所有的实例化字类的过程都交由工厂去原创 2022-05-27 16:25:02 · 698 阅读 · 1 评论 -
产品设计——无处不入口,无处不按钮
引言“无处不入口,无处不按钮”不知道你是不是看懂了这句话,我们从字面意思来分析,所谓“无处不入口,无处不按钮”可以理解为,任何一个地方都可以作为按钮,任何一个地方都能作为进入下一个区域的入口。产品设计——悬浮最能体现这个理念的一个产品设计就是悬浮了,如下图:从这张原型图我们可以看出,整个页面只有三条文本框、一个时间组件和一个小号的柱状图表按钮。但是这些只是停留在表面的样式和入口,实际上我们可以通过鼠标悬浮的操作,扩展出很多的功能例如下图:这就是很好的体现了“无处不入口,无处不按钮”的理念。通过原创 2022-04-30 00:07:08 · 930 阅读 · 1 评论 -
在项目中使用WebSocket进行前后端通信
不废话直接上代码后端一、引入WebSocket依赖 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-websocket --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId原创 2022-01-06 14:38:29 · 2033 阅读 · 1 评论 -
【Java】Java中让线程休眠一段时间再进行如何操作?
介绍我们都在项目过程中调用过别人的接口,但是如果频繁的调用接口会被识别出来,跳转到验证码页面进行验证码输入,这样就不能自动化运行程序了,为了解决这一问题,使用线程休眠,让程序的操作频率模仿人类操作频率,这样就不会因为太频繁而被识别出来。下面是代码。实现代码很简单Thread.sleep(10000);//线程休眠10秒...原创 2021-10-31 10:29:36 · 4196 阅读 · 1 评论 -
【Java】可以存储相同key值的Map类型
IdentityHashMap传统的Map类型例如HashMap,在存储相同key值的数据的时候,之后存储的数据会把之前存在数据覆盖,保证Map中只有一个key值存在。例如:HashMap<String,String> map = new HashMap<>();map.put("1","A");map.put("1","B");System.out.println(map);最后输出的结果是"1":"B"但是IdentityHashMap的特性可以保存属于自己的ke原创 2021-10-31 10:23:37 · 11603 阅读 · 1 评论 -
IDEA2021向gitlab提交代码并合并分支全详细流程(图解)
详细流程图解首先找到idea菜单栏中git的位置,点击后如下图所示我们常用的功能如下:Commit(提交):将更新的代码提交到本地分支Push(推送):将本地分支暂存的代码推送到远程分支(gitlab)Pull(拉取):从远程分支拉取代码到你的分支Commit(提交)点击Commit之后出现下图:注意:一定要只勾选更改的src包下的内容,其余一律不勾选,否则将出现大量冲突Push(推送)确认信息无误后,点击push将本地分支内容推送到远程分支合并分支首先确定是否已经成功推送到原创 2021-09-17 15:23:02 · 8640 阅读 · 8 评论 -
idea2021断点调试,服务启动特别慢如何解决
问题提示我们在使用idea断点调试的时候可能会出现下图的提示“method breakpoints may dramatically slow down debugging”翻译:方法断点可能会大大减慢调试速度并且服务启动的速度非常慢,平时几秒启动的服务需要好几分钟甚至数十分钟问题解决解决方式也很简单,按照如下操作即可...原创 2021-09-11 14:48:40 · 5347 阅读 · 5 评论 -
【Java】函数式接口
1.1函数式接口概述函数式接口:有且仅有一个抽象方法的接口Java中的函数式编程体现就是Lambda表达式,所以函数式接口就是可以适用于Lambda使用的接口只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导如何检测一个接口是不是函数式接口呢? @FunctionalInterface 放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败 注意 我们自己定义函数式接口的时候,@FunctionalInterface是可选原创 2021-07-31 08:11:37 · 2594 阅读 · 6 评论 -
【Java】方法引用
1.1体验方法引用在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿参数做操作那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑呢?答案肯定是没有必要那我们又是如何使用已经存在的方案的呢?这就是我们要讲解的方法引用,我们是通过方法引用来使用已经存在的方案1.2方法引用符方法引用符 :: 该符号为引用运算符,而它所在的表达式被称为方法引用 回顾一下我们在体验方法引用中的代码 Lam原创 2021-07-31 08:10:36 · 2553 阅读 · 5 评论 -
【Java】接口组成更新
1.1接口组成更新概述接口的组成: 常量 public static final 抽象方法 public abstract 默认方法(Java 8) 静态方法(Java 8) 私有方法(Java 9) 1.2接口中默认方法接口中默认方法的定义格式: 格式:public default 返回值类型 方法名(参数列表) { } 范例: public default void show3(...原创 2021-07-31 08:10:06 · 2604 阅读 · 4 评论 -
【Java】Lambda表达式
1.Lambda表达式1.1函数式编程思想概述在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做操作”面向对象思想强调“必须通过对象的形式来做事情函数式思想则尽量忽略面向对象的复杂语法:“强调做什么,而不是以什么形式去做”而我们要学习的Lambda表达式就是函数式思想的体现1.2Lambda表达式的标准格式匿名内部类中重写run()方法的代码分析 方法形式参数为空,说明调用方法时不需要传递参数 方法返回值类型为void,说明方法执行没有结果返回.原创 2021-06-30 10:36:51 · 2579 阅读 · 9 评论 -
【Java】网络编程
1.网络编程入门 1.1网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 网络编程 在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换 1.2网络编程三要素 IP地址 要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计...原创 2021-06-30 10:36:14 · 2436 阅读 · 6 评论 -
【Java】字节流
2.字节流2.1 IO流概述和分类IO流概述: IO:输入/输出(Input/Output) 流:使用抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输 IO流就是用来处理设备间数据传输问题的 常见的应用:文件复制;文件上传;文件下载2.1 IO流分类分类: 按数据的流向: 输入流:读数据 输出流:写数据 按数据类型来分: 字节...原创 2021-04-27 09:59:48 · 838 阅读 · 21 评论 -
【Java】File类
1.File1.1File类概述和构造方法File:他是文件和路径名的抽象表示文件和目录是可以通过File封装成对象的对于File而言,封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的。1.2File类创建功能如果文件不存在,就创建文件,并返回true如果文件存在,就不创建文件,并返回false如果目录不存在,就创建文件,并返回true如果目录存在...原创 2021-04-27 09:58:29 · 843 阅读 · 17 评论 -
【Java】数组
什么是数组:数组(array)是一种用于存储多个相同类型数据的存储模型定义数组:格式:数据类型[]变量名范例:int[] arr定义了一个int类型的数组,数组名是arr数组初始化:Java中的数组必须先初始化,然后才能使用初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值 格式:数据类型[]变量名=new数据类型[数组长度]; 范例:int [] arr ...原创 2021-03-28 09:05:18 · 1034 阅读 · 20 评论 -
【Java】多态
多态概述:同一个对象,在不同时刻表现出来的不同状态举例:猫我们可以说猫是猫:猫cat =new猫();我们也可以说猫是动物:动物animal =new猫();这里猫在不同的时刻表现出来了不同的形态,这就是多态多态的前提和体现: 有继承/实现关系 有方法重写 有父类引用指向子类对象 多态中成员访问的特点:成员变量:编译看左边,执行看右边成员方法:编译看左边,执行看右边为什么成员变量和成员方法的访问不一样呢?...原创 2020-12-30 17:19:38 · 700 阅读 · 9 评论 -
【Java】接口
概述:接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用(不同厂商生产的鼠标键盘都可以接在同一个电脑的usb接口上,因为他们都是按照统一种标准生产的) Java中的接口更多的体现在对行为的抽象接口的特点: 接口用关键字interface修饰 public interface接口名{} 类实现接口用implements表示 public class类名 implements接口名{} 接口不能实例化 ...原创 2020-12-30 17:18:45 · 737 阅读 · 9 评论 -
【Java】形参和返回值
类名作为形参和返回值 方法的形参是类名,其实需要的是该类的对象 方法的返回值是类名,其实返回的是该类的对象 抽象类名作为形参和返回值 方法的形参是抽象类名,其实需要的是该抽象类的子类对象 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象 接口名作为形参和返回值 方法的形参是接口名,其实需要的是该接口的实现类对象 方法的返回值是接口名,其实返回的是该接口的实现类对象 ...原创 2020-12-30 17:18:09 · 711 阅读 · 9 评论 -
【Java】集合进阶——泛型
4.泛型 4.1泛型概述 泛型:是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数 一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,然后在使用/调用时传入具体的类型,这种参数类型可以用在类、方法和接口中,分别被称为泛型类、泛型方法、泛型接口。 泛型定义格式: ...原创 2020-12-30 16:50:01 · 725 阅读 · 8 评论 -
【Java】集合进阶——Set集合
3.Set集合 3.1Set集合概述和特点 不包含重复元素的集合 没有带索引的方法,所以不能使用普通for循环遍历 3.2哈希值 哈希值:是JDK根据对象的地址或字符串或者数字算出来的int类型的数值 Object类中有一个方法可以获取对象的哈希值 public int hashCode():返回对象的哈希码值 对象哈希值的特点 同一个对象多次调用hashCode()方法返回的哈希值...原创 2020-11-24 10:43:38 · 792 阅读 · 12 评论 -
【Java】集合进阶——List集合
2.List 2.1List集合的概述和特点 List集合概述: 有序集合(也称为序列),用户可以精确的控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素。 与Set集合不同,列表通常允许重复的元素 List集合的特点: 有序:存储和取出的元素顺序一致 可重复:存储的元素可以重复。 2.2 List集合特有方法 2.3并发修改异常 并发修改异常:ConcurrentMod...原创 2020-11-22 21:09:57 · 848 阅读 · 17 评论 -
【Java】集合进阶——Collection单列集合
1.Collection单列集合 1.1回顾: 集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。 1.2集合体系结构 1.3Collection集合概述和使用 Collection集合概述 是单例集合的顶层接口,他表示一组对象,这些对象也称为Collection的元素。 JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现 创建Collect...原创 2020-11-22 21:07:51 · 997 阅读 · 11 评论 -
【Java】ArrayList集合
集合基础:集合概述:集合类的特点:提供一种存储空间可变的存储类型,存储的数据容量可以发生改变集合类有很多,目前我们先学习一个:ArrayListArrayList<E>:可调整大小的数组实现<E>:是一种特殊的数据类型,泛型使用: 在出现E的地方我们使用引用数据类型替换即可 举例:ArrayList<String>,ArrayList<Student>...原创 2020-11-15 14:10:44 · 744 阅读 · 10 评论 -
【JAVA】抽象类
概述:在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类抽象类的特点: 抽象类和抽象方法必须使用abstract关键字修饰 publicabstract class类名{} public abstract void eat{} 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类 抽象类不能实例化 抽象类如何实例化呢?参照多态的方式,通过子类对象实例化,这叫抽象类多态...原创 2020-09-30 21:07:20 · 795 阅读 · 14 评论 -
【JAVA】内部类
概述:就是在一个类中定义一个类。举例:在一个类A的内部定义一个类B,类B就被称为内部类。定义格式:格式:public class类名{ 修饰符 class类名{ }}范例:public class Outer{ public class Inner{ }}内部类的访问特点: 内部类可以直接访问外部类的成员,包括私有 外部类要访问内部类的成员,必须创建对象 成员内部类按照内部类在类中定义的位...原创 2020-09-30 21:06:46 · 740 阅读 · 13 评论 -
【JAVA】常用API
System类概述:System包含几个有用的类字段和方法,他不能被实例化Object类的概述Object是类层次结构的根,每个类都有Object作为超类,所有类都直接或者间接的继承自该类构造方法:public Object()回想面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法?因为他们的顶级父类只有无参构造方法看方法的源码,选中方法,按下Ctrl+BToString方法默认输出的信息没有意义,建议重写此方法(使用自动声场A...原创 2020-09-30 21:06:12 · 779 阅读 · 12 评论 -
【JAVA】异常
异常概述:就是程序出现了不正常的情况异常体系:Error:严重问题,不需要处理Exception:称为异常类,他表示程序本身可以处理的问题 RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码 非RuntimeException:编译期就必须处理的,否则程序不能通过编译,就更不能正常运行了 JVM的默认处理方案如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理 把异常的名称,异常的原因及异常出现的位置等信息输.原创 2020-09-30 21:03:29 · 753 阅读 · 10 评论 -
【Java】Java基础语法
Java程序开发运行流程开发Java程序,需要三个步骤:编写程序,编译程序,运行程序1.编写程序:编写Java源程序2.编译程序:使用编译器编译3.运行程序:通过编译器生成字节码文件常量需要注意的问题:NULL(空字符)不能直接输出变量需要注意的问题:1.在定义long变量的时候防止“整数太大”这个问题的出现 longl = 10000000000L; //在后面加上“L”表示long类型,可以解决问题2.在定义float类型的变量时防止“不...原创 2020-08-08 08:50:13 · 831 阅读 · 8 评论