
java
small onion
山溜至柔,石炎之穿
展开
-
java8新特性-Stream流
1. Stream 流介绍Stream 不同于其他集合框架,它也不是某种数据结构,也不会保存数据,但是它负责相关计算,使用起来更像一个高级的迭代器。在之前的迭代器中,我们只能先遍历然后在执行业务操作,而现在只需要指定执行什么操作, Stream 就会隐式的遍历然后做出想要的操作。另外 Stream 和迭代器一样的只能单向处理,如同奔腾长江之水一去而不复返。由于 Stream 流提供了惰性计...原创 2019-11-19 14:39:31 · 225 阅读 · 0 评论 -
Spring Boot Cache使用与整合
一:Spring缓存抽象Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发; Cache接口为缓存的组件规范定义,包含缓存的各种操作集合; Cache接口下Spring提供了各种...原创 2019-11-06 22:56:17 · 112 阅读 · 1 评论 -
spring之MessageSource 国际化那点事
Spring对国际化这一块支持还是蛮友好的,上手也是蛮简单,但是加载流程还是需要大家掌握的,不然会少定义一个资源文件会让你莫名其妙的出现一些bug。接下来主要分享一下关于这一块的基本知识。MessageSourcepublicinterfaceMessageSource{@NullableStringgetMessage(Stringcode,@Nul...原创 2019-10-24 14:52:54 · 660 阅读 · 0 评论 -
拦截机制中Aspect、ControllerAdvice、Interceptor、Fliter之间的区别详解
在项目的开发中,在某些情况下,我们需要对客户端发出的请求进行拦截,常用的API拦截方式有Fliter,Interceptor,ControllerAdvice以及Aspect。上图是spring中的拦截机制,如果出现异常的话,异常的顺序是从里面到外面一步一步的进行处理,如果到了最外层都没有进行处理的话,就会由tomcat容器抛出异常。下面我将详细的解释这四个拦截方式的不同。因为只是演示就不...原创 2019-10-23 23:42:01 · 1925 阅读 · 1 评论 -
postman 模拟前端传递复杂对象及@RequestBody注解说明
后台需要接收的对象格式如下:使用postman模拟请求:{ "name": "onion", "arrStr": [ "1", "2", "3", "4", "5" ], "strList": [ "1", "2", "3...原创 2019-10-23 15:21:06 · 5731 阅读 · 1 评论 -
Executor Framework】——Callable用法实践
https://www.jianshu.com/p/a3baf75486b5原创 2019-10-19 21:47:46 · 112 阅读 · 0 评论 -
maven打包 Compilation failure: 无法加载本地lib/下的jar包问题(程序包XXX不存在)
复制以下代码到POM.xml 文件即可: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId&...原创 2019-06-05 17:31:46 · 1457 阅读 · 0 评论 -
Nginx反向代理,负载均衡,redis session共享,keepalived高可用
使用的资源:nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换。tomcat服务器两台,由nginx进行反向代理和负载均衡,此处可搭建服务器集群。redis服务器一台,用于session的分离共享。nginx主服务器:192.168.50.133nginx备服务器:192.168.50.135tomcat项目服务器1:192.168.50....原创 2019-06-06 16:28:39 · 171 阅读 · 0 评论 -
SpringBoot使用JSR303参数校验并进行全局异常处理
SpringBoot使用JSR303参数校验开发web项目有时候我们需要对controller层传过来的参数进行一些基本的校验,比如非空,非null,整数值的范围,字符串的个数,日期,邮箱等等。最常见的就是我们直接写代码校验,这样以后比较繁琐,而且不够灵活。 不能总是写繁琐的代码来实现吧。使用JSR303来做参数校验就方便并且整洁很多了。pop引入依赖 12345...原创 2019-06-04 16:54:12 · 571 阅读 · 0 评论 -
Validation分组校验
定义分组类每个分组类只需要一个接口就可以了AddGrouppublic interface AddGroup {}UpdateGrouppublic interface UpdateGroup {}校验规则上添加分组/** * @author dong */@Datapublic class UserForm implements Serializ...原创 2019-07-25 17:39:21 · 1005 阅读 · 0 评论 -
centOS-安装 五件套 JDK,tomcat,redis,nginx,mysql
JDK:一、手动解压安装包:1.下载jdk1.8,进入http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,复制下载目录# wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef...原创 2019-07-31 22:08:16 · 324 阅读 · 0 评论 -
SpringBoot引入第三方jar包或本地jar包的处理方式,爬坑
由于之前引入了一个本地Jar包在本地测试环境下项目是可以正常运行的,但是发布到Linux服务器上就一直报找不到Jar包错误,后面发现是Maven 打包的问题我要将smartgild.jar 这个包引入到 platform-mobile-api.jar 这个项目里打包后jar包的路径在BOOT-INF\lib目录下在Resource 文件下新建一个包 jar 后...原创 2019-09-05 17:05:59 · 862 阅读 · 0 评论 -
linux 设置JAVA_HOME 环境变量(本文只做笔记记录,方便自己使用。)
找到 /etc/profile 文件添加以下配置即可: 我的jdk 路径/usr/local/jdk1.8.0_181unset iunset -f pathmungeexport JAVA_HOME=/usr/local/jdk1.8.0_181export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/...原创 2019-09-24 11:14:19 · 1139 阅读 · 0 评论 -
idea操作git远程回滚到某个提交节点或某个版本
1. 项目右键后,然后在“Show History”中找到当前版本(暂时取名newVersion)和想要回退到的版本(暂时取名oldVersion)2. 选择oldVersion版本右键点击“Copy Revision Number”复制oldVersion版本的版本号:3. 然后右击项目依次选中:Git->Repository->Reset HEAD4. ...原创 2019-05-27 10:03:46 · 3772 阅读 · 0 评论 -
FutureTask 介绍
FutureFuture是一个接口,它定义了5个方法:boolean cancel(boolean mayInterruptIfRunning); boolean isCancelled(); boolean isDone(); V get() throws InterruptedException, ExecutionException;简单说明一下接口定义 boolean c...转载 2019-05-16 22:16:08 · 167 阅读 · 0 评论 -
springboot-aop切面设置全局事务
package com.platform.generator.aspect;import java.util.Collections;import java.util.HashMap;import java.util.Map;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;i...原创 2019-05-21 15:24:16 · 4708 阅读 · 1 评论 -
Redis客户端连接异常:Could not get resource from the pool 针对centos 7.5以上
最近踩的一个坑 客户端不能从连接池获取连接的最大可能是,Redis服务器所在的主机中防火墙没有开放redis的端口: centos 7.5 需要登陆阿里云后台 开放6379 端口 , 问题完美解决! 还有一种可能是redis.conf文件中绑定的ip设定为127.0.0.1,这样的话,就会造成连接不上的问题,解决办法是注释掉这段代码,或者绑定客户端的ip1)注释掉 ...原创 2018-12-28 10:14:25 · 175 阅读 · 0 评论 -
ArrayList和HashMap加载因子详解
Map是经常会被用到的,一般情况下,使用的时候会像这样进行声明:Map map = new HashMap(10);如果像上面这样使用默认的构造方法,初始容量被设置为10。当map 中的元素超过10个以后,会重新分配内存空间,使数组的大小增长到16。可以通过调试看到动态增长的数量变化:10->16->25->38->58->88->...也可以...原创 2019-05-09 11:52:37 · 2318 阅读 · 2 评论 -
IO流:★★★★★
流:可以理解数据的流动,就是一个数据流。IO流最终要以对象来体现,对象都存在IO包中。流也进行分类:1:输入流(读)和输出流(写)。2:因为处理的数据不同,分为字节流和字符流。字节流:处理字节数据的流对象。设备上的数据无论是图片或者dvd,文字,它们都以二进制存储的。二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节。意味着,字节流可以处理设备上...原创 2019-05-09 14:43:33 · 124 阅读 · 0 评论 -
Springboot事务使用与回滚
Springboot中事务的使用:1、启动类加上@EnableTransactionManagement注解,开启事务支持(其实默认是开启的)。2、在使用事务的public(只有public支持事务)方法(或者类-相当于该类的所有public方法都使用)加上@Transactional注解。在实际使用中一般是在service中使用@Transactional,那么对于controlle...原创 2019-05-07 14:46:06 · 30835 阅读 · 4 评论 -
Java基础-多线程-创建和启动
简单阐释进程和线程对于进程最直观的感受应该就是“windows任务管理器”中的进程管理: (计算机原理课上的记忆已经快要模糊了,简单理解一下):一个进程就是一个“执行中的程序”,是程序在计算机上的一次运行活动。程序要运行,系统就在内存中为该程序分配一块独立的内存空间,载入程序代码和资源进行执行。程序运行期间该内存空间不能被其他进程直接访问。系统以进程为基本单位进行系统资源的调度和分配...转载 2019-05-14 23:25:23 · 128 阅读 · 0 评论 -
使用递归算法计算阶乘
亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。public class P3_3 { /** * 递归求阶乘 * @param n * @return */ static long fact(int n){ if(n<1) return 1;...原创 2019-05-10 09:52:42 · 2064 阅读 · 0 评论 -
冒泡排序法-详解
public class BubbleSort { static final int SIZE=10; public static void bubbleSort(int [] a){ int temp; for (int i = 1; i <a.length ; i++) { for (int j ...原创 2019-05-10 10:24:37 · 150 阅读 · 0 评论 -
J V M 之 内存调优
参数设置背景 在做java开发时尤其是大型软件开发时经常会遇到内存溢出的问题,比如说OutOfMemoryError等。这是个让开发人员很痛苦、也很纠结的问题,因为我们有时不知道什么样的操作导致了这种问题的发生。所以我们不得不通过不断的审查、优化自己的代码结构。但是有时我们会发现有些时候不单单是通过重构自身的代码就能够解决这样的问题,因为也可能是由于我们对java虚拟机运行时的内存分配的...原创 2019-05-10 10:37:29 · 162 阅读 · 0 评论 -
选择排序-详解
public class SelectionSort { static final int SIZE=10; /** * 选择法排序 * @param a */ public static void selectSort(int[] a){ int index; int temp;//交换...原创 2019-05-10 13:38:44 · 124 阅读 · 0 评论 -
插入排序法-详解
/** * 插入排序法 */public class InsertionSort { static final int SIZE=10; public static void insertionSort(int[] a){ int i,j,t,h; for (i = 1; i <a.length ; i++) { ...原创 2019-05-10 15:41:41 · 174 阅读 · 0 评论 -
Shell排序法-详解
/** * 希尔排序法 */public class ShellSort { static final int SIZE=10; /** * 希尔排序法 */ public static void shellSort(int [] a){ int i,j,h; int r,temp; ...原创 2019-05-10 16:10:21 · 742 阅读 · 0 评论 -
快速排序-详解
/** * 快速排序法 */public class QuickSort { static final int SIZE=18; static void quickSort(int[] a, int l,int r){ if (l < r) { int i,j,x; i = l; ...原创 2019-05-10 16:50:47 · 126 阅读 · 0 评论