java

Spring如何正确注入集合类型

2021-09-12
目录 1 注入方式 1.1 收集方式 1.2 直接装配方式 2 源码解析 2.1 收集装配 1 获取集合类型的elementType 2 根据元素类型找出所有Bean 3 将匹配的所有的Bean按目标类型转化 2.2 直接装配方式 3 修正 集合类型的自动注入是Spring提供的另外一个强大功能.我们在方便的使用依赖注入的特性时,必须要思考对象从哪里注入.怎么创建.为什么是注入这一个对象的.虽然编写框架的目的是让开发人员无需关心太多底层细节,能专心业务逻辑的开发,但是作为开发人员不能真的无脑去使

一小时迅速入门Mybatis之初识篇

2021-09-12
目录 一.Mybatis简介 二.mybatis入门 2.1 创建Maven项目 2.2 修改pom文件(引入jar包) 2.3 编写xml 2.4 编写Java代码 2.5 唠唠 一.Mybatis简介 Mybatis是一款超级无敌的持久层框架,它支持自定义SQL.存储过程以及高级映射.Mybatis可以通过简单的XML或者注解来配置和映射原始类型.接口和Java POJO为数据库中的记录. Mybatis相比于Hibernate在处理复杂业务的时候灵活度更高.复杂的SQL编写更容易. 二.m

基于IDEA 的远程调试 Weblogic的操作过程

2021-09-12
目录 基于IDEA 的远程调试 Weblogic 背景 操作过程 docker 相关配置 IDEA 相关配置 基于IDEA 的远程调试 Weblogic 使用环境 docker + vulhub 腾讯云上部署docker,docker上部署vulhub中的weblogic 背景 IDEA 可以在无源代码的情况下进行远程调试,只需将程序的 class文件或 jar包添加进项目依赖即可对一些未开源的 Java程序 或大型中间件进行远程调试. 操作过程 docker 相关配置 进入vulhub 的 w

Java语言之包和继承详解

2021-09-12
目录 一.包 包名 类的导入与静态导入 在包中添加类 包访问权限 二.继承 类.超类与子类 重写方法(override) this与super的区别: 子类构造器 protected关键字 阻止继承:final关键字 组合 总结 一.包 包名 在讲包名前,我们先来了解一下,包是用来干什么的? Java中允许使用包(package),包将类组织在一个集合中.借助包可以方便管理组织自己的代码,并将自己的代码与别人的提供的代码库分开管理. 包是组织类的一种方式.使用包的主要目的就是保证类的唯一性. 在

利用consul在spring boot中实现分布式锁场景分析

2021-09-12
因为在项目实际过程中所采用的是微服务架构,考虑到承载量基本每个相同业务的服务都是多节点部署,所以针对某些资源的访问就不得不用到用到分布式锁了. 这里列举一个最简单的场景,假如有一个智能售货机,由于机器本身的原因不能同一台机器不能同时出两个商品,这就要求在在出货流程前针对同一台机器在同一时刻出现并发 创建订单时只能有一笔订单创建成功,但是订单服务是多节点部署的,所以就不得不用到分布式锁了. 以上只是一种简单的业务场景,在各种大型互联网实际应用中,需要分布式锁的业务场景会更多,综合比较了业界基于各种

springboot如何重定向携带数据 RedirectAttributes

2021-09-12
目录 当controller层需要重定向到指定页面时,如何携带数据? RedirectAttributes的使用 RedirectAttributes存值后读取不到 当controller层需要重定向到指定页面时,如何携带数据? 传统使用session 使用RedirectAttributes. (利用session原理) 优点:提供了addFlashAttribute 等方法.确保数据只能被使用一次后删除 RedirectAttributes的使用 public interface Redir

Mybatis-Plus 通用CRUD的详细操作

2021-09-12
目录 1.插入操作 1.1 方法定义 1.2 测试用例 1.3 测试 1.4 @TableField 2.更新操作 2.1 根据id更新 2.2 根据条件更新 3.删除操作 3.1 deleteById 3.2 deleteByMap 3.3 delete 3.4 deleteBatchIds 4.查询操作 4.1 selectById 4.2 selectBatchIds 4.3 selectOne 4.4 selectCount 4.5 selectList 4.6 selectPage 5

Java中关于字典树的算法实现

2021-09-12
字典树(前缀树)算法实现 前言 字典树,又称单词查找树,是一个典型的 一对多的字符串匹配算法."一"指的是一个模式串,"多"指的是多个模板串.字典树经常被用来统计.排序和保存大量的字符串.它利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较. 字典树有3个基本性质: 根节点不包含字符,其余的每个节点都包含一个字符: 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串: 每个节点的所有子节点包含的字符都不相同. pass参数:代表从这个

Java SpringBoot启动指定profile的8种方式详解

2021-09-12
目录 配置文件中设置 命令行设置 IDEA中设置 1.program arguments程序参数 2.VM options虚拟机参数 3.Active profiles 参数 遇到的问题 总结 配置文件中设置 通常在公司级别的项目中,我们可能会写多个application- dev/prod.yml ,然后我们通常会在application.yml配置文件中写入 spring: profiles: active: dev 这里会指定激活的profile是application- dev.yml

一文搞懂Spring中的JavaConfig

