LDAP 简明科普

1. 什么是 LDAP LDAP(Lightweight Directory Access Protocol) 是一种用于查询和管理目录信息的协议。 简单说: LDAP 是一个“按层级组织的用户信息数据库 + 查询方式” 2. LDAP 存什么 常见内容包括: 用户账号(用户名、ID) 密码(加密存储) 用户组(权限) 部门 / 组织结构 邮箱、电话等信息 3. 数据结构(像树) LDAP 的数据是树状结构: graph TD A[公司] --> B[技术部] A --> C[人事部] B --> D[用户A] B --> E[用户B] C --> F[用户C] 每个节点都有唯一标识(DN)。 4. LDAP 能做什么 用户登录认证(验证账号密码) 查询用户信息 管理组织结构 权限分组管理 5. 常见使用场景 公司统一账号系统 内部系统登录(单点登录基础) 权限集中管理 6. 常见实现 OpenLDAP Active Directory(微软) 7. 一句话总结 LDAP 是一个“按树组织的用户信息数据库 + 查询协议”,用于统一管理账号和组织结构

2026年4月8日 · 1 分钟

SSH、跳板机和隧道

1. SSH 是什么 SSH(Secure Shell) 是一种用于远程登录和通信的加密协议。 核心作用 远程登录服务器 执行命令 安全传输数据 建立加密通道 简单理解 就像一根“加密的远程操作线”,你在本地操作,实际在远程执行。 图示 graph LR A[本地电脑] -- SSH连接 --> B[远程服务器] A -->|输入命令| B B -->|返回结果| A 2. 跳板机(Bastion Host)是什么 跳板机是一台中间服务器,用于访问内网机器。 为什么需要 内网服务器不能直接暴露到公网 提供统一入口(安全控制、审计) 简单理解 像“门卫”,必须先经过它,才能进入内部系统。 图示 graph LR A[本地电脑] --> B[跳板机] B --> C[内网服务器] 常见连接方式 ssh -J user@跳板机 user@内网服务器 3. 隧道(SSH Tunnel)是什么 SSH 隧道是一种通过 SSH 转发网络流量的技术。 本质 把本地请求“通过 SSH 转发到远程” 3.1 本地端口转发(Local Forward) 示例 ssh -L 3307:127.0.0.1:3306 user@服务器 ...

2026年4月8日 · 1 分钟

加密体系

1. 三个核心问题 整个体系其实在解决三件事: 你是谁?(身份认证) 数据能不能被偷看?(加密传输) 如何安全地交换密钥?(密钥分发) 2. 非对称加密(公钥 / 私钥) 核心定义 使用一对密钥:公钥 + 私钥 公钥:可以公开 私钥:必须保密 二者不可互相推导 两种用途(关键区分) ① 加密通信 graph LR A[发送方] -->|公钥加密| B[密文] B --> C[接收方] C -->|私钥解密| D[明文] ② 身份认证(SSH) sequenceDiagram participant A as 客户端(私钥) participant B as 服务器(公钥) B->>A: challenge A->>B: signature B->>B: 公钥验证 B->>A: 通过/拒绝 关键公式 signature = Sign(私钥, challenge) Verify(公钥, challenge, signature) = true 本质总结 私钥负责“生成证明”,公钥负责“验证证明” 3. SSH:基于签名的认证机制 文件结构 ~/.ssh/id_ed25519 # 私钥 ~/.ssh/id_ed25519.pub # 公钥 ~/.ssh/authorized_keys # 服务器保存公钥 免密登录本质 服务器信任“某个公钥”,允许对应私钥登录 ...

2026年4月8日 · 2 分钟

博客标签设计

