自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 项目中利用Redis缓存和自增函数的场景

换句话说,在 increment() 方法执行期间,Redis 会对该键加锁,阻止其他客户端进行任何并发修改。如果 cacheSeconds 参数大于 0,并且 result 等于 1(表示这是第一次递增),则将 key 在 Redis 缓存中的过期时间设置为指定的秒数。这样一来,即使有多个客户端同时对同一个 Redis 键进行递增操作,Redis 也会确保每个操作都是完整和正确的,不会出现数据竞争的问题。最后,该方法返回 result 值,该值表示 Redis 缓存中计数器的新值。

2024-07-10 15:29:08 294

原创 Windows11使用docker搭建nacos

接下来是选择mysql数据库作为nacos的配置数据库,在mysql里新建这些表,具体方法自己搜一下,这里不做赘述。需要先启动nacos镜像创建容器,才能将容器里面的相关文件复制到挂载目录。-p 8848:8848 :容器相关端口号,“:”前为宿主机访问启动容器端口号,“:”后为容器端口号。接下来重新启动容器,这里有个坑,新版nacos启动要多开两个端口,不然会报数据库连接出错。nacos/nacos-server :启动容器的nacos镜像。这是因为2.X之后加了一个grpc的远程通信端口,所以在你的。

2024-05-11 17:40:00 284 1

原创 Windows11使用docker搭建redis集群

虚拟网段的设置不用管,这只是docker内部容器之间通信的IP地址,从宿主机访问各个redis还是通过 127.0.0.1:端口号 访问。接下来使用Another Redis Desktop Manager客户端测试redis集群的连接。在存放docker-compose.yaml文件的目录下执行以下命令启动容器。以下是docker-compose.yaml文件的配置。首先通过docker拉取最新版的redis镜像。每个目录下的redis.conf都要修改。redis集群就搭建好了。

2024-05-11 16:19:11 237 1

原创 Docker入门踩坑记录,安装Oracle,redis集群,nacos

这两天学习了从零开始学习了Docker的使用以及使用docker安装了Oracle,redis,nacos。接下来需要启动Hyper-V,中间发现没有Hyper-V,需要手动安装,详情参考这篇。最后是通过docker hub里找了一个镜像,看备注用的对象都是一样的。感受到了docker的方便,但学习(踩坑)的过程是坎坷的。成功启动docker之后。主机填本机IP,剩下的根据自己的填写,已经连接上啦。首先,安装Oracle数据库,可以参考这篇。接下来的安装配置,切换源可以参考这篇。

2024-05-11 15:26:43 259 1

原创 给我的外卖加点功能

通过AOP统一记录日志以及异常处理可以减少重复代码的编写,可以快速找到发生异常的接口,还有一种方法是用@RestControllerAdvice(@ResponseBody+@ControllerAdvice)和@ExceptionHandler进行全局异常捕获。给controller下面所有的类里的方法都调用AOP记录日志(方法执行前控制台输出请求的url,方法名,id,方法执行后输出返回值)以及处理异常,省去了每个方法调用记录日志以及try...catch的麻烦。里面记录了枚举值,可以细化异常的处理。

2024-04-28 21:44:11 100

原创 线程交替打印

分享一下,自己实现的两个线程交替打印的代码,核心思想是使用synchronized对象锁+wait(),notifyAll()方法。调用wait()方法会释放锁,调用notifyAll()不会释放当前线程持有的锁。创建了两个线程对象,一个锁对象,一个实现了Runnable接口的类。

2024-04-26 19:43:21 84

原创 消息队列的应用RabbitMQ

用户下单——>数据库生成订单号——>订单号等支付信息提交给前端——>用户支付,修改订单的支付状态——>修改订单状态 ps:订单的支付状态包括未支付、已支付、退款;我们可以把消息队列看作是一个存放消息的容器,当我们需要使用消息的时候,直接从容器中取出消息供自己使用即可。用户下单——>数据库生成订单号——>订单号等支付信息提交给前端——>将订单号给RabbitMQ延时队列——>检查订单支付状态是否更改、检查订单是否超时——>修改订单状态或删除订单。指同一个业务,执行一次或多次对业务状态的影响是一致的。

2024-04-18 22:07:07 939 2

原创 JAVA学习笔记——微服务篇DAY1

微服务架构(通常简称为微服务)是指开发应用所用的一种架构形式。通过微服务,可将大型应用分解成多个独立的组件,其中每个组件都有各自的责任领域。在处理一个用户请求时,基于微服务的应用可能会调用许多内部微服务来共同生成其响应。容器是微服务架构的绝佳示例,因为它们可让您专注于开发服务,而无需担心依赖项。现代云原生应用通常使用容器构建为微服务。微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。完成了MySQL数据库的创建和链接。这里出现了一个小坑,数据库安装完后,新建数据库时建错了。

2024-04-15 21:33:43 177 1

空空如也

空空如也

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

TA关注的人

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