自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 String.valueOf(null) 产生的 Bug: 数据库中存储了 “null“ 字符串

最近出现一个莫名奇妙的问题: 数据库中存储了 "null" 字符串……用的 SpringCloud 远程调用接口, 传参为 null, 接到的参数值: “null”,导致上文的bug.当时只能单独写了一个方法处理 “null”,对其进行了转换。原因分析:Java String 类源码: /** * Returns the string representation of the {@code Object} argument. * * @par

2021-12-28 17:40:07 743

原创 Java 中全局变量的使用思考

最近看到一段代码,做报表输出功能。几乎是严格按照封装的要求编写,每个方法很小,没有重复代码。 编写时作者还是花费了心思,由于本身业务比较复杂,能够拆成那个样子,已经很优秀。有一个非常突出的特点: 运用全局变量(属性)封装数据, 从头到位是在对 变量A 进行操作, 最后返回的结果集 变量B。那么是在什么时候对 变量B 进行的赋值呢? 为了找到这个位置,花费了相当多的时间。不知作者是处于什么样的考虑, 采用全局变量进行操作,只在此对全局变量进行思考。使用场景:常运用于不会变化的值,仅限于使用

2021-12-28 11:07:46 1341

原创 Java 标签语法,类似 goto

goto 是 Java 的保留关键字,在 Java 中没有 goto.在 C++ 语法中,goto 是一个控制流程的关键字,用于跳转到指定的程序位置。很方便,导致程序的可读性和可分析性变弱,Java 放弃了该方式。goto 实际上是一种标签语法,在程序的某个位置贴上标签,下一次见到这个标签,直接跳转。前端代码有这种标签语句,实现页面的上下跳转。Java 有自己的标签语法,用于控制多层循环。见如下代码: public static void labelWhile ()

2021-08-18 14:50:54 492

原创 为什么 Java 中 可以直接用 int 变量存储 char 数据类型

初学 Java 时, 老师提出了一个很有意思的现象: //基础数据类型之间进行转换 int number = 68; char chart = (char)number; System.out.println("number = " + number); System.out.println("chart = " + chart); char chart_2 = 'E'; int numb.

2021-08-10 11:21:46 694

原创 Objects 中的实用方法

Objects 类, JDK1.7 版本提供,提供静态方法操纵对象。常用方法:Objects.equals(Object a, Object b); // 比较两个对象是否相等,只比较引用地址。Objects.deepEquals(Object a, Object b); // 当 a b 都是数组时, 会深度比较每一个对象的每一个值。 否则,只会比较两个对象的引用地址。Objects.hashCode(Object o); //返回一个非空对象的哈希值。Objects...

2021-08-09 16:08:34 574

原创 Java 项目实现 excel 导入导出的工具 jar 包整理

1. 阿里巴巴EasyExcel工具之前公司的项目用的就是这个工具,方便好用。使用介绍:https://www.cnblogs.com/zhucj-java/p/12017940.html2.

2021-06-02 16:36:52 468

原创 微服务,分布式,Dubbo,SpringClound 的联系与区别

1. 微服务和分布式微服务:是一套理论,论述了项目开发过程中,将大项目拆分成小项目独立开发和部署的理论,论述了发展过程,特点,优点,缺点等。分布式:是在实际工作中实现来了这套理论后的称呼,实际上指的还是一个东西。Dubbo,SpringClound:是具体实现微服务的代码框架,根据理论进行实现的。2.Dubbo 和 SpringClound 的联系与区别联系:二者都是实现 微服务理论 的架构。区别:(1)Dubbo 是 中国的 Alibaba 研发团队开发的, Sprin..

2021-03-18 17:18:05 712 1

原创 对 dubbo 的理解

1. 起源dubbo 是 阿里巴巴团队开发的,用于解决分布式项目的问题。现在已经捐给 Apach 组织进行维护。在国内使用频率比较高。可能是因为本国人员开发的,熟悉的人多,中文文档完善且优质以及框架本身比较简洁。2. 特点(1)框架整体简洁,只实现了微服务的远程调用,其他功能的实现需要自行组装,对开发人员的要求较高;(2)可以和 Spring 全家桶进行很和谐的整合;(3)配置简洁,使用过程中不复杂,配置完成后,注解即可完成服务注册;(4)稳定性较高,默认的注册中心是 .

2021-03-11 14:59:43 196

原创 HashSet 与 HashMap 的关系

HashSet 底层是通过 HashMap 实现的。HashMap 的键不能重复,HashSet 只取用了 HashMap 的键,用 HashMap 的 键存储 HashSet 的值。妙! /** * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has * default initial capacity (16) and load factor (0

2021-03-09 12:11:04 149

原创 Redis 理论知识整理

1. redis 的历史;Redis 是 2010 年发布的一个非关系型数据库(no sql),以 键值对的方式存储将数据。2. 特点(1) 存储,读写速度极快;(2)性能稳定;(3)支持的数据类型多:String,List, Hash, Set, ZSet;(4)支持的客户端语言种类较多: java, python, C, C++, PHP(5)支持 2 种持久化方式: RDB 和 AOF;3. 事务Redis 的命令执行是自带锁的,执行成功,都执行成功, 执行失...

2021-03-08 18:07:02 109

原创 equals() 和 hashcode() 的关系和同步重写的原因

1. 二者的关系:Java 存储对象时,生成了一张 Hash 表,保存了 对象的 哈希值和地址的对应关系。保存每一个对象 都需要 使用 hashcode() 和 equal() 这两个方法。hashcode() 的返回值:获取 对象链表存储的位置(最底下一排数组),获取对象存储所在的链表;equals(): 查找链表中是否有该对象,没有则将该对象插入链表, 有则不存储/覆盖;哈希表大概长这个样子:2. 同步重写的原因:官方文档要求:如果根据 equals(Object)

2021-03-05 16:41:07 128

原创 Linux 部署之:源码,GitLab,Jenkins,Tomcat 如何实现 一键部署 的?

IDEA 是一个强大的编辑器,将工作中有关的工具都进行了集成,本地部署方便快捷。源码,GitLab,Jenkins,Tomcat 在不同的服务器, 是如何实现 一键部署 的?四者关联:(1)源码 存储到 GitLab;(2)GitLab 通过 插件 与 Jenkins 进行关联, 使 jenkins 可以从 GitLab 上获取源码到本地; GitLab 对获取到的源码进行打包,整理成可以直接部署的 jar 包 或者 war 包;(3)GitLab 将打包好...

2021-03-03 18:35:59 124 1

原创 jekins 集成 gitLab 进行部署

1.jekins 打包 找不到程序包;maven 的 settings.xml 配置文件中的 仓库路径配置:<localRepository>D:\data\maven_repository</localRepository> -----> <localRepository>maven_repository</localRepository>2.springboot mvn install Failed to execute...

2021-03-03 12:50:53 148 1

原创 spring-data-jpa 自定义查询

spring data jpa 内部封装了引用了 hibernate 的接口。使用时,实际上使用的是 hibernate 的相关方法, 自定义查询也是按照 hibernate 进行的/** * 整合 jpa 的接口 */public interface TeacherRepository extends JpaRepository<Teacher, Integer> { /** * 自定义查询方法 * 根据主键查询 * * .

2021-01-14 15:41:12 133

原创 dubbo 项目搭建过程中出现的问题

1.Unabletofindadefaultprovider集成dubbo与 restful 时产生的,原因: 缺少一个 herbinate jar包;解决: pom 文件引入<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.2.0...

2020-12-18 21:10:38 333 1

原创 分布式项目的个人理解

分布式:就是将原来的一个项目,切割成多个小项目, 将小项目打成 jar 包;使用时:小项目之间互相引用(jar 包的形式), 功能上组装成原来的那个完整的项目。部署时:各个小项目可以同时部署在不同的服务器,一台宕机,短期不会影响整个完整项目的运行。且给维护人员预留时间进行修复。配置文件:在各小项目的 resourses 中, 会重组,不会因为分项目切割而调不到资源。所以说,应了某人的一句话:分布式项目难在那套治理体系,那是精髓,而不是项目本身。...

2020-12-16 13:56:19 2408 1

原创 nexus 私服配置, 子项目无法继承parent项目pom文件的问题

本地 maven 配置了远程nexus私服, 在本地创建 parent 项目, 子项目无法找到父项目的 pom 文档。子项目配置:<!-- 父节点依赖--><parent> <groupId>com.mint</groupId> <artifactId>mint-parent</artifactId> <version>1.0-RELEASE</version> <!--

2020-12-16 12:22:35 1122

原创 nexus 搭建 maven 私有库, 无法上传的原因之一

运用 nexus 搭建 maven 私有库, 无法上传的原因:前提: nexus 和本地 maven setting 文件已经配置完成。pom 文件中:<version>1.0-RELEASE</version> 的版本类型必须与<repository> <id>nexus-releases</id> <name>maven-releases</name> <url>http:/

2020-12-14 16:16:06 802

原创 Java反射探索(五): 运用反射, 书写一个对象复制方法

比较简陋, 肯定有逻辑漏洞, 请见谅哈!package devi.mint.reflect;import devi.mint.entity.UserEntity;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * 运用反射复制对象 * * 前提: 在已有一个对象的情况下, 复制一个一模一样.

2020-08-20 17:15:19 252

原创 Java反射探索(四): 生成和操作对象

反射都是通过类模板对对象进行操作的, 此处可以看到 第一篇笔记中说的: 先找到模块, 然后根据对象进行操作。测试前, 请自行创建 UserEntity 对象;package devi.mint.reflect;import devi.mint.entity.UserEntity;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTa.

2020-08-20 17:13:10 136

原创 Java反射探索(三): 根据类模板的部分 API 获取类的声明信息

Java 的 Class 类 提供了很多 API, 通过这些 API 就可以操作对象, 属性, 行为等等;测试前请自行穿件测试类: UserEntitypackage devi.mint.reflect;import devi.mint.entity.UserEntity;import java.lang.reflect.*;/** * 反射技术探索 * 使用反射查看类信息 */public class ReflectCheckClassContent { pr.

2020-08-20 17:03:38 151

原创 Java反射探索(二): 类加载器的获取

类加载器: 作用是用来把类(Class)装载进内存;测试前请自行穿件测试类: UserEntitypackage devi.mint.class_load;import devi.mint.entity.UserEntity;/** * 类加载测试 */public class ClassLoadTest { public static void main(String[] args) { // 获取到一个类的类加载器 UserEntit.

2020-08-20 17:00:08 127

原创 Java反射探索(一): 概念上的理解

学习 反射时, 老师要求我们要 “沐浴更衣”, “三天吃素”, 因为 它很神圣。反射技术是 Java 语言的灵魂。可惜当时经验不足, 没有抓住机会和老师探讨探讨。由于反射技术的大部分方法都是由 .dll 文件实现, 只能调用其提供的 API 接口, 接口练习的代码, 下文贴出。练习使用反射技术时, 感觉它像 Java 给 开的 “后门”。通过它, 可以对对象做所有代码层面可以做的事情。运用时体会到 设计者 强大的 脑回路, 和平时开发过程中完全不同的思维;核心部件: 类...

2020-08-20 16:52:30 87

原创 集合之 ArrayList, Linklist, vector 的联系与区别

直接点进源码看比较直接:联系:都是对集合的实现。区别:(1) ArrayList 的底层是对 Object[] 数组进行增删改查等操作;transient Object[] elementData;(2) Linklist 的底层是对节点进行操作:transient Node<E> first; 节点与节点之间进行关联, 形成双向链表。private static class Node<E> { E it...

2020-08-18 15:41:15 156

原创 Java 中子类重写时访问控制权限和抛出异常范围的限制

子类重写父类方法的 2 个范围控制:1、访问控制权限: 子类中的方法访问权限要大于父类;2、抛出异常的范围: 子类的方法抛出异常的范围要小余父类;这两个要求, 均出自于 动态多肽: 父类的引用指向子类的对象;子类可以向上自动转型为 父类, 不遵守上述规则, 会导致程序的矛盾, 抛出编译时异常;当子类的方法访问权限< 父类, 当父类的引用指向子类的对象: 父类允许访问该方法, 实际执行的子类方法不允许;以何为准?当子类的方法抛出的异常范围 > 父类,...

2020-08-18 12:58:10 801

原创 Java 内部类的知识整理

内部类很少用, 为何 Java 设计者会设计它?综合各方面的资料, 整理如下:原因:1. 为了弥补 “单继承” 的缺陷, 使用 单继承, 让类的继承结构更清晰, 牺牲了 “丰富度”; 不同的 “内部类” 可以继承不同的其他类, 达到 “多继承” 的实现, 提高代码的丰富度;2. 一个类A 的作用, 仅仅是供 某一个 类B 进行使用, 防止其他类对A类形成依赖关系, 将 A类 设计成 B类 的内部类, 从而确保使用者的唯一;Java 扩展库 使用内部...

2020-08-17 16:55:27 66

原创 Java 项目开发中是否真的运用了面向对象理论?

刚开始学习 Java 的时候, 由于没有项目经验, 对项目中是如何运用面向对象的理论, 雾里看花。当时老师的结论: 虽然 Java 语言是对面向对象理论的实现, 实际项目编码的过程中并没有用到 面向对象 的理论;当时没办法理解, 这个问题一直萦绕在脑中, 挥之不去。工作后, 今天复习基础笔记时, 对此有一些新的想法。首先, 面向对象理论中的对象组成:对象中包含:(1)数据(属性);(2)职责(行为);然后, 查看Java String 的源码, 的确是...

2020-08-14 18:07:45 339

原创 MyBatis 的异常总结

MyBatis 的典型异常总结一. 接口有参数, 调用时传参为空: 异常: org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: com.mys...

2020-01-16 16:02:00 252

原创 什么是 HASH

什么是 HASH中文名:散列、哈希。HashMap的由来是基于Hasing技术(Hasing), Hasing就是将很大的字符串或者任何对象转换成一个用来代表它们的很小的值,这些更短的值就可以很方便的用来方便索引、加快搜索。[引用1]哈希算法:指一系列加密算法,这些算法遵守了 哈希算法的加密规则,但是各种算法的加密实现方式不同。哈希算法是将不同长度的数据,进行加密运算,...

2019-05-12 22:42:41 359

原创 接口与抽象类的对比与思考

接口与抽象类的区别接口和抽象类,作为 Java 解决单一继承带来的 “类的丰富度不足”的问题的2种方法。有各自的特点,在此进行一个总结。1、 出现此种技术的原因不同。抽象类的出现,是建立在运用 父类引用指向子类对象的 的多态技术之上的。在反复使用这种多态技术的时候,发现,每次都是运用 子类 进行实例化,父类并没有参与实例化的机会。既然不会被实例化,那就把父类实例化...

2019-05-07 22:43:13 106

原创 Java 多肽的理解

多态初步理解概念: 多态,该名称来本来自于生物学中的一个专有名词,表示生物在不同阶段的不同形态。在哲学层面,该词也可以很好的描述Java 中提高类的丰富度的技术,因此借用了该词。多态技术产生的原因:Java 为了达到继承逻辑清晰的目的,放弃了 C++ 中的多继承,采用了单继承。从而导致了类的丰富度不够。为了解决这一问题,设计者就在 类的向下扩展 做文章,从而衍生出了 多态技...

2019-05-07 20:55:14 1378

原创 继承和多态的关系

继承和多态的关系今天学到了 Java 中的多态,在此记录一下自己的初步理解。将 Java体系 看成一个整体:继承:程序向上总结将子类共同的行为和属性集中写到父类中,通过继承,所有子类都能自动获得这些属性和行为,大大减少了重复代码。继承成为多态实现的基础。多态:程序向下扩展父类某些行为,子类进行继承重写,从而实现:同种行为,不同的实现。...

2019-05-06 23:36:10 4173

原创 面向对象初步理解

面向对象初步理解。面向对象的理论的产生,是为了解决现代编程业务多样化的问题。计算机的普及,促使人们运用计算机处理各种业务问题,计算机运用的最多的是业务问题,而不是科学计算。面向过程编程对解决实际业务问题有非常大的局限,无法满足需求,面向对象应运而生。对象:一个一个独立的物体,有其独立的特点,行为。将一类对象的共同特点,共同行为进行抽象,归纳,放到一个类中,组...

2019-05-05 22:51:38 92

空空如也

空空如也

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

TA关注的人

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