<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[austindev的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/austindev</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; austindev]]></copyright><item><title><![CDATA[收藏！最完整的智慧城市管理平台实战方案（附架构图+核心代码+避坑指南）]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/157552485</link><guid>https://blog.youkuaiyun.com/austindev/article/details/157552485</guid><author>austindev</author><pubDate>Fri, 30 Jan 2026 17:48:18 +0800</pubDate><description><![CDATA[本文分享了一套完整的智慧城市管理平台实战方案，重点解决传统城市管理中数据孤岛、响应滞后、人工巡查效率低等问题。方案采用&quot;云边端协同、数据驱动&quot;的微服务架构，包含智能事件感知、一体化处置调度、大数据可视化等核心模块。关键技术包括：基于Spring Cloud Alibaba的微服务框架、Flink实时计算引擎、Vue3+Uni-app多端开发。特别详细讲解了视频AI识别模块的设计，通过消息队列实现算法与业务解耦，使事件识别准确率达92%，响应时间缩短至30秒内。该方案已在某市成功落地，显著]]></description><category></category></item><item><title><![CDATA[Vscode配置自动切换node版本]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/144408829</link><guid>https://blog.youkuaiyun.com/austindev/article/details/144408829</guid><author>austindev</author><pubDate>Wed, 11 Dec 2024 19:58:19 +0800</pubDate><description><![CDATA[开发环境安装了很多Node JS版本，项目经常切换也常常忘记了使用了什么版本，所以最好在打开项目terminal，安装依赖，启动项目前自动设置好版本。]]></description><category></category></item><item><title><![CDATA[Swagger接口返回JSON,Map的字段注释比较优雅的实现]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/126174795</link><guid>https://blog.youkuaiyun.com/austindev/article/details/126174795</guid><author>austindev</author><pubDate>Fri, 05 Aug 2022 11:51:46 +0800</pubDate><description><![CDATA[看很多小伙伴写的接口，既想要Map的灵活扩展性，又苦于生成的接口文档没办法把已知的字段解释清楚；导致接口文档效果打折扣，还得另行约定文档，或者直接嘴上沟通了事；目前使用Swagger2形成接口文档时，当系统设计的接口返回的类型不是实体对象时，Swagger2无法在接口文档页面中显示返回结果字段说明，比如返回json、map等可以存储key-val形式的类型；均无法在接口文档页面上显示返回的字段备注说明；所以怎么才能像实体对象一样显示正常的model字段说明是我们这次需要解决的问题；...]]></description><category></category></item><item><title><![CDATA[Keycloak自定义REST扩展-通过用户属性进行用户搜索]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/120851850</link><guid>https://blog.youkuaiyun.com/austindev/article/details/120851850</guid><author>austindev</author><pubDate>Tue, 19 Oct 2021 18:38:19 +0800</pubDate><description><![CDATA[Keycloak自定义REST扩展-通过用户属性进行用户搜索
需求背景
项目中用户和组织架构管理都是依托以Keycloak，但是Keycloak内置的用户搜索功能不满足需求，需要根据用户的属性值进行搜索，比如手机号；
Keycloak内置API能力代码走读
Keycloak 官方文档


看官方文档，貌似提供了search搜索查询

services\src\main\java\org\keycloak\services\resources\admin\UsersResource.java

model\j]]></description><category></category></item><item><title><![CDATA[Keycloak在集群中高可用部署]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/119249556</link><guid>https://blog.youkuaiyun.com/austindev/article/details/119249556</guid><author>austindev</author><pubDate>Fri, 30 Jul 2021 21:08:38 +0800</pubDate><description><![CDATA[Keycloak在集群中高可用部署
Keycloak集群部署
keycloak docker image中对于集群的相关描述
Keycloak-container readme

DNS_PING 发现模式
采用 DNS_PING发现的配置如下:
 - name: JGROUPS_DISCOVERY_PROTOCOL
   value: dns.DNS_PING
 - name: JGROUPS_DISCOVERY_PROPERTIES
   value: 'dns_query=keycloak-ha-sv]]></description><category></category></item><item><title><![CDATA[后端透传代理实现]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/119216139</link><guid>https://blog.youkuaiyun.com/austindev/article/details/119216139</guid><author>austindev</author><pubDate>Thu, 29 Jul 2021 17:16:58 +0800</pubDate><description><![CDATA[后端透传代理实现
参数设计

增加的一个target参数,用于表明需要代理的目标地址
其他query参数透传
header参数透传

代码实现
@RestController
public class HomeController {

    @GetMapping("/backend/proxy")
    public ResponseEntity&lt;?&gt; proxy(@RequestParam MultiValueMap&lt;String, String&gt; params, @Req]]></description><category></category></item><item><title><![CDATA[NGINX Ingress Controller 配置代理外部服务]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/119212028</link><guid>https://blog.youkuaiyun.com/austindev/article/details/119212028</guid><author>austindev</author><pubDate>Thu, 29 Jul 2021 15:17:00 +0800</pubDate><description><![CDATA[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]]></description><category></category></item><item><title><![CDATA[Keycloak自定义实现第三方登录]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/119113923</link><guid>https://blog.youkuaiyun.com/austindev/article/details/119113923</guid><author>austindev</author><pubDate>Mon, 26 Jul 2021 17:45:39 +0800</pubDate><description><![CDATA[Keycloak自定义实现第三方登录
第三方Oauth登录

由于对接的第三方IDP不一定都是标准的openid connect实现,所以都需要根据第三方的Oauth文档进行定制;
Keycloak对于新增Social IDP的实现,都是标准,以及灵活的;
我们完全可以参照 Keycloak 本身已实现的Github LinkedIn等,快速实现我们的需求;

我们这里以酷家乐的Oauth2 接口进行说明
酷家乐 Oauth2接口分析

请求code的参数及返回都是标准的,这里无需进行修改
换取token接]]></description><category></category></item><item><title><![CDATA[Keycloak实现手机验证码登录]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/119026515</link><guid>https://blog.youkuaiyun.com/austindev/article/details/119026515</guid><author>austindev</author><pubDate>Fri, 23 Jul 2021 11:02:12 +0800</pubDate><description><![CDATA[背景说明
使用Keycloak作为账号体系的项目中，经常会被问到Keycloak如何实现手机验证码登录，Keycloak有没有内置的基于短信的登录实现SMS-based two-/multi-factor-authentication (2FA/MFA) ;
Keycloak目前只内置一种基于  Google Authenticator 的 2FA 选项。
这篇主要讨论实现上述的需求的几种方案，以及相应的优缺点：


定制 Authentication SPI，实现Keycloak统一的浏览器手机验证码登录]]></description><category></category></item><item><title><![CDATA[自定义K8S nginx ingress 重定向配置]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/113568720</link><guid>https://blog.youkuaiyun.com/austindev/article/details/113568720</guid><author>austindev</author><pubDate>Tue, 02 Feb 2021 18:00:00 +0800</pubDate><description><![CDATA[自定义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://]]></description><category></category></item><item><title><![CDATA[Springboot中结合Keycloak和Spring security 开启细粒度权限控制]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/112235700</link><guid>https://blog.youkuaiyun.com/austindev/article/details/112235700</guid><author>austindev</author><pubDate>Tue, 05 Jan 2021 15:37:47 +0800</pubDate><description><![CDATA[Springboot中结合Keycloak和Spring security 开启细粒度权限控制
背景说明
Keycloak作为开源轻量级的统一账号管理系统，可以帮助我们快速搭建一个完整，安全的支持单点登录，开放平台，鉴权及授权的集中式账号管理系统。
加上Keycloak的Authorization Services，提供给我们灵活强大的细粒度权限控制，而不再局限在角色访问控制。
这篇文章重点在于，如何在springboot中集成spring security，以及keycloak，以及配置相关访问权限配置。]]></description><category></category></item><item><title><![CDATA[WSL2 docker镜像存储位置修改]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/110387609</link><guid>https://blog.youkuaiyun.com/austindev/article/details/110387609</guid><author>austindev</author><pubDate>Mon, 30 Nov 2020 14:28:29 +0800</pubDate><description><![CDATA[WSL2 docker镜像存储位置修改
背景说明
由于最新的windows提供了新的虚拟化技术，（WSL/WSL2）适用于 Linux 的 Windows 子系统;
官方文档说明
相应的docker也及时跟进了对WSL的支持,这是一个相当大的优化,尤其是增加了对windows家庭版的支持;
Docker官方文档
基于WSL2安装docker后,会发现大量的docker镜像文件,使系统文件C盘容量激增,所以我们需要手动修改docker的镜像地址保存到另外的非系统盘.

处理步骤



退出Docker桌面版
]]></description><category></category></item><item><title><![CDATA[WebAssembly 与 Rust 编程系列06 Rust模块与JavaScript交互]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/107093021</link><guid>https://blog.youkuaiyun.com/austindev/article/details/107093021</guid><author>austindev</author><pubDate>Thu, 02 Jul 2020 21:02:35 +0800</pubDate><description><![CDATA[WebAssembly 与 Rust 编程系列06 Rust模块与JavaScript交互
About: 简介
上一篇文章: WebAssembly 与 Rust 编程系列05 Rust编写wasm模块
我们介绍了最简单的 Rust 导出wasm模块,并在js中加载调用
接下来我们会在此基础上, 更加深入的了解 Rust 与 JavaScript 的交互, 以及 Rust 和 WebAssembly 相关生态工具的应用
wasm-bindgen 使用
wasm-bindgen的核心是提供javascript]]></description><category></category></item><item><title><![CDATA[WebAssembly 与 Rust 编程系列05 Rust编写wasm模块]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/107093013</link><guid>https://blog.youkuaiyun.com/austindev/article/details/107093013</guid><author>austindev</author><pubDate>Thu, 02 Jul 2020 20:56:04 +0800</pubDate><description><![CDATA[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&gt;rustc --v]]></description><category></category></item><item><title><![CDATA[WebAssembly 与 Rust 编程系列04 WebAssembly模块的加载和运行]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/107092985</link><guid>https://blog.youkuaiyun.com/austindev/article/details/107092985</guid><author>austindev</author><pubDate>Thu, 02 Jul 2020 20:54:59 +0800</pubDate><description><![CDATA[WebAssembly 与 Rust 编程系列04 WebAssembly模块的加载和运行
About: 简介
前两篇文章中:
WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用
WebAssembly 与 Rust 编程系列03 手撕 WebAssembly 文本格式
我们手写了简单的wat代码,以及生成对应的wasm 二进制模块;
本篇文章主要演示下:如何在js中加载和使用这些模块;
这里我们只是用最简单示例,并没有多大工程参考意义,仅仅是演示WebAsse]]></description><category></category></item><item><title><![CDATA[WebAssembly 与 Rust 编程系列03 手撕 WebAssembly 文本格式]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/107092958</link><guid>https://blog.youkuaiyun.com/austindev/article/details/107092958</guid><author>austindev</author><pubDate>Thu, 02 Jul 2020 20:54:02 +0800</pubDate><description><![CDATA[WebAssembly 与 Rust 编程系列03 手撕 WebAssembly 文本格式
WebAssembly 文本格式存在的意义
WebAssembly 文本格式是wasm二进制格式与开发人员调试,测试的中间形式;
WebAssembly 的目标中,可读、可调试是非常重要的一点,而WebAssembly 文本格式是实现这一目标的重要方式;
虽然我们在开发过程中,并不是需要直接面对这些中间形式的文本格式,但是如果你拒绝黑盒,或者想优化wasm模块以及构建自己的WebAssembly
编译器,那么花点时间]]></description><category></category></item><item><title><![CDATA[WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/107092940</link><guid>https://blog.youkuaiyun.com/austindev/article/details/107092940</guid><author>austindev</author><pubDate>Thu, 02 Jul 2020 20:52:43 +0800</pubDate><description><![CDATA[WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用
About: 简介
工欲善其事, 必先利其器;
上一节WebAssembly 与 Rust 编程系列01 WebAssembly 是什么
我们讲了 WebAssembly 的一些基本概念, 讲到了WebAssembly一个重要的目标就是:
可读,可调式
实现这一目标的基础,就是要配置好相关的工具,这里最基本的就是 wabt
wabt-github
本篇文章主要介绍

wabt 的特性
wabt 的编译安装
wa]]></description><category></category></item><item><title><![CDATA[WebAssembly 与Rust编程系列01 WebAssembly 是什么]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/107092810</link><guid>https://blog.youkuaiyun.com/austindev/article/details/107092810</guid><author>austindev</author><pubDate>Thu, 02 Jul 2020 20:51:22 +0800</pubDate><description><![CDATA[WebAssembly 与Rust编程系列01 WebAssembly 是什么
Background: 背景说明
在经历过前几年React Angular Vue 三大开发框架的颠覆性的变革后, 当前web最火爆的技术应该一多半会在 WebAssembly上;
随着 WebAssembly Post-MVP 标准的逐渐完善, 以及 谷歌和 Mozilla 对 WebAssembly 极尽所能的推广,都可以看出 WebAssembly 即将在未来一两年
大放异彩.
如果把眼光脱离开 web 的局限, Wasm]]></description><category></category></item><item><title><![CDATA[Pytorch使用optim模块训练线性回归模型]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/106106509</link><guid>https://blog.youkuaiyun.com/austindev/article/details/106106509</guid><author>austindev</author><pubDate>Wed, 13 May 2020 20:57:13 +0800</pubDate><description><![CDATA[Pytorch使用optim模块训练线性回归模型
About-简介
在上一篇中利用PyTorch Autograd自动求导训练线性回归模型我们完成的程序,
其实还有进一步优化的空间,主要使用的就是PyTorch optim模块
所以我们本篇文章主要讲述通过optim模块优化此前的线性模型,主要包括以下几点:

optim模块使用简介
SGD 使用
Adam 使用

optim模块使用简介

optim 是PyTorch中一系列优化算法的实现

主要包括以下几个方法:
import torch.optim a]]></description><category></category></item><item><title><![CDATA[利用PyTorch Autograd自动求导训练线性回归模型]]></title><link>https://blog.youkuaiyun.com/austindev/article/details/106085718</link><guid>https://blog.youkuaiyun.com/austindev/article/details/106085718</guid><author>austindev</author><pubDate>Tue, 12 May 2020 21:34:30 +0800</pubDate><description><![CDATA[利用PyTorch的自动求导训练线性回归模型
About-说明
第一篇文章中pytorch基础入门 训练原始的线性模型,我们用手动计算微分的方式,
实现了基于Python语言的线性回归模型训练;这虽然非常适合理解相关概念,但是实现方式是非常原始的.
在查看PyTorch相关文档时,很容易就发现它把 Autograd(自动求导) 作为一个突出的优势,所以这篇文章旨在了解 Autograd的概念上,实现上一篇文章的线性回归模型.
归纳而言,这篇会相对简单,主要包含以下几点:

PyTorch Autograd ]]></description><category></category></item></channel></rss>