首页 文章 精选 留言 我的

精选列表

搜索[代码托管],共10046篇文章
优秀的个人博客,低调大师

TokenManager 0.0.1 发布:支持三方 Token 托管

TokenManager V0.0.1版本 TokenManager是一款基于Java开发的Springboot组件,用于管理自身平台以外的三方Token。 TokenManager将全场景的远程调用获取Token抽象到TokenManager接口中,通过调用指定的API实现各类三方系统的Token的管理。 通过Redis的消息订阅特性实现了延时消息监听Token生命周期过期时间,从而自动刷新Token。 确保在高并发请求下,用户不会调用具体的三方接口实时获取Token。 TokenManager原理图如下所示: 开发者:marker TokenManager特性 多环境Token共享例如:调试微信,获取appid+secrt换取accessToken,在开发环境和测试环境共用appid的情况下,Token共享。 自动刷新accessToken支持基于Oauth2协议的刷新Token机制,无需干预自动刷新,最佳的管理方式,提高接口响应速度。 多级缓存(待实现)支持本地缓存与远程缓存。本地缓存JVM级别的,远程缓存基于Redis。提高Token的访问速度,防止Redis击穿雪崩。 本地缓存的生命周期动态管理。 可扩展支持扩展现有的API实现,能够支持除了微信以外的其他平台。采用自动装配技术,实例动态注入到Spring容器中。 支持请求日志拦截通过RestTempalte 拦截器实现了请求日志拦截,默认实现了请求Slf4j的info级别日志。可以自定义配置个性化的拦截实现。 更新日志 2021-08-16 新版本发布; 快速开始 准备好Redis-server,服务IP与端口还有密码 服务:127.0.0.1:6379 密码:123456 如果您没有Redis服务环境,推荐使用Docker部署测试。 在您的项目中pom.xml加入maven依赖: <!-- 开发者:marker 三方Token管理器 --> <dependency> <groupId>com.wuweibi</groupId> <artifactId>token-manager</artifactId> <version>0.0.1</version> </dependency> TokenAPI TokenAPI 提供了获取Token和刷新token两种接口,参数包含SecretConfig和Map,这里使用Map的原因是我们不能确定获取Token需要c端用户传递哪些数据字段,因此使用Map会较为通用的方式。 TokenManager会通过类型自动判断调用那个接口实现,当然我们也可以采用策略模式直接设置TokenAPI到TokenManger实例里。 Springboot配置内容 spring: ## 三方Token管理器 token-manager: enabled: true # redis链接地址 host: ${TOKEN_REDIS_HOST:192.168.1.6} # redis密码 password : ${TOKEN_REDIS_PASSWORD:xxx} # redis数据索引 默认14 database : ${TOKEN_REDIS_DB:13} port: ${TOKEN_REDIS_PORT:6379} lettuce: #在关闭客户端连接之前等待任务处理完成的最长时间,在这之后,无论任务是否执行完成,都会被执行器关闭,默认100ms shutdownTimeout: 100 pool: # 连接池最大连接数(使用负值表示没有限制) maxActive: 50 # 连接池中的最大空闲连接 maxIdle: 10 # 连接池中的最小空闲连接 minIdle: 9 # 连接池最大阻塞等待时间(使用负值表示没有限制) maxWait: -1 # Token管理器多实例配置 configMap: # 微信Token接口配置 weixinMp: type: WEIXIN appid: wx03698c0a99f50cfb appsecret: 82aee19d923384fcda0be1ad9f23619c offsetTime: 60

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

NetCore如何使用托管服务执行后台任务

