- 博客(45)
- 资源 (2)
- 收藏
- 关注
原创 容器编排引擎Kubernetes 10——在k8s集群中部署项目
基于 centOS7,如果没有这个镜像那么它会下载这个镜像 FROM centos:7 创建者 MAINTAINER chuxuezhe 复制文件到指定目录并自动解压 ADD openjdk-11_linux-x64_bin.tar.gz /usr/local/ 设置环境变量 ENV JAVA_HOME=/usr/local/jdk-11 ENV CLASSPATH=.:/lib ENV PATH=$JAVA_HOME/bin:$PATH:/usr/local/jdk-11/bin。
2024-07-29 15:07:12 899
原创 四向链表的创建、打印预览,遍历。任意节点出发遍历整个链表(不重复)
四向链表的创建、打印预览,遍历。任意节点出发遍历整个链表(不重复)-CSDN博客
2024-07-29 15:07:01 137
原创 Redis分片机制
客户端可以和集群中任意Redis实例通信,当客户端访问某个实例时,服务器进行计算key应该映射到哪个具体的Redis实例中存储,如果映射的实例不是当前实例,则该实例主动引导客户端去对应实例对key进行操作。上一篇谈到主从切换的哨兵模式已经提到,哨兵模式可以实现高可用以及读写分离,但是缺点在于所有Redis实例存储的数据全部一致,所以Redis支持cluster模式,可以简单将cluster理解为Redis集群管理的一个插件,通过它可以实现Redis的分布式存储。id从0到1000映射到实例A,user。
2024-07-29 15:06:07 619
原创 SpringCloud Gateway实现限流功能详解
通俗的说,限流就是 限制一段时间内,用户访问资源的次数 ,减轻服务器压力,限流大致分为两种:1. IP 限流(5s 内同一个 ip 访问超过 3 次,则限制不让访问,过一段时间才可继续访问)2. 请求量限流(只要在一段时间内(窗口期),请求次数达到阀值,就直接拒绝后面来的访问了,过一段时间才可以继续访问)(粒度可以细化到一个 api(url),一个服务)
2024-07-26 13:53:52 2221
原创 详解让MySQL和Redis数据保持一致的四种策略
先阐明一下 MySQL 和 Redis 的关系:MySQL 是数据库,用来持久化数据,一定程度上保证数据的可靠性;Redis 是用来当缓存,用来提升数据访问的性能。关于如何保证 MySQL 和 Redis 中的数据一致(即缓存一致性问题),这是一个非常经典的问题。使用过缓存的人都应该知道,在实际应用场景中,要想实时刻保证缓存和数据库中的数据一样,很难做到。基本上都是尽可能让他们的数据在绝大部分时间内保持一致,并保证最终是一致的。
2024-07-26 13:44:57 562
原创 Spring 循环依赖及解决方式
1、getBean(A) 先去单例池获取,单例池不存在,二级缓存获取,二级缓存不存在且允许提前访问,三级缓存中取,此时返回为空,开始加载 A2、singletonsCurrentlyInCreation(A) 将 A 放入正在创建的 Map 中3、new A();实例化 A4、提前暴露 A,将 A 放入三级缓存,addSingletonFactory(beanName, () -> getEarlyBeanReference(beanName, mbd, bean));
2024-07-26 13:41:12 901
转载 docker搭建Jenkins以及基本使用图文教程
这里有一个需要注意的地方,就是默认的分支名称,GitHub 上现在默认的主分支名称是 main,Gitee 似乎还是 master,这个无所谓了,但是小伙伴们注意图片下面的分支,按你实际的情况填写。另外,可以开启 SSH 操作日志,开启日志之后,就可以看到 Jenkins 中操作应用服务器其的过程了,特别是大家第一次配置的时候,容易出错,配置了日志,将来出错就知道什么原因导致的错误了。我的代码仓库地址:https://gitee.com/zhourui815/jenkins_demo。
2024-07-26 13:40:45 1815
原创 Centos系统服务器查看端口是否开放的方法
使用telnet命令,telnet名利在windows上可以直接使用,在linux上使用的话,先安装(yum install -y telnet),然后在使用一下方式检测,端口是否开放。不同的linux系统查看端口是否开放的不同,在某些环境下,需要依赖于服务,如果centos中并没有装相关的服务,就不一定能生效。3、利用firewall命令,语法为“firewall-cmd --query-port=port/tcp”。使用nc命令,nc命令通常也需要安装(yum install -y nc),命令为。
2024-07-26 13:40:27 1366
原创 vue项目,如何区分开发环境、测试环境、正式环境
测试环境通常就是开发环境,所以设置为"build:test": “NODE_ENV=development vue-cli-service build”,二、怎么设置process.env.NODE_ENV的变量值。这是在MacOS操作系统中,但是在window系统中不起作用。一、通过哪个字段判断开发、测试、正式环境。在package.json文件中配置。vue如何配置研发/测试/生产环境?不用配置文件,env中有两个默认字段。在编译时指定webpack的编译模式。使用配置文件,可以任意添加字段。
2024-07-26 13:40:11 864
原创 Centos系列:Centos的docker部署安装超详细教程(零基础可用)以及docker常用命令详解(图文结合纯干货,适用于初学者)
Centos系列:Centos的docker部署安装超详细教程(零基础可用)以及docker常用命令详解(图文结合纯干货,适用于初学者)_centos docker-CSDN博客
2024-07-26 13:32:00 490
原创 作为Java程序员还不知道Spring中Bean创建过程和作用?
进行初始化工作(使用注解 @PostConstruct 初始化 或者 使用(xml)init-method 初始化, 前者技术比后者技术先进~);在Bean的生命周期中,可以进行许多操作,例如自定义初始化和销毁方法、注入属性、设置依赖关系等。在Spring框架中,Bean的生命周期是指一个Bean从创建到销毁的过程。1.实例化: 给Bean分配内存空间(对应JVM中的“加载”,这里只是分配了内存);2.设置属性: 进行Bean的注入和装配;执行初始化的前置工作;执行初始化的后置工作;
2024-07-25 16:14:29 166
原创 [SpringAop + Logback +MDC] 现网必备全链路日志追踪
全链路日志追踪是指在一个分布式系统中追踪请求的完整路径,并记录每个请求在系统中的处理过程中所产生的日志信息。在现网的日志文件,我们就可以通过搜索这个字符串将跳跃的日志文件串联成一个完整的请求上下文,而这个字符串就是后端程序员常说的。综上所述,全链路日志追踪是现网系统中必备的工具,它可以帮助我们更好地排查问题、优化性能,并提供对系统的监控和统计能力。其实说白了,就是在日志文件中加入一个可以标识每个请求的东西,如下所示,可以看到a请求的日志中有一串字符串。来实现,以及为什么全链路日志追踪在现网系统中是必备的。
2024-07-25 11:26:26 918
原创 Springboot整合Swagger3全注解配置(springdoc-openapi-ui)
定义两个接口1234567891011121314151617181920212223242526272829303132333435packageimportimportimportimportimportimportimportimport@Tag(name = "AdminControllerApi", description = "管理员相关接口")publicinterface。
2024-07-25 11:23:18 1350
原创 架构师:数据库扩容也可以如此丝滑,MySQL千亿级数据生产环境扩容实战
但是在极限情况下, 即便通过上面的数据校验处理, 也有可能出现99.99%数据一致, 不能保障完全一致,这个时候可以在旧库做一个readonly只读功能, 或者将流量屏蔽降级,等待日志增量同步工具完全追平后, 再进行新库的切换。日志增量同步过程随时可能会产生新的数据, 新库与旧库的数据追平也会是一个无限逼近的过程。修复切换异常数据:在切换过程中, 如果出现,Canal未同步,但已切换至新库的请求(比如下单,修改了资金, 但还未同步 ), 可以通过定制程序, 读取检测异常日志,做自动修复或人工处理。
2024-07-25 10:34:38 824
原创 架构师:每天千万级订单的生成,数据库系统如何设计?订单系统架构如何设计?
轻量级Java框架,在Java的JDBC层提供的额外服务。下订单过程,业务极其复杂,不只是订单号的生成插入,除了订单系统,还可能涉及库存系统,促销系统,支付系统,结算系统,积分系统,同时可能有下游的订单统计中心。时间戳+userid,业务角度,一个正常用户不可能1毫秒内下两个单子,即便有说明是刻意刷单,应该被前端限流。多为强依赖的关联,使用分布式框架,基于框架层面的重试机制,接口幂等设计,保障数据的最终一致性。下单减库存的,要注意超时取消,大订单量及分库分表条件下,扫表方案不可取,应该设计为延迟消费。
2024-07-25 10:26:17 972
原创 面试题:【浏览器安全机制】一文带你了解同源策略(Same origin policy)及跨域请求
【浏览器安全机制】一文带你了解同源策略(Same origin policy)及跨域请求-CSDN博客
2024-07-25 08:59:58 107
原创 面试题:Session不香吗,为什么还要Token?
Session不香吗,为什么还要Token?_为什么sso要使用加密token-CSDN博客
2024-07-25 08:58:03 398
原创 面试题:常用的认证机制之session认证和token认证
前端输入用户名和密码进行登录操作,后端拿到用户名和密码后,会把md5进行加密,加密之后,拿上加密后的密文到用户表中查找密文是否一致,判断用户是否存在,如果用户存在,则认证通过;认证成功后后端会生成session_id(后端会话当中的一个键,表中的一个key值),将session_id默认保存在会话表,当这条数据一旦记录完之后,会将session_key数据作为session_id放到响应头的set-cookie字段中;
2024-07-25 08:55:36 365
原创 面试题;Seata四种事务模式AT、TCC、SAGA 、 XA详解
Seata四种事务模式AT、TCC、SAGA 、 XA详解_seata2.0使用saga和tcc的模式配置的区别-CSDN博客
2024-07-25 08:48:46 102
原创 面试题:给定一个迭代器类的接口,接口包含两个方法: next() 和 hasNext()。设计并实现一个支持 peek() 操作的顶端迭代器
给定一个迭代器类的接口,接口包含两个方法: next() 和 hasNext()。设计并实现一个支持 peek() 操作的顶端迭代器
2024-07-25 08:37:38 218
原创 面试题:给定一个整数数组,返回两个数字的索引,使它们相加后得到特定值
给定一个整数数组,返回两个数字的索引,使它们相加后得到特定的目标值。你可以假设每个输入只有一个解决办法,并且你可能不会两次使用相同的元素。
2024-07-25 08:32:02 264
原创 架构-DDD完整的实践
实体有唯一的标识,有生命周期且具有延续性。例如一个交易订单,从创建订单我们会给他一个订单编号并且是唯一的这就是实体唯一标识。同时订单实体会从创建,支付,发货等过程最终走到终态这就是实体的生命周期。订单实体在这个过程中属性发生了变化,但订单还是那个订单,不会因为属性的变化而变化,这就是实体的延续性。
2024-07-25 08:27:29 786
原创 Swagger3-带有自定义标头名称身份验证
使用持有者身份验证,但需要在Authorize以外的标头中发送令牌。根据RFC 7235和的定义,type: http用于HTTP身份验证。根据定义,HTTP身份验证使用报头。要使用自定义header名称,需要将其定义为API keyin: header请注意,由于它是非标准的持有者方案,客户端将需要手动将“持有者”前缀添加到令牌值。例如,当您在Swagger UI中单击“授权”时,您需要输入“不记名令牌”,而不仅仅是“令牌”。
2024-07-24 17:56:57 331
原创 redis内存优化 - 使用rdm观察内存情况
重要指标:used_memory_rss和used_memory以及它们的比值mem_fragmentation_ratio。当mem_fragmentation_ratio>1时,说明used_memory_rss-used_memory多出的部分内存并没有用于数据存储,而是被内存碎片所消耗,如果两者相差很大,说明碎片率严重。
2024-07-24 17:46:53 654
原创 Redis定期删除过期数据的操作流程
以上对于redis的过期数据进行定期删除是使用了@Scheduled(fixedDelay = 60000)注解,这是Spring 框架提供的注解,用于定义定期执行的任务。这行代码获取了 Redis 中所有的键(key),keys("*") 方法会返回一个 Set 类型的集合,其中包含了所有的键。其中:if (template.getExpire(key)
2024-07-24 17:32:32 776
原创 vue安装less-loader依赖失败问题及解决方案
文章主要介绍了vue安装less-loader依赖失败问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2024-07-24 17:30:14 1129
原创 Fiddler+雷电模拟器里的APP抓包( Fiddler模拟器抓包)
的形式工作的,浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,浏览器默认通过自己发送HTTP请求到服务器,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler开启会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。抓包抓的是协议,fiddler抓的是HTTP、HTTPS协议,wireshark抓的是其他协议。15、打开fiddler,重启模拟器,输入设置的密码,按回车键,打开需要抓包的APP,就可以在电脑上进行APP抓包了。12、打开模拟器,设置代理。
2024-07-24 17:26:59 5841
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人