
11 架构
文章平均质量分 92
架构
喵了个咪的回忆丶
Java后台
展开
-
接口规范
接口规范接口主要分为四个部分:方法、uri、请求参数、返回参数。uri:uri地址里不能出现大写字母,如果是两个单词拼接,用 / 分开。它以 /a 开头。对于需要登录才能调用的接口,后面 /a 后面要加上 /u ,也就是 /a/u。中间放表名,或是能表示这个接口的表示词。如果是后台的查询列表,就通过 /search 结尾;如果是前台的查询列表,就通过 /list 结尾。比如请求地址是:/a/student/list请求参数和返回参数,都分为5列,字段、说明、类型、备注、是否必填,其中备注可以方便我们原创 2020-09-12 19:53:26 · 1277 阅读 · 0 评论 -
海量数据处理
两个大文本文件求交集通过hash函数将一个文件的所有数据映射到1000个文件中,这1000个文件记为a1,a2,a3…a1000通过相同的hash函数将另一个文件的所有数据也映射到1000个文件中,这1000个文件记为b1,b2,b3…b1000。由于使用的是相同的hash函数,所以两个文件中一样的数据会被分配到文件下标一致的文件中,接着分别对a1、b1求交集,a2、b2求交集,ai、bi求交集,最后将结果汇总,即为两个文件的交集。...原创 2020-09-09 11:29:33 · 375 阅读 · 0 评论 -
秒杀项目面试点
mysql版本mysql版本采用的是 8.0.16,它与5.6版本相比,默认的存储引擎改为InnoDB引擎,而且它的增删查改性能相比原先的版本也有较大的提升。数据库表(密码需要跟用户的主表信息分开存取)用户信息表:id、名字、性别、年龄、手机号等用户基本信息。用户密码表:id、密码(以密文的方式存储在数据库里,不能以明文的方式)、use_id 作为外键关联到前面的用户信息表上。单机版redis因为单机版redis与cluster集群相比,仅仅存在水平扩展的容量问题,而由于这个项目是自原创 2020-09-04 15:40:35 · 721 阅读 · 0 评论 -
CompletableFuture、EasyExcel、PageInfo
CompletableFutureCompletableFuture 是 Java8 提出的一个支持非阻塞的多功能Future。它提供了一个异步运算结果的建模,让我们把耗时的操作从我们本身的调用线程中释放出来,只需要完成后进行回调即可,就好像我们去饭店吃饭,不需要我们自己去煮饭,我们点餐后就可以继续干自己的事,然后餐厅煮好了就回调我开始吃饭。通过引入CompletableFuture......原创 2020-07-27 16:10:41 · 622 阅读 · 0 评论 -
redis和数据库的缓存一致性问题
数据库和缓存如何保证一致性先更新数据库,后更新缓存:在并发情况下会存在多线程 写缓存 造成脏数据的问题:假设A、B两个线程,A先更新数据库,B后更新数据库,然后AB分别更新缓存,但是B先更新缓存成功,A后更新缓存成功,这样就导致数据库是最新的数据但缓存中是旧的脏数据。而如果删除缓存数据的话,可以保证下一次读请求回源到数据库,将最新的数据载入到缓存中,避免脏数据的问题。因此,针对数据更新缓存,采用删除缓存的方式进行处理。先删除缓存,再更新数据库:并发问题:删除缓存后,查询操作没有命中缓存,会把老数原创 2020-08-09 14:01:22 · 182 阅读 · 0 评论 -
nginx高性能原因、负载均衡调度算法、select、poll、epoll的区别
1.为什么选择Nginx?原因一:IO多路复用epoll串行的方式进行IO流的处理:发生阻塞时效率会非常的低。多线程的方式进行IO流的处理:增加了多个线程,产生了更多的资源消耗IO多路复用:多个描述符的IO操作都能在一个线程内并发交替的顺序完成。复用指的是复用同一个线程。select采用线性遍历的方式,...原创 2019-06-19 21:55:19 · 429 阅读 · 0 评论 -
一致性hash算法
一致性hash算法(数据均匀分布到各个节点上)普通hash算法的缺点:普通的hash算法将key的hash值对redis实例的个数进行取模,来定位到redis,这样会有一些问题,比如redis实例增加,这个计算公式就会变,于是要将之前存储的key重新hash一遍,这样代价是比较高的。一致性hash算法也是使用取模的方法,不过不是对服务器数量取模,而是对2的32次方取模,hash函数的值空间为0~2的32次方-1,将整个hash值空间看成一个虚拟的圆环。将每台服务器(ip地址)都hash到hash原创 2020-08-13 15:13:23 · 138 阅读 · 0 评论 -
分布式ID生成方案
UUIDUUID由本地生成,没有网络消耗,但它太长,而且是无序的,现阶段主流数据库主键索引都是采用的B+树索引,无序而且过长的UUID不适合作为主键。数据库自增ID通过 auto_increment_offset 设置起始值,auto_increment_increment 设置自增步长,以此来生成自增的ID,优点是用现有的数据库系统来实现,成本小,实现简单;缺点是业务系统每次需要一个...原创 2019-12-29 18:35:12 · 234 阅读 · 0 评论 -
2PC、3PC
二阶段提交协议(2PC)、三阶段提交协议(3PC)、Paxos 算法,都是为了解决分布式一致性问题。原创 2019-12-28 21:56:14 · 207 阅读 · 0 评论 -
CAP 和 BASE
CAP 理论(Consistency、Availability、Partition tolerance)一致性: 指的是执行更新操作后,数据从一个一致性状态转移到另一个一致性状态。如果所有用户总能读到最新的值,该系统就被认为具有强一致性。可用性: 指的是系统提供的服务一直处于可用的状态,每一个操作请求总能在有限的时间内返回结果。分区容忍性: 指的是分布式系统在遇到网络分区故障时,...原创 2019-12-28 15:54:40 · 161 阅读 · 0 评论 -
数据库读写分离和分库分表
主写从读原创 2020-06-14 09:31:10 · 293 阅读 · 0 评论 -
正向和反向(nginx代理服务器)
正向正向dl: 客户端找到一台可以访问目标服务器的代理服务器,然后把请求发给代理服务器,由代理服务器获得目标服务器的数据并返回给客户端。客户端是清楚目标服务器地址的,而目标服务器不清楚请求来自哪个客户端,它只知道来自哪个代理服务器,所以正向代理可以隐藏客户端的信息。反向反向dl: 正向代理站在客户端那边。反向代理作为服务器的代理人,站在服务器那边,它对外屏蔽了服务器的信息,常用的场景就是多台服务器分布式部署,像一些大的网站,由于访问人数很多,就需要多台服务器来解决人数多的问题,这时这些服务器就由一个反原创 2020-08-05 13:46:04 · 418 阅读 · 0 评论 -
RCP框架
对RPC框架的理解RPC的意思是远程过程调用,可以像调用本地方法那样调用远程方法。跨进程的交互方式有:RPC、RESTful、HTTP、WebServer、基于MQ或者数据库做数据交互。它们可以分为两种,一种是依赖中间件做数据交互:数据库、Redis、MQ。另一种是客户端和服务端的直接交互:RPC、RESTful、HTTP、WebServer。Server:服务提供者 ProviderC...原创 2020-04-15 16:35:13 · 856 阅读 · 0 评论 -
测试
打开软件卡顿怎么测试?启动时间、内存、CPU、耗电量、流量、流畅度等冷启动时间(通常是系统重启,即在启动前没有该App进程的情况),另一种是热启动,即App从被切换到前台(点back退出后再点击图标启动)。QA测试时,一般关注冷启动的启动时间。打断点查看输出日志,查看启动时间。对于性能问题的话,1、硬件处理能力不足:对于单机应用来讲,卡顿可能是本机处理能力不足;对于网络或手游,卡顿可能是网速慢。2、同时访问的人数多,这种情况的话就要考虑后台进行一个分布式的扩展,以及引入redis缓存、或原创 2020-07-27 17:01:59 · 231 阅读 · 0 评论 -
Dubbo相关
1. 什么是Dubbo?Dubbo 是一个高性能的、基于 java 的、开源 RPC 框架2. 什么是RPC?RPC 是 Remote Procedure Call Protocol ,称为:远程过程调用协议。是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。该协议允许运行于一台计算机的程序调用另一台计算机的程序。程序员无需编为网络交互功能编码。RPC 的作用?...原创 2019-05-08 18:05:24 · 148 阅读 · 0 评论 -
系统设计时要考虑哪些方面?
一、性能将多台服务器组成集群,使用负载均衡将请求转发到集群中,避免单一服务器的负载压力过大导致性能降低。使用缓存来提高性能。缓存位于内存中,速度快。异步。将操作转换为消息,发送到消息队列中,然后立即返回,之后通过异步来处理这个操作。二、伸缩性伸缩性指向集群中添加服务器来缓解不断上升的用户并发访问压力和增长的数据存储需求。通过负载均衡器来向集群中添加新的服务器。对于关系型数据库可...原创 2019-12-28 12:14:49 · 5463 阅读 · 0 评论 -
maven 依赖 jar 包时版本冲突的解决方案
maven 依赖 jar 包时版本冲突的解决方案通过 exclusion 标签排除掉不需要的 jar 包。原创 2020-04-03 17:34:43 · 2063 阅读 · 0 评论 -
CDN
CDNCDN部署在网络提供商的机房,用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据。CDN和DNS执行顺序原创 2019-12-03 14:36:02 · 125 阅读 · 0 评论