<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[super的博客]]></title><description><![CDATA[大家好，我是super]]></description><link>https://blog.youkuaiyun.com/runbat</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; runbat]]></copyright><item><title><![CDATA[Ceph存储池详解]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/149782573</link><guid>https://blog.youkuaiyun.com/runbat/article/details/149782573</guid><author>runbat</author><pubDate>Tue, 12 Aug 2025 18:17:03 +0800</pubDate><description><![CDATA[ceph对象池详解]]></description><category></category></item><item><title><![CDATA[Ceph放置组(PG)详解]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/149799096</link><guid>https://blog.youkuaiyun.com/runbat/article/details/149799096</guid><author>runbat</author><pubDate>Tue, 12 Aug 2025 18:15:40 +0800</pubDate><description><![CDATA[Ceph 的放置组（PG）是数据分布的核心逻辑单元，负责将对象映射到物理存储设备（OSD），同时管理数据冗余、负载均衡和故障恢复。PG 作为中间层，通过 CRUSH 算法降低计算复杂度，并均衡数据分布。每个 PG 由唯一标识符、OSD 列表和状态等组成，状态包括 active、clean、recovering 等。PG 数量需合理计算，过多或过少均影响性能。运维操作包括查看 PG 状态、修复问题 PG 和调整分布。最佳实践包括合理设置 PG 数量、监控状态和隔离热点池。PG 是 Ceph 高效管理数据的关键]]></description><category></category></item><item><title><![CDATA[Ceph存储池参数中pg_num和pgp_num的关系]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/149642648</link><guid>https://blog.youkuaiyun.com/runbat/article/details/149642648</guid><author>runbat</author><pubDate>Tue, 12 Aug 2025 18:15:15 +0800</pubDate><description><![CDATA[摘要： Ceph中的pg_num和pgp_num是存储池关键参数，二者职责不同但通常设为相同值。pg_num决定逻辑分片(PG)总数，影响数据写入和分布粒度，修改会触发数据迁移；pgp_num限定CRUSH算法计算时的可用PG范围，仅影响新数据分布。最佳实践是保持二者一致以确保数据均匀分布，例外场景可临时调整pgp_num优化性能。调整pg_num需谨慎，因其会导致数据重平衡，而修改pgp_num仅影响新写入数据。通过ceph osd pool命令可监控和修改参数，生产环境建议通过公式计算合理PG数量。]]></description><category></category></item><item><title><![CDATA[Ceph的Crush算法思想]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/149709653</link><guid>https://blog.youkuaiyun.com/runbat/article/details/149709653</guid><author>runbat</author><pubDate>Tue, 12 Aug 2025 18:14:54 +0800</pubDate><description><![CDATA[Ceph的CRUSH算法是一种去中心化的数据分布机制，通过伪随机计算实现对象在OSD上的智能放置。核心流程包括对象到PG的哈希映射，以及PG到OSD的CRUSH计算，综合考虑权重、故障域和放置规则。算法采用层级化拓扑结构（OSD→主机→机架）和Straw2选择机制，确保数据均匀分布、负载均衡和容灾能力。CRUSH支持动态扩展，新增OSD时数据迁移量最小化，同时允许自定义放置规则优化存储策略。该设计使Ceph能够实现高效、弹性的分布式存储管理。]]></description><category></category></item><item><title><![CDATA[Ceph数据副本机制详解]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/149899405</link><guid>https://blog.youkuaiyun.com/runbat/article/details/149899405</guid><author>runbat</author><pubDate>Tue, 12 Aug 2025 18:14:28 +0800</pubDate><description><![CDATA[摘要：Ceph支持多副本(Replication)和纠删码(Erasure Coding)两种数据冗余机制。副本模式通过3副本保障数据可靠性，写入需主OSD同步到副本OSD，恢复速度快但空间利用率低。纠删码将数据分为k个数据块和m个校验块，空间效率高但恢复需计算，适合冷数据存储。两者在性能、空间利用和适用场景上各有优劣，副本适合高性能业务，纠删码适合归档场景。Ceph通过CRUSH算法控制数据分布，支持故障恢复和一致性保证，可根据业务需求选择合适机制或混合部署。]]></description><category></category></item><item><title><![CDATA[Ceph的FileStore存储引擎详解]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/149902284</link><guid>https://blog.youkuaiyun.com/runbat/article/details/149902284</guid><author>runbat</author><pubDate>Tue, 12 Aug 2025 18:13:29 +0800</pubDate><description><![CDATA[Ceph FileStore存储引擎将对象数据以文件形式存储在本地文件系统上，通过日志机制保证数据一致性。其核心架构包括Journal日志、ObjectMap对象映射和底层文件系统三个关键组件，采用&quot;先写日志再写数据&quot;的写入流程。文章详细介绍了FileStore的数据组织方式、性能优化方法，并与BlueStore进行了对比分析，包括日志配置、并发调优等具体参数设置。虽然FileStore已被BlueStore取代，但理解其工作机制对掌握Ceph存储原理仍有重要意义，文中还提供了典型问题的]]></description><category></category></item><item><title><![CDATA[Ceph BlueStore存储引擎详解]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/149902581</link><guid>https://blog.youkuaiyun.com/runbat/article/details/149902581</guid><author>runbat</author><pubDate>Tue, 12 Aug 2025 18:13:08 +0800</pubDate><description><![CDATA[摘要： BlueStore 是 Ceph 的高性能存储引擎，直接管理裸设备，绕过文件系统，优化 SSD/NVMe 性能。其核心包括 RocksDB（元数据）、WAL（预写日志）和直接数据写入，支持压缩、校验和高效空间管理。相比 FileStore，BlueStore 减少写入放大，提升吞吐，适合元数据密集型场景。生产建议分离 WAL/RocksDB 到高速设备，并启用压缩（Zstd/LZ4）。运维可通过 ceph-bluestore-tool 管理，监控关键指标优化性能。作为 Ceph 的默认后端，Blue]]></description><category></category></item><item><title><![CDATA[虚拟机环境部署Ceph集群的详细指南]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/150065112</link><guid>https://blog.youkuaiyun.com/runbat/article/details/150065112</guid><author>runbat</author><pubDate>Tue, 12 Aug 2025 18:12:37 +0800</pubDate><description><![CDATA[虚拟机Ceph集群部署摘要 本指南详细阐述了在虚拟机环境下部署Ceph集群的完整流程，包含Dashboard和Prometheus监控集成。部署方案支持3节点最小配置或6节点扩展架构，提供两种节点规划模板。环境准备包括主机名解析、SELinux/防火墙配置、NTP时间同步和专用用户创建。关键步骤涉及管理节点SSH免密登录设置、Ceph部署工具安装（需特殊处理已停维护的ceph-deploy工具），以及初始化集群配置。后续操作涵盖Monitor节点部署、OSD存储添加、集群扩展和监控组件集成，为学习者提供完整]]></description><category></category></item><item><title><![CDATA[使用ceph-deploy安装和配置RADOS Gateway (RGW)并使用S3访问集群]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/150219821</link><guid>https://blog.youkuaiyun.com/runbat/article/details/150219821</guid><author>runbat</author><pubDate>Tue, 12 Aug 2025 18:11:50 +0800</pubDate><description><![CDATA[本文介绍了使用ceph-deploy工具安装和配置Ceph RADOS Gateway(RGW)的完整步骤。主要内容包括：RGW服务安装方法、默认配置验证、S3用户创建与测试访问，以及高级配置如修改监听端口和启用HTTPS。文档还提供了常见问题解决方法，并整理了s3cmd常用命令集，涵盖存储桶管理、文件操作、权限设置等实用功能。通过本指南，用户可以快速部署Ceph对象存储服务并掌握基本管理操作。]]></description><category></category></item><item><title><![CDATA[使用openssl生成自签名证书]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/140323118</link><guid>https://blog.youkuaiyun.com/runbat/article/details/140323118</guid><author>runbat</author><pubDate>Wed, 10 Jul 2024 14:27:41 +0800</pubDate><description><![CDATA[/CN=    Common Name 域名或IP    www.xxxx.com。#/O=        Organization 组织或企业。# X.509证书包含三个文件：key，csr，crt。# -out server.key 生成的私钥文件名。# -genra    生成RSA私钥。# -subj 生成CSR证书的参数。# 生成CSR(证书签名请求)# -req 生成证书签名请求。# -out 生成的CSR文件。# 生成私钥（key文件）# -key 生成私钥文件。# -1024 私钥长度。]]></description><category></category></item><item><title><![CDATA[基于java的栈实现]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/109814226</link><guid>https://blog.youkuaiyun.com/runbat/article/details/109814226</guid><author>runbat</author><pubDate>Thu, 19 Nov 2020 15:53:48 +0800</pubDate><description><![CDATA[栈可基于数组和链表来实现，基于数组的栈被称为顺序栈，栈的容量指定初始大小之后不可扩容，扩容需要传新建新数组，将原数组copy过来，

