本文创意来自一次业务需求,这次需要接入一个第三方外部服务。由于这个服务只提供异步API,为了不影响现有系统同步处理的方式,接入该外部服务时,应用对外屏蔽这种差异,内部实现异步请求同步。全文摘要:异步给现有架构带来的问题Dubbo异步转同步解决方法异步转同步架构设计方案0x00.前言现有一个系统,整体架构如下所示:这是一个很常见的同步设计方案,上游系统需要等待下游系统接口返回调用结果。现在需要接入另
分类:
其他好文 时间:
2020-08-06 09:23:22
阅读次数:
59
mongodb复制原理mongodb的复制最少需要两个节点,一个master,用于处理用户的请求,其余都是从节点,负责复制主节点上的数据。mongodb常见集群环境:一主一从、一主多从。master记录在其上的所有操作oplog,slave定期轮询master获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。MongoDB复制结构图如下:在上面的架构中,客户端从pr
分类:
数据库 时间:
2020-08-05 21:01:45
阅读次数:
90
之前一直用Matlab进行矩阵计算,每次打开程序都要等一会儿,今天发现Excel也能轻松完成简单的矩阵计算。 矩阵相乘 =MMULT(matrix1,matrix2) 勾选第一个矩阵后,输入逗号,然后再勾选下一个矩阵 勾选相应结果维数的表格,按下F2,然后再按下ctrl+shift+enter,便可 ...
分类:
其他好文 时间:
2020-08-05 18:14:01
阅读次数:
120
上一篇List踩坑文章中,我们提到几个比较容易踩坑的点。作为List集合好兄弟Map,我们也是天天都在使用,一不小心也会踩坑。今天我就来总结这些常见的坑,再捞自己一手,防止后续同学再继续踩坑。本文设计知识点如下:不是所有的Map都能包含null这个踩坑经历还是发生在实习的时候,那时候有这样一段业务代码,功能很简单,从XML中读取相关配置,存入Map中。代码示例如下:那时候正好有个小需求,需要改动一
分类:
其他好文 时间:
2020-08-05 10:34:24
阅读次数:
78
恢复内容开始 一.首先讲讲使用缓存的好处: (1).当页面渲染的数据过多时,为了减轻对内存的占用,对初次接收且会用到的数据进行本地缓存,是有着大好处的. (2).受网速等各种因素的影响,当渲染数据过多时,若存在频繁的切换页面,用户体验效果不佳。 二.常见的本地缓存方式 1.利用storage来对数据 ...
分类:
Web程序 时间:
2020-08-05 00:12:27
阅读次数:
199
1、Collection接口 (1)特点 没有直接的实现类,而是提供了子接口 该接口提供了一系列常见的集合操作的方法,例如:增加、删除、查找 (2)常见方法 add:单个添加 addAll:批量添加 remove:删除 removeAll:批量删除 contains:查找 containsAll:批 ...
分类:
其他好文 时间:
2020-08-05 00:06:59
阅读次数:
62
以Lock作为切入点 Lock API Lock接口常见实现类 ReentrantLock的简单使用 什么是AQS? AQS的两种功能 ReentrantLock的类图 AQS的内部实现 释放锁以及添加Node对与队列的变化 添加节点 释放锁移除节点 AQS的源码解析 ReentrantLock整体 ...
分类:
其他好文 时间:
2020-08-04 18:18:47
阅读次数:
88
Service是Android四大组件之一,是一个计算型组件。它在Android开发中扮演着一个重要的角色,虽然他不如Activity那么常见,但是在很多App中都有着实际的应用场景。 Service的运行不依赖于任何用户界面,所以它非常适合用于去执行那些不需要和用户交互但却需要长期运行的任务,如A ...
分类:
移动开发 时间:
2020-08-04 18:16:23
阅读次数:
110
前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM。关于基类,是这样定义的:把一些常见的页面操作的selenium封装到base_page.py这个类文件,以后每个POM中的页面类,都继承这个基类,这样每个页面类都有基类的方法,这个我们 ...
分类:
编程语言 时间:
2020-08-04 16:43:01
阅读次数:
86