算法
文章平均质量分 90
geniushuai
这个作者很懒,什么都没留下…
展开
-
LinkedList 的实现原理
简单的一个类就直接说了。LinkedList 的底层结构是一个带头/尾指针的双向链表,可以快速的对头/尾节点 进行操作,它允许插 入所有元素,包括 null。 相比数组(这里可以对比ArrayList源码分析进行查看),链表的特点就是在指定位置插入和删除元素的效率较高,但是查找的 效率就不如数组那么高了。如果熟悉双向链表这个数据结构,其实就很简单了,无非就是实现一些数据的添加,删除,查询,遍历等功能,双向链表的结构图如下:每一个数据(节点)都包含3个部分,一个是数据本身item,一个是指..原创 2021-02-18 16:52:10 · 1021 阅读 · 0 评论 -
一文读懂两台计算机之间是如何通信的
前言计算机网络的知识点非常杂乱且琐碎,非常容易让人产生畏惧心理。其实计网通篇研究的核心就是不同计算机之间的通信过程,???? 本文将从小白的角度,讲解两台计算机之间是如何精确的找到对方的位置并发送和接收消息的,以帮助读者从宏观角度把握计算机网络的体系结构。1. 五层协议参考模型所谓通信协议就是通信双方都必须要遵守的通信规则。如果没有网络通信协议,计算机的数据将无法发送到网络上,更无法到达对方计算机,即使能够到达,对方也未必能读懂。有了通信协议,网络通信才能够发生。一般我们用五层协议参考模原创 2021-02-17 13:51:53 · 5958 阅读 · 2 评论 -
动态规划算法
简单理解:在一些分治算法解决的问题中,需要将较大规模的问题转化为较小规模的问题,往往会用到递归。但是在一些问题中,递归的小问题被多次重复运算,浪费了性能,因此可以使用数组或者其他合适的方式将运算过的小规模问题的结果记录下来,再运算小规模的问题时先看是不是已经运算过了,没有运算过再去运算并将结果保存,所以一般分治算法都是从大规模问题开始递归运算,不断将问题规模变小,而动态规划算法则一般从小规模问题开始运算,每次运算分解出的小规模问题都是已经运算过的。如此便使用了存储空间换取了运算时间,减小了时间复杂度。二原创 2021-02-16 13:35:56 · 210 阅读 · 0 评论 -
高性能网络通讯笔记
前几天看了下阿里巴巴 RPC 框架 Dubbo 作者的内部分享,这里记下笔记。传统rpc的问题java序列化,性能低 每连接每线程,BIO有性能问题 jdk代理性能低数据协议应用层协议 header字段: magic high magic low — 端口复用,多协议支持;兼容其他协议。 序列化方式 event 是否双向 请求还是响应 status id – futureMap保存所有发送的请求,响应中携带请求id,实现一一对应 使用int id替换lo原创 2021-02-12 19:03:47 · 139 阅读 · 0 评论 -
动态规划算法剖析
最优化原理 1951年美国数学家R.Bellman等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解决。一些静态模型,只要人为地引进“时间”因素,分成时段,就可以转化成多阶段的动态模型,用动态规划方法去处理。与此同时,他提出了解决这类问题的“最优化原理”(Principle of optimality): “一个过程的最优决策具有转载 2007-12-07 09:01:00 · 721 阅读 · 0 评论 -
对动态规划原理理解的例子,先看看这个在看看动态规划剖析
1.1 多阶段决策过程的最优化问题1、问题的提出首先,例举一个典型的且很直观的多阶段决策问题:[例] 下图表示城市之间的交通路网,线段上的数字表示费用,单向通行由A->E。求A->E的最省费用。如图从A到E共分为4个阶段,即第一阶段从A到B,第二阶段从B到C,第三阶段从C到D,第四阶段从D到E。除起点A和终点E外,其它各点既是上一阶段的终点又是下一阶段的起点。例如从A到B原创 2007-12-07 09:37:00 · 1095 阅读 · 0 评论 -
对动态规划和贪心算法的一点理解
求最优解的问题,从根本上说是一种对解空间的遍历。最直接的暴力分析容易得到,最优解的解空间通常都是以指数阶增长,因此暴力穷举都是不可行的。最优解问题大部分都可以拆分成一个个的子问题,把解空间的遍历视作对子问题树的遍历,则以某种形式对树整个的遍历一遍就可以求出最优解,如上面的分析,这是不可行的。贪心和动态规划本质上是对子问题树的一种修剪。两种算法要求问题都具有的一个性质就是“子问题最优性”。即转载 2007-12-07 09:39:00 · 749 阅读 · 0 评论