摘要:或者: 消息队列满了以后该怎么处理? 或者: 几百万消息持续积压几小时,怎么解决? 问题本质是消费端出问题了,不消费或者消费慢。 1、消费端出问题了,大量消息积压在kafka里几个小时,怎么办? 正常思路是:修复consumer的问题,让他恢复消费,然后傻等几个小时消费完毕(不可取,用户等不了) 实
阅读全文
摘要:或者:如何保证从消息队列里拿到的数据按顺序执行? 解决方案的关键是在消费者消费之前,将有相关性的数据按顺序写入同一个队列(queue或者是内存队列) 1、rabbitMQ 中,有个默认是数据1进入一个queue并且只会被一个消费者消费 场景:(1queue对多consumer)三个消息按顺序写进了1
阅读全文
摘要:丢消息的情况有多种,可能是生产者丢了,可能是MQ丢了,可能是消费者丢了。 1、rabbitMQ 一般是用来承载核心业务的,数据是绝对不能丢的。解决方案的核心是接收消息方给发送消息方返回ack 一句话总结:生产者开启confirm模式 + MQ持久化消息 + 消费者关闭autoAck,手动提交 ack
阅读全文
摘要:消息重复消费,会造成数据混乱,特别是在涉及消费和财务系统里,此问题的解决显得尤为重要。 以kafka为例 关键字:消费端自动提交offset;写库或者redis时,先去查一下主键、key等是否存在 上图中,最顶上的文本框丢失的文字:并通知kafka当前最大offset; 最右边的文本框丢失的文字:数
阅读全文
摘要:保证MQ的高可用性,主要是解决MQ的缺点--系统复杂性变高--带来的问题 主要说一下 rabbitMQ 和 kafka 的高可用性 一、rabbitMQ的高可用性 rabbitMQ是基于主从做高可用性的,主要有三种模式:单机模式(不推荐)、普通集群模式(不推荐)、镜像集群模式(推荐) 1、单机模式:
阅读全文
摘要:1、Builder模式:例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder 2、工厂模式:例如SqlSessionFactory、ObjectFactory、Map
阅读全文
摘要:注:前提是知道什么是消息队列。不懂的去搜索各种消息队列入门(activeMQ、rabbitMQ、rocketMQ、kafka) 1、为什么要使用MQ?(MQ的好处:解耦、异步、削峰) (1)解耦:主要解决系统间的耦合度 场景是系统A会产生用户ID:userId,要把userId通过调用系统B\C\D
阅读全文
摘要:springboot启动类写法: @SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, ar
阅读全文
摘要:springMVC 1、是基于Servlet的一个MVC框架(DispatcherServlet、ModelAndView、ViewResolver),解决web开发问题 缺点是 :配置复杂 要简化使用,才应运而生的springBoot:约定优于配置 springMVC解决的问题是网站应用程序/服务
阅读全文
摘要:1、IOC 控制反转:由spring来控制对象的生命周期和对象之间的关系 依赖注入 DI :(1)组件之间的依赖关系由容器在运行期决定,动态的将某种依赖关系注入到组件中去 (2)通过反射机制实现 优点是: 降低了组件之间的耦合(例如组件A需要创建组件B,由spring注入到A中去,而不是A自己创建)
阅读全文
摘要:1、同步代码块 synchronized (锁对象) { xxx } 2、同步方法 public synchronized void method() { xxx } 3、静态同步方法 public synchronized static void method(){ xxx }
阅读全文
摘要:一、redis是用C语言开发的一个开源的高性能键值对内存数据库,可用作数据库、缓存、消息代理: 性能优秀,读写速度非常快;线程安全;丰富的数据类型;支持数据持久化; 高性能:执行耗时久且结果不经常变动的sql,将结果放进缓存,查询时间短。 经典场景是:电商平台,某个产品一天之内信息都不变,但每次查询
阅读全文
摘要:在随笔“springMVC项目配置文件”的基础上,进行优化,使用注解配置,控制器类得以简化: 一、注解配置springMVC 1、在HelloController类中,去除实现的Controller接口,并给方法HandlerRequest添加注解@RequestMapping: @Controll
阅读全文
摘要:问题描述: MYSQL采用limit进行翻页查询时,搭配order by ,在翻到第二页的时候可能会出现第一页的数据, 示例sql如下: select a,b from c where d = 'xxx' order by e desc limit 5,5 使用上述sql查询的时候,可能出现和lim
阅读全文
摘要://以上个随笔(springMVC项目配置文件)为基础,详述springMVC请求的整个过程流向 web.xml dispatcher-Servlet.xml 用户请求 --> 经DispatcherServlet拦截并分发到对应的控制器 > 由配置,/hello会进入HelloController
阅读全文
摘要:一、springMVC项目配置文件 1、web.xml文件全局配置 <servlet> <servlet-name> dispatcher </servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServle
阅读全文
摘要:一、springMVC三大组件 处理器映射器 RequestMappingHandlerMapping 处理器适配器 RequestMappingHandlerAdapter 视图解析器 InternalResourceViewResolver 二、1、spring主要jar包: spring-co
阅读全文
摘要:懒汉、饿汉、双重校验锁 1、懒汉:需要时才会去创建 public Class Singleton{ private static Singleton instance = null; private Singleton(){} public static synchronized Singleton
阅读全文
摘要:1、JDBC所需的四个参数username、password、url、driverClass 2、加载JDBC驱动程序 3、创建数据库连接connection对象conn 4、创建preparedStatement 5、执行sql语句 6、遍历结果集 7、处理异常,关闭JDBC对象资源 详细内容:
阅读全文
摘要:1、ConcurrentHashMap原理和技术,size方法的实现? java1.7中采用Segment +HashEntry +ReentrantLock实现,是用的分段锁 Java1.8中采用Node + CAS+Synchronized来保证并发安全实现,降低锁的粒度,采用链表 线程安全 C
阅读全文
摘要:1、事务的ACID性: (1)原子性:要么做,要么都不做。程序操作执行未成功,则所做的更改会被撤销; (2)一致性:比如转账,a转给b一百元,则a的账户少100,b的账户多100,前后数据要一致; (3)隔离性:由数据库锁实现。事务的隔离级别有4种:未提交读、提交读、可重复读、串行化; (4)持久性
阅读全文