自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

原创 springboot 精华

Spring将事务管理分为了两类:一、编程式事务管理需要手动编写代码进行事务的管理(一般不用)二、声明式事务管理:1、基于TransactionProxyFactoryBean的方式(很少使用)需要为每个事务管理的类配置一个TransactionProxyFactoryBean进行管理。使用时还需要在类中注入该代理类。2、基于AspectJ的方式(常使用)配置好之后,按照方法的...

2023-06-09 11:37:04 883

原创 微服务中的限流降级 Sentinel

一、基础1、架构:二、Sentinel使用1、服务端安装下载压缩包java -jar sentinel-dashboard-1.6.3.jar --server.port=19091访问: <ip>:19091默认账号密码:sentinel/sentinel2、客户端引入依赖<dependency> <groupId>com.alibaba.cloud</groupId> ..

2021-06-05 23:49:50 330 3

原创 微服务中的配置中心 Config 和 消息总线 Bus

一、基础1、架构:(1)Config Server:配置中心,负责去 配置仓库拉取配置(2)Config Client:客户端启动时从 配置中心获取相应配置2、优势集中管理配置 配置分不同环境 动态获取,无需重启服务二、使用1、服务端配置增加相应的依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifa

2021-05-30 21:42:53 230 3

原创 Git 精髓

一、基本概念1、它是一种被Docker程序解释的脚本,由一条条指令组成。二、常用指令1、FROM:定义构建本镜像时基于哪些基础镜像,必须放在Dockerfile其它指令前面,基础镜像可以是本地或者远程仓库,当同个Dockerfile建立多个镜像时,可以用多个FROMFROM <image> FROM <image>:<tag> FROM &...

2020-12-24 14:08:04 364

原创 Nginx 精髓

一、入门1、简介:它是高性能的web和反向代理服务器。二、安装1、普通版本安装先安装辅助工具#安装 makeyum -y install gcc automake autoconf libtool make#安装 g++yum install gcc gcc-c++#安装 pcre,为了重写rewriteyum install -y pcre pcre-devel#...

2020-12-23 22:02:46 268 1

原创 docker & docker-compose精华

一、centos安装docker1、安装(要求centos7以上,64位,内核3.10以上)系统工具(可忽略):sudo yum install -y yum-utils device-mapper-persistent-data lvm2安装:sudo yum install docker启动服务:sudo systemctl start docker启动时可能遇到失败,有可...

2020-12-23 00:16:45 320

原创 rabbitMQ 精髓

一、简介1、消息中间件:利用高效可靠的消息传递机制进行和平台不耦合的数据交流,利用数据通信来进行分布式系统的集成。由JMS发展而来。2、rabbitMQ:采用Erlang语言实现AMQP的消息中间件,用在分布式系统中存储转发消息。整体模型架构如下:producer:生产者,发送消息的那方,消息包含消息体(payload)和标签 Consumer:消费者,接收消息的那方,只得消...

2020-12-19 23:52:07 259 1

原创 zookeeper 精髓

一、初探1、简介 它是一个开源的分布式协调服务,可用它实现分布式协调/通知(注册中心)、集群管理(容错、负载均衡)、分布式锁和分布式队列、负载均衡、数据发布/订阅、命名服务。它最重要的特性就是客户端和服务端之间用长连接建立了联系,所以服务端的数据一变化就能主动通知客户端,这个特性为它能实现的东西打下了基础。笼统的说zookeeper=文件系统 + 通知系统。它在分布式CAP原则...

2020-12-15 21:43:36 278

原创 redis 精髓

一、初探1、简介Redis是一个由ANSI C语言编写,性能优秀、支持网络、可持久化的内存数据库,并提供多种语言的API,线程安全,常用于做缓存和分布式锁,支持事务、持久化、主从复制、发布订阅、LUA脚本、LRU驱动事件、流水线、多种集群方案。 Redis跟memcached的只支持k-v类型不同,redis常用的类型主要是 String、List、Hash、Set、ZSet 这5种,并...

2020-12-13 18:23:10 1247

原创 JVM 精华

一、基础1、泛谈:相比 C++,不用自己处理 内存分配 和 垃圾回收 执行流程是先把 .java 文件 编译成 .class二进制字节码,然后在 JVM里 解释执行 目前默认都是用 HotSpot 虚拟机2、基本模块JDK:包含了 JRE + 开发工具包,可以把 .java 编译成 .class JRE:包含 JVM + 运行时类库(lib下如 rt.jar),没有编译功能 JVM:加载 .class文件进行解释运行3、JMM/java内存模型二、整体结构1、类加..

2020-12-04 23:24:57 215

原创 Mysql 精髓

