Caddy 生态系统遵循的约定

摘要: Caddy 生态系统遵循一些约定,以便在整个平台上保持一致和直观。 Network addresses Placeholders File locations Data directory Configuration directory Durations 上面的一些概念比较重要, 文件位置:带有默 阅读全文
posted @ 2024-08-11 11:52 ercom 阅读(14) 评论(0) 推荐(0) 编辑

golang 指定权限是 0o755 而不是 0755

摘要: 在Go语言中,当指定文件权限时,使用前缀 0o 来明确表示八进制数是一种推荐的做法。 这是因为在Go语言中,八进制字面量必须以 0o 或 0O 开头,后跟八进制数字(0-7)。 这种语法是从 Go 1.8 开始引入的,目的是为了减少由于 八进制 字面量与零开头的 十进制数 之间的混淆。 在更早的 G 阅读全文
posted @ 2024-08-05 00:55 ercom 阅读(56) 评论(0) 推荐(0) 编辑

Docker 的 MIME vnd.docker 格式

摘要: application/vnd.docker.distribution.manifest.v2+json 是 Docker 使用的一种特定的 MIME 类型,用于标识 Docker 镜像的清单(Manifest)格式。 这种格式是 Docker 分发(Docker Distribution)规范的一 阅读全文
posted @ 2024-08-05 00:51 ercom 阅读(47) 评论(0) 推荐(0) 编辑

golang 无缓冲区通道的 range 操作

摘要: 对一个无缓冲通道(chan)进行 range 操作意味着想要迭代并消费通道中的所有值。 但是,由于无缓冲通道的特性,这种操作具有特定的行为和潜在的副作用,主要体现在以下几点: 阻塞行为: 当你开始对无缓冲通道进行 range 操作时,每次循环迭代都会尝试从通道接收一个值。 如果通道中有值可用,ran 阅读全文
posted @ 2024-07-17 21:21 ercom 阅读(12) 评论(0) 推荐(0) 编辑

谈谈 CGO 的优点和缺点

摘要: cgo 是 Go 语言中的一个工具,用于在 Go 中调用 C 代码或让 C 代码调用 Go 代码。 它通过编译时的预处理器和运行时的动态链接器来实现这一功能。 下面列出了 cgo 的一些主要优点和缺点: 优点 1.兼容现有 C 库: cgo 允许 Go 程序直接调用 C 语言编写的库,这极大地扩展了 阅读全文
posted @ 2024-07-11 22:01 ercom 阅读(97) 评论(0) 推荐(0) 编辑

db B+Tree 特殊的二叉搜索树, 时间复杂度

摘要: B+树是一种自平衡的树数据结构,常用于数据库和文件系统的实现中。它具有以下特点: 多路平衡查找树:每个节点可以有多个子节点,且所有叶子节点都位于同一层,保证了树的高度相对较小,提高了查询效率。 键值对存储:每个节点存储一个或多个键值对,内部节点的键用于指导搜索,而所有的数据项都存储在叶子节点上。 高 阅读全文
posted @ 2024-07-09 19:33 ercom 阅读(81) 评论(0) 推荐(0) 编辑

ollama IsEmbedding() 方法含义与 BERT

摘要: func (m *Model) IsEmbedding() bool { return slices.Contains(m.Config.ModelFamilies, "bert") || slices.Contains(m.Config.ModelFamilies, "nomic-bert") } 阅读全文
posted @ 2024-07-08 20:26 ercom 阅读(30) 评论(0) 推荐(0) 编辑

ollama temperature 作用

摘要: 在机器学习,尤其是深度学习和自然语言处理领域中,temperature 参数通常指的是 softmax 函数或采样策略中的一个控制变量。它影响模型输出的概率分布,进而影响模型生成的输出的随机性和多样性。 在 ollama /api/generate 的 API 接口中,temperature 是一个 阅读全文
posted @ 2024-07-08 20:20 ercom 阅读(389) 评论(0) 推荐(0) 编辑

ollama api generate 和 api chat 的区别

