2021

Java 17 是Java 最重要的一个LTS版本之一,但是直接从Java 8 过渡到Java 17跨度太大了,势必有些困难。所以胖哥抽时间梳理了一下从Java 9到Java 17的一些常用API的变动。今天先来看看Java 9 都有什么东西。 Java 9Java 9 最大的变化就是引入了一个JShell和模块化,日常并没有用太多,所以今天不花时间在这些功能上面。 新的创建集合的方法用过谷歌Guava类库的知道,Guava提供了创建集合的静态工厂方法,而且能够推断泛型,举个例子: List<Person> list = Lists.newArrayList();Map<KeyType, Person> map = Maps.newLinkedHashMap(); 而原生态需要各种new来定义。Java 9改善了这一现状,现在你可以: // [1, 2, 3,...

这两天小编一个在银行工作的小伙伴来吐槽,说是天天在做各种报表,现在看到表格都反胃,小编无奈之下只好安慰安慰,问他这报表到底多难看?他说这个样子: 吐槽之余小伙伴问小编,现在市面上流行的报表都是什么样的?毕竟在银行,很多新技术新功能都受到限制,往往用的都是比较陈旧的但安全成熟的技术。 看着小伙伴那充满期望的眼神,小编怎么能拒绝呢?拿出一个之前见过的特别帅气的报表项目,让他涨涨眼力! ReportPlus 一个封装了各种精美日历组件、表格组件、排行榜组件、条形进度条组件、文本块组件、图表组件的开源项目,作者的目的就是让大家能将报表尽量做的精美更精美,同时尽可能地减少用户的上手难度,用户只要按照虚拟数据的格式,上传特定数据就可以生成一个又一个美丽实用的报表~ 那到底要多好看呢? 比如像这样子的财务统计报表效果: 比如像这样子的会员运营情况报表: 看上去是不是比枯燥的表格式的数字形式...

谁是 Spring 一哥?今年排名前三的项目依旧保持不变。大约 75% 的受访者都在使用 Spring Data、Spring Security 和 Spring WebMVC。然而,这些并不是唯一被大量使用的 Spring 模块。大约三分之一的受访者在使用 Spring Kafka、Spring Batch、Spring Cloud、Spring WebFlux 和 Spring Integration,而 25% 的受访者使用 Spring Session、Spring LDAP、Spring AMQP 和 Spring Cloud Gateway。(稍后会详细介绍 Spring Cloud Gateway) Data, data 无处不在应用程序的好坏取决于它们的数据。复杂的应用程序可能会使用多个数据源甚至跨多个云。Spring Data 使使用数据访问技术、关系和非关系数据...

这两天临近国庆,小编要写的东西还蛮多,在编写的闲暇想到一个有趣的问题,就是大家平时都使用什么编写工具? 这几年似乎Markdown编辑器逐渐成为行业里的主流,如果有还不了解的小伙伴,小编稍稍介绍一下。 Markdown编辑器,主要是可以使用一套格式标记语言来对文档内容进行排版和格式显示,而这种编辑器在程序猿圈子里逐渐受到欢迎的原因是: 1、读写改方便,Markdown的格式标记语法简单,常用的标记只有十多个,相对来说非常轻量,上手很快,只需要学习几个简单的符号,然后就可以专注于码字了,而不需要手动设置各种样式。2、一器多用,Markdown即可以用来编写说明文档并且在主流平台都通用,又可以写技术文章,写出来的内容中可以清晰的区分说明部分和代码。3、输出方便,Markdown的文章可以轻松的转换为html、pdf等多种不同方式。 目前国内外有各种各样不同的Markdown编辑器,其中比...

Spring Cloud 2020.0.4 正式发布,这是错误修正版本。兼容 Spring Boot 2.4.x and 2.5.x。目前已经可以从中央仓库获取,坐标如下: <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2020.0.4</version> <type>pom</type>...

9 月 23 日官方发布了 Spring Boot 2.5.5 版本,此版本包括 41 个错误修复、文档改进和依赖项升级。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.5</version> <relativePath/> <!-- lookup parent from repository --></parent> 缺陷修复 修复 端点默认情况下不会清理 SPRING_APPLICATION_JSON #28081 Flyway 和 Spring Integratio...

Spring Boot的上传文件,相信你一定会了。如果还不会的小伙伴,可以先看看之前的分享: Spring Boot 2.x基础教程:实现文件上传 Spring Boot 2.x基础教程:多文件的上传 文件上传实现之后,通常最常见的另外两个操作就是下载和预览,下载只需要知道地址,就简单搞定了,那么预览怎么做?你知道吗? 今天小编就来推荐一个用Spring Boot搭建的文档在线预览解决方案:kkFileView! 这是一款成熟且开源的文件文档在线预览项目解决方案,如果你用过类似如永中office、office365、idocv这些付钱产品,你一定会喜欢kkFileView,因为在功能满足的前提下,谁还喜欢付费呢? 12大特性 支持word excel ppt,pdf等办公文档 支持txt,java,php,py,md,js,css等所有纯文本 支持zip,rar,jar,tar,...

