GraalVM GraalVM是一种高性能、通用的虚拟机,由Oracle公司开发。它支持多种编程语言(如Java、JavaScript、Python等),并提供了即时编译器、AOT编译器等功能。GraalVM的主要特点包括: 高性能:GraalVM提供了优秀的即时编译器,能够将程序在运行时快速编译成本地代码,从而提高执行效率。 多语言支持:除了支持Java之外,GraalVM还支持其他多种编程语言,可以在同一个虚拟机中运行不同语言的程序。 AOT编译:GraalVM支持提前(AheadofTime)编译,能够将程序编译成本地可执行文件,减少启动时间和内存占用。 嵌入式引擎:GraalVM提供...

  2xk0JyO908yA   5天前   20   0   0 Java

这个文章主要介绍一下@AutoConfigureAfter在spring框架中的作用,在使用过程中,很多开发人员在使用它的时候都出现了问题,问题比较多的就是它们的注册顺序总不是我们预期的,下面介绍一下正常的使用方法。 @AutoConfigureAfter用在配置类上面,即需要在@Configuration修饰的类上,而不是@Component上面。 这些配置类,需要在spring.factories上面进行注册 @AutoConfigureAfter影响的是配置类中@Bean声明的方法,而不是配置类本身 代码测试 祖父配置 @Configuration @AutoConfigureBef...

  2xk0JyO908yA   5天前   19   0   0 Java

滑动窗口限流 滑动窗口限流是一种常用的限流算法,通过维护一个固定大小的窗口,在单位时间内允许通过的请求次数不超过设定的阈值。具体来说,滑动窗口限流算法通常包括以下几个步骤: 初始化:设置窗口大小、请求次数阈值和时间间隔。 维护窗口:将请求按照时间顺序放入窗口中,并保持窗口内请求数量不超过阈值。 检查通过:每当有新的请求到达时,检查窗口内请求的总数是否超过阈值,如果未超过则允许通过,同时移除窗口最老的请求。 更新窗口:随着时间的推移,更新窗口内的请求情况,确保窗口内的请求符合限流条件。 滑动窗口限流算法可以有效控制系统的请求流量,避免系统被大量请求压垮。同时,由于其简单高效的特点,被广泛应用...

  2xk0JyO908yA   6天前   14   0   0 算法与数据结构

项目结构 在开发Chrome插件时,以下几个文件的作用如下: manifest.json:这是Chrome插件的清单文件,用于配置插件的基本信息、权限、页面跳转等。其中包括插件的名称、版本号、图标、后台脚本、浏览器动作等信息。 background.js:这是Chrome插件的后台脚本文件,用于处理插件的后台逻辑。可以监听事件、与浏览器进行交互、执行一些后台任务等。在manifest.json中指定了background脚本后,它会在插件加载时自动运行。 popup.html:这是Chrome插件点击后弹出的界面的HTML文件。可以定义插件弹出页面的结构、样式和交互逻辑。 popup.js:...

  2xk0JyO908yA   7天前   14   0   0 JavaScript

在keycloak中,我们在进行brower浏览器的表单认证时,一般在跳到本页面时,URL上会有redirect_uri这种参数,用来告诉keycloak,在认证成功后的跳转地址,你在表单认证控制器中,可以通过context.getHttpRequest().getUri().getQueryParameters().getFirst("redirect_uri")进行获取,而当你为brower认证流程添加RequiredAction行为之后,你需要在进入RequiredAction时带上这些参数,你是不能直接通过getQueryParameters()方法获取的,因为它之前的页面不是来源页,...

  2xk0JyO908yA   9天前   17   0   0 Java

keycloak提供了jwks服务,其地址可以在/auth/realms/fabao/.well-known/openid-configuration的返回结果中找到,jwks_uri它表示了公钥的颁发者,可以使用颁发出来的公钥来验证token的签名,基地址也是固定的/auth/realms/fabao/protocol/openid-connect/certs。 springboot构建keycloak的token校验服务 依赖包 jwt的解析以来于java-jwt包,由jwks服务解析依赖于jwks-rsa包,jwks是什么,可以看这里 <dependencyManagement&g...

  2xk0JyO908yA   12天前   23   0   0 Java

