Home

GitHub构建Maven依赖仓库

吐槽一句:博客氛围太差了,一篇博客到处发,而且自己还没有实践,直接带到沟里了。 1.基础构建 Github新建仓库 本地初始化git目录 初始化命令 git init 将远程的仓库和本地git目录建立连接 git remote add origin git@github.com:Encyclopedias/MavenRepo.git 新建项目,更改maven的项目的pom文件,如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w...

Read more

Arthas基本使用

1. Arthas下载安装 Arthas官网 Windows/Mac 输入cmd按回车后进入想要下载的目录执行命令curl -O https://arthas.aliyun.com/arthas-boot.jar Linux 进入想要下载的目录执行命令wget https://arthas.aliyun.com/arthas-boot.jar 启动arthas命令:java -jar arthas-boot.jar 2. Arthas使用命令 第一招:Watch命令 watche命令有很多参数,用于控制观察的时机。例如-b(before)函数调用前,-e(exception)异常函数后,-s函数返回后, -f(fin...

Read more

IDEA集成Jrebel实现热部署

下载安装 在idea中点击file->settings,再点击plugins, 在搜索框中输入JRebel, 选择第一个插件并点击“install”按钮,安装完成后点击确定并重启idea。 离线激活 此处需要下载一个软件, 点击此处下载 密码:423h 下载结束后打开软件准备激活JRebel; File->Setting->JRebel, 点击”Change license”按钮,选择“Team URL”; 输入以下任意一行链接: http://127.0.0.1:8888/88414687-3b91-4286-89ba-2dc813b107ce http://127.0.0.1:8888/ff47a3ac-c11...

Read more

IDEA集成Docker实现一键部署

所作初衷: 在和前端联调的过程中,然后每次电脑使用IDEA将服务启动后不能动,然后自己想改变代码后重启可能导致前端那边报错,所以为了给前端提供联调的服务的同时,我自己还可以正常工作,于是便想到了使用docker的方式,这样就可以达到了两全其美,何乐而不为。 1.初识Docker Docker的三个基本概念: Dockerfile:镜像构建的模板,描述镜像构建的步骤,通常是拉去一些文件和依赖; image:镜像,一个文件,用来创建容器。 container:容器,一个可运行的镜像实例,里面运行着一个完整的操作系统,可以做一切你当前操作系统可以做的事情。 从我的理解对上述三者做一个类比:dockerfile就是一个混凝土配比说明书(原材料,步骤等),根据该说明书搅...

Read more

少年,请理性消灭if-else

在平时的实践生产中,伴随着业务逻辑越来越复杂,if-else的滥用的越来越厉害。当然其并不影响代码的逻辑使用,至于其可读性那只能是仁者见仁智者见智。就我个人而言,我是很反感在代码中使用if的判空和逻辑判断。除非是业务紧急或者实在是想不出好的办法才会使用if-else, 毕竟无脑使用是绝对没问题的。 本文代码地链接 1. 编码规范 编码规范能够简化if-else的使用,是基于JDK所提供的基本能力实现的,同是能够很好避免满屏的if-else 1.1 三目运算符 public GenderEnum getGender(int genderValue){ if(genderValue == GenderEnum.FEMALE.getValue()){ ...

Read more

从0开始学Spring Security

前置入口 本文仓库:点击进入 学习文档:点击进入 官方Spring-Security项目地址:点击进入 1. 入门准备 当你加入Springboot 的web依赖包的时候,然后创建一个如下Controller,启动服务后便可通过localhost:8080/ready/security/test访问获得Hello World的结果 @RestController public class ReadySecurityController { @GetMapping("/ready/security/test") public String testReadySecurity(){ return "Hello World"; } } ...

Read more

Spring/Spring-Boot源码阅读环境搭建

1. 初衷 最近突然有正式看源码的想法了,之前都是听别人讲,有时候也在项目里面看看,可是有时候发现被依赖的包的代码搜索不到,只能搜索类名,于是便有了下载源码的想法。下载源码并不是说要一个方法一个方法去看,我计划是从某个注解或者某种机制原理下手,比如@RequestMapping是怎么工作的。 2. 准备 由于spring和spring-boot高版本jdk 1.8是支持不了的,需要更高版本的jdk,可以下载对应版本的JDK 同时,高版本是需要Gradle来构建工程,可以自己下载也可以不下载。 你可能会遇到如下错误A build scan was not published as you have not authenticated with server 'ge.spring...

Read more

理解Optional的正确打开方式

一. Optional的方法总览 Optional是JDK8提供的一个很简单的容器类,其目的就是把对象包装在容器里面,然后提供对该对象的一些基本操作。整个类加上注释也才300多行。 package java.util; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; public final class Optional<T> { private static final Optional<?> EMPTY...

Read more

代理对象中的Spring的Bean为Null引发的惨案

1. 背景介绍 这次事件是发生在我司的开发环境中,然后也有其他小伙伴去总结了,我看了一下,总感觉少了点什么,然后专门研究到底是怎么回事。 惨案的起因: 我们通过google的EventBus来订阅jvm级别的事件,就是在每个方法上加了一个@Subscribe,但是有哥们会把该方法写成私有的方式,大概内容如下: @Component public class UserService { @Autowired private OrderService orderService; public void testProxy(){ System.out.println("userService"); } @Subsc...

Read more

Lambda表达式中的变量只能用final

这个和方法传参数一个道理,方法传参时采用的是值传递的方式,类似做一个副本拷贝,lambda表达式同理也是通过这样的方式。但是众所周知method不关心你是不是final类型的,因为代码执行有先后顺序,完全不担心后面对变量的修改影响了之前的数据。 而lambda表达式就不一样了,开发者可以带着当前的变量副本声明着,但是执行却很晚。 如果执行改表达式前改变了实例变量,这时当前的变量和lambda表达式中变量副本就不一致了,这就是问题所在了。 Case1: 需要根据条件判断,然后根据判断后的结果在lambada表达式中用到。 这种情况不要使用if else来判断,要使用三目运算符。 如果使用if else后需要将获取的结果重新赋给一个变量,比较庸余; String name; if(...

Read more