一、场景题
1.优化和使用limit语句
有limit10 和limit 10000,10的用法
select * from User where id>10 limit 10
select *from User where id>10 limit 10000,10
直接用第二种会扫描10000+10的结果
可以的优化是使用 offset 10000、使用覆盖索引避免回表查询一些内容、使用游标的分页、使用子查询
2.slow_query_log的意义
分析性能瓶颈、分析慢查询的日志、检查没有被用到的索引、优化索引查询的设计
二、Redis实战相关
1.CPU阻塞的操作
从四个角度去看Redis的操作,和客户端的互动,包括网络IO和增删改查,后者会阻塞;和磁盘的互动,包括写AOF日志和RDB存储,同步写AOF会阻塞;主从实例的传送,从库清空数据库重写;切片集群沟通哈希槽,信息沟通。
非关键操作:某些操作可以不必等待执行结束,可以返回,比如删除操作、清空数据库操作;而对于读和同步写是关键操作。
解决阻塞的方式是对于非关键操作(不需要把结果反馈给调用方)可以让子进程去操作,然后先返回,比如删除操作,对于读取操作必须阻塞。
2.Redis和CPU之间的影响
不只是cpu快redis就快,对于多核cpu,如果每次redis实例都是在不同的核,因为不同的核不共享l1、l2缓存,所以要重新读取,命中率低,因此有redis和物理核绑定的问题。
三、agent相关内容
1.多模态的agent分成多种,第一种是解耦的单独的比如图片模型去处理,然后输出给文字模型;最近的gemini是直接在训练的时候使用的是多模态的数据。
2.无论模型的上下文窗口增长的多大,仍然会有注意力稀释的问题,这一点和人是一样的,虽然可以关注很多东西,但是如果想要产生真知灼见就需要定位在真正重要的事情上。
昨日回顾:
1.多agent的必要性:解决上下文稀释,避免塞入过多内容;解决角色分离,更专业;解决角色和思维模式的冲突,避免出现既作为选手又当裁判的对抗。
2.agent的三要素,角色、协议和拓扑。
协议包括自然语言的自我思考的语言和与其他agent沟通的schema的结构化的语言,agent之间通信的协议存在的有A2A。
3.编译的过程
预处理、编译、汇编、链接
链接静态链接是在编译期间把库代码编译,链接,而动态链接是运行时加载,更小更可扩展。
4.两种map、unordered_map的区别是后者才是O(1)的
总结:Redis的相关的内容是从不影响可用性的角度提高性能,然后对于多核的cpu也是因为切换会影响性能。
agent相关的主要就是通信协议这个很有印象,想到了在学计网的时候比喻协议就好像人和人之间的语言。