摘要: /api/chat 和 /api/generate 这两个API端点的主要区别在于它们的设计目的和处理上下文的方式: /api/generate 用途: 这个端点主要用于生成单个文本片段。它接收输入并返回基于该输入的模型生成的文本,通常不考虑之前的消息历史或对话上下文。 功能: 它可以用于各种生成任 阅读全文
posted @ 2024-07-08 20:14 ercom 阅读(571) 评论(0) 推荐(0) 编辑

[FAQ] a 链接的 rel=noopener 含义

摘要: HTML中的 <a> 标签的 rel 属性用于定义与链接文档的关系。 当 rel="noopener" 被使用时,它表示链接的目标文档不应该拥有对原始文档的任何引用能力。 具体来说,这意呈现在以下几点: 1 . 安全增强: 当一个链接在一个新的浏览上下文中打开(例如一个新的标签页或窗口),rel=" 阅读全文
posted @ 2024-07-07 22:36 ercom 阅读(118) 评论(0) 推荐(0) 编辑

ollama show 命令执行的一般流程

摘要: // 命令行(cmd/cmd.go)以 showCmd 为例。 showCmd // 1.注册自己的 Handler showHandler { // 2.通过使用自己的 GO Client(api/client.go) req := api.ShowRequest{Name: args[0]} r 阅读全文
posted @ 2024-07-06 01:03 ercom 阅读(95) 评论(0) 推荐(0) 编辑

数据传输方式:电路交换、报文交换、分组交换

摘要: 电路交换、报文交换、分组交换是通信网络中三种基本的数据传输方式,它们各有特点,适用于不同的通信场景。下面分别对这三种交换方式进行简要说明: 1. 电路交换 (Circuit Switching) 原理:在数据传输前,首先在通信双方之间建立一条专用的物理连接(电路)。这条路径上的资源(如带宽)在连接期 阅读全文
posted @ 2024-07-04 23:05 ercom 阅读(321) 评论(0) 推荐(0) 编辑

哪些工具不会被LLM替代,及具身机器人技术相结合的情况

摘要: LLM(大型语言模型)虽然在处理自然语言理解和生成任务上表现出色,但仍然存在局限性,某些领域和工具因其专业性、实时性、或需要身体操作的特性,难以被 LLM 完全替代。 以下是一些例子: 1. 专业软件和工具:如CAD软件(计算机辅助设计)用于精密工程制图、3D建模;编程IDE(集成开发环境)如Vis 阅读全文
posted @ 2024-07-04 21:42 ercom 阅读(25) 评论(0) 推荐(0) 编辑

深度学习领域的名词解释:SOTA、端到端模型、泛化、RLHF、涌现 ..

摘要: SOTA (State-of-the-Art) 在深度学习领域,SOTA指的是“当前最高技术水平”或“最佳实践”。它用来形容在特定任务或领域中性能最优的模型或方法。随着研究进展,SOTA会不断被新的研究成果所超越。 非端到端模型 非端到端模型指的是模型架构中包含多个分离的组件或步骤,每个部分可能独立 阅读全文
posted @ 2024-07-03 19:06 ercom 阅读(203) 评论(0) 推荐(0) 编辑

git cherry-pick 用法

摘要: git cherry-pick 是一个 Git 命令,用于将一个或多个提交从一个分支复制并应用到当前分支。 这个操作允许你有选择性地将特定提交引入到不同的分支中,而不需要合并整个分支。 以下是关于 git cherry-pick 的一些关键点和使用方法: 1 基本用法 要使用 git cherry- 阅读全文
posted @ 2024-07-03 19:00 ercom 阅读(2054) 评论(0) 推荐(0) 编辑

[FAQ] windows 设置一个程序的开机自启动

摘要: 查看自启动项目: win+R,输入 msconfig,点击“启动”这个Tab、打开任务管理器。 添加自己的程序作为开机启动: win+R,输入 shell:Common Startup,把启动程序的快捷方式复制到文件夹中。 SHA 散列加密 MD5 加密 Unix 时间戳转换 Base64 编码 U 阅读全文
posted @ 2024-07-02 22:18 ercom 阅读(110) 评论(0) 推荐(0) 编辑