一、设计原则 标签用于表达文章的“内容特征”,而不是分类。 分类(categories)用于表示文章所属目录(放在哪),标签(tags)用于描述文章内容(讲什么)。 标签统一为单层结构,不做层级划分。 标签体系同时服务两种需求: 浏览:快速理解文章内容 检索:精确定位知识点 二、标签分类(逻辑分层) 1. 技术类标签(核心索引) 用于标识具体技术或组件,可包含低频标签: JVM Java Python Django Git Maven Linux Hive Spark Kafka Flink Hadoop Yarn Flume Presto ClickHouse MySQL MongoDB Elasticsearch 说明: 技术标签允许低频存在,用于精确检索,不需要强制精简。 2. 内容类型标签(高频 ⭐) 用于标识文章表达形式: 速查 总结 原理 教程 配置 调优 源码 笔记 摘录 记录 3. 场景类标签(中频) 用于标识问题或使用场景: 踩坑 实战 排错 面试 4. 通用认知标签(非技术内容 ⭐) 用于 reading / thoughts / ideas: 思考 认知 学习 产品 副业 灵感 想法 三、使用规范(重点) 每篇文章建议使用 2~5 个标签 建议组合: 1~2 个技术标签(可低频) 1 个类型标签(必选) 可选 1 个场景或认知标签 技术标签优先表达“具体技术点” 类型标签控制文章表达形式(避免缺失) 避免重复语义标签(如:调优 vs 优化,仅保留调优) 四、示例 示例 1:Git 命令速查 tags: ...

2026年4月1日 · 1 分钟

jdk8和jdk8u有什么区别

JDK 8 代表的是一个大版本的更新,你可以理解成定义好了框架和实现 JDK 8u代表的是基于JDK 8的后续小版本的迭代,里面不会有 JDK 8 标准之外的内容,只会包含一些安全性,性能等方面的修改,例如某个Class的实现优化 观点一 一般来说,建议选用大版本下面最新的u版本,比如你要选择 JDK 8 ,那么就选择 JDK 8u281,这个是目前8这个大版本的最新版本,原因是里面会修复和优化前序版本的一些问题 观点二 正常来说,应该使用OpenJDK8。 OpenJDK8u是一些后期维护,一些特性并不是想要的。 观点三 对于jdk8u 这个最新的免费版本号,其实包括了两个,8u201和8u202,这个就是JDK版本号的命名问题了。从2014年10月发布Java SE 7 Update 71(Java SE 7u71)开始,Oracle在发布Oracle JDK关键补丁更新(CPUs:Critical Patch Updates)的同时一般会发布相应的补丁集更新(PSUs:Patch Set Updates)。其中Oracle JDK关键补丁更新(CPUs)包含安全漏洞修复和重要漏洞修复,Oracle强烈建议所有Oracle JDK用户及时升级到最新的CPU版本,Oracle JDK 关键补丁更新(CPUs)版本号采用奇数编号。Oracle JDK补丁集更新(PSUs)包含相应CPUs中的所有修复以及其他非重要修复,仅当受到Oracle JDK关键补丁更新(CPUs)版本之外的其他漏洞的影响时才应当使用相应的补丁集更新 (PSUs),Oracle JDK补丁集更新(PSUs)版本号采用偶数编号。因此,一般情况下我们只要下载奇数编号的最新版本更新就行了。 简单来讲,Oracle将奇数版本作为BUG修正并全部通过检验的版本,Oracle官方建议用在生产环境最好使用这个版本。Oracle会在奇数版本之后同时发布一个偶数版本,偶数版本包含了奇数版本所有的内容,以及未被验证的BUG修复,Oracle官方建议,除非你受到未验证BUG影响,急需BUG修复才使用这个版本。因此,8u201是CPUs,关键补丁更新。8u202是PSUs,补丁集更新,推荐下载8u201。

2025年3月29日 · 1 分钟

部署CDH踩坑总结

