自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringSecurity + Oauth2 + jwt实现单点登录

在如今前后端分离架构越来越成为开发的主流模式,因此以前基于session的权限管理已经不适合前后端分离架构了,springsecurity oauth2 的出现帮我们解决了这个问题。本文采用oauth2 + jwt实现单点登录。

2024-04-26 17:44:21 1027

原创 线程池的使用

Runnable和Callable都可以理解为任务,里面封装着任务的具体逻辑,提交给线程池执行,区别在于Runnable任务执行没有返回值,且Runnable任务逻辑中不能通过throws抛出cheched异常(但是可以try catch),而Callable可以获取到任务的执行结果返回值且抛出checked异常。shutdownNow():立即关闭线程池(暴力),正在执行中的及队列中的任务会被中断,同时该方法会返回被中断的队列中的任务列表。

2024-04-26 16:52:07 522

原创 SpringBoot整合kafka

接下来,我们将创建一个 RESTful 端点,用于接收 POST 请求并将消息发送到 Kafka。现在,我们将创建一个 Kafka 生产者,用于发送消息到 Kafka 服务器。在这里,我们将创建一个 RESTful 端点,用于接收 POST 请求并将消息发送到 Kafka。现在,我们将创建一个 Kafka 消费者,用于从 Kafka 服务器接收消息。在这里,我们将创建一个消费者组,并将其配置为从 my-topic 主题读取消息。注解声明了一个消费者方法,用于接收从 my-topic 主题中读取的消息。

2024-04-26 11:52:05 787

原创 分布式任务调度平台 XXL-JOB

任务调度某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券某银行系统需要在信用卡到期还款日的前三天进行短信提醒某财务系统需要在每天凌晨0:10分结算前一天的财务数据,统计汇总以上场景就是任务调度所需要解决的问题任务调度是为了自动完成特定任务,在约定的特定时刻去执行任务的过程XXL-Job:是大众点评的分布式任务调度平台,是一个轻量级分布式任务调度平台, 其核心设计目标是开发迅速、学习简单、轻量级、易扩展大众点评目前已接入XXL-JOB,该系统在内部已调度约100万次,表现优异。

2024-04-26 11:46:22 785

转载 纯净版Win10系统重装教程 - 详细篇

本博客详细讲解纯净版,步骤齐全,小白可实操。

2024-04-26 11:23:34 105

原创 Redis性能瓶颈:优化大key

Redis大key问题是指在Redis中出现了一个或多个非常大的key,这些key的大小超过了Redis所能处理的最大值,从而导致Redis性能下降甚至宕机的现象。通常情况下,Redis的key大小应该尽量保持在较小的范围内,因为Redis是一个基于内存的数据结构存储系统,大key会占用大量内存资源,导致Redis的性能受到严重影响。多大的数据量才算是大key,具体取决于Redis服务器的内存大小、可用内存空间、系统负载等因素。

2024-04-26 11:19:35 906

原创 实现异步的8种方式

在编程中,有时候我们需要处理一些费时的操作,比如网络请求、文件读写、数据库操作等等,这些操作会阻塞线程,等待结果返回。为了避免阻塞线程、提高程序的并发处理能力,我们常常采用异步编程。异步编程是一种编程方式,它通过将任务提交给其他线程或者线程池来实现并发处理,从而提高程序的性能和响应速度。本文将介绍异步的八种实现方式,并详细阐述异步编程的概念、实现方式和优缺点等问题。在讲解异步编程之前,我们先来了解一下异步的概念。异步是指不需要等待当前操作完成,就能够进行其他操作。

2024-04-26 11:15:06 700

原创 Windows环境安装Minio

(2)双击D:\minio\bin目录下的minio.bat文件,即可启动minio服务。(b) 教程中的9001是控制台端口,9000才是服务的端口。(1)在D:\minio\bin目录下新建一个minio.将前面下载的两个文件放到D:\minio\bin目录下。(a) 如果用不到客户端,可以不用安装;,用编辑器打开写入以下内容。(4)启动Minio服务。

2024-04-26 10:44:43 461

