工具
Other Versions - IntelliJ IDEA
JetBrains下载历史版本(IDEA、PyCharm、WebStorm、PhpStorm等)_好奇的菜鸟的博客-CSDN博客_webstorm历史版本
POM
pom(Project Object Model),项目对象模型。通过xml可扩展标记语言(EXtensible Markup Language)格式保存的pom.xml文件。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。
史上最全的 pom.xml 文件详解_雨雾清影的博客-CSDN博客_pom.xml
Maven中pom文件内scope标签中import值的详解 - 之之小侠 - 博客园
Spring Boot打jar包,排除lombok等scope=provided的依赖(转)_51CTO博客_spring boot打包没有引入依赖包
一个 pom.xml 示例:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <!– The Basics –> <groupId>…</groupId> <artifactId>…</artifactId> <version>…</version> <packaging>…</packaging> <dependencies>…</dependencies> <parent>…</parent> <dependencyManagement>…</dependencyManagement> <modules>…</modules> <properties>…</properties> <!– Build Settings –> <build>…</build> <reporting>…</reporting> <!– More Project Information –> <name>…</name> <description>…</description> <url>…</url> <inceptionYear>…</inceptionYear> <licenses>…</licenses> <organization>…</organization> <developers>…</developers> <contributors>…</contributors> <!– Environment Settings –> <issueManagement>…</issueManagement> <ciManagement>…</ciManagement> <mailingLists>…</mailingLists> <scm>…</scm> <prerequisites>…</prerequisites> <repositories>…</repositories> <pluginRepositories>…</pluginRepositories> <distributionManagement>…</distributionManagement> <profiles>…</profiles> </project>
超级详细的 Maven 教程(基础+高级)_Ayue、的博客-CSDN博客_maven
IDEA的Maven换源_idea切换源_夜未至的博客-CSDN博客
maven生命周期lifecycle和plugins介绍_跃马檀溪的博客-CSDN博客_maven plugins和lifecycle
maven生命周期lifecycle和plugins介绍_ximeneschen的博客-CSDN博客_lifecycle和plugins区别
使用Maven打包生成的-SNAPSHOT.jar与-RELEASE.jar分别代表什么?SNAPSHOT是什么意思?RELEASE是什么意思?_中冬廿九的博客-CSDN博客_snapshot.jar
maven:shade 生成快照版本(SNAPSHOT)的fat-jar,同时生成对应的source.jar_10km的博客-CSDN博客_maven 生成快照版本
Maven中的<distributionManagement>_她丶如月中来的博客-CSDN博客_distributionmanagement
AlibabaCloud 和 SpringCloud的区别+多机房部署-数据库复制延迟-解决方案_小滴课堂的博客-CSDN博客
Gradle
Spring Boot彻底抛弃Maven,正式转向Gradle,速度贼快!_xhmj12的博客-CSDN博客
Groovy 快速入门_学姐敲代码的博客-CSDN博客_groovy入门
JAR
JAR包详解_清平乐的技术专栏的博客-CSDN博客_jar包
04 JAR 文件规范_LinQingYanga的博客-CSDN博客
spring-boot:repackage生成的MANIFEST.MF中的Main-Class和Start-Class - StarkBrothers - 博客园
从jar包中读取资源文件_六六的小帅的博客-CSDN博客_获取jar包中的资源文件
从jar包中读取文件的几种方式_wang0907的博客-CSDN博客_读取jar包内文件
注解
JAVA 注解的基本原理_Liuqz2009的博客-CSDN博客
Java基础 - @interface(注解)_MrDJun的博客-CSDN博客_@interface map
Spring全部注解_立木南门,的博客-CSDN博客_spring注解
Spring注解详解_gelingxian的博客-CSDN博客_spring注解
Spring的三种注入方式详解_官方推荐构造器注入_-会飞的企鹅的博客-CSDN博客_spring 构造器注入
Java使用final构造器注入方式更安全_蜜桃先生的博客-CSDN博客_private final注入
spring final 加构造函数注入丶Java教程网-IT开发者们的技术天堂
Spring使用有参构造器创建对象autowireConstructor方法_萌新驾到的博客-CSDN博客_autoware 有参构造函数
深度分析Spring中的构造器注入_51CTO博客_spring构造器注入
SpringBoot读取配置的6种方式_springboot读取配置文件_白豆五的博客-CSDN博客
JNA
将动态库打包在Jar包并调用的方法_元澈的博客-CSDN博客
JNI便捷开发框架JNA框架之入门(一)_cy谭的博客-CSDN博客_jna
JNI便捷开发框架JNA框架之指针参数Pointer(二)_cy谭的博客-CSDN博客_jna pointer
JNI便捷开发框架JNA框架之引用传递ByReference(三)_cy谭的博客-CSDN博客_pointerbyreference类
Spring
idea指定启动参数${MYSQL-USER:root}_p_moriarty的博客-CSDN博客
http请求中的三种参数类型 - 小草小草随风飘摇 - 博客园
ConfigurationProperties注解详解_思维的深度的博客-CSDN博客_configurationproperties注解
SpringBoot
Spring Boot(二):开始第一个Spring Boot项目 - 知乎
Spring Boot 开始(官网文档翻译)_七号公园的忧伤的博客-CSDN博客_springboot 开始
Spring | Spring Quickstart Guide
Spring Cloud
mysql安装教程【安装版】_超级小的大西瓜的博客-CSDN博客_mysql安装教程
https://github.com/alibaba/spring-cloud-alibaba/wiki
nacos
Nacos搭建_wengiling的博客-CSDN博客_nacos搭建
如何快速搭建nacos服务_刺眼_的博客-CSDN博客_nacos创建服务
nacos集群搭建详细教程_听者vae的博客-CSDN博客_nacos集群搭建
FAQ 【nacos常见问题】
Nacos 快速开始【官网单机部署】
集群部署说明 【官网集群部署】
1.Nacos安装和部署(单机和集群模式)_zyplanke的博客-CSDN博客_单机部署nacos集群 【补充创建用户名和数据库】
Nacos 注册中心集群搭建 - 路仁甲 - 博客园 【集群nacos 客户端注册多IP写法】
SpringCloud 之 consul_tengxvincent的博客-CSDN博客_spring.cloud.consul
Nacos Config
Spring Cloud系列之Spring Cloud Config_做时间的朋友。的博客-CSDN博客_spring cloud config
SpringCloud之Config配置中心_桐花思雨的博客-CSDN博客_spring cloud config
SpringCloud之Config配置中心_桐花思雨的博客-CSDN博客_spring cloud config
SpringCloud启动的时候会自动拉取服务端的配置
Nacos Config--服务配置_wmburst的博客-CSDN博客_nacos-config
Nacos Config 服务配置中心_陈家宝的博客-CSDN博客_nacos配置config
Springcloud Nacos Config 配置服务管理中心 - 哔哩哔哩
spring cloud 引入nacos config配置不生效_sushuiyuzhou的博客-CSDN博客_nacos修改配置后不生效
高版本springcloud导致nacos 配置不生效问题_凌涑的博客-CSDN博客_springcloud nacos配置不生效
spring.cloud.nacos.config.file-extension=yml
spring.cloud.nacos.config.file-extension不指定,则配置文件后缀默认为properties,否则为指定的后缀。
服务器上配置文件可以省略后缀,或者加上后缀
负载均衡
RestTemplate_不爱吃胡萝卜的阿丁的博客-CSDN博客_resttemplate
@SentinelRestTemplate使用_雪峰.贵的博客-CSDN博客
Spring Cloud Gateway
SpringCloud Gateway用法详解_无敌小田田的博客-CSDN博客_spring cloud gateway
Springcloud gateway (史上最全)_架构师-尼恩的博客-CSDN博客_spring cloud gateway
Nacos+Spring Cloud Gateway动态路由配置实现步骤_Java教程_服务器之家
sentinel
Hystrix和Sentinel对比,如何选择_Leo Han的博客-CSDN博客_hystrix和sentinel对比
Spring Cloud Alibaba Sentinel 初体验_索码理的博客-CSDN博客
Spring Cloud Alibaba Sentinel 整合 nacos 进行规则持久化_索码理的博客-CSDN博客_sentinel 整合nacos
MQ
RabbitMQ 和 RocketMQ 区别与选型_hgdzw的博客-CSDN博客_rabbitmq和rocketmq区别
【转载】RocketMQ和RabbitMQ的特性及区别_牧子与羊的博客-CSDN博客_rocketmq rabbitmq区别
SpringCloud集成RocketMQ_inthirties的博客-CSDN博客_springcloud集成rocketmq
springcloud集成rocketMQ_@进行中的博客-CSDN博客_springcloud集成rocketmq
Seata
spring-cloud-alibaba/readme-zh.md at 2021.x · alibaba/spring-cloud-alibaba · GitHub
Seata 官网
GitHub - seata/seata-go: Go Implementation For Seata Seata Go项目
Seata 是什么 官网帮助文档
Spring Cloud集成seata_qq_32415191的博客-CSDN博客_springcloud集成seata
SpringCloud集成Seata_朽木要自雕的博客-CSDN博客_springcloud 集成seata
SpringCloud 整合 Seata_【非典型Coder】的博客-CSDN博客_seata springcloud
Spring Security & Spring Cloud Security
Spring Security 和 SpringCloud Security 有什么区别?_普通网友的博客-CSDN博客
cookie和session的详解与区别 - 测试开发喵 - 博客园
JWT详解_baobao555#的博客-CSDN博客_jwt
SpringSecurity(授权认证+JWT)_似梦的苏烟的博客-CSDN博客_springsecurity+jwt
Spring Security :: Spring Security
微服务常见认证、鉴权方案_科氏加速度的博客-CSDN博客_微服务鉴权
实战
- Spring Cloud实战 | 第一篇:Windows搭建Nacos服务
- Spring Cloud实战 | 第二篇:Spring Cloud整合Nacos实现注册中心
- Spring Cloud实战 | 第三篇:Spring Cloud整合Nacos实现配置中心
- Spring Cloud实战 | 第四篇:Spring Cloud整合Gateway实现API网关
- Spring Cloud实战 | 第五篇:Spring Cloud整合OpenFeign实现微服务之间的调用
- Spring Cloud实战 | 第六篇:Spring Cloud Gateway+Spring Security OAuth2+JWT实现微服务统一认证授权
- Spring Cloud实战 | 最七篇:Spring Cloud Gateway+Spring Security OAuth2集成统一认证授权平台下实现注销使JWT失效方案
- Spring Cloud实战 | 最八篇:Spring Cloud +Spring Security OAuth2+ Vue前后端分离模式下无感知刷新实现JWT续期
- Spring Cloud实战 | 最九篇:Spring Security OAuth2认证服务器统一认证自定义异常处理
- Spring Cloud实战 | 第十篇 :Spring Cloud + Nacos整合Seata 1.4.1最新版本实现微服务架构中的分布式事务,进阶之路必须要迈过的槛
- Spring Cloud实战 | 第十一篇 :Spring Cloud Gateway网关实现对RESTful接口权限和按钮权限细粒度控制
redis下载与安装(windows版)_丑八怪223的博客-CSDN博客_redis下载
Install Docker Desktop on Ubuntu | Docker Documentation
docker Ubuntu 22.04下搭建环境
Docker
https://www.cnblogs.com/zengjianrong/p/16516075.html apt换ustc源
docker:更换镜像源_玩转测试开发的博客-CSDN博客_docker换源
Docker换源与镜像拉取_dockerpull拉取国内镜像_wxystyle的博客-CSDN博客
Ubuntu 安装和使用MySQL_奉君逍遥的博客-CSDN博客_ubuntu mysql
MySql
Ubuntu 安装和使用MySQL_奉君逍遥的博客-CSDN博客_ubuntu mysql
Oauth2.0 数据库表_芊芊墨客的博客-CSDN博客_oauth2.0数据库表
Redis
Redis 设置密码_张童瑶的博客-CSDN博客_redis配置用户名密码
Docker 安装 Redis 容器 (完整详细版)_Touch&的博客-CSDN博客_docker redis
docker run -d --name=redis \ -p 6379:6379 \ -v /home/liuqz/learnSpring/docker/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /home/liuqz/learnSpring/docker/redis/data:/data \ --restart=always \ redis:latest redis-server /etc/redis/redis.conf
redis如何查看key的有效期_怎么又有bug单的博客-CSDN博客_redis查看key的过期时间
# Redis 查看所有的key keys * # redis如何查看key的有效期 ttl "keyname" # Redis TTL命令用于获取键到期的剩余时间(秒)。 # 返回值是以毫秒为单位的整数值TTL或负值 # 负值代表该键值不存在或没有有效期,具体如下: # -1, 如果key没有到期超时。 # -2, 如果键不存在。
RabbitMQ
docker run -d --name rabbitmq --restart always --hostname rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq
Linux、window系统修改rabbitmq 默认端口及修改用户密码_Marco_R的技术博客_51CTO博客
Nacos
Seata
实战2
有哪些使用Spring Cloud的完整微服务项目? - 知乎
前言 · 语雀 pig
【pig-cloud项目】关于@Inner和@PreAuthorize的理解,以及微服务内外部间的调用认证鉴权理解_清晨敲代码的博客-CSDN博客_@inner
认证流程
SpringSecurity中有如下的过滤器:
OAuth2ClientAuthenticationFilter
// OAuth2ClientAuthenticationFilter public final class OAuth2ClientAuthenticationFilter extends OncePerRequestFilter { // ... // authenticationConverter 为 DelegatingAuthenticationConverter // 登录时带Authorization返回的是 ClientSecretBasicAuthenticationConverter // 登录成功后带jwt,返回的是 JwtClientAssertionAuthenticationConverter Authentication authenticationRequest = this.authenticationConverter.convert(request); Authentication authenticationResult = this.authenticationManager.authenticate(authenticationRequest); // ... } public final class DelegatingAuthenticationConverter implements AuthenticationConverter { // ... public Authentication convert(HttpServletRequest request) { Assert.notNull(request, "request cannot be null"); // converters 有四个: // JwtClientAssertionAuthenticationConverter,处理JWT // ClientSecretBasicAuthenticationConverter,处理头部Authorization // ClientSecretPostAuthenticationConverter,处理参数client_id和client_secret // PublicClientAuthenticationConverter,PKCE,grant_type,code,code_verifier for (AuthenticationConverter converter : this.converters) { Authentication authentication = converter.convert(request); if (authentication != null) { return authentication; } } return null; } }
通过AuthenticationConverter创建相应的Authentication,然后调用ProviderManager类进行进一步处理:
public class ProviderManager implements AuthenticationManager, MessageSourceAware, InitializingBean { // ... @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { // getProviders() 的值为: // AnonymousAuthenticationProvider // JwtClientAssertionAuthenticationProvider@19312 // ClientSecretAuthenticationProvider@19402 // PublicClientAuthenticationProvider@19406 // OAuth2AuthorizationCodeRequestAuthenticationProvider@19407 // ... for (AuthenticationProvider provider : getProviders()) { if (!provider.supports(toTest)) { continue; } result = provider.authenticate(authentication); if (result != null) { copyDetails(authentication, result); break; } } } // ... }
getProviders()的值为:
OAuth2TokenEndpointFilter
public final class OAuth2TokenEndpointFilter extends OncePerRequestFilter { // ... @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { Authentication authorizationGrantAuthentication = this.authenticationConverter.convert(request); OAuth2AccessTokenAuthenticationToken accessTokenAuthentication = (OAuth2AccessTokenAuthenticationToken) this.authenticationManager.authenticate(authorizationGrantAuthentication); this.authenticationSuccessHandler.onAuthenticationSuccess(request, response, accessTokenAuthentication); } // ... }
补全
理解JDBC/JPA/Mybatis/Hibernate_~一叶、的博客-CSDN博客_jdbc jpa mybatis
(一)关于spring security的简要介绍以及相关配置和jar包认识 - 走看看
解决请求跨域问题_chy1984的博客-CSDN博客_请求跨域问题
VUE
npm 安装详细教程_Cleve_baby的博客-CSDN博客_npm安装
超详细Vue Devtools的下载和安装——Vue的调试工具_沐小侠的博客-CSDN博客_vue开发者工具下载
vue-devtools的安装与使用_柒留心的博客-CSDN博客_vue devtools
VSCode 开发Vue必备插件 - zyp_java_net - 博客园
【VsCode】VsCode(Vue/React)的安装与48个插件大全_敦厚的曹操的博客-CSDN博客_vscodevue插件
Springboot支持HTTPS教程(亲测有效)_Bug克星的博客-CSDN博客_springboot支持https