自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 网络编程:什么是阻塞IO

阻塞IO适用于简单的网络应用,但在高并发场景下效率较低,因为每个连接会占用一个线程,可能导致线程资源耗尽。为了解决高并发问题,可以使用非阻塞IO(如NIO)或异步IO技术。

2024-07-13 23:31:17 409

原创 昇思25天学习打卡营第2天 | 通过 MindSpore实现简单的深度学习模型的操作步骤

本节通过MindSpore的API来快速实现一个简单的深度学习模型。

2024-07-10 22:55:22 588

原创 RocketMQ实战:一键在docker中搭建rocketmq和doshboard环境

该项目提供了一套 Docker Compose 配置,用于快速部署 RocketMQ 及其 Dashboard。项目包含必要的配置文件和目录结构,以确保数据持久化和服务的正常运行。通过以上步骤,您可以快速部署并运行 RocketMQ 及其 Dashboard。该项目的 Docker Compose 配置简化了部署过程,使得开发和测试变得更加高效。

2024-06-29 23:52:31 657

原创 RocketMQ:日常开发中有哪些使用MQ的场景

消息队列是一种通信方法,允许应用程序通过发送和接收消息来互相通信。这些消息/任务/指令存储在一个中间介质中(即队列),并由生产者发送,消费者接收。消息队列是一种强大的工具,可以用于任务异步处理、系统解耦和负载均衡等场景。它能够提高系统的性能和可扩展性,在复杂的软件系统中会经常使用到,也是要掌握的重要技能之一。

2024-06-27 23:09:16 499

原创 昇思25天学习打卡营第1天 | 什么是昇思MindSpore

MindSpore 是华为为了帮助开发者降低开发难度和运营成本,同时承载端、边、云全场景 AI 计算需求,发布的全场景 AI 计算框架,源码公布在Gitee和Github上。MindSpore 统一训练和推理框架,旨在实现易开发、高效执行、全场景统一部署三大目标。其中,易开发表现为API友好、调试难度低;高效执行包括计算效率、数据预处理效率和分布式训练效率;全场景则指框架同时支持云、边缘以及端侧场景。ModelZoo(模型库):ModelZoo提供可用的深度学习算法网络。

2024-06-26 23:29:38 603

原创 Redis源码学习:Redis对象和5种数据类型的工作原理

在server.h文件中,zsetdict *dict;} zset;本文讲解了什么Redis对象,已经面向用户的5种常用数据类型的底层逻辑,希望对你有帮助。

2024-06-23 22:31:45 1430

原创 Redis源码学习:quicklist的设计与实现

quicklist是一个双端链表结构,链表的每一个节点都是ziplist。本文主要讲解了为了解决ziplist的缺陷,quicklist通过对ziplist进行“分片”存储,限制每个节点的大小或数量来提供性能的方法,希望对你有帮助。

2024-06-22 23:58:07 1151

原创 Redis源码学习:ziplist的数据结构和连锁更新问题

虽然ziplist对头尾的操作可以很快,但是,当要查找列表中间的元素时,ziplist 就得从列表头或列表尾遍历才行。由于ziplist 必须使用一块连续的内存空间来保存数据,所以当新插入一个元素时,ziplist 就需要计算其所需的空间大小,并申请相应的内存空间,假设有N个小于255字节的Entry,每一个Entry的。ziplist 是 Redis 中一种紧凑型的列表结构,专门用来存储元素数量少且每个元素较小的数据。都可以用1个字节存储,现在要在中间插入新的Entry,长度大于254,此时。

2024-06-22 19:02:56 741

原创 Redis源码学习:跳表(Skip List)的工作原理详解

跳表(Skip List),首先它是链表,是一种随机化的数据结构,Redis 使用跳表作为有序集合(Sorted Set)的底层实现之一。跳表能够提供高效的插入、删除、查找操作。本文通过阅读源码来分析跳表的工作原理。Redis 的跳表通过多级索引结构,实现了高效的插入、删除和查找操作。希望这篇文章能够帮助你更好地理解跳表的工作原理和实现细节。

2024-06-21 16:02:57 922

原创 Redis源码学习:高性能Hash表的设计与实现

