自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

风尘博客

我有一杯酒,可以慰风尘。

  • 博客(53)
  • 收藏
  • 关注

原创 Maven系列(二):Maven 核心概念

Maven系列(二):Maven 核心概念一、仓库1.1 Maven 仓库仓库是一个位置(place),可以存储所有的工程 jar 文件、library jar 文 件、插件或任何其他的工程指定的文件。严格意义上说,Maven 只有两种类型的仓库:本地(local)远程(remote)1.2 本地仓库Maven 的本地仓库是机器上的一个文件夹。它在你第一次运行任何 Maven 命令的时候创建。Maven 的本地仓库保存你的工程的所有依赖(library jar、plugin jar

2020-10-14 14:56:45 87

原创 Maven系列(一):Maven 介绍与安装

虽然现在Gradle已经是主流,但是使用Maven维护的项目绝不占少数,刚好整理了下,整理成一个系列分享给大家。

2020-09-13 20:24:21 22

原创 Java 泛型详解:泛型类、泛型接口和泛型方法
原力计划

Java 泛型一、概述Java 泛型(generics)是 JDK 1.5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。1.1 什么是泛型?泛型,即参数化类型。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化

2020-07-05 06:06:18 241

原创 正则表达式全解析
原力计划

正则表达式定义了字符串的模式,可以用来搜索、编辑或处理文本。一、正则基础知识点1.1 元字符元字符是构造正则表达式的一种基本元素。几个常用的元字符:元字符说明.匹配除换行符以外的任意字符\w匹配字母或数字或下划线或汉字\s匹配任意的空白符\d匹配数字\b匹配单词的开始或结束^匹配字符串的开始$匹配字符串的结束1.2 重复限定符正则表达式中一些重复限定符,把重复部分用合适的限定符替代。语法说明.

2020-06-23 14:20:03 236

原创 Java 科学计算之 BigDecimal 全集
原力计划

一、BigDecimal的产生背景首先我们先来看如下代码示例:@Testpublic void countDemo() { logger.info("result:{}", 0.06 + 0.01); logger.info("result:{}", 1.0 - 0.42); logger.info("result:{}", 4.015 * 100); logger.info("result:{}", 303.1 / 1000);}结果如下result:0.06

2020-06-17 11:32:14 111

原创 Java 获取本地IP地址和主机名

拿到本机 IP不是一件困难的事,但是拿到正确的就比较难了。一、一般方式【菜鸟教程】中直接通过 java.net.InetAddress类获取,如下:import java.net.InetAddress; public class Main { public static void main(String[] args) throws Exception { InetAddress addr = InetAddress.getLocalHost(); Sy.

2020-06-13 14:56:12 157

原创 Mybatis 系列:Pagehelper + 拦截器实现分页
原力计划

一、分页插件 PagehelperPageHelper是Mybatis的一个分页插件,非常好用!1.1 Spring Boot 依赖<!-- pagehelper 分页插件--><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <v

2020-05-11 23:03:58 334

原创 Spring Boot 系列:整合 Apache Dubbo
原力计划

Apache Dubbo是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。注意,是 Apache Dubbo,不再是 Alibaba Dubbo(老版本的)。简单来说就是 Alibaba 将 Dubbo 移交给 Apache 开源社区进行维护。参见 dubbo-spring-boot-project...

2020-05-06 22:08:36 1092 2

原创 Spring系列:对象属性拷贝方式总结
原力计划

当`get/set`太繁琐时;当`BeanUtils`无法拷贝集合时;当。。。可能,你需要好好看看这篇文章,文末附完整示例代码。

2020-04-23 00:39:04 352

原创 Spring Boot 系列:发送邮件
原力计划

发送邮件应该是网站的必备拓展功能之一,注册验证、忘记密码或者是给用户发送营销信息。一、邮件协议在收发邮件的过程中,需要遵守相关的协议,其中主要有:发送电子邮件的协议:SMTP;接收电子邮件的协议:POP3和IMAP。1.1 什么是SMTP?SMTP全称为Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过...

2020-03-30 21:39:07 181

原创 从BWM生产学习工厂模式

工厂模式应用非常之广,在JDK底层源码以及各大主流框架中随处可见,一般以Factory结尾命名的类,比如Mybatis中的SqlSessionFactory,Spring中的BeanFactory等,都是工厂模式的典型代表。一、简单工厂模式1.1 概念简单工厂模式又称为静态工厂模式,属于设计模式中的创建型模式。简单工厂模式通过对外提供一个静态方法来统一为类创建实例,目的是实现类与类之间解耦:...

2019-12-03 00:06:39 147

原创 跟我学设计模式之单例模式

从今天开始,我将正式开始设计模式系列文章的写作分享。第一篇,当然从单例模式说起。单例模式可以说只要是一个合格的开发都会写,但是如果要深究,小小的单例模式可以牵扯到很多东西,比如:多线程是否安全?是否懒加载?性能等等。还有你知道几种单例模式的写法呢?如何防止反射破坏单例模式?

2019-11-21 20:10:19 140

原创 Spring系列:计时器 StopWatch

业务系统中经常需要两个对象进行属性的拷贝,大多时候时候使用的是Apache或Spring``BeanUtils,今天,我们来看一下一个更高效的属性拷贝方式:BeanCopier。

2019-11-06 19:38:51 190

原创 Spring Boot 系列:过滤器+拦截器+监听器

原 Swagger 文章合并到 Spring Boot 系列:配置 Swagger2一、过滤器 - Filter过滤器是处于客户端和服务器资源文件之间的一道过滤网,帮助我们过滤掉一些不符合要求的请求。1.1 过滤器介绍过滤器依赖于Servlet容器过滤器可以拦截到方法的请求和响应(ServletRequest request, ServletResponse response),并对请求/响应做出过滤操作。1.2 过滤器用途用来做一些过滤操作,获取我们想要获取的数据:在过滤器中修改.

2019-10-11 20:27:44 797

原创 JDK 1.8 之 Map.merge()

背景Map 中ConcurrentHashMap是线程安全的,但不是所有操作都是,例如get()之后再put()就不是了,这时使用merge()确保没有更新会丢失。因为Map.merge()意味着我们可以原子地执行插入或更新操作,它是线程安全的。一、源码解析default V merge(K key, V value, BiFunction<? super V, ? super V,...

2019-10-09 21:33:43 297

原创 Spring Boot 系列:整合JWT

Spring Boot认证:整合Jwt背景Jwt全称是:json web token。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。优点简洁: 可以通过URL、POST参数或者在HTTP header发送,因为数据量小,传输速度也很快;自包含:负载中可以包含用户所需要的信息,避免了多次查询数据库;因为To...

2019-10-05 00:13:20 138

原创 以商品超卖为例讲解Redis分布式锁

本案例主要讲解Redis实现分布式锁的两种实现方式:Jedis实现、Redisson实现。网上关于这方面讲解太多了,Van自认为文笔没他们好,还是用示例代码说明。一、jedis 实现该方案只考虑Redis单机部署的场景1.1 加锁1.1.1 原理jedis.set(String key, String value, String nxxx, String expx, int ti...

2019-09-21 00:49:41 179

原创 Spring Boot 系列:图片验证码及校验

文章目录一、思路二、示例代码2.1 项目依赖和配置2.2 生成图片验证码工具类2.3 测试接口三、测试及总结3.1 获取图片验证码3.2 校验图片验证码3.3 示例代码3.4 技术交流一、思路后端生成数字和字母混搭的指定位数的验证码,存储在Redis中;将生成的验证码画成图片并转换成base64字符,和Redis 验证码的key 一块返给前端;前端登录时候,把验证码传给后端,后端 取出 ...

2019-09-15 23:08:56 1476 4

原创 Spring Boot 系列:参数校验之 Validator

背景在开发中经常需要写一些字段校验的代码,比如非空,长度限制,邮箱格式验证等等,导致充满了if-else 的代码,不仅相当冗长,而且很让人抓狂。hibernate validator(官方文档)提供了一套比较完善、便捷的验证实现方式。它定义了很多常用的校验注解,我们可以直接将这些注解加在我们JavaBean的属性上面,就可以在需要校验的时候进行校验了。在Spring Boot 火热的现在,...

2019-09-11 23:58:24 169

原创 Spring Boot 系列:RestFul API 接口实现统一格式返回

文章目录背景一、统一格式设计1.1 返回格式1.2 状态码1.3 错误信息1.4 返回对象1.5 成功标示二、实现方案2.1 错误码枚举2.2 统一结果集封装三、测试及总结3.1 简单的测试3.2 其他3.3 技术交流背景在分布式、微服务盛行的今天,绝大部分项目都采用的微服务框架,前后端分离方式。前端和后端进行交互,前端按照约定请求URL路径,并传入相关参数,后端服务器接收请求,进行业务处理,...

2019-09-10 22:19:32 4020

原创 Spring Boot 系列:集成 zxing 生成二维码

背景在网站开发中,经常会遇到要生成二维码的情况,比如要使用微信支付、网页登录等.在网站开发中,经常会遇到要生成二维码的情况,比如要使用微信支付、网页登录等.二维码应用场景信息获取(名片、地图、WIFI密码、资料)网站跳转(跳转到微博、手机网站、网站)广告推送(用户扫码,直接浏览商家推送的视频、音频广告)手机电商(用户扫码、手机直接购物下单)防伪溯源(用户扫码、即可查看生产地;...

2019-09-05 22:16:57 1065

原创 开发中,不同分支的代码合并

要将A分支的一个commit合并到B分支:1.首先切换到A分支git checkout Agit log2.找出要合并的commit ID ,如:0128660c08e325d410cb845616af355c0c19c6fe3.然后切换到B分支上git checkout Bgit cherry-pick 0128660c08e325d410cb845616af355c0c1...

2019-09-01 19:28:37 1000

原创 Spring Boot:高并发下浏览量入库设计

文章目录一、背景1.1 这么做,有几个问题:1.2 解决方案二、 手把手实现2.1 项目配置2.2 浏览量的切面设计2.3 同步任务`ArticleViewTask.java`2.4 测试接口`PageController.java`三、 测试四、 源码及说明4.1 源码地址4.2 更多文章4.3 技术交流一、背景文章浏览量统计,low的做法是:用户每次浏览,前端会发送一个GET请求获取一篇...

2019-08-27 00:29:12 1971 6

原创 Git 实用技巧:git stash

文章目录1. stash当前修改2. 查看现有`stash`3. 重新应用缓存的`stash`4. 移除`stash`我们经常会遇到这样的情况:正在dev分支开发新功能,做到一半时有人过来反馈一个bug,让马上解决,但是新功能做到了一半你又不想提交,这时就可以使用git stash命令先把当前进度保存起来。然后切换到另一个分支去修改bug,修改完提交后,再切回dev分支,使用git sta...

2019-08-20 18:52:41 47

原创 Spring系列:从应用获取Bean的常用姿势

发送邮件应该是网站的必备拓展功能之一,注册验证、忘记密码或者是给用户发送营销信息。正常我们会用`JavaMail`相关`api`来写发送邮件的相关代码,但现在`SpringBoot`提供了一套更简易使用的封装。

2019-08-15 17:09:58 62

原创 SpringBoot:分库分表ShardingSphere实战

我们的项目中,随着数据量的不断扩大,单表数据达到千万级别,查询性能急剧降低,这时候需要我们做分库分表,降低单表的数据量和单个数据库的请求压力。我们公司之前采用的是当当维护的`Sharding-jdbc`,后来官方又恢复维护了,也就是`ShardingSphere `。

2019-08-07 23:03:06 471

原创 Spring Boot 系列:全局异常处理

SpringBoot: 全局异常的处理@ExceptionHandler 可以处理异常, 但是仅限于当前Controller中处理异常;@ControllerAdvice可以配置basePackage下的所有Controller。结合两者使用,就可以处理全局的异常了。文章目录SpringBoot: 全局异常的处理一、开发准备1.1 异常1.2 项目依赖二、 项目Demo2.1 结果封装2....

2019-08-01 23:01:08 96 3

原创 Mybatis系列:数据源灵活切换

在业务场景中,随着数据量迅速增长,一个库一个表已经满足不了我们的需求的时候,我们就会考虑分库分表的操作,本文主要介绍SpringBoot + Mybatis 如何实现多数据源,动态数据源切换,可用于读写分离或多库存储。主要的配置说明见代码注释文章目录一、 数据库准备二、 项目配置2.1 项目依赖2.2 项目配置文件`application.yml`三、 多数据源配置3.1 动态数据源注册`...

2019-07-31 16:50:04 132

原创 Mybatis系列:整合 Druid 监控

Druid是什么?Druid是一个JDBC组件库,包括数据库连接池、SQL Parser等组件;DruidDataSource是最好的数据库连接池;Druid能够提供强大的监控(可视化)和扩展功能。文章目录一、添加依赖和项目配置二、业务相关代码2.1 建表sql2.2 表对应的实体类2.3 DAO层以及mapper.xml2.4 业务层接口2.5 控制层测试接口2.6 启动类添加`...

2019-07-26 22:35:25 45

原创 Spring Boot 系列:整合阿里云短信验证码

相比于腾讯云的短信服务,阿里云的短信好像更高大上一些,例如:阿里云控制台可以直接生成Java/Node.js/Go/Php等语言的 ApiDemo,并可以在线测试。当然,腾讯云也有它的优势:每个月每个月100条的免费额度!文章目录一、阿里云短信控制台二、项目示例2.1 项目依赖2.2 项目配置文件`application.yml`2.3 封装一个参数实体`SmsParams`2.4 封装发送...

2019-07-16 09:39:16 286

原创 Spring Boot 系列:整合腾讯云短信验证码

短信业务在我们日常使用的软件或者网站,应该算是无处不在的功能模块,比如注册、验证码功能。国内有很多互联网公司都提供短信业务,比如阿里、腾讯、七牛。本篇文章提及的是腾讯提供的短信服务。文章目录一、腾讯短信服务二、SpringBoot 发送短信验证码2.1 项目配置文件2.1.1 所需要的依赖`pom.xml`2.1.2 项目配置文件`application.yml`2.2 封装一个验证码实体类...

2019-07-10 22:01:51 1279

原创 Spring系列:事务管理

文章目录一、`TransactionTemplate.java` 源码分析1.1 `execute`方法的参数 `TransactionCallback`1.2 小节二、引用案例2.1 在SpringBoot配置中注入`TransactionTemplate`2.2 业务代码中的实际使用2.2.1 有返回值2.2.2 无返回值我们都知道Spring支持编程式事务和声明式事务,而Transact...

2019-07-04 22:35:06 93

原创 Idea 设置

文章目录一、全局配置二、显示设置三、功能配置四、自定义注释模板4.1、修改 Java 类注释模板一、全局配置全局JDK(默认配置):File ->Other Settins -> Structure for New Project Structure -> Project -> Project JDK全局Maven/Gradle(默认配置):Build,Execti...

2019-07-03 22:38:19 350

原创 Spring Boot 系列:整合七牛云上传文件

文章目录一、项目配置1.1 项目所依赖的jar包1.2 `yml`项目配置文件中七牛云账户相关的密钥1.3 新建七牛云配置文件类`QiNiuCloudConfiguration `1.4 Swagger2 配置二、 上传图片业务2.1 Controller 层 `QiNiuCloudController`2.2 上传接口 `UploadService`2.3 上传图片的实现 `UploadServ...

2019-06-25 22:13:38 242

原创 Mysql高性能优化规范(一):设计规范

文章目录一、数据库命令规范二、数据库基本设计规范2.1、所有表必须使用Innodb存储引擎2.2、数据库和表的字符集统一使用UTF82.3、所有表和字段都需要添加注释2.4、尽量控制单表数据量的大小,建议控制在500万以内2.5、谨慎使用MySQL分区表2.6、尽量做到冷热数据分离,减小表的宽度2.7、禁止在表中建立预留字段2.8、禁止在数据库中存储图片,文件等大的二进制数据2.9、禁止在线上做数...

2019-06-22 15:10:45 64

原创 Redis 作为分布式锁(一):SpringBoot集成Redisson分布式锁

文章目录一、项目Demo1.1 项目依赖1.2 项目配置-redis1.3 Redisson的配置类RedissonConfig1.4 定义一个Loker接口,用于分布式锁的一些操作1.5 基于Redisson的实现类RedissonLocker1.6 定义一个分布式锁工具类LockUtil1.7 单元测试1.8 源码二、Redisson 之 Redlock2.1 基于Redis命令的分布式锁2....

2019-06-18 20:34:16 753

转载 Java常用分布式锁技术方案

文章目录一、自身的业务场景:二、分布式锁的解决方式:2.1 几种解决方式总论2.2 基于数据库资源表做乐观锁,用于分布式锁2.2.1 乐观锁的含义:2.2.2 具体的案例:2.2.3 基于数据库表做乐观锁的一些缺点:2.3 使用memcached的add()方法,用于分布式锁2.4 使用memcached的cas()方法,用于分布式锁2.5 使用redis的setnx()、expire()方法,用...

2019-06-17 19:04:50 112

原创 Java 坐标系转换工具

文章目录一、添加所需依赖二、自定义日志注解 `WebLog`三、配置 AOP 切面四、测试及使用4.1 建立启动类4.2 新建controller测试4.3 启动项目,测试五、扩展5.1 指定环境下该注解可用5.2 多切面指定优先级5.3 源码地址之前分享过SpringBoot 配置 AOP 记录日志 可以通过切面的方式打印控制器层的日志,但是可能存在以下问题:不够灵活,由于是以所有 C...

2019-06-11 18:44:04 765

原创 Shiro 放行Swagger

最近在研究Shiro,遇到一个棘手的问题:SpringBoot 集成Shiro后, Swagger接口得登陆才能访问,找了一下问题,记在这里,算是做个小笔记吧。在 Shiro 的配置文件中找到拦截器,将Swagger接口的路径放行即可 //放行Swagger2页面,需要放行这些 filterChainDefinitionMap.put("/swagger-ui.html"...

2019-05-17 18:18:35 2563 1

原创 Mybatis系列:逆向工程自动生成代码

文章目录一、背景二、上手使用2.1 引入`MyBatis Generator`的Maven插件2.2 `MyBatis Generator`一般配置2.2.1 首先,在数据库执行以下sql生成即将操作的表`tbl_user`2.2.2 `generatorConfig.xml` 配置如下:2.3 运行Maven插件生成代码3.2 Demo源码本文主要介绍使用Maven插件的方式自动生成Myba...

2019-05-10 18:40:05 91

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除