基于链表实现的栈成为链式栈，容量理论上无上限，以下分别实现

顺序栈


public class ArrayStack {

    int[] stack;

    public int top;

    public ArrayStack(int size) {
        this.stack = new int[size];
    }

    publi]]></description><category></category></item><item><title><![CDATA[springboot集成rabbitmq]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/104690584</link><guid>https://blog.youkuaiyun.com/runbat/article/details/104690584</guid><author>runbat</author><pubDate>Sat, 07 Mar 2020 01:56:04 +0800</pubDate><description><![CDATA[在开始整合之前，让我们先了解下rabbitmq，先来灵魂三问，rabbitmq是什么，它解决了什么问题，如何使用它。

带着这三大问题开始我今天的主题，rabbitmq是一款消息中间件，它可以为你的应用提供通用的消息发送与接收平台，并保证消息的安全性，在谈如何使用之前，我们先抛开rabbitmq来讨论下消息队列，使用消息队列的三大核心目的：业务解耦、流量削峰、消息异步。

业务解耦： 假如公司有a...]]></description><category></category></item><item><title><![CDATA[springboot整合jedis]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/104665103</link><guid>https://blog.youkuaiyun.com/runbat/article/details/104665103</guid><author>runbat</author><pubDate>Thu, 05 Mar 2020 08:55:34 +0800</pubDate><description><![CDATA[在开始整合之间先来回答三个问题

1、什么是jedis

2、它解决了什么问题

3、如何使用

基本上所有的技术都可以用这三问快速入门

答1： jedis集成了redis的一些命令操作，封装了redis的java客户端。提供了连接池管理。

答2：jedis提供了更为方便的redis操作，类别mybatis、hibernate等框架合数据库直接的关系

答3 : 本文的主题，我们通过sprin...]]></description><category></category></item><item><title><![CDATA[golang实现动态规划算法(背包问题)]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/94016554</link><guid>https://blog.youkuaiyun.com/runbat/article/details/94016554</guid><author>runbat</author><pubDate>Sun, 30 Jun 2019 20:03:08 +0800</pubDate><description><![CDATA[本文是学习完算法图解之后的总结以及代码实现，第一部分是问题引入，第二部分是动态规划工作原理简介，第三部分是基于golang的代码实现

问题引入

【以小偷到商店偷东西为例，假设小偷有个4磅容量的背包，商店里有吉他、音响、笔记本电脑三样商品，吉他一磅重，价值1500，音响4磅，价值3000，笔记本3磅价值2000，问怎么才能让此次偷盗价值最大化？ 】

对于这个问题，很容易想到偷吉他和笔记本电脑价...]]></description><category></category></item><item><title><![CDATA[golang实现快速排序算法]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/91665129</link><guid>https://blog.youkuaiyun.com/runbat/article/details/91665129</guid><author>runbat</author><pubDate>Thu, 13 Jun 2019 00:04:29 +0800</pubDate><description><![CDATA[代码即思想。有空在补全思想吧。。


package main

import (
	"fmt"
)

func main() {
	arr := []int{4, 3, 1, 5, 6}
	fmt.Printf("arr is %v", quickSort(arr))
}
func quickSort(arr []int) []int {
	if len(arr) &lt; 2 {
		retu...]]></description><category></category></item><item><title><![CDATA[springboot整合mybatis]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/90783344</link><guid>https://blog.youkuaiyun.com/runbat/article/details/90783344</guid><author>runbat</author><pubDate>Tue, 04 Jun 2019 17:55:42 +0800</pubDate><description><![CDATA[springboot整合mybatis过程中，想把xml文件和Dao接口文件放到同一个包下，结果报错


org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxl.job.executor.mapper.RecordDAO.sum

这种问题大多数情况下先检查xml文件的&lt;...]]></description><category></category></item><item><title><![CDATA[Springboot-ObjectMapper类使用]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/89164524</link><guid>https://blog.youkuaiyun.com/runbat/article/details/89164524</guid><author>runbat</author><pubDate>Tue, 09 Apr 2019 22:36:21 +0800</pubDate><description><![CDATA[springboot文档中提供了三种关于json的操作方式，Gson、Jackson、JSON-B，其中Jackson是默认配置，也就是说在springboot项目中可以使用如下方式直接使用


@Autowired
ObjectMapper objectMapper;

我自己简单封装了下ObjectMapper 使用泛型来适应java bean、集合类list、map和json的互转，代码如下...]]></description><category></category></item><item><title><![CDATA[springboot跨域配置(cors)]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/86679137</link><guid>https://blog.youkuaiyun.com/runbat/article/details/86679137</guid><author>runbat</author><pubDate>Tue, 29 Jan 2019 09:18:39 +0800</pubDate><description><![CDATA[这篇文章需要读者对nginx和springboot相关的知识有一定了解，起码入过门。

一、什么是跨域(cors)?

关于跨域的介绍网上有很多，我参考跨域资源共享 CORS 详解，阮老师写的很到位，我们来做个简单的总结

1、首先我们知道ajax只能同源使用限制，这是跨域问题产生的原因，我们前端在ajax中请求了跨域资源。

2、然后才有了cors，cors允许浏览器向跨源服务器发出XMLHtt...]]></description><category></category></item><item><title><![CDATA[svg image]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/84974788</link><guid>https://blog.youkuaiyun.com/runbat/article/details/84974788</guid><author>runbat</author><pubDate>Wed, 12 Dec 2018 16:33:23 +0800</pubDate><description><![CDATA[背景介绍，画svg的时候因为需要插入图片，然后生成的svg是要可以下载的，也就是要脱离web环境显示，那么xlink:href=&quot;url&quot;的形势就不可以了，并且要插入的图片在图片服务器上，那么如何才能插入到svg中呢？ 基本格式如下&amp;lt;image xlink:href=&quot;data:image/png;base64, ivBORw...&quot; /&amp;gt;  其中ivBORw...这个是图片二进制流用...]]></description><category></category></item><item><title><![CDATA[svg text文字]]></title><link>https://blog.youkuaiyun.com/runbat/article/details/84790492</link><guid>https://blog.youkuaiyun.com/runbat/article/details/84790492</guid><author>runbat</author><pubDate>Wed, 12 Dec 2018 16:11:51 +0800</pubDate><description><![CDATA[背景介绍：最近研究svg生成pdf，那我遇到的问题是我们前端编辑器编辑文字的时候有文字框，文字可以左中右对齐，研究svg的应该知道svg文字没有文字框属性，并且svg文字的原点是左下角，而css的文本框对齐是左上角，我们应该都可以想到用text+rect的组合来实现文字框，但问题是文字的原点如何确定成了问题，那有没有办法把text文字的原点从左下角变换到右上角呢？这个问题我在itext里找到了答案...]]></description><category></category></item></channel></rss>