哈希表是一种通过哈希函数将键映射到值的数据结构。简单来说,就是通过一个计算公式(哈希函数)把一个键(比如一个名字)转换成一个数组的索引,数组中的每一个元素就是一个哈希桶(也叫bucket),然后在这个索引位置存储对应的值(比如电话号码)。这样我们就能以O(1)的时间复杂度通过键快速找到对应的值。通过链式哈希,Redis有效地解决了哈希冲突的问题;通过渐进式rehash,Redis确保了哈希表扩展时的高效性和稳定性。这些机制让Redis哈希表在处理大量数据时仍然保持高效。

2024-06-20 23:08:00 1348

原创 Redis源码学习:SDS设计与内存管理

Redis使用简单动态字符串SDS来代替传统C字符串,解决了获取长度低效、缓冲区溢出和二进制不安全等问题。SDS在结构体中维护长度,支持二进制存储,自动扩容防止溢出,性能和灵活性均有提升。文中详细分析了SDS的内存分配、扩容和释放过程。

2024-06-19 07:52:07 1220

原创 Redis源码学习:从头开始掌握Redis核心设计

具体实现代码在相应的 .c 文件和 .h 文件中,如 dict.c 和 dict.h(实现哈希表)。Redis 的辅助功能包括操作延迟监控(latency.h、latency.c)、慢命令记录(slowlog.h、slowlog.c)以及性能评测(redis-benchmark.c)。内存管理是 Redis 的重要优化点,包括内存分配(zmalloc.h/zmalloc.c)、内存回收(expire.c 和 lazyfree.c)以及数据替换策略(evict.c)。通过了解目录结构的作用可以快速认知系统。

2024-06-18 08:24:46 576

原创 MyBatis的Mapper是如何工作的

本文将介绍MyBatis的Mapper接口如何跟映射文件关联起来。本文介绍了MyBatis中Mapper从定义到使用的过程,从源码角度演示了Mapper的定义、加载、注册、查找和执行操作的一系列过程,希望对你有帮助。

2024-05-21 17:25:27 474

原创 在Python中,使用Azure OpenAI和LangChain完成一次对话

这篇文章将介绍如何配置Azure OpenAI,以及如何在Python中如何使用LangChain完成一次对话。使用ipynb notebook虚拟环境python版本 3.11.3在这篇文章里,介绍了 Azure OpenAI 的配置,以及在Python中使用LangChain完成一次简单的对话,希望对你有帮助。

2024-05-20 16:58:33 790 1

原创 MyBatis是如何进行数据库连接配置的

读取配置文件:通过Resources类读取 XML 文件。解析配置文件:使用解析 XML,生成对象。创建 SqlSessionFactory:使用和创建。建立数据库连接创建SqlSession,使用DataSource获取数据库连接。

2024-05-15 17:03:22 614

原创 Java按值传递参数

这篇文章主要通过示例解释Java中的对象是按值传递的,没有按引用传递的说法。

2024-05-09 18:07:26 501 1

原创 使用 jstat 命令查看内存使用,监控 Java 应用性能

在 Java 开发和调优中,了解应用程序的内存使用情况、垃圾回收频率等信息至关重要。jstat 是 JDK 中提供的一个命令行工具,用于实时监控 Java 虚拟机的各项统计信息。本文将介绍 jstat 的基本使用方法以及常用选项和输出项的含义。

2024-05-07 18:01:52 865

原创 使用 jps 命令查看Java进程

jps非常简单,但是对于日常开发和运维却是非常重要,是必须要掌握的。

2024-05-06 23:31:06 313 1

原创 2024年了,还找不到 docker volume 存储在哪里吗?

环境信息:我的 volume 存储在这里来源:https://stackoverflow.com/questions/61083772/where-are-docker-volumes-located-when-running-wsl-using-docker-desktop/63407443#63407443

2024-05-06 11:19:02 195 2

原创 MySQL存储引擎的差异与选择

在选择MySQL的存储引擎时,需要根据应用的具体需求来决定。如果需要事务支持、数据完整性和高并发写入能力,InnoDB是首选。如果应用主要是读操作且不需要事务支持,MyISAM可能更适合。而MEMORY引擎则适用于需要快速访问临时数据的场景。在选择时,还需要考虑数据的存储量、访问频率以及磁盘I/O等因素。

2024-05-03 04:26:21 621

原创 Rust 的所有权系统:你应该知道的几件事

