获得徽章 0
day29!

MySQL隔离级别
mysoL 是一个服务器/客户端架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(session)。我们可以同时在不同的会话里输入各种语句,这些语句可以作为事务的一部分
进行处理。不同的会话可以同时发送请求,也就是说服务器可能同时在处理多个事务,这样子就会导致不同的事务可能同时访问到相同的记录。我们前边说过事务有一个特性称之为 隔离性,理论上在某个事务对某个数据进行访问时,其他事务应该进行
排队,当该事务提交之后,其他事务才可以继续访问这个数据。但是这样子的话对性能影响太大,所以设计数据库的大权提出了各种 隔离级别,来最大限度的提升系统并发处理事务的能力,但是这也是以牺牲一定的 隔离性 来达到的。
展开
评论
day28!
分布式锁的特点:
互斥性:和我们本地锁一样互斥性是最基本,但是分布式锁需要保证在不同节点的不同线程的互斥。
可重入性:同一个节点上的同一个线程如果获取了锁之后那么也可以再次获取这个锁。
锁超时:和本地锁一样支持锁超时,防止死锁。
高效,高可用:加锁和解锁需要高效,同时也需要保证高可用防止分布式锁失效,可以增加降级。
支持阻塞和非阻塞:和ReentrantLock一样支持lock和trylock以及tryLock(long timeOut)。
支持公平锁和非公平锁(可选):公平锁的意思是按照请求加锁的顺序获得锁,非公平锁就相反是无序的。这个一般来说实现的比较少。
展开
评论
day27!
架构设计要素:
职责明确的模块和组件(高内聚和低耦合的体现)
组件间明确的关联关系(一对多?一对一?多对多?)
详细清晰的约束和指导原则(例如:单一原则、里式替换原则、开闭原则以及依据业务自定义的其他原则等)
以下是架构师的职责:
定义问题->确定架构->提出方案->落地。
一个架构设计最难得地方就是定义问题的部分: 什么是最需要注意? 什么是系统的瓶颈所在? 在这一步要看清主次矛盾,但也要注意主次矛盾是会互相变换的(从这点看,架构师还需要点哲学的思想呢哈哈)。 例如当业务比较小时,特别是初创公司,可能成本是首要矛盾,而对于大型公司、或业务从小发展到大,成本可能不再是首要矛盾,TPS、QPS这些性能方面的东西可能是首要注意点。 而对于定位问题,要有打破砂锅问到底精神(5why分析法),如下图所示,最初知识想要提升用户体验,但随着不断的深入研究探索,发现了更多的需要注定的点,这时架构师可能就得利用自己经验来判断出哪个才是首要矛盾。
展开
评论
day26!

经典网络模型
简化了汇聚层,多数规模500接入数以内的公司够用,网关直接落在核心交换机上。
1)接入
接入多数是二层交换机为主,节约成本有的地方用
傻瓜交换机,主要配置access隔离广播域,通过不同的vlan分离,可以按照部门、接入数量进行隔离,接入到汇聚主要是trunk,透传携带vlan tag的数据,网关在汇聚上。
为了防止环路,接入层配置生成树协议 (STP、
RSTP, MSTP)
2) 核心
配置svi接口网关,配置svi接口与核心对接,为了svi网关元余配置vrrp,防止与接入环路配置stp。
核心主要的作用是高速转发,作为汇聚、出口、服务器之间的枢纽;
核心有时候会挂上接入交换接服务器,所以要配置svi、vrrp、stp.

配置svi接口核心、出口、汇聚的对接ip地址,核心主要是用ospf打通汇聚、出口路由。
3)出口
出口与核心运行ospf路由协议,出口与运营商对接使用aclnat、pppoe拨号。
展开
评论
day25!

数据库本地事务
ACID
说到数据库事务就不得不说,数据库事务中的四大
特性,ACID:
•A:原子性(Atomicity)
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。
事务在执行过程中发生错误,会被回滚
(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
就像你买东西要么交钱收货一起都执行,要么要是发不出货,就退钱。
•C一致性(Consistency)
事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态。如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。
I 隔离性(Isolation)
指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空问。由
并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。
打个比方,你买东西这个事情,是不影响其他人的。
D:持久性(Durability)
指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束

展开
评论
day24!

Hadoop生态系统

HDFS——Hadoop分布式文件系统,GFS的Java开源实现,运行于大型商用机器集群,可实现分布式存储。
MapReduce——一种并行计算框架,Google MapReduce模型的Java开源实现,基于其写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理T级别及以上的数据集。(第一代的计算框架,自身存在一些弊端,所以导致企业里已经很少使用了)。
Yarn——Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
Spark——Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发的通用内存并行计算框架,借鉴了MapReduce之上发展而来的,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷。使用场景如下:
复杂的批量处理(Batch Data Processing),偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数十分钟到数小时;

基于历史数据的交互式查询(Interactive Query),通常的时间在数十秒到数十分钟之间

基于实时数据流的数据处理(Streaming Data Processing),通常在数百毫秒到数秒之间

Storm——Storm用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。如今已被Flink替代。
Flink——Apache Flink是一个面向数据流处理和批量数据处理的可分布式的开源计算框架,它基于同一个Flink流式执行模型(streaming execution model),能够支持流处理和批处理两种应用类型。由于流处理和批处理所提供的SLA(服务等级协议)是完全不相同, 流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理,所以在实现的时候通常是分别给出两套实现方法,或者通过一个独立的开源框架来实现其中每一种处理方案。
Flume——
展开
评论
day23!

大O表示法的时间复杂度大致可以分为以下几个级别:
O(1) :常数级别,无论输入多大,它执行的步数都是恒定的,不会因为输入变大而变大,哈希表的查找就是这个级别。

O(N) :线性级别,随着输入变大耗费的步数也正向相关,遍历算法就是这个级别。

O(logN) :对数级别,输入每变大一倍,耗费步骤则增加1,二分查找算法属于这个级别。

O(N²) :平方级别,随着输入的变大所耗费的步数会成倍增加,一般当你的算法使用双层for循环就是这个级别,比如冒泡排序。
展开
评论
day22!
BFS&DFS
BFS:广度优先搜索
BFS是从根节点开始,沿着树的宽度遍历树的节点,如果发现目标,则演算终止。
DFS:深度优先搜索
简单来说,从根节点出发,然后依次向下继续搜索,直到遇到叶子节点,此时就会向上回溯,继续向为访问过的点继续深度搜索。
展开
评论
day21!

时间复杂度

大O表示法中, 时间复杂度的公式是: T(n) = O(f(n)), 其中f(n)表示每个代码执行次数之和, 而O表示正比例关系, 这个公式的全称是:算法的渐进时间复杂度.
常见的时间复杂度量级从上至下越来越大:
常数阶O(1)
对数阶O(logN)
线性对数阶O(nlogN)
平方阶O(n²)
立方阶O(n³)
K次方阶O(n^k)
指数阶O(2^n)



空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的一个量度, 同样反映的是一个趋势, 我们用S(n)来定义.
空间复杂度比较常用的有: O(1)、O(n)、O(n²).
如果算法执行所需要的临时空间不随着某个变量n的大小而变化, 即此算法空间复杂度为一个常量, 可表示为O(1)
展开
评论
下一页
个人成就
文章被阅读 733
掘力值 82
收藏集
1
关注标签
7
加入于