SpringAI 从0.5到1
SpringAI 从0.5到1
为什么是从0.5到1呢,因为Ollama的过程我就不再赘述,网上的教程也很多,本篇将使用Ollama+SpringAI进行叙述。
开始
创建一个SpringAI项目
你可以使用SpringIO的QuickStart,我这里贴出我的Pom(主要的一些东西)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId></dependency><dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-ollama-spring-boot-starter</artifactId></dependency><dependency> ...
WebFlux踩坑实录
WebFlux踩坑实录
从WebMVC升级到WebFlux之后有一些东西都不能按照之前的思维来做
如何从MVC到Flux
去除
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>
添加
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId></dependency>
转到Flux之后你需要知道的事情
响应式编程,需要一个订阅,你的流才能流动。
Flux响应式编程,可以理解为全走了异步线程池,所以你的代码需要返回一个Mono或者Flux。
什么是Mono,什么是 ...
FinOps实践--OptScale从0到1
什么是FinOps
FinOps 是一种用于优化云资源使用和成本管理的实践。它通过监控、分析和优化云资源的使用,帮助企业降低成本并提高效率。
什么是OptScale
OptScale 是基于 Kubernetes 的云原生监控和成本管理工具。它可以帮助企业监控云资源的使用情况,并提供成本分析和优化建议。
部署
OptScale 部署前注意
一定要遵循官方文档使用Ubuntu进行部署,使用CentOS部署会绝对失败,因为官方的部署程序中很多都是用Ubuntu的内部命令
需要准备一台可以连接外网的机器,因为部署过程中需要下载很多东西
配置一定要高最低配8c16g,推荐16c32g
开始部署
环境准备
安装基础依赖
# 安装基础依赖sudo apt update; sudo apt install python3-pip sshpass git python3.9-venv python3.9-dev python3.9 -y
克隆仓库
git clone https://github.com/hystax/optscale.git
进入部署目录
cd optscale ...
Mvnd高速打包
背景
我司使用的是Java8+Maven3.6.3
为什么要使用mvnd来进行打包,因为我们的项目在进行整合之后,module的数量来到了59个,使用Intel® Core™ i9-9980HK CPU @ 2.40GHz 64GRAM 来进行打包还需要至少2min的时间,使用公司的打包服务器需要10min,已经成为了痛点
首先安装Maven-mvnd
brew install mvndaemon/homebrew-mvnd/mvnd
安装完成之后查看是否成功
mvnd -version
使用mvnd进行打包,与原生mvn的命令用法是相同的,不过是将mvn变为了mvnd
mvnd clean package -Dmaven.test.skip=true
如何使用IDEA集成mvnd呢?有开发用户已经给IDEA提出过,是否可以将mvnd配置在IDEA中,让开发人员原生使用,但是IDEA的官方明确回复maven已经达到原生支持,可以使用另外的shell插件来实现maven的编译。
简而言之就是一键运行脚本,哈哈有点鸡肋
使用原生maven
使用mvnd
踩坑
第一个问题
使用 ...
一键复制Jira信息
一键复制Jira信息
背景
为什么我需要一个这样的工具
我在记录工作流水账的时候需要记录每个处理过的问题在md下我需要
[Jira标题 Jira编号](Jira地址)
这样三部分组成的问题地址,每次都要手动输入,太麻烦了,所以有了这个油猴插件
效果图
拼接1处和2处获得需要的格式 代码为了http做了粘贴到剪切板的兼容
代码
// ==UserScript==// @name Jira复制我的记录TXT// @namespace// @version 0.1// @description// @author loveliness// @match 改为你公司的jira地址// @icon http://q1.qlogo.cn/g?b=qq&nk=1695560542&s=640// @require https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js// @grant unsafeWindow// @license M ...
电动车充电器灌胶+延长线
背景
因为电动车充电器在什么地方充电都不是很顺畅,电源线太短了,需要将电动车推到和插座非常近的地方,但是很多小区车非常多,没有空余的地方,所以就需要改一条延长线。
为什么还需要灌胶呢,我之前的充电器在经历过北京的长时间大雨肆虐之后彻底坏掉了,拆开看里面的都已经生锈了,灌胶可以防尘防水防震。
准备工作
电烙铁(不想从中间接线,打算直接将线焊到板子上)
2M的电源线+二孔插头一个(延长线原材料)
灌胶
动手操作
使用Y型螺丝刀拆下充电器背面的两颗螺丝,扣开充电壳,打开充电器
找到链接电源的那一边,使用电烙铁更换电源线
配置灌胶,我是用的灰色软硅胶(一定要买软的,否则安装的时候不好安装)按照1:1的重量配置
不要把这东西弄的那里都是(血的教训,我心爱的鼠标垫搞了黑黑一大片)
找个容器正好可以装下充电器的电路板,中间铺上塑料,直接浇给
浇给之前最好把电路板的两个孔堵住,要不然安装的时候找不到位置了
我是已经浇给了之后才想起来这件事情,牺牲了一双筷子
静置一晚上拿出来看看效果(商家说24H达到最佳固化)
用刀子适当削下胶,能放进去壳子里面就彳亍
装之前给延长线 ...
Arthas排查Prometheus请求慢
背景
线上突然出现很多的异常,发现是普罗米休斯在采集指标的时候设置的时间太短,倒是10s之内还没有返回消息直接断开连接导致的异常
注解@WebEndpoint(id = "prometheus")标识在PrometheusScrapeEndpoint上面,其实@WebEndpoint 就相当于声明成一个@RestController的控制类。
当/actuator/prometheus请求进来之后就会请求到PrometheusScrapeEndpoint里面,我们可以看到在scrape方法上有个@ReadOperation(producesFrom = TextOutputFormat.class)注解
/** * {@link Endpoint @Endpoint} that outputs metrics in a format that can be scraped by the * Prometheus server. * * @author Jon Schneider * @author Johnny Lim * @since ...
ESP32-LyraT-Mini从0开始的烧录教程
我使用的是Mac系统,之前使用过Arduino玩过Esp8266并且加了个屏幕(只是玩玩,没有很深),这次搞到了一个ESP32-LyraT-Mini,也是简单入个门。
准备工作
安装ESP-IDF
安装ccache,ccache是一个编译器缓存,该工具会高速缓存编译生成的信息,并在编译的特定部分使用高速缓存的信息,可以加速编译的速度。brew install ccache
安装 CMake 和 Ninja 编译工具brew install cmake ninja dfu-util
确定已经安装python3python3 --version
如果没有安装执行brew install python3
拉取ESP-IDF的代码mkdir -p ~/espcd ~/espgit clone --recursive https://github.com/espressif/esp-idf.git
TO BE CONTINUED
参考文档
ESP32-LyraT-Mini V1.2 入门指南
ESP-IDF 版本简介
Set up
Linux更新之后Systemd启动SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE
在一次Manjaro的日常更新之后,事物当时确实是更新失败了,是一个应用更新失败了,和内核更新无影响,但是重启后系统启动失败,报下面的错误
D: recovering journalD: clean 1969453/15630336 files, 56589956/62515748 blocks Refusing to run under cgroup v1, SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1 not specified on kernel comnand line.1.520240] systend[1]: Freezing execution.
原因分析
电脑更新了systemd的新版本,但是可能因为事物的问题没有添加上启动参数,新版本的systemd不支持cgroup v1,需要启动参数开启兼容模式
* Support for cgroup v1 ('legacy' and 'hybrid' hierarchies) is now considered obsolete and system ...
Google Auth 迁移到 Chrome 拓展程序
公司日常开发有很多时候需要用到两步验证,目前我的两步验证码是保存在手机上面的Google Authenticator。
每次登陆的时候都需要打开手机进行验证很麻烦。决定找一个能在电脑上面使用两步验证的app。
因为不想删掉之前的两步验证重新添加,所以还需要能迁移过去。
需求点
能够从Google Authenticator迁移到新寻找的App上面。
免费。
在App Store上面找到了几款应用介绍非常不错的,并且还能有TouchID来解锁的功能,兴致冲冲去下载之后发现要内购。
没错这几个都要钱
找了一圈Crack也没有找到,无奈之下找到了个Chrome的拓展程序,也可以进行迁移导入 。
先上链接
选择导入备份之后
在Google Authenticator点击转移账号,将生成的二维码截图或者拍照
我尝试使用QRCODE导入,但是识别不到。
最终使用了扫描二维码出来的内容,使用导入备份文本解决的。