像 C/C++ 这样的编程语言为开发人员提供了对内存管理的大量控制。但这带来了很大的风险——很容易犯错误,导致崩溃、安全漏洞或错误!释放内存后使用内存。这会导致崩溃或奇怪的错误。用完后忘记释放内存。这会导致内存泄漏。同时访问同一内存的两部分代码。这可能会导致争用条件。为了避免这些问题,Rust 使用了所有权系统,通过添加一些编译器检查规则以确保内存安全。所有权的关键思想是:Rust 中的每个值都有一个所有者。所有者负责该值——管理其生命周期、释放它、允许访问它等。

2024-04-29 18:40:09 644

原创 Semantic Kernel开发实践:Planner 规划器

Semantic Kernel Planner 是一款动态工具,可以将用户的请求转换为可执行的计划。换句话说,当它接收到用户请求(目标)后,根据Kernel对象具有的能力(提供的Plugin和Function),自动组合。由于Planner的自动规划,很可能产生不可预期的执行顺序、不适合的Function的调用,因此这很大的决定因素是编写的Prompt和Function上定义的描述是否准备合理。

2024-04-25 23:24:56 425

原创 Semantic Kernel开发实践:Semantic Kernel 初体验

作为一个开发者,在使用ChatGPT、文心一言、星火这些大模型的时候,是不是想要把这些大模型和自己的应用集成,做出一款赚钱的产品呢?那么,如何在不需要很多AI专业知识背景的情况下,更轻松地集成大模型呢?这就是本篇文章要介绍给大家的一个微软的开源框架——Semantic Kernel,中文翻译为语义内核。这篇文章讲解了开源框架语义内核通过隐藏了LLM内部细节,提供高效抽象层,让开发者轻松使用LLM的能力来开发应用,并编写了一个多轮对话的示例来体验语义内核。希望对你在学习AI编程方面有一些帮助。

2024-04-24 00:01:21 769

原创 Semantic Kernel开发实践:如何创建并使用语义函数(Semantic Function)(2)

在前一篇里有一个思考:如何创建复用性更好的语义函数?本篇文章,将回答这个问题,是通过结构化处理语义函数(Semantic Function,下文直接称语义函数)的各个部分,来达到复用的效果。演示案例是C#编写的控制台应用,使用的是.net8.0版本。LLM服务使用的是Azure OpenAI本文说明了如何通过对语义函数的配置和提示词模板结构化处理后,可以方便的在不同的应用中使用,以达到复用的目标。

2024-04-22 22:43:39 423

原创 Semantic Kernel开发实践:如何创建并使用语义函数(Semantic Function)

语义函数不像本机函数那样需要我们使用编程语言编写代码实现特定的功能,它是自然语义编程,通过定制提示词模板,让LLM做它本来就可以做的事情。有了Semantic Kernel,在这个定制化的提示词模板中,可以动态的传入一些参数。本篇以C#编写的控制台程序为例,使用.Net8.0。LLM服务使用的是Azure OpenAI这里的提示词模板,可以用你知道的各种提示词技巧来写。如果想在提示词里传入参数,可以使用{{$参数}}来定义。

2024-04-21 17:32:09 576

原创 Semantic Kernel开发实践:Native Function

作为SK(Semantic Kernel)核心组件之一,Plugins是一组为了实现功能而定义的函数的集合,可以达到增强LLM(大语言模型)的能力。LLM的训练数据都是截止到过去的某一个时间,所以如果问它现在发生的事情,那么生成的内容,基本上是它在一本正经的胡说八道。LLM也不能进行调用API、发送邮件、发布文章等等操作,如果想让LLM获取新的知识和能力,就需要为它开发一些插件。这里有一张从微软官方网站上找到了这篇图。演示示例使用的控制台应用程序,编程语言是C#,.net版本是8.0。

2024-04-20 00:13:38 277

原创 Semantic Kernel开发实践:使用Embedding和语义内存检索增强生成

最近在捣鼓研究Semantic Kernel,对如何在AI对话中引用私有的知识库比较感兴趣。目前比较常见的做法是fine-tuning或embedding。这篇文章就来看看我是如何使用semantic kernel搭配embeddings模型的。示例采用控制台应用,编程语言是C#,使用的是.net 8.0。GPT模型使用的是Azure OpenAI GPT-3.5-turbo。embeddings简单来说,是将非结构化的文本通过embedding转换为数值向量的方法。这些向量反映了文本的语义和关系。

2024-04-19 08:28:07 573

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除