数据结构
文章平均质量分 64
个人渣记录仅为自己搜索用
不盈利,只为分享,转载.
找到的原版url的,尽量会贴原版url.
如有版权侵犯,请留言删除.
展开
-
音视频相关知识点介绍
FreeSwitch 电话会议框架. 混音 前四个传输.webrtc 和对应服务端. 音频只需要传大的几流. 视频是用户自己选的. 16方. 可能没有摄像头.跨国会议的需要服务端之间转发,需要有一个zk来进行会议的所在服务器记录.下行通道每个通道占用服务端一个端口. 好处是跨国会议时,可以在不同的服务器获取对应的数据,不需要服务器之间将视频流转发. 因为流量太贵. 满就满点.难点在...原创 2019-11-28 20:14:09 · 205 阅读 · 0 评论 -
嵌套关系结构体的设计(孩子,父亲,树)
节点本身的信息.节点关联信息.这两个信息最好分开. 这样可以更好的面对业务扩展和组合.具体描述如下:public class RoomGroupVO { public Long id; /** * 分组名称 */ public String name; /** * 父分组id,空则填0 */ pub...原创 2019-08-30 21:13:56 · 333 阅读 · 0 评论 -
equals和hashcode
使用Apache工具类重写equals和hashcodeimport lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import org.apache.commons.lang.builder.EqualsBuilder;import org.apache.commons.la...原创 2019-01-24 15:33:41 · 156 阅读 · 0 评论 -
一次重构演示. 核心点: 1. 细节业务流程 2.对象
打印日志和耗时,是任何普通程序员都会遇到的场景.1. 最普通的代码 long start=getTime(); xxx.invoke();long end=getTime();2. 抽象下,你想干嘛.打印日志和耗时. 1. 取个工具对象 RequestLog.把 start和end属性都放置到对象上去.RequestLog{ long start;long end;}2. 这个对象的生命周期是...原创 2018-04-10 19:27:54 · 318 阅读 · 0 评论 -
模块递归拆分法: 设计模式 设计原则,复杂层次设计举例。系统重构 装饰模式,门面模式,代理模式
程序员最牛逼的能力是模块拆分能力,然后才能利用模块依赖的工具,java 9 或者 runtime期的osgi ,其他maven插件,maven build期. 其他idea插件,类似阿里云的代码规范检查. Modularity—the result ofProject Jigsawhttps://www.oracle.com/corporate/features/understan...原创 2018-04-10 11:51:52 · 1227 阅读 · 1 评论 -
Merkle Tree(默克尔树)算法的 查询(不是查询节点用的,而是查询错乱节点),新建,更新
fei33423 Merkle Tree 注意比特币的 tree , spv 简单支付证明,先通过服务端找到交易的块. 即证明了.Merkle Tree概念Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。[1] phil 注: 这张图,有...转载 2018-03-09 21:12:18 · 3478 阅读 · 0 评论 -
java 排序 Array.sort
phil总结: 1. 理解可以原数组,新空数组来理解 2. 编写代码时还是要以只有一个数组为前提,顶多有一个哨兵对象. 例如 编程实现难点: a. 虽然都知道快排是先找到一个基准值,小的放左边,大的放右边. 但是遍历完之前你怎么知道左边留几个数组,右边留几个?如果是链表的话可能会简单点,是数组的话答案是顺其自然,编程的精妙所在! 所以才有了快排的i,j,导致一下子i++, 一下子j--. b转载 2018-01-16 23:29:25 · 549 阅读 · 0 评论 -
经过线上实战的redis 分布式锁与zookeeper分布式锁区别
经过线上实战的redis 分布式锁代码。 能用,但是性能较差。已考虑: 1.只能被拥有锁的线程解锁 2. 设置节点和超时时间用同一个key未考虑:1. 不能重入2. 没有本地锁,并发性能会比较差,不使用用在并发争锁较多的场景下。本地锁非自旋3. 未考虑锁等待排序. 这个是redis很难实现的. 可以通过redis原创 2016-03-18 13:57:46 · 12509 阅读 · 3 评论 -
从2-3树到 红黑树
原文: 查找(一)史上最简单清晰的红黑树讲解二叉查找树由于可能会非常的不均衡. 所以用2-3树. 采用上上浮的方法,顶多多两倍节点数. 红黑树一直是数据结构中的难点,大部分关于算法与数据结构的学习资料(包括《算法导论》)对于这部分的讲解都是上来就下定义,告诉我们红黑树这个性质那个性质,插入删除要注意1234点,但是基本没有讲为什么这样定义红色和黑色,让人理解起来十分费力。...转载 2018-01-22 19:57:44 · 16369 阅读 · 7 评论 -
原码, 反码, 补码 详解
原码, 反码, 补码 详解同余的概念时钟回拨2小时 = 前拨10小时转载 2017-11-23 13:56:26 · 195 阅读 · 0 评论 -
cap解释
分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)● 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)● 分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据原创 2016-04-12 16:42:49 · 643 阅读 · 0 评论 -
定时任务调度--时间轮应用
面对问题: 时时刻刻产生订单。需要定时任务扫描。相对间隔是1 2 4 10 ,一期需求是倍数是30秒,每隔 30秒,1分钟,2分钟,5分钟去执行一次。 方案: 1. 定时任务没隔30秒跑一次,记录每个订单的执行次数。时间间隔相对值 算法简单,缺点。 优点:调度频率通过定时任务频率去控制。 缺点原创 2016-04-11 19:25:31 · 1830 阅读 · 2 评论 -
时间轮定时器 算法作用和升序定时器比较
l 时间轮的概念 关于定时器有很多种,有基于升序的定时器时间链表,但是这种链表存在效率的不足,就是当插入定时器的时候时间复杂度是O(n).今天,我们来认识一下高性能定时器时间轮。 如上图所示,就是一个时间轮的基本轮廓。一个轮子上有很多槽slot,每一个槽指向一个定时器链表,这个链表是无序的。时间轮每转动一步就会指向下一个槽,其实也可以理解为一个滴答时间成为时间轮的槽间隔si (s转载 2016-03-11 00:06:05 · 2169 阅读 · 0 评论 -
含开始时间,截止时间的规则缓存方案--- 类似时间轮理念,连续变片段化
互联网产业总有一些解决方案比较技巧。规则引擎,需要保存规则,然后提供规则查询。规则可能有开始截止时间。1. 一种是直接查询, select * from rule where start_time ${now} and ruleName=123 and cityId=321 这样子将导致sql查询比较频繁。2. 第二种,缓存,将 ruleName和city原创 2016-03-17 11:29:48 · 1012 阅读 · 0 评论 -
Dijkstra 图最短路径算法
关键是:下一次能触碰到的距离最短节点.就像人去搜索. 1.先找到离自己最近的点. 2. 然后再在(2.1 自己临接的点)和(2.2 最近点临接的点)中找到下一个距离最近的节点.http://wenku.baidu.com/view/370cf661caaedd3383c4d38b.html?from=search 最短路径算法http://wenku.baid转载 2015-09-28 22:47:58 · 706 阅读 · 0 评论 -
什么是数据结构
我思考一个问题, 与数据库的批量化交互, 我们获取的是一个 getMaterials() ,现在想利用materials获取到对应的Materials ; 首先获取到对应的ListIds ,可以对每个Materials实现接口, 不同的实体都实现这个接口以实现接口多态;; 然后通过sql批量获取;2. 如果一个实体是 复合主键怎么办,一开始是想 得到两个 Long-field1_Long-fi原创 2013-07-30 21:55:42 · 877 阅读 · 0 评论