1.zookeeper刚启动时会报错,晾它两分钟会就好了 2.更改或迁移服务时一定要切换到维护模式并停止当前服务!!! 3.cdh01的hadoop组件起不来,原因是一些文件夹的权限问题,更改权限并且更改拥有者及组(参照其他服务器) 4.内存不足主要因为NodeManager内存调的太高,调小即可(个人经验,5台机器可用内存和为30*4+20=160G,可同时对20G的数据做处理,感觉够用了) 5.oozie报错:Failed to install Oozie ShareLib,这个问题是cdh6.2的通病,只要安装oozie就会 出现(无论是升级,还是新装。 解决: cd /opt/cloudera/parcels/CDH/lib/oozie/libtools ln -s ../../../jars/logredactor-2.0.7.jar logredactor-2.0.7.jar 执行完后重启oozie。 6.oozie端口号11000冲突,改为11002 7.从节点不要提前安装agent服务!!!直接在web界面安装! 8.把CM和CDH装好后面就轻松多了 9.==主机名不要出现下划线!==

2024年6月8日 · 1 分钟

指标字典

1.指标字典 指标字典,是业务数据标准化的基础,目的是对指标进行统一管理,方便共享达成对业务指标的共识,并且统一修改和维护。指标字典可以更新在 Excel或者Wiki中。如果有足够多的资源,那么开发指标管理模块可以放在数据管理系统中再配合血缘关系,就可以很方便追踪数据流转了。 1.1设计指标字典的主要目的: (1)规范维度和量度命名,命名规则要尽量做到明确、通用、易懂。 (2)对维度或量度统一计算口径,避免岐义。 (3)涵盖尽可能多的关注的核心维度和量度,以此为基础推动数据建设,确保指标字典里覆盖的维度都可区分、指标都可统计 (4)基于指标字典,将核心维度和量度注入元数据中心,接入指标提取工具,后续实现不需要写QL语句即可完成自査询及分析需求 指标字典的建立,是搭建数据平台的基础。 1.2指标、量度和维度的相关概念 1.2.1 指标: 定义:衡量目标的方法 构成要素:维度+汇总方式+量度 (1)维度=哪些角度去看问题 (2)汇总方式=哪些方法衡量问题 (3)量度=目标是什么问题 1.2.2 维度: 定义:看问题的角度和方向,例如我要从年份看毛衣的销量,那么年份就是我看问题的角度 1.2.3 量度: 定义:对一个物理量的测定,通常数字+计算单位表示。例如,金额,次数,率 1.3 指标定义规范 1.3.1怎么定义一个合格的指标字典?需要遵守什么规范? 一个指标一经录入,它的命名和所有下钻维度的口径都已确定(默认口径),这称为指标的一义性。 例如,“交易额”这个指标默认的时间口径是:支付时间,默认的城市口径是:下单所在城市等。 如果需要按下单时间口径看订单金额,我们定义了一个新的指标“下单交易额”。一个在某些维度上口径不确定的“指标”是不能被使用的,在业务场景中是毫无意义的。 1.3.2指标一般分为基础指标、普通指标和计算指标三类。 1.3.2.1基础指标 例如,“交易额”作为一个基于单纯实体的属性的简单计算,它没有更上游的指标,即它的父指标是它自身。我们称这样的指标为基础指标。 1.3.2.2.普通指标 所谓普通指标,即在单一父指标的基础上通过一些维度上的取值限定可以定义的指标。 例如,对于购买中PC端首次购买用户数,限制条件为首次购买用户中下单平台=PC。 1.3.2.3.计算指标 可以在若干个注册指标之上通过四则运算、排序、累计或汇总定义出的指标称为计算指标。 1.4量度和维度都考虑好了,在构建一个指标字典时我们应该考虑哪些要素呢? 1.4.1指标字典要素如下: 1.4.2通常指标字典包含指标维度和指标量度两个部分,如下: 总结: 通过上面的步骤和方法,根据自身业务情况,建立一个指标字典。 指标字典在建立知乎,要经过各个业务产品经理的评审,纠正错误不明或者有歧义的指标,在达成一致后,由数据产品推广,共大家参考使用。 好的指标字典就像二叉树一样,从单维度,粗糙维度分析,再细拆维度。看问题需要:由大到小,由内到外。

2024年5月11日 · 1 分钟

restful风格

一、什么是 REST ?(一种软件架构风格) 缩写:REST (不是"rest"这个单词) 外文名:Representational State Transfer,简称REST。 中文名:表现层状态转移。 提出时间:2000年。 属性:一种软件架构风格。(以Web为平台的。web服务的架构风格,前后端接口时候用到。) REST之所以晦涩难懂,是因为前面主语(Resource )被去掉了。 全称是: Resource Representational State Transfer。 通俗来讲就是:资源在网络中以某种表现形式进行状态转移。 分解开来讲解: Resource:资源,即数据(这是网络的核心); Representational:某种表现形式,比如用JSON,XML,JPEG等; State Transfer:状态变化。通过HTTP的动词(get查询、post新增、put修改、delete删除)实现。 一句话描述 REST 实质: URL 中只使用名词来定位资源,用 HTTP 协议里的动词(GET、POST、PUT、DELETE)来实现资源的增删改查操作。 什么意思呢? 比如,我们有一个 friends 接口,对于 “朋友” 我们有增删改查四种操作,怎么定义 REST 接口? 增加一个朋友,uri: generalcode.cn/v1/friends 接口类型:POST 删除一个朋友,uri: generalcode.cn/va/friends 接口类型:DELETE(在 http 的 parameter 指定好友 id) 修改一个朋友,uri: generalcode.cn/va/friends 接口类型:PUT(在 http 的 parameter 指定好友 id) 查找一个朋友,uri: generalcode.cn/va/friends 接口类型:GET 上面我们定义的四个接口就是符合 REST 协议的,请注意,这几个接口都没有动词,只有名词 friends,都是通过 Http 请求的接口类型来判断是什么业务操作。 举个反例: generalcode.cn/va/deleteFriends 该接口用来表示删除朋友,这就是不符合REST协议的接口。 不能用deleteFriends ,而应该就用friends + http请求的delete方式。 ...

2024年4月13日 · 1 分钟

ai栈

任务类型 工具 / 模型 说明 / 能力边界 成本 厂商 文档整理 / 项目重构 / 架构设计 Claude Code(基于 Claude Opus) 高质量理解长上下文,支持跨文件重构和工程分析;生成方案/代码,但需要外部环境执行 pro订阅 claude 写代码 / 单文件实现 OpenAI Codex(GPT-Code 系列) 自动生成可运行代码,适合函数、模块、脚本任务;执行依赖你的环境或接口 plus订阅 openAi 实时代码辅助 / IDE 提示 GitHub Copilot IDE 插件,提供智能补全和片段建议,不提供 API 对话 / 问答 /策略讨论 ChatGPT Plus 快速交互、概念解释、方案讨论 plus订阅 openAi 机械重复 / 简单批处理任务 国内轻量模型 低成本处理大量重复操作或简单格式化任务 miniMax 自动化执行 / 跨渠道智能代理 OpenClaw 可自托管的 AI Agent 框架;整合多模型、消息渠道和技能;能持续管理任务、执行脚本、调用 API 和操作工具;适合自动化工作流和多通道触发,需配置和监管

2024年1月6日 · 1 分钟

开发流程

1. 开发流程 **说明:**此开发流程符合大部分需求场景,少数需求可能流程会有所增减。 2. 流程说明 2.1 需求评审 详细了解本次需求的背景和细节,并讨论需求的可行性。 比如: 当前需求是否明确? 新需求是什么? 需求背景及解决什么问题? 如果需求复杂程度大,提出是否需要分阶段实施? 需求完成的期望指标是什么? 如何评判? 如何交付? 技术能否实现、逻辑是否有问题? 进入开发阶段测试,遇到问题与谁对接,来协调解决问题? 如果需求复杂请让需求方拆解需求去描述要达到的目的。 如果需求未做到目的明确,清晰合理,请让需求方解决疑问点。 需求对接完,请邮件告知。 2.2 技术评审 阐述详细的技术实现方案,评估一下是否有不合理之处,比如表结构如何设计、接口怎么定义、有没有技术难点等。 2.3 开发 & 测试排期 评估具体的工作量,根据工作量安排各个步骤要完成的截止日期。 2.4 输出开发设计文档 此文档放在 confluence 上,大致包含需求背景、开发设计(技术方案)、排期计划、开发流程的具体内容、附录等。需求背景、开发设计(技术方案)、排期计划要在开发测试开始前书写完成,其他部分可以根据进度补充完善。 2.5 开发 & 测试 根据技术方案和排期,具体实现。 2.6 需求方验收 验收阶段,开发如有 bug 修改 bug,可以提前提供部分样例结果进行预验收。 2.7 生产部署 根据具体环境部署。 2.8 需求复盘总结 复盘一下问题主要出在哪里,以后如何规避,哪些优点可以以后借鉴等。 3. 其他注意事项 3.1 关于对接和验收阶段 首版需求已评审过的前提下,在此阶段如果不可避免出现需求变更频繁和很多不确定的时候,要明确告知需求方批量提供需求点或完善点,避免随时出现一个接一个,导致此需求一直完不成。 最好补充一次批量提完,如果第两个及以上批次,建议需求当需求变更处理。 开发要合理评估,尽量避免开发不合理需求。 4. 附件 Java 开发手册:!泰山版.pdf

2023年11月12日 · 1 分钟