一直在路上..........
暂时未有相关通用技术能力~
阿里云技能认证
详细说明paxos的缺点 基于以下这些原因,zookeeper并没有用paxos作为自己实现的协议,取而代之采用了一种称为zab的协议,全称是zookeeper atomic broadcast。 活锁问题 在base-paxos算法中,不存在leader这样的角色,于是存在这样一种情况,即P1提交了...
排他锁(Exclusive Lock) 排他锁(Exclusive Lock) , 简称X锁。 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。
Undo 日志 比如A有200块钱, B有50 块钱,现在A要给B转100块” 。 (1) 开始事务 T1 (假设T1是个事务的内部编号) (2) A余额 = A余额 -100 (3) B余额 = B余额 + 100 (4) 提交事务 T1 会对此事务记录Undo的日志文件,记录下事务开始之前的他俩账号余额: [开始事务 T1] [事务T1, A原有余额,200] [事务T1, B原有余额,50] 如果事务执行到一半挂了,数据库重启以后我就根据undo的日志文件来恢复。
角色: A,B,Server,Client,中间窃听者,数字证书签发机构(CA) 工具:对称加密算法,非对称加密算法,数字签名,数字证书 第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
两将军问题 有两支军队,它们分别有一位将军领导,现在准备攻击一座修筑了防御工事的城市。 这两支军队都驻扎在那座城市的附近,分占一座山头。 一道山谷把两座山分隔开来,并且两位将军唯一的通信方式就是派各自的信使来往于山谷两边。
zk解决什么问题 分布式一致性问题 一致性一般定义是分布式系统中状态或数据保持同步和一致。实际上就是围绕着“看见”来的。谁能看见?能否看见?什么时候看见? 举个例子:淘宝后台卖家,在后台上架一件大促的商品,通过服务器A提交到主数据库,假设刚提交后立马就有用户去通过应用服务器B去从数据库查询该商品,就会出现一个现象,卖家已经更新成功了,然而买家却看不到;而经过一段时间后,主数据库的数据同步到了从数据库,买家就能查到了。
IP地址分类 互联网上的每个接口必须有一个唯一的 Internet 地址(也称作 I P 地址)。 IP 地址长 32 bit 。IP 地址具有一定的结构,五类不同的互联网地址格式。 区分各类地址的最简单方法是看它的第一个十进制整数,0,128,192,224,240。
JAVA SPI 约定如下:当服务的提供者提供了服务接口的一种实现之后,在jar包的META-INF/services/ 目录中同时创建一个以服务接口命名的文件,该文件中的内容就是实现该服务接口的具体实现类。
网卡 唯一的标志 MAC地址:14:21:S8:8B:44:89 昵称:TP-Link-4489 如何获取局域网IP? DHCP(动态主机配置协议) DHCP 服务器可以动态的分配地址。 1)网卡(TP-Link-4489)向局域网发送一个报文以获取自己在局域网中的IP地址。
Kafka架构 它的架构包括以下组件: 话题(Topic):是特定类型的消息流。消息是字节的有效负载(Payload),话题是消息的分类名或种子(Feed)名。 生产者(Producer):是能够发布消息到话题的任何对象。
常见的限流算法有:令牌桶、漏桶、计数器。 令牌桶限流 令牌桶是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌,填满了就丢弃令牌,请求是否被处理要看桶中令牌是否足够,当令牌数减为零时则拒绝新的请求。
基本思想 GAN全称生成对抗网络,是生成模型的一种,而他的训练则是处于一种对抗博弈状态中的。 譬如:我要升职加薪,你领导力还不行,我现在领导力有了要升职加薪,你执行力还不行,我现在执行力有了要升职加薪,通过这样不断的努力和被拒绝,最后的最后你要不离职了要不升职加薪了。
深度神经网络(DNN) 神经网络是一些被称作感知机的单元的集合,感知机是二元线性分类器。 如上图所示,输入 x1 和 x2 分别和各自的权重 w1 和 w2 相乘、求和,所以函数 f=x1*w1+x2*w2+b(偏置项,可以选择性地添加)。
AR介绍 AR全名扩增实境,是一种实时融合现实与虚拟的图像技术。 AR技术的三板斧:感知(寻找目标定位位置-与环境交互),渲染(实现产品交互-与客户交互),追踪(捕捉目标运动轨迹-客户环境上下文)。 目前很多照相软件都可以实时地让视频里的用户吐出狗舌头,戴上猫耳朵,画上萌萌的胡须,甚至有些软件可以让用户实现AR试妆。
java的NIO和AIO Buffer position、limit、capacity 初始化 Buffer 填充 Buffer 提取 Buffer 中的值 mark() & reset() rewind() & clear() & compact() Channel FileChannel SocketChannel ServerSocketChannel DatagramChannel Selector Buffer 一个 Buffer 本质上是内存中的一块,我们可以将数据写入这块内存,之后从这块内存获取数据。
Properties 注入 通过 xml 配置 通过 @PropertySource 配置 PropertyPlaceholderConfigurer PropertySourcesPlaceholderConfigurer Properties 的使用 在 xml 配置文件中使用 通过 @Value 注入使用 通过 Environment 获取 通过 application.
为什么需要内存?因为你们人类造不出来一个能够断电存储的, 大容量的, 访问速度快的,当然还要便宜的硬盘来。 如果能制造出来了, CPU就可以直接访问硬盘了, 就不需要利用多级缓存、直接内存访问、多进程/线程切换等方法缓解CPU-硬盘之间的速度差距太大的问题了。
在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多;但是一旦进入操作系统,程序员几乎可以定制所有方面。所以,这个部分与程序员的关系更密切。 主要关心的是Linux操作系统,它是目前服务器端的主流操作系统,大致需要以下步骤: 加载内核 启动初始化进程 确定运行级别 加载开机启动程序 用户登录 进入 login shell 打开 non-login shell 加载内核 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
boot的含义 boot原来的意思是靴子,这里的boot是bootstrap(鞋带)的缩写,它来自一句谚语:"pull oneself up by one's bootstraps"。 字面意思是"拽着鞋带把自己拉起来",这当然是不可能的事情。
比特币核心要点 账簿公开机制 身份与签名机制(公钥加密系统) 矿工组织(挖矿群体) 建立初始账簿(创世块) 支付与交易 比特币产生的动机 以物易物,互相间的贸易就是老张拿一袋面粉换老李一只羊。 实物货币,把黄金作为一般等价物,把其它物品和黄金的对应关系编成一张表格,例如一克黄金对应一只羊,一克黄金对应一袋面粉等等,拿着黄金去进行交易。
区块链特点 一种特殊的分布式数据库,没有管理员,彻底无中心 写入数据比较慢,要求实时的场景不适配 能耗比较大,选择使用时需评估成本和目的(公益还是盈利) 所有节点都全量存储数据,并同时支持读写 区块链的组成 区块链由一个个区块组成,区块很像数据库的记录,每次写入数据,就是创建一个区块。
哈夫曼编码 哈夫曼编码(Huffman Coding)是一种编码方式,也称为“赫夫曼编码”,是David A. Huffman1952年发明的一种构建极小多余编码的方法。在计算机数据处理中,哈夫曼编码使用变长编码表对源符号进行编码,出现频率较高的源符号采用较短的编码,出现频率较低的符号采用较长的编码,使编码之后的字符串字符串的平均长度 、期望值降低,以达到无损压缩数据的目的。
Prim Algorithm。这个算法可以分为下面几个步骤: 将顶点集V分成两个集合A和B,其中集合A表示目前已经在MST中的顶点,而集合B则表示目前不在MST中的顶点。 在B寻找与集合A连通的最短的边(u,v),将这条边加入最小生成树中。
机器学习最大的分支的监督学习和无监督学习,简单说数据已经打好标签的是监督学习,而数据没有标签的是无监督学习。 从大的分类上看,降维和聚类被划在无监督学习,回归和分类属于监督学习。 转自: https://my.oschina.net/taogang/blog/1544709 十大经典数据挖掘算法: http://www.cnblogs.com/en-heng/p/5035945.html 无监督学习 如果你的数据都没有标签,你可以选择花钱请人来标注你的数据,或者使用无监督学习的方法。
BFPRT算法的作者是5位真正的大牛(Blum 、 Floyd 、 Pratt 、 Rivest 、 Tarjan)。 BFPRT解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。
深度优先搜索算法(Depth-First-Search),是搜索算法的一种。它沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。
广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法。 简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。如果所有节点均被访问,则算法中止。BFS同样属于盲目搜索。
迪杰斯特拉算法是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。 算法思想:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。
随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来源,保留和流失,也可用来预测疾病的风险和病患者的易感性。 随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。
区间嵌套法原理 如果节点区间[clft, crgt]与[plft, prgt]存在如下关系:clft >= plft and crgt
在基于数据库的一般应用中,查询的需求总要大于删除和修改。为了避免对于树形结构查询时的“递归”过程,基于Tree的前序遍历设计一种全新的无递归查询、无限分组的左右值编码方案,来保存该树的数据。优点是查询非常的方便,缺点就是每次插入删除数据涉及到的更新内容太多,如果树非常大,插入一条数据可能花很长的时间。
闭包表的思路和物化路径差不多,都是空间换时间,Closure Table,一种更为彻底的全路径结构,分别记录路径上相关结点的全展开形式。能明晰任意两结点关系而无须多余查询,级联删除和结点移动也很方便。但是它的存储开销会大一些,除了表示结点的Meta信息,还需要一张专用的关系表。
在创建节点时,将节点的完整路径进行记录。 按照Path Enumeration 进行存储后的结果如下: 此种方案借助了unix文件目录的思想,主要时以空间换时间。 缺点: 树的层级太深有可能会超过PATH字段的长度,所以其能支持的最大深度并非无限的。
在程序开发中,我们常遇到用树型结构来表示某些数据间的关系,如企业的组织架构、商品的分类、操作栏目等,目前的关系型数据库都是以二维表的形式记录存储数据,而树型结构的数据如需存入二维表就必须进行Schema设计。
引子 考虑一个有序表:14->23->34->43->50->59->66->72 从该有序表中搜索元素 < 23, 43, 59 > ,需要比较的次数分别为 < 2, 4, 6 >,总共比较的次数 为 2 + 4 + 6 = 12 次。
B树 B-树就是B树,中间是横线不是减号。B树是一种多路平衡查找树。 B-树(Balance Tree),一个m阶的B树具有如下几个特征: 1.根结点至少有两个子女。 2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2
转自:http://wudashan.cn/2017/09/04/Company-Programming-Competition/ 深度优先搜索算法(对所有选项一视同仁) 递归遍历所有可能性,并找出所需的结果。
动态规划(Dynamic Programming)是一种分阶段求解决策略问题的思想。 动态规划中包含三个重要的概念: 最优子结构 F(10)=F(8)+F(9) 边界 n>=3 F(1)=1 F(2)=2 状态转移公式 F(n)=F(n-1)+F(n-2) 题目: 有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。
BloomFilter算法,是一种大数据排重算法。在一个数据量很大的集合里,能准确断定一个对象不在集合里;判断一个对象有可能在集合里,而且占用的空间不大。它不适合那种要求准确率很高的情况,零错误的场景。
调频96.8有一种游戏:游戏中,出题者写下一件东西,其他人需要猜出这件东西是什么。当然,如果游戏规则仅此而已的话,几乎是无法猜出来的,因为问题的规模太大了。为了降低游戏的难度,答题者可以向出题者问问题,而出题者必须准确回答是或者否,答题者依据回答提出下一个问题,如果能够在指定次数内确定谜底,即为胜出。
位图算法,内存中连续的二进制位bit,用于对大量整型数据做去重和查询。 举个例子,给定一块长度是10bit的内存空间,依次插入4,3,2,1,怎么存储? 1. 给定长度是10的bitmap,每一个bit位分别对应着从0到9的10个整型数。
一种用于寻找有效路径的算法。 一个7×5大小的迷宫,绿色的格子是起点,红色格子是终点,中间三个蓝色格子是墙。这里对于A*寻路的描述做了很大的简化。实际场景中可能会遇到斜向移动、特殊地形等等因素,有些时候需要对OpenList中的方格进行重新标记。
Base64是一种编码算法,因为这种算法只支持64个[可打印字符],所以叫做Base64。 为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。
信息摘要技术把明文内容按某种规则生成一段哈西值,即使明文消息只改动了一点点,生成的结果也会完全不同。 MD5(Message-digest algorithm 5)就是信息摘要的一种实现,它可以从任意长度的明文字符串生成128位的哈希值。
一种生成信息摘要的算法。主要用于数据一致性和完整性的校验 SHA算法分很多版本,最大的分类是SHA-1和SHA-2。SHA-2包括很多子版本,SHA-224,SHA-256,SHA-384,SHA-512。
假设有一个发送方在向接收方发送消息。如果没有任何加密算法,接收方发送的是一个明文消息:“我是小灰”。 如果消息被中间人截获到,即使中间人无法篡改消息,也可以窥探到消息的内容,从而暴露了通信双方的私密。 具体工作的步骤如下: 1.发送方利用密钥123456,加密明文“我是小灰”,加密结果为TNYRvx+SNjZwEK+ZXFEcDw==。
ACID 理论 关系型数据库具有解决复杂事务场景的能力,关系型数据库的事务满足 ACID 的特性。 Atomicity:原子性(要么都做,要么都不做) Consistency:一致性(数据库只有一个状态,不存在未确定状态) Isolation:隔离性(事务之间互不干扰) Durability: 永久性(事务一旦提交,数据库记录永久不变) 具有 ACID 特性的数据库支持数据的强一致性,保证了数据本身不会出现不一致。
字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。
连通性问题 比如随意给你两个点,让你判断它们是否连通?或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。 以下面这组数据输入数据来说明 4 2 1 3 4 3 第一行告诉你,一共有4个点,2条路。
HyperLogLog HyperLogLog 可以接受多个元素作为输入,并给出输入元素的基数估算值: • 基数:集合中不同元素的数量。比如 {'apple', 'banana', 'cherry', 'banana', 'apple'} 的基数就是 3 。