SpringCloud - Token校验失效

Spring Cloud Alibaba微服务JWT认证生产实践 JWT是一种基于声明的身份令牌,其核心价值在于实现跨服务、跨进程的可信身份传递。在微服务架构中,单纯解析Token远不足以支撑高可用认证体系——必须结合密钥轮换、网关统一校验、下游上下文注入与分布式失效机制,才能构建具备类Session可控生命周期的安全契约。本文围绕Spring Cloud Alibaba生态,深入剖析HS256密钥分发、Nacos动态配置、Gateway身份透传及布隆过滤器加速状态校验等关键技术,覆盖Token生成、验证、刷新与登出全链路,为中后台系统提供可落地的JWT工程化方案。 阅读详情

问题描述

  • 在微服务工程中,JwtToken作为common工程下的公共模块,同时被goods8011和ucenter8081服务调用,
    在使用ucenter模块登陆后生成的token可以在ucenter模块校验成功,但是goods模块校验token失败

无法校验token

  • 使用生成的token在ucenter模块中是可以校验并成功解析
  • 但是在goods模块中无法解析token

解决

原因
  • 在JwtToken生成的工具类中加密/解密密钥使用了UUID,在两个模块校验token的时候使用的是两个不相同的密钥解密

  • ucenter模块输出的密钥

  • goods模块输出的密钥

使用一串固定的密钥即可

注意

