一觉醒来全球计算机水平下降一万倍,本是黑马程序员出身的我一越成为万人之上
就在Vue宗主尤雨溪那句“逆天骄子”的感慨还在办公室的空气中回荡时,整个软通动力外包基地的上空,风云突变!
原本明媚的日光被一股无形的气息所遮蔽,天空仿佛被一层巨大的DOM树的阴影覆盖。所有程序员的心头都涌上一股莫名的压抑,仿佛……仿佛遇到了一个无法解决的生产环境BUG!
林凡的直属领导,那个曾经因为他写出一个嵌套三层的for循环而骂他“性能杀手”的项目经理王哥,此刻正哆哆嗦嗦地端着一杯水,想递给林凡,手却抖得像开了80个线程在跑一个死循环。
“林……林大师,”王哥的声音带着哭腔,仿佛看到了救世主,“您刚才那一手‘div居中’,简直是神技!是真正的‘HTML布局大道’啊!我为我曾经的愚昧向您道歉!我检讨!我不该搞什么敏捷开发,什么每日站会,那都是奇技淫巧,是旁门左道!只有您这‘div’,才是大道至简,返璞归真!”
林凡嘴角抽搐。
大哥,我就是写了个 text-align: center,你这感悟是不是太多了点?还上升到哲学高度了?
就在这时,办公室那扇被行政贴了“随手关门”的玻璃门,无风自开!
一道身影,背负双手,踏空……不,是踏着一个悬浮的平衡车,缓缓飘了进来。
来人身穿一件印着巨大 ...
360归档
    var camera, scene, renderer;
    var isUserInteracting = false,
        onMouseDownMouseX = 0, onMouseDownMouseY = 0,
        lon = 0, onMouseDownLon = 0,
        lat = 0, onMouseDownLat = 0,
        phi = 0, theta = 0;
    init();
    animate();
    function init() {
        var container, mesh;
        container = document.getElementById('panoview6138');
        var width = container.style.width;
        camera = new THREE.PerspectiveCamera(75, 2, 1, 1000);
        cam ...
A2A协议剖析
继AI MCP协议之后,Google又提出了一个新协议,A2A,全称为Agent-to-Agent,他允许一个Agent调用另一个Agent。
 简单使用
在官方A2A文档中,提供的Python和NodeJS的代码,本篇文章中使用NodeJS作为演示。
拉取官方示例代码,主要需要这两个文件夹的代码
编写服务端代码,其实就是包装一个Agent
我们需要new A2AServer创建一个A2A的服务端,他有两个入参TaskHandler和options
对于TaskHandler
这里不多说关于编程语言,在这个方法定义里你需要
确认当前Agent状态并且告诉taskStore来传递给客户端
实现Agent
编写客户端代码
我们需要new A2AClient创建一个A2A的客户端,他需要一个serverUrl,也就是服务端的地址
通过/.well-known/agent.json获取到服务端Agent的能力,这里返回的信息就是在服务端的card中定义的信息
通过client.sendTaskSubscribe调用服务端Agent sendTaskSubscribe是流式 ...
SpringAI + RagFlow的火花
 SpringAI + RagFlow的火花
嗨嗨嗨,时隔多日,喵喵又来更新了,为什么过了这么久才来补上SpringAI的Rag捏,因为项目更改方向了,用DIFY来构建智能体,操作确实简单,但是拓展上还是有一些局限的,所以到现在才来更新,这次更新直接上硬核的,两个不同的框架如何兼容
首先,RagFlow是什么,RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问 答以及有理有据的引用。 本文用到的仅限于使用其中的知识库功能
 开始
 SpringAI添加Rag功能
根据SpringAI的官方文档,我是用ES作为Rag驱动的向量数据库
 添加依赖
<dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-elasticse ...
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达到最佳固化)
用刀子适当削下胶,能放进去壳子里面就彳亍
装之前给延长线 ...




