java

Springboot整合实现邮件发送的原理详解

2021-06-18
目录 开发前准备 基础知识 进阶知识 加入依赖 配置邮件 测试邮件发送 通常在实际项目中,也有其他很多地方会用到邮件发送,比如通过邮件注册账户/找回密码,通过邮件发送订阅信息等等.SpringBoot集成邮件服务非常简单,通过简单的学习即可快速掌握邮件业务类的核心逻辑和企业邮件的日常服务 开发前准备 首先注册发件邮箱并设置客户端授权码,这里以QQ 免费邮箱为例,其他的邮箱的配置也大同小异. 登录 QQ 邮箱,点击设置->账户,开启IMAP/SMTP服务,并生成授权码. 基础知识 电子邮件需要在邮

使用bat启动springboot项目并解决乱码问题

2021-06-18
目录 1.springboot项目打包jar 2.编写bat启动springboot脚本 3.bat启动springboot 4.常见问题 4.1.解决bat控制台中文乱码问题 4.2.cd %~dp0不是内部或外部命令 本文主要介绍了使用bat启动springboot项目并解决乱码问题,分享给大家,具体如下: 1.springboot项目打包jar 打包后,在如下目录: 这里打包的springboot的jar文件名为 api-0.0.1-SNAPSHOT.jar 2.编写bat启动spring

idea向System.getenv()添加系统环境变量的操作

