摘要:一.Zookeeper集群 配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的数据是相同的, 每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的。 这篇主要分析leader的选择机制,zookeeper提供了三种方式: (1
阅读全文
11 2017 档案
摘要:前言: 悲观锁与乐观锁是两种常见的资源并发锁设计思路,也是并发编程中一个非常基础的概念。本文将对这两种常见的锁机制在数据库数据上的实现进行比较系统的介绍。 一.悲观锁(Pessimistic Lock) 悲观锁的特点是先获取锁,再进行业务操作,即“悲观”的认为获取锁是非常有可能失败的,因此要先确保获
阅读全文
摘要:缓存穿透 (请求数据缓存大量不命中) 缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,并且出于容错考虑, 如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。 例如: 下图是一个比较典型的cache-storage架构,cache(例如me
阅读全文
摘要:前言: map 数据如下 Map<String,List<Long>>. 测试代码如下: public void getByMap(){ Map<String,List<Long>> params=new HashMap<String, List<Long>>(); List<Long> orgLi
阅读全文
摘要:一.概念 1、VO(View Object): 视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。 2、DTO(Data Transfer Object): 数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体, 以减少分布
阅读全文
摘要:一.表设计 库名、表名、字段名必须使用小写字母,“_”分割。 库名、表名、字段名必须不超过12个字符。 库名、表名、字段名见名知意,建议使用名词而不是动词。 建议使用InnoDB存储引擎。 存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE。 建议使用UNSIGNED存储非负数值。 建
阅读全文
摘要:前言 当需要将Spring boot以restful接口的方式对外提供服务的时候,如果此时架构是前后端分离的,那么就会涉及到跨域的问题。 方案一: 在Controller上添加@CrossOrigin注解 使用方式如下: @CrossOrigin // 注解方式 @RestController pu
阅读全文
摘要:前言 首先讲一下开关的由来。 例如: 东京在6月18日做店庆促销活动,在交易下单环节,可能需要调用A、B、C三个接口来完成,但是其实A和B是必须的,C只是附加的功能(例如在下单的时候做一下推荐), 可有可无,在平时系统没有压力,容量充足的情况下,调用下没问题,但是在类似店庆之类的大促环节,系统已经满
阅读全文
摘要:一.业务场景 在日常做的项目中,目前涉及了以下这些业务场景: 1、场景一 比如分配任务场景。 在这个场景中,由于是公司的业务后台系统,主要是用于审核人员的审核工作,并发量并不是很高, 而且任务的分配规则设计成了通过审核人员每次主动的请求拉取,然后服务端从任务池中随机的选取任务进行分配。 这个场景看到
阅读全文
摘要:前言: 对于开发的网站,如果网站的访问量非常大的话,那么就需要考虑相关的并发访问问题了。 一.同步和异步的区别和联系 所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其它的命令。 异步,执行完函数或方法后,不必阻塞性
阅读全文
摘要:前言: 有一次从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后, 如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。 上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表
阅读全文
摘要:一.Redis 持久化 Redis提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF。 RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。 AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数
阅读全文
摘要:一、Redis概念 1、MySql+Memcached架构的问题 Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现。 Memcached服务器使用基于Slab的内存管理方式,有利于减少内存碎片和频繁分
阅读全文
摘要:一.Git概念 1、Git于SVN的不同 Git是分布式数据库,本地创建仓库,即可在本地完成版本控制(等价于SVN在本地安装服务器和客户端,SVN服务器如果在远程,断网情况将无法完成提交及版本维护)。 Git协作开发,大家可以互相克隆版本库(相当于SVN下载项目),进行开发,每人都有完整的库(分布式
阅读全文
摘要:前言: 一.创建maven项目,使用git提交,有时需要忽略不必要的文件或文件夹,只保留一些基本。 例如如下截图,实际开发中我们只需提交:src,.gitignore,pom.xml 而项目文件一般都保留,但是有些则不必要提交,如maven项目的target文件夹等等。 git忽略不必要文件有2种方
阅读全文
摘要:方法以及步骤: 1、首先你要安装Git工具 2、在C:\Documents and Settings\Administrator\目录下,运行Git Bash here 3、输入指令,进入.ssh文件夹 cd ~/.ssh/ 如果提示 “ No such file or directory”,你可以
阅读全文