- 博客(199)
- 资源 (2)
- 收藏
- 关注

原创 深入理解synchronized底层源码,小白这篇足够了
深入理解synchronized底层源码前言这篇文章从JVM源码分析synchronized的实现逻辑,这样才能更加对synchronized深度的认识。进程:操作系统资源分配的基本单位。线程:cpu调度的基本单位(真实执行)阅读导航深入理解synchronized底层源码前言一、synchronized的使用场景二、JVM中,对象在内存中的布局三、synchronized底层从字节码聊起四、monitor到底是什么?五、深入synchronized底层源码六、锁的优化1、偏向锁2、偏向锁的获取
2020-06-26 12:27:55
1936

原创 最全的Typora语法大全及包括(详细数学表达式及流程图)
Typora是一款开源写作神器,如果还不会使用Typora,强烈建议花你最宝贵的30分钟去学习一下,就30钟就可以让你学会Typora。相信我往下看完,你就会有不一样的收获Typora介绍Typora是一款免费的轻量级Markdown编辑器,它没有Mou,Haroopad等Markdown编辑器那么大名鼎鼎,但算是较为小众的一款产品。Typora作为一款离线Markdown无疑是非...
2020-05-06 23:45:24
15873
4
原创 解决服务器繁忙!DeepSeek 大礼包,建议收藏~
你好,我是渔夫。DeepSeek国内外都非常彻底爆火了,一个初创公司还干翻了美股市场,导致老美国多家科技巨头股集体暴跌,有点疯狂!DeepSeek 红了是非多,近日还遭遇史无前例最大规模 DDOS 攻击,3.2Tbps 相当于 100 多部4k电影。大量用户访问也导致官网被挤爆了,现虽然缓解了一点,但还是没有完全恢复,很多朋友反馈太卡了,而且还限制访问,导致无法正常使用。于是我收集了平替deepseek方案,供大家参考使用。
2025-02-11 11:18:14
206
原创 抛弃 Cursor,字节发布全新AI IDE:Trae!免费用 Claude 和 GPT-4o
Trae 在国内优势很大,首先是对中文更加友好,同样能用顶流模型 Claude 3.5 和 GPT-4o,相对于 Cursor 类产品起码不用开魔法吧,以后订阅模式,在国内也不会那么麻烦。我是渔夫,一名程序员,正在 All in AI,探索小而美商业模式、包括AI副业、个人IP、分享技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。我目前是 Windsurf 订阅用户,因为它比较便宜些,Cursor 也很不错,不过之前我都是白嫖的。今天,字节跳动推出新款 AI IDE,让我心动了。
2025-01-23 14:46:20
1091
3
原创 Agentic RAG 的 7 种企业级架构
你好,我是渔夫。今天,分享一篇长达 35 页的最新Agentic RAG 综述。论文想解决的核心问题是,当今天大型语言模型(LLMs)在处理动态、实时查询时依赖静态训练数据导致的过时、不准确输出、幻觉等问题。它从最基本原则和 RAG 范式的演变开始,介绍 Agentic RAG 的 7 种架构。还重点介绍在 5 种应用场景的效果,如医疗保健、金融和教育等行业中的关键应用,且非常详细。
2025-01-23 00:36:36
963
原创 Anthropic官方最新发布《构建高效的Agents指南》,生产中Agents常见 5 种设计模式
Agents”可以简单理解为,它是个AI助理,可以主动感知外界环境交互、做出决策、并采取行动的实体。Agents主要是来解决大模型(LLM)本身没有实体的缺陷而存在,LLM只是一个会思考的大脑,经过大量语料库训练之后,像人类一样所具备的思考能力。没有手,没有脚,很难把自己的想法具体落地,能力非常有限。
2025-01-19 15:22:34
605
原创 基于 Rust 实现简单、快速、轻量级的 AI Agent 框架 Rig
Rig(ARC) 是一个基于 Rust 优势面向 LLM 工作流引擎的 AI 系统构建框架,目的是要解决更底层的性能优化问题。值得关注的一个框架。
2024-12-20 23:02:02
1140
原创 AI 大模型应用,采用 Rust 来开发,到底有多爽!
你还可以输出不同的音色,GPT 提供了 6 种,你可以修改 voice 来实现,alloy、echo、fable、onyx、nova、shimmer 开发过程根据自己喜欢来选择吧!开发之前,你需要确保在 Cargo.toml 文件中添加 reqwest 和 serde_json 两个依赖,可以复制粘贴到你的文件中,内容如下。我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。
2024-12-13 23:20:03
503
原创 最新突破!Google 量子芯片 Willow,来了!
在发布会中,介绍了 Willow 在此基准测试中的性能令人惊叹:它在不到 5 分钟的时间内完成了计算,而当今最快的超级计算机之一需要 10^25台 或 10 年之久。Willow 拥有105个量子比特,虽然理论上想要破解比特币加密需要1800万量子比特的算力,还有一定距离,但它已经在许多指标上都拥有最先进的性能,有两项重大成就。我是渔夫,一名程序员,正在 All in AI,探索小而美商业模式、包括AI副业、个人IP、分享技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。
2024-12-11 23:38:59
233
原创 没有思考过 Embedding,谈何 RAG,更不足以谈 AI大模型
我是渔夫,是一名程序员,正在 All in AI,正努力探索小而美的AI商业模式、包括AI副业、个人IP、分享技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。其特点,建立在预训练基础上,利用预训练模型已经学到的语言知识,不需要从零开始训练。在如,搭建本地知识库的使用,我们常提到的 RAG 技术,实际上用 Embedding 模型作为基础工具,来将查询的词转换为向量。模型微调,是指在预训练模型的基础上,使用特定任务的标注数据进行进一步训练,使模型能够完成特定的任务。1、什么是大语言模型(LLM)?
2024-12-11 10:59:21
321
原创 Sam Altman 创业指导手册
最后,成功的创业归结为一个伟大的创意、一个伟大的团队、一个伟大的产品和卓越的执行力。《Startup Playbook》为创业者提供了一个清晰的框架,强调了从理念到执行的每个阶段的重要性,以及在创业旅程中保持专注和强度的必要性。我是渔夫,是一名程序员,正在 All in AI,正努力探索小而美的AI商业模式、包括AI副业、个人IP、分享技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。:招聘是构建伟大公司的关键。CEO的职责是确保公司胜利,包括设定愿景、团队管理、融资等。:优秀的团队是成功的关键。
2024-12-09 21:17:25
163
原创 Anthropic 开源 MCP:让 LLM 与外部数据源和工具之间无缝集成!
AI 大模型被炒得热火朝天,通用大模型能力也越来越强大,但仍然面临着前所未有的挑战,生态建设问题,行业缺乏统一标准化。这次 Anthropic 又勇敢迈出第一步,敢于做出行业标准化的尝试,也算是一个新的探索思路,这种方案未来是否可行,需要看 AI 社区、开发者及市场投入验证,是否足够实用。譬如,当开发者或企业希望将不同的数据源提供给 AI 时,传统方法可能需要为每个数据源单独开发对接方案,而 MCP 通过定义一套通用的数据交换交互,也就是就一个比较 “通用” 协议新标准来解决这个问题。
2024-12-09 21:16:10
1911
原创 k8s 为什么需要Pod?
Pod,是 Kubernetes 项目中最小的 API 对象,更加专业的说,Pod,是 Kubernetes 项目的原子调度单位。Pod 是 Kubernetes 里的原子调度单位。这就意味着,Kubernetes 项目的调度器,是统一按照 Pod 而非容器的资源需求进行计算的。例子:所以,像 imklog、imuxsock 和 main 函数主进程这样的三个容器,正是一个典型的由三个容器组成的 Pod。
2024-12-08 10:41:47
1233
2
原创 k8s 之 DaemonSet
DaemonSet 作用就是保证 kubernetes 集群中部分或所有节点都能够运行同一份 Pod 副本,如果当有新的 Node 加入到集群,Pod 就会在目标的节点上启动;如果节点在集群中被剔除,那么该节点上 Pod 也会被剔除(被垃圾收集器清理掉)。
2024-12-08 10:41:13
1313
原创 k8s 之 Deployment
举个例子,如果你更新了 Deployment 的 Pod 模板(比如,修改了容器的镜像),那么 Deployment 就需要遵循一种叫作“滚动更新”(rolling update)的方式,来升级现有的容器。“水平收缩”则反之。实际上,这个组件,就是一系列控制器的集合。Deployment 这样的一个控制器,实际上都是由上半部分的控制器定义(包括期 望状态),加上下半部分的被控制对象的模板组成的。具体的实现上,这个 Deployment,与 ReplicaSet,以及 Pod 的关系是怎样的呢?
2024-12-08 10:40:24
581
原创 k8s 之 StatefulSet
本文主要介绍了无状态和有状态服务在K8S中的典型应用场景.通过对Deployment部署无状态服务所遇到问题的分析,引出了Stateful新的部署组件.它是通过支持Pod一些特性(e.g. 名称唯一性,稳定的网络标识, 稳定的持久化存储等)来实现在K8S中部署运维有状态服务.牢记: Stateful有状态服务,每个Pod有独立的PVC/PV存储组件StatefulSet 的工作原理之前,必须先为你讲解一个 Kubernetes 项目中非常实用的概念:Headless Service。
2024-12-08 10:38:59
1273
原创 Linux内核升级操作和 k8s 常见命令
kernel 包版本 —> lt:长期维护版;列出可以使用的 kernel 版本。4、设置开启系统启动时使用的内核版本。3、安装指定的 kernel 版本。1、安装 ELRepo 最新版本。2、安装新的内核版本。
2024-12-08 10:24:41
396
原创 Kubebuilder 架构介绍
Kubebuilder 是一个用 Go 语言构建 Kubernetes APIs 的框架,通过使用 Kubebuilder,用户可以遵循一套简单的编程框架,使用 CRD 构建API、Controllers 和 Admission WebHooks,实现对 k8s 的扩展。Kubebuilder 中的主要组件包含 Manager、Cache、Client 与 Finalizers。Manager组件主要实现管理外层,负责初始化 Controller、Cache、Client的工作;
2024-12-08 10:22:11
1253
原创 controller-runtime之Controller启动分析(2)
Builder 创 建 Controller 时, 会 根 据 Builder.For()、Builder.Owns()、Builder.Watches() 方法中设置的资源对象类型在 Builder.Build() 中创建相应的 Kind, 并调用 Controller. Watch() 方法将 Kind 传入 Controller。重新 入队列的方法可以是带有一定延迟的 Queue.AddAfter(), 也可以是有限速的 Queue. AddRateLimited()。重新加入的次数无限制。
2024-12-08 10:20:37
779
原创 controller-runtime之Manage启动分析(1)
Controller-runtime 提供的用于开发 Controller 的框架, 包含了各种已封装的代码库。如 Kubebuilder 与 Operator SDK 都是基于 Controller-runtime 框架来工作的, 使 用 Controller-runtime, 开 发 者 可 以 方 便 地 开 发 各 种 Controller、CRD、Admission WebHook 等。
2024-12-08 10:20:06
667
原创 k8s-编写CSI插件(3)
在 Kubernetes 中,存储插件的开发主要有以下几种方式:CSI插件:Container Storage Interface (CSI) 是 Kubernetes 的标准插件接口,是全新的插件方案,插件和驱动调用通过grpc协议,功能丰富,支持存储卷动态提供、快速、动态扩容等等。例如,可以连in-tree的插件做平滑迁移,当系统中运行有对应类型的 CSI 驱动时,其实使用方式虽然还是in-tree。
2024-12-07 16:21:12
1166
原创 k8s-持久化存储之StorageClass(2)
但现在有一个比较棘手的问题,当大规模的 kubernetes 生产集群中,可能会有很多的 PVC,而且随着项目的增加,可能还需要不断创建新的 PV,不然可能为某个新的 Pod 因 PVC 绑定不到 PV 而创建失败。首先,来了解持久化 Volume 的实现,想要持久化 Volume 大多数情况是需要依赖一个远程存储服务的,比如:远程文件存储(如:NFS)、远程块存储(如:公有云提供的远程磁盘)等。而 StorageClass 对象的作用,其实就是创建 PV 的模板。2、如何持久化 Volume。
2024-12-07 16:20:37
1138
原创 k8s-持久化存储PV与PVC(1)
在大规模的 kubernetes 生产集群中,可能会有很多的 PVC,随着项目的增加,可能还需要不断添加新的 PV,否则可能为某个新的 Pod 因 PVC 绑定不到 PV 而创建失败。但 Pod被删除,重新拉起,或Pod超出资源限制被 Kubelet 杀死了,emptyDir 卷中的数据也会被永久删除,这种存储卷也称为“临时存储”。说明:当 Pod 被删除,这个存储卷还在,只要保证同一个 Pod 被调度到同一个节点上, 在 pod 被删除重新被调度到这个节点之后,对应的数据依然是存在的。
2024-12-07 16:19:44
1198
原创 k8s-容器运行时接口分析
在 k8s v1.5 之前,Docker 作为第一代的容器运行时, kubelet 通过内嵌其中的 DockerShim 操作 Docker API 来操作容器。所以它的作用非常单一,那就是实现 CRI 规定的每个接口,然后把具体的 CRI 请求“翻译”成对后端容器项目的请求或者操作。在 CRI 中,我们显式的定义这些调用,让运行时可以做特定实现。Kubelet 的职责在于通过 RPC 管理容器的生命周期,实现容器生命周期的钩子,以及存活和健康监测,执行 Pod 的重启策略等。在CRI中,这种环境称为。
2024-12-07 16:17:14
1041
原创 什么是 k8s CNI ?
CNI 是容器网络接口 (Container Network Interface)的缩写。定义了容器运行时如何与网络插件进行交互,从而管理容器网络。只要开发者遵循 CNI 定义的规范就可以接入 kubernetes ,为 Pod 创建虚拟网卡、分配 IP 地址、设置路由规则等,这样就实现 “IP-Per-Pod” 网络模型。CNI 为网络插件定义了一些以系列通用接口,可以使容器运行时与多种不同的网络插件(Flannel、Calico、Cilium等网络插件)进行交互,不同网络插件可以提供不同的网络策略。
2024-12-07 16:15:57
1177
原创 了解 k8s 网络基础知识
根据我前面讲解的 TUN 设备的原理,这正是一个从用户态向内核态的流动方向(Flannel 进程向 TUN 设备发送数据包),所以 Linux 内核网络栈就会负责处理这个 IP 包,具体的处理方法,就是通过本机的路由表来寻找这个 IP 包的下一步流向。不难理解,这个 UDP 包的源地址,就是 flanneld 所在的 Node 1 的地址,而目的地址,则是 container-2 所在的宿主机 Node 2 的地址。其中,网关的 IP 地址,正是目的容器所在宿主机的 IP 地址。
2024-12-07 16:14:24
1240
原创 k8s-Informer之Reflector的解析
当资源对象发生变化时(如:添加和删除等事件),Reflector 会将其这些资源对象的变化包装成Delta并将其丢到DeltaFIFO中。通过 NewReflector 实例化 Reflector 对象,在实例中需要传入的 ListerWatcher 数据接口对象,这个包含核心 List 和 Watch 方法,主要是负责 List 和 Watch 指定的 Kubernetes APIServer 资源。组件的一个重要函数,它负责监听Kubernetes API server中的对象变更事件。
2024-12-07 15:05:43
606
原创 k8s-Informer之Indexer的解析(4)
Indexer 中的数据始终要是与 ETCD 中数据一致的,当 client-go 需要数据时,可直接通过该本地缓存获取资源对象,不需要每次都从 APIServer中获取,这样就减轻了请求过多造成对 APIServer 、etcd的压力。该方法传入索引器名称 indexName 和索引键名称indexedValue,方法寻找该索引器下,索引键对应的对象键列表,然后根据对象键列表,到Indexer缓存(即threadSafeMap中的items属性)中获取出相应的对象列表。3、Indexer 索引功能。
2024-12-07 15:05:09
515
原创 k8s-Informer之DeltaFIFO的解析(3)
在controller的Run方法中,调用NewReflector初始化Reflector时,同步了 DeltaFIFO,并且执行 processLoop 方法。DeltaFIFO 是一个增量的本地队列,记录资源对象的变化过程。它生产者是 Reflector 组件,将监听到的对象,同步到 DeltaFIFO 中,DeltaFIFO 又对资源对象做了什么呢。可知 Reflector里的 store.Add() 其实就是 DeltaFIFO 的 Replace、Add、Update、Delete方法的。
2024-12-07 15:03:50
570
原创 k8s-Informer概要解析(2)
Informer 负责与 kubernetes APIServer 进行 Watch 操作,Watch 的资源,可以是 kubernetes 内置资源对象,也可以 CRD。Informer 是一个带有本地缓存以及索引机制的核心工具包,当请求为查询操作的时候,会优先从本地缓存内存去查询数据,而 创建、更新、删除这类操作,则会根据事件通知写入队列 DeltaFIFO 中,同时对应的事件处理过后,更新本地缓存,使得本地缓存与 ETCD 的数据保持一致性。
2024-12-07 15:02:36
915
原创 k8s-client-go基本使用(1)
Client-go 是负责与 k8s APIServer 服务进行交互的客户端库,利用 Client-go 与 k8s APIServer 进行的交互访问,以此来对 k8s 中的各类资源对象进行管理操作,包括内置的资源对象及未来自定义的CRD资源。
2024-12-07 14:09:32
1032
原创 kubevirt 是什么?
卷是一种抽象概念,它们可以被格式化为文件系统,并被操作系统分配给应用程序或用户。卷通常由文件系统管理,它们可以被动态地扩展或收缩,以适应不同的存储需求。磁盘可以被划分成一个或多个分区,每个分区可以被格式化为一个文件系统,以便在上面存储数据。磁盘可以被划分为一个或多个分区,并且每个分区可以被格式化为一个文件系统并被挂载到一个挂载点上。因此,在某些情况下,磁盘可以被挂载为一个卷,然后使用该卷来存储数据。磁盘可以被分区并格式化为一个或多个卷,而卷可以动态地扩展或收缩以适应不同的存储需求。
2024-12-07 14:08:32
1049
原创 go 语言中协程和GMP模型
如果业务方法不调用 runtime.morestack(),可利用垃圾回收器的线程发送 SIGURG 信号,让这个业务方法强制跳到 信号处理函数 (doSigPreempt() ),重新回到 调度循环(Schedule),这样比较大的协程放在队列里面,优先调度饥饿的协程了。G 就是协程,M 是线程,P 是为了优化多线程并发时,会抢夺协程队列的全局锁问题,很多资料称为 ”处理器“,它是介于 M 与 G 中介的。协程,从 runtime 的角度看,协程就是一个被调度的 g 结构体。
2024-12-07 14:06:47
445
原创 go 语言中make和new有什么区别?
new 函数只接受一个参数,这个参数是一个类型,并且返回一个指向该类型内存地址的指针。new(T) 为一个 T 类型新值分配空间并将此空间初始化为 T 的零值,返回的是新值的地址,也就是 T 类型的指针 *T,该指针指向 T 的新分配的零值。make 也是用于内存分配的,但是和 new 不同,它只用于 chan、map 以及 slice 的内存创建,而且它返回的类型就是这三个类型本身,而不是他们的指针类型,因为这三种类型就是引用类型,所以就没有必要返回他们的指针了。
2024-12-07 14:06:04
105
原创 slice和map底层原理面试问题
因此,当你传递一个切片时,函数接收到的是指向相同底层数组的指针,因此它可以修改原始切片中的数据。进行扩容,当切片长度小于 256 将会翻倍扩容,大于 256 每次增加 25%,切片扩容时,并发不安全,需要并发加锁。nil 是空,并不一定是 ”空指针“,nil 是 6 种类型的零值。每种类型的 nil 是不同的,无法比较。如果对字符串直接使用下标访问,得到的是字节,所以需要 range 遍历时,被解码成 rune 类型的字符。如何直接赋值的话,是浅拷贝的,修改新的接收这个变量是会影响原来的数组。
2024-12-07 14:05:04
476
原创 AI产品的基础设施,神经网络必备知识
文生图如DALL-E,Flux等大模型都在一定程度上依赖神经网络。可以说,神经网络就是让这些AI"活起来"的关键技术。每个节点(人工神经元)都是一个连接到下一个节点,并每个节点都有一个权重和阈值。当一个节点的输出高于阈值时,该节点被激活并将其数据发送到网络的下一层。神经网络又称“人工神经网络”,是模拟人类大脑功能模型的计算架构,它由一组称为“节点”的处理单元组成,这些节点间相互传递数据,和人类大脑中的神经元相互传递电脉冲一样功能。神经网络由节点层组成,至少包括三个层:输入层、至少一个隐藏层和输出层。
2024-11-30 10:39:27
179
原创 不了解 Transformer 原理,就很难掌握 LLM 精髓
自注意力层让每个词都和其他词交流,这样它们就能更好地理解彼此的意思,前馈神经网络则进一步处理这些信息,找出文本中的模式。经过这些层的处理,文本变得越来越抽象,但包含的上下文信息越来越丰富,随后编码器会把处理过的文本(上下文向量)传给解码器。编码器注意力层帮助解码器理解编码器传来的上下文信息,这样生成的文本就能和输入的文本意思一致,然后,前馈神经网络则进一步优化解码器生成的每个词。解码器,就是把编码器传来的信息变成我们能听懂的话(输出文本),也有很多层,包括掩蔽自注意力层、编码器注意力层和前馈神经网络。
2024-11-23 12:45:26
467
原创 没有思考过 Embedding,谈何 RAG,更不足以谈 AI大模型
我是渔夫,是一名程序员,正在 All in AI,正努力探索小而美的AI商业模式、包括AI副业、个人IP、分享技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。其特点,建立在预训练基础上,利用预训练模型已经学到的语言知识,不需要从零开始训练。在如,搭建本地知识库的使用,我们常提到的 RAG 技术,实际上用 Embedding 模型作为基础工具,来将查询的词转换为向量。模型微调,是指在预训练模型的基础上,使用特定任务的标注数据进行进一步训练,使模型能够完成特定的任务。1、什么是大语言模型(LLM)?
2024-11-21 22:02:33
367
原创 FLUX 推出 Ultra 和 Raw 模式,仅10秒生成2K高清图!
我是渔夫,是一名程序员,正在 All in AI,正努力探索小而美的AI商业模式、包括AI副业、个人IP、分享技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。这种模式能更好地捕捉人物和自然场景的细腻细节。可生成超高分辨率图像,分辨率是标准版的 4 倍,且生成速度比同类高分辨率模型快 2.5 倍,不影响提示的精确度。对于,追求真实感的创作者,这个全新功能,可以生成合成度更低、更加自然美感的图像,更加有自然摄影的真实感。下面,相关的生成示例,生成出来都是非常逼真,一眼看不出是AI生成。
2024-11-07 21:01:48
666
windows-redis-x64-3.2.100zip
2020-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人