avatar
文章
74
标签
62
分类
47
首页
归档
标签
分类
列表
  • 音乐
  • 电影
友情链接
关于我
崔安兵的博客
搜索
首页
归档
标签
分类
列表
  • 音乐
  • 电影
友情链接
关于我

崔安兵的博客

DoH和DoT是什么
发表于2025-09-29|开发网络
DNS 协议要讲 DoT 和 DoH,不可避免的我们要重温一下 DNS 协议的历史。 DNS 的历史与安全问题DNS 协议在 1987 年甚至更早的时候就被规范好,那个年代互联网安全还不是严重的威胁,DNS 协议使用非可靠的 UDP 和 TCP 协议。 UDP 的问题UDP 是一个无状态的传输协议,尽管在传递数据时非常快,但它是无法避免攻击的。此外,在数据传递时,因为网络状态差的时候,很容易发生丢包的情况。此外,UDP 是明文在网络上传输。 TCP 的问题TCP 相对于 UDP 安全性是略高。它的可靠体现在 TCP 在传递数据之前,会通过三次握手来建立连接。 然而 TCP 就是完美的解决方案吗?并不尽然。正是因为 TCP 的三次握手机制,导致 TCP 很容易被利用来实现 DOS 等攻击。 DNS 协议的安全隐患时至今日,互联网的安全环境已经截然不同。假设用户被某个攻击者盯上,我们来看原来的使用 UDP 和 TCP 协议可能存在什么样的安全隐患: 隐患一:无法验证对端的身份当浏览器接收到一个 DNS 的响应时,它无法确认这个响应是否来自它信任的 DNS 服务商。在 DNS 服务商答...
Debian 12 使用NTP同步时间
发表于2025-09-29|Debian
在 Debian 12 上使用 ntpd(Network Time Protocol Daemon)进行时间同步可以提供高精度和稳定的时间服务。以下是详细的设置步骤: 1. 安装 NTP 服务首先,确保系统包是最新的,然后安装 ntp: 12sudo apt updatesudo apt install -y ntp 2. 配置 NTP 服务器ntpd 的配置文件位于 /etc/ntp.conf。安装完成后,您可以编辑此文件以指定 NTP 服务器和调整其他设置。 1sudo nano /etc/ntpsec/ntp.conf 在文件中找到以 pool 或 server 开头的行,这是默认的 NTP 服务器。可以将它们替换为您想要使用的 NTP 服务器。例如,使用公共的 NTP 服务器: 12345# 默认的服务器配置pool 0.debian.pool.ntp.org iburstpool 1.debian.pool.ntp.org iburstpool 2.debian.pool.ntp.org iburstpool 3.debian.pool.ntp.org iburst...
Docker-compose ports和expose的区别
发表于2025-09-29|开发网络
docker-compose中有两种方式可以暴露容器的端口:ports和expose。 1 portsports暴露容器端口到主机的任意端口或指定端口,用法: 1234ports: - "80:80" # 绑定容器的80端口到主机的80端口 - "9000:8080" # 绑定容器的8080端口到主机的9000端口 - "443" # 绑定容器的443端口到主机的任意端口,容器启动时随机分配绑定的主机端口号 不管是否指定主机端口,使用ports都会将端口暴露给主机。 2 exposeexpose暴露容器给link到当前容器的容器,用法: 1234expose: - "3000" - "8000" 以上指令将当前容器的端口3000和8000暴露给link到本容器的容器。 和ports的区别是,expose不会将端口暴露给主机。
Git 创建远程仓库推送出现 refusing to merge unrelated histories 错误
发表于2025-09-29|开发
背景在本地创建了项目并使用git进行跟踪,在远程仓库创建了项目,并进行了一些初始化,例如生成了README.md Linces等文件的时候,关联远程仓库并推送的时候会出现下面的报错: 1* branch master -> FETCH_HEAD = [up to date] master -> origin/master fatal: refusing to merge unrelated histories 核心报错原因该错误是 Git 的安全机制拦截:本地仓库和远程 origin/master 分支被判定为 两个完全独立、无血缘关系 的仓库(无共同的初始提交),Git 默认拒绝合并这类「无关历史」,避免仓库数据混乱。 ✅ 你的场景补充:up to date 仅代表分支提交记录数量一致,不代表历史同源,核心矛盾是「历史无关」而非「版本不一致」。 方案 1:【最优推荐】强制合并无关历史(一行命令解决,99% 场景适用)这是 Git 官方提供的专属解决方案,直接添加参数允许合并无血缘关系的仓库,保留双方所有提交记录,是最便捷、最常用的方法: 核心命令(直接执行,一...
Nginx 反向代理相关配置
发表于2025-09-29|中间件
当我们在一台服务器上 启动多个服务时, 因为在 http 协议下默认端口是 80 端口, https 下默认是 443 端口,为了好记和美观我们 只能对外暴漏这两个端口。 以 http 协议 为例假设我 有个后台服务在 127.0.0.1:3000这个服务里面有个接口 /aaa/bbb如果你的 后台服务启动到 3000 端口http://xxxx.com:3000/aaa/bbb 这样也是可以访问的但是,不好记也不美观.访问时 希望http://xxxx.com/api/aaa/bbb或http://api.xxxx.com/aaa/bbb所以我们得 让 Nginx 启动到 80 端口上, 然后 Nginx 通过 /api 前缀 或 二级域名 来进行代理到 目标服务 nginx.conf 配置123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657...http { ... server { ...
Nginx 配置 Websocket
发表于2025-09-29|中间件
WebSocket 和HTTP虽然是不同协议,但是两者“握手”方式兼容。通过HTTP升级机制,使用HTTP的Upgrade和Connection协议头的方式可以将连接从HTTP升级为WebSocket。Websocket 使用 ws 或 wss 的统一资源标志符,类似于 HTTPS,其中 wss 表示在 TLS 之上的 Websocket。如: 12ws://example.com/wsapiwss://secure.example.com/ Websocket 使用和 HTTP 相同的 TCP 端口,可以绕过大多数防火墙的限制。默认情况下,Websocket 协议使用 80 端口;运行在 TLS 之上时,默认使用 443 端口。 一个典型的Websocket握手请求如下: 客户端请求: 1234567GET / HTTP/1.1Upgrade: websocketConnection: UpgradeHost: example.comOrigin: http://example.comSec-WebSocket-Key: sN9cRrP/n9NdMgdcy2VJFQ==Sec...
RocketMQListener和MessageListenerOrderly的顺序消费对比
发表于2025-09-29|学习开发
在SpringBoot集成RocketMQ实现顺序消费时,实现RocketMQListener接口并指定ConsumeMode.ORDERLY 与 直接实现MessageListenerOrderly接口 本质上都是基于RocketMQ的顺序消费机制,但两者在编程模型、封装层级和使用场景上存在区别,具体如下: 1. 所属框架与封装层级不同 RocketMQListener + ConsumeMode.ORDERLY是Spring Cloud Alibaba RocketMQ对原生API的封装,属于Spring生态的编程模型。它通过@RocketMQMessageListener注解的consumeMode属性(设置为ConsumeMode.ORDERLY)声明顺序消费,底层会自动适配RocketMQ的顺序消费逻辑,简化了开发者对原生API的直接操作。 MessageListenerOrderly接口是RocketMQ客户端原生API(org.apache.rocketmq.client.consumer.listener包下)的接口,属于更底层的编程模型。开发者需要直接对接Roc...
RocketMQ消息幂等处理
发表于2025-09-29|学习开发
为了防止消息重复消费导致业务处理异常,云消息队列 RocketMQ 版的消费者在接收到消息后,有必要根据业务上的唯一Key对消息做幂等处理。本文介绍消息幂等的概念、适用场景以及处理方法。 什么是消息幂等当出现消费者对某条消息重复消费的情况时,重复消费的结果与消费一次的结果是相同的,并且多次消费并未对业务系统产生任何负面影响,那么这个消费者的处理过程就是幂等的。 例如,在支付场景下,消费者消费扣款消息,对一笔订单执行扣款操作,扣款金额为100元。如果因网络不稳定等原因导致扣款消息重复投递,消费者重复消费了该扣款消息,但最终的业务结果是只扣款一次,扣费100元,且用户的扣款记录中对应的订单只有一条扣款流水,不会多次扣除费用。那么这次扣款操作是符合要求的,整个消费过程实现了消息幂等。 适用场景在互联网应用中,尤其在网络不稳定的情况下, RocketMQ 版的消息有可能会出现重复。如果消息重复会影响您的业务处理,请对消息做幂等处理。 消息重复的场景如下: 发送时消息重复 当一条消息已被成功发送到服务端并完成持久化,此时出现了网络闪断或者客户端宕机,导致服务端对客户端应答失败。 如果此...
Spring Cloud Alibaba体系使用OpenFeign与RestTemplate作为RPC组件
发表于2025-09-29|学习开发
前言​ 本篇将介绍Spring Cloud Alibaba使用OpenFeign和RestTemplate进行RPC调用,并且将介绍两种RPC工具如何集成Sentinel进行系统保护。 OpenFeignOpenFeign介绍​ OpenFeign是一种声明式、模板化的HTTP客户端。 在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。 OpenFeign使用​ 编写两个服务,一个provider服务account-svc一个consumer服务order-svc。 Provider代码 pom依赖 123456789101112131415161718192021222324252627<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" x...
SpringBoot 项目使用Lettuce连接Redis
发表于2025-09-29|学习开发
Maven依赖123456789101112<!-- redis 缓存操作 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- pool 对象池 --><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId></dependency> 配置项详解在 Spring Boot 中,通过 spring.data.redis.lettuce 配置项,可以对 Lettuce Redis 客户端进行配置。Lettuce 是 Spring Data Redis 默认使用的 Redis 客户端,支持高...
1…456…8
avatar
崔安兵
台下人金榜正题名,不曾认台上旧相识
文章
74
标签
62
分类
47
个人主页
最新文章
复杂度不会消灭,但架构会决定偶然复杂度构成。2026-09-17
工作6年,我是如何看待所谓的升职加薪的2026-09-16
MinIO 开源社区版没了,Docker 镜像也删干净了
MinIO 开源社区版没了,Docker 镜像也删干净了2026-09-16
Docker开启IPv6支持2026-09-03
大数据中Lambda和Kappa架构2026-09-02
分类
  • Debian1
  • Devops1
    • Docker1
  • JAVA1
    • 开发1
      • 数据库1
  • Java4
    • Spring1
标签
垃圾佬 WOL 运维 问题处理 后端 RestTemplate 个人总结 Docker SpringBoot 数据库 vscode Devops 程序开发 MongoDB 管理 问题分析 PG 软技能 MySQL 总结 网络 SSH 硬件 学习 VMware Java 前端 Vue DNS Spring Cloud Alibaba 软件测试 Spring Boot Git tcpip 测试文章 RocketMQ 方法论 DBA 架构 软件工程
归档
  • 九月 2026 6
  • 八月 2026 3
  • 七月 2026 7
  • 三月 2026 11
  • 二月 2026 2
  • 一月 2026 7
  • 十一月 2025 1
  • 九月 2025 18
网站信息
文章数目 :
74
本站总字数 :
77.4k
最后更新时间 :
© 2020 - 2026 By 崔安兵框架 Hexo 8.1.1|主题 Butterfly 5.5.4
搜索
数据加载中