java

带你了解Java数据结构和算法之链表

2022-01-18
目录 1.链表(Linked List) 2.单向链表(Single-Linked List) ①.单向链表的具体实现 ②.用单向链表实现栈 4.双端链表 ①.双端链表的具体实现 ②.用双端链表实现队列 5.抽象数据类型(ADT) 6.有序链表 7.有序链表和无序数组组合排序 8.双向链表 9.总结 前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷.在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会

Spring的IOC控制反转详解

2022-01-18
目录 1.什么是 IOC? 2.分享Bromon的blog上对IoC与DI浅显易懂的讲解 3.Spring 容器创建对象的三种方式 第一种方法:利用默认的构造方法 第二种方法:利用静态工厂方法 第三种方法:利用实例工厂方法 4.Spring 容器创建对象的时机 第一种:默认情况下,启动 spring 容器便创建对象(遇到bean便创建对象) 第二种:在spring的配置文件bean中有一个属性 lazy-init="default/true/false" 5.spring的bean中的

springcloud整合gateway实现网关的示例代码

2022-01-18
目录 1.项目目录: 2.代码实现: 3.实现效果: 1.项目目录: 创建项目gateway作为父类 2.代码实现: 父类依赖 ​ <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>2.6.2</versi

带你了解Java数据结构和算法之数组

2022-01-18
目录 1.Java数组介绍 ①.数组的声明 ②.访问数组元素以及给数组元素赋值 ③.数组遍历 2.用类封装数组实现数据结构 3.分析数组的局限性 4.总结 1.Java数组介绍 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型(Object类型数组除外). ①.数组的声明 第一种方式: 数据类型 [] 数组名称 = new 数据类型[数组长度]; 这里 [] 可以放在数组名称的前面,也可以放在数组名称的后面,我们推荐放在数组名称的前面,这样看上去 数据类型 [] 表示

Java&nbsp;IO之序列化与反序列化详解

2022-01-18
目录 1.什么是序列化与反序列化? 2.为什么要做序列化? 3.Java 怎么进行序列化? 总结 1.什么是序列化与反序列化? 序列化:指把堆内存中的 Java 对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络节点(在网络上传输).这个过程称为序列化.通俗来说就是将数据结构或对象转换成二进制串的过程 反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程.也就是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程 2.为什么要做序列化? ①

SpringMVC的详细架构你了解嘛

2022-01-18
目录 1.SpringMVC 详细介绍 2.SpringMVC 处理请求流程 3.配置前端控制器 4.配置处理器适配器 5.编写 Handler 5.配置处理器映射器 6.配置视图解析器 7.DispatcherServlet.properties 总结 通过上篇博客,我们能编写一个 SpringMVC 的入门实例,但是为什么要这样写?这样写有啥好处?通过这篇博客我们会有详细的了解. 1.SpringMVC 详细介绍 通过入门实例,我们大概知道 SpringMVC 的作用,那么它到底是什么呢?

Java架构师的5大基本能力你知道吗

2022-01-18
目录 业务架构师与基础架构师区别 如何做技术选型? 总结 总体而言,架构师负责软件领域的顶层设计.架构师需要根据公司的发展,规划企业未来若干年的架构,制定可落地的架构方案,解决技术难题,做技术选型与攻关,落地具体的架构.优秀的架构师既能做架构方案,也能写具体的架构代码. 架构师要求比较高,要有架构的广度.深度,需要掌握一系列的架构技术栈,要求有架构实战经验,要有很强的系统分析.系统架构.系统设计,业务分析的能力 首先要有架构师的思维,对分布式.高并发.高性能.高可用.可扩展.松耦合.高内聚.可复

Java实现输出数字三角形实例代码

2022-01-18
目录 题目: 题解: 代码: 总结 题目: 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 输入格式 第一行包含整数 nn,表示数字三角形的层数. 接下来 nn 行,每行包含若干整数,其中第 ii 行表示数字三角形第 ii 层包含的整数. 输出格式 输出一个整数,表示最大的路径数字和. 数据范围 1≤n≤5001≤n≤50

Mybatis&nbsp;查询语句条件为枚举类型时报错的解决

2022-01-18
目录 Mybatis查询语句条件为枚举类型报错 通常这个错误是 Mybatis处理枚举类型 1.枚举 2.包含枚举的实体类 3.书写枚举处理器 4.配置枚举处理器 5.dao层 6.mapper文件 7.测试 Mybatis查询语句条件为枚举类型报错 通常我们对于数据库中一些枚举字段使用tinyInt类型,而java对象对应的字段很多时候会为了方便定义成short或者int.但这样显然不美观方便,让后面维护的人抠破脑袋找你的常量定义在哪儿,要是没有注释简直让人崩溃.时间久后,没有人知道这里面的值

SpringBoot项目启动时增加自定义Banner的简单方法

2022-01-18
目录 前言 制作Banner 总结 前言 最近有小伙伴推荐给博客启动的时候加上自定义Banner,开始我还不太明白他说的是那部分,后面给我发了这样一个文件,陌溪瞬间就懂了 ////////////////////////////////////////////////////////////////////   //                          _ooOoo_                               //   //                    

mybatis查询到了数据,但是实体类个别字段为null问题

