AI的概念

ref-nobody 创建时间 2025年4月28日 | 本文最后更新于 2025年5月3日 No Comments

模型 AI 模型是设计用于处理和生成信息的算法,通常模仿人类的认知功能。通过从大型数据集中学习模式和洞察,这些模型可以进行预测、生成文本、图像或其他输出,从而在各个行业中增强各种应用程序的功能。 有许多不同类型的 AI 模型,每种模型都适用于特定的用例。尽管 ChatGPT 及其生成式 AI 功能通过文本输入和输出吸引了用户,但许多模型和公司提供了多种输入和输出方式。在 ChatGPT 之前,许多人对文本到图像生成模型(如 Midjourney 和 Stable…

Read More

第一个Netty程序

ref-nobody 创建时间 2025年4月21日 | 本文最后更新于 2025年4月21日 No Comments

最近在看dubbo的源代码,看到了org.apache.dubbo.rpc.protocol.tri.TripleProtocol#refer方法通过exchange->transporter->client的链路获取到了表示客户端连接的Client对象,里面使用到了netty4。因此参考dubbo创建Client的流程写一个netty的示例程序。 服务端搭建 简单使用命令在本地启动一个监听端口的服务端程序:nc -l 30888 我这里监听的30888端口。 客户端搭建 示例代码: 结果验证 启动客户端程序之后,可以看到服务端成功打印客户端发送的请求:

Read More

Dubbo的spi代理对象生成原理

ref-nobody 创建时间 2025年4月13日 | 本文最后更新于 2025年4月26日 No Comments

前言 通过调试可以观察到dubbo中spi拓展生成的对象都有$Adaptive的后缀,例如protocol的spi实例化对象为: 下面来看看这个代理对象是如何生成的:首先我们获取spi的代理对象可以通过ExtensionLoader中的两个方法getExtension和getAdaptiveExtension来获取,这两者的区别是: – getExtension 方法用于获取指定名称的扩展点实现类实例; – getAdaptiveExtension 方法用于获取一个自适应的扩展点实例。这个实例会根据运行时的参数动态地选择具体的扩展点实现类;1. 在代码中,使用getExtensionLoader(type)首先会获取到对应类型的spi接口的ExtensionLoader实例,如果不存在则创建,并进行缓存存放到ExtensionLoader类的extensionLoadersMap成员变量中。创建对应类型的ExtensionLoader很简单,使用map的putIfAbsent方法,将new出来的ExtensionLoader放入缓存map中:extensionLoadersMap.putIfAbsent(type, new ExtensionLoader(type, this, scopeModel));2. 然后调用创建出来的ExtensionLoader的getAdaptiveExtension方法获取自适应的实例。创建的流程是首先动态生成自适应的spi类的java代码,即图中的code变量;然后对动态生成的代码进行编译Compile生成Class对象。有了Class对象之后,即可通过反射创建实例对象。…

Read More

Dubbo生成消费方接口代理对象

ref-nobody 创建时间 2025年4月13日 | 本文最后更新于 2025年5月13日 No Comments

消费者端接口引用 从消费者端来进行分析,定义消费者的接口的时候可以定义返回ReferenceBean的@Bean: @Bean@DubboReference(group = "demo", filter = "-mytest,refFilter1")public ReferenceBean<DemoService> referenceBean() { HashMap<String, Object> props =…

Read More

Macos中安装python后,python命令版本不一致的问题

ref-nobody 创建时间 2025年4月11日 | 本文最后更新于 2025年4月19日 No Comments

例如使用brew安装了python3.10之后,使用python3命令得到的版本却是3.9.6的版本: macOS 预装的 /usr/bin/python3 通常是较旧的 Python 3.x 版本(例如 Python 3.8 或 3.9),因为苹果倾向于使用稳定的系统版本,而非最新版。这是出于系统兼容性和稳定性考虑,不建议直接修改或删除系统自带的 Python。 查看python3的路径,可以知道是在/usr/bin下面。其实还有一个路径是/usr/local/bin,通过echo $PATH查看环境变量,可以看到/usr/local/bin在前,因此优先级高。…

Read More