一、场景题
1.数据库三大范式
第一是列不可拆分
第二是行唯一,由唯一索引确定
第三是除主键外的列都和主键直接相关,不要间接相关
(对于间接相关的可以分表)
在我的理解这些不是强制性的,是一些软件设计美感的东西,但是应该这么设计,比如对于一个人的地址信息应该每个等级如省级,市级都有列,这样方便检索。
对于第三个直接相关这样对于第一次看到数据库的人页容易理解和使用。
2.innodb 和 mylsam 的区别
支持事务和不支持事务
行锁和表锁
并发性能好和差
聚集索引和非聚集索引
非特殊测试验证默认用 InnoDB 的效果是比 MyLsam 好的,默认用这个。
3.http 响应状态码
1 开头是用户继续操作,2 代表成功,3 是重定向,4 是客户端错误,5 是服务端错误
403 是 forbidden,503 是服务端请求多限流
重定向错误比如域名已经换了,而客户端错误例如输入的域名是一个错误的不存在的域名。
二、关于 Redis
做一些计算的数据结构的选择
1.对于聚合计算
使用 set 的同时,在从库去聚合,避免阻塞主库
2.排序
使用 list 和 sorted set 都可以,sorted set 的排序不只适用于时间先后还可以手动设置,更好
3.判断签到与否的二值统计
使用 bitmap 位图
4.基数统计如统计有多少个人
使用单独的数据结构,但是如果追求准确性还是 set 更好
三、关于 langchain
尚硅谷学习笔记
1.基本的流程是在.env 存储 key、引入环境变量、初始化模型如使用 init_chat_model 或者 ChatOpenAI
然后通过.invoke 去调用
2.model 的参数,除了 api_key、base_url 和 model
temperature,靠近 0 输出就更稳定,靠近 1 就更具有随机性
max_tokens 可以决定模型输出都最大 token 数,模型输出截止是根据这个或者模型输出遇到结尾。
一个 token 大约等于 1.8 个汉字,3 到 4 个英文字符。
3.invoke 的调用是阻塞式的,等到模型返回结果才返回,除此之外还有非阻塞式的,还有 stream 的流式调用这些。
总结:看 langchain 的视频的时候想起来以前初学 c,其实现在回想很多视频讲的都是不会用到的,有重要和不重要的,但是当时不分优先级的去学,抓不住重点 靠的就是反复。现在有了大模型,可以让大模型告诉我如何重点学习,困惑少了,在不值得耽搁的细节耽搁的时间也大大减少了。