2021

昨天上班莫名机器卡在进度条进不去了,然后重装了系统。无奈之下,一些基础软件要装。作为MacOS用户,Homebrew肯定要先装上的,然后遇到了下面的错误: % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443 还是比较常规的错误,常规解决方法: 查询真实IP:在https://www.ipaddress.com/ 查询raw.githubusercontent.com的真实IP。 修改hosts sudo vim /etc/hosts 添加如下内容:...

11月8日Spring官方已经强烈建议使用Spring Authorization Server替换已经过时的Spring Security OAuth2.0,距离Spring Security OAuth2.0结束生命周期还有小半年的时间,是时候做出改变了。 目前Spring Authorization Server已经进入生产就绪阶段,是时候学习它了。 今天跟着胖哥的节奏搞一搞Spring Authorization Server授权服务器框架。 目前Spring Security的体系在目前的Spring Security 5.x中将OAuth2.0 Client和OAuth2.0 Resource Server进行了模块化。 Spring Security是一定要引入的。 <dependency> <groupId>org.springframe...

@Autowired注解相信每个Spring开发者都不陌生了!在DD的Spring Boot基础教程和Spring Cloud基础教程中也都经常会出现。 但是当我们使用IDEA写代码的时候,经常会发现@Autowired注解下面是有小黄线的,我们把小鼠标悬停在上面,可以看到这个如下图所示的警告信息: 那么为什么IDEA会给出Field injection is not recommended这样的警告呢? 下面带着这样的问题,一起来全面的了解下Spring中的三种注入方式以及他们之间在各方面的优劣。 Spring中的三种依赖注入方式Field Injection@Autowired注解的一大使用场景就是Field Injection。 具体形式如下: @Controllerpublic class UserController { @Autowired pri...

前几天给大家介绍过一款IDEA编码自动注释工具,可以帮助小伙伴们的编程效率,想必很多人已经下载使用了,还没看过想了解下的小伙伴点这里:IDEA编码自动注释工具,让你的开发更有效率 然而此时此刻TJ君脑海中有一个大胆的想法,如果有一款工具,能反过来根据注释自动给出编程代码,是不是程序猿们都会笑的合不拢嘴,爽歪歪? 别以为TJ君说的是天方夜谭,就在前不久的 GitHub Universe 2021开发者大会上,GitHub官方正式宣布了一款名为 Copilot工具的更新。 说起Copilot这个名字,相信一直关注GitHub的小伙伴马上脑海中会浮现出今年早些时候看到的新闻。 就在今年夏天,GitHub 官方和OpenAI联合发布了一款AI自动编程工具,其名字正是 GitHub Copilot 。就像前文TJ君想的那样,通过Copilot,程序员只需输入注释,即可自动生成代码! 当时一时间...

项目场景:ClickHouse 操作基于 Mybatis-puls源码扩展开发。解决ClickHouse的修改和删除 SQL操作与Mysql不相同。 基于 Mybatis-puls:update 、updateById 、 delete 函数 1、SqlMethodDiv.java 文件枚举类,对sql脚本定义 package com.demo.infrastructure.injector.enums; /** * @author liuxiansong */public enum SqlMethodDiv { /** * 删除 */ DELETE_BY_ID("deleteByIdClickHouse", "根据ID 删除一条数据", "<script>\nALTER TABLE %s DELETE WHERE %s=# ...

上一篇说完了Java11的新特性,本篇接着说一下Java12.Java 12 对开发者有用的特性并不是特别多,不过实用性还是有的。 字符串增强Java 12 进一步对字符串操作进行增强,增加了两个方法。 字符串缩进String indent(int n) 会根据参数n对字符串进行缩进。具体的规则是 当n>0时,会在字符串的每一行开头插入n个空格,字符串整体右移。 当n<0时,会在字符串的每一行开头删除n个空格,如果实际的空格数小于n,删除该行所有空格,但是并不会换行。 来实验一下: String text = " Hello \n Java12";System.out.println("缩进前");System.out.println(text);System.out.println("右缩进俩字符");String indent2 = text.indent(2);...

10月21日,Spring官方发布了Spring Boot 2.5.6版本,此版本包括 43 个错误修复、文档改进和依赖项升级。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> <relativePath/> <!-- lookup parent from repository --></parent> 缺陷修复 由于 R2DBC 优先于 JDBC,jOOQ 的 DSLContext 不可用时的误导性故障分析#28379 启用延迟初始化,JMX 端点...

在上一篇实现了Spring Cloud资源服务器的定制化,但是又发现了一个新的问题,Spring Cloud微服务调用的过程中需要令牌中继。只有令牌中继才能在调用链中保证用户认证信息的传递。今天就来分享一下如何在Feign中实现令牌中继。 令牌中继令牌中继(Token Relay)是比较正式的说法,说白了就是让Token令牌在服务间传递下去以保证资源服务器能够正确地对调用方进行鉴权。 令牌难道不能在Feign自动中继吗?如果我们携带Token去访问A服务,A服务肯定能够鉴权,但是A服务又通过Feign调用B服务,这时候A的令牌是无法直接传递给B服务的。这里来简单说下原因,服务间的调用通过Feign接口来进行。在调用方通常我们编写类似下面的Feign接口: @FeignClient(name = "foo-service",fallback = FooClient.Fallback.c...

我在上一篇对资源服务器进行了简单的阐述,让大家对资源服务器的概念有了简单的认识,今天我将用实际例子来演示单体应用改造为Spring Cloud微服务时的资源服务器实现。 资源服务器改造以Spring Security实战干货的DEMO为例子,原本它是一个单体应用,认证和授权都在一个应用中使用。改造为独立的服务后,原本的认证就要剥离出去(这个后续再讲如何实现),服务将只保留基于用户凭证(JWT)的访问控制功能。接下来我们将一步步来实现该能力。 所需依赖在Spring Security的基础上,我们需要加入新的依赖来支持OAuth2 Resource Server和JWT。我们需要引入下面几个依赖库: <dependency> <groupId>org.springframework.boot</groupId> <artifactI...

资源服务器到底是什么以及怎么用很少有教程来专门聊这个东西,今天我们先来聊一聊这个概念,为后续的使用打一打基础。 传统安全方式的不足在Spring Security干货系列教程中,我们一步步来学习了Spring Security的使用。其中大部分涉及到的都是传统的保护应用的方式。我们通过用户名和密码(也可以是验证码)来获得服务器给的凭证(JWT是其中的一种),然后携带凭证去请求接口以获得对应的资源(Resource)。绝大部分的单体应用使用这种模式非常方便和简单。 但是一旦你所在的项目做大了,需要改造成微服务了,使用这种方式就显得有些笨重了,每个服务的资源都需要认证授权,所以需要一种范式来简化这一流程。 认证和授权是可以松耦合的用户的认证和资源的访问控制其实是可以分开的。就比如你买飞机票,现在你不仅可以在航空公司的售票部门买到票,也可以到第三方票务中心线下或者线上去买票,最终每个架次的...

日子一天天的在过,TJ君这两天一直有点惆怅,为啥呢?因为TJ君发现双11越来越近了,一想到等到了那天,TJ君的荷包会被某种不可抗拒之力打开大门,TJ君真是食不知味、寝食难安。 不过想到了双11就想到了淘宝天猫,似乎现在每天逛逛天猫已经成了很多人的习惯,那何不弄个天猫的复刻项目研究研究,说干就干! 今天TJ君给大家分享的就是一款基于Spring Boot的迷你天猫商城复刻项目,是一个比较基础、易学、入门款的Spring Boot体系的电商项目,适合想入手此类项目的小伙伴试试手。 作为迷你天猫,自然包含了天猫的大多数功能,从用户登录注册开始,到浏览各种商品,将商品加入购物车或者收藏,然后进行下单付费买货,到最后的确认收货,给五星好评等等等等一系列的基本操作,在这款迷你天猫里都有,而在后台管理方面,对于在售商品的管理,各种订单的处理,商家以及用户的管理和整体交易统计,也是应有尽有。并且项目...

10月的TIOBE编程语言排行榜发布了最新一期榜单,雄踞榜首多年的Java终于让出了榜首位置,Python成功登顶。一时间,关于Python的吹捧与对Java的看衰持续引发热议。“世界上只有两种编程语言,一种广为诟病,另一种没人用”。C++之父的这句名言用来形容Java同样合适,作为企业级的编程语言,Java不仅在中国互联网大厂中有着广泛的应用,在世界范围内更是有着庞大的生态和就业机会。 编程语言之争是技术圈经久不衰的话题,国内开发者培训业务多了起来以后,关于编程语言的话题炒作更是此起彼伏。但雄踞榜首多年,Java的下滑也并非空穴来风,而是有其深刻的历史背景所在。这个背景,或许就是云原生时代的来临。 以容器为代表的云原生技术或者说理念,有着弹性可扩展、松耦合、容错性好、易于管理、解放运维、可频繁变更的优势,这极大地降低了开发部署的门槛,让云计算大大地往前、向下走了一步。这本该是一次编...

TJ君最近有点惆怅,为啥呢?最近TJ君发现GitHub越来越难上了,有时候经常出现无法访问的情况: 想必很多人也会跟TJ君有同样的烦恼,毕竟GitHub是一个学习编程的好地方,这样断断续续的使用,极度影响吾等程序猿的用户体验,那,该怎么办!? 既然这是一个大家都会遇到的问题,TJ君觉得肯定有业界大神会帮大家想解决方案,果不其然,TJ君发动小宇宙找了一会,找到一个不错的GitHub开源加速工具,可以安全又顺畅的继续访问GitHub了! FastGithub一款GitHub加速利器,专门为解决github打不开、用户头像无法加载、releases无法上传下载、git-clone、git-pull、git-push失败等问题而诞生。 那究竟这款工具有多利器?TJ君举个例子,曾经TJ君的一个朋友对于找女友是这样筛选的: 备选人员 长腿 大凶 美女1 NO NO 美女2 N...

IntelliJ IDEA 2021.2.3 现已发布,用户可以从 IDE 内部、通过 Toolbox 应用程序或使用 Ubuntu 的 snaps 进行升级,也可以从官方网站下载。 主要更新内容 修复了接口方法上的调用层次结构以正确返回结果 如果 IDE 由于操作系统关闭而关闭,则修复了每次启动时重复索引的问题 修复了在 WSL 2 中重新打开项目时导致 IDE 冻结的问题 修复了停止按钮的行为。当您停止 WildFly 运行配置时,不再出现终止批处理作业提示 修复了添加新 Arquillian 容器的对话框 修复了导致 IDE 冻结的问题 修复了 xslt 文件关联 修复了 jsp 文件中未使用导入的优化导入操作 修复了有关配置 Spring Boot 注释处理器的文档的链接 修复了 Maven 项目重新导入时,依赖项视图没有更新的问题 在依赖项工具窗口中输入时出现超级延迟 在 ...

一、发布说明北京时间10月15日,Spring Framework推出 5.3.11 和 5.2.18 两个新版本。Spring Framework5.3.11包括32 个修复和改进。Spring Framework5.2.18包括10个选定的修复和改进。 随着越来越多的人使用Spring Boot 逐渐忽略了Spring Framework的关注,其实两者的关系密不可分,对Spring Boot 如果想要能研究得更深入,那么,就需要对Spring Framework有更足够的了解和应用。 二、介绍Spring FrameworkSpring 使创建 Java 企业应用程序变得容易。它提供了在企业环境中使用 Java 语言所需的一切,支持 Groovy 和 Kotlin 作为 JVM 上的替代语言,并且可以根据应用程序的需要灵活地创建多种架构。从 Spring Framework 5...