2021-06-18
idea如何设置系统环境变量 背景 最近在接入阿里云的短信服务,在使用阿里云短信服务的SDK过程中想看看SDK中HttpUtil 中 public static String debugHttpRequest(HttpRequest request) { if (isHttpDebug) { StringBuilder debugString = new StringBuilder(); String sysUrl = request.getSysUrl(); URL url = null; t

在SpringBoot中,如何使用Netty实现远程调用方法总结

2021-06-18
Netty Netty是一个NIO客户端服务器框架: 它可快速轻松地开发网络应用程序,例如协议服务器和客户端. 它极大地简化和简化了网络编程,例如TCP和UDP套接字服务器. NIO是一种非阻塞IO ,它具有以下的特点 单线程可以连接多个客户端. 选择器可以实现单线程管理多个Channel,新建的通道都要向选择器注册. 一个SelectionKey键表示了一个特定的通道对象和一个特定的选择器对象之间的注册关系. selector进行select()操作可能会产生阻塞,但是可以设置阻塞时间,并且可

Java如何固定大小的线程池

2021-06-18
1.固定大小的线程池简介 线程池就是在程序启动的时候先建立几个可以使用的线程放在那里,然后等着具体的任务放进去,这个任务基本可以说都是Runnable的实现类,因此它减小了系统每次新建和销毁线程的开销,但同时增加了维护这些线程的开销,个中取舍看具体情况而定. 固定大小的线程池就是在启动的时候创建了固定个数的线程放在那里等待使用. 2.包装一个线程池对象 public class TaskPool{ private final ThreadPoolExecutor executor = (Thre

SpringBoot+MyBatis实现登录案例

2021-06-18
1.创建一个SpringBoot项目 2.创建表 create database login; use login; create table userlogin( username varchar(49), password varchar(49) ) 3.idea连接mysql 4. 创建实体类UserLogin @Data @AllArgsConstructor @NoArgsConstructor @Table(name = "userlogin")/* <depende

Java中HashMap的初始容量设置方式

2021-06-18
Java中HashMap的初始容量设置 根据阿里巴巴Java开发手册上建议HashMap初始化时设置已知的大小,如果不超过16个,那么设置成默认大小16: 集合初始化时, 指定集合初始值大小. 说明: HashMap使用HashMap(int initialCapacity)初始化 正例: initialCapacity = (需要存储的元素个数 / 负载因子) + 1.注意负载因子(即loader factor)默认为0.75, 如果暂时无法确定初始值大小,请设置为16(即默认值). 反例:

Mybatis中多个对象包含同一个对象的处理操作

2021-06-18
多个对象对应一个对象时,应该如何进行查询? 例如 关键字:association : 联系 ,关联 多个人可以关联一个人. 首先做一些准备,如:实体类,工具类和Mybatis核心文件 实体类: //老师实体类 package com.MLXH.pojo; public class Teacher { private int id; private String name; public Teacher() { } public Teacher(int id, String name) { thi

Springboot-yaml配置和自动配置原理分析

2021-06-18
目录 版本仲裁中心 自动配置原理 yaml语法 和@PropertySource注解一起使用 和@ImportResource一起使用 配置文件占位符 profile 配置文件的加载顺序 版本仲裁中心 spring dependencies中帮我们依赖了很多常用的jar包, 导入这些jar包不需要版本号 如: <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang

Java各种比较对象的方式的对比总结

2021-06-18
一.==和!=操作符 让我们从==和!=开始可以分别判断两个Java对象是否相同的操作符. 1.1 原始类型(Primitives) 对于原始类型,相同意味着具有相等的值: assertThat(1 == 1).isTrue(); 感谢自动拆箱,在将原语值与其包装类型对应值进行比较时,也可以这样做: Integer a = new Integer(1); assertThat(1 == a).isTrue(); 如果两个整数的值不同,==运算符将返回false,而!=运算符将返回true. 1.

JDK8中的HashMap初始化和扩容机制详解

2021-06-18
一.HashMap初始化方法 HashMap() 不带参数,默认初始化大小为16,加载因子为0.75: HashMap(int initialCapacity) 指定初始化大小: HashMap(int initialCapacity, float loadFactor) 指定初始化大小和加载因子大小: HashMap(Map<? extends K,? extends V> m) 用现有的一个map来构造HashMap. 二.分析初始化过程 1.初始化代码测试用例 Map<String

浅谈System.getenv()和System.getProperty()的区别

2021-06-18
最近遇到一个需求,服务器实例需要获取当前的环境变量.经过查资料,发现环境变量可以在两个地方设置. 一.在系统层面设置环境变量 在系统层面设置环境变量,之前我们应该都操作过,以windows系统为例 System.getenv()可以获取的在这里设置的变量. 二.在java虚拟机层面设置环境变量 个人理解,System.getProperty()可以获取在JVM 层面的变量,有些变量在JVM启动后,就内置了,如: 参数值 参数含义 java.version Java 运行时环境版本 java.ve

详解Java如何实现小顶堆和大顶堆

2021-06-18
大顶堆 每个结点的值都大于或等于其左右孩子结点的值 小顶堆 每个结点的值都小于或等于其左右孩子结点的值 对比图 实现代码 public class HeapNode{ private int size;//堆大小 private int[] heap;//保存堆数组 //初始化堆 public HeapNode(int n) { heap = new int[n]; size = 0; } //小顶堆建堆 public void minInsert(int key){ int i = this.

java静态代理的含义及用法

2021-06-18
说明 1.如果代理在程序运行之前就已经存在了,那么这种代理方式就成了静态代理,在这种情况下,代理通常是由我们在Java代码中定义的. 2.一般来说,静态代理中的代理类和委托类将实现相同的界面,或者生出相同的父类. 实例 /** * 委托类和代理类都实现了Sell接口 */ public interface Sell { void sell(); void ad(); } 实例扩展: 在Java中,代理也是这样的概念,来看个栗子: 先来创建一个明星类Stars: public class Star

Spark集群框架的搭建与入门

2021-06-18
目录 一.Spark概述 运行结构 二.环境部署 1.Scala环境 2.Spark基础环境 3.Spark集群配置 4.Spark启动 5.访问Spark集群 三.开发案例 1.核心依赖 2.案例代码开发 四.源代码地址 一.Spark概述 运行结构 Driver 运行Spark的Applicaion中main()函数,会创建SparkContext,SparkContext负责和Cluster-Manager进行通信,并负责申请资源.任务分配和监控等. ClusterManager 负责申请

spring boot 加载web容器tomcat流程源码分析

2021-06-18
我本地的springboot版本是2.5.1,后面的分析都是基于这个版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.1</version> <relativePath/> <!-- lookup parent fr

Java框架入门之简单介绍SpringBoot框架

2021-06-18
前言 Spring都包含了哪些部分呢? 主要包含Spring Boot.Spring Framework.Spring Data.Spring Cloud.Spring Cloud Data Flow.Spring Security.Spring Batch等众多项目.在spring的官网中对其有详细的介绍. 一.SpringBoot是什么? SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,

Java环境下高德地图Api的使用方式

2021-06-18
Java高德地图Api的使用 使用高德经纬度获取地址信息 一些准备用到的常量 /** * 高德地图请求秘钥 */ private static final String KEY = "密钥,可以去高德地图免费申请"; /** * 返回值类型 */ private static final String OUTPUT = "JSON"; /** * 根据地名获取高德经纬度Api */ private static final String GET_LNG_LAT_UR

Spring Session的使用示例

2021-06-18
目录 Session Session常用解决方案 Spring-Session 测试代码 基于数据库的Spring-Session 基于Redis的Spring-Session 总结 Session Http协议是无状态的,这样对于服务端来说,没有办法区分是新的访客还是旧的访客.但是,有些业务场景,需要追踪用户多个请求,此时就需要Session.关于session的百度百科session Session:在计算机中,尤其是在网络应用中,称为"会话控制".Session对象存储特定用户会

分析Spring框架之设计与实现资源加载器

2021-06-17
目录 一.前言 二.目标 三.设计 四.实现 4.1.工程结构 4.2.资源加载接口定义和实现 4.3.包装资源加载器 4.4.Bean定义读取接口 4.5.Bean定义抽象类实现 4.6.解析XML处理Bean注册 五.测试 5.1.事先准备 5.2.配置文件 5.3.单元测试(资源加载) 5.4.单元测试(配置文件注册Bean) 六.总结 一.前言 你写的代码,能接的住产品加需求吗? 接,是能接的,接几次也行,哪怕就一个类一片的 if...else 也可以!但接完成什么样可就不一定了,会不会