原创 接口性能调优方案分享:从2s到200ms的调优历程

平常在开发过程中,时常会遇到一些复杂查询或复杂业务,导致接口出现性能问题,基本上每一个程序猿在工作中都离不开对接口性能的调优。今天就在这里记录一下最近在实际开发中对于一个业务和查询都复杂,且数据量较大的查询性能优化的心路历程。5W数据的业务处理,Api耗时约2s,前端页面请求直接不用说了,加上界面渲染,直接干到3s多,而且这个接口还是查询比较频繁的接口。显然这样子的接口性能肯定是不行的。5W相同数据,优化后前端请求耗时平均约0.2s左右,接口查询刷新基本不用等待,达成要求!

2024-04-26 10:26:55 662

原创 Mockito单元测试

这里是导入方法importFromExcel()里面调用了getAllBudgetReportCategories(Long annualId),我们只需要关心这个方法需要返回什么数据给importFromExcel()方法才算合理就行了,最后把这个合理数据模拟出来。

2024-04-15 11:55:05 1051 1

原创 Centos7安装K8S报错:[ERROR KubeletVersion]: the kubelet version is higher than the control plane version.

很显然,Kubelet版本问题。

2024-04-09 15:56:38 193

原创 Docker设置ustc的镜像源(镜像加速器:修改/etc/docker/daemon.json文件)

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。Docker 镜像使用帮助文档。

2024-04-09 15:49:53 513

原创 常用网络&特殊符号大全(含彩色表情符号)

1、常用符号 ❤❥웃유♋☮✌☏☢☠✔☑♚▲♪✈✞÷↑↓◆◇⊙■□△▽¿─│♥❣♂♀☿Ⓐ✍✉☣☤✘☒♛▼♫⌘☪≈←→◈◎☉★☆⊿※¡━┃♡ღツ☼☁❅♒✎©®™Σ✪✯☭➳卐√↖↗●◐Θ◤◥︻〖〗┄┆℃℉°✿ϟ☃☂✄¢€£∞✫★½✡×↙↘○◑⊕◣◢︼【】┅┇☽☾✚〓▂▃▄▅▆▇█▉▊▋▌▍▎▏↔↕☽☾の•▸◂▴▾┈┊①②③④⑤⑥⑦⑧⑨⑩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ㍿▓♨♛❖♓☪✙┉┋☹☺☻تヅツッシÜϡﭢ™℠℗©®♥❤❥❣❦❧♡۵웃유ღ♋♂♀☿☼☀☁☂☄☾☽❄☃☈⊙☉℃℉❅✺ϟ☇♤♧♡♢♠♣♥♦☜☞

2024-03-29 17:37:18 693

原创 kubernetes(K8S)学习(九):K8S之日志监控

docker命令查看kubectl命令查看 1.1.2 Pod级别当然,kubectl describe除了能够查看pod的日志信息,还能查看比如Node、RC、Service、Namespace等信 息。 注意 :要是想查看指定命名空间之下的,可以-n=namespace比如kube-apiserver、kube-schedule、kubelet、kube-proxy、kube-controller-manager等可以使用journalctl进行查看 1.1.4 LogPilot + ES

2024-03-29 16:18:48 1150

原创 常见部署方案:普通部署、滚动部署、蓝绿部署、灰度发布(金丝雀发布)

AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,而我们平常所说的金丝雀部署也就是灰度发布的一种方式。蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本。最早的部署方式:先停止旧的应用,然后再部署新的应用,这个过程服务是会间断的。蓝绿部署无需停机,并且风险较小。

2024-03-29 15:57:21 465

原创 kubernetes(K8S)学习(八):K8S之常见部署方案

maxUnavailable :滚动升级时允许的最大unavailable的pod数量。conclusion :发现新旧pod是会共存的,并且可以访问测试看一下。先停止旧的pod,然后再创建新的pod,这个过程服务是会间断的。修改rollingupdate.yaml文件,将镜像修改成v2.0。conclusion :发现pod是先停止,然后再创建新的。创建bluegreen-service.yaml。修改bluegreen-service.yaml。修改bluegreen-service.yaml。

