ZZS圣诞快乐!
圣诞快乐ZZS祝全世界最可爱的张子珊圣诞快乐!
SpringBoot
基础介绍Spring家族有一套完全,之前学习的Spring5(Spring Framework),SpringMVC,都是Spring家族的组件,用于解决某一问题的,可以这么说
Spring家族还有很多的组件,在以前,整合起来会非常的麻烦,要写很多的配置文件,有了SpringBoot就会方便去整合,有了它,可以快速去构建出生产级别的Spring应用
背景微服务
微服务是一种架构风格
一个应用拆分成一组小型服务
每个服务运行在自己的进程里,可独立部署和升级
服务之间使用轻量级HTTP进行交互
服务围绕业务功能进行拆分
可以由全自动部署机制独立部署
去中心化,服务自治。服务可以使用不同的语言,不同的存储技术
分布式分布式-有了微服务的架构,就必然会有分布式的概念
分布式的难点:
远程调用
服务发现
负载均衡
服务容错
配置管理
服务监控
链路追踪
日志管理
任务调度
…
分布式难点的解决:
SpringBoot+SpringCloud
云原生应用写出来就会有上云的问题,上云的过程中又会出现很多问题
难点:
服务自愈
弹性伸缩
服务隔离
自动化部署
灰度发布
流量自理
…
解决 ...
Redis中常用的命令
今天整理了一下一些基础且高频的redis命令
redis中的通用命令
keys * 查看符合模版的所有的key
del 删除一个指定的key
exists 判断key是否存在
expire 给一个key设置有效期,有效期到期时,这个key就会被删除掉
ttl 查看一个key的剩余有效期
1.string类型
set 添加或者修改已经存在的一个String类型的键值对
get 根据key获取String类型的value
mset 批量添加多个String类型的键值对
mget 批量获取多个String类型的value
incr 让一个整型的key自增1
decr 让一个整型的key自减1
incrby 让一个整型的key自增并指定要增加的大小
decrby 让一个整型的key自减并指定要减少的大小
setnx 添加一个String类型的键值对,前提是这个key不存在,否则不执行
setex 添加一个String类型的键值对,并且指定有效期 (set + expire组合)
2.hash类型
hset 添加或者修改一个hash类型的值.hset key field value
hget ...
Hexo搭建个人博客系统
手把手教你搭建个人博客在搭建之前先带大家了解一下几款常见的个人博客搭建框架1.Hexo框架Hexo框架是一个快速、简洁和高效的博客框架。全文采用非常火爆的Markdown语法解析,只需要在几秒内就可以生成静态网页。
2.wordpress框架WordPress使用的是PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。有着许多第三方开发的免费模板,安装方式简单易用。
3.Typecho框架Typecho基于PHP5开发,支持多种数据库,是一款内核强健﹑扩展方便﹑体验友好﹑运行流畅的轻量级开源博客程序。
我使用的是Hexo框架搭建的静态博客,至于为什么使用Hexo多搭建,主要是他不需要额外购买服务器部署,搭建非常简单。目前我的博客地址为:jsckot.top ,搭建初期有很多不足的地方,目前还正在完善和更新中。
Hexo搭建步骤
本人使用的是Windows系统,所以本文主要是针对windows搭建博客系统。
1.安装node.js由于Hexo是基于node.js的框架,所以需要用到node.js的里面的工具。
直接去node.js官网下载,然后 ...
Redis中的5种基础数据结构
Redis 中的5种基础数据结构(重点)5种基础数据类型分别是:string(字符串)、hash(字典)、list(列表)、set(集合)、zset(有序集合)
1. string(字符串) 类型字符串是Redis中最简单的数据结构,他的内部就是一个字符数组(名字不能重复哦),如图所示。
每个string类型的key作为这个数组中的一个名称,每一个唯一的key都对应一个value数据。不同类型的数据结构的差异就在于key对应的value的结构不一样
字符串结构的Redis使用是非常广泛的,比方说我要存一个用户的信息到Redis中,就可以将用户信息(JSON类型的)序列化成字符串,然后将这个字符串作为value放到Redis中作为缓存。在需要获取这个信息时,将之前存的字符串反序列化成JSON类型返回即可。
Redis中value为字符串类型的结构,这个字符串类型的结构其实是一个动态的字符串,是可以进行修改的,内部实现类似于Java中的ArrayList,采用的是预分配冗余空间的方式来减少内存的频繁分配,如下图所示,预分配的实际空间capacity 的长度一般要大于实际占用的 ...
RabbitMQ
RabbitMQ一 MQ介绍1.什么是MQMQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常 见的上下游「逻辑解耦 + 物理解耦」的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。
2.MQ的作用2.1 流量消峰举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分 散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。
2.2 应用解耦以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作异常。当转变成基于消息队列的 ...