注意: 密钥生成只能是数字和字母组合(不能纯数字、纯字母或者含有特殊符号

总结

  • 密钥为数字 + 字母组合(可以不同,但区别不能过大)
  • 每个模块编译common中的类方法为自己源文件,各模块的密钥不是相等的。
SpringCloud Alibaba 实战 - 如何让 jwt token 主动失效? 前言 有一个看我SpringCloud alibaba系列文章的粉丝私下问我:如何处理jwt失效的问题?修改密码或退出登录后需要将之前的jwt token失效掉,不允许使用旧token登录系统。 我说:很简单呀,咱们直接 无为而治,用户退出或修改密码的时候前端直接删除这个token不就完了吗?后端啥都不用管,啥也不用做。 他说:别闹,你的每篇文章我都给你一键三连。 我当时就被感动了,既然是这样的好读者,我果断答应专门给他写篇文章来分享一下我这个不太成熟的做法,改造一下这个SpringCloud al 阅读详情

相关推荐

SpringCloud Alibaba 实战:如何让 jwt token 主动失效?

前言 有一个看我SpringCloud alibaba系列文章的粉丝私下问我:如何处理jwt失效的问题?修改密码或退出登录后需要将之前的jwt token失效掉,不允许使用旧token登录系统。 我说:很简单呀,咱们直接 无为而治,用户退出或修改密码的时候前端直接删除这个token不就完了吗?后端啥都不用管,啥也不用做。 他说:别闹,你的每篇文章我都给你一键三连。 我当时就被感动了,既然是这样的好读者,我果断答应专门给他写篇文章来分享一下我这个不太成熟的做法,改造一下这个SpringCloud a.

Java4396的博客 2046

springCloud项目中一登陆就Token失效问题(已解决)

今天登录项目的时候一登陆上去就提示要重新登陆,后台报token失效的错误,检查了代码发现并没有问题,开始检查配置,在配置里发现不对劲。 本地redis配置 nacos上的redis配置 发现这两块的配置不同,应该是这里出了问题 改完配置对应上后就没有问题了 注意:host要和本地的host文件中配置的一样,如果启动了多个项目那么database要保证不一样 ...

weixin_50074995的博客 1820

SpringCloud Gateway整合Sa-Token实现微服务鉴权

在微服务架构中,API网关作为系统流量的统一入口,其鉴权机制直接影响整体安全性。基于Token的无状态认证是现代分布式系统的核心方案,通过JWT或自定义Token实现服务间信任传递。Sa-Token作为轻量级Java权限框架,通过简洁的注解和API设计,显著降低了微服务鉴权的实现复杂度。该方案结合SpringCloud Gateway的过滤机制,可实现路由级鉴权拦截,配合Redis存储会话信息,既保证安全性又满足水平扩展需求。典型应用场景包括电商系统的订单鉴权、ERP系统的角色权限控制等,其中Token存储

weixin_34268169的博客 422

spring boot 登录+token验证+返回值异常

spring boot+token验证+登录

weixin_41463944的博客 1269

若依SpringCloud实战:ruoyiCloud Token生成与验证机制深度解析

本文深度解析若依SpringCloud框架中的ruoyiCloud Token生成与验证机制,详细介绍了Token的生成流程、验证逻辑及实战优化经验。通过JWT+Redis双重验证,确保微服务环境下的安全认证,提升系统性能与可靠性。适合开发者学习分布式系统中的身份认证实现。

weixin_33734785的博客 1403

若依SpringCloud安全机制解析:从Token生成到权限验证的全流程

本文深入解析若依SpringCloud安全机制,从Token生成到权限验证的全流程。详细介绍了令牌生成机制、分布式存储方案、请求验证链路及权限控制系统,为开发者提供了一套开箱即用的安全解决方案,适用于微服务架构下的分布式认证需求。

weixin_28726671的博客 304

springboot微信公众号开发者配置 token验证失败和参数错误

真的坑!!擦 首先参数错误 在使用ngrok的时候可能会发生,建议使用natnapp token验证失败,注意token的一致 代码奉上 Autowired WeiXinConfig weiXinConfig; @GetMapping(value = "/connector") public String verifysignature(@RequestParam String signature, @RequestParam String timestamp,

lujunskli的博客 1337

SpringCloud Gateway与Sa-Token整合实现微服务鉴权

微服务架构中的API网关作为流量入口,其鉴权机制直接影响系统安全性。传统方案如Spring Security虽然功能强大,但配置复杂度较高。相比之下,轻量级Java权限框架Sa-Token通过注解式鉴权设计,显著降低了权限系统的实现门槛。该框架天然支持分布式会话管理,结合Redis可实现高性能的令牌存储与校验。本文介绍的SpringCloud Gateway集成方案,利用网关的全局过滤器机制,在流量入口处统一处理认证逻辑,实现"一次认证,全链通行"的效果。这种架构特别适合电商、金融等需要严格权限控制的场景,

weixin_34005090的博客 247

Springboot 使用jwt验证常见异常

Springboot jwt验证常见异常

weixin_53658826的博客 7184

SpringCloud Alibaba微服务实战三十五 - 实现退出登录后注销 jwt token

大家好,我是飘渺。 有一个看我SpringCloud alibaba系列文章的粉丝私下问我:如何处理jwt失效的问题?修改密码或退出登录后需要将之前的jwt token失效掉,不允许使用旧token登录系统。 我说:很简单呀,咱们直接 无为而治,用户退出或修改密码的时候前端直接删除这个token不就完了吗?后端啥都不用管,啥也不用做。 他说:别闹,你的每篇文章我都给你一键三连。 我当时就被感动了,既然是这样的好读者,我果断答应专门给他写篇文章来分享一下我这个不太成熟的做法,改造一下这个SpringCloud

飘渺Jam的博客 1万+

Kali Linux实战:Aircrack-ng破解Wi-Fi密码的完整流程与常见问题解决

本文详细介绍了在Kali Linux中使用Aircrack-ng套件进行Wi-Fi密码破解的完整流程,包括环境准备、无线网卡配置、网络扫描、握手包捕获与字典破解等关键步骤。同时针对无线网卡不支持监听模式、无法捕获握手包等常见问题提供了实用解决方案,帮助安全研究人员有效评估无线网络安全性。

weixin_29323049的博客 296

springboot实现公众号接入,遇到一直token认证失败的原因

为了避免修改代码后频繁的部署测试,我选用的是natapp实现内网穿透,natapp下载地址:https://natapp.cn/,根据自己实际情况下载对应版本。

yixuan_love的博客 2362

MAX30102传感器实战:从寄存器配置到Arduino心率血氧监测

本文详细介绍了MAX30102传感器在Arduino平台上的实战应用,从寄存器配置到心率血氧监测的全过程。通过清晰的代码示例和实用技巧,帮助开发者快速实现脉搏血氧仪功能,包括I2C通信、FIFO数据处理及算法实现,适用于健康监测和可穿戴设备开发。

weixin_29182481的博客 511

Jwt退出登录Token失效,多次登录失效之前token的实现

本文提出了一种基于Spring Cloud Gateway和Redis的JWT令牌失效方案。核心思路是将历史令牌存入Redis的有序集合(ZSet),利用score字段存储过期时间。登录/登出时将旧令牌存入ZSet,网关层通过校验ZSet判断令牌是否失效。方案优势在于:1)网关层统一控制,避免服务重复校验;2)ZSet的有序特性便于清理过期数据;3)通过定时任务自动维护过期令牌。实现包含登录服务(Quarkus+Kotlin)的令牌生成/失效逻辑和网关服务(Spring Boot)的校验拦截器。该方案有效解

