- 博客(79)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【分布式】多级缓存架构,缓存预热,进程缓存,caffeine本地缓存,Lua脚本与语法,nginx+openResty+lua网管缓存,缓存同步方案Canal ,高并发压测
Nginx能干嘛反向代理集群(携带负载均衡)静态资源服务器(动静分类)网关(多级网关)OpenResty是一个基于nginx的高性能web平台,用于更方便的搭建web服务和网关,可以是的网关更具有高并发能力、可扩展能力、动态网关能力。配合nginx,有完整的nginx能力可以基于lua进行扩展可以使用lua进行自定义的逻辑处理官网地址:https://openresty.org/cn。
2024-08-16 10:06:48
1113
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【分布式】手把手带你搞定,JVM本地锁, MySql 悲观锁与乐观锁,redisson分布式锁,zookeeper分布式锁及应用
这个时候已经进入了判断内部了,所以会执行删除锁,但是这个时候因为锁恰好失效,所以其他请求就占有锁,那么自己在删除锁的时候,其实删除的是别人的锁,这样在极端的情况下其实也会出问题的。举个例子:我们这的艾鹿薇奢侈品,由于疫情,是不让所有人全进去店里购买的,必须没人排队发放一张卡,有了这张卡才能进店里购买,并且只能进一个人(或一个家庭),直达出来,才能放后面的进入,也就是每次都是一个个的进去,这么这个一张卡其实就是令牌的理念,也就是分布锁了。如果抢到了锁,后续其他的请求只能等待释放,释放了以后再次争抢锁。
2024-07-31 09:48:24
1389
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【Docker】docker常用命令
启动docker:systemctl start docker重启dockers:systemctl restart docker查看docker是否启动:systemctl status docker停止docker容器:systemctl stop dockerDocker配置为开机自动启动: systemctl enable docker确认Docker服务设置为开机自动启动: systemctl is-enabled docker。
2024-06-29 16:23:26
746
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【Docker】转存Docker容器镜像
需要用原来那个容器的启动命令来启动这个被导出的容器,这玩意记不住,原来容器如果被删了也不好整。当然也有手段去运行这个容器,我们这里不去浪费时间了,那个操作太恶心。所以我们使用另外一种方式进行镜像的保存。之前所做的都是针对容器的导入导出,现在是针对镜像的保存和加载。把正在运行中的容器导出到一个文件压缩包,然后可以传输到其他服务器进行运行。导入的镜像是无法 docker run 的。
2024-03-06 00:11:27
529
原创 【Java基础】阿里巴巴java开发规范华山,泰山,嵩山,黄山;谷歌加吧开发规范Effective Java(中文版第3版)
阿里巴巴java开发规范华山,泰山,嵩山,黄山;谷歌加吧开发规范Effective Java(中文版第3版)
2024-08-08 15:03:28
124
原创 【MongoDB 】MongoDB 介绍及应用,设计到4个案例
MongoDB 是非关系型数据库,也就是nosql,存储json数据格式会非常灵活,要比数据库mysql/MariaDB更好,同时也能为mysql/MariaDB分摊一部分的流量压力。对于经常读写的数据他会存入内存,如此一来对于热数据的并发性能是相当高的,从而提升整体的系统效率。另外呢,对于非事务的数据完全可以保存到MongoDB中,这些数据往往也是非核心数据。
2024-08-05 21:58:31
1150
原创 【MySQL】拓展:为什么不要超过三表关联查询?
其实阿里有一个数据库的规范,那就是禁止三表以上的关联查询。那么目前为止我所接触过的一些项目,也的确是差不多的,有部分可以放宽到四表查询,但是超过四张表就不允许了,因为的确是会有性能影响的。除非是传统行业,对性能要求不是特别大,那么这个规约可以无所谓。那么绝大多数互联网公司也的确这么做,少数公司不按照这个规范呢也问题不大的。
2024-07-30 17:19:24
429
原创 【Redis】拓展:Redis 设计规范
之前那样,如果要避免bigkey甚至其他的一些key冲突,我们其实需要对存值的时候的key,做好规范,因为在一个庞大的系统中,我们会有无数的key存在redis中,如果不做好规范管理,那么不仅会冲突,甚至会带来一些不可预料的生产风险。
2024-07-30 17:16:31
519
原创 【Redis】 拓展:Redis - BigKey方案探讨
BigKey: 用户越多,redis数据越多,bigkey会使得缓存数据更大,网络带宽会被占用,执行效率就低下,高并发的时候吞吐量QPS也会下降。
2024-07-30 17:12:57
867
原创 【java基础】VO/BO/PO/DO/DTO 应用
在 MVC 模式中,VO 和 DTO 通常用于表示视图层和服务层之间的数据传递,BO 和 DO 则用于表。示业务逻辑和领域模型。Entity 通常指代 PO,表示持久化对象,用于数据访问层与数据库交互。PO 对应数据库表结构,用于和数据库交互;DO 表示业务领域中的实体,处理业务逻辑;BO 包含业务逻辑,处理业务层的操作;DTO 用于不同层次间的数据传输;VO 主要用于前端视图展示;
2024-07-29 13:52:49
100
原创 【多线程】多线程接口并行对数据字典的查询优化,多线程异步任务编排CompletableFuture详情
我们将对接口的调用提出优化方案,让大家学会如何提升请求访问效率。如何学会高并发接口设计?如何掌握线程与线程池?如何学会CompletableFuture异步编排?如何学会线程有序与并行?如何学会线程任务、多任务组组合?
2024-07-25 17:28:19
814
原创 【SpringCloud】企业认证、分布式事务,分布式锁方案落地-2,redis+canal
一定要保证数据库不能死,数据库死了资损会相当严重,所以限流+降级是必要的手段。
2024-07-25 15:40:31
743
原创 【SpringCloud】微服务的CAP定理与数据一致性抉择
比如双11或者618的时候,订单蹭蹭蹭的海量增加,我们只需要关注订单下单成功就行,具体多少订单,具体多少金额,我们不会去实时的统计计算的,因为没必要,会在高峰期过后逐步去统计,慢慢的实现一致性。在保证数据库和缓存一致的情况之下,一些网站的首页和详情页中的某些数据可能会不一致,这是弱一致性的表现(比如慕课网),如果要保证强一致性,则每个页面都必须和后端交互,但是后端压力过大可能会导致这个接口所在的服务直接挂掉,如此一来系统不可用。CA:满足一致性,满足可用性,一般来说都是以单体存在的集群架构,可扩展性不高。
2024-07-23 16:42:05
676
原创 【SpringCloud】 微服务分布式环境下的事务问题,seata大合集
前面聊了一些常见的分布式事务方案,接下来我们所主要实现的是通过微服务的阿里组件,seata来实现微服务领域中的分布式事务。Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。AT模式(Auto Transcation)是阿里首推的,因为对代码是零侵入的,使用起来很方便。TC:班主任,某某学生成绩下滑,学校里打架,则通知家长回家好好教育(驱动回滚);
2024-07-23 16:03:53
1292
原创 【SpingCloud】客户端与服务端负载均衡机制,微服务负载均衡NacosLoadBalancer, 拓展:OSI七层网络模型
可能有些同学第一次听说集群和负载均衡,所以呢,我们先来做一个介绍,然后再聊服务端与客户端的负载均衡区别。
2024-07-23 13:54:40
1321
2
原创 【SpringCloud】微服务远程调用OpenFeign
不通过feign也可以直接通过注册中心手动拉取列表,来进行远程调用,feign只不过帮我们封装的更好,调用更简单,简化了更多代码。
2024-07-23 13:44:16
482
原创 【SpringBoot】 jasypt配置文件密码加解密
目前我们对yml配置文件中的密码都是明文显示,显然这不安全,有的程序员离职了以后可能会做一些非法骚操作,所以我们最好要做一个加密,只能让领导架构师或者技术经理知道这个密码。所以这节课就需要来实现一下。我们可以使用jasypt来实现密码加密的机制创建一个test类运行结果可以看到,每次运行获得的加密密码都是不一样的。但是没关系,解密的话都是可以的。只要有秘钥,就能解密。yml配置:运行测试结果消息队列能否消费。
2024-07-20 19:19:41
389
原创 【MQ】大白话告诉你什么是MQ,没有比这还详细还易懂的文章了吧,以RabbitMQ为例,从小白到大神
RabbitMQ基于AMQP协议,Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息中间件设计的。基于这个协议的客户端和消息中间件可以传递消息,并且不会因为客户端或中间件产品的不同所首先,也不会受到不同开发语言的限制。比如用java、php、.net都可以使用消息队列,并且只要支持AMQP这个协议,不论什么客户端,都可以相互传输消息。而且甚至与你只要遵循amqp协议,自己也能开发一套消息队列产品也没问题。
2024-07-20 19:12:41
1372
原创 【Spring】SpringRetry重试机制和Spring异步任务发送操作结合应用场景实操,通俗易懂
平时调用一些第三方接口或者内部接口,可能出现处理异常或者超时或者意外因素,我们可以使用重试机制来为用户提高体验。
2024-07-20 17:44:50
372
原创 【Linux】关于内存不足,docker中容器自动停止解决办法,比如nacos分配内部不足,自动停止。
在使用linux系统时,总会发现buff/cache过高,不清理的话一直挂在那,因此写了一个定时清理程序free -h6个字段列的意思分别是:total:系统内存总大小used:已使用内存free:可用内存(剩余多少内存)shared:多个进程共享的内存buff/cache:系统缓存大小available:还可以被使用的内存左侧两个字段行的意思分别是:Mem:物理内存空间使用情况,通常意义上的物理内存分区。
2024-07-11 09:13:12
560
原创 【Git异常问题解决】大问题大问题~remote: error: File: MB, exceeds 100.00 MB.git push提示我文件大于100m处理方法
Git单个文件大小超过100M时,就会上传失败,因为默认的限制了上传文件大小不能超过100MB 进入项目所在的文件夹,打开终端 输入命令:设置上传限制的文件大小。git config -l 查看配置 有http.postBuffer 524288000就是配置成功了 这样就可以上传大于100MB的文件了。
2024-07-09 11:06:06
369
原创 【Java异常解决】 com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
不用配置中心的话,注释掉,否则一直报这个错。
2024-07-04 10:49:48
161
原创 【java异常解决】org.springframework.amqp.AmqpTimeoutException: java.util.concurrent.TimeoutException
进入后台管理页面(ip:15672),点击Overview下的Ports and contexts。RabbitMQ有3个端口,java连接需要使用:5672。SpringBoot连接RabbitMQ,推送消息报连接超时的错误。
2024-07-04 10:27:32
207
原创 【java开发环境】多版本jdk 自由切换window和linux
一、准备各种版本的jdk,按自己的需要下载。我这里是需要jdk17和jdk8。1、jdk17,选择exe后缀文件2、jdk8下,选择exe后缀文件二、详细步骤1、安装jdk很简单,双击exe文件后全部默认下一步即可,安装的时候记住安装路径。如果想卸载,按照正常应用的卸载方式即可。2、设置环境变量2.1 删除jdk安装时自动添加的环境变量操作位置:系统—关于—高级系统设置—环境变量—系统变量。
2024-07-01 16:06:34
763
原创 【云服务】阿里云esc服务器2核2G,解决nacos总自动退出,日志显示正常
租的云服务器,2核2G。使用Docker运行Nacos容器的时候发现总是自动退出。Nacos日志里面没有明显的报错信息。查了一下是内存溢出错误,指令如下。又重新看了下Nacos日志,如下图所示,发现堆内存设置的太大了,初始堆内存Xms设置的1G,最大堆内存Xmx设置的1G,年轻代Xmn设置的512M。发生了OOM错误,自动杀死了相关进程。问题找到了,将JVM堆内存设置小即可。
2024-06-30 22:21:15
352
原创 【Docker】docker安装Java开发环境
docker run -p 4406:3306 --name mysql --restart=always \-v /home/docker/mysql8.3.0/log:/var/log/mysql \-v /home/docker/mysql8.3.0/data:/var/lib/mysql \-v /home/docker/mysql8.3.0/conf:/etc/mysql/conf.d \-v /home/docker/mysql8.3.0/mysql-files:/var/lib/mys
2024-06-30 21:05:19
614
原创 【Mybatis】mybatis基础
在MyBatis使用配置文件写sql语句的时候,如果出现了需要使用<或者<=做比较的时候,会编译报错,比如a < b改为b > a就避免了使用<,也就不会报错了,大于号是不会报错的。[CDATA[ ]]>里, 也就是<![CDATA[<]]>这样写。原因就是mybatis解析配置文件的时候把<当成了开始标签,而不是小于号。如果是<=就这有写<![CDATA[<=]]>[CDATA[ ]]>符号。解决这个问题有多种方式。方式二: 使用代替符号。
2024-06-30 20:39:02
197
原创 【设计】在Java后端开发时使用JSONObject完全替代JAVABean(DTO,VO)是否可行?
其实这样做你是得不偿失,不过也要看什么项目,如果你的项目只在只需要实现功能,不在乎健壮性,可持续性那就完全可以。因为我现在公司老项目所有用的POJO的地方都是用JSONObject。你用了可能丧失以下功能,其实是得不偿失的。综上所述,如果你们公司对代码的要求只是把前端的数据简单的存到数据库,那用jsonobject完全是可以的。1、代码可读性低,因为你只能通过前端页面和后端数据库表接口去推断能可能字段、字段类型。2、无法统一处理后端的表单验证功能(如果你不做验证算我白说)。4、无法通过工具生成标准文档。
2024-06-29 16:24:23
245
原创 【java异常解决】Error creating bean with name ‘自己写的类‘ defined in URL 【】;Initialization of bean failed;
idear启动成功,jar包运行报此类错误。原因是缺少相关依赖。
2024-06-19 16:39:22
548
原创 【java异常解决】IDEA 启动工具栏Debug错误提示:Command line is too long. Shorten command line
在 IntelliJ IDEA 或其他 JetBrains IDE 中遇到 “Command line is too long. Shorten command line” 的错误时,这通常是因为项目类路径太长了。这在 Windows 系统上更常见,因为 Windows 有一个较短的最大命令行长度限制。jar manifest:IDE通过临时classpath.jar传递长类路径。原始类路径在MANIFEST.MF中定义为classpath.jar中的类路径属性。IDE不会缩短长类路径。
2024-06-19 10:52:14
272
原创 【Mybatis-Plus】 插入实体类返回id
public void addUser(User user) {userMapper.insert(user);Long userId = user.getId(); // 插入后,userId将包含自动生成的ID}
2024-04-25 11:46:45
606
原创 【java异常解决】attempted to return null from a method with a primitive return type (int).
我的原因是在mapper层把@Update()注解写成了@Select()我看网上有其他解释,大家按照需求选择。
2024-04-22 17:34:32
931
1
java开发规范华山,泰山,嵩山,黄山;google java 开发规范;Effective Java(中文版
2024-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人