首页 文章 精选 留言 我的

精选列表

搜索[JSON复制],共10000篇文章
优秀的个人博客,低调大师

JSON Web Token (JWT)生成Token及解密实战。

昨天讲解了JWT的介绍、应用场景、优点及注意事项等,今天来个JWT具体的使用实践吧。 从JWT官网支持的类库来看,jjwt是Java支持的算法中最全的,推荐使用,网址如下。 https://github.com/jwtk/jjwt 下面来看看如何使用jjwt来实现JWT token的生成与解密,主要用到sha512算法来演示。 1、导入jjwt的maven包。 <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.0</version> </dependency> 注意:JJWT依赖Jackson 2.x,低版本将报错。 2、建立一个JWTTest测试类。 3、创建密钥; 这里使用sha512算法,所以需要一个密钥。 Key KEY = new SecretKeySpec("javastack".getBytes(), SignatureAlgorithm.HS512.getJcaName()); 这样就生成了一个固定的密钥:javastack 4、生成JWT token。 核心代码如下: Map<String, Object> stringObjectMap = new HashMap<>(); stringObjectMap.put("type", "1"); String payload = "{\"user_id\":\"1341137\", \"expire_time\":\"2018-01-01 0:00:00\"}"; String compactJws = Jwts.builder().setHeader(stringObjectMap) .setPayload(payload).signWith(SignatureAlgorithm.HS512, KEY).compact(); System.out.println("jwt key:" + new String(KEY.getEncoded())); System.out.println("jwt payload:" + payload); System.out.println("jwt encoded:" + compactJws); 注意:header可以不用设置,claims不能和payload同时设置。 输出结果: jwt key:javastack jwt payload:{"user_id":"1341137", "expire_time":"2018-01-01 0:00:00"} jwt encoded:eyJ0eXBlIjoiMSIsImFsZyI6IkhTNTEyIn0.eyJ1c2VyX2lkIjoiMTM0MTEzNyIsICJleHBpcmVfdGltZSI6IjIwMTgtMDEtMDEgMDowMDowMCJ9.cnyXRnwczgNcNYqV6TUY2MaMfk6vujsZltC8Q51l40dwYJg516oZcV4VDKOypPT8fD7AE63PIhfdm2ALVrfv5A 5、解密JWT token内容。 核心代码如下: Jws<Claims> claimsJws = Jwts.parser().setSigningKey(KEY).parseClaimsJws(compactJws); JwsHeader header = claimsJws.getHeader(); Claims body = claimsJws.getBody(); System.out.println("jwt header:" + header); System.out.println("jwt body:" + body); System.out.println("jwt body user-id:" + body.get("user_id", String.class)); 输出结果: jwt header:{type=1, alg=HS512} jwt body:{user_id=1341137, expire_time=2018-01-01 0:00:00} jwt body user-id:1341137 再用密文去JWT官网的调试器解密一下,看是否成功。 [图片上传失败...(image-21adc3-1515747635156)] 解密成功,其他算法使用逻辑一样,这样我们可以使用JWT来实现不同服务之间数据的安全传递。 推荐阅读 干货:免费领取2TB架构师四阶段视频教程 面经:史上最全Java多线程面试题及答案 教程:Dubbo原理及应用全套视频教程 工具:推荐一款在线创作流程图、思维导图软件 分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。

优秀的个人博客,低调大师

用 Python 批量生成销售日报,告别每天复制粘贴

销售日报需要汇总各渠道的订单数、销售额和客单价。渠道超过十个以后,手工把数据从各平台抄进同一张 Excel 就成了明显负担:耗时、易错、且无法追溯数据来源。以 11 个渠道、日均 42 分钟手工汇总估算,每月仅此一项就占用约 15 个小时。本文用一个可落地的 Python 脚本,把这份日报改成每天定时自动生成。流程拆成取数、归一化、算指标、写 Excel、调度五步,代码可直接复用,数据源与代理配置集中管理,渠道字段变动时只改对应函数。先说清日报的结构:左侧各渠道一行,右侧是当日订单数、销售额、客单价,末尾合计并附环比。格式稳定是自动化的前提,若格式频繁变动,脚本反而增加维护成本。先把事情拆开一份"日报"其实就三件事。第一,数据从哪儿来。第二,拿回来怎么算。第三,算完怎么落盘成 Excel 并发出去。这三步我分开写,后面渠道改字段或者老板要加指标,都不用动全身。有人会问,为什么不直接用 pandas 一口气读库写表完事。因为我们的情况是混合数据源,没法一刀切。公司自有订单系统在公司内网,直接连库拉就行。另外两个渠道的销量要走平台开放接口,而这个接口按出口 IP 限流,办公室那条固定 IP 请求两轮就被封半小时。这两类数据源的取数逻辑完全不同,硬塞一个函数里只会越写越乱。也有人推荐直接用 Excel 的 Power Query。试过,图形化界面点起来爽,但渠道一多,每个查询的刷新顺序、依赖关系全藏在界面背后,出了错没法 diff,也没法进版本库。脚本丑是丑,但每一行都在眼前,新人接手看代码就行,不用我坐在旁边讲半小时。抓数据,并且要能重试网络这种事你控制不了,别指望一次就通。接口超时、平台抖一下、代理偶尔抽风,都是常态。我用了 tenacity 做重试,最多试三次,失败之间退避等待,避免一拥而上把接口打挂。报表自动化为什么绕不开代理先把背景讲透。日报要拉十几个渠道,其中有几个是淘宝、抖音这类开放平台,它们的订单接口都带反爬。办公室那条固定出口 IP,请求两轮就被限流半小时。我一开始加了 sleep 退避,没用,平台认的是 IP 不是频率。后来接了亿牛云的动态转发代理(隧道代理)。它背后是一个很大的 IP 池,只配一个固定入口,每次转发自动换出口 IP,对目标平台来说每次请求都来自不同地方,而且是匿名的,拉数据跟正常访问没两样。我不用自己维护 IP 池,某个 IP 被封也不会全盘停摆。日报一天几十兆流量,动态转发按月付,成本比自己租服务器搭池子低很多,这也是我没自己养 IP 的原因。代理的鉴权是用户名加密码,格式是 http://用户名:密码@入口域名:端口。用户名里通常带订单号和地区参数,具体以后台接入串为准,别照抄网上的例子。动态转发一般要求把调用方出口 IP 加进白名单,否则拒绝连接。我第一次配完连不上,查了半天是忘绑白名单,这种坑踩一次就记住了。

优秀的个人博客,低调大师

FastCFS V3.5 发布,支持多数派数据复制

经过一个多月紧锣密鼓的研发,FastCFS v3.5发布了。v3.5主要完成了异常情况下保证数据一致性的改进工作:数据提交采用多数派确认机制保证在高负载等不稳定情况下数据一致性和可靠性;实现了数据不一致时的自动恢复机制(以前版本是持续报错),包括如下两点: 1. slave自动回滚不一致的数据,然后从master恢复数据; 2. 在重启情况下,如果slave的数据版本比master高,则自动提升为master。 其他小改进: 1. 支持跨机器幂等机制; 2. 默认开启日志按天轮转和日志清除。 修复的bug列表: [fdir] dentry_list_by_path must call dentry_check_load_children [fdir & fstore] select leader/master distinguish success count and active count [fdir & fstore] get_myself_in_cluster_cfg by service, cluster and replica ports [fstore] MUST ignore errno EOPNOTSUPP when leader notify FastCFS v3.5是极端情况下保证数据一致性和可靠性的里程碑版本,欢迎大家下载和使用。使用FastCFS旧版本的用户,请及时升级到最新版本。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册