自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (1)
  • 收藏
  • 关注

原创 Swagger接口返回JSON,Map的字段注释比较优雅的实现

看很多小伙伴写的接口,既想要Map的灵活扩展性,又苦于生成的接口文档没办法把已知的字段解释清楚;导致接口文档效果打折扣,还得另行约定文档,或者直接嘴上沟通了事;目前使用Swagger2形成接口文档时,当系统设计的接口返回的类型不是实体对象时,Swagger2无法在接口文档页面中显示返回结果字段说明,比如返回json、map等可以存储key-val形式的类型;均无法在接口文档页面上显示返回的字段备注说明;所以怎么才能像实体对象一样显示正常的model字段说明是我们这次需要解决的问题;...

2022-08-05 11:51:46 3483 1

原创 Keycloak自定义REST扩展-通过用户属性进行用户搜索

Keycloak自定义REST扩展-通过用户属性进行用户搜索需求背景项目中用户和组织架构管理都是依托以Keycloak,但是Keycloak内置的用户搜索功能不满足需求,需要根据用户的属性值进行搜索,比如手机号;Keycloak内置API能力代码走读Keycloak 官方文档看官方文档,貌似提供了search搜索查询services\src\main\java\org\keycloak\services\resources\admin\UsersResource.javamodel\j

2021-10-19 18:38:19 1719

原创 Keycloak在集群中高可用部署

Keycloak在集群中高可用部署Keycloak集群部署keycloak docker image中对于集群的相关描述Keycloak-container readmeDNS_PING 发现模式采用 DNS_PING发现的配置如下: - name: JGROUPS_DISCOVERY_PROTOCOL value: dns.DNS_PING - name: JGROUPS_DISCOVERY_PROPERTIES value: 'dns_query=keycloak-ha-sv

2021-07-30 21:08:38 1239

原创 后端透传代理实现

