ARTS(2025.06.09~2025.06.15)(arts in society 2025)

boyanx1周前技术教程2

Algorithm:每周至少做一个 leetcode 的算法题

因为在重新回顾 <数据结构与算法之美>专栏,所以从该专栏里面提到的算法题开始

如何利用数组实现LRU缓存淘汰策略呢?

package
com.kaesar.jike_time.shuJvJieGouYuSuanFaZhiMei.chp06;

import java.util.Objects;
/**
* 数组实现LRU缓存
*
* 处理步骤:
* 1. 如果数组为空,直接将新值添加到缓存中;
* 2. 如果数组不为空,则遍历数组,分为两种情况:
* 2.1. 在缓存中查找到了待插入的新值,则将 0~i-1 的数据挪到 1~i,然后将新值插入到缓存头
* 2.2. 在缓存中没有找到待插入的新值,则将 0~length-1 的数据挪到 1~length,然后将新值插入到缓存头
*
* 时间复杂度分析:因为需要挪动数据,所以最坏时间复杂度为 O(n)
*/
public class ArrayLRU<T> {
private T[] cache;
private Integer length;
private Integer capacity = 8;
public ArrayLRU() {
this.cache = (T[]) new Object[capacity];
this.length = 0;
}
public ArrayLRU(int capacity) {
this.capacity = capacity;
this.cache = (T[]) new Object[this.capacity];
this.length = 0;
}
public boolean get(T value) {
if (this.capacity <= 0) {
return false;
}
if (this.length == 0) {
cache[0] = value;
this.length++;
return false;
}
for (int i = 0; i < this.length; i++) {
if (Objects.equals(value, cache[i])) {
this.moveData(cache, 0, i - 1);
cache[0] = value;
return true;
}
}
if (this.length < this.capacity) {
this.length++;
}
this.moveData(cache, 0, this.length - 2);
cache[0] = value;
return false;
}
private void moveData(T[] array, int from, int to) {
for (int i = to; i >= from; i--) {
array[i + 1] = array[i];
}
}
public void print() {
for (int i = 0; i < this.length; i++) {
System.out.print(cache[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
ArrayLRU lru = new ArrayLRU(3);
lru.get("a");
lru.print();
lru.get("b");
lru.print();
lru.get("c");
lru.print();
lru.get("a");
lru.print();
lru.get("d");
lru.print();
lru.get("a");
lru.print();
}
}

Review:阅读并点评至少一篇英文技术文章

原文链接:9 AI Skills You MUST Learn Before Everyone Else Does (or Get Left Behind)

主要内容

1. Prompt Engineering: Your Shortcut to "Talking" with AI(好好学prompt技能,关键词:指定角色、提示示例、明确目标)
2. AI-Assisted Software Development: Build Apps Without Being a Coder(找到人们一直抱怨的问题 ,使用人工智能来构建解决方案,不仅可以构建方案,还可以实现。工具:Replit 和 Cursor 和 Trae)
3. AI Design & AI Art: Unleash Your Inner Creativity(将宝宝画的画变成更丰富的图案,工具:Midjourney、 Leonardo 和 DALL-E)
4. AI Video Editing: Make Magic Without the Tech Headaches(视频创作,工具:Runway ML 、 Pictory 和 Descript)
5. AI Writing: Turn Your Ideas Into Income(垃圾文的诞生,工具:ChatGPT 、 Jasper 和 Copy.ai 等等)
6. AI Content Marketing: Be Everywhere, Effortlessly(全民营销,工具:Taplio, Repurpose.io, and Hypefury 等)
7. No-Code AI Automation: Become a Workflow Wizard(工作流,消除重复性工作。规划好工作流程, 找出瓶颈, 然后让人工智能来处理繁琐的工作。)
8.AI Data Analysis: Turn Messy Data Into Gold(数据分析)
9.No-Code AI Agent Development: Build Digital Employees(AI 代理可以全天候工作, 从不抱怨 , 始终如一地交付成果。 如果你能定义一项工作,训练代理,并密切关注其表现,你就能取代重复性的工作,并获得丰厚的报酬)
Don't wait for AI to replace you. Be the person who builds the AI.(会用AI很重要)
You Don't Need to Master All 9, Just Start with One,Here's your shortcut:
- Pick a skill that excites you
- Watch a 10-minute tutorial
- Use an AI tool on something you actually care about
- Share your result online

个人感想:总结一下就是现在这个社会必须要学会AI,基本上方方面面都用得上,甚至整个人都有被替代的可能,当然想这么多没用。 实在一点就是梳理一下自己想做的,以及自己正在做的,哪些事情可以使用AI工具提效甚至完全替代。

Tip:学习至少一个技术技巧

这部分想着最近在学习AI,干脆就把记录的学习内容放在这里了,至少对于我来说都是新货、新技巧。

日期

内容

2025-06-09

1. 功能调用(Function Calling),大模型通过意图识别,从工具的描述中判断出是否需要调用某个工具
2. 可以基于新的创建工具,也可以将已有的接口包装成工具提供使用
3. 集成基本的函数式接口 Function<Request, Response>,可以使用注解对Request、Response以及工具方法进行功能描述以及参数说明
4.
https://www.weatherapi.com/my/,注册了天气助手平台,获取api-key,验证调试天气查询工具的使用

5. 工具实例:WeatherService,通过标准的工具创建方式,然后通过ChatClient在对话的时候注册工具回调
6. 工具实例:
GetCurrentTimeByTimeZoneIdService,通过将标准的工具创建方式,然后通过ChatClient在对话的时候添加到tools中,模型通过意图识别,在需要调用工具的时候调用查询当前时间

2025-06-10

1. 模型上下文协议(Model Context Protocol):基本概念
2. 工具调用示例:AddressController类中通过调用百度地图工具来获取地址信息,通过在ChatClient初始化的时候在工具回调方法中使用 toolDefinition 来添加方法的描述(应该是引导大模型在什么场景下取调用这个工具),然后还要配置相应的工具类和具体的工具方法
3. 工具调用示例:BaiduTranslateController,通过在类的构造方法中注入工具类,ChatClient初始化时直接在 toolNames 中添加工具名称,这种方式感觉更智能,不用指定具体的类和方法,大模型根据名称就判断出需要调用哪个工具
4. 工具调用示例:GithubtoolkitController,类似的方式,展示了查询仓库、获取issues、创建pull Request这几个工具的注入和使用

2025-06-11

1. 工具调用实战,RandNumberTools,大模型调用生成随机数的工具生成指定范围内的指定个数的随机数,从结果上不使用工具调用也可以生成,只是通过这个例子来实战一下工具调用

2025-06-12

1. 要使用 MCP,首先需要创建McpClient,它提供了与 MCP server 的同步和异步通信能力。
2. MCP关键组件:
a. MCP Client,与 MCP 集成的关键,提供了与本地文件系统进行交互的能力。
b. Function Callbacks,Spring AI MCP 的 function calling 声明方式。
c. Chat Client,Spring AI 关键组件,用于 LLM 模型交互、智能体代理。
3. 之前拉取的代码有缺失,重新拉取代码,构建运行
4. MCP与大模型交互过程:
a. 在与大模交互的过程中,ChatClient 处理相关的 function calls 请求
b. ChatClient 调用 MCP 工具(通过 McpClient)
c. McpClient 与 MCP server(即 filesystem)交互
5. Spring AI MCP支持两种不同的传输层实现:基于stdio的实现和基于SSE的实现。
a. stdio(标准输入输出)传输层是MCP最基本的传输实现方式。它通过进程间通信(IPC)实现
b. SSE(Server-Sent Events)传输层是基于HTTP的单向通信机制,专门用于服务器向客户端推送数据。
6. 今天主要是看了下MCP的基本概念和案例讲解

2025-06-13

1. 使用Spring AI MCP Server Starter实现MCP服务端,主要包括以下两种场景:
a. 基于stdio的MCP服务端实现:基于stdio的MCP服务端通过标准输入输出流与客户端通信,适用于作为子进程被客户端启动和管理的场景,非常适合嵌入式应用。
b. 基于SSE的MCP服务端实现:基于SSE的MCP服务端通过HTTP协议与客户端通信,适用于作为独立服务部署的场景,可以被多个客户端远程调用。
2. MCP服务端开发最佳实践,重点考虑以下几点:
a. 工具设计:使用注解描述清楚工具方法和参数
b. 错误处理
c. 性能优化
d. 安全考虑
e. 部署策略
3. 示例StockService,通过stdio模式创建MCP Server,测试用例直接通过配置读取jar包就可以获取到相应的工具

Share:分享一篇有观点和思考的技术文章

平时阅读的一些技术类文章

  1. 原文链接:<左耳听风>专栏
  • 最近把 <左耳听风> 专栏的所有文章都看完了,ARTS打卡学习就是从这里面学到的一种方法。
    先说一下执行ARTS的感受(当然到目前为止这才是第二周),对执行力的要求很强,比如算法、阅读英文技术文章等,如果不真实的去做的话,那就相当于没完成。所以这个是对执行力很好的一种锻炼方式。
    对该专栏的总结,可以当做一个技术学习大纲并在此基础上扩展学习,其中也提到了很多扩展资源,嗯,是很多很多,学习之路是没有尽头的。可能专栏中有些提到的技术不再流行了,但是学习方法是可以借鉴的。从中也感受到了作者真的是很厉害的一个人,应该是习惯很好而且很自律的一个人。
    最后,摘录几段该专栏中印象较深的内容:
    - 我完全没有必要通过打工听人安排而活着,而是反过来通过在公司工作提高自己的技能,让自己可以更为独立和自由地生活。
    - 会挣钱的人一定是会投资的人。我一直认为,最宝贵的财富并不是钱,而是你的时间,时间比钱更宝贵,因为钱你不用还在那里,而时间你不用就浪费掉了。你把你的时间投资在哪些地方,就意味着你未来会走什么样的路。所以,利用好你的时间,投到一些有意义的地方吧。
    - 要学好这些软件开发和设计的方法,你真的需要磨练和苦行,反复咀嚼,反复推敲,在实践和理论中螺旋式地学习,才能真正掌握。
    - 学习是一件“逆人性”的事,就像锻炼身体一样,需要人持续付出,会让人感到痛苦,并随时想找理由放弃。
    - 山外有山,楼外有楼,人活着最怕的就是坐井观天,自以为是。因为这样一来,你的大脑会封闭起来,你会开始不接受新的东西,你的发展也就到了天花板。开拓眼界的目的就是发现自己的不足和上升空间,从而才能让自己成长。

相关文章

百度搜索十年最大改版:文输入+AI视频生成,传统搜索时代终结?

百度搜索十年最大改版:文输入+AI视频生成,传统搜索时代终结?从“关键词匹配”到“智能管家”,百度这次改版让搜索框能写小作文、拍电影,网友:以后搜索靠“唠嗑”?当搜索框变成“话痨”7月2日,百度搜索突...

国内常用免费AI工具介绍(4.3)——腾讯元宝之“AI搜索”

现在的AI工具都提供一种“AI搜索”功能。相比传统搜索,AI搜索具有很多优势和特色。腾讯元宝的AI搜索功能是其核心功能之一,为用户提供了高效、精准的信息获取方式,本文为您介绍有关腾讯元宝的“AI搜索”...

陈希透露百度地图已接入ColorOS流体云 预计下周京东外卖也将适配

日前,OPPO ColorOS设计总监 @ColorOS陈希发微博宣布,百度地图App驾车导航已接入ColorOS流体云,而有意思的是,该条微博的评论区却被用户询问“京东外卖和淘宝闪购何时适配”的评论...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。