2021

这两天临近国庆,小编要写的东西还蛮多,在编写的闲暇想到一个有趣的问题,就是大家平时都使用什么编写工具? 这几年似乎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...

周末的时候,收到好几个云服务器临近过期的通知短信,准备续个费,居然都要大几千!因为这几个都是以前低价抢购的,掐指一算,如果都续费的话,要蚕食好多利润!作为一名自己养活自己的独立开发者,节省成本是必备技能,不然哪来可观的利润?于是,我就开始琢磨着做一些架构上的调整,看看能否在这次服务器资源减少的情况下,继续低成本的运行目前还在跑的业务。 因为业务产品是最重要的,所以这块基本不能动。那么能动的就是一些周边设施了,比如:做任务管理、文档管理或持续交付的工具。在调研了诸多SaaS产品和云服务之后,最后选择了阿里云的云效全家桶。为什么最终选择了云效全家桶呢?核心原因还是“全家桶”三个字,基本上我想要的研发管理功能都能否覆盖了。那么这个全家桶具体能做什么呢?下面给大家分享下我改造前和改造后的平台结构,给大家一个直观的认识。 老架构:散装集成老架构的建立基本上借鉴了以前在公司里搭建基础平台时候所用...

一年一度的SpringOne大会在9月1日至2日因为疫情原因在线上举行。Pivotal公司(Spring项目拥有者)每年都会举办一次这样的大会,与全球数千位开发人员、客户和合作伙伴相聚在一起,交流技术实践经验,探讨技术的发展趋势。同时每次大会也会披露Spring项目下一步的大动作。今年的大会的亮点无疑是Spring Framework 6.0。跟随胖哥来看看在未来一段时间内Spring的大动作。 Spring Framework 5.3.x先来看看Spring Framework 5.3.x的一些规划。 不用翻译的了吧,强调一下Spring Boot 2.6和2.7都会基于该版本。 Spring Framework 6.0备受瞩目的就是Spring Framework 6.0了。它将基于 Java 17 和 Jakarta EE 9 。它现在的情况是这样的: Spring 6.0...

这个swagger的starter已经存在四年了,记得当时做这个的时候主要是由于swagger官方并没有提供类似spring boot官方其他starter模块一样的封装。当我们要用swagger的时候,还是要写很多Java配置来启动,所以就做了这个,尽可能的把原来要写在Java中的配置都转移到配置文件中来。 一个小小的封装,也获得了2k+的Star,使用也超过了3.1k。 之前由于springfox 3.0推出了starter(之前我也写了篇博客介绍使用SpringFox 3生成Swagger文档),想着既然有了这个,那就没有花太多精力去继续更新了。 但是,一直有收到用过springfox starter的小伙伴反应还是希望可以用纯配置的方式来使用swagger,希望这个swagger可以继续升级到最新的版本。所以,下面会继续跟进这个starter,这里要特别感谢andi.lin...