2024-03-29 15:55:17 986

原创 kubernetes(K8S)学习(七):K8S之系统核心组件

管理Pod及Pod中的容器,每个kubelet进程会在API Server上注册节点自身信息,定期向Master节点汇报节点资源的使用情况,并通过cAdvisor监控容器和节点资源。然后,目标节点上的kubelet通过API Server监听到Kubernetes Scheduler产生的Pod绑定事件,获取对应的Pod清单,下载Image镜像,并启动容器。单纯地调度pod,按照特定的调度算法和策略,将待调度Pod绑定到集群中某个适合的Node,并写入绑定信息,由对应节点的kubelet服务创建pod。

2024-03-29 15:46:28 1328

原创 kubernetes(K8S)学习(六):K8S之Dashboard图形界面

官网Dashboard是基于web的Kubernetes用户界面。您可以使用指示板将容器化的应用程序部署到Kubernetes集群,对容器化的应用程序进行故障排除,并管理集群资源。您可以使用Dashboard来获得运行在集群上的应用程序的概览,以及创建或修改单独的Kubernetes资源(例如部署、作业、守护进程集等)。例如,您可以扩展部署、发起滚动更新、重新启动pod或使用部署向导部署新的应用程序。

2024-03-29 15:35:41 646

原创 kubernetes(K8S)学习(五):K8S进阶(Lifecycle......偏理论)

Horizontal Pod Autoscaling可以根据CPU使用率或应用自定义metrics自动扩展Pod数量(支持replication controller、deployment和replica set)01-控制管理器每隔30s查询metrics的资源使用情况02-通过kubectl创建一个horizontalPodAutoscaler对象,并存储到etcd中03-APIServer:负责接受创建hpa对象,然后存入etcd。

2024-03-29 15:28:06 1612

原创 Kubernetes(K8S)学习(四):K8S之Storage

在电脑中, volume(文件集)是一个可辨认的数据存储(storage)单元。Volume地址(1)容器崩溃时文件丢失。(2)Kubelet重新启动容器后为clean状态。在Pod中一起运行的容器之间共享文件时,会出现第二个问题。Kubernetes的Volume抽象地解决了这两个问题。官网有了PV,那Pod如何使用呢?为了方便使用,我们可以设计出一个PVC来绑定PV,然后把PVC交给Pod来使用即可,且听下面的分析。

2024-03-29 14:47:56 1187

原创 Kubernetes(K8S)学习(三):K8S实战案例

这里的user.yaml和order.yaml,不知道什么原因,在本地idea中启动测试可以正常注册到nacos(linux)中;这里的user.yaml和order.yaml,不知道什么原因,在本地idea中启动测试可以正常注册到nacos(linux)中;,这种配置下,不要求nacos和user、order的pod在同一k8s集群节点,依然可以注册到nacos中。,这种配置下,不要求nacos和user、order的pod在同一k8s集群节点,依然可以注册到nacos中。

2024-03-29 11:03:40 1319

原创 Kubernetes(K8S)学习(二):K8S常用组件

ReplicationController确保任何时期都在运行指定数量的Pod副本。换句话说,ReplicationController确保一个容器或一组相同的容器始终处于可用状态。Pod期待的副本数(replicas)用于筛选目标Pod的Label Selector当Pod的副本数量小于预期数量时,用于创建新Pod的Pod模板(template)也就是说通过RC实现了集群中Pod的高可用,减少了传统IT环境中手工运维的工作。(1)kind:表示要新建对象的类型。

2024-03-28 17:13:10 792

原创 kubernetes(K8S)学习(一):K8S集群搭建(1 master 2 worker)

:使用kubeadm搭建一个3台机器组成的k8s集群,1台master节点,2台worker节点。由于k8s安装较麻烦,为防止出现其他异常,特此统一下安装的软件版本。 1.2、k8s环境系统要求 1.3、准备三台Centos7虚拟机(1)保证3台虚拟机的Mac地址唯一 需同时启动3台虚拟机,故应保证3台虚拟机的Mac地址唯一。可参考下图: 注意:()(2)安装依赖包 2.2、安装Docker注意:()在每一台机器上都安装好Docker,版本为18.09.0(1)安装必要的依赖

