《JAVA》
文章平均质量分 79
JAVA
王卫——David
CSDN博客专家 阿里云专家博主 Java领域优质创作者
展开
-
浅谈 面向对象三大特性:封装 继承 多态
面向对象三大特性封装隐藏对象的属性和方法,仅仅对外公开接口部分。封装是一个对象形成两个部分,接口部分和实现部分。封装就是将抽象得到的数据和行为相结合,形成一个有机的整体。其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解实现细节,只是通过外部接口来使用类的成员。例:vb中的...原创 2019-08-17 11:54:50 · 331 阅读 · 19 评论 -
JDK的配置环境变量方法
1.下载并安装JDK软件2.选择控制面板——系统和安全——系统——高级系统设置——环境变量3.在系统变量中选择新建 变量名:JAVA_HOMEB变量值:为保存文件的位置4.再系统变量中找到path,——编辑——新建变量值为所保存文件夹的bin文件夹目录的位置5.window+R 输入cmd6.输入java显示此页面这就成功了...原创 2019-08-22 21:26:55 · 250 阅读 · 16 评论 -
案例挑战—java反射
在项目新架构中大量使用了反射,越发能够体会到反射的强大之处,是实现架构底层高复用、高扩展、高维护的实现方式之一。原创 2023-09-02 21:13:03 · 414 阅读 · 0 评论 -
案例挑战——事务传播行为
此前在项目开发过程中,使用到了事务的传播行为。但是大多数情况下都是使用的事务默认的传播行为required。但是其实还有其他的传播行为。所以特地的回顾和学习了事务的多种传播行为。本篇博客从5w2h的角度来对事务的传播行为进行学习和实践。事务的传播行为其实指的是事务在多个方法之间的传播方式和规则。例如:当一个方法调用另一个方法时,如果这两个方法都涉及事务操作,事务的传播行为定义了如何处理这些嵌套的事物,以及事务如何在方法调用之间传播和管理。原创 2023-07-05 20:36:52 · 533 阅读 · 0 评论 -
案例挑战——你真的懂事务吗
最近在进行项目开发的过程中,由于ORM映射是我们自己手动实现的,其中涉及到了事务的开启和提交,以及在高并发的情况下如何保持数据的正确性。所以通过项目驱动,再次对事务进行学习和实践。一般是指要做的或者所做的事,在计算机语言中指访问并可能更新数据库中数据项的一个程序执行单元,在关系型数据库中,一个事物可以是一条SQL语句,一组SQL语句或整个程序。隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed。原创 2023-06-27 09:09:26 · 218 阅读 · 0 评论 -
案例突破——悲观锁和乐观锁
悲观锁和乐观锁的出现是为了解决并发编程中的竞态条件和数据一致性问题。悲观锁适用于并发冲突概率较高、对数据一致性要求较高的场景,而乐观锁适用于并发冲突概率较低、对性能要求较高的场景。在具体应用中,需要根据实际情况评估并选择适合的锁机制,或者结合使用多种锁机制以达到更好的性能和数据一致性。原创 2023-06-23 09:41:44 · 951 阅读 · 0 评论 -
Java序列化
序列化(Serialization):指将对象转换成可传输格式的过程,以便在需要时可以将其还原成原始对象。在Java中,对象序列化将对象转换为一系列字节流,这些字节流可以写入文件或通过网络传输,并且可以在需要时重新创建相同的对象。博主整理和总结的关于Java序列化的知识还是很片面,算是一个阶段性总结,关于Java序列化还需要对计算机网络、远程调用、ORM等等理解更深入才能对Java序列化有更全面的理解。原创 2023-04-15 10:43:25 · 492 阅读 · 1 评论 -
前端接收后端数据时,遇到精度丢失的问题
之前项目开发过程中遇到过前端接收后端数据时,遇到精度丢失的问题。当时进行了问题记录,本篇博客针对于这个问题进行问题原因并进行多种方式解决这个问题。原创 2023-04-12 21:30:06 · 4049 阅读 · 2 评论 -
token详解
本篇博客主要从什么是token?为什么要使用token?如何使用token?项目实例这几个方面讲解token,通过本篇博客能够对token能够有更深入的理解,并且有思路应用在具体项目中。多角度看问题,多个维度看问题能够更加深入的理解和学习到该知识点。例如5w2h的方式。原创 2023-04-11 21:24:04 · 5297 阅读 · 1 评论 -
解决跨域问题
之前在项目开发过程中,出现并解决了跨域问题。现在来对跨域问题进行一个系统的学习和总结。通过本篇博客可以了解到解决跨域问题有哪些方法,并且详细介绍了CORS方法来解决跨域问题。$ . ajax() 是jQuery库提供的一个函数,用于向服务器发起异步 HTTP 请求。它可以执行多种类型的 HTTP 请求,如 GET 、 POST 、 PUT 、 DELETE 等。使用$ . ajax() 函数,我们可以向服务器发送数据并获取响应,而无需刷新整个页面。原创 2023-04-04 09:23:48 · 650 阅读 · 0 评论 -
项目实战典型案例9——数据类型不一致导致equals判断为false
对课程id和班级id分别进行判断,如果分别一致就更新该课程班班级信息,拖过不一致就插入新的一条数据。由于这里使用将两个类型不一致的变量使用equals进行比较,结果肯定为false,导致会插入相同课程班级的数据,从而导致数据混乱。原创 2023-03-16 15:55:40 · 494 阅读 · 0 评论 -
Maven之POM介绍
本篇博客介绍Maven的基本工作单元POM(Project Object Model)项目对象模型。通过本篇博客可以学习到POM的特性以及在项目开发中如何配置继承和聚合的Maven项目,提高Maven项目的整洁性和开发效率。项目对象模型(POM)是Maven中的基本工作单元。它是一个XML文件,包含有关项目的信息和Maven用于构建项目的配置细节。它包含大多数项目的默认值。当执行任务或目标时,Maven在当前目录中查找POM。它读取POM,获取所需的配置信息,然后执行目标。原创 2022-11-16 16:20:22 · 1497 阅读 · 1 评论 -
项目实战 Java读取Excel数据
最近项目需要增加一个功能,上传Excel表格进行批量导入。通过上传Excel表格的方式能够节省用户大量的时间提高用户的体验。博主查阅了相关资料,最终是成功实现了上传Excel表格进行批量导入。本篇博客记录了上传Excel到读取Excel再到将读取到的数据插入到数据库的详细步骤,通过本篇博客可以成功实现读取Excel数据进行批量导入。最开始的时候由于没有接触过通过上传excel表格的方式进行批量导入,所以一开始就有些恐惧,心态有些不好。原创 2022-11-16 15:38:03 · 2597 阅读 · 1 评论 -
Spring boot项目集成阿里云短信服务发送短信验证码
前期准备:需要在阿里云中开通了短信服务并进行相应的配置,可以在我的《阿里云短信服务》中查看系列博客。一、阿里云 短信服务——发送短信验证码图文教程二、阿里云 短信服务——开启验证码防盗刷监控三、阿里云 短信服务——短信发送频率限制言归正传,本篇博客主要内容是在项目中运用阿里云的短信服务发送短信验证码。业务场景:用户忘记密码,通过发送短信验证码验证用户的真实性参考bilibili忘记密码的界面理解业务。原创 2022-11-07 23:02:24 · 2075 阅读 · 13 评论 -
阿里云 短信服务——发送短信验证码图文教程
目前由于公司正在做一款产品的忘记密码功能,需要使用到发送短信验证码。调研和对比了有五家短信服务的平台。这儿将对比结果给大家仅做参考,希望对您们有所帮助。大家也可以自行查找一下相关资料,小编只是查找了一些资料,有很大的局限性。公司出于目前公司一些产品都是使用的阿里云提供的服务所以目前选择的是使用阿里云的短信服务。unisms阿里云云之讯腾讯云亿美软通应用场景★★★★★★★★★★★★★★★★★★★★价格★★★★★★★★★★★★★★★★★★★★★产品优势★★★★★★★★★。原创 2022-11-05 22:46:10 · 3932 阅读 · 8 评论 -
Java JDK动态代理
本篇文章主要讲解的是什么是JAVA JDK版本的动态代理,如何使用JAVA JDK版本的动态代理。对于JAVA JDK版本的动态代理的原理不会过多的描述。本篇文章旨在如果使用JDK动态代理。例如:由于客户端不想活着不能直接访问一个对象,此时可以通过一个称为代理的第三者来实现简介访问对象,这个过程为一个代理。更加生活化的实例是:例如:代购,如:在当地买不到某件商品,又或者因为当地的这件商品的价格比其他地区的贵,所以托人或者机构在其他地区购买该商品,并携带回来。/**原创 2022-09-25 10:56:03 · 1197 阅读 · 1 评论 -
深入理解迪米特法则(Law Of Demeter)
每一个软件单位(每一个微服务、每一个模块、每一个包、每一个类、每一个方法)第其他单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。更加通俗一点,迪米特法则要求一个软件实体应当尽可能少地与其他实体发生相互作用。...原创 2022-08-27 10:16:37 · 591 阅读 · 1 评论 -
深入理解合成复用原则(Composition /Aggregate Reuse Principle)
在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用已有的对象,使之成为新对象的一部分。新对象通过调用已有对象的方法达到复用功能的目的。简而言之,在复用时要尽量使用组合/聚合关系(关联关系),少用继承。......原创 2022-08-27 10:08:41 · 532 阅读 · 0 评论 -
雪花算法基本原理与实现
将一个系统拆分成朵儿子系统并分布到不同设配的过程”实现一个分布式系统,最核心的部分1.如何拆分、2.如何连接专注单一职责和功能的小型功能区块为基础,利用模组化的方式组合出的大象应用程序,各功能区块使用与语言无关的api集相互通信。如之前做单体项目中的一个表的数据主键id都是自增长的,例如mysql通过autoincrement来实现自增长,oracle通过序列来实现。但是当数据量上来,一般就会进行水平分表,阿里开发建议单表的数据了达到了500w的时候就需要进行分表。...原创 2022-08-26 12:02:39 · 784 阅读 · 0 评论 -
深入理解Java基本数据类型与引用数据类型
每当程序调用方法的时候,系统会为该方法建立一个方法栈,其中所有方法声明的变量都放在方法栈中,当方法结束的时候系统会释放方法栈,在该方法中声明的变量随着栈的销毁而结束,这就是局部变量只能在方法中有效的原因。对于基本数据类型的存放文职不能都说是存储在stack中,对于基本数据类型来说,存储在栈中还是在堆中,这取决于基本数据类型声明的位置。是声明在方法中还是声明在类中。(2)当声明的是引用变量时,所声明的变量(该变量实际上是在方法中存储的是内存地址值)是放在方法的栈中,该变量所指向的对象是放在堆类存中的。...原创 2022-08-16 21:33:58 · 452 阅读 · 0 评论 -
Java 中==与equals()的区别
= =是直接比较两个对象的堆地址,如果相等,那么这两个引用实际上指向同一个对象的地址。= = 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。对于基本数据类型(byte、short、char、int、float、double、long、boolean)他们是作为常量在方法区中的常量池以HashSet策略存储起来的,对于这样的字符串 “123” 也是相同的道理,在常量池中,一个常量只会对应一个地址,因此不管是再多的 1原创 2022-08-07 22:29:26 · 104 阅读 · 0 评论 -
Java Int与Integer的区别
也提供了相应的包装类型:包装类型:Boolean、Character、Byte、Short、Integer、Long、Float、Double。2.为了让基本数据类型符合面向对象的思想,就出现了包装雷翔,将基本类型包装起来,并且封装了属性和方法,形成了类。由于new了一个对象,所以new int[]{1,2}这个对象时存储在堆中的,也就是说1,2这两个基本数据类型是存储在堆中,1.由于java是面向对象语言的,基本类型不是类,不能通过new进行对象实例化,可以说是不是面向对象的思想,无法调用方法。...原创 2022-08-07 22:14:28 · 117 阅读 · 0 评论 -
面向对象的三大特征(3)-多态
多态什么是多态?多态解决了什么问题?二级目录三级目录什么是多态?多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。 简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。多态解决了什么问题?和替换性二级目录三级目录...原创 2022-05-28 10:52:12 · 5449 阅读 · 0 评论 -
面向对象程序设计原则——依赖倒置原则(DIP)
依赖倒置原则1、什么是依赖倒置原则(Dependence Invarsion)1.1、依赖倒置中设计到的名词概念依赖倒置的应用场景依赖倒置解决了什么样的问题示例参考资料1、什么是依赖倒置原则(Dependence Invarsion)高层模块不应该依赖于低层模块,他们都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。1.1、依赖倒置中设计到的名词概念依赖:首先依赖导致中的依赖并不是uml六种关系中的依赖。依赖倒置原则中的依赖,指的是A要做一件事必须要用到B,如果不用B那么这件事就干原创 2022-05-25 10:26:58 · 5859 阅读 · 0 评论 -
面向对象与面向过程最本质的区别
前言上周上课,老师提出了一个问题,程序设计有面向对象和面向过程两种常用设计理念。请你回答他们各自的目的和各自的有缺点。请举例,进行详细的论述。我发现我回答不全,按老师的话说就是良莠不齐。下面就让我来总结一下面向对象与面向过程各自的目的,各自的优缺点。面向对象与面向过程的各自的目的面向对象和面向过程没有好坏之分。面向对象目的是通过建立对象使构成的程序,可维护,可扩充,可复用。所以面向对象主要适用于大型的三级目录...原创 2022-05-13 20:45:01 · 7806 阅读 · 3 评论 -
如何实现面向对象
如何实现面向对象面向对象的定义面向对象的三大特征、面向对象的基础实现面向对象基本准则实例面向对象的定义对象是指具体的某一事物,在现实生活中能够看得见摸得着的事物。在面向对象程序设计中,对象指的是计算机系统中的某一个成分。在面向对象程序设计中,对象包含两个含义,其中一个是数据,另一个是动作。对象是数据和动作的结构体。面向对象是在对象这一层次。面向对象的三大特征、面向对象的基础封装、继承、多态封装:在面向对象中,对数据和动作进行包装,其中的某些数据动作,可以是私有的,不能被外界访问,以此来实现对数原创 2022-05-05 15:51:01 · 6386 阅读 · 2 评论 -
Docker从入门到精通——Commit提交一个自己的镜像
如何提交一个自己的镜像前言Commit实战前言 再上一篇博客总结了Docker的镜像加载原理感兴趣可以访问Docker镜像加载原理Commit Docker通过 docker commit命令来提交容器成为一个新的副本。也就是从容器中创建一个新的镜像。 在docker 中通过 docker commit --help命令我们可以看到docker commit的描述以及它的一些可选项。 docker commit -m=“提交的描述信息” -a=“作者” 容器id 目标镜像名:[TAG]实战原创 2022-04-08 21:08:13 · 6684 阅读 · 15 评论 -
N-S图详解
N-S图首先N-S图是一种特殊的流程图,去掉了传统流程图中的流程线,并将全部的算法都写在了一个矩形阵类,在框内还可以包含其他框的流程图形式。程序的基本结构与N-S图我们都知道程序的基本结构是顺序结构、分支结构和循环结构。所有的程序都是由这三个基本结构组成,通过三种结构不断嵌套,最终形成系统性强,结构紧密的程序。所以掌握了最基础的三种结构,以及掌握了三种结构的不断嵌套,那么你就是一个合格的开发人员了。而N-S图正是我们梳理三种结构的有效工具,与传统的带流程线的流程图相比具有:1.能够表示嵌套关系以及模原创 2022-01-02 20:06:39 · 15280 阅读 · 5 评论 -
常见代码命名规范
常见代码命名规范目的命名总体规则常用命名方法Pascal(帕斯卡)命名法Camel命名法常见运用场所目的为了统一软件开发过程中的编码规范,保证代码的一致性,便于交流和维护。命名总体规则• 名字应该能够表示事物的特性,并且与业务挂钩• 名字一律使用英文单词,不能使用拼音• 名字单词不应多余四个,控制在3-30个字母以内常用命名方法Pascal(帕斯卡)命名法所有单词的首字母都大写,其他字母小写Camel命名法除首字母外,其他单词的首字母大写,其他字母小写常见运用场所...原创 2021-07-24 16:32:12 · 344 阅读 · 6 评论 -
Java IntelliJ IDEA 下载与安装教程
一、IntelliJ IDEAIDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,最突出的功能自然是调试(Debug),可以对Java代码,JavaScript,JQuery,Ajax等技术进行调试。 二、官网下载官网下载1.点击Down Load 选择community版本三、安装注意的一点就是勾选64-bit四、设置中文1.点击file选择设置——插件plugin2.搜索 chinese 安装下载重启原创 2020-12-26 15:45:59 · 1077 阅读 · 14 评论 -
Eclipse下载安装和JDK下载安装(环境配置)及下载C++插件CDT
一、什么是JDKJDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。简单来说就是提供了编译Java的环境二、Eclipse于JDK之间的关系Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务...原创 2019-08-23 21:16:22 · 1083 阅读 · 19 评论