RabbitMQ保证高可用的一些思考
摘要:1、什么是RabbitMQ?为什么使用RabbitMQ? 答:RabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的,消息中间件; 可以用它来:解耦、异步、削峰。 2、RabbitMQ有什么优缺点? 答:优点:解耦、异步、削峰; 缺点:降低了系统的稳定性:本来系统运行好好的,现在你非要
阅读全文
posted @
2020-10-31 22:34
Code2020
阅读(206)
推荐(0) 编辑
接口幂等性的一些思考
摘要:思考? 1. 如何保证提交订单按钮防止重复提交 2.表单录入页如何防止重复提交? 3. 微服务接口,客户端重试时候,会对业务数据产生影响吗? 什么是幂等性? f(f(x)) = f(x) 幂等性: 幂等元素运行多次, 还等于它原来的运算结果 在系统中,一个接口运行多次,与运行一次的效果是一致的 任意
阅读全文
posted @
2020-10-31 22:17
Code2020
阅读(295)
推荐(0) 编辑
项目基础回顾:SpringBoot与PageHelper的整合示例详解
摘要:SpringBoot与PageHelper的整合示例详解 1.PageHelper简介# PageHelper官网地址: https://pagehelper.github.io/ 摘要: com.github.pagehelper.PageHelper是一款好用的开源免费的Mybatis第三方物理
阅读全文
posted @
2020-10-29 18:15
Code2020
阅读(314)
推荐(0) 编辑
记录一下自己对项目中异常的处理封装,通用组件
摘要:总的exception包含三个类 1. BaseAppException public class BaseAppException extends BaseException { public BaseAppException() { super(); } public BaseAppExcept
阅读全文
posted @
2020-10-28 17:11
Code2020
阅读(354)
推荐(0) 编辑
mysql(自动添加系统时间)timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
摘要:timestamp有两个属性,分别是CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP两种,使用情况分别如下: 1.CURRENT_TIMESTAMP 当要向数据库执行insert操作时,如果有个timestamp字段属性设为 CURRENT_TIMESTA
阅读全文
posted @
2020-10-28 16:58
Code2020
阅读(694)
推荐(0) 编辑
五分钟带你了解啥是JWT
摘要:1. JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。 2. 什么时候你应该用JSON Web Token 下列
阅读全文
posted @
2020-10-27 18:14
Code2020
阅读(320)
推荐(0) 编辑
Eureka和ZooKeeper的区别
摘要:首先我们先说下: RDBMS==>(MySql,Oracle,SqlServer等关系型数据库)遵循的原则是:ACID原则(A:原子性。C:一致性。I:独立性。D:持久性。)。 NoSql ==> (redis,Mogodb等非关系型数据库)遵循的原则是:CAP原则(C:强一致性。A:可用性。P:分
阅读全文
posted @
2020-10-27 16:19
Code2020
阅读(108)
推荐(0) 编辑
SpringCloud系列之: Eureka注册中心原理及其搭建
摘要:一、Eureka简介 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服
阅读全文
posted @
2020-10-26 10:33
Code2020
阅读(469)
推荐(0) 编辑
总结下微服务中降级、熔断,以及springcloud中Hystrix的原理以及实现
摘要:一、Hystrix 1、服务雪崩(遇到的问题) 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C有调用其他的微服务,这就是所谓的”扇出”,如扇出的链路上某个微服务的调用响应式过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统雪崩,所谓的”雪崩效应
阅读全文
posted @
2020-10-24 21:50
Code2020
阅读(2756)
推荐(1) 编辑
死磕计算机网络:HTTP请求/响应报文结构
摘要:HTTP请求报文 一个HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据。 1.请求行 请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如 GET /data/info.html HTTP/1.1 方法字段就是HTTP使用的请求方法,比如常见的GE
阅读全文
posted @
2020-10-23 22:47
Code2020
阅读(380)
推荐(0) 编辑
关于项目中注入的一些理解
摘要:1. @Value注解 在业务层中,要使用这个source@Value("${unifiedXXXXSource}") private String source; 则需要在baseConfig.properties中配置 unifiedXXXXSource = changxueyi 2.@Reso
阅读全文
posted @
2020-10-22 10:54
Code2020
阅读(129)
推荐(0) 编辑
线程池提交任务时submit()和execute()的区别
摘要:因为之前一直是用的execute方法,最近有个情况需要用到submit方法,所以研究了下。 他们的区别: 1、execut()可以添加一个Runable任务,submit()不仅可以添加Runable任务还可以添加Callable任务。 2、execut()没有返回值,而submit()在添加Cal
阅读全文
posted @
2020-10-21 16:48
Code2020
阅读(1340)
推荐(0) 编辑
maven 随笔,周末重拾maven
摘要:1. 没有maven的时候,遇到的问题 2. maven可以解决的问题 3.maven中仓库的分类 4.maven使用依赖范围 基于maven,maven主要做了就是java 包中放自己的代码,test放测试的代码,pom文件主要用来管理自己的jar包等 1.Maven本地仓库中存放的是什么? 1.
阅读全文
posted @
2020-10-18 21:01
Code2020
阅读(56)
推荐(0) 编辑
分布式演进的一点理解
摘要:单体架构->垂直架构->分布式架构 1.单体架构 单一架构和分布式架构,区别就是:分布式架构,去访问JD,像去访问一个系统一样, 但是后面有成千上万台服务器的支持,不能把这么多服务放在一台服务器上面去. 如果放在一台服务器上,扩展麻烦,需要重新打包放上去,多人开发同一个系统,不易维护。 2.垂直架构
阅读全文
posted @
2020-10-18 20:53
Code2020
阅读(139)
推荐(0) 编辑
如何理解持续集成、持续交付、持续部署?
摘要:最近看了一篇文章 The Product Managers' Guide to Continuous Delivery and DevOps 文中对「持续集成(Continuous Integration)」、「持续交付(Continuous Delivery)」和「持续部署(Continuous
阅读全文
posted @
2020-10-18 09:42
Code2020
阅读(265)
推荐(0) 编辑
关于Mockito学习的一点自己的理解
摘要:1. 如果要使用@Mockito ,则要加入MockitoAnnotations.initMocks MockitoAnnotations.initMocks 放在 junit 的 @Before 注解修饰的函数中更合适。 MockitoAnnotations.initMocks 的一个替代方案是使
阅读全文
posted @
2020-10-16 11:03
Code2020
阅读(409)
推荐(0) 编辑
记录一下近期项目中遇到得小问题
摘要:1. PostMan使用 1. 使用postMan进行请求,记得添加Headers信息 2. 记录一次遇到得小坑,在PostMman请求一个接口信息时候 ResponseVo<XXXXResVo> queryXXXXManage(XXXXReqVo XXXXReqVo); XXXXReqVo对象为
阅读全文
posted @
2020-10-15 12:35
Code2020
阅读(129)
推荐(0) 编辑
记一次tomcat升级遇到的问题
摘要:服务器上一直用的tomcat7,因为被扫描到诸多漏洞,特将版本升到最新的apache-tomcat-9.0.21.tar.gz。简单记录一下整个升级过程。下载地址:https://tomcat.apache.org/download-90.cgi使用的版本:Core:tar.gz (pgp, sha
阅读全文
posted @
2020-10-14 17:13
Code2020
阅读(847)
推荐(0) 编辑
Redis中大key问题,热key问题的解决方案
摘要:遇到大key、热key问题,主要是去拆分 大key问题 业务场景中经常会有各种大key的情况, 比如:1. 单个简单的key存储的value很大(例如排行榜信息,key是固定的,value排行榜几十万的数据)2. hash、set、zset、list中存储过多的元素(以万为单位) 由于redis是单
阅读全文
posted @
2020-10-13 20:28
Code2020
阅读(11043)
推荐(0) 编辑
消息中间件消费到的消息处理失败怎么办?
摘要:1.消息中间件在生产系统中的使用这是一个非常典型的生产环境的问题,很多公司都会在生产系统里使用MQ,即消息队列,或者消息中间件。 也就是说,一个系统跟另外一个系统之间进行通信的时候,假如系统A希望发送一个消息给系统B,让他去处理。 但是系统A不关注系统B到底怎么处理或者有没有处理好,所以系统A把消息
阅读全文
posted @
2020-10-12 20:28
Code2020
阅读(456)
推荐(0) 编辑
通俗易懂 悲观锁、乐观锁、可重入锁、自旋锁、偏向锁、轻量/重量级锁、读写锁、各种锁及其Java实现!
摘要:网上关于Java中锁的话题可以说资料相当丰富,但相关内容总感觉是一大串术语的罗列,让人云里雾里,读完就忘。本文希望能为Java新人做一篇通俗易懂的整合,旨在消除对各种各样锁的术语的恐惧感,对每种锁的底层实现浅尝辄止,但是在需要时能够知道去查什么。 首先要打消一种想法,就是一个锁只能属于一种分类。其实
阅读全文
posted @
2020-10-12 20:18
Code2020
阅读(413)
推荐(0) 编辑
BigDecimal.setScale()方法用于商业计算的精度设置问题详解
摘要:BigDecimal.setScale()方法用于商业计算的精度设置问题详解 网上的说法繁杂,看起来诸多不便,并且有的说法也不太准确,在这里 做一下求证。用的较多的4个参数:BigDecimal.ROUND_UP 这个方法做直接进位处理,但是有个特殊情况需要考虑,如果将要舍弃的位上的值是0,不做进位
阅读全文
posted @
2020-10-12 18:28
Code2020
阅读(866)
推荐(0) 编辑
StringUtils.isBlank()的使用
摘要:在校验一个String类型的变量是否为空时,通常存在3中情况 是否为 null 是否为 “” 是否为空字符串(引号中间有空格) 如: " "。 制表符、换行符、换页符和回车 StringUtils的isBlank()方法可以一次性校验这三种情况,返回值都是true,否则为false StringUt
阅读全文
posted @
2020-10-12 18:01
Code2020
阅读(1225)
推荐(0) 编辑
count(1)、count(*)、count(字段)的区别
摘要:count(1)和count(*): 都为统计所有记录数,包括null 执行效率上:当数据量1W+时count(*)用时较少,1w以内count(1)用时较少 count(字段): 统计字段列的行数,不包括null 若字段为主键则count(主键)效率最高,否则少量数据时使用count(1) 总结:
阅读全文
posted @
2020-10-11 20:17
Code2020
阅读(246)
推荐(0) 编辑
关于redis中zset底层跳表的理解
摘要:何为跳表? 跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。 跳表详解 有序链表 考虑一个有序链表,我们要查找3、7、17这几个元素,我们只能从头开始遍
阅读全文
posted @
2020-10-11 20:15
Code2020
阅读(3820)
推荐(1) 编辑
详解mysql的默认隔离级别
摘要:知识点总结 1.数据库默认隔离级别: mysql repeatable,oracle,sql server read commited 2.mysql binlog的格式三种:statement,row,mixed 3.为什么mysql用的是repeatable而不是read committed:在
阅读全文
posted @
2020-10-11 15:58
Code2020
阅读(1738)
推荐(0) 编辑
面试官:一个应用程序有多少个进程
摘要:一个程序几个进程在于这个程序的开发者的设置,可以是1个,也可以是多个的。 1.一个程序里有很多个进程 一个程序几个进程在于这个程序的开发者的设置,可以是1个,也可以是多个的。一个应用程序,启动多个处理进程。换言之,所有进程隶属于当前应用程序;这是所谓的多进程服务。 2.一个程序只有一个进程但被开启很
阅读全文
posted @
2020-10-10 15:44
Code2020
阅读(3237)
推荐(0) 编辑
彻底理解 IO多路复用
摘要:看完下面这些,高频面试题你都会答了吧 目录 1、什么是IO多路复用?2、为什么出现IO多路复用机制?3、IO多路复用的三种实现方式4、select函数接口5、select使用示例6、select缺点7、poll函数接口8、poll使用示例9、poll缺点10、epoll函数接口11、epoll使用示
阅读全文
posted @
2020-10-10 10:22
Code2020
阅读(518)
推荐(0) 编辑
记录一次:TIME_WAIT状态连接过多的分析与解决
摘要:原理说明 一个连接的建立与断开,正常过程至少需要来回7个包才能完成。 Each socket in TIME_WAIT consumes some memory in the kernel, usually somewhat less than an ESTABLISHED socket yet s
阅读全文
posted @
2020-10-10 10:06
Code2020
阅读(733)
推荐(0) 编辑
Time-wait状态(2MSL)一些理解
摘要:1. 编写TCP/SOCK 服务时,SO_REUSEADDR到底是什么意思? 这个套接字选项通知内核,如果端口忙,但TCP状态处于TIME_WAIT,可以重用端口。如果端口忙,TCP状态处于其他状态,重用端口时依旧指明“地址已经在使用中”。如果你的服务程序停止后向立刻重启,而新套接字依旧使用同一个端
阅读全文
posted @
2020-10-09 18:54
Code2020
阅读(2020)
推荐(0) 编辑