自定义博客皮肤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)
  • 收藏
  • 关注

原创 【实战与杂谈】本地搭建自己的游戏王卡片生成器

声明:1.游戏王卡片制作器本身就是由【kooriookami】开发的,用于DIY卡片因此我只是原有功能再现并不会追加新功能2.其次数据和卡图均来源于网络,因此我也只提供网络能获取该内容的途径,并不会预先准备好最近一直没有时间看回复和私信,我重新下载github上的项目发现,分支上的内容确实有问题,进行了重新调整。

2023-06-23 11:05:03 3419

原创 基于垃圾收集的服务稳定性优化(一)-内存分配策略基础与垃圾收集器

在重新整理和复习垃圾收集器相关资料之后,我想脱密后结合此前负责处理过的问题来分享我是如何进行服务优化。本系博文假定读者已对JVM有一定的了解。

2023-03-29 23:18:09 272

原创 分布式锁与实现(一)-为什么需要分布式锁

分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。

2023-01-21 21:43:57 986

原创 【实战与杂谈】如何复活一个开源网站-游戏王卡片生成器

作为一名十多年游戏王玩家,学生时代玩的是PSP和PS2上的游戏,到毕业后使用YGOPRO同步新卡片进行联网对战,再到现在约到线下进行实体卡片游戏。有些卡片价格太贵,因此我们对于这些卡在未购买之前都会自己打印出来暂时游玩。这里不得不提国内的制卡小工具。比较遗憾的是该网站即将下线。值得庆幸的是作者对网站的更新一直以的形式进行保存,本篇博文也是记录博主如何一步一步实现在本地运行起开源项目的经过。

2022-12-29 23:49:11 9575 11

原创 非DBA人员从零到一,MySQL InnoDB数据库调优之路(四)-数据备份与迁移

上一篇我认为分表在数据库的调优中是一种加法,通过拆分单表数据到多个表中,减少单表的压力,从而达到调优的效果,那么这一篇博文会通过对数据库进行减法来达到调优的效果。

2022-11-29 22:04:45 420

原创 基于GitHub Desktop带你快速在工作中进行代码管理

基于GitHub Desktop带你快速在工作中进行代码管理

2022-07-24 20:31:34 967

原创 基于k8s-for-docker-desktop解决Intel版MacOS启动DockerDesktop下Kubernetes因镜像欠缺失启动失败的问题

本文只针对Intel的MacOS产品

2022-07-03 18:53:04 1568

原创 非DBA人员从零到一,MySQL InnoDB数据库调优之路(三)-分区表与分库分表

虽然我们现在面试经常1 何时需要分库分表面试的时候面试官经常会问你们有2 分库?分表?无论是分库分表我们都可以分为两个维度:垂直划分和水平划分2.1 分库2.2 分表2.3 读写分离

2022-06-30 22:11:17 431 1

原创 分布式限流之基于Sentinel实现的限流漫谈(一)-概述

1.为什么需要限流1. 常用限流算法2. Sentinel的滑动窗口实现3. Sentinel的令牌桶实现4. Sentinel5.参考:https://github.com/alibaba/Sentinel/wiki书籍:《亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统》...

2022-05-31 20:30:00 540

原创 非DBA人员从零到一,MySQL InnoDB数据库调优之路(二)-建立索引

非DBA人员从零到一,MySQL InnoDB数据库调优之路(一)-建立索引

2022-04-30 18:16:23 1034

原创 非DBA人员从零到一,MySQL InnoDB数据库调优之路(一)-建表

非DBA人员从零到一,MySQL InoDB数据库调优之路(一)-建表

2022-03-31 20:24:56 969

原创 Redis技术查漏补缺(二)-过期删除策略

