2017-09-14 Alex Sun
1. K-Means K-Means 是一种聚类算法,属于无监督学习。其算法非常简单。 输入是: 聚类数 $$ K $$ 样本 $$ x^{(1)},x^{(2)},...,x^{(m)} $$ 算法过程: 随机初始化 $$ K $$ 个聚类的中心点 $$ \mu_1,\mu_2,...,\mu_K $$ 重复如下过程: 对于每个样本,选择离该样本最近的聚类中心点 $$ \mu_k $$,将该样本标记为第 $$ k $$ 类 对于每个聚类,更新该聚类的中心点 $$ \mu_k $$ 为所有该聚类的点的中心 继续阅读 »
2015-03-09 derekchan
1、面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。 2、策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 继续阅读 »
2015-03-18 derekchan
前面讲到了工厂模式,今天来讲讲策略模式,工厂模式只是单纯的封装了行为。使用策略模式能把算法对象分别封装起来,让它们之间可以互相替换,减少了各种算法类与使用算法类之间的耦合。 我们来看看策略模式是怎么工作的: [][1] 继续阅读 »
2016-02-04 ruki
TBOX的内存管理模型,参考了linux kernel的内存管理机制,并在其基础上做了一些改进和优化。 内存整体架构 large_pool 整个内存分配的最底层,都是基于large_pool的大块内存分配池,类似于linux的基于page的分配管理,不过有所不同的是,large_pool并没有像linux那样使用buddy算法进行(2^N)*page进行分配,这样如果需要2.1m的内存,需要分配4m的内存块,这样力度太大,非常浪费。 因此large_pool内部采用N*page的基于page_size为最小粒度进行分配,因此每次分配顶多浪费不到一页的空间。 而且如果需要的内存不到整页,剩下的内存也会一并返回给上层,如果 继续阅读 »
2016-08-03 ruki
tbox内部提供了两种定时器实现:timer和ltimer timer: 高精度版本,采用最小堆实现,复杂度是:O(log(n)) ltimer: 低精度版本,采用linux内核中的timing-wheel算法,复杂度是:O(1) 这里主要讲解下,如何使用timer实现高精度的定时器任务,精确到ms级别,对于低精度的ltimer,可以参考:低精度定时器的使用 下面先给个简单的例子来说明: ```c /* 定义一个定时器任务处理函数 * * @param killed 表示当前任务是否被tb_timer_task_kill强行kill掉的 * @param priv 投递任务时传入的用户自定义数据指针 */ stat 继续阅读 »
2016-12-17 jude
下面用一句话来描述今年作为程序员的我: 我享受编程的乐趣,也想用自身所学,做个有一点受众的产品。 以前对算法和数据结构只有零零碎碎的印象,年初有幸看到《算法第 4 版》这本书,对算法和数据结构有了整体的认知。2、3月份那段时间每天一边细看,一边手写书上的代码加深理解,还顺便学习 java 。以我粗浅的眼光来看, java 的接口和泛型对团队合作来说是好东西。 继续阅读 »
2013-05-26 Zhang zhengzheng
《编程珠玑》这本书读完感觉很诡异,在读的过程中感觉很有收获,但是却说不清从书中获得了什么,好像什么也没读懂。说实话,很难对这本书归类,有时它告诉你的是实际操作的性能问题,有时又在讲算法或者数据结构。不过确切的说,它告诉我们的是一种无招胜有招的境界。无论是实际操作、算法还是数据结构都是在为项目服务的,我们的目的只有一个,那就是完成项目。 一个项目与一个科研课题的区别就是它需要被实践,需要一种行之有效的解决方案。在一个系统被部署到实际环境中时,有时可能需要它无比精准,有时是快速运行,有时是超低成本,或者也有可能是兼而有之的权衡。此时工程师就需要调整一切可以调整的东西去满足这些需求,这些东西自然就是硬件环境、算法、数据结构了。作者Jon 继续阅读 »
2015-11-11 张炎泼
Paxos 已经逐渐被承认是分布式系统中不可缺少的核心算法, 越来越多的分布式系统都是以paxos或其变种来达到强一致性的. 本文是一篇paxos入门教程, 从基本的分布式中的问题: 主从复制,quorum-rw等算法出发, 通过逐步解决和完善这几个问题, 最后推导出paxos的算法. 继续阅读 »
2020-11-30 Robin Wen
文/Robin 2020 年 11 月 30 日,由匿名团队推出的算法稳定币项目 Basis Cash 正式上线,也已在 GitHub 上开源代码。Basis Cash 系统中存在三种类型的资产,BAC(Basis Cash)是一种稳定币,与美元价格挂钩;BAB (Basis Bonds)是当 BAC 小于 1 美元时由系统发行的 IOU 以回购 BAC,当 BAC 回归到 1 美元时,BAB 将以 1 美元赎回;BAS(Basis Shares)可以收取系统中铸币税的盈余。 在 Basis Cash 之前,还有个项目叫做 Basis。Basis 是一个早期 DeFi 算法稳定币项目,最初设想是创建一个适合所有人的公平的经济 继续阅读 »
2016-10-12 曹强
模版方法是一种只需要使用继承就可以实现的非常简单的模式。他由两部分组成,第一部分是抽象父类,第二部分是具体实现子类。通常在抽象父类中封装了子类的算法框架,包括实现一些共用方法以及封装子类所有方法的执行顺序。子类通过继承这个抽象类,也继承了整个算法结构,并且可以选择重写父类的方法。 Coffee or Tea 假设我们现在要泡一杯咖啡步骤如下: * 把水煮沸 * 用沸水冲泡咖啡 * 把咖啡倒进杯子 * 加糖和牛奶 泡茶的步骤: * 把水煮沸 * 用沸水浸泡茶叶 * 把茶水倒进杯子 * 加柠檬 经过比较,我们可以发现泡茶和泡咖啡有以下共同点: 原料不同。一个是茶一个是咖啡,但是我们都可以把它们抽 继续阅读 »