后端透传代理实现参数设计增加的一个target参数,用于表明需要代理的目标地址其他query参数透传header参数透传代码实现@RestControllerpublic class HomeController { @GetMapping("/backend/proxy") public ResponseEntity<?> proxy(@RequestParam MultiValueMap<String, String> params, @Req

2021-07-29 17:16:58 572

原创 NGINX Ingress Controller 配置代理外部服务

NGINX Ingress Controller 配置代理外部服务背景说明前端工程,在开发环境配置了本地代理上线后需要服务端设置代理;传统的nginx环境则直接配置如下即可location /tencent-mapapi/ { proxy_redirect http:// $scheme://; #做https跳转; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; prox

2021-07-29 15:17:00 3295 2

原创 Keycloak自定义实现第三方登录

Keycloak自定义实现第三方登录第三方Oauth登录由于对接的第三方IDP不一定都是标准的openid connect实现,所以都需要根据第三方的Oauth文档进行定制;Keycloak对于新增Social IDP的实现,都是标准,以及灵活的;我们完全可以参照 Keycloak 本身已实现的Github LinkedIn等,快速实现我们的需求;我们这里以酷家乐的Oauth2 接口进行说明酷家乐 Oauth2接口分析请求code的参数及返回都是标准的,这里无需进行修改换取token接

2021-07-26 17:45:39 6099 10

原创 Keycloak实现手机验证码登录

背景说明使用Keycloak作为账号体系的项目中,经常会被问到Keycloak如何实现手机验证码登录,Keycloak有没有内置的基于短信的登录实现SMS-based two-/multi-factor-authentication (2FA/MFA) ;Keycloak目前只内置一种基于 Google Authenticator 的 2FA 选项。这篇主要讨论实现上述的需求的几种方案,以及相应的优缺点:定制 Authentication SPI,实现Keycloak统一的浏览器手机验证码登录

2021-07-23 11:02:12 5030 4

原创 自定义K8S nginx ingress 重定向配置

自定义K8S nginx ingress 重定向背景描述一个前端工程,此前采用的方案是:Nginx反向代理 + Docker 应用服务;后面统一升级为K8S方案:SLB + Nginx Ingress + K8s deployment迁移后,出现浏览器空白,控制台报错:Mixed Content: The page at ‘https://a.com’ was loaded over HTTPS, but requested an insecure resource ‘http://

2021-02-02 18:00:00 2180 1

原创 Springboot中结合Keycloak和Spring security 开启细粒度权限控制

Springboot中结合Keycloak和Spring security 开启细粒度权限控制背景说明Keycloak作为开源轻量级的统一账号管理系统,可以帮助我们快速搭建一个完整,安全的支持单点登录,开放平台,鉴权及授权的集中式账号管理系统。加上Keycloak的Authorization Services,提供给我们灵活强大的细粒度权限控制,而不再局限在角色访问控制。这篇文章重点在于,如何在springboot中集成spring security,以及keycloak,以及配置相关访问权限配置。

2021-01-05 15:37:47 2481 1

原创 WSL2 docker镜像存储位置修改

WSL2 docker镜像存储位置修改背景说明由于最新的windows提供了新的虚拟化技术,(WSL/WSL2)适用于 Linux 的 Windows 子系统;官方文档说明相应的docker也及时跟进了对WSL的支持,这是一个相当大的优化,尤其是增加了对windows家庭版的支持;Docker官方文档基于WSL2安装docker后,会发现大量的docker镜像文件,使系统文件C盘容量激增,所以我们需要手动修改docker的镜像地址保存到另外的非系统盘.处理步骤退出Docker桌面版

2020-11-30 14:28:29 8613

原创 WebAssembly 与 Rust 编程系列06 Rust模块与JavaScript交互

WebAssembly 与 Rust 编程系列06 Rust模块与JavaScript交互About: 简介上一篇文章: WebAssembly 与 Rust 编程系列05 Rust编写wasm模块我们介绍了最简单的 Rust 导出wasm模块,并在js中加载调用接下来我们会在此基础上, 更加深入的了解 Rust 与 JavaScript 的交互, 以及 Rust 和 WebAssembly 相关生态工具的应用wasm-bindgen 使用wasm-bindgen的核心是提供javascript

2020-07-02 21:02:35 1079

原创 WebAssembly 与 Rust 编程系列05 Rust编写wasm模块

WebAssembly 与 Rust 编程系列05 Rust编写wasm模块Rust 开发环境安装官方的下载链接下载 rustup-init.exe 点击安装完成之后会在我们的用户Home目录添加两个文件夹.cargo/bin: cargo 及 rust 相应的命令行工具.rustup: rust的配置目录其中 cargo 是 rust的包管理工具,类似npm之于node,maven之于java,composer之于PHP检查安装C:\Users\admin>rustc --v

2020-07-02 20:56:04 1435

原创 WebAssembly 与 Rust 编程系列04 WebAssembly模块的加载和运行

WebAssembly 与 Rust 编程系列04 WebAssembly模块的加载和运行About: 简介前两篇文章中:WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用WebAssembly 与 Rust 编程系列03 手撕 WebAssembly 文本格式我们手写了简单的wat代码,以及生成对应的wasm 二进制模块;本篇文章主要演示下:如何在js中加载和使用这些模块;这里我们只是用最简单示例,并没有多大工程参考意义,仅仅是演示WebAsse

2020-07-02 20:54:59 412

原创 WebAssembly 与 Rust 编程系列03 手撕 WebAssembly 文本格式

WebAssembly 与 Rust 编程系列03 手撕 WebAssembly 文本格式WebAssembly 文本格式存在的意义WebAssembly 文本格式是wasm二进制格式与开发人员调试,测试的中间形式;WebAssembly 的目标中,可读、可调试是非常重要的一点,而WebAssembly 文本格式是实现这一目标的重要方式;虽然我们在开发过程中,并不是需要直接面对这些中间形式的文本格式,但是如果你拒绝黑盒,或者想优化wasm模块以及构建自己的WebAssembly编译器,那么花点时间

2020-07-02 20:54:02 259

原创 WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用

WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用About: 简介工欲善其事, 必先利其器;上一节WebAssembly 与 Rust 编程系列01 WebAssembly 是什么我们讲了 WebAssembly 的一些基本概念, 讲到了WebAssembly一个重要的目标就是:可读,可调式实现这一目标的基础,就是要配置好相关的工具,这里最基本的就是 wabtwabt-github本篇文章主要介绍wabt 的特性wabt 的编译安装wa

2020-07-02 20:52:43 869

原创 WebAssembly 与Rust编程系列01 WebAssembly 是什么

WebAssembly 与Rust编程系列01 WebAssembly 是什么Background: 背景说明在经历过前几年React Angular Vue 三大开发框架的颠覆性的变革后, 当前web最火爆的技术应该一多半会在 WebAssembly上;随着 WebAssembly Post-MVP 标准的逐渐完善, 以及 谷歌和 Mozilla 对 WebAssembly 极尽所能的推广,都可以看出 WebAssembly 即将在未来一两年大放异彩.如果把眼光脱离开 web 的局限, Wasm

2020-07-02 20:51:22 316

原创 Pytorch使用optim模块训练线性回归模型

Pytorch使用optim模块训练线性回归模型About-简介在上一篇中利用PyTorch Autograd自动求导训练线性回归模型我们完成的程序,其实还有进一步优化的空间,主要使用的就是PyTorch optim模块所以我们本篇文章主要讲述通过optim模块优化此前的线性模型,主要包括以下几点:optim模块使用简介SGD 使用Adam 使用optim模块使用简介optim 是PyTorch中一系列优化算法的实现主要包括以下几个方法:import torch.optim a

2020-05-13 20:57:13 809

原创 利用PyTorch Autograd自动求导训练线性回归模型

利用PyTorch的自动求导训练线性回归模型About-说明第一篇文章中pytorch基础入门 训练原始的线性模型,我们用手动计算微分的方式,实现了基于Python语言的线性回归模型训练;这虽然非常适合理解相关概念,但是实现方式是非常原始的.在查看PyTorch相关文档时,很容易就发现它把 Autograd(自动求导) 作为一个突出的优势,所以这篇文章旨在了解 Autograd的概念上,实现上一篇文章的线性回归模型.归纳而言,这篇会相对简单,主要包含以下几点:PyTorch Autograd

2020-05-12 21:34:30 616

原创 libgdx中弹框组件如何阻止事件穿透到下层组件

libgdx中弹框组件如何阻止事件穿透到下层组件Background-背景说明项目组中反馈说,自己定制了一个libgdx的Dialog,但是出现事件会穿透到底层组件的问题;借此稍微看了下,libgdx以及scene2d的事件机制所以这篇文章的内容包括以下几点:libgdx的事件简介scene2d/stage事件处理机制阻止事件穿透的两个核心点scene2d/window组件的实现举例libgdx的事件简介不同平台有不同的输入设备,以及不同设备之间支持的输入属性是不同的;通常来说:

2020-05-12 12:33:47 372

原创 pytorch基础入门一: 训练原始的线性模型

pytorch基础入门一: 训练原始的线性模型Backgroud 背景说明由于公司业务需要(基于单张全景图的三维场景重建),从五一开始拾起了神经网络的学习;嗯!这个月的flag就是五月份完成业务模型的技术验证;搜索到的几篇文章,都是基于PyTorch搭建的模型,那理所当然也就踏入PyTorch的世界;按照以往的学习习惯,一切从官网文档开始入手;看 官网入门指南 第一节讲tensor的主要操作,这一部分理解起来问题不大,就是一些细节需要在具体使用中熟悉;第二节 AUTOGRAD 自动求导,也能明白个

2020-05-11 14:45:12 797

原创 Python 中用matplotlib 画出 numpy.random.beta分布

Python 中用matplotlib 画出 numpy.random.beta分布Background 背景说明在学习中碰到beta分布, 刚好又在熟悉 numpy 以及 matplotlib 库,所以干脆就拿 matplotlib 实现 beta 分布作为练手所以本篇文章主要包含以下几点:熟悉Beta分布matplotlib 画 Beta分布图matplotlib 各属性设置matplotlib 支持中文标题Β分布Β分布在概率论中,Β分布也称贝塔分布(Beta distri

2020-05-11 11:47:56 9706 1

原创 WebGL编程指南入门基础篇

WebGL编程指南笔记-入门基础篇着色器介绍着色器分为顶点着色器 跟 片元着色器顶点着色器描述顶点特性,包括位置,颜色等片元着色器进行每个片元的处理过程,如光照等;在三维场景中,仅仅用线条和颜色把图形画出来是远远不够的从js文件到浏览器渲染结果的处理流程示意图画点多基本缓冲区模型颜色缓冲区: gl.COLOR_BUFFER_BIT深度缓冲区: gl.DEP...

2019-04-28 22:02:18 1425

原创 修改Android模拟器为Hyper-V虚拟化,兼容Docker环境

windows10中Android模拟器与docker环境要求的虚拟技术冲突解决问题所在Android需要的模拟器环境为 Intel HAXMDocker 需要的环境为hyperAndroid 模拟器10:41 Emulator: emulator: ERROR: x86_64 emulation currently requires hardware acceleration!10...

2019-01-02 12:10:20 25414 2

原创 Android 优化OTA包大小和开机启动时间

问题说明在Android 升级到 5.0 (Lollipop/L)之后,虚拟机实例换成了ART,这加快了应用运行时的速度,但是在系统升级中却引入了一些不便之处:在生成升级包时,因为ART采用了预编译优化功能,会把 APK 及JAR等通过dex2ota预编译成odex文件,这样极大的增加了升级包的大小,动辄上G的大小不方便用户的下载和网络的传播;如果不进行预编译优化,则这部分操作会转移到刷机完成后

2017-03-10 11:16:18 4282

原创 Android Recovery 源码解析和界面定制

Android Recovery 源码解析和界面定制Recovery主要功能源码路径和主要原文件recoverycpp命令行参数main 函数界面定制实现Recovery UI实现头部显示和列表项实现ScreenRecoveryUI实现设备类添加编译实现Android Recovery 源码解析和界面定制Recovery主要功能深入了解recovery源码前,先浏览下recov

2017-02-15 18:12:12 7508 2

Android-APK 一键自动反编译工具

工具采用baksmali和smali以及dex2jar脚本工具,解压apk文件并处理成jar包文件,提供给jd-gui程序打开,方便破解apk以及源码阅读;

2017-01-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除