Redisson
核心APIRedisson 最值得掌握的 API,可以按用途分成以下几类。 业务场景 核心 API 典型用途 普通缓存、对象存储 RBucket 缓存用户信息、开关配置、幂等标记 Hash、带过期时间的 Map RMap、RMapCache 用户属性、分布式缓存 Set、List、排序集合 RSet、RList、RScoredSortedSet 去重、列表、排行榜 原子计数 RAtomicLong 计数器、序号 分布式锁 RLock 防止并发重复操作 公平锁、读写锁 RFairLock、RReadWriteLock FIFO 加锁、读写互斥 信号量 RSemaphore 限制同时执行的任务数 分布式限流 RRateLimiter 接口限流、控制调用频率 队列 RQueue、RBlockingQueue...
深度学习基础
一、代码练习1. 张量张量是深度学习模型训练的基本数据类型,之后的样本,训练模型都基于该数据结构进行计算,一维张量称为向量,二位张量是矩阵定义向量基本操作:使用torch.tensor1234567import torchx = torch.tensor(666) # 一维张量y = torch.tensor([1, 2]) # 向量z = torch.ones(2, 3) # 矩阵normal = torch.ones(2, 3, 4) # 可以是任意维度的矩阵 创建基本方法1234567891011121314import torchx = torch.ones(2, 3) # 全一y = torch.zeros(2, 3) # 全0z = torch.eye(2, 3) # 创建单位矩阵# 按照规律创建f = torch.arange(0, 10, 2) # arrange(start, end, step) 从start开始到end,每步间隔stepp = torch.linspace(0, 1, 5) # 在区间内均匀取点:[0, 0.25, 0.500,...
Netty
Netty 是 Java 后端开发中非常重要的高性能网络通信框架。尤其是你正在设计的 IM 系统,如果需要实现 WebSocket/TCP 长连接、心跳检测、消息编解码、连接管理和服务端推送,Netty 是值得深入掌握的技术。 一、Netty 是什么?Netty 是一个基于 Java NIO 的异步事件驱动网络应用框架,可以用于构建 TCP、UDP、HTTP、WebSocket 等网络应用。 二、版本选择与 Maven 依赖12345<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.2.19.Final</version></dependency> 三、Netty 核心架构Netty 最重要的四个概念是: 1. Bootstrap启动器。客户端使用 Bootstrap,服务端使用 ServerBootstrap。 2....
RAG
存在意义使用langchain或者其他框架操作prompts,总是希望模型能够记忆之前用户和模型对话的关键信息,但是大模型作为一个续写的深度学习模型不会自带记忆,需要有对应的外加操作来保存历史对话和从历史对话中检索相似或者有关的信息拼接prompts,存储消息的方式可以和后端存储数据一样,于是有了向量数据库,将历史对话做分词,分词映射成向量,组合形成向量数组,存储到向量数据库中并检索匹配的操作,即RAG 基本流程包裹索引, 检索和生成 索引阶段 将用户的语言按照一定数据源(可以自己定义),将其切分成标准长度的文本块(chunk),进行向量化嵌入(embedding),存储在向量数据库中 加载文件 内容提取 文本切割 文本向量化 存向量数据库 检索在向量数据库检索相似的前topk个文本块,将文本块拼接在调用的message里面,询问大模型 生成对应的response,根据自己定义的数据格式或者根据返回可以做后续操作 embedding向量化的细节操作 离线流程: 知识和信息 -> 嵌入化 -> 存入数据库 在线流程: 询问 ...
langchain基本使用
LangChain 基础入门:模型调用、Prompt 模板与链式编排环境准备1pip install langchain langchain-community langchain-ollama dashscope chromadb 各依赖的作用如下: langchain:LangChain 核心框架 langchain-community:社区维护的模型、工具、加载器等 langchain-ollama:调用本地 Ollama 模型 dashscope:调用通义千问、DashScope 相关能力 chromadb:向量数据库,常用于文档检索和记忆存储 如果你使用 OpenAI 或其他在线模型,还需要额外安装对应 SDK,并配置 API Key。例如 OpenAI 通常需要设置环境变量 OPENAI_API_KEY。 如果你调用的是通义千问,通常需要提前配置 DASHSCOPE_API_KEY,并注意网络代理问题;有些环境下开代理可能会导致请求失败。 LangChain 是什么LangChain 可以理解为一个“LLM...
openai库基本使用 --其他框架的起源
介绍openai库提供了各种语言调用llm的基本操作,封装了网络请求,消息序列化等中间操作LangChain 或 OpenAI SDK 在底层调用模型时,使用的是 HTTP + JSON 的方式进行通信。请求会被序列化为 JSON 格式,通过 HTTP POST 发送到模型服务端;服务端返回的结果同样是 JSON,再由 SDK 解析成 Python 对象。在流式输出场景下(stream=True),则采用 Server-Sent Events(SSE)协议,将模型生成的内容按 token 分块传输,每一块依然是 JSON 格式。这种“HTTP + JSON”的组合已经成为大模型 API 的事实标准,原因在于其简单、通用、易调试,并且方便不同厂商之间做兼容实现。 基本调用12345678910111213141516171819202122232425import os from openai import OpenAI from pprint import pprint try: client = OpenAI( #...
分布式事务
为什么要有分布式事务? 跨服务协同时候,例如订单从提交到检测到调用财务系统到更新用户系统,这些操作需要保证原子性,没有事务串起来的话中间崩了会导致操作丢失 数据库过大,做了分库分表,要统一对多个数据库进行操作 分布式事务解决方案 2PCprepare() commit() 准备和提交阶段,操作时候,服务端向本次事务的参与端发送一个prepare()命令,参与者准备完毕返回ack,所有参与者准备完毕了才可以进行下一阶段操作第二阶段是commit / abort操作,分为回滚和提交,协调者检查第一阶段参与者提交的prepare消息,如果第一阶段有任何一个参与者ack返回的是失败状态,返回参与者abort状态,否则执行commit返回结果 2PC作为强一致性协议,存在单点阻塞问题,因为协调者是单点的,如果协调者出现故障,也有几个情况 如果所有参与者事物都提交了prepare,且此时事务没有提交,那么可以选举新的协调者提交 如果由于网络原因部分参与者提交,部分没有成功提交,此时换上新的协调者并不能得到所有参与者的prepare消息,但是网络原因参与者的prepare...
HTTP缓存
缓存前端要控制请求接口的次数时候使用,当某个接口短时间内不断读取,但是数据却不需要一直变化,频繁请求接口会使性能下降,应该采取一些缓存策略 强制缓存http1.0 强制缓存通过请求头的expires实现,看一个例子![[{0178FA88-3861-452D-B53D-C26F03351AB6}.png]]访问/img/01.jpg 时候,在请求后返回了头expires的时间,expires是一个时间戳,当当前时间戳大于expires,就重新请求接口并写expires,否则直接使用缓存的数据返回,这样有一个问题,这个时间是根据客户端的手机时间进行判断,但是客户端和服务端的时间可能出现不一致,例如手机设定或者客户端自己修改时间等,这样太过依赖时间戳,于是映入了cache-control http1.1...