golang 构建标签(go:build)条件编译

摘要: //go:build 是 Go 语言(golang)中的一种构建标签(build tag),用于控制源代码文件在特定条件下是否被编译。 这个注释标记允许你在同一个包内编写针对不同平台、操作系统或编译条件的代码。当 go build 或 go test 等命令执行时,它们会检查这些标签来决定哪些文件应 阅读全文
posted @ 2024-07-02 22:10 ercom 阅读(155) 评论(0) 推荐(0) 编辑

区分公有地址和私有地址, golang实现

摘要: 区分公有地址(Public IP Addresses)和私有地址(Private IP Addresses)主要依据它们的分配、使用范围以及是否能在全球互联网上直接路由。 以下是一些关键区别: 分配和管理: 公有地址:由互联网地址分配机构(Internet Assigned Numbers Auth 阅读全文
posted @ 2024-07-02 22:05 ercom 阅读(56) 评论(0) 推荐(0) 编辑

golang embed 含义及用法

摘要: golang embed 包的主要功能是在运行时提供对嵌入到 Go 程序中的文件的访问。 使用 embed 包,Go源文件可以通过使用 //go:embed 指令来将文件的内容初始化为字符串、字节切片或 FS 类型。 这样可以在运行时直接访问这些文件的内容。 以下是使用 embed 包的三个示例: 阅读全文
posted @ 2024-06-25 23:13 ercom 阅读(73) 评论(0) 推荐(0) 编辑

caddy 模块(module) caddyhttp Start启动逻辑分析

摘要: ./modules/caddyhttp/app.go func (app *App) Start() error { // xx } Start 方法属于一个自定义的 App 结构体,用于启动应用程序中的多个 HTTP 服务器实例。 下面是对该方法的主要逻辑和关键步骤的详细分析: 1. 日志设置: 阅读全文
posted @ 2024-06-22 13:50 ercom 阅读(24) 评论(0) 推荐(0) 编辑

golang runtime.Caller 获取调用堆栈信息, Caller(1) 和 Caller(2) 的区别

摘要: func whoCalledMe() { // 获取调用堆栈信息 _, fileName, lineNo, ok := runtime.Caller(2) if !ok { fmt.Println("Failed to get caller information") return } fmt.Pr 阅读全文
posted @ 2024-06-22 13:38 ercom 阅读(67) 评论(0) 推荐(0) 编辑

golang interface guard 技术(接口守护)

摘要: Go代码的接口守卫(interface guards)技术,通常用于库的开发,以确保类型符合预期的接口。 下面示例的 Interface guards 确保 App 类型实现了caddy.App、caddy.Provisioner 和 caddy.Validator 接口。 具体来说,它通过将 (* 阅读全文
posted @ 2024-06-20 23:08 ercom 阅读(22) 评论(0) 推荐(0) 编辑

dockerfile 指令 ADD 和 COPY 的区别

摘要: Dockerfile 中的 ADD 和 COPY 指令都用于将文件或目录从构建上下文复制到 Docker 镜像中,但它们之间存在一些关键差异: 基本复制功能: COPY: 纯粹地将从构建上下文(即执行 docker build 命令时指定的目录及其子目录)中的文件或目录复制到镜像中指定的路径。 AD 阅读全文
posted @ 2024-06-20 23:03 ercom 阅读(571) 评论(0) 推荐(0) 编辑

rust 和 golang 的特点及适用场景

摘要: Rust 特点及适用场景: 内存安全: Rust 通过所有权系统和生命周期管理在编译时保证内存安全,有效防止了空指针异常、数据竞争、悬挂指针等问题,非常适合开发高性能系统软件和底层库。 并发模型: Rust 提供了强大的并发工具,如 async/await 和通道 (channel),支持高效且安全 阅读全文
posted @ 2024-06-17 19:43 ercom 阅读(212) 评论(0) 推荐(0) 编辑

用人话解释 Transformer 的执行过程

摘要: 1. 向量化。 文本 → Tokenization(分词) → Embeddings(向量化) → 模型 2. 模型需要完整上下文 且 知道 token 的相对位置及关系。 3. 关注 token 的 score。 4. 用输入文本的向量,去查找,得到值向量。 5. 得到上下文感知的向量。 在线拾取 阅读全文
posted @ 2024-06-15 22:53 ercom 阅读(26) 评论(0) 推荐(0) 编辑

golang net 包的功能概述

摘要: Go语言中的 net 包提供了一个可移植的网络输入输出接口,涵盖了 TCP/IP、UDP、域名解析以及 Unix 域套接字等功能。 该包提供了访问底层网络原语的能力,但大多数客户端仅需使用基本接口,这包括 Dial、Listen 和 Accept 函数以及相关的 Conn 和 Listener 接口 阅读全文
posted @ 2024-06-15 22:52 ercom 阅读(39) 评论(0) 推荐(0) 编辑

golang 所有关键字的列表及释义归类

摘要: golang 所有关键字的列表及释义归类,截至1.18版本。 [控制结构] if : 条件语句,基于布尔表达式的值决定是否执行特定的代码块。 else、 else if : 用在 if 语句之后,当条件表达式为假时执行的代码块。 switch : 多路选择语句,根据不同的情况执行不同的代码块。 ca 阅读全文
posted @ 2024-06-15 22:50 ercom 阅读(19) 评论(0) 推荐(0) 编辑

caddy run 命令详解

摘要: caddy run 这个子命令启动 Caddy 进程,并可选地使用初始配置文件进行引导,并无限期地阻塞,直到服务器停止运行,即 run 是在"守护进程"模式(前台)中运行 Caddy。 使用参数: [--config <path> [--adapter <name>]] [--envfile <pa 阅读全文
posted @ 2024-06-14 23:25 ercom 阅读(68) 评论(0) 推荐(0) 编辑

caddy 服务器的 Docker 镜像构建流程

摘要: 构建一个包含 Caddy 服务器的 Docker 镜像,关键部分: https://github.com/caddyserver/caddy-docker/blob/master/Dockerfile.tmpl这个 Dockerfile 精心设计,用于自动化构建一个包含最新版 Caddy Web 服 阅读全文
posted @ 2024-06-14 23:22 ercom 阅读(185) 评论(0) 推荐(0) 编辑

golang select {} 和 for {} 的区别

摘要: select {} 与 for {} 在 Go 语言中都是循环结构,但它们的行为和用途有所不同: select {}: 是一个无限阻塞的 select 语句,没有指定任何 case。 主要用于等待通道操作或其他事件,在没有明确的通信或信号需求时保持运行状态。 当程序需要在没有明确结束条件的情况下保持 阅读全文
posted @ 2024-06-14 23:19 ercom 阅读(124) 评论(0) 推荐(0) 编辑

dockerfile CMD 和 ENTRYPOINT 分别什么时候用

摘要: 在 Docker中,CMD 和 ENTRYPOINT 指令都是用来定义容器启动时运行的默认命令,但它们的用途和行为有所不同,适用于不同的场景: CMD 用途:CMD指令用来指定容器启动后默认执行的命令及其参数。它更倾向于提供默认的或可被替代的执行行为。 可覆盖性:当使用docker run命令启动容 阅读全文
posted @ 2024-06-13 19:58 ercom 阅读(84) 评论(0) 推荐(0) 编辑

caddy 入口 rootCmd 概览

摘要: $ go run cmd/caddy/main.go cmd/caddy/main.go Caddy入口点,Caddy的功能主要通过模块提供,可以通过在导入语句中添加模块来插入。 该程序的目的是为了定制 Caddy 构建,而无需修改源代码。可以通过复制 main.go 文件到新文件夹,编辑导入语句以 阅读全文
posted @ 2024-06-13 19:52 ercom 阅读(22) 评论(0) 推荐(0) 编辑

golang reflect 反射机制的使用场景

摘要: Go语言中的 reflect 包提供了运行时反射机制,允许程序在运行时检查和操作任意对象的数据类型和值。 以下是 reflect 包的一些典型使用场景: 1. 动态类型判断与转换:当需要处理多种类型的变量且具体类型直到运行时才能确定时,可以使用反射来检查变量的实际类型,并在可能的情况下进行类型转换。 阅读全文
posted @ 2024-06-13 19:45 ercom 阅读(36) 评论(0) 推荐(0) 编辑

golang 字节级操作和字符串的区别与转换 []byte(message)

摘要: []byte(message) 将字符串 message 转换为一个字节切片( []byte )。 在Go语言中,字符串是不可变的,而字节切片可以被修改。 这种转换常用于处理字符串的字节级操作,如编码、解码或写入IO流。 字节级操作 和 字符串操作 在编程中有本质的不同,主要体现在以下几个方面: 1 阅读全文
posted @ 2024-06-12 21:10 ercom 阅读(30) 评论(0) 推荐(0) 编辑

golang sync.Map 与使用普通的 map 的区别

摘要: 使用sync.Map与普通的Go map主要有以下几点区别: 1. 并发安全性 普通map: 在没有外部同步的情况下,不是并发安全的。在多goroutine访问时,如果没有适当的锁或其他同步机制保护,可能会导致数据竞争和未定义行为。 sync.Map: 是并发安全的。它内部实现了必要的同步机制,允许 阅读全文
posted @ 2024-06-12 21:06 ercom 阅读(86) 评论(0) 推荐(0) 编辑

[FAQ] vscode 装了 vim 之后,ctrl+p 不起作用?

摘要: # 进入设置(左下角setting) --> vim.handleKeys --> 在 settings.json中编辑, 把需要禁用Vim的热键以json格式写入vim.handleKeys中即可,如: "vim.handleKeys": { "<C-a>": false, "<C-b>": fa 阅读全文
posted @ 2024-06-11 22:14 ercom 阅读(35) 评论(0) 推荐(0) 编辑

golang oncefunc.go 的 OnceFunc 和 once.go Do 的区别

摘要: sync.Once 的 Do 方法和 OnceFunc/OnceValue/OnceValues 函数的主要区别在于使用场景和灵活性: 1、直接使用Once.Do(f): 更基础、低级的 API。你需要显式声明一个 sync.Once 变量,然后在其上调用 Do(f)方法来执行函数f。 仅保证函数f 阅读全文
posted @ 2024-06-11 22:00 ercom 阅读(29) 评论(0) 推荐(0) 编辑

golang 特别“别扭”的地方,或者说是特色

摘要: 尽管 Go 语言在很多方面设计得相当精巧,但仍有一些特性或限制可能让部分开发者觉得 “别扭” 或需要时间适应。 下面是一些常见的讨论点: 1. 错误处理: Go 语言没有异常机制,而是通过返回错误值的方式来处理错误。 这意味着在很多函数调用后都需要检查错误,可能会导致代码中出现大量的错误检查逻辑,有 阅读全文
posted @ 2024-06-11 21:57 ercom 阅读(24) 评论(0) 推荐(0) 编辑

golang 泛型的格式写法

摘要: Go语言中的泛型(Generics)是在 Go 1.18 版本中引入的一个重要特性,它允许你编写可重用的代码,而不需要为每种数据类型重复编写相同的逻辑。 泛型通过参数化类型(type parameters)来实现,使得函数、方法、接口和结构体可以与多种类型一起工作。 下面详细介绍Go语言中泛型的基本 阅读全文
posted @ 2024-06-11 21:56 ercom 阅读(47) 评论(0) 推荐(0) 编辑

golang sync.Once 保证某个动作仅执行一次的机制

摘要: type Once struct { done atomic.Uint32 m Mutex } sync.Once 是 Go 语言标准库 sync 包中的一个类型,用于确保某个操作(函数)只被执行一次。 这对于初始化操作非常有用,比如数据库连接的建立、日志文件的打开等,这些操作通常只需要在程序启动时 阅读全文
posted @ 2024-06-10 20:09 ercom 阅读(65) 评论(0) 推荐(0) 编辑