Redis的内存回收机制主要体现在两个方面:删除到达过期时间的键对象 内存使用到达maxmemory上限时触发内存溢出控制策略(Redis技术查漏补缺(一)-淘汰策略)1 删除过期键对象1.1 惰性删除放任键过期不管, 但是每次从键空间中获取键时, 都检查取得的键是否过期, 如果过期的话, 就删除该键; 如果没有过期, 就返回该键。惰性删除策略不对过期键进行处理,此时因为内存没有达到Redis的maxmemory上限而没触发淘汰策略,程序只会在访问键的时候进行过期检查,当键超过过期时间即

2022-02-12 20:08:05 315

原创 MVCC-InnoDB基于UndoLog的并发事务查询机制

1 并发事务带来的问题23 事务隔离级别4 UndoLog5 MVCC参考:

2022-01-31 23:17:17 1742

原创 Redis高可用-Redis Sentinel

0 Redis主从复制使用docker搭建主从复制1 Redis Sentinel解决了什么问题1.1 主从复制的问题Redis的主从复制可以把主节点的数据同步到从节点,从节点可以起到两个作用:作为主节点的备份,当主节点宕机的时候,可以代替主节点,一定程度上确保数据不丢失 因为从节点可以进行读操作,因此可以加大整个Redis的读能力但是一旦主节点宕机,即需要进行手动干预使其他成为主节点1.2 Redis Sentinel的高可用Redis Sentinel包括若干个Senti

2021-12-30 22:02:07 230

原创 如何高效地学习开源项目-以ShardingSphere学习为例

在今年的上旬,有幸学习了李运华老师的《从0开始学架构》,碰巧最近参加技术群组织的ShardingSphere的源码的分享小组。所以想结合运华老师的学习方法结合我在项目中的经历复盘一下当时我是如何思考和学习ShardingSphere的。从0开始学架构_架构基础_架构入门-极客时间1 “学习金字塔”理论在我介绍李运华老师的开源系统学习方法之前,我觉得我们应该了解一下何为学习金字塔理论。美国学者、著名的学习专家爱德加·戴尔在1946年最先提出该理论,美国缅因州的国家训练实验室做过类似的研究,并提出了

2021-12-30 21:59:42 694

原创 分布式一致性算法-Raft

