自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 Spring Cloud Gateway教程

🔔Spring Cloud Gateway自定义过滤器参考另一篇笔记。

2024-03-20 11:41:23 1225

原创 Spring Cloud Gateway自定义过滤器

*** 自定义全局过滤器,实现GlobalFilter和Ordered接口,统计接口耗时/* 1、保存请求开始时间 */ exchange . getAttributes() . put(BEGIN_VISIT_TIME , System . currentTimeMillis());/* 2、获取请求开始时间 */ Long beginTime = exchange . getAttribute(BEGIN_VISIT_TIME);= null) {

2024-03-09 16:30:49 2453 1

原创 Spring Cloud Gateway自定义断言

可以看到我们使用的配置方式是完全展开的参数配置方式(Fully Expanded Arguments),这个时候还是不支持快捷配置的。:Spring Cloud Gateway自带的断言(Predicate)不满足业务怎么办?为了让自定义的断言支持快捷配置(Shortcut Configuration),还需要实现。先看Spring Cloud Gateway是如何实现断言的。这个时候已经可以使用我们自定义的断言了。可以看到Gateway的断言都是继承了。

2024-03-08 20:17:56 604

原创 SpringBoot整合EasyCaptcha图形验证码

Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。

2024-01-29 09:37:33 3484

原创 JWT认证

Access Token 用于基于 Token 的认证模式,允许应用访问一个资源 API。用户认证授权成功后,会签发 Access Token 给应用。应用需要携带 Access Token访问资源 API,资源服务 API 会通过拦截器查验 Access Token,从而决定是否返回资源。如果你的用户通过社交账号登录,例如微信登录,微信作为身份提供商会颁发自己的 Access Token,你的应用可以利用 Access Token 调用微信相关的 API。

2024-01-28 21:06:55 465

原创 Spring Security放行Knife4j静态资源

项目中使用 Spring Security 做身份认证和授权,使用 Knife4j 做接口调试。两者集成的时候出现了一些问题。将需要 Spring Security 放行的接口记录在。在 Spring Security 的配置类。中放行 Knife4j 的静态资源。

2024-01-25 17:53:57 808

原创 Spring Security Servlet认证架构

用作用于验证用户凭据的基础Filter。在认证凭证之前,Spring Security 通常使用请求凭证。接下来,可以验证提交给它的任何身份验证请求。当用户提交他们的凭证时,从要验证的创建一个。创建的的类型依赖于的子类。例如,从中提交的用户名和密码创建。接下来,被传递到以进行身份验证。如果认证失败,则为failure。SecurityContextHolder 被清除。被调用。如果没有配置remember me,则此操作无效被调用。如果认证成功,则为success。收到新登录的通知。

2024-01-25 15:46:00 926

原创 Spring Security架构

实现 Filter 接口@Overridereturn;将自定义 Filter 添加到 Security Filter Chain 中@Beanhttp// ...通过在之前添加过滤器,我们可以确保在身份验证过滤器之后调用。您还可以使用将过滤器添加到特定过滤器之后,或使用将过滤器添加到过滤器链中的特定过滤器位置。如果您仍然想将 filter 声明为 Spring bean 以利用依赖注入,并避免重复调用,则可以通过声明bean并将其enabled属性设置为false@Bean。

2024-01-24 22:42:00 1204

原创 Spring Security快速入门

创建一个Spring MVC应用程序,该应用程序使用用户登录来保护页面。

2024-01-23 20:05:49 840

原创 Vue3快速入门

文章目录1. Vue3简介1.1. 【性能的提升】1.2. 源码的升级】1.3. 【拥抱TypeScript】1.4. 【新的特性】2. 创建Vue3工程2.1. 【基于 vue-cli 创建】2.2. 【基于 vite 创建】(推荐)2.3. 【一个简单的效果】3. Vue3核心语法3.1. 【OptionsAPI 与 CompositionAPI】Options API 的弊端Composition API 的优势3.2. 【拉开序幕的 setup】setup 概述setup 的返回值setup 与

2024-01-11 17:24:04 506

原创 Cephadm部署使用rgw对象网关(s3cmd和Java)

区域组(zonegroup):由一个或多个区域组成,包含一个主区域(master zone),其他区域称为Secondary Zone,区域组内的所有区域之间同步数据。multi-zonegroup:一个realm中有多个zonegroup,每个zonegroup中又有一个或多个zone。区域(zone): 一个ceph集群可以包含多个区域,一个区域只属于一个集群,一个区域可以有多个RGW。single-zone:一个realm中只有一个zonegroup和一个zone,可以有多个RGW。

2023-12-10 20:16:16 390

原创 Ubuntu20.04使用cephadm部署ceph集群

Cephadm通过在单个主机上创建一个Ceph单机集群,然后向集群中添加主机以扩展集群,进而部署其他服务。

2023-12-09 20:27:53 648

原创 VMware安装Ubuntu20.04并使用Xshell连接虚拟机

注意,还原默认设置你的网络地址可能发生改变,而且之前如果手动配置过VMware8的IP地址和DNS服务器地址,也会还原为默认的自动获取IP地址和DNS服务器地址。如果你是新安装的VMware,你应该会直接看到下面还原了网络设置后的界面。根据下载链接,下载安装完成VMware,在VMware里创建虚拟机,镜像选择刚才下载的Ubuntu Server 20.04。注意,还原默认设置后,子网IP发生了变化,从。记住你配置的子网,后面配置的VMnet8、网关、虚拟机的IP地址都跟它有关。至于为什么选择这个版本?

2023-12-08 23:58:22 276

转载 Redis常见数据类型和应用场景

String 是最基本的 key-value 结构,key 是唯一标识,value 是具体的值,value其实不仅是字符串, 也可以是数字(整数或浮点数),value 最多可以容纳的数据长度是512M。List 列表是简单的字符串列表,按照插入顺序排序,可以从头部或尾部向 List 列表添加元素。列表的最大长度为2^32 - 1,也即每个列表支持超过40 亿个元素。Hash 是一个键值对(key - value)集合,其中 value 的形式如:。Hash 特别适合用于存储对象。

2023-11-19 17:43:02 79

原创 Redis配置文件

Redis可以在没有配置文件的情况下使用内置的默认配置启动,但是这种设置仅推荐用于测试和开发。配置Redis的正确方法是提供一个Redis配置文件,通常称为redis.conf。

2023-11-11 23:01:06 986

原创 Redis入门

Redis可以用作数据库、缓存、流引擎、消息代理等。以下将介绍如何快速入门Redis。

2023-11-10 21:14:02 179

原创 Ceph IO流程及数据分布

PG(Placement Group)用途是对object的存储进行组织和位置映射,(类似于redis cluster里面的slot的概念)一个PG里面会有很多object。Object是RADOS需要的对象。如果新加入的OSD1取代了原有的OSD4成为Primary OSD,由于OSD1上未创建 PG ,不存在数据,那么PG上的I/O无法进行,怎样工作的呢?:每个OSD上分布很多PG,并且每个PG会自动散落在不同的OSD上。如果扩容那么相应的PG会进行迁移到新的OSD上,保证PG数量的均衡。

2023-11-06 21:02:42 464

原创 Redis简介

Redis是一个开源的(BSD许可),内存中的数据结构存储,用作数据库、缓存、消息代理和流引擎。Redis提供数据结构,如stringshasheslistssetsbitmaps和streams。Redis内置了复制、Lua脚本、LRU驱逐、事务和不同级别的磁盘持久化,并通过Redis Sentinel和Redis Cluster自动分区提供高可用性。你可以在这些类型上运行原子操作,比如追加到一个字符串上;在散列中增加值;将一个元素推到一个列表中;计算集合的交集、并集和差;

2023-11-06 09:52:19 117

原创 Ceph源代码主要目录和文件介绍

【tools】:Ceph中的各种工具的实现:cephfs、rados、rbd、rbd-nbd、ceph-authtool、ceph-conf、ceph-kvstore-tool、ceph-monstore-tool、ceph-objectstore-tool、crushtool、monmaptool、osdmaptool。【mds】:MDS定义了维护了CephFS中的元数据,包括文件系统的树形结构、文件的属性、访问控制信息等,这些数据都是存在MDS节点的内存中,而真正的数据是存储在Rados里的。

2023-11-02 16:37:44 155

原创 在Bcache上启动OSD报unable to read osd superblock错误

可以看到OSD::init() : unable to read osd superblock,在OSD初始化时,无法读取OSD superblock。使用Bcache加速块设备,在上述环境中创建Bcache,并在Bcache上创建OSD。

2023-10-22 10:27:08 199

原创 Linux tmux使用总结

tmux是在终端中运行的程序,并且允许多个其它终端程序在其内部运行。tmux内部的每个程序都有自己的终端,由tmux管理,可以从运行tmux的单个终端访问-这称为多路复用,tmux是终端多路复用器。

2023-10-22 10:25:39 302

原创 Linux块设备缓存Bcache使用

Bcache是Linux内核块层cache,它使用SSD来作为HDD硬盘的cache,从而起到加速作用。Bcache内核模块仅在Linux 3.10及以上版本支持,因此使用Bcache,。

2023-10-18 21:25:50 2524

原创 Linux编译内核添加Bcache模块

由于Bcache是在linux kernel 3.10之后才加入的,所以要使用Bcache,首先必须确保内核版本至少是3.10或及以上,可以使用uname -a查看内核版本其次,还要查看内核中有没有编入Bcache模块,默认内核并没有将Bcache编译进内。可以通过下载内核源码重新编译将Bcache以内核模块的形式编译进内核。

2023-10-18 16:12:52 345

原创 【Ceph Cluster】完全删除Ceph集群

卸载 Ceph 相关的软件包,使用你的 Linux 发行版的包管理器。:重新启动系统以确保所有 Ceph 相关的服务和进程都已停止,并且不再运行。:这一步是最重要的,因为它涉及到删除 Ceph 集群的数据。:检查系统以确保没有残余的 Ceph 文件或目录,如。

2023-10-17 22:44:02 1116

原创 【Ceph Block Device】块设备挂载使用

librbd内核模块可以使用Linux页面缓存。对于基于librbd的应用程序,Ceph支持RBD Caching。创建pool,关联RBD应用程序。【可选】创建Ceph用户,授予对pool和image的权限,也可以直接使用admin。创建image,个人理解image相当于在pool中开辟出的磁盘空间,可以像操作块设备一样,对其进行格式化、挂载等操作。映射块设备。格式化。挂载使用。

2023-10-10 17:46:38 1476

原创 常见开源协议介绍

开源协议(Open Source License)是一种法律文档,用于规定如何使用、修改和分发开源软件和其他开源项目的规则和条件。这些协议允许创作者或组织将其创造的代码或作品以开放源代码的形式共享给他人,以促进协作、创新和知识共享。

2023-10-08 21:37:41 269

原创 Linux SSH连接远程服务器(免密登录、scp和sftp传输文件)

SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。

2023-10-07 20:23:14 838

转载 Ceph数据保护(多副本和纠删码)

介绍多副本和纠删码之前,我们先来说一下分布式存储。分布式存储是不同于传统集中式存储的的一种架构,很多时候也被称为SDS软件定义存储(Software Defined Storage)。传统集中式存储采用控制器+硬盘柜的方式,通过冗余的双控制器提供数据管理和读写能力(也有超过2个控制器的多控存储,多见于高端存储),通过控制器自带的硬盘槽位或扩展硬盘柜提供存储空间,如下图。集中式存储的硬盘数据保护多采用RAID技术,比如RAID5、RAID6、RAID10等,以后有机会我们再单独介绍。

2023-09-19 21:27:43 1434

原创 开源分布式存储系统(HDFS、Ceph)架构分析

以HDFS( Hadoop Distribution File System )为代表的架构是中间控制节点架构的代表。HDFS分布式文件系统是被设计成主从式的一种架构,集群中主要由和组成。

2023-09-19 11:14:40 616

原创 RDMA性能测试工具preftest_README

preftest(Performance Test)是一组基于uverbs编写的测试工具集,旨在用作性能微基准。这些测试可以用作硬件或软件调优以及功能测试。uverbs是RDMA(Remote Direct Memory Access)的一种编程接口,它提供了底层、高效的编程接口,可以控制RDMA网络适配器中的硬件资源、创建和管理RDMA操作队列等功能,同时verbs接口也提供了一些原子操作、随机访问、远程直接内存访问等工具,从而实现了高效的、无锁的、直接内存访问。该测试工具集包含了带宽和延迟。

2023-09-15 16:06:16 1264

原创 集中式存储和分布式存储

分布式存储实现了存储硬件和软件的互不影响,减少数据传输的干扰,使得信息存储和传输更敏捷,不仅运维成本低,而且也符合数据存储的发展趋势。直连式存储依赖服务器主机操作系统进行数据的IO读写和存储维护管理,数据备份和恢复要求占用服务器主机资源(包括CPU、系统IO等),数据流需要回流主机再到服务器连接着的磁带机(库),数据备份通常占用服务器主机资源20-30%,因此许多企业用户的日常数据备份常常在深夜或业务系统不繁忙时进行,以免影响正常业务系统的运行。在分布式存储架构中,信息被存储于多个独立且互不干扰的设备中。

2023-09-14 17:14:34 1117

原创 Linux日志管理-logrotate(crontab定时任务、Ceph日志转储)

logrotate是一个用于管理Linux系统上的日志文件的工具,它的主要目的是确保日志文件不会变得过大,从而占用过多的磁盘空间并影响系统性能。当系统运行时间越长,生成的日志文件就越多,这些文件可能会变得非常大,导致磁盘空间不足。此外,如果日志文件太大,它们可能会变得不可读,从而导致难以诊断和解决问题。logrotate可以定期轮换旧的日志文件,并将它们压缩或删除,以释放磁盘空间并保持日志文件的可读性。它还可以在轮换时创建新的日志文件,以确保系统仍然可以记录重要的事件和错误信息。

2023-09-13 22:00:14 1184

原创 Loongnix单机部署Ceph(LoongArch架构、Ceph N版、手动部署MON、OSD、MGR、Dashboard服务)

解决办法:ceph config set mon auth_allow_insecure_global_id_reclaim false。通过ceph osd tree命令查询集群状态,可见集群services中所有osd服务已启动。通过fdisk等工具查看磁盘盘符,然后利用ceph-volume工具自动化创建osd服务。创建client.bootstrap-osd用户密钥,添加到集群密钥中。创建client.admin用户,添加到集群密钥中。安装ceph-osd服务程序。关闭防火墙和selinux。

2023-09-08 17:10:40 342

原创 注解(Annotation)

从 JDK 5 开始,Java增加了对元数据(MetaData)的支持,也就死Annotation(即注解)。注解其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用注解,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。注解提供了一种为程序元素设置元数据的方法,注解就像修饰符一样,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明,这些信息被存储在注解的“name = value”中。自定义注解使用关键字@interface。

2023-07-22 22:29:00 63

原创 128.最长连续序列

我们知道基于比较的排序算法时间复杂度下界为。,时间为线性的排序算法对于数据都有一定要求。问题的关键在于要求时间复杂度为。

2023-07-15 16:50:19 49

原创 5.最长回文子串

那么将它首尾的两个字母去除之后,它仍然是个回文串。例如对于字符串 “ababa”,如果我们已经知道 “bab”是回文串,那么 “ababa”一定是回文串。:对于一个子串而言,如果它是回文串,并且长度大于。数组,找到最长回文子串的长度,根据。,因此可以使用动态规划解决该问题。,用于回到每一个斜列开始位置。构造出解,即最长回文子串。

2023-07-14 22:45:38 54

原创 算法导论-第15章-动态规划

(dynamic programming)的思想是和。动态规划方法通常用来求解这类问题可以有很多可行的解,每个解都有一个值,我们希望寻找具有最优值(最小值或最大值)的解。我们称这样的解为问题的(an optimal solution),而不是(the optimal solution),因为可能有多个解都是最优值。步骤1~3是动态规划求解问题的基础。如果我们仅仅需要最优解的一个值,而不是最优解本身,可以忽略步骤4。如果要构造最优解,则必须执行步骤4,步骤3中维护的一些额外信息是构造最优解的基础。

2023-07-05 21:37:32 270

原创 多段图规划

的最短路径相矛盾,所以原问题满足最优性原理。多段图问题满足最优性原理。的最短路径,但其子路径。,显然,该路径长度小于。

2023-07-05 16:47:15 55

原创 《算法设计与分析》复习提纲

文章目录《算法设计与分析》复习提纲1 引言(ch1)1.1 什么是算法及其特征1.2 问题实例和问题规模2 算法初步(ch2)2.1 插入排序算法2.2 算法复杂度及其度量3 函数增长率(ch3)3.1 O\OmicronO符号,Ω\OmegaΩ符号,Θ\ThetaΘ符号O\OmicronO符号Ω\OmegaΩ符号Θ\ThetaΘ符号3.2 标准复杂性函数及其大小关系3.3 和式界的证明方法4 递归关系式(ch4,Sch1)4.1 代入法4.2 迭代法4.3 主定理4.4 补充:递归与分治法4.4.1 Fi

2023-07-02 22:17:03 673

原创 【补充】回溯法

上世纪70年代中期开始,国外一些学者致力于研究随机搜索求解困难的组合问题,将随机过程引入搜索;这种以深度优先的方式系统地搜索问题的解的算法称为回溯法,它适用于解一些组合数较大的问题。随机搜索的一个成功例子:判定一个很大的数是不是素数,获得了第一个多项式时间的算法。提高搜索效率的思考:随机搜索。

2023-07-02 22:04:02 44

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除