2024-03-28 16:12:15 1160 1

原创 Docker学习

挂载主机目录 (Bind mounts)-最常用 (docker run -v 宿主机目录:容器目录)数据卷(Volumes)Docker 中存在多个容器时,容器与容器之间经常需要进行通讯,例如nacos访问mysql,redis集群中各个节点之间的通讯。

2024-03-28 10:39:37 655

原创 Redis入门到入坑(二)

Redis是一种内存数据库,在断电时数据可能会丢失。比如你redis整个挂了,然后redis不可用了,如果没有持久化的话,redis就会丢失所有的数据,如果通过持久化将数据搞一份儿到磁盘上去,然后再定期同步到一些云存储服务上去,那么就可以保证一些数据不丢失,保证数据的可靠性。Rdb方式是通过手动(save-阻塞式,bgsave-异步)或周期性方式保存redis中key/value的一种机制,Rdb方式一般为redis的默认数据持久化方式.系统启动时会自动开启这种方式的持久化机制。

2024-03-21 15:36:56 1992

原创 Redis入门到入坑(一)

背景 我们现在的项目架构中,基本上是Web服务器(Tomcat)和数据库独立部署,独占服务器资源,随着用户数的增长,并发读写数据库,会加大数据库访问压力,导致性能的下降,严重时直接导致系统宕机,例如: 此时,我们可以在Tomcat同服务器上中增加本地缓存,并在外部增加分布式缓存,缓存热门数据。也就是通过缓存能把绝大多数请求在读写数据库前拦截掉,大大降低数据库压力。例如: 基于这样的一种架构设计,于是类似redis的一些分布式数据库就诞生了。 Redis 概述 Re

2024-03-21 14:31:16 366

原创 熟知哈希密码的加盐强化

哈希加密是一种通过。

2024-03-20 17:18:29 744

原创 分布式锁简介

分布式锁。

2024-02-05 16:21:00 899

原创 maven的依赖下载不下来的几种解决方法

每次部署测试环境,从代码库拉取代码,都会出现缺少包的情况。然后找开发一通调试,到处拷包。

2023-08-29 10:17:14 5753

原创 Linux虚拟机(CentOS)开放端口号3306,实现Mysql远程连接

设置好了之后就有了新的mysql账户密码了,这里不使用root【可能原因是root账户限制其它ip访问】,使用新的账号密码,测试新的账号和密码能否登录mysql,测试好后下一步。linux装好mysql后,设定远程访问的账户和密码,test表示新设置的mysql账户,%表示开启远程权限,testPassword为自己的设的新账户密码。6、应该是yes,说明端口已经打开,去navicat测试连接,输入ip和新的Mysql账户密码,即可成功!3、如果是no,表示关闭,打开3306端口。

2023-02-20 15:34:27 3129 3

原创 Linux下安装MySQL8.0的详细步骤(解压tar.xz安装包方式安装)

i:端口号,查看是哪个PID(进程号)占用了该端口,然后使用kill PID(进程号)杀掉进程,重新执行service mysql start。如果发现启动失败,可以先查看data里面的mysql.log,如果有提示3306这样的字样,第一个想到的应该是。注:若连接不到可以查看mysql端口是否开放,若未开放则开放端口继续连接,最终测试成功!在这一步最开始就浪费了我好大的时间。1.填写IP、端口连接mysql服务。11. 编辑my.cnf文件。

2023-02-20 15:22:34 2610

转载 Spring Boot获取前端页面参数的几种方式总结

Spring Boot的一个好处就是通过注解可以轻松获取前端页面的参数,之后可以将参数经过一系列处理传送到后台数据库,前段时间正好用到,但是忘得差不多了,获得的方式有很多种,这种东西不写下来一段时间不用就忘得差不多了,感觉记性越来越差了呢,这里稍微总结一下,大致分为以下几种:      1.指定前端url请求参数名称与方法名一致,见下图,这种方式简单来说就是url请求格式中的参数需要与方法的参数名...

