-
基于Ollama部署本地大语言模型 TOP NEW
1. 介绍 Ollama 是一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。我们安装好Ollama平台后,就可以在 该平台上运行相应的大模型,如:deepseek-r1,gemma3,qiwen等多种大模型,根据需求选中即可,Ollama支持多种大模型,详情可见官网。 2. 安装 Ollama 支持多种操作系统,包括 macOS、Windows、Linux 以及通过 Docker 容器运行。Ollama 对硬件要求不高,旨在让用户能够轻松地在本地运行、 管理和与大型语言模型进行交互。 CPU:多核处理器(推荐 4 核或以上)。 ... Read More
-
Spring AI集成本地大模型应用(一) TOP NEW
1. 相关概念 Spring AI 项目旨在简化包含人工智能功能的应用程序的开发,避免不必要的复杂性。Spring AI 解决了人工智能集成的基本挑战:将企业数据和 API 与人工智 能模型连接起来。Spring AI 目前支持处理语言、图像和音频输入输出的模型。 1.1 Prompts Prompt是语言模型的输入基础,例如Chat-GPT,我们向它输出一段话,并要求它回答,这段话就是一个prompt,你以为这就是全部?prompt实际上可能远不止于 此,在许多的AI模型中,提示的文本不仅仅是一个简单的字符串,一句话。 Chat-GPT的API在一个prompt中有多个文本输出,每... Read More
-
SpringAI之RAG构建本地知识问答系统(二) TOP NEW
1. 概念 RAG(Retrieval Augmented Generation 检索增强生成)是一种用于将本地数据纳入聊天模型中进行提示,以提升 AI 回答的准确性。例如我们想问一个聊天 模型:张三是谁?由于聊天模型中没有对应的知识,模型就不知道怎么回答我们的问题。RAG技术就可以让我们把张三的个人信息嵌入到上下文中,供聊天模型参考, 这样它就可以回答我们的问题了。通常我们向AI模型中引入私有的数据有三种方式: 微调:传统机器学习方法,通过调整模型内部权重来定制模型。这一过程非常复杂且资源消耗极大,并且部分模型不支持微调。 提示填充:将私有数据嵌入到提示中,用技术手段在上下文... Read More
-
Spring AI之MCP的集成和使用(三) TOP NEW
1. 什么是MCP 简单来说,MCP (Model Context Protocol就是一个使大模型更好的使用外部工具能力的协议, 它为应用程序向 LLM 提供上下文的方式进行了标准化。它就像一个标准的USB-C接口连接各种外设一样,将我们的AI应用程序和各种数据源与工具进行标准化连接。 MCP 为 AI 模型连接各种数据源和工具提供了标准化的接口,让AI可以轻松操作外部工具,完成更加复杂的任务,从而发挥真正的“工具调用”能力。 MCP是一个客户端-服务器架构,主机可以连接到多个MCP服务器,如下图所示: MCP架构中的几个角色说明如下: MCP Hosts: 如 Claude... Read More
-
OpenMPTCProuter前端页面修改部分介绍 TOP NEW
-
ubuntu18.04安装zabbix教程 TOP NEW
-
设计模式集合-代理模式 TOP NEW
1. 原理 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。 代理模式的主要作用是扩展目标对象的功能,比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作。 2. 静态代理 静态代理中,我们对目标对象的每个方法的增强都是手动完成的,非常不灵活。接口一旦新增加方法,目标对象和代理对象都要进行修改;需要对每个目标类都单独写一个代理类。 静态代理实现步骤: 定义一个接口及其实现类; 创建一个代理类同样实现这个接口; 将目标对象注入进代理类,然后在代理类的对应方法调用目标类中的... Read More
-
证书的概念及制作 TOP NEW
-
NFS安装及原理介绍 TOP NEW
-
深入理解JVM(四) TOP NEW
1. 概述 在前面的文章中我们介绍了JVM的运行时数据区,以及类加载的相关过程。在了解每一块内存区域的作用与类加载子系统之后,我们再来看看对象时如何创建和定位的。在语言层面,比如Java语言,我们创建对象通常是用一个关键字new来进行对象的创建,但是在虚拟机中,对象时怎么创建的呢?(注:这里所说的对象,限定于普通的Java对象,不包括数据和Class对象等) 2. 对象的创建 虚拟机遇到一个new指令时,首先对去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析、初始化。如果没有,那必须先执行相应的类加载过程。如果类加载检查通过后,... Read More
-
Windows环境下在Docker容器中运行一个Java服务 TOP NEW
1. 预备工作 了解Docker相关的基本概念,容器,镜像等。这里有一个中文版的Docker入门实践,介绍了docker相关的基本概念和知识。 已经安装好了docker服务并确保可用。本文基于win 10,这里是安装教程:Install Docker for Windows 准备好一个可用的Java服务(本文基于springboot建立的一个服务) 2. 开始 2.1 用Dockerfile制作基础的ubuntu14.04镜像 Dockerfile是我们用来构建和制作docker镜像的基本文件,它定义了镜像的构成。新建一个文件夹命名为/docker,在此目录下新建文件夹... Read More
-
理解Java synchronized 关键字 TOP NEW
概念 在多线程编程中,线程安全问题是我们必须要面对的一个问题,Java中就使用了synchronized关键字来实现同步,在理解这个关键字之前,我们首先要明确一点,synchronized锁的不是代码,而是锁的对象。我们先看看下面的两个特性: 互斥性:在同一时间,只允许一个线程持有某个对象锁,这样就可以保证在同一时间只有一个线程在访问互斥资源,互斥性也成为原子性。 可见性:必须确保锁在释放之前,当前线程对于共享变量的修改,对下一个获得锁的线程来说,该修改是可见的(即获取到的共享变量的值是最新的),否则另一个变量获取到的变量值可能是之前缓存的副本,而不是最新的值。(Java中... Read More
-
深入理解JVM(三)-Java内存区域 TOP NEW
概述 JVM在执行Java程序的过程中会把它所管理的内存区域分为多个数据区域,各个区域都其特定的用途,有的区域是线程共享的,有的区域是线程独有的。本文我们就根据JVM对内存的划分区域,对每一块区域的作用和概念做一个大致的了解。为了保证概念的准确性和描述的准确性,本文中的部分概念摘自《深入理解JVM(第二版)》,再加上一些自己的理解。根据Java虚拟机规范的规定,Java虚拟机所管理的内存包括了下图中的几个运行时数据区。(注:图中区域显示的大小,不代表实际的JVM中区域的大小比例) 程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,... Read More
-
深入理解JVM(二)-类加载子系统 TOP NEW
-
RabbitMQ系列(三)---基于Spring boot的rabbitmq实现消息异步处理 TOP NEW
概述 前面已经对rabbitmq的安装和基本概念进行了讲解,那么在实际的项目实战中,我们如何利用rabbitmq来实现一个消息异步处理的功能呢。本文就将基于Spring Boot 中的rabbitmq来实现一个简单的例子,并对实现过程中遇到的问题进行讲解。如果对spring boot还不了解的话,请自行上网学习,这里重点是对rabbitmq的实现进行讲解。 应用场景 本文主要演示的应用场景是:客户端调用后端接口,传入一个User对象,这个对象中包含了姓名,年龄,地址,手机号四个属性,我们假设这个User对象需要在服务端进行一个非常耗时的任务。服务端接收到这个User对象之后,通过... Read More
-
HttpServletRequest不能重复使用请求数据 TOP NEW
-
HashMap和Hashtable的区别 TOP NEW
-
深入理解JVM(一) TOP NEW
前言 作为一个JAVA开发者,不了解Java虚拟机的原理是不行的, 只有了解了基本原理之后,我们才能写出更加高效的代码,同时也有助于我们在 上线的时候排查问题。同时想要进阶学习Java知识,JVM是一个绕不开的问题, 建议有点Java基础的同学,再来看这部分内容会比较容易,我并不是很建议大家在学习Java 初期一上来就学习JVM,当然学习这个事情因人而异,只要自己能学知识到就行了。 Java虚拟机这部分内容,后面应该还会写很多篇,按照我目前的预想, 是按照由简到细的顺序进行介绍的。本篇文章打算先从一个Java程序是如何运行起来的讲起 ,然后介绍加Java虚拟机的整体结构,后面再对其... Read More
-
RabbitMQ系列(二)-基本概念和原理 TOP NEW
简介 MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费- 生产者模型的一个典型的代表,生产者向消息队列中生产消息,消费者从消息队列中取出消息, 并将其消费。RabbitMQ便是MQ产品的一个典型代表,它是由Erlang编写的一款基于AMPQ协议 可复用的高性能企业消息系统。当然,消息通信解决方案并不止RabbitMQ一种,诸如ActiveMQ, ZeroMQ,Apache Qpid都提供了相关的解决方案。由于RabbitMQ的可靠性,高性能,高并发, 并且它是处了Apache Pid之外唯一实现了AMPQ标准的代理服务器,使得它相较于其竞争者, 有... Read More
-
RabbitMQ系列(一)---Windows安装rabbitmq详解 TOP NEW
前言 RabbitMQ是一个在AMPQ(Advanced Message Queuing Protocol)协议基础上的企业级消息系统, 是一个建立在Erlang OPT平台上的开源框架。所以我们在安装RabbitMQ之前,需要安装Erlang环境,再安装RabbitMQ服务。本文只对如何在Windows环境下安装RabbitMQ做了介绍,对于其作用和原理以及如何以JAVA代码实现,我会在后续的系列中逐一写出。同时后面也会对基于RabbitMQ的Spring Cloud组件消息驱动进行介绍,这里就暂且当做是万里长征第一步吧。 由于本文是基于windows安装的,对于想在linux上... Read More
-
Jekyll搭建个人博客教程 TOP NEW