2021-09-12
目录 配置类 注册组件 扫描包配置 事务注解驱动 单元测试加载配置类 properties配置文件加载(了解) aspectj注解开关 传统spring一般都是基于xml配置的,不过后来新增了许多JavaConfig的注解.特别是springboot,基本都是清一色的java config,不了解一下,还真是不适应.这里给大家普及下Spring中的JavaConfig知识. 什么是JavaConfig.通过注解和配置类完成Spring的相关配置 Spring配置都做了什么? 注册组件.其他配置(

用StopWatch优雅替代currentTimeMillis计算程序执行耗时

2021-09-12
需求 有时需要记录程序执行时间,最简单就是打印当前时间与执行完时间的差值,缺点是: 执行大量测试的话就很麻烦 不直观 如果想对执行的时间做进一步控制,则需要在程序中很多地方修改 于是 Spring提供了一个StopWatch类可以做类似任务执行时间控制,即封装了一个对开始时间,结束时间记录工具 案例 统计输出总耗时 import org.springframework.util.StopWatch; public class SpringStopWatchExample { public sta

Maven Plugin的@Mojo和@Execute的具体使用

2021-09-12
本文以spring-boot-maven-plugin 2.5.4为例 @Mojo defaultPhase 以spring-boot-maven-plugin:start为例, 他的@Mojo defaultPhase是PRE_INTEGRATION_TEST,该目标默认绑定到此阶段. @Mojo(name = "start", requiresProject = true, defaultPhase = LifecyclePhase.PRE_INTEGRATION_TEST, re

java如何实时动态获取properties文件的内容

2021-09-12
目录 java 实时动态获取properties文件的内容 动态读取的代码 Java 读取配置文件 Properties VS ResourceBundle 1. 常用API 2. Properties 解析属性文件 3. ResourceBundle 解析属性文件 4. 属性文件 5. 实战推荐 java 实时动态获取properties文件的内容 用"ClassLoader.getResourceAsStream"读取properties文件时会发现修改了.properties后,

SpringBoot入门原理及优势分析

2021-09-12
目录 1.springboot可以干嘛用? 2.Spring Boot 的优势: 3.Spring Boot 的使用 4.创建Handler类 5.创建启动类 1.springboot可以干嘛用? 通过 Spring Boot 可以快速构建⼀个基于 Spring 框架的 Java Application,简化配置,自动装配. JavaConfiguration ⽤ Java 类替代 XML 的配置⽅式. Spring Boot 对常⽤的第三⽅库提供了配置⽅案,可以很好地和 Spring 进⾏整合

Spring Bean 依赖注入常见错误问题

2021-09-12
有时我们会使用@Value自动注入,同时也存在注入到集合.数组等复杂类型的场景.这都是方便写 bug 的场景. 1 @Value未注入预期值 在字段或方法/构造函数参数级别使用,指示带注释元素的默认值表达式. 通常用于表达式驱动或属性驱动的依赖注入. 还支持处理程序方法参数的动态解析 例如,在 Spring MVC 中,一个常见的用例是使用#{systemProperties.myProp} systemProperties.myProp #{systemProperties.myProp}样式

HashMap原理及put方法与get方法的调用过程

2021-09-12
HashMap的原理 HashMap的数据结构为数组+链表,以key,value的形式存值,通过调用put与get方法来存值与取值. 它内部维护了一个Entry数组,得到key的hashCode值将其移位按位与运算,然后再通过跟数组的长度-1作逻辑与运算得到一个index值来确定数据存储在Entry数组当中的位置,通过链表来解决hash冲突问题. 当发生碰撞了,对象将会储存在链表的下一个节点中. HashMap底层原理(当你put,get时内部会发生什么呢?) 接触过HashMap的小伙伴都会经

C++ 程序流程结构详解

2021-09-12
目录 1.选择结构 1.1 判断语句if 1.单行if语句 if 2.多行if语句 if...else 3.多条件if语句 if...else if...else if ...else 4.嵌套if语句 1.2 三目运算符判断 1.3 开关语句switch 2.循环结构 2.1 while 2.2 do...while 2.3 for 2.4 循环控制 1.break:跳出循环 2.continu:跳出本次循环,继续下一次循环 3.goto:跳转到label,接着往下走 2.5 循环嵌套 总结

Java 基础语法之解析 Java 的包和继承

2021-09-12
目录 一.包 1. 概念 2. 使用方式 3. 静态导入 4. 创建包 5. 包的访问权限 6. 常见的系统包 二.继承 1. 概念 2. 语法规则(含 super 使用) 3. protected 关键字 4. 更复杂的继承关系 5. final 关键字 三.组合 四.总结(含谜底) 一.包 1. 概念 根据定义:包是组织类的一种方式 那么为什么要组织类呢? 简单来讲就是保证类的唯一性,就比如在以后的工作中,如果大家一起开发一个项目,大家可能在自己的代码中都写到了一个 Test 类,而如果出现

Java数据结构彻底理解关于KMP算法

2021-09-12
大家好,前面的有一篇文章讲了子序列和全排列问题,今天我们再来看一个比较有难度的问题.那就是大名鼎鼎的KMP算法. 本期文章源码:GitHub源码 简介 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法).KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的.具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息.KMP算法

spring使用JavaConfig进行配置的方法

2021-09-12
JavaConfig,是在 Spring 3.0 开始从一个独立的项目并入到 Spring 中的.JavaConfig 可以看成一个用于完成 Bean 装配的 Spring 配置文件,即 Spring 容器,只不过该容器不是 XML文件,而是由程序员使用 Java 自己编写的 Java 类. 实体类: package com.lzl.spring.entity; public class Car { private String brand;//品牌 private String type;//