com.auth0.jwk组织下面的jwks-rsa包,主要实现的是通过公钥对jwt的签名进行验证,在这个包中,它使用了包装器的设计模式,对默认的jwks提供者添加了一缓存的支持,通过建立一个GuavaCachedJwkProvider类,传入一个默认的UrlJwkProvider来将这个Provider进行包装,让它具有缓存的能力! 包装器模式 包装器模式(WrapperPattern)是一种结构型设计模式,它允许在不改变原始对象接口的情况下,动态地向对象添加新的功能。包装器模式通过创建一个包装类,将原始对象作为包装类的成员,并在包装类中定义额外的行为或功能来扩展原始对象的功能。 以下是包装...

  2xk0JyO908yA   12天前   12   0   0 Java

mybatis-plus中,如果数据表字段类型与java实体字段类型不一样,这时就需要做类型映射与转换了,我们一般可以实现TypeHandler接口,或者继承抽象类BaseTypeHandler,我们下面举例来说明一下它的使用方法。 场景 数据表里字段是varchar,java里是List集合,例如:我的爱好标签 数据表里字段是varchar,java里是个Map对象,例如:我曾经居住过的地方 操作步骤 实体类 类注解的参数autoResultMap=true,它影响TypeHandler中的getResult方法的执行 字段注解@TableField(typeHandler=ListT...

  2xk0JyO908yA   12天前   18   0   0 Java

接口地址 keycloak开放接口地址:/auth/realms/fabao/.well-known/openid-configuration rsa算法相关术语 RSA算法是一种非对称加密算法,其安全性基于大整数分解的困难性。在RSA算法中,有以下几个关键参数: n(模数):n是一个大整数,通常为两个大素数p和q的乘积,即n=pq。n用于生成公钥和私钥,并且决定了加密和解密的计算过程。 e(公钥指数):e是一个与φ(n)互质的小整数,其中φ(n)是欧拉函数,表示小于n且与n互质的正整数的个数。e在加密时使用,作为公钥的一部分。 公钥:公钥由(n,e)组成,其中n是模数,e是公钥指数。...

  2xk0JyO908yA   17天前   24   0   0 Java

作用 GROUP_CONCAT是MySQL中用于将查询结果集中的多行数据合并为单个字符串的聚合函数。它将每行数据的指定字段值连接起来,并以指定的分隔符分隔,最终返回一个包含所有值的字符串。 以下是GROUP_CONCAT函数的一般语法: SELECTGROUP_CONCAT(column_nameSEPARATOR',')FROMtable_nameGROUPBYgroup_column; column_name:要连接的字段名。 SEPARATOR:可选参数,用于指定连接不同值时使用的分隔符,默认为逗号。 table_name:表名。 group_column:分组列,用于指定对哪个列进...

  2xk0JyO908yA   23天前   12   0   0 MySQL

使用场景 RequiredActionProvider,它是在认证过程中,需要当前登录的用户执行个性化的动作;当用户符合条件,就被执行RequiredActionProvider对作,当RequiredActionProvider没有正常提交(context.success())之前,当前用户仍然是未登录状态,这在keycloak框架中,也有一些默认的个性化动作,它与整个登录流程是解耦的,事实上,keycloak的设计理念也是微架构设计,插件化设计。 keycloak默认提供的RequiredActionProvider VERIFY_EMAIL验证邮箱 UPDATE_PROFILE更新用户...

  2xk0JyO908yA   24天前   9   0   0 Java

如果你的服务器资源紧张,pod可能只能是单副本了,这时在进行平滑的滚动部署时,应该如何配置呢?总不能在部署期间503吧,这是不能接受的! maxUnavailable来配置不可用数量 我们可以在spec.strategy.strategy.rollingUpdate中,将不可用数maxUnavailable改成0即可实现平滑部署,配置如下: apiVersion:apps/v1 kind:Deployment metadata: name:keycloak-deployment namespace:kc spec: replicas:1 滚动升级策略 strategy: type:Rollin...

  2xk0JyO908yA   24天前   19   0   0 Kubernetes

提供者目录 Provider Authenticator BaseDirectGrantAuthenticator AbstractFormAuthenticator AbstractUsernameFormAuthenticator RequiredActionProvider FormAction ProtocolMapper AbstractOIDCProtocolMapper RealmResourceProvider 具体provider的作用 Provider(提供者): 作用:表示Keycloak中的各种扩展点,用于自定义和扩展Keycloak的功能。 使用方...

  2xk0JyO908yA   25天前   19   0   0 Java

新网站对接到KC的部署 kc的环境 向kc申请自己的客户端 kc的登录接口 通过code换token接口 刷新token接口 kc的用户信息接口 kc的jwttoken说明 1.kc的环境 测试环境:https://test-kc.xxx.com预发布环境:https://pre-kc.xxx.com生产环境:https://kc.xxx.com 2.向kc申请自己的客户端 联系负责开发kc的同事,申请一个客户端,需要提供以下信息: client_id:客户端id client_secret:客户端密码 3.kc的登录接口 /auth/realms/{realm}/protocol/o...

  2xk0JyO908yA   27天前   40   0   0 Java

对于实体中包含有公共字段,像create_at,create_time,update_at,update_time来说,我们没有必要在每个实体的crud操作中复制同样的代码,这样代码的味道很坏,我们应该使用mybatis的拦截器机制,将公共字段统一处理;当然mybatis-puls在实现上更加优雅,它帮我们封装了MetaObjectHandler接口,我们可以重写insertFill和updateFill来完成公共字段的统一填充,详细可看我这篇文章《springbootMyBatisPlus中使用@TableField完成字段自动填充》。 mybatis中的实现 需要实现org.apache...

  2xk0JyO908yA   27天前   12   0   0 Java

参考 https://github.com/higress-group/proxy-wasm-go-sdk/tree/main/proxywasm https://github.com/tetratelabs/proxy-wasm-go-sdk https://github.com/alibaba/higress/blob/main/plugins/wasm-go/pkg/wrapper https://tinygo.org/docs/reference/ https://tinygo.org/docs/reference/lang-support/stdlib/ mse网关及插件的测试 ...

  2xk0JyO908yA   28天前   25   0   0 Go

相关依赖 github.com/higress-group/proxy-wasm-go-sdk github.com/alibaba/higress/plugins/wasm-go 标准的redis 下面是一个读取redis指定key的方法,使用了higress的wasm-go组件实现的 err:=config.Client.SMembers("online",func(responseresp.Value){ for_,item:=rangeresponse.Array(){ str:=item.String() ifstrings.HasPrefix(str,"\""...

  2xk0JyO908yA   29天前   31   0   0 Go

在Go语言中使用Redis,通常需要使用第三方库来实现与Redis服务器的交互。目前比较流行的Go语言Redis客户端库有go-redis和redigo等。这里以go-redis为例,简单介绍如何在Go语言中使用Redis。 使用go-redis连接Redis数据库 安装go-redis库:可以使用go命令行工具安装go-redis库:gogetgithub.com/go-redis/redis/v8 示例代码:下面是一个简单的示例代码,演示如何连接Redis数据库并进行基本操作:packagemain import( "context" "fmt" "github.com/go-red...

  2xk0JyO908yA   2024年04月03日   21   0   0 其他语言

Go和TinyGo是两种不同的Go语言编译器,它们之间有以下几点区别: 目标平台: Go:Go语言编译器主要面向通用计算机平台,如Windows、Linux、macOS等。 TinyGo:TinyGo专注于支持嵌入式系统和物联网设备等资源受限的平台,如微控制器、嵌入式设备、WebAssembly等。 性能: Go:Go编译器生成的可执行文件通常较大,运行速度较快,适合在通用计算机上运行。 TinyGo:TinyGo针对嵌入式系统做了优化,生成的可执行文件更小,运行速度可能会受到一定影响,但更适合在资源受限的环境下运行。 语言特性支持: Go:Go语言拥有完整的标准库和语言特性,适合...

  2xk0JyO908yA   2024年04月03日   32   0   0 Go

场景与实现逻辑 我的登录接口,在输入账号密码成功后进行中间页 中间页可以通过添加Authenticator的实现类来写逻辑 authenticate方法是渲染页面的,action方法是提交表单后的逻辑 context.success()方法表示认证成功,将进行重写向操作 可以通过Response.status(302).header(HttpHeaders.LOCATION,modifyPasswordPage).build()实现自定义的重定向地址 在kc配置中,复制一个brower认证流,为账号密码模块添加一个行为(execution) 核心代码 @Override publicvoi...

  2xk0JyO908yA   2024年04月03日   27   0   0 Java
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~