- 博客(247)
- 资源 (4)
- 收藏
- 关注
原创 REST RPC dubbo,HSF 协议总结
对比项RESTRPC设计理念面向资源(Resource-Oriented)面向方法/过程(Procedure-Oriented)耦合度松耦合(无接口依赖)紧耦合(需共享接口 jar)可读性高(URL 自解释)低(需看接口定义)性能低高适用边界外部系统、异构系统内部同构系统📌 一句话:对外用 REST,对内用 RPC。
2025-11-19 10:31:13
910
原创 理解提示词Prompt
提示词(Prompt)是指导AI输出内容的文本说明,它描述任务目标、提供上下文、设定约束和输出要求。简单说,它是用自然语言编写的“任务描述 + 规则约定”。提示词(Prompt)并不是让模型“猜”,而是让它“理解并执行”。要做到这一点,提示词必须完整回答这五个问题:你是谁(Profile)定义角色、身份、风格、专业范围。→ 决定语气和知识基调。你要做什么(Background / Task)明确当前任务的目标或场景。→ 决定模型输出的方向。
2025-11-05 09:44:18
689
原创 Docker 部署 FastAPI 项目
步骤命令/文件作用1️⃣ 准备项目main.py写好代码和依赖2️⃣ 写 DockerfileDockerfile定义构建流程3️⃣ 构建镜像打包应用4️⃣ 运行容器启动服务5️⃣ 访问测试验证是否成功。
2025-10-29 10:45:28
430
原创 fastApi 之 环境变量篇
✅用 Pydantic 的类,安全、类型化、自动从环境变量加载配置# ❌ 危险!DB_URL = os.getenv("DB_URL", "sqlite:///dev.db") # 没有类型、没有验证、容易出错功能如何实现读环境变量默认值必填字段不设默认值读.env文件多环境安全隐藏SecretStr测试覆盖。
2025-10-24 14:58:02
313
原创 Python 并发与异步机制完全指南
PythonJava并发模型多进程 / 协程为主,线程受限(GIL)多线程为主,成熟强大异步编程+ 事件循环(单线程高并发 I/O)/ Reactor(多线程任务调度)核心优势轻量协程,高 I/O 并发,写法像同步线程安全生态丰富,适合复杂业务流核心限制GIL 限制多线程 CPU 并行线程开销大,易 OOM👉Python 用“协程”解决 I/O 瓶颈,Java 用“多线程”解决并发问题。Python 的是“单线程的高并发魔法”,靠协程和事件循环实现 I/O 高并发,适合 Web API。
2025-09-30 10:50:26
618
原创 协程 和 线程区别
用户态下,程序不能直接访问硬件(比如网卡、磁盘),只能请求内核来帮忙。上下文切换代价:仅仅是保存函数栈帧和一些局部变量,通常只需几十纳秒,远低于线程的切换。内核有最高权限,可以操作 CPU、内存、磁盘、网卡等硬件。上下文切换代价:几十纳秒到微秒级,涉及 CPU 状态保存+恢复,还可能导致缓存失效。:是“协作式调度”,只有协程自己“主动让出”控制权,调度器才会切换到下一个任务。保存线程 A 的 CPU 上下文(寄存器、栈指针、程序计数器等)。更新操作系统调度器的数据结构(TCB,线程控制块)。
2025-09-30 10:43:23
441
原创 MCP是啥?技术原理是什么?Windows系统配置MCP,Cursor使用MCP
MCP是啥?技术原理是什么?Windows系统配置MCP,Cursor使用MCP
2025-06-08 18:44:39
939
原创 第5章:堆
从内存模型而不是垃圾收集的角度,对Eden区域继续进行划分,JVM为每个线程分配了一个私有缓存区域,它包含在Eden空间内。多线程同时分配内存时,使用TLAB可以避免一系列的非线程安全问题,同时还能够提升内存分配的吞吐量,因此我们可以将这种内存分配方式称之为快速分配策略。据我所知所有OpenJDK衍生出来的JVM都提供了TLAB的设计。、每个线程都有一个TLAB空间2、当一个线程的TLAB存满时,可以使用公共区域(蓝色)的。
2024-12-11 17:12:17
772
原创 AI程序员-Cursor的介绍和使用
在开发一个项目前,可以现在本地创建一个文件夹,然后通过cursor打开,后续通过唤起对话控制图即可完成需求开发。alt + l 唤起对话框进行问答。
2024-12-10 09:33:04
1418
原创 第4章-运行时数据区-虚拟机栈
2. 局部变量表,最基本的存储单元是Slot(变量槽),局部变量表中存放编译期可知的各种基本数据类型(8种),引用类型(reference),returnAddress类型的变量。(this也相当于一个变量)栈帧中的局部变量表中的槽位是可以重用的,如果一个局部变量过了其作用域,那么在其作用域之后申明新的局部变量变就很有可能会复用过期局部变量的槽位,从而达到节省资源的目的。操作数栈就是JVM执行引擎的一个工作区,当一个方法刚开始执行的时候,一个新的栈帧也会随之被创建出来,这时方法的操作数栈是空的。
2024-11-28 10:52:05
664
原创 第3章-运行时数据区-程序计数器和本地方法栈
JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。
2024-11-28 10:30:24
983
原创 第2章-类加载子系统
除了以上七种情况,其他使用Java类的方式都被看作是对类的被动使用,都不会导致类的初始化,即不会执行初始化阶段(不会调用 clinit() 方法和 init() 方法)除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)如果程序中需要额外的功能类(如加密算法、压缩库),通常可以将 JAR 包放到这个目录中,扩展类加载器会自动加载这些类。是 Java 中最顶层的类加载器,负责加载 JVM 核心类。
2024-11-28 10:17:00
1047
原创 第1章-JVM和Java体系架构
Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条Java指令,Java虚拟机规范中都有详细定义,如怎么取操作数,怎么处理操作数,处理结果放在哪里。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。凡是能生成被Java虚拟机所能解释、运行的字节码文件,那么理论上我们就可以自己设计一套语言了。无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。JVM是运行在操作系统之上的,它与硬件没有直接的交互。,另外一种指令集架构则是。
2024-11-28 10:02:26
1333
原创 logback日志级别动态切换四种方案
代码如下/***//*** logback动态修改包名的日志级别* @param level 日志级别* @param packageName 包名* @return 当前的日志级别*/// 默认值-1,更改全局日志级别;否则按传递的包名或类名修改日志级别。} else {在条件允许的情况下建议使用方案四。
2024-10-30 13:48:19
1454
原创 设计-重试框架的思考和运用(全网最落地的思考)
1:等待时间间隔的实现基于指数退避公式 : baseDelay(初始等待时间) * (2 ^ (retryCount(重试次数) - 1))可以保证时间按照指数级缓存递增2: 业务方式解耦,作为基础框架的设计,我们希望在对2的业务流程中,不仅是满足某一个特定业务的重试, 也可以满足不同业务的重试,基于以上事实我们可以思考1:重试流程是独立的, 业务方法是多变的,2:重试流程 业务流程分开,允许不同的业务方法重用这套逻辑3:可以通过和 Lambda 来进一步简化代码。将。
2024-10-28 15:06:12
483
原创 重试框架的思考和运用(全网最落地的思考)
1:等待时间间隔的实现基于指数退避公式 : baseDelay(初始等待时间) * (2 ^ (retryCount(重试次数) - 1))可以保证时间按照指数级缓存递增2: 业务方式解耦,作为基础框架的设计,我们希望在对2的业务流程中,不仅是满足某一个特定业务的重试, 也可以满足不同业务的重试,基于以上事实我们可以思考1:重试流程是独立的, 业务方法是多变的,2:重试流程 业务流程分开,允许不同的业务方法重用这套逻辑3:可以通过和 Lambda 来进一步简化代码。将。
2024-10-23 10:29:46
343
1
原创 设计模式03-组合模式
组合模式又称为“部分-整体”模式,它将对象组合成树形结构以表示“整体-部分”的层次结构。组合模式让客户端能够忽略单个对象和组合对象的差异,以统一的方式处理它们。组合对象:包含一个或多个叶子对象,同时也可以包含其他组合对象,形成一个树形结构。叶子对象:最基本的对象,不包含其他对象。组合模式是一种强大的设计模式,它允许以一致的方式处理单个对象和对象组合,从而简化了客户端代码,提高了系统的可扩展性和灵活性。然而,在使用组合模式时,也需要注意其可能带来的设计抽象化、性能问题和复杂性增加等缺点。
2024-07-10 17:49:48
810
原创 Etcd 基本入门
Etcd 是 CoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用。
2024-03-27 10:37:27
1340
原创 Raft 共识算法
典型的共识算法使 当他们的大多数服务器可用时,进度;如果更多的服务器出现故障,它们将停止前进(但永远不会返回 不正确的结果)。共识通常出现在复制状态机的上下文中,一个 构建容错系统的一般方法。在客户看来,他们是 与单个可靠的状态机交互,即使少数 群集中的服务器出现故障。我们希望 Raft 能使 更广泛的受众可以达成共识,并且这个更广泛的受众将是 能够开发各种更高质量的基于共识的系统 今天可用。作为 结果,每个状态机处理相同系列的命令,因此 生成相同系列的结果并达到相同系列的状态。集合 x 应用于 3。
2024-03-27 09:37:26
514
转载 万级数据深分页查询SQL性能优化实践
如何在Mysql中实现上亿数据的遍历查询?先来介绍一下系统主角:关注系统,主要是维护京东用户和业务对象之前的关注关系;并对外提供各种关系查询,比如查询用户的关注商品或店铺列表,查询用户是否关注了某个商品或店铺等。但是最近接到了一个新需求,要求提供查询关注对象的粉丝列表接口功能。该功能的难点就是关注对象的粉丝数量过多,不少店铺的粉丝数量都是千万级别,并且有些大V粉丝数量能够达到上亿级别。
2024-01-18 09:26:07
254
1
原创 如何看网络架构图-1基础篇
其实我们已经了解了各个图的含义,现在其实缺少的就是怎么串联起来,这个时候,举例说明,才能做到逻辑自洽。以在电商平台购买手机为例你在浏览器中输入网站地址或点击购买手机的链接。浏览器向 LVS(Linux Virtual Server)发送购买手机的请求。信号经过路由器转为电信号,这个时候经过路由器就是物理层LVS 接收到请求后,根据预定义的负载均衡算法和规则,选择一个可用的后端服务器(通常是 Nginx 服务器)。
2023-11-30 10:54:24
1814
原创 英语学习2
我想要知道是否你是周杰伦 I want to know if you are Jay Chou /aɪ/ /wɑnt/ /tə/ /no/ /ɪf/ /ju/ /ɚ/ /dʒe/ /tʃo/我需要知道是否我是重要的 I need to know if I am important /aɪ/ /nid/ /tə/ /no/ /ɪf/ /aɪ/ /æm/ /ɪm'pɔrtnt/
2023-11-30 09:18:53
617
原创 java中SPI机制
SPI的作用其实就是,在系统内部,定义一个能力接口,该接口可以满足自己的业务需要,比如发送短信,定义一个发送短信的接口,至于用什么方式实现,可以交给短信服务提供商去实现,然后根据自己的需要选择使用其中的实现放,这里需要注意几点。1:x系统内部需要将所有的实现放的jar包都要依赖进来,因为实现类的代码是服务提供商写的2: SPI就是一个选择的能力,选择使用哪个接口。jia1需要开发一个接口,该接口的实现可以由jar2和jar3提供,所以在jar1中,一定要依赖jar2和jar3的依赖包。,才能使用SPI的能力
2023-11-27 11:53:04
1112
原创 谈谈中间件设计的思路
想要设计和真正理解中间件的架构理论和思想。对于开发来说需要具备两个关键的能力当然其实还有很多要求,比如安全,日志,异构能力,高可用,不过本人觉得这些可以慢慢了解,不应该一上来就要高大上,仿佛不知道所有的东技术和源码就搞不了中间件开发一样,其实没有那么复杂,先做好基础,才能去了解其他领域,基于这样的愿景,本次专栏将从基础讲起,教中级和高级开发如何做好中级间的架构。
2023-11-27 11:19:50
1164
原创 学习英语1
现在做这件事情(它)是不可能的。现在做这件事情(它)是不可能的。我需要告诉你重要的某些事情。做这件事情(它)是不可能的。每天见到你(它)是非常好的。每天见到你(它)是不可能的。我需要告诉你重要的某些事情。做这件事情(它)是重要的。吃这个食物(它)是重要的。来到这里(它)是非常好的。每天见到你(它)是可能的。我想要知道是否它是可能的。我想要知道是否它是重要的。所以我不必现在做这件事情。我不喜欢现在做这件事情。我今天不需要做这件事情。我不必一整天做这件事情。对我来说它是非常重要的。来到这里(它)是重要的。
2023-10-30 14:23:12
283
原创 linux系列11-rpm/yum包管理
rpm包的管理一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。Linux的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。查询已安装的docker rpm包..
2022-01-15 19:06:11
342
原创 linux系列10-进程和网络
基本介绍1) 在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。2) 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。3) 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。4) 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。显示系统执行的.
2022-01-15 18:16:05
279
原创 linux系列9-磁盘情况查询
查看磁盘整体使用情况df -h磁盘卸载umount /dev/sda1查看指定目录的磁盘占用情况du -h /目录-s 指定目录占用大小汇总-h 带计量单位-a 含文件--max-depth=1 子目录深度-c 列出明细的同时,增加汇总值1) 统计/dog文件夹下文件的个数ls -l /dog | grep "^_" | wc -l2) 统计/dog文件夹下目录的个数ls...
2022-01-14 11:51:53
375
原创 linux系列8-磁盘文件挂载
1:虚拟机添加硬盘1.1:打开虚拟机硬盘配置选择SCSI点击下一步分配磁盘大小并选择拆分成多个文件点击下一步然后点击完成1.2:reboot重启虚拟机2:创建分区输入fdisk /dev/sdb输入m输入n,增加一个新的分区提示是否需要划分一个主分区输入p,并标识为主分期的第一个分区最后一步输入w输入lsblk -f查看挂载结果,此时已完成分区创建...
2022-01-13 12:23:23
657
原创 linux系列7-常用命令
2:文件目录类pwd 显示当前工作目录的绝对路径cd /home 绝对路径进入cd ../home 相对路径进入mkdir指令mkdir /home/y1创建多级目录mkdir -prmdir 删除空目录rmdir删除的是空目录,如果目录下有内容无法删除如果需要删除非空目录,使用rm -rf创建空文件touch创建多个...
2022-01-10 20:46:33
1137
原创 docker容器数据卷 四
一:什么是容器数据卷---持久化数据,用来保存容器运行产生得数据,有点类似我们Redis里面的rdb和aof文件---Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。 为了能保存数据在docker中我们使用卷注意: 卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union FileSystem提供一些用于持续存储或共享数据的..
2021-11-12 15:27:17
869
原创 docker镜像 三
一:什么是镜像镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。1.1:UnionFS(联合文件系统)UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into .
2021-11-11 17:48:51
221
原创 docker常用命令 二
一:docker服务1: 启动# 启动systemctl start docker# 开机自启systemctl enable docker2: 停止systemctl stop docker3: 重启systemctl restart docker4: 查看docker状态systemctl status docker二:docker镜像1: 查看镜像docker imagesdocker images -a 列出本地所有的镜...
2021-11-11 17:46:09
293
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