Paxos协议的出现为分布式强一致性提供了很好的理论基础,但是Paxos协议理解起来较为困难,实现比较复杂。然后斯坦福大学RamCloud项目中提出了易实现,易理解的分布式一致性复制协议 Raft。我们熟知的Redis哨兵模式和阿里开源的服务发现注册中心Nacos、K8s的使用的存储系统etcd都实现了Raft。1.相关理论1.1 状态机复制模型Raft的算法实现基于状态机复制思想,一个服务由一致性模块(Consensus Module)、日志模块(Log)、状态机(State Mac

2021-11-30 22:44:47 536

原创 Redis持久化-RDB&AOF

1.RDB1.1 触发模式1.1.1 手动触发1.1.2 被动触发1.2

2021-10-31 21:33:52 162

原创 记开源系统落地-我是如何在工作中应用ShardingSphere-JDBC

本篇博文想结合一些开源系统落地的思想,复盘之前在工作中如何落地ShardingSphere。问题新产品在总体需求阶段就已知将会以TOB的SaaS服务进行开发,为了确保商户的数据物理隔离,我们要根据不同的商户划分到不同的库中,因此需要一款分库产品来实现这个需求。对数据库的增强的形式那么目前进行分库的形式有哪些呢?典型的开源数据库组件TDDL: 淘宝数据中间层。 ShardingSphere-JDBC: Apache基金会开源产品( 源于当当, 发展与京东) 。典型的开源数据库中

2021-09-17 22:00:19 389

原创 Redis技术查漏补缺(一)-淘汰策略

1.Redis数据过期策略Redis 提供了 3 种数据过期策略:惰性删除:当读/写一个已经过期的 key 时,会触发惰性删除策略,直接删除掉这个过期 key 。定时任务删除:Redis通过定期执行清理策略主动对过期的的数据进行清理。内存溢出控制删除:当前已用内存超过redis设置的maxmemory时,主动触发数据淘汰策略 。1.1 Redis数据淘汰策略在4.0之前,Redis提供了6种策略volatile-lru根据LRU算法选择设置了超时属性(expire)的数据选择

2021-08-07 19:41:56 151

原创 Redis高级特性(三)-HyerLogLog高效统计

2. 命令2.1 添加数据pfadd testlog "123" "321" "123"2.2统计pfcount testlog2.3 合并pfadd testlog2 "567" "321" "123"pfmerge mergelog testlog2 testlogpfmerge可以对多个HyerLogLog进行并集3. HyerLogLog优缺点

2021-08-06 23:20:02 240

原创 Redis高级特性(二)-GEO地理信息定位

1.GEORedis3.2提供了GEO(地理信息定位)功能,支持地理位置信息并以存储后的信息实现诸如附近位置、摇一摇这类依赖与地理位置的功能。GEO功能是借鉴国人开发的NoSQL数据库Ardb实现的。1.1 增加地理位置geoadd cities:china 116.28 39.55 beijingcities:china key116.28 经度39.55 维度beijing 成员名称geoadd cities:china 76.28 39.55 A 86.28 39

2021-07-26 23:54:44 289

原创 Redis高级特性(一)-Bitmaps与布隆过滤器

1.Bitmaps1.1 常用命令2.布隆过滤器3.基于Redis Bitmaps实现的简单布隆过滤器参考: 书籍: 论文:

2021-07-23 22:05:50 1195 3

原创 Redis应用总结

1.概述在工作中,我想多数人使用的最多Nosql数据库应该是Redis,经过10多年的发展Redis已经不仅仅用在最初的设计场景上,高级特性给Redis更多的使用场景。2.高级特性2.1Bitmap2.2HyperLogLog2.3Geo2.4Pub/Sub2.5Pipeline3.使用场景3.1数据缓存3.2数据处理3.3全局一致计数3.4高效统计计数3.5发布订阅3.6分布式锁...

2021-06-30 22:59:03 78

原创 开源分布式数据库中间件方案-Apache ShardingSphere

1.概述业务飞速发展导致了数据规模的急速膨胀,单机数据库已经无法适应互联网业务的发展 传统的将数据集中存储至单一数据节点的解决方案,在容量、性能、可用性和运维成本这三方面已经难于满足互联网的海量数据场景。我们在单库单表数据量超过一定容量水位的情况下,索引树层级增加,磁盘 IO 也很可能出现压力,会导致很多问题。 从性能方面来说,由于关系型数据库大多采用 B+树类型的索引,在数据量超过阈值的情况下,索引深度的增加也将使得磁盘访问的 IO 次数增加,进而导致查询性能的下降;同时,高并发访问请求也使得集中式

2021-06-28 23:14:30 562 3

原创 常见配置中心比较,Spring Cloud Config VS Nacos VS Apollo

1.介绍1.1 配置中心当超过了一定量级的服务之后,系统配置的修改和发布就会成为项目发展一个不得不关注的难点,因此就诞生了配置中心。配置中心通过集中管理服务配置,提供统一的配置拉取接口来解决因规模不断扩展导致的配置管理问题。一般提供版本管理,权限控制,灰度发布,动态刷新等功能特性来完善配置管理体系。1.1.1 Spring Cloud ConfigSpring Cloud Config是官方提供的分布式系统的外部配置中心提供服务器和客户端支持。1.1.2NacosNacos 阿里..

2021-05-30 22:12:51 2975 2

原创 常见的配置中心:Apollo(三)-安全相关

配置中心作为基础服务,存储着公司非常重要的配置信息,所以安全因素需要大家重点关注,Apollo提供多方面的实践1 认证2 授权3 系统访问

2021-05-13 23:06:56 2326 4

原创 常见的配置中心:Apollo(二)-接入Apollo

1 配置Apollo作为大型互联网系统生产级别的配置中心,在开发的积累当中构建了自己的配置维度体系。1.1 配置四层维度(1)Application(项目应用)维度中的最顶层,在实际开发中我们一般以项目来作为最外层配置的区分维度。(2)Environment(开发环境)在实际开发当中从开发到上线一般都需要经过各种环境的验证的,Apollo在这个维度下根据携程实际的应用提供了若干环境:dev:开发环境fat:功能验收测试环境uat:用户验收测试环境lpt:性能测试环

2021-04-29 23:06:00 1549

原创 常见的配置中心:Apollo(一)-认识Apollo

1.Apollo1.1 概要Apollo是什么?Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于 Spring Boot 和 Spring Cloud 开发,打包后可以直接运行,不需要额外安装 Tomcat 等应用容器。Java 客户端不依赖任何框架,能够运行于所有 Java 运行时环境,同时对 Spring/Spring Boo

2021-04-29 22:59:14 845 2

原创 API性能测试小工具-SuperBenchmarker

概论传统压测工具用于测试系统的稳定性,虽然专业但是也是需要收费的,那么在日常开发中我们如何测试自己api的性能呢?这次为大家分享SuperBenchmarker。1.SuperBenchmarkerSuperBenchmarker是一款运行在Windows上的性能测试工具。可以下载已打包好的exe安装包,如果本机打开失败,可以在网络上自行下载可用运行包。1.1 工具规范SuperBenchmarker默认会生成测试对应的webUI因此我喜欢一般在参数中添加-B,如果需要查看webUI

2021-04-01 21:28:38 499

原创 常见的配置中心:Nacos

概述Nacos是阿里在2018年发布的集服务发现、动态配置等功能为一体的开源产品。下文将会围绕Nacos对配置中心需要的各功能进行讲解。1.Nacos配置概念命名空间用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。配置集 IDNacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data I

2021-03-29 23:16:20 1214

原创 自定义解密类加载器

概述我们平常写好的java代码并不是直接就能给计算机使用,而是需要通过编译成.class字节码文件,通过类加载器加载到jvm中。1.字节码类文件假如我们有如下的java代码段,我们应该怎么让jvm运行起来呢? int i=1; int j=2; i=i+j;通过把java文件编译成字节码类文件(.class)后,就可以被jvm快速识别并加载。从上图可能我们可能看不懂里面的意思,我们通过javap -c 来编译对应的class文件

2021-03-24 22:40:33 130

原创 常见的配置中心:Spring Cloud Config

概述从下面的架构图可以看到传统的单体应用和一些小的SOA服务因为其服务数量较少,所以其配置能以服务为分割单位保存在每个服务当中,但是这样会面临多个问题:1、如果某个配置修改了,需要对所有服务重新打包。2、因为配置保存不同服务中,即代表着每增加一个服务就要增加对应配置的维护成本。 1.Spring Cloud Config基于概述中提到的问题,还有在微服务架构中不断增加的服务数量,配置中心这种就应运而生。Sp...

2021-03-18 21:44:25 598 1

原创 Spring Boot集成SwaggerAPI文档

接上次博客发布之后就在想模板工具上还有什么可以添加东西,后面翻了一下以前写的博客发现在spring boot的章节里没有说过swagger的应用。故写这篇博客进行记录1.Swaggerswagger的出现可以说是必然,它的出现大大在减少了API DOC生成的困难,要知道大的系统的API可能数以万计。通过侵入式的注解埋点,我们在启动服务后能直接生成出该服务对应的REST API文档1.1 机制通过开发人员在开发过程中,事先对类和api接口添加对应注解,在启动中通过拦截注解生成前端看到API文档

2021-03-07 09:36:53 124

原创 KenhoMBGPlus SpringBoot模板生成工具(三)-定义模板细节

经过前2篇博文的努力,现在已经我们已经可以通过自己定义数据的相关设置,但是原始的MBG生成的类过于简单,即使生成了出来的文件还需要我们生成一些其他文件才能进行开发,我这次开发的工具主要就是解决这个问题,利用FreeMark模板语言生成一套文件,生成文件后开箱即用。1.FreeMark1.1 简介 FreeMarker是一个基于Java的模板引擎,最初专注于使用MVC软件架构生成动态网页。但是,它是一个通用的模板引擎,不依赖于servlets或HTTP或HTML,因...

2021-03-04 00:20:43 129 1

原创 KenhoMBGPlus SpringBoot模板生成工具(二)-参数前端交互设置

1.需求KenhoMBGPlus期待的功能是通过传入参数可以指定数据库进行模板的新增。2.问题分析在开源代码中生成的表和相关信息是已经写在配置文件中,因此在工具中我们要使配置是可以通过用户自定义的,其次就是自定义的配置如何和配置文件相绑定。3.解决问题3.1配置文件自定义关于配置文件自定义,在前一篇博客KenhoMBGPlus SpringBoot模板生成工具(一)-构建项目中已经把源码修改为Spring Boot的启动形式,因此我们可以通过前端页面进行传参。查看源码我们能发现我们.

2021-02-26 22:00:43 203

原创 KenhoMBGPlus SpringBoot模板生成工具(一)-构建项目

1.引言在日常工作中我们发现每个模块开发它的基础组成就是查询,新增,修改,查询,删除,对于开发来说这些繁杂却简单的时间消耗是没有任何必要的,如同SpringBoot的出现大大减少了开发中对配置的设置,本工具依据MyBatis Generator为基础,拓展生成基于spring secuirty的controller,server,mapper及POJO。工具的开发涉及freemark模板,和对MyBatis Generator源码的修改2.MyBatis Generator我们先来看看官网对

2021-02-25 00:08:47 171

原创 Spring Security从单体应用到分布式(五)-基于Zuul的Oauth2应用(二)

1.问题在上篇博文Spring Security从单体应用到分布式(四)-基于Zuul的Oauth2应用中因为在token存储仅仅使用了InMemoryTokenStore内存作为存储,因此申请到的accessToken也只能在这个服务中使用。Spring Security提供了JDBC,Reids等存储方式,考虑到登录功能是一个访问频繁而且需要快速响应的功能,因此这次将使用Redis实现多服务统一鉴权。2.请求流向图3.配置追加redis的依赖 <depend

2021-02-10 12:57:36 185

原创 Spring Security实践之extractKey引起的权限刷新问题

1.问题通过给UserDetail设置不同的Authority来实现一个用户的权限改变,但是最近在对发现当给UserDetail设置不同Authority的时候,重新登录之后加载出来的权限没有变化。2.思考首先基于 Spring Security从单体应用到分布式(四)-基于Zuul的Oauth2应用鉴权逻辑如下图,当经过OAuth2ClientAuthenticationProcessingFilter的时候,如果当前session能获取acesstoken的时候,我们就能直接访问目标API。

2021-02-08 23:21:26 535 1

原创 Spring Security从单体应用到分布式(四)-基于Zuul的Oauth2应用

1.前言一个正常的授权码模式如下(A)用户打开客户端以后,客户端要求用户给予授权。(B)用户同意给予客户端授权。(C)客户端使用上一步获得的授权,向认证服务器申请令牌。(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。(E)客户端使用令牌,向资源服务器申请获取资源。(F)资源服务器确认令牌无误,同意向客户端开放资源。下图为一个简单的Spring Cloud的框架图,客户的访问通过Zuul往后进行动态路由进而访问对应的资源服务,本次要通过要Zuul结合Oauth

2021-01-31 19:31:52 402

原创 [云原生]Kubernetes可视化界面WEBUI Kubernetes Dashboard

1.Kubernetes DashboardDashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment,Job,DaemonSet 等等)。 例如,你可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创

2021-01-17 16:51:47 431

空空如也

空空如也

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

TA关注的人

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