关于我 作者博客|文章首发 我们经常要使用NetCore控制台或者AspNetCore来定义一些通用的后台服务。如果自行编码的话,对后台服务的理解应该体现在启动一个线程,使用while循环执行任务,每次时间间隔N秒,这是最简单的一种实现方式。 既然NetCore现在的稳定版本都已经是3.1了,难道官方没有考虑到这种最基本的使用场景吗。当然不会,下面我们就本着参考官方文档的角度解析一下后台服务在Core控制台中的使用。 初始化准备 首先我们创建一个控制台项目,下载基础包 nuget install Microsoft.Extensions.Hosting 初始化Program.cs文件 public static class Program { static async void Main(string[] args) { var builder = new HostBuilder().ConfigureServices((context, service) => { }); await builder.RunConsoleAsync(); } } 使用详解 一般后台服务 开始使用 注入后台服务非常简单,调用service.AddHostedService方法将自定义的服务进行注入。 service.AddHostedService<CustomerJob/Service>(); 自定义的后台服务类需要满足定义的接口,才可以被正常使用,下面我引用一个官方的案例进行说明 定时后台任务使用 [System.Threading.Timer]类。 计时器触发任务的 DoWork 方法。 在 StopAsync 上禁用计时器,并在 Dispose 上处置服务容器时处置计时器: 继承IHostedService接口,实现StartAsync和StopAsync方法即可将服务正常注入后台任务中。 IDisposable的作用主要是在进程关闭时释放定时器资源 public class TimedHostedService : IHostedService, IDisposable { private int executionCount = 0; private readonly ILogger<TimedHostedService> _logger; private Timer _timer; public TimedHostedService(ILogger<TimedHostedService> logger) { _logger = logger; } public Task StartAsync(CancellationToken stoppingToken) { _logger.LogInformation("Timed Hosted Service running."); _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); return Task.CompletedTask; } private void DoWork(object state) { var count = Interlocked.Increment(ref executionCount); _logger.LogInformation( "Timed Hosted Service is working. Count: {Count}", count); } public Task StopAsync(CancellationToken stoppingToken) { _logger.LogInformation("Timed Hosted Service is stopping."); _timer?.Change(Timeout.Infinite, 0); return Task.CompletedTask; } public void Dispose() { _timer?.Dispose(); } } 内容整合 将上文中的内容进行一个整合,得到的效果是 public static class Program { static async void Main(string[] args) { var builder = new HostBuilder().ConfigureServices((context, service) => { service.AddHostedService<TimedHostedService>(); }); await builder.RunConsoleAsync(); } } Ctrl+F5即可查看执行效果 其他说明 以上说明的是后台任务在Core控制台中的应用,那么在AspNetCore【Web项目】中是怎么使用的呢。当然都是一样的,只是注入的地方发生了小小的改变,在AspNetCore中注入通常发生在StartUp.cs中的方法ConfigureServices。使用方法和控制台一致。 public void ConfigureServices(IServiceCollection services) { service.AddHostedService<TimedHostedService>(); } 带作用域的服务 适用于Web项目中涉及数据库等外连接操作的场景,例如 每一次web请求对应一个数据库上下文[DbContext],这个时候就要用要带作用域的服务。 带作用域的服务使用也非常简单,可以参考官方文档,这里我就不做其他介绍 参考 https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-5.0&tabs=visual-studio https://blog.csdn.net/weixin_34174105/article/details/86015664 推荐阅读 Redis工具收费后新的开源已出现 GitHub上Star最高的工程师技能图谱 中国程序员最容易发错的单词 推荐!!! Markdown图标索引网站 最后 本文到此结束,希望对你有帮助 😃 如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。 更多精彩技术文章汇总在我的 公众号【程序员工具集】,持续更新,欢迎关注订阅收藏。

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

Gitea 1.13.0 发布,流行的自托管 Git 服务

Gitea 1.13.0 已发布,其团队表示在此版本的开发周期里合并了 649 个 PR。 部分更新亮点: 从 1.13.0 开始,Gitea 最低要求 TLS 1.2 支持 (#12689) 使用自定义图标的用户需要提供一个favicon.svg(#12437) 默认关闭密码复杂度检查功能(#12557) 考虑采用其他方法,如最小长度或对照 HaveIBeenPwned 进行检查 添加迁移服务类型切换页面(#12697) 新增 Mermaid JS 渲染器(#12334) 启用 Git Wire Protocol v2 over HTTP 进行克隆 (#12170) 使用 Kanban 面板 详情查看发布公告。

资源下载

更多资源
Nacos

Nacos

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

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

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册