首页

来自智得网
跳转至: 导航、​ 搜索

精选文章

MVCC查看全文
MVCC执行流程.png
数据库在多个客户端并发更新的时候,数据会产生多个版本。数据库查询或者操作时使用哪个版本是数据库的隔离级别关注的问题域,MVCC是该领域的解决方案之一。MVCC,是多版本控制协议的缩写,MVCC技术的主要目的是通过数据的多版本快照读取逻辑实现数据库特定的隔离级别。

数据库的隔离级别一般分为读未提交,读已提交,可重复读,串形化等。MVCC只在读已提交(Read Committed)和可重复读(Repeatable Read)两个隔离级别下工作。读未提交以及串行化两个隔离级别和MVCC是不兼容的 未提交读,总数读取最新的数据行,而不是读取符合当前事务版本的数据行。 串行化(Serializable)则会对读的所有数据多加锁。 除了MVCC之外数据库还可以使用锁来实现隔离性。 锁的问题是锁的颗粒度以及时间问题,从锁的颗粒度来说,锁可以分为独占锁,读些锁,以及乐观锁等, 独uode独占锁锁住一个资源后其他线程无法访问同一个资源。但是部分应用的特点是读多写少,数据读取的时候互相排斥不是必要的。读写锁可以部分解决独占锁的问题,读锁和读锁之间不互斥,而写锁和写锁、读锁都互斥,这样就很大提升了系统的并发能力。但是即使使用读写锁,在资源被修改的期间数据也是不是读取的。 MVCC就提供了读写可以并发的方式,实现方案就是资源在修改期间,保存了之前的数据快照,数据读取时可以指定读取某个快照版本的数据,这样就避免了读锁就和写锁的冲突,不同的事务会话可以查询自己特定版本的数据。 MVCC除了解决读写阻塞的问题之外,还降低了死锁的概率,以及实现了一致读。 MVCC的实现需要三个模块,分别是数据快照,版本链,以及ReadView。

数据快照存储了数据的多个版本…
Https查看全文
HTTPS和HTTP的对比.png
http协议是明文协议,明文数据会经过中间代理服务器,路由器,wifi,运营商等物理节点,传输内容存在被劫持的风险,劫持者还可以通过篡改传输信息发动中间人攻击。

https(HyperText Transfer Protocol over Secure Socket Layer)基于http增加了加密的机制。一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。 SSL(Secure Socket Layer)是1994年 Netscape 所研发的一种安全协议,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。基于 SSL,Netscape开发了TLS(Transport Layer Security)的最初几个版本(SSL 1.0、SSL 2.0、SSL 3.0),1999年TSL 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动比较大,还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。 Https通信过程中使用的到的主要技术有对称加密,非对称加密,数字证书等。 非对称加密 非对称加密一组密钥分为公钥和私钥,公钥加密的数据用私钥解谜,反之,私钥加密的数据使用公钥解密。 非对称加密的效率较低,所以https协议会在建立网络连接的时候产生随机的对称密钥,之后通过网站的公钥加密发给网站服务端,之后双方就可以通过这个约定的密钥进行对称加密 对称加密

对称加密需要信息传输双方持有一个相同的保密的密钥…
动态规划查看全文
动态规划最短路径示意图.gif
动态规划(Dynamic Programic)最早是运筹学的一个分支,是求解多阶段决策问题的一类方法。

多阶段决策问题值得是一类问题可以分解为若干个相互联系的阶段,每个阶段做出的决策不仅影响当前阶段,还会影响下一阶段的状态。反之,也可以理解为每个阶段决策的过程需要依赖前序阶段的结果。 在多阶段决策问题中,每个阶段决策结果确定构成了决策序列,多阶段决策问题就是使得决策序列中的策略总的收益最优。 动态规划用来解决多阶段决策过程中最优方案等问题的方法,其特点是将多位决策问题转换为几个一维的问题分别去解决。 动态规划中的基本概念有阶段,状态等,决策,策略,状态转移方程等。 动态规划解决的问题一般有下列特点: 动态规划一般分为确定变量,确定状态转移方程,确定边界条件等三个步骤。 确定状态和状态变量 分析问题特点,按照时间或者空间特征,将问题分为有序的若干阶段,因为动态规划是按顺序递推求解,所以阶段一定是可排序的。 确定问题每个阶段求解时的状态,确定所需要的变量。求解过程一般是确定dp数组以及下标的含义。 确定状态转移方程 分析决策过程,确定状态转移方程,决策和状态转移是相互联系的,状态是根据上一阶段状态以及当前决策变迁到当前状态的,所以确定决策就可以明确状态迁移方程,实际求解过程中,往往根据当前阶段和上一阶段的状态差异,推导决策过程。 确定边界条件 状态转移方程是递推的过程,所以需要确定递推的边界条件。因为递推过程是从前到后依次执行的,所以边界条件一般就是初始值。 爬楼梯问题 假如你在爬一个N层台阶的楼梯,每次可以爬一个或者2个的台阶,你有多少种不同的方式可以爬上楼梯呢?

确定状态变量,爬N层台阶,可以按照所在台阶的位置划分阶段…

热门分类

算法题库

精选内容