ARTS(2025.06.09~2025.06.15)(arts in society 2025)
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),大模型通过意图识别,从工具的描述中判断出是否需要调用某个工具 |
2025-06-10 | 1. 模型上下文协议(Model Context Protocol):基本概念 |
2025-06-11 | 1. 工具调用实战,RandNumberTools,大模型调用生成随机数的工具生成指定范围内的指定个数的随机数,从结果上不使用工具调用也可以生成,只是通过这个例子来实战一下工具调用 |
2025-06-12 | 1. 要使用 MCP,首先需要创建McpClient,它提供了与 MCP server 的同步和异步通信能力。 |
2025-06-13 | 1. 使用Spring AI MCP Server Starter实现MCP服务端,主要包括以下两种场景: |
Share:分享一篇有观点和思考的技术文章
平时阅读的一些技术类文章
- 原文链接:<左耳听风>专栏
- 最近把 <左耳听风> 专栏的所有文章都看完了,ARTS打卡学习就是从这里面学到的一种方法。
先说一下执行ARTS的感受(当然到目前为止这才是第二周),对执行力的要求很强,比如算法、阅读英文技术文章等,如果不真实的去做的话,那就相当于没完成。所以这个是对执行力很好的一种锻炼方式。
对该专栏的总结,可以当做一个技术学习大纲并在此基础上扩展学习,其中也提到了很多扩展资源,嗯,是很多很多,学习之路是没有尽头的。可能专栏中有些提到的技术不再流行了,但是学习方法是可以借鉴的。从中也感受到了作者真的是很厉害的一个人,应该是习惯很好而且很自律的一个人。
最后,摘录几段该专栏中印象较深的内容:
- 我完全没有必要通过打工听人安排而活着,而是反过来通过在公司工作提高自己的技能,让自己可以更为独立和自由地生活。
- 会挣钱的人一定是会投资的人。我一直认为,最宝贵的财富并不是钱,而是你的时间,时间比钱更宝贵,因为钱你不用还在那里,而时间你不用就浪费掉了。你把你的时间投资在哪些地方,就意味着你未来会走什么样的路。所以,利用好你的时间,投到一些有意义的地方吧。
- 要学好这些软件开发和设计的方法,你真的需要磨练和苦行,反复咀嚼,反复推敲,在实践和理论中螺旋式地学习,才能真正掌握。
- 学习是一件“逆人性”的事,就像锻炼身体一样,需要人持续付出,会让人感到痛苦,并随时想找理由放弃。
- 山外有山,楼外有楼,人活着最怕的就是坐井观天,自以为是。因为这样一来,你的大脑会封闭起来,你会开始不接受新的东西,你的发展也就到了天花板。开拓眼界的目的就是发现自己的不足和上升空间,从而才能让自己成长。