MongoDB
一、MongoDB 简介 MongoDB 是由 C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。 二、安装 Mongodb12345678#拉取镜像docker pull mongo:latest#创建和启动容器docker run -d --restart=always -p 27017:27017 --name mymongo -v /data/db:/data/db -d mongo#进入容器docker exec -it mymongo /bin/bash 1234567#使用MongoDB客户端进行操作mongo> show dbs #查询所有的数据库admin 0.000GBconfig 0.000GBlocal 0.000GB 三、Mon ...
定制女朋友微信公众号专属消息推送
最近在很多地方看到有做微信推送的帖子,可以给你的好朋友,女朋友,或者是兄弟,做一个专属的微信推送,设定一个时间,就可以在早上!或者是中午推送给他,一个关心的微信推送,例如是这样: 很简单,下面就来进入教程: 登录 wx 公众平台首先登录微信公众平台:微信公众平台 (qq.com) 登录以后,就可以看见你的 appID 和 appsecret,记住这两个,很重要 然后下滑,找到测试号二维码,使用你需要接收的微信来扫码,然后获取到微信号,将微信号复制,后面需要 继续下滑找到模板消息接口,点击新增测试模板 然后输入模板标题为想要的,例如:早上好!云思!,参考第一张图片效果图 模板内容填入: 参数文本,根据自己需求,修改对应内容 123456789101112{{date.DATA}}地区:{{region.DATA}}天气:{{weather.DATA}}气温:{{temp.DATA}}风向:{{wind_ ...
Lanproxy映射本地开发环境
之前遇到联调设备,希望现网设备上报数据推送到本地开发环境测试推送接口的场景都是使用的 uTools 里面的内外网穿透。但是现在 uTools 已经关闭了这个内外网穿透的插件,一直也在找比较好的替换。用过 frp、Ngrok,要么要收费,要么配置麻烦。今天来说说 Lanproxy,有 web 配置界面,非常好理解,客户端也很丰富,使用也很简单,关键是用了下,感觉还很稳定。 搭建 Frp 博客:https://oy6090.top/posts/2dd14627/ 一、环境搭建服务端、客户端下载地址:Lanproxy 下载 我是 java 开发的,所以本机是有 java 环境的,下载的客户端直接就可以下载这个 proxy-java-client,因为用的是 windows,所以也下载一个 windows 的客户端。 二、服务端准备 需要一个外网的服务器(我有个阿里云的),配置不要求多高 有固定外网 IP 或者域名(域名的话需要认证,我这里测试的是 ip) 三、服务端安装 第一步:将下载的 proxy-server 这个包 copy 到服务器上 第二步:解压,zip 包的解压命令 ...
谷粒商城-Spring alibaba Sentinel
sentinel 的基础知识参考官方文档和本人 SpringCloud 学习项目 一、概念 熔断: 使用 Sentinel 直接快速返回失败的请求,而不是进行远程调用。例如: Fegin 有一个默认的过期时间 3s(不知道准不准确),如果某个服务宕机或者总是服务超时,每次都要等待 3s 才返回,资源得不到释放,降低了吞吐量 降级: 例如此时正处于秒杀流量高峰期,手工的停掉非核心业务【例如注册】,直接返回错误提示页面【降级页面】 熔断与降级比较 相同点 为了保证集群大部分服务的可用性和可靠性,防止崩溃,牺牲小我 用户最终都是体验某个功能不可用 不同点 熔断是调用放故障,触发的系统主动规则 降级是基于全局考虑,停止一些正常服务,释放资源 限流 对打入服务器的请求流量进行控制,使服务能够承担不超过自己的能力的流量压力,超过了流量的峰值的直接打回重试模式 Sentinel 与 Hystrix 对比 线程池隔离的弊端:每个请求都会由一个线程池来维护,导致很多线程池,线程池切换耗费大量资源 Sentinel 使用的信号量 semaphore 【JUC 的, 不是分布 ...
谷粒商城-Spring Sleuth服务链路追踪
简述: 一个请求跨越了多少个微服务,各服务花费了多少时间,发现某个服务特别慢,直接将其降级使用 Spring Sleuth + Zipkin 搭配使用 Spring Sleuth: 追踪操作 Zipkin: 可视化 就是每到达一个节点都会记录时间,然后计算差值就可以得到传输时间,某个节点处理请求的时间 一、概念官方文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-sleuth/2.1.3.RELEASE/single/spring-cloud-sleuth.html 12345678910111213141516171819201、为什么用微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。主要体现在,一个请求可能需要调用很多个服务,而内部服务的调用复杂性,决定了问题难以定位。所以微服务 ...
谷粒商城-高级篇(秒杀功能)
一、秒杀(高并发)系统关注的问题 秒杀业务: 秒杀具有瞬间高并发的特点,针对这一特点,必须要做限流 + 异步 + 缓存(页面静态化)+ 独立部署 限流方式: 1. 前端限流,一些高并发的网站直接在前端页面开始限流,例如:小米的验证码设计 nginx,限流,直接负载部分请求到错误的静态页面:令牌算法漏斗算法 网关限流,限流的过滤器 代码中使用分布式信号量 rabbitmq 限流(能者多劳: chanel.basicOos(1)),保证发挥所有服务器的性能。 秒杀流程: 1、先新增秒杀场次到 DB【后台系统新增】 2、再关联商品【后台系统关联】 3、定时任务将最近三天的场次+关联商品上传到 redis 中【定时 上架 3 天内的秒杀场次+商品】 二、创建秒杀服务 添加 gateway 路由转发 123456- id: coupon_route uri: lb://gulimall-coupon predicates: - Path=/api/coupon/** filters: - RewritePath=/api/(?<segm ...
b站大学学习路线
以下文章来源于程序员 cxuan ,作者 cxuan 众所周知,B 站是一所大学今天在 b 站看视频的时候,看到了一句话众所周知,b 站是用来搞学习的,对于我们学习编程的童鞋来说,b 站有着非常多的学习资源,但是有一些质量并不是很好,看了之后不容易理解,这也是写这一篇文章的原因,为大家分 享一些质量超高的计算机基础的学习视频,往下看就完了。 一、计算机网络1. 计算机网络微课堂 https://www.bilibili.com/video/BV1c4411d7jb?p=1 学习计算机网络,我首先推荐的 UP 主湖科大教书匠,他讲的计算机网络十分通俗易懂,重点的地方讲的十分细致,并且还有一些实验,更好的是有考研 408 的难题的讲解,也是非常适合考研党,除了课程内容外还有很多习题讲解视频,特别赞的一点是每天动态里都会更新一道考研题,播放量也非常的多。 2. 2019 王道考研 https://www.bilibili.com/video/BV19E411D78Q?p=1 既然说到了考研,那我就不得不提一下王道考研了,恭喜你发现了宝藏。王道考研的计算机网络视频,播放量非常多,而 ...
谷粒商城-高级篇(订单服务)
一、RabbitMQ见我自己总结的两篇博客 RabbitMQ 基础 SpringBoot 与消息 二、安装 RabbitMQ1234docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management#修改为自动重启:docker update rabbitmq --restart=always 4369,25672(Erlang 发现&集群端口) 5672,5671(AMQP 端口) 15672(web 管理后台端口) 61613,61614(STOMP 协议端口) 1883,8883(MQTT 协议端口) RabbitMQ 管理 https://www.rabbitmq.com/networking.html 启动 http://192.168.56.10:15672/ 用户名和密码:guest 配置文件: 三、整合 SpringBoot 1、在 ...
谷粒商城-高级篇(分布式事务)
由锁定库存引发的分布式事务问题【事务自治,抛出异常,可能造成不是最终一致】可能出现订单回滚,库存锁定成功 1、远程调用超时异常,订单回滚,但是库存远程锁定成功【库存事务自治】 2、库存锁定成功,但是订单后面的服务发生故障回滚,库存未回滚【库存事务自治】 一、锁定库存 二、事务的基本性质数据库事务的几个特性:(ACID) 原子性(Atomicity):一系列的操作整体不可拆分,要么同时成功,要么同时失败 一致性 (Consistency):数据在事务的前后,业务整体一致。例如:转账。A:1000;B:1000;转 200 事务成功;A:800B: 1200 隔离性或独立性 (Isolation): 事务之间互相隔离。 持久性(Durabilily) :一旦事务成功,数据一定会落盘在数据库。 重点:使用同一个数据库连接 事务的隔离级别:【就是事务 之间 互相隔离的级别,例如事务级别是可重复读,第一个事务进来读到 1,后面在读取该条数据还是 1,但是读取 count()时数据会改变(insert delete 无法隔离)】 READ UNCOMMITTED(读未提交)【导致脏读】 ...
vscode配置 -- 编写C语言
一、前言使用vscode编写单页面的小程序还是很方便的,但是,它不是集成开发环境,编写相应的程序,比如C语言,需要安装对应的插件和扩展,配置起来相对比较麻烦一些,但是用熟练了就非常好用,无论是调试还是编码,vscode都相当强大,毕竟是微软的玩意,下边总结一下:如何使用vscode来编写C语言。 首先下载vscode,地址:https://code.visualstudio.com/ 然后对vscode进行汉化(看个人习惯,我这里汉化了一下),在vscode的左方功能列表中,可以找到 Extensions,点选后输入 “Chinese” 即可搜寻到中文的相关语系,选择中文(繁体)后页面的右方即会出现相关介绍,此时按下 “Install” 就会安装中文语系套件。 安装后系统会自动跳出是否切换成该语系,让你重新启动,按下 ResStart now后就会套用成中文版啰~如下: 不过人生中最怕的就是那个 “But”,如果没有自动跳出右下方的提示该如何切换呢?另外 VSCode 如果更新时,可能也会再次切换为英文版,这时候就需要手动切换语系。 手动切换流程也并不复杂,可使用以下三个 ...