- 博客(252)
- 收藏
- 关注
原创 【go】普通map和sync.map的区别,源码解析
的双 map 设计,读操作可以无锁原子读,写操作用锁保护,并在一定 miss 次数后把。是非并发安全的,需要开发者手动用。中 miss 次数过多,会把。的同时,整体高并发安全。的策略,去减少锁冲突。
2025-09-29 20:18:28
431
原创 【MySQL】深分页的性能优化,游标方案和覆盖索引+延迟回表方案
OFFSETSELECT *ididid口述改进:select时不用*而是把要查的字段写明,order by 字段可以改成id,或者建立联合索引,
2025-09-29 20:18:00
820
原创 【Docker】docker swarm中overlay网络的组建,排错案例,docker config的更新
容器间无法通过服务名互相访问(报),并且有作为拨号目标导致连接失败;此外浏览器重定向尝试访问也失败。Swarm 内服务 DNS 不生效 →。浏览器访问外部主机时使用了 Swarm 内部服务名 → 浏览器无法解析mediahub。
2025-09-18 09:29:42
936
原创 【Docker】docker swarm使用场景小结,重启后的多个退出容器的清理
Swarm 模式下,容器由服务管理,退出的容器会被替代,但历史记录仍会保留。→ 查看服务列表→ 查看副本运行情况→ 查看日志清理环境用。如果只是单机运行,推荐直接用,而不是 Swarm。
2025-09-18 09:29:31
951
原创 【Docker】通过分离依赖层和逻辑层构建顺序,使得开发中的多次构建情境下,依赖层的构建可以走缓存,加快构建速度
Docker 按行读取 Dockerfile,每执行一条指令就会生成一层。Docker 在构建时会检查“当前指令 + 指令依赖的输入(比如 COPY 的文件)”是否与之前构建过的某个层相同。把依赖描述文件(、)先单独复制并 ,这样:然后再把源码复制进来并编译 —— 这样只有编译层因源码变化而重跑。下面是我把你的优化建议整理并修改后的最终 Dockerfile(带行内注释)。把它放在项目根目录下执行构建(或在 CI 中执行)。小细节说明(针对你的原文中的几处) → 建议改为 ,并按上面分两步:先单独 ,
2025-09-17 16:13:15
935
原创 【Docker】docker指定不同的构建上下文路径,与.dockerignore在构建上下文中的读取逻辑
的作用范围是构建上下文的根目录。-f参数只决定 Dockerfile 的路径,不影响上下文。如果把子目录屏蔽掉了,那么这个子目录的文件就不会出现在构建上下文中,COPYADD就会失败。以子目录作为构建上下文,并在子目录下维护自己的。
2025-09-17 16:13:04
433
原创 【测试】Jmeter测试本地应用的系统性能,qps,tps等
对于实习项目,通过 JMeter 测试 QPS(每秒查询率)、响应时间、并发能力等指标,能很好地体现你对系统性能的关注。解压后进入bin目录,双击。
2025-09-15 09:44:47
1093
原创 【Docker】docker内的MySQL,Redis,PostgreSQL数据库容器的数据,备份、导出
如果容器崩溃或删除,数据会不会丢失?其实只要你在部署时通过的方式保存数据,就可以避免这一问题。注意可以通过查看Mounts,以获取挂载信息从中可以看到docker这样也可以解释:在保留/opt/docker/mysql/data的情况下,重新run一个容器,将容器卷挂载配置好后,容器继承数据的行为你的 MySQL 数据被挂载到了宿主机的即使容器崩溃或删除,数据依然会保存在宿主机上。使用。
2025-09-15 09:44:30
659
原创 【JavaScript】读取商品页面中的结构化数据(JSON-LD),在不改动服务端情况下,实现一对一跳转
/ 悬停效果// 点击跳转${// 悬停效果 customButton . addEventListener('mouseover' ,() => customButton . style . backgroundColor = '#C89A2E');// 点击跳转 customButton . addEventListener('click' ,() => {
2025-09-02 22:51:22
613
1
原创 【JavaScript】前端两种路由模式,Hash路由,History 路由
Hash 路由:前端自给自足,后端几乎零配合;代价是 URL 与 SEO。History 路由:用户体验与 SEO 友好,但刷新/直达必须有服务端兜底,并和 API、静态资源做好“分流”。对 Go 后端来说,掌握本文几段Nginx/Caddy/Gin/GoFrame 样例配置,就能把前端 History 路由稳定落地,避免 404 与静态资源回退等典型坑。注解:真正上线前,务必按“直接打开深链刷新后退前进断网重试缓存与版本回滚”五类场景做灰度验证;
2025-09-02 22:44:12
1572
原创 【JavaScript】async/await 与 Fetch 传参,PUT,PATCH,文件上传,批量删除等前端案例
看懂调用流程里用发起请求,try/catch处理成功/失败,这是前端调用后端接口的标准模式。参数对应关系GET 请求参数在 URL 上 → 后端读 QueryPOST 请求参数在 Body 里,JSON 格式 → 后端解析 JSON Body表单格式 → 后端读 PostForm错误排查思路:如果前端说“接口没反应”,先看 Fetch 的method和url是否正确;如果“参数没收到”,检查与参数格式是否匹配(JSON 对应,表单对应。
2025-09-01 22:28:57
902
原创 【go】URL 与 URI:后端开发必须理清的核心概念,URL中,# 后所表示的 片段标识符Fragment
特点说明前端专属不发送到后端,完全由前端控制无刷新操作修改 Fragment 不触发页面刷新,适合 SPA 路由和页面内导航暴露在 URL 中会被浏览器历史记录保存,不适合传递敏感信息轻量易解析前端可通过快速获取和修改,无需额外依赖。
2025-09-01 14:21:32
1226
原创 【go】三端实时反馈系统的设计,websocket实现
const (阶段主要工作遇到的挑战解决方案收获需求分析确定功能范围和角色权限需求不够明确逐步细化,迭代完善需求分析的重要性架构设计选择技术栈,设计数据库技术选型困难根据项目规模选择合适技术架构设计要考虑扩展性基础开发实现CRUD和认证Go语言不熟悉查阅文档,实践学习基础扎实很重要实时通信WebSocket集成消息重复发送理清消息流向,统一处理实时通信的复杂性功能完善图片上传,状态管理前后端数据不一致制定统一的数据格式规范数据一致性的重要性问题修复解决各种bug。
2025-08-29 18:33:05
826
原创 【计算机网络】前端基础知识Cookie、localStorage、sessionStorage 以及 Token
是否自动发给服务器Cookie:是(每次请求都带)。另外三个:否(需手动处理)。生命周期localStorage:永久(除非手动删)。sessionStorage:当前标签页生命周期。Cookie/Token:可设置过期时间。安全性敏感信息(如登录凭证)优先用Cookie(带 HttpOnly)或Token(存在内存,不用 localStorage)。非敏感信息(如用户偏好)用 localStorage。适用场景登录状态维持:Cookie(传统网站)或 Token(前后端分离)。
2025-08-29 17:11:31
1531
1
原创 【ElasticSearch】各字段详解,案例演示
提示:ES 是“搜索引擎 + 列存分析”的混合体,所以决定你能做什么查询/排序/聚合,以及性能如何。
2025-08-24 20:24:19
629
原创 【ElasticSearch】IK分词器安装,配置修改,支持新增词组,中文常用mapping使用案例
— 主配置文件—— 停用词main.dic—— 系统内置词库(可新增)—— 自定义扩展词典# my_dict.dic 豆包编程助手自定义词汇# my_stopword.dic 的了呢啊下载对应版本的 IK 插件wget https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-<版本号>.zip安装到容器并重启docker cp zip包 es01:/tmp/配置自定义词典修改添加。
2025-08-22 16:08:22
1676
原创 【ElasticSearch】使用docker compose,通过编写yml安装es8.15和kibana可视化界面操作,go连接es
Docker 搭建环境,并在过程中标注常见问题和解决方案。
2025-08-22 15:50:31
1015
原创 【Kafka】常见简单八股总结
Kafka 集群│ ├─ Topic A 的 Partition 0│ └─ Topic B 的 Partition 1│ ├─ Topic A 的 Partition 1│ └─ Topic C 的 Partition 0└─ Topic B 的 Partition 0Topic A 包含 2 个 Partition,分别在 Broker 1 和 Broker 2 上。每个 Broker 存放了不同 Topic 的 Partition。
2025-08-20 17:34:56
1399
原创 【MongoDB】多种聚合操作详解,案例分析
我们需要将这两个集合的数据按照商品编号(item)进行关联,得到包含订单信息和商品库存信息的完整文档。建议逐段复制执行,每次执行前确保集合存在且数据格式正确。遇到语法错误时,检查括号闭合和逗号使用。我们分三次执行,以便更好理解命令参数。
2025-08-18 18:44:58
499
原创 【MongoDB】常见八股合集,mongodb的特性,索引使用,优化,事务,ACID,聚合查询,数据复制机制,理解其基于raft的选举机制
自动分片分片键:可以选择高频查询字段如用户id作为分片依据,常用的还有以时间字段来分片(主要有两种分片键:范围分片,哈希分片,复合分片)MongoDB 分片需先搭建含分片节点配置服务器和路由节点的,为目标数据库启用分片,选择合适字段(如高基数字段)创建分片键索引,再为集合指定该分片键开启分片,数据将按分片键规则(范围或哈希)自动分布到各分片,应用通过路由节点透明访问。追问自动故障转移和备份细节?先分析架构,可以是一主多从,主节点宕机,通过raft协议在从节点选举。
2025-08-18 18:38:07
1216
原创 【MongoDB】工作中的中间件/数据库选择逻辑,MongoDB的使用业务
企业如何选择数据库/中间件的困惑,是许多开发人员和架构师在实际工作中不断思考的问题。
2025-08-12 10:08:42
1239
原创 【MongoDB】简单理解聚合操作,案例解析
简单说,聚合操作是MongoDB中用于对数据进行"多步处理、统计分析、格式转换"的工具。可以把它理解成一条"数据流水线":原始数据从管道入口进入,经过多个阶段(比如筛选、分组、计算、排序)的处理后,最终输出我们需要的结果。原始数据是"超市所有商品的销售记录"(包含商品名、价格、销量、日期等);聚合操作可以先筛选出"2024年的记录",再按"商品名分组",最后计算"每组的总销量和总销售额",最终得到"2024年各商品的销售统计"。
2025-08-12 10:08:07
784
原创 【MongoDB】查询计划解析,各字段理解
使用哪个索引(或是否全表扫描)执行阶段的顺序和类型数据扫描范围和预估成本查询计划就像GPS导航路线,不同的路线选择会导致截然不同的执行效率。分析查询计划就是找出最优路线的过程。优先使用索引:避免COLLSCAN,确保查询使用IXSCAN为常用查询条件创建索引复合索引中高选择性字段放在前面关注关键指标应接近nReturned应尽可能低避免的SORT操作优化查询模式追求PROJECTION_COVERED(覆盖索引)使用LIMIT减少处理数据量。
2025-08-11 09:29:49
1096
原创 【MongoDB】多种索引详细使用,索引使用建议,多键索引使用的注意事项
每个集合只能有一个文本索引无论是单字段文本索引还是复合文本索引包含$text的查询不能使用hint()强制指定索引// 错误示例.hint({ content: "text" }) // 试图强制使用文本索引,会失败如果$search包含多词字符串和单个词,仅匹配包含完整多词字符串的文档举例:搜索关键词为"green apple red"(包含多词字符串 “green apple” 和单个词 “red”)// 只会匹配同时包含"green apple"完整短语和"red"的文档。
2025-08-11 09:29:29
1523
原创 【MySQL】常用字符集,排序规则的理解,在反馈系统表结构的应用
字符集:优先选utf8mb4,避免utf8(除非兼容旧系统)。排序规则(MySQL 8.0)或(低版本)。(如密码、唯一标识)。排序规则(COLLATE)只会影响字符的比较和排序逻辑不会改变数据本身的存储内容,也不会修改你存入的实际值(包括 JSON 格式的图片 URL)。具体来说:对于存储的内容(包括JSON格式的图片URL)会原封不动地保存,比如你存,数据库里还是这个值。当你进行查询(如)时,会不区分大小写image.pngImage.PNGIMAGE.PNG都会被匹配到。
2025-08-09 11:23:51
617
原创 【MongoDB】聚合操作,aggregate() 聚合管道和查询操作符$expr的区别,使用场景
用当需要多步骤处理数据(如先筛选再分组,再排序)。涉及分组统计($group)、联表查询($lookup)、数据转换($project重命名/计算新字段)。处理结果需要重新组织结构(如合并字段、拆分数组)。用$expr当仅需在find()查询中实现单文档内的字段间运算或复杂比较。逻辑简单,无需多阶段处理。不需要分组、统计或联表等聚合功能。注意$expr可作为中$match阶段的条件(增强筛选能力)。两者都可能影响性能,需结合explain()分析优化(尤其$expr要警惕全表扫描)
2025-08-09 09:42:13
692
原创 【MongoDB】索引分类,使用案例讲解,explain三种模式讲解,及性能排查案例,稀疏索引
最左前缀匹配:查询条件必须包含索引的前N个字段,否则索引失效。字段顺序依据:基数高(值唯一或多样)的字段放前面,过滤性强;排序字段放最后,且排序方向需与索引一致。避免过度设计:字段数量不宜过多(建议≤5个),否则索引维护成本高,写性能下降。结合查询频率:只为高频查询创建复合索引,低频查询可接受稍慢的响应。每个集合最多支持64个索引。索引键的总长度不能超过1024字节。某些操作(如$where$expr)可能无法使用索引。为什么where和where和where和。
2025-08-08 12:51:23
874
原创 【MongoDB】查询条件运算符:$expr 和 $regex 详解,以及为什么$where和$expr难以使用索引
特性$expr$regex主要用途字段间比较和复杂逻辑文本模式匹配语法使用聚合表达式使用正则表达式性能可以使用索引(取决于表达式)有限索引支持版本需要 MongoDB 3.6+所有版本支持典型场景比较同一文档中的多个字段搜索、模糊匹配。
2025-08-08 12:01:30
1139
原创 【MongoDB】核心概念理解
文档设计优先使用嵌入式文档减少关联查询保持适度的文档结构一致性,便于Go代码处理避免文档过大(建议不超过16MB)集合规划按业务实体划分集合(如用户、订单、商品)避免过度拆分或过度合并索引策略为查询、排序、聚合操作中使用的字段创建索引复合索引字段顺序遵循"最左匹配原则"定期分析慢查询,优化索引。
2025-08-07 09:45:22
962
原创 【MongoDB】基础认知与 Docker 快捷安装,命令演示
MongoDB是一个开源的NoSQL文档数据库,它以灵活的JSON-like格式(称为BSON)存储数据,而不是传统的关系型数据库的表结构。
2025-08-07 09:45:02
698
原创 【Kubernetes】污点(Taints)与容忍(Tolerations):节点调度的“门禁系统”
污点是添加在节点上的“排斥规则”,用于阻止 Pod 被调度到该节点。如果一个节点被添加了污点,默认情况下,所有 Pod 都会被这个节点“排斥”,无法调度到该节点上。污点的核心作用是保护节点,让节点只接受“被允许”的 Pod。给_master 节点添加污点,避免普通 Pod 占用 master 资源;给带有特殊硬件(如 GPU)的节点添加污点,只允许需要 GPU 的 Pod 调度过来。
2025-08-06 09:26:10
883
原创 【Kubernetes】亲和力(Affinity):Pod 主动选择节点的“导航系统”,节点亲和性,Pod亲和性
亲和力是 Pod 上定义的“偏好或要求”,用于指导调度器将 Pod 调度到“符合条件”的节点(或与其他 Pod 靠近/远离)。它的核心作用是让 Pod 主动选择节点,而不是被动接受调度。与 Kubernetes 早期的支持更复杂的条件判断(如ANDOR逻辑);可以设置“偏好”(preferred)而非“强制要求”(required);不仅能基于节点标签选择,还能基于其他 Pod 的标签选择(如“与某类 Pod 部署在同一节点”)。要点知识。
2025-08-06 09:25:10
821
原创 【Kubernetes】使用Init Container进行高级调度,与Pod 中的 preStop 钩子 对比
kind: Podmetadata:spec:# 定义两个 Init Container- name: wait-for-mysql # 第一个:等待 mysql-service 就绪sleep 2;done"]- name: prepare-nginx-config # 第二个:处理配置文件env:value: "example.com" # 要替换的占位符值mountPath: /tmp # 挂载 ConfigMap 到 /tmp 目录。
2025-08-05 10:06:31
751
1
原创 【Kubernetes】使用CronJob进行高级调度,定时任务的应用
核心部分说明示例或默认值时间规则决定任务执行时间,采用 cron 格式,由分钟、小时、日、月、星期组成0 3 * * *(每天凌晨 3 点)任务模板定义任务具体内容,包括容器镜像、命令等容器使用 busybox 镜像,执行 echo 命令历史记录限制保留已完成和失败的 Job 数量成功 3 个,失败 1 个(默认)并发策略处理任务并发执行的策略Allow(默认)、Forbid、Replace工作流程监控时间→触发任务→执行任务→记录历史→循环执行要点知识。
2025-08-05 10:06:14
2481
原创 【Kubernetes】配置与存储,在ConfigMap和Secret配置中使用subPath进行更精确的挂载
subPath是 Kubernetes 中容器挂载配置的一个可选参数,用于指定从 Secret 或 ConfigMap 中只挂载部分内容(单个文件),而不是将整个 Secret/ConfigMap 作为目录挂载。简单说,subPath只取需要的配置文件放到指定位置不影响容器中已有的其他文件多配置源挂载到同一目录当需要从多个 ConfigMap 或 Secret 挂载文件到同一个目录时保护容器原有文件当挂载路径下已有重要文件,不想被覆盖时只需要部分配置项。
2025-08-04 09:42:44
665
原创 【Kubernetes】使用PV和PVC进行的配置与存储,创建PV、PVC和关联Pod,分析存储卷和PV的联系,多场景 PV、PVC 和 Pod 配置
解耦存储供给与使用:管理员负责维护PV(存储资源),用户只需通过PVC声明需求,无需关心底层存储细节;提高应用可移植性:应用通过PVC使用存储,迁移时只需确保目标集群有匹配的PV即可,无需修改应用配置;灵活的存储管理:支持多种存储类型(NFS、Ceph、云存储等),适应不同环境需求;安全的数据持久化:即使Pod或节点故障,数据依然保存在PV对应的存储设备中。
2025-08-04 09:41:31
1511
原创 【Kubernetes】Secret配置管理,安全管理敏感配置
Secret是Kubernetes中用于存储敏感配置数据的资源类型,与ConfigMap类似,但专门用于处理密码、令牌、密钥等需要保密的信息。数据会被Base64编码存储(注意:这只是简单编码,并非加密,真正的加密需结合RBAC权限控制或第三方密钥管理系统)可以被Pod挂载为文件或注入为环境变量与ConfigMap一样支持“配置与代码分离”,但更侧重敏感信息的安全管理简单说,Secret就像一个“加密的配置文件仓库”,专门存放需要保密的信息。
2025-08-02 16:25:38
720
原创 【Kubernetes】ConfigMap配置管理:存储配置参数,创建到容器挂载
ConfigMap是Kubernetes中用于存储非加密配置数据的资源类型,它可以存储键值对、配置文件等内容,然后被Pod中的容器引用。实现配置与应用程序代码分离方便不同环境(开发、测试、生产)使用不同配置避免配置硬编码到镜像或Pod定义中简单说,ConfigMap就像一个"配置文件仓库",Pod可以按需获取其中的配置。创建kind: Podmetadata:spec:sleep 3600"] # 输出环境变量后休眠env:# 引用ConfigMap中的key作为环境变量。
2025-08-02 16:25:23
1002
原创 【Kubernetes】使用ingress的实践,理解流量路由
用户发起请求:如Ingress接收请求检查域名是否匹配Ingress规则检查路径/api是否匹配path: /api根据规则转发到Service处理请求找到Endpoints中的Pod(10.244.1.74和10.244.2.75)通过负载均衡将请求转发到其中一个PodPod响应请求Nginx容器处理请求并返回结果。
2025-08-01 12:13:55
934
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