通过之前三篇关于Spring Boot异步任务实现的博文,我们分别学会了用@Async创建异步任务、为异步任务配置线程池、使用多个线程池隔离不同的异步任务。今天这篇,我们继续对上面的知识进行完善和优化! 如果你已经看过上面几篇内容并已经掌握之后,一起来思考下面这个问题: 假设,线程池配置为核心线程数2、最大线程数2、缓冲队列长度2。此时,有5个异步任务同时开始,会发生什么? 场景重现我们先来把上面的假设用代码实现一下: 第一步:创建Spring Boot应用,根据上面的假设写好线程池配置。 @EnableAsync@SpringBootApplicationpublic class Chapter78Application { public static void main(String[] args) { SpringApplicatio...

各位程序猿小伙伴们,中秋快乐~在节日欢快的气氛中大家是不是还在奋笔疾书、沉浸在学习的海洋中呢? 小编这两天休息在家一直在想一个问题,那就是我们在开发SpringBoot项目的时候,该怎么做好权限认证呢?之前有和小伙伴讨论的时候说起过一些常见的相关框架,例如Shiro或者Spring Security等,但这些框架似乎在运用上存在着各种美中不足的地方,尤其是用起来太过复杂,劝退了不少新手程序猿,让人总觉意犹未尽。 不过呢,就在这个假期里,小编发现了一个新的权限认证框架,总体感觉使用起来简单明了,整体的API设计呢也属上乘,所以赶紧来和大家分享下~ 他就是,权限认证框架领域一块璀璨的明珠~~~下面让我们有请: Sa-Token Sa-Token,可能是史上功能最全的Java权限认证框架之一!或者可以去掉之一两字。 截止目前为止,Sa-Token已集成——登录认证、权限认证、分布式Sess...

自从Redis面世以来,作为一个开源的高性能的key-value型数据库,很大程度的对关系型数据库起到很好的补充作用。 Redis实现简单,功能齐全,已经成为了业界最常用的组件之一。为了更方便的使用,衍生出一系列的可视化工具,像是redis desktop manager、medis、fastoredis、redis clent等等等等,各花各草入各眼,每个人都有自己喜欢的风格,但是往往这些工具可能在界面UI方面还是有待提高,有些甚至还要收费。 今天小编就想和大家分享一款帅气、好看同时功能强大的开源Redis客户端工具,或许就能成为你喜欢的那朵花那棵草。 AnotherRedisDesktopManager一款,更快、更好、更稳定的redis桌面管理客户端工具,与Linux、Windows和Mac三大平台完美兼容。 小编先给大家演示下其页面风格,喜欢暗黑风格的小伙伴一定喜欢不已,整体...

随着微信、支付宝等航母级应用在众人身边的普及,越来越多的应用、网站在登陆的时候除了提供注册用户外,还直接提供第三方登录的方式,也就是直接关联微信、支付宝这类应用,用已有的账号和密码来快速完成当前应用或网站的登录注册。 第三方登录的好处对于应用来说,在于降低用户注册的成本,毕竟有时候只要点一下就可以登陆和需要填写各种信息注册的两种选择下,往往就是使用和放弃的区别。 对于用户来说,通过第三方登录,直接获取用户头像昵称等基本个人信息,无需用户自行设置;共享账号已有的用户关系,用户进入产品中就能找到熟悉的人,发现同样使用该应用也用同样第三方方式登录的好友,会有惊喜感;另外用户在使用多个应用时,只需使用第三方登录即可,无需记得每个平台的账户和密码。便捷程度上的确是未来发展的大趋势。 今天呢,小编给大家分享的就是一款超级全面的第三方登录开源工具。 JustAuth JustAuth曾经被评为Gi...

Java 最重要的一次更新:JAVA 17 正式发布,这是一个LTS(长期支持)版本,带来了不少有用的新特性。Java 17 属于长期支持版本 (LTS),将会获得 8 年的技术支持,直至 2029 年 9 月。 Java 17 总共包含 14 个 JEP,具体如下: Restore Always-Strict Floating-Point Semantics 恢复始终执行严格模式 (Always-Strict) 的浮点定义 Enhanced Pseudo-Random Number Generators 添加增强的伪随机数生成器 New macOS Rendering Pipeline 为 macOS 引入新渲染管道 macOS/AArch64 Port 支持将 JDK 移植到 macOS/AArch64 架构 Deprecate the Applet API for Remov...

通过上一篇:配置@Async异步任务的线程池的介绍,你应该已经了解到异步任务的执行背后有一个线程池来管理执行任务。为了控制异步任务的并发不影响到应用的正常运作,我们必须要对线程池做好相应的配置,防止资源的过渡使用。除了默认线程池的配置之外,还有一类场景,也是很常见的,那就是多任务情况下的线程池隔离。 什么是线程池的隔离,为什么要隔离可能有的小伙伴还不太了解什么是线程池的隔离,为什么要隔离?。所以,我们先来看看下面的场景案例: @RestControllerpublic class HelloController { @Autowired private AsyncTasks asyncTasks; @GetMapping("/api-1") public String taskOne() { Completab...

上一篇我们介绍了如何使用@Async注解来创建异步任务,我可以用这种方法来实现一些并发操作,以加速任务的执行效率。但是,如果只是如前文那样直接简单的创建来使用,可能还是会碰到一些问题。存在有什么问题呢?先来思考下,下面的这个接口,通过异步任务加速执行的实现,是否存在问题或风险呢? @RestControllerpublic class HelloController { @Autowired private AsyncTasks asyncTasks; @GetMapping("/hello") public String hello() { // 将可以并行的处理逻辑,拆分成三个异步任务同时执行 CompletableFuture<String> task1 = asyncTasks...

什么是“异步调用”?“异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。 同步调用下面通过一个简单示例来直观的理解什么是同步调用: 定义Task类,创建三个处理函数分别模拟三个执行任务的操作,操作消耗时间随机取(10秒内) @Slf4j@Componentpublic class AsyncTasks { public static Random random = new Random(); public void doTaskOne() throws Exception { log.info("开始做任务一"); long start = System.currentTimeMil...