一、基础1、表的三范式:第一范式:列属性不可再分(例如 用户表中常有姓名和电话,如果直接用了一个字段叫 ‘用户信息’,里面存 姓名加电话,这种就不符合一范式,因为属性里还可以再分;再比如收货地址应该单独分‘省市区’,而不是放在一起;又比如班级和学院应该单独分开而不是放同一个字段;等等这些例子) 第二范式:满足了 一范式,并且表中是联合主键,则其他非主键字段需依赖于联合主键而不能只依赖于主键中的某一个字段,即不能出现部分函数依赖(比如表中 课程&学号 共同确定成绩是 ok的,但表里还有 ‘课

2020-11-22 20:23:46 359 1

原创 分布式架构之ElasticSearch 初探

ElasticSearchhttps://blog.csdn.net/zysgdhf4253/article/details/80961116https://www.cnblogs.com/szwdun/p/10664348.html1、普通版本安装://到官网下载并上传服务器,地址:https://www.elastic.co/downloads/elasticsearc...

2020-04-18 09:27:15 217

原创 记《高级系统架构设计师》考试

一、起因 大概19年1月左右的时间,一次跟同事吃饭偶然听同事讲到考试培训网续费。他是18年第一次考的系统架构师,在某培训机构报了名6000多,最后论文没过。隔年他们照顾老会员,花1000即可续费,套路可以。自己想了想要不也考个证看看,就怂恿同事一起拼单,每人500,续它一年然后共用账号。 想着考这个的初衷呢,除了考个证傍身之外呢,也是想着系统的了解一下架构涉及的东西...

2020-01-16 23:18:54 1037

原创 设计模式

一、面向对象的七大设计原则1、开闭原则:软件实体应该对扩展开放,对修改关闭。我们的目标就是努力写出当需求变更时,可以尽量不修改原有的代码就可实现功能作用:降低风险,因为上线的已有代码是经过用户多次使用和测试的结果,是较稳定的,盲目地去修改原有的代码可能会引入bug。 提高代码复用性,比如我们通过继承去扩展父类方法,有时候我们还可以调用父类原有的方法,然后再增加自定义的部分,这样可...

2020-01-09 07:59:14 134

原创 记一次并发和事务探索过程

一、前情提要1、事务的相关概念和集成过程就不在这里重复,可看本人另一篇https://blog.csdn.net/qq_20475615/article/details/937135192、这次主要是探索并发中数据的问题,场景是电商系统下单减库存,mysql,暂没涉及分布式和集群3、所有测试我们先预设原商品库存为100,且我们通过用户不同来指定休眠更好的看效果,admin为休眠的用户它...

2019-12-14 17:07:06 163

原创 spring security 认证及权限控制源码运行流程跟踪

一、认证流程1、集成过程详情看https://blog.csdn.net/qq_20475615/article/details/1001320052、首先讲默认配置的流程,我们加了spring security的配置之后,对没有特殊处理的接口发起请求,会跳到默认的登录页 ① 当请求发起后,会被UsernamePasswordAuthenticationFilter拦截...

2019-09-28 15:29:58 410

原创 项目常用组件集成

一、表单参数校验1、@Valid引入依赖,因为常用在web项目,所以引入了spring-boot-starter-web的话就不需要再引入 表单入参实体属性添加需要的注解,比如我这里是判空public class Product { @NotNull private Integer id; public Integer getId() { r...

2019-09-26 14:34:38 710

原创 分布式之跨域解决

一、初探1、同源策略:阻止一个域的javascript脚本和另外一个域的内容进行交互。同源(即指在同一个域)就是两个页面具有相同的协议(如都是http),域名(如都是www.cat.com,二级域名也不行)和端口号(如都是8080)2、跨域:一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同http://www.cat.com:8080/user 和http://w...

2019-09-20 18:27:48 1214

转载 nginx 请求转发规则

反向代理适用于很多场合,负载均衡是最普遍的用法。nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理。nginx 反向代理官方文档: NGINX REVERSE PROXY当在一台主机上部署了多个不同的web服务器,并且需要能在80端口同时访问这些web服务器时,可以使用 nginx 的反向代理功能: 用 nginx 在80端口监听所有请求,并依据转发规则(比较常见的...

2019-09-20 16:11:07 1511

原创 springboot 全局异常处理

一、使用@ControllerAdvice 或@RestControllerAdvice 注解结合 @ExceptionHandler,只是针对controller,并且要注意只能捕获抛出的异常,如果在controller已经catch掉且没有再抛出,那么全局异常类则捕获不到引入依赖<dependency> <groupId>org.springframewo...

2019-09-17 22:04:58 653

原创 分布式锁的多种实现

一、思考1、为何要有分布式锁分布式系统中对于共享资源的控制不像单机应用那么方便,多台机器的数据一致性显得尤为重要且难搞,比如一致性要求严格的支付业务或者下单业务,多台机器之前如何保证支付的一致性和下单库存等的一致性是大问题。因而在多台机器之间需要有一个全局且唯一的东西来当锁,拿到锁的才能获取资源,如此来解决并发问题,解决下单库存此类业务出现超卖的情况。2、实现方式锁分乐观锁和悲观锁...

2019-08-27 22:36:04 156

原创 分布式架构之Zookeeper实现分布式锁

一、实现分布式锁1、作用分布式锁可以应用于分布式中选举 leader,即拥有锁的就是leader,也可以用于分布式中并发控制(如支付业务或下单业务等保证一致性),分布式系统中当使用TCC事务模型时,没有数据库资源锁的支撑,需要在业务层进行事务隔离,此时可以用zookeepe实现,获得锁的即可操作资源。常用的另外还有另外两种基于数据库的锁、基于redis的锁,这里且不详述。2、思路...

2019-08-26 21:22:27 1616

原创 分布式架构之redis 常用命令

一、注意事项 最好使用统一的规范来设计Key,比如”object-type:id:attr”,以这一规范设计出的Key可能是”user:99″或”comment:22:reply-to”,增强可读性 不要使用过长的Key。例如使用一个1024字节的key就不是一个好主意,不仅会消耗更多的内存,还会导致查找的效率降低。Redis允许的最大Key长度是512MB(对Value的长度限制...

2019-08-19 23:06:23 417 1

原创 分布式架构之数据库分库分表,Sharding-JDBC实战

一、为什么要分库分表1、高并发:数据库单实例扛不住高并发,需多实例承受2、数据量大:单机磁盘容量有限,数据库数据量大时撑满磁盘3、sql执行速度:单表数据过大,sql执行速度极慢二、有哪些技术支持1、技术sharding-jdbc(sharding-sphere):当当开源的,client层方案,支持分库分表、读写分离、分布式 id 生成、柔性事务(最大努力送达型事务、TC...

2019-08-18 19:46:07 1845

原创 分布式架构之Sharding-JDBC实现数据库读写分离

一、初探ShardingSphere包括了三款产品,两款产品是Sharding-Proxy和Sharding-Sidecar(计划中),而今天要讲的是另一款产品Sharding-JDBC,它是其中的分布式数据库中间件解决方案,基于client层的。它支持分库分表、读写分离、柔性事务、分布式主键、分布式治理能力。架构图如下二、实战开战之际,先要准备好后勤工作,构建好数据库主从复制先,...

2019-08-18 16:16:04 573

原创 分布式架构之数据库主从复制

一、初探1、复制方式基于行复制 基于sql语句复制 混合模式复制(先采用语句,发现无法精确复制时则换成行)2、原理master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看) slave将master的binary log events拷贝到它的中继日...

2019-08-17 13:47:43 597

原创 分布式架构的思考

集中和分布式的比较1、集中式架构成本高:硬件成本,并且有限制 灵活/兼容性弱:硬件平台兼容性差 伸缩/扩展性弱:增加减少麻烦 自主/安全性低:IOE三家垄断 业务恢复慢:故障或发布得停机 一致/可靠性高:单台机器搞起强一致性 运维易:机器少2、分布式架构成本低:廉价PC 灵活/兼容性强:服务器选择简单方便 伸缩/扩展性强:多加几台机的事情 自主/安全性高:国产技术,...

2019-08-16 11:03:03 306

原创 分布式架构之数据一致性

一、理论1、分布式系统中的CAP原理:需满足interconnected和share dataC(Consistence)一致性:客户端读到的结果都是最新的结果,服务器间数据同一时刻是一致的(事务处理中未提交的不考虑),这里跟ACID中的C概念不同,这里的C强调是分布式系统中各节点之间数据的相同性,而ACID中的C强调是数据完整性,即经典的转账总金额保持不变。 A(Availabil...

2019-08-16 11:02:08 328

原创 分布式架构之Netty入门与实战

一、初探1、Reactor模型Reactor是反应堆的意思,Reactor模型,是指通过一个或多个输入同时传递给服务处理器的服务请求的事件驱动处理模式。Reactor模式也叫Dispatcher模式,即I/O多了复用统一监听事件,收到事件后分发(Dispatch给某进程),是编写高性能网络服务器的必备技术之一,关键两个组成 Reactor Reactor在一个单独的线程中运行,负责...

2019-08-16 10:58:52 838

原创 分布式架构之NIO入门与实战

一、初探1、概念:非阻塞的IO多路复用机制,跟传统 I/O差别如下 2、原理Channel(通道):表示为一个已经建立好的支持I/O操作的实体(如文件和网络)的连接,Channel和IO中的Stream(流)是差不多一个等级的。只不过Stream是单向的,譬如:InputStream/OutputStream,而Channel是双向的,既可以用来进行读操作,又可以用来进行...

2019-08-16 10:58:40 225

原创 分布式架构之事务

1、概述根据CAP(一致性、可用性、可靠性)的理论,鱼和熊掌不可兼得,P是必须要的,所以需要在C和A之间做平衡,实际上在互联网领域A也是必须的,因此就不得不在C上做文章。于是有了弱一致或者最终一致,它不要求你在做完一个操作后能立马看到效果,只要在可接受的时间内看到正确的结果即可。解决分布式事务的思路就是避免分布式事务,具体来说就是利用本地事务+异步消息+重试+幂等去保证整个系统数据的最终一致性...

2019-08-16 10:54:47 190

转载 springboot 27个注解

Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringCloud集成。而Spring Boot之所以能够轻松地实现应用的创建及与其他框架快速集成,最核心的原因就在于它极大地简化了项目的配置,最大化地实现了“约定大于配置”的原则。然而基于Spring ...

2019-08-16 10:50:11 75

原创 centos7 常用软件安装

一、常用软件安装及配置1、jdk卸载原有的jdk#有东西则说明原来自带了一个java -version#查询出已经安装的rpm -qa|grep java#移除,remove 后面的值是上面rpm查询出来的,多个值用空格隔开,比如我这里yum -y remove tzdata-java-2019a-1.el7.noarch java-1.8.0-openjdk-h...

2019-08-15 22:05:04 1096

原创 读 《从零开始学架构》

零、学习的过程一、概念1、系统关联:发动机、地盘和车架组合才能成为汽车 规则:发动机产生动力,经过变速器和传动轴到车轮,有规则运作而不是各自为政 能力:发动机、变速器和车轮每单独一个都不能走,组合才能产生行走的能力2、子系统:是不同维度的系统,比如微信有聊天、登录、支付、朋友圈等子系统,朋友圈又分评论、动态、点赞等子系统3、模块:系统的组成部分,系统的逻辑区分,比如登录注...

2019-08-15 22:00:23 294

原创 springboot集成定时任务

一、Quartz实现定时任务1、引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId></dependency>2、appli...

2019-08-15 22:00:11 877

原创 微服务之Jenkins 使用

一、docker版本安装1、先下载镜像并执行 run 操作,下方 -v 是将容器目录映射到主机,如第一个的/var/jenkins_home 映射到主机jenkins-datadocker run \ --rm \ -u root \ -p 8080:8080 \ -v jenkins-data:/var/jenkins_home \ -v /var/run/do...

2019-07-15 20:06:27 554

原创 springboot集成rabbitMQ实战

基本概念请看另一篇:rabbitMQ入门一、前期工作1、引入依赖<!-- rabbitmq --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId&gt...

2019-07-12 22:49:34 496

原创 分布式架构之rabbitMQ使用

一、基于docker安装(Centos下)1、查询一下镜像库docker search rabbitmq:management2、拉取镜像,并查看本地是否存在docker pull rabbitmq:management3、启动rabbitmq,这里开启两个端口映射,5672是rabbitmq默认的客户端连接端口,15672是web管理界面的端口。-d...

2019-07-03 23:38:00 412

原创 读 thinking in java记录

一、对象1、面向对象:所有皆对象,程序是对象的组合,都有自己的存储空间,同类型能接收相同消息,类就是相同属性的事务总称2、利用访问控制避免接触不该接触的,通过接口了解如何使用而不需要知道具体实现3、类的相互嵌套引出了“组织”,也就是类包含类4、继承实现代码复用,达到可扩展5、多态的动态绑定在运行期才知道具体调用(向上转型),抽象类不能实现,抽象方法只能在抽象类中,且子类需实现它...

2019-07-01 20:25:08 83

原创 ES6新特性

1、变量定义var会成为全局变量 let是局部变量 const是常量2、字符串扩展函数:includes(),startsWith(),endsWith()3、`` esc键下方的符号,代表字符串模板标记,中间的值即使换行或者js脚本还是其他的都解析为字符串的值4、解构,自动jie对应上值,也可以在解构时指定解构后的变量,如第二个例子let arr=[1,2,3]; le...

2019-07-01 20:24:20 72

Spring+Cloud微服务实战

百度网盘永久有效。Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具。它为微服务架构中设计的配置管理,服务治理,断路器,智能路由,微代理,控制总线,全局锁,决策竞选,分布式会话和集群状态管理等操作提供了一种简单的开发方式。

2019-04-25

空空如也

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

TA关注的人

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