路在脚下的博客 513

在统信UOS Server 20上踩坑记:手把手教你搞定openGauss 5.0.0企业版安装(附常见报错解决方案)

本文详细记录了在统信UOS Server 20上安装openGauss 5.0企业版的实战经验,包括环境准备、依赖库问题、目录权限、内存参数调优等常见问题的解决方案。通过伪装系统标识、建立软链接、调整内存参数等方法,成功克服国产操作系统与企业级数据库的兼容性挑战,为开发者提供了一份深度排雷指南。

weixin_28698059的博客 261

linux基线检查、基线加固、安全漏扫、系统漏洞、centos7、文尾部附脚本

等保三级-CentOS Linux 7合规基线检查 风险分类:系统-等保三级-CentOS Linux 7合规基线检查 检测项说明: CentOS Linux 7合规基线检查,对标中国等保2.0第三级等级保护基本要求部分检查项目,仅供参考 检查项目 : 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换 加固建议: 1、执行`cat /etc/shadow | awk -F: '($2 == "" ) { print $1}' `, 查看空密码账户并处理; 2、

swindy博客 5622

【OAuth2】Spring Security OAuth2 授权失败(401) 问题整理

文章目录一、免登录接口校验token问题二、Token失效返回的是状态401的错误 Spring Cloud架构中采用Spring Security OAuth2作为权限控制,关于OAuth2详细介绍可以参考阮一峰的网络日志理解OAuth 2.0 项目中采用OAuth2四种模式中的两种,Password模式和Client模式, Password模式用于控制用户的登录,Client模式用于控制后端服务相互调用。 权限架构调整后在近期发现一些问题,由于网上资料不多,只能单步调试方式看源码 (其实带着问题看源码是

hkk666123的博客 1万+

在线考试题库抓取:Python 爬虫抓取各类在线考试平台题库和试题

通过这些技术,您可以抓取各类在线考试平台上的题库数据,进行数据分析、生成练习题集,甚至用于考试准备。为了演示抓取过程,本篇博客选择了两个常见的在线考试平台进行数据抓取:一个是教育考试平台(如“中小学题库”),另一个是职业考试平台(如“华图教育”)。对于这些网站,我们需要找到包含题库信息的页面,并分析每一页的 HTML 结构,从而定位到题目、选项、答案等数据。大多数在线考试平台的题库是分页显示的,因此我们需要遍历多个页面,抓取所有的题库数据。因此,我们需要设置合适的请求头来模拟真实的浏览器请求。

2201_76125261的博客 3427

Spring Security OAuth2 授权失败(401) 问题整理

Spring Cloud架构中采用Spring Security OAuth2作为权限控制,关于OAuth2详细介绍可以参考http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 项目中采用OAuth2四种模式中的两种,Password模式和Client模式, Password模式用于控制用户的登录,Client模式用于控制后端服务...

weixin_30391339的博客 2502

基于Python实现身份证信息识别

身份证是一种重要的证件,包含了个人的基本信息,如姓名、性别、出生日期、住址等。在实际应用中,有时需要对身份证进行自动化的识别,以提高工作效率和准确性。本文将介绍如何使用Python实现身份证信息的识别,通过图像预处理、OCR技术和解析算法,实现对身份证号码和其他信息的提取和解析。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

单细胞转录组数据分析中的基因ID注释转换问题:如何解决才能注释所有的UMIcount数据?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1126

Spring Security OAuth2 授权失败(401)

Spring Cloud架构中采用Spring Security OAuth2作为权限控制,关于OAuth2详细介绍可以参考 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 项目中采用OAuth2四种模式中的两种,Password模式和Client模式, Password模式用于控制用户的登录,Client模式用于控制后端服务相互调用。 权限架构调整后在近期发现一些问题,由于网上资料不多,只能单步调试方式看源码 (其实带着问题看源码是最好的方式)

诚的博客 6885

大学生数学建模赛题解析及优秀论文-2021电工杯A题高铁牵引供电系统运行数据分析及等值建模(附Python代码)

我国是世界上电气化铁路运营里程最长、服役电力机车型号最多、运营最 繁忙的国家。截至 2020年底,我国铁路年消耗电量约800亿千瓦时,约占三峡 年总发电量的 80%。图1为高速铁路牵引供电系统示意图,主要包括牵引变电所、牵引网和动车 组。牵引变电所将 220kV三相电压转换为满足电力机车运行的27.5kV单相电压, 其核心元件是牵引变压器。牵引网由馈线、接触网、钢轨、回流线等组成,完成 对电力机车的送电任务。...

wenyusuran的专栏 3169

SpringCloud Alibaba 实战 - 如何让 jwt token 失效?

知识回顾 众所周知,在 OAuth2 体系中认证通过后返回的令牌信息分为两大类:不透明令牌(opaque tokens) 和 透明令牌(not opaque tokens)。 不透明令牌 是一种无可读性的令牌,一般来说就是一段普通的 UUID 字符串。使用不透明令牌时资源服务不知道这个令牌是什么,代表谁,需要调用认证服务器校验、获取用户信息。使用不透明令牌采用的是 中心化 的架构。 透明令牌 一般指的是我们常说的JWT Token,用户信息保存在 JWT 字符串中,资源服务器自己可以解析令牌不再需要去

BUG指挥课堂 3178

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SpringCloud Gateway与Sa-Token实现微服务统一鉴权

在微服务架构中,API网关是实现统一认证授权的关键组件。SpringCloud Gateway作为Spring生态的官方网关解决方案,配合轻量级权限框架Sa-Token,可以构建高效的分布式鉴权体系。该方案基于Token机制实现会话管理,利用Redis存储会话信息,确保微服务环境下的安全通信。通过注解式权限控制(如@SaCheckLogin)显著简化开发,相比传统Spring Security方案更轻量高效。典型应用场景包括电商系统的订单/商品服务隔离访问、企业内部系统的角色权限管理等。该架构尤其适合需要快

weixin_33861800的博客 366

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

统一认证服务,应用服务端token的查询与缓存策略

统一认证服务,token校验,使用ConcurrentHashMap作为内存缓存,也可以使用其他技术框架,ConcurrentHashMap实现方式,只能在单体应用里生效,如果需要分布式缓存,就需要其他技术方案了,如Ehcache、Redisson、Hazelcast等

闫玉林的博客 1674

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: com.netflix.client.ClientException: Load balancer does not have available server for client: XXX-XXX
下一篇: 前端Long类型精度丢失
hanlin-hl
博客等级 码龄8年 3粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanlin-hl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值