Java8新特性一览表
总览
forEach() method in Iterable interface(Iterable接口中的forEach()方法)
default and static methods in Interfaces(接口中的默认和静态方法)
Functional Interfaces and Lambda Expressions(function接口和Lambda表达式)
Java Stream API for Bulk Data Operations on Collections(用于集合上的批量数据操作的Java Stream API)
Java Time API
Collection API improvements
Concurrency API improvements
Java IO improvements
1.forEach() method in Iterable interface(Iterable接口中的forEach()方法)每当我们需要遍历Collection时,我们需要创建一个Iterator,其目的是迭代,然后我们在循环中为Collection中的每 ...
PG数据库常用操作
记录一下,在开发过程中接触到的一些PG数据库常用操作,以备不时之需。
全量迁移
备份数据
1$ pg_dump -h 172.19.235.145 -U <username> -d <database> > 20180704_dbpe.sql
正式迁移
首先要修改备份文件*.sql的owner,防止权限出现错误。
1$ psql -h <ip> -U <username> -d <database> -f 20180704_dbpe.sql
【注意点】该迁移操作会覆盖原来的数据库,所以最好创建一个新库。
列出所有表名和数据库名1select tablename from pg_tables where schemaname ='public';
PostgreSQL 中 有时候想删除数据库(drop database swiftliveqaapi;),发现提示“ERROR: database “xxxxxx” is being accessed by other users DETAIL ...
Spring-Security无法正常捕捉到UsernameNotFoundException异常
前言在Web应用开发中,安全一直是非常重要的一个方面。在庞大的spring生态圈中,权限校验框架也是非常完善的。其中,spring security是非常好用的。今天记录一下在开发中遇到的一个spring-security相关的问题。
问题描述使用spring security进行授权登录的时候,发现登录接口无法正常捕捉UsernameNotFoundException异常,捕捉到的一直是BadCredentialsException异常。我们的预期是:
UsernameNotFoundException -> 用户名错误
BadCredentialsException -> 密码错误
贴几个比较重要的代码:
1. 登录业务逻辑12345678910111213141516171819202122232425@Servicepublic class AuthServiceImpl implements AuthService { @Autowired private UserDetailsService userDetailsService; ...
常用软件集合
常用软件工具收藏集,收藏了在工作生活中遇到的好用实用的软件。
开发工具
BeyondCompare破解版
Navicat Premium 12破解版
markdown pad2破解版 密码:23w2
RedisDesktopManager 免费版 密码:ciq1
QTransate翻译工具
正则表达式测试工具
draw.io拓扑图工具
DevCenter cassandra管理工具
PostMan便携版
Git
SourceTree(Git Gui工具)
XShell5破解版
实用工具
RSS订阅工具(只限windows)
科学上网ShadowSocks
win10激活工具
Office安装工具
OCR文字识别工具
GIF录制工具
冰点文库下载器破解版
推荐工具
现代化Markdown编辑工具
BigDecimal精确计算工具类
前言在实际开发中,遇到例如货币,统计等商业计算的时候,一般需要采用java.math.BigDecimal类来进行精确计算。而这类操作通常都是可预知的,也就是通用的。所以,写了个工具类来方便以后的工作。这是仓库地址:仓库地址
BigDecimal的构建一般而言,我们主要从int,long,double,float来进行计算,在构建的时候推荐使用
1BigDecimal BigDecimal(String s);
因为通过double构造会损失精度,而String构造是固定的值。创建以下方法作为通用BigDecimal转化器:
123456789101112131415161718/** * Number -> BigDecimal */public static <T extends Number> BigDecimal transform(T v) { if (v instanceof Double) { return new BigDecimal(Double.toString((Double) v)); } ...