0%

消息队列

MQ 的相关概念

什么是MQ

MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常 见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不 用依赖其他服务。

为什么要用MQ

  • 流量消峰

举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。

阅读全文 »

第1章 Git概述

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

Git易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion(svn)、CVS、Perforce和ClearCase等版本控制工具。

阅读全文 »

704.二分查找 easy

简单,注意处理二分的边界

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
int search(vector<int>& nums, int target) {
int i = 0;
int j = nums.size() - 1;
int mid = (i + j) / 2;
while(nums[mid] != target){
if (nums[mid] > target){
j = mid - 1;
}else{
i = mid + 1;
}
if (i > j) return -1;
mid = (i + j) / 2;
}
return mid;
}
};
阅读全文 »

若依搭建

若依版本

官方

若依官方针对不同开发需求提供了多个版本的框架,每个版本都有其独特的特点和适用场景:

  • 前后端混合版本:RuoYi结合了SpringBoot和Bootstrap的前端开发框架,适合快速构建传统的Web应用程序,其中前端和后端代码在同一项目中协同工作。
  • 前后端分离版本:RuoYi-Vue利用SpringBoot作为后端开发框架,与Vue.js结合,实现了前后端分离的开发模式。这种架构有助于提高开发效率,前后端可以独立开发和部署,更适合现代化的Web应用开发。
  • 微服务版本:RuoYi-Cloud基于Spring Cloud & Alibaba微服务架构,为构建大型分布式系统提供了完整的解决方案。它支持服务发现、配置管理、负载均衡等微服务特性,适合需要高可扩展性和高可用性的企业级应用。
  • 移动端版本:RuoYi-App采用Uniapp进行开发,结合了Vue.js的优势,可以实现跨平台的移动端应用开发。一次编写,多端运行的能力使得它成为开发iOS和Android应用的理想选择。
    阅读全文 »

代码生成器

源码分析

代码生成器是提高开发效率的重要工具,它主要分为两个部分:

第一部分涉及将业务表结构导入到系统中,在这里,开发者可以预览、编辑、删除和同步业务表结构,实现对业务表的全面管理。

第二部分是在选择了特定的表之后,点击生成按钮,系统将根据表结构生成相应的前后端代码,并提供下载。

阅读全文 »

Nginx快速入门

Nginx安装

根据前文的部署方案,需要在server02部署Nginx。Nginx官网有详细的安装步骤,具体内容可参考官方文档

  1. 配置Nginx yum存储库

    创建/etc/yum.repos.d/nginx.repo文件

    1
    vim /etc/yum.repos.d/nginx.repo

    增加如下内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true

    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    阅读全文 »

尚硅谷尚庭公寓-03

ThreadLocal

介绍

ThreadLocal是JDK提供的一个线程内部的数据存储工具类,它提供了一些方法,用于在当前线程中存储数据,并且每个线程都可以独立地访问自己的数据。

阅读全文 »

课程:黑马设计模式精讲

1 设计模式概述

1.1 软件设计模式的产生背景

“设计模式”最初并不是出现在软件设计中,而是被用于建筑领域的设计中。

1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。

1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面向对象软件的基础》一书,在此书中收录了 23 个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。这 4 位作者在软件开发领域里也以他们的“四人组”(Gang of Four,GoF)著称。

阅读全文 »

尚硅谷尚庭公寓-02

MinIo实现图片上传功能

  • 配置Minio Client

    • 引入Minio Maven依赖

      common模块pom.xml文件增加如下内容:

      1
      2
      3
      4
      <dependency>
      <groupId>io.minio</groupId>
      <artifactId>minio</artifactId>
      </dependency>
    • 配置Minio相关参数

      application.yml中配置Minio的endpointaccessKeysecretKeybucketName等参数

      1
      2
      3
      4
      5
      minio:
      endpoint: http://<hostname>:<port>
      access-key: <access-key>
      secret-key: <secret-key>
      bucket-name: <bucket-name>

      注意:上述<hostname><port>等信息需根据实际情况进行修改。

    • common模块中创建com.atguigu.lease.common.minio.MinioProperties,内容如下

      1
      2
      3
      4
      5
      6
      7
      8
      @ConfigurationProperties(prefix = "minio")
      @Data
      public class MinioProperties {
      private String endpoint;
      private String accessKey;
      private String secretKey;
      private String bucketName;
      }
    • common模块中创建com.atguigu.lease.common.minio.MinioConfiguration,内容如下

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      @Configuration
      @EnableConfigurationProperties(MinioProperties.class)
      public class MinioConfiguration {

      @Autowired
      private MinioProperties properties;

      @Bean
      public MinioClient minioClient() {
      return MinioClient.builder().endpoint(properties.getEndpoint()).credentials(properties.getAccessKey(), properties.getSecretKey()).build();
      }
      }
      阅读全文 »