Twikoo Vercel 部署
官方文档:twikoo 部署视频:https://www.bilibili.com/video/av205905942 一、申请 MongoDB 账号注册地址:https://www.mongodb.com/zh-cn/cloud/atlas/register 二、创建 MongoDB 账号数据库 创建免费 MongoDB 数据库,区域推荐选择 AWS / N. Virginia (us-east-1) 在 Clusters 页面点击 CONNECT 按步骤设置允许所有 IP 地址的连接 设置数据库账号密码,并记录数据库连接字符串 三、Vercel 部署1、申请 Vercel 账号 地址:https://vercel.com/signup (注意:使用GitHub注册,不要使用qq邮箱绑定的账号,不然会注册失败。在注册之前可以去改一下自己绑定的邮箱,123或者谷歌(建议)邮箱) 2、官方文档点击一键部署地址:云函数部署 3、添加环境变量 进入 Settings - Environment Variables,添加环境变量 ...
Springboot 简化if else 和 Switch
在写业务代码的时候发现需要大量使用If,同时里面还写满了业务逻辑代码。为了使代码更加简洁一些,使用设计模式把原有If或者Switch简化。 本篇博客参考了(对二者结合整理): Java优化:多个if else改用设计模式 SpringBoot如何干掉if else? 一、策略模式需求:虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个概念是根据订单的不同类型做出不同的处理。 AOrderTypeHandler 12345678910111213141516171819package com.oy.test.handler;import com.oy.test.bean.OrderDTO;/** * 订单类型处理定义 * 使用抽象类,那么子类就只有一个继承了 */public abstract class AOrderTypeHandler { /** * 一个订单类型做一件事 * * @param dto 订单实体 * @return 为了简单,返回字符串 */ abstract public ...
阿里ESC(轻量云) 通过内网访问OSS资源
业务场景:公司开发小程序,使用了OSS资源来存储一些资源,但是考虑到访问量大,每天的外网流出流量太大了,领导让我处理,通过nginx 转到内网,内网访问不需要收费的,简单记录一下操作步骤。 前提 准备一台阿里云服务,自己手上也有一台阿里云学生机(小水管) 阿里OSS 一个域名(备案) 轻量应用服务器通过OSS内网地址访问OSS资源 官方文档 一、基本配置关于oss的使用收费需要说一下: 对象存储OSS服务的基础计费项包括:存储容量,流量,请求次数。此外,OSS还提供存储数据处理服务(如图片处理服务等),会根据您的使用情况单独计量计费,不使用不计费。 1、创建bucket 注意: 创建的bucket区域必须和阿里云服务器的区域相同,只有相同的区域内网才能打通 OSS ESC 2、配置一个二级域名 主机记录可以随便起,我因为好辨认起了oss。这个域名只是为了方便外网访问时nginx转发时使用的,所以不需要将域名绑定oss,所以此时这个域名啥用没用,绑定了nignx转发才能用域名访问文件 二、Nginx 转发配置 打开bucket 在 概览中可以看到,第一个是外网 ...
公网 IP 服务器搭建 FRP 内网穿透服务
本篇博客为转载文章:https://blog.csdn.net/qq12547345/article/details/119807255 一、基础条件 ★ 具有公网 IP 服务器一个(必要,没有的话可以不用往下看了) 域名一个,用于 http 服务转发时配置子域名(不需要转发 HTTP 的话可以不用) DDNS 动态域名服务(公网 IP 会改变的情况下需要,如果是阿里云之类的服务器则不需要) 二、域名解析 这里有点绕,举例说一下: 假设我的域名是 abc.com 首先需要一个 A 类型的记录,记录公网 IP,由于我有个 NAS 需要使用,所以主机记录为 nas 还需要一个 CNAME 类型的记录,主机记录为 *.frp,记录值为 nas.abc.com,即与该域名保持一致 IP 三、下载安装 FRPGithub 地址是 https://github.com/fatedier/frp不区分客户端和服务端,都在同一个包中,但是需要区分系统版本和架构信息,下载完成后解压缩。 四、 服务端(具有公网 IP 服务器)修改 frps.ini 文件 1234[common]bi ...
谷粒商城-高级篇(认证服务)
一、 环境搭建 创建认证模块 pom.xml 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> < ...
谷粒商城-高级篇(SSO-单点登录)
Single Sign On 一处登陆、处处可用 参考:https://gitee.com/xuxueli0323/xxl-sso.git 一、项目搭建 结构: gulimall-test-sso-client 登录服务器 8080 ssoserver.com gulimall-test-sso-client 项目 1 8081 client1.com 123127.0.0.1 ssoserver.com127.0.0.1 client1.com127.0.0.1 client2.com 核心: 三个系统即使域名不一样,想办法给三个系统同步同一个用户的票据 1、 中央认责服务器:ssoserver.com 2、 其他系统‘想要登录去 ssoserver.com 登录,登录成功跳转回来 3、只要一个登录,其他都不用登录 4、全系统一个ss0-sessionid; 所有系统可能域名都不相同 二、项目流程图 三、项目代码1.gulimall-test-sso-client pom 123456789101112131415161718<depend ...
RabbitMQ 集群
一、 clustering1、使用集群的原因 如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障情况。单台 RabbitMQ 服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞吐量呢?购买昂贵的服务器来增强单机 RabbitMQ 务的性能显得捉襟见肘,搭建一个 RabbitMQ 集群才是解决实际问题的关键 。 2、搭建步骤 测试之前需要准备三台机器,保证都装好了 rabbitmq 192.168.64.132 192.168.64.133 192.168.64.134 修改 3 台机器的主机名称 1vim /etc/hostname 配置各个节点的 hosts 文件,让各个节点都能互相识别对方 1vim /etc/hosts 123192.168.64.132 node1192.168.64.133 node2192.168.64.134 node3 以确保各个节点的 cookie 文件使用的是同一个值 在 node1 上执行远程操作命令 123scp /var/lib/ra ...
谷粒商城-高级篇(检索服务)
一、添加模板页面12345<!-- 模板引擎 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> 将资料中的前端页面放到 search 服务模块下的 resource/templates 下; 二、配置请求跳转1、配置 Nginx 转发配置 Windows hosts 文件: 1192.168.56.10 search.gulimall.com 找到 Nginx 的配置文件,编辑 gulimall.conf,将所有 *.gulimall.com 的请求都经由 Nginx 转发给网关; 12345server { listen 80; server_name gulimall.com *.gulimall.com; ... } 然后重启 Ngi ...
RabbitMQ
一、消息队列1、MQ 的相关概念 什么是 MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。 为什么要用 MQ 流量消峰 举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。 应用解耦 以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统。任何一个子系统出了故障,都会造成下单操作异常。当转变成为基于消息队列的方 ...
谷粒商城-高级篇(分布式锁与缓存)
一、缓存1、本地缓存 1.1 使用 hashmap 本地缓存123456789101112//测试本地缓存,通过hashmapprivate Map<String,Object> cache=new HashMap<>();public Map<String, List<Catalog2Vo>> getCategoryMap() { Map<String, List<Catalog2Vo>> catalogMap = (Map<String, List<Catalog2Vo>>) cache.get("catalogMap"); //如果没有缓存,则从数据库中查询并放入缓存中 if (catalogMap == null) { catalogMap = getCategoriesDb(); cache.put("catalogMap",catalogMap); } ...