`
文章列表
    【架构设计】多级缓存:应用案例与问题解决策略   多级缓存系统的工作原理及其在提升应用性能方面的关键作用。通过对比本地缓存与分布式缓存的特点   |  原创作者/编辑:凯哥Java                                      |  分类:架构设计系列教程   多级缓存系统:提升性能的关键策略 多级缓存系统作为性能优化的重要组成部分,通过在不同层级存储数据,有效提升了应用程序的响应速度。这种策略主要包括本地缓存和分布式缓存两大组成部分。 本文原创:凯哥就Java(kaigejava)   工作机制
  Nginx使用篇:实现负载均衡、限流与动静分离  |  原创作者/编辑:凯哥Java                                      |  分类:Nginx学习系列教程   nginx的logo Nginx 作为一款高性能的 HTTP 服务器及反向代理解决方案,在 ...
优化批处理流程:自定义BatchProcessorUtils的设计与应用 |  原创作者/编辑:凯哥Java                                      |  分类:个人小工具类   在我们开发过程中,处理大量的数据集是一项常见的任务。特别是在数 ...
怎么在Windows操作系统部署阿里开源版通义千问(Qwen2)  |  原创作者/编辑:凯哥Java                            |  分类:人工智能学习系列教程 GitHub上qwen2截图 随着人工智能技术的不断进步,阿里巴巴通义千问团队近期发布了Qwen2系列开源模型,这一系列模型在多个领域展现出卓越的性能,特别是在自然语言理解、知识、代码、数学及多语言等能力上均显著超越当前领先的模型。本文将详细介绍如何在Windows操作系统上部署阿里开源版通义千问(Qwen2)模型,快速上手并体验这一强大的AI工具。  
本篇,咱们来实现优惠券秒杀下单功能。通过本篇学习,我们将会有如下收获: 1:优惠券领券业务逻辑; 2:分析在高并发情况下,出现超卖问题产生的原因; 3:解决超卖问题两种方案:版本号法及CAS法 4:乐观锁弊端改进方 ...
在上一篇中Redis实战之session共享,我们知道了通过Redis实现session共享了,那么token怎么续命呢?怎么刷新用户呢?本来咱们就通过拦截器来实现这两个功能。 登录拦截器优化: 先来看看现在拦截器情况: 拦截流程: 当拦截器拦截需要拦截到的url时候,才会在拦截器中更新用户token的过期时间。那如果,访问了不被拦截的路径,就不会给token续命的。这样就会导致用户token过期,而重新登录的。这样是不对的。 拦截了哪些路径?在config/MvcConfig中 当访问以上这些路径的是,就不会自动更新用户的token过期时间了。 优化:我们可以在现有拦截 ...
当线上集群时候,会出现session共享问题。 当线上集群时候,会出现session共享问题。 虽然Tomcat提供了session copy的功能,但是缺点比较明显: 1:当Tomcat多的时候,session需要大量同步到多台集群上,占用内网宽带 2:同一个用户session,需要在多个Tomcat中都存在,浪费内存空间。   如果要替换掉Tomcat的session共享,替代方案应该满足: 1:数据共享 2:内存存储 3:key\value结构 基于Redis实现共享session登录 本文由凯哥Java(gz#h:kaigejava),个人blog:www#k ...
分库分表之后,ID主键如何处理? 当业务量大的时候,数据库中数据量过大,就要进行分库分表了,那么分库分表之后,必然将面临一个问题,那就是ID怎么生成?因为要分成多个表之后,如果还是使用每个表的自增长ID,意味着每个表都是从1开始累加的,这样肯定是不对的。需要一个全局唯一的ID来支持。所以这也是你实际生产环境中必须考虑的一个问题。全局ID生成器,一般需要满足下列几个特性: 唯一性、高可用、递增性、安全性、高可用性   常用的主键ID生成策略有以下几种: 数据库自增ID 原理: 如果使用这种方式,那么这就意味着,你的系统里每次得到一个ID,都需要往一个库中的一个表中插入一条没有什 ...
Redis快速入门,分两个客户端:Jedis和SpringDataRedis 本文有凯哥Java(kaigejava).个博:www.kaigejava.com 发布于iteye 使用Jdedis 1、引入依赖 <!--jedis--> <dependency>     <groupId>redis.clients</groupId>     <artifactId>jedis</artifactId>     <version>3.7.0</version> </dep ...
发布优惠券的时候,每个店铺都可以发布优惠券,当用户抢购的时候,优惠券表中的id如果使用数据库的自增长ID会存在以下问题: 1:id的规律太明显,容易被刷 2:当数据量很大的时候,会受到单表数据的限制 缺点场景分析: id规律场景:如果我们的id具有太明显的规则,用户或者说商业对手很容易猜测出来我们的一些敏感信息,比如商城在一天时间内,卖出了多少单,这明显不合适。 单表限制:随着我们商城规模越来越大,mysql的单表的容量不宜超过500W,数据量过大之后,我们要进行拆库拆表,但拆分表了之后,他们从逻辑上讲他们是同一张表,所以他们的id是不能一样的, 于是乎我们需要保证id的唯一性。 ...
1.1.安装Redis依赖 Redis是基于C语言编写的,因此首先需要安装Redis所需要的gcc依赖: yum install -y gcc tcl 1.2.上传安装包并解压 ​
通过前面的学习,我们已经掌握了docker-compose容器编排及实战了。高级篇也算快完了。有没有相关,我们前面学习的时候,都是通过命令行来操作docker的,难道docker就没有图形化工具吗?答案是肯定有的。咱们本篇就来讲讲docker图形化工具及使用图形化工具安装Nginx及docker系列教程总结。 Portainer是什么? Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 Portainer的安装 官网: https://www.portainer.io/ https://docs.portaine ...
通过前面两篇的学习,我们对docker网络及四大网络类型都了解了。本文,咱们就来学习docker的自定义网络。我们为什么需要自定义网络呢?是为了让各个主机分门别类,井井有条。方便关联,使得网络之间可以通过服务名进行通信。为什么在容器中,我们要通过服务名进行通信呢?那是因为,docker容器内部的IP是有可能发生变化的。我们使用自定义网络,就是解决容器IP变动时候可以通过服务名直接网络通信而不受到影响。 我们先来看看没有使用自定义网络前: 在上一篇文章中,我们案例使用的tomcat81和tomcat82.我们启动这两个容器。使用命令: docker run -d -p 8081:8080 ...
通过前面两篇的学习,我们对docker网络及四大网络类型都了解了。本文,咱们就来学习docker的自定义网络。我们为什么需要自定义网络呢?是为了让各个主机分门别类,井井有条。方便关联,使得网络之间可以通过服务名进行通信。为什么在容器中,我们要通过服务名进行通信呢?那是因为,docker容器内部的IP是有可能发生变化的。我们使用自定义网络,就是解决容器IP变动时候可以通过服务名直接网络通信而不受到影响。 我们先来看看没有使用自定义网络前: 在上一篇文章中,我们案例使用的tomcat81和tomcat82.我们启动这两个容器。使用命令: docker run -d -p 8081:8080 ...
通过上一篇学习,我们对docker网络有了初步的了解。本篇,咱们就来实战docker网络。 docker网络实战 实战docker网络,我们将从以下几个案例来讲解 1:birdge是什么? 2:host 3:none 4:container 实战网络类型如下: 在docker中,网络的配置是以json格式存在的,下面我们就来看看每种类型网络配置信息 我们先来看看bridge类型的网络 使用命令:docker network inspect bridge 查看host类型的网络 使用到命令:docker network inspect host none类型 ...
Global site tag (gtag.js) - Google Analytics