2022-04-28 14:28:47 1683

原创 idea在Build编译时找不到类问题

idea编译找不到类问题 解决idea无法自动编译的问题 先总结一下idea环境的情况,之前我的maven仓库是在c盘的user目录下的,感觉有点不爽换到了d盘,maven的settings文件也配置了很多个,差不多就这么多了。 然后正常码字,在build项目的时候,OK,完全没毛病。运行的时候就一堆找不到类了,如下: 然后我切换了各个settings文件,清除idea缓存,删除jar包重拉,...

2022-04-27 16:29:05 1968

原创 Redis入门到入坑(三)

Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库、缓存、消息中间件,这么优秀的东西肯定要一点一点的吃透它。这是关于Redis五种数据结构详解,包括这五种的数据结构的底层原理实现。理论肯定是要用于实践的,因此最重要的还是实战部分,也就是这里还会讲解五种数据结构的应用场景。String:字符串类型List:列表类型Set:无序集合类型ZSet:有序集合类型Hash:哈希表类型。

2022-04-18 17:29:35 1783

原创 Druid多数据源配置 (Datasurce动态切换)

Druid多数据源配置(Datasurce动态切换) Druid Druid多数据源配置(Datasurce动态切换)一. 直接上代码二. AbstractRoutingDataSource 补充三. 多数据源 + ShardingJDBC 数据源整合 一. 直接上代码 多数据源切换自定义注解 package com.gateway.admin.datasources...

2022-04-18 14:15:00 2653 1

原创 数据库连接池技术 之 Druid

简介 mysql是一个TCP/IP协议的网络程序,如果我们每次都从数据库获取新的连接,那么: 每获取一次新的连接的成本很高,需要“三次握手”,断开需要“四次挥手”等过程每一个客户端都有单独的线程来维护它的通信 这样每次高成本获取的连接只用一次,太奢侈了;另外,如果有很多的客户端同时去连接mysql服务器,会造成mysql的并发量就有风险,如果太多就会挂了。特别是遇到一些程序员,获取完连接,没...

2022-04-18 10:56:04 190

原创 彻底解决跨域问题(五种解决跨域的方式)

#跨域问题解决方案 最近自己写了一个js组件,该js组件是提供给第三方使用的,而js组件中涉及了ajax请求,于是乎就出现了跨域请求问题。下面记录一下自己的解决路程。 文章目录 2.使用spring拦截器解决跨域问题3.jsonnp实现(仅适用GET请求,不推荐)4.注解实现5.配置nginx实现 ##什么是跨域 参考:跨域请求详解 个人理解:我理解的跨域就是,两...

2022-04-13 17:44:47 263

原创 Linux 安装Nginx详细教程

系统:Centos7  64位 Nginx:  http://nginx.org/en/download.html 我下载1.20.2 下载模块依赖性Nginx需要依赖下面3个包 1.gzip 模块需要 zlib 库 ( 下载: http://www.zlib.net/ ) 2.r...

2022-02-28 11:32:08 893

原创 Linux系统安装JDK1.8 详细流程

Linux系统安装JDK1.8 详细流程 文章目录 Linux系统安装JDK1.8 详细流程前言安装详细流程卸载Open JDK下载并安装JDK配置环境变量测试环境 参考文章 前言 在 Linux系统上安装 JDK的时候,基本上所有的资料都要你检查并卸载掉系统上原生的 Open JDK,然后再进行 JDK的安装。那么 Open JDK和 JDK有什么区别呢? 其实,Open JDK是 JDK的原始开放代码,JDK7就是在 Open JDK7的基础上发布的。可以简单的认为...

2022-02-25 15:57:27 22361 4

原创 JVM调优总结+JVM垃圾回收(GC)原理

http://chenchendefeng.iteye.com/blog/455883 http://unixboy.iteye.com/blog/174173   一、相关概念 基本回收算法 1. 引用计数(Reference Counting) 比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用...

2022-01-14 17:44:52 275

空空如也

空空如也

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

TA关注的人

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