2022-01-18
目录 mybatis查询数据,实体类个别字段为null 最终的最终发现 查询的数据中有几个列为null 封装不上 sql语句查询存在的列显示不存在 问题 数据 小结一下 mybatis查询数据,实体类个别字段为null 今天在做一个简单的查询操作时遇到的坑,折腾了好久好久,有必要记录一下本菜鸡的心理活动 debug单步执行发现查询之后有几个字段没有映射成功,依然为null 而控制台打印的sql语句确实拿到了 想着是不是实体类里面的字段命名不一致,瞪大狗眼看了一万遍也没发现有啥不一样. 又试着在s

Java11 中基于嵌套关系的访问控制优化问题

2022-01-18
目录 Java11 之前的实现方式 技术债务 Java11 中的实现 Nestmate 新增的 API getNestHost getNestMembers isNestmateOf 后续的改进 你好,我是看山. Java 语言很强大,但是,有人的地方就有江湖,有猿的地方就有 bug,Java 的核心代码并非十全十美.比如在 JDK 中居然也有反模式接口常量 中介绍的反模式实现,以及本文说到的这个技术债务:嵌套关系(NestMate)调用方式. 在 Java 语言中,类和接口可以相互嵌套,这种组

Springboot内外部logback多环境配置详解

2022-01-18
目录 一.概述 二.项目内外配置 三.使用自定义appender 四.logback查找配置源码 五.案例源码 一.概述 SpringBoot官方文档Springboot 默认读取的是项目内的 resources 中 logback 配置文件.如果 classpath(resources) 下有logback-test.xml会优先生效,并且会和其他logback文件同时生效.Springboot 默认日志级别是DEBUG,所以在logback初始化之前,会有DEBUG日志输出. 二.项目内外配

SpringBoot如何自定义starter

2022-01-18
目录 1. 什么是starter 2. 自动配置原理 2.1 自动配置生效 3. 自定义starter 3.1 命名规范 4.总结 4.1为什么要自定义starter? 4.2 自定义starter的案例 1. 什么是starter Springboot的出现极大的简化了开发人员的配置,而这之中的一大利器便是springboot的starter,starter是springboot的核心组成部分,为什么说引入如下依赖就满足了日常web开发? <dependency>   <groupId

Java数据结构和算法之冒泡,选择和插入排序算法

2022-01-18
目录 1.冒泡排序 2.选择排序 3.插入排序 4.总结 1.冒泡排序 这个名词的由来很好理解,一般河水中的冒泡,水底刚冒出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,这物理规律我不作过多解释,大家只需要了解即可. 冒泡算法的运作规律如下: ①.比较相邻的元素.如果第一个比第二个大,就交换他们两个. ②.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数(也就是第一波冒泡完成). ③.针对所有的元素重复以上的步骤,除了最后一个. ④.持续每次对越

深入解析HashMap的put方法

2022-01-18
目录 一.创建 二.put() 三.数组初始化 四.扩容 一.创建 这个相信大家也都知道怎么使用.今天就深入理解一下这里的底层原理. 首先HashMap在java中,创建出来是一个数组,然后数组上存放的元素是一个链表. 二.put() 进入底层源码看一下. HashMap,在添加第一个元素的时候创建一个默认2的幂的数组.也就是16,这个参数也可以你自己设置.但是一定是2的幂,假如new HashMap(30),那么只会创建一个32大小的数组. 计算出元素的hashcode,放到指定位置,看数组中

MybatisPlus代码生成器含XML文件详解

2022-01-18
目录 MybatisPlus代码生成器含XML 所需依赖 代码如下 MybatisPlus代码生成器,自用版本不带xml MybatisPlus代码生成器含XML 所需依赖         <!--Mybatis-Plus-->         <dependency>             <groupId>com.baomidou</groupId>             <artifactId>mybatis-plus-boot-sta

Spring Boot用户注册验证的实现全过程记录

2022-01-18
目录 1. 概述 2. 创建User DTO Object 3. 实现一个注册Controller 4. 验证注册数据 4.1 内置的验证 4.2 自定义验证以检查电子邮件的有效性 4.3 使用自定义验证来确认密码 4.4 检查该账户是否已经存在 5. 持久化处理 6. 安全登录 6.1 自定义UserDetailsService 6.2 开启New Authentication Provider 7. 结语 1. 概述 在这篇文章中,我们将使用Spring Boot实现一个基本的邮箱注册账户以

SpringMVC注解的入门实例详解

2022-01-18
目录 1.在 web.xml 文件中配置前端处理器 2.在 springmvc.xml 文件中配置处理器映射器,处理器适配器,视图解析器 3.编写 Handler 4.编写 视图 index.jsp 5.在浏览器中输入:http://localhost:8080/SpringMVC_03/hello 总结 1.在 web.xml 文件中配置前端处理器 <?xml version="1.0" encoding="UTF-8"?> <web-app x

SpringBoot实现redis缓存菜单列表

2022-01-17
因为系统的菜单列表是不轻易改变的,所以不需要在每次请求的时候都去查询数据库,所以,在第一次根据用户id请求到菜单列表的时候,可以把菜单列表的数据缓存在redis里,在第二次请求菜单列表的时候,可以直接在redis缓存里面获取数据,从而减少对数据库的操作,提升性能!首先,我们要下载redis到本地,然后在cmd终端打开redis的src目录,然后运行redis-server即可开启redis本地服务(mac),开启了redis服务后,就要在项目中配置相关的redis的代码了,首先在pom.xml中