Liangjf

The darkest hour is that before the dawn.

排序算法

插入排序

排序算法之插入排序 1.插入排序介绍 工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 插入排序是基于比较的排序。这类排序,有两种基本的操作:①比较操作; ②交换操作 ①比较操作:元素之前的大小比较 ②交换操作:一般的交换操作需要三次赋值,但可以优化为移动+替换操作,因为其只需要一次赋值。 2.插入排序算法分析 1.从第一个...

tinyhttpd

源码分析

tinyhttpd源码分析 tinyhttpd是一个轻量级的http服务器,代码量只有500多行的源码,但麻雀虽小五脏俱全,通过对其源码分析,能够对http从请求到服务器响应,都有一个完整的了解。 在分析源码前,先对http有一定的了解,请看下面内容。 HTTP 消息结构 HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议...

品味ZooKeeper

客户端对比选择

品味Zookeeper之客户端对比选择 本文思维导图 使用框架的好处是自带一套实用的API,但是Zookeeper虽然非常强大,但是社区却安静的可怕,版本更新较慢,下面会先从zookeeper原生API的不足说起,然后引出现在流行的开源客户端工具。 1.原生API 1.创建连接的时候是异步的,所以我们在开发的时候需要人工的写代码等待创建节点的状态,如果需要的话。 2.连接时无...

品味ZooKeeper

选举及数据一致性

品味Zookeeper之选举及数据一致性 本文思维导图 前言 为了高可用和数据安全起见,zk集群一般都是由几个节点构成(由n/2+1,投票机制决定,肯定是奇数个节点)。多节点证明它们之间肯定会有数据的通信,同时,为了能够使zk集群对外是透明的,一个整体对外提供服务,那么客户端访问zk服务器的数据肯定是要数据同步,也即数据一致性。 zk集群是Leader/Follower模式来保证数据同...

蓝牙连接性能测试工具

Android Bluetooth

蓝牙连接自动测试工具 1.需求产生 开发不按着需求走都是耍流氓且浪费时间。此工具的需求产生是研发人员在开发产品时涉及到蓝牙驱动和安卓蓝牙两个东西。但是呢,蓝牙不太稳定,那么工作来了。就需要研发人员一边开发,一遍测试(用产品的安卓app一直按连接,产品设备重启,安卓app再连接蓝牙,再重启产品设备………..一直循环这个过程),这个过程是无聊且没意义的。我们作为程序员肯定是要偷懒的啊。因此就有...

数据挖掘

回归算法

本文思维导图 1.什么是回归? 回归分析是在一系列的已知或能通过获取的自变量与因变量之间的相关关系的基础上,建立变量之间的回归方程,把回归方程作为算法模型,通过其来实现对新自变量得出因变量的关系。因此回归分析是实用的预测模型或分类模型。 凡事皆有因果关系,解读“回归”二字,其实就是由因回溯果的过程,最终得到的因与果的关系,就称为回归。回归其实就是一个名词,没有特别的含义。 下面用...

品味ZooKeeper

Watcher机制

品味ZooKeeper之Watcher机制 本文思维导图如下: 前言 Watcher机制是zookeeper最重要三大特性数据节点Znode+Watcher机制+ACL权限控制中的其中一个,它是zk很多应用场景的一个前提,比如集群管理、集群配置、发布/订阅。 Watcher机制涉及到客户端与服务器(注意,不止一个机器,一般是集群,这里先认为一个整体分析)的两者数据通信与消息通信...

数据挖掘

TF-IDF文本相似度

我们在比较事物时,往往会用到“不同”,“一样”,“相似”等词语,这些词语背后都涉及到一个动作——双方的比较。只有通过比较才能得出结论,究竟是相同还是不同。但是万物真的有这么极端的区分吗?在我看来不是的,生活中通过“相似度”这词来描述可能会更加准确。比如男人和女人,虽然生理器官和可能思想有些不同,但也有相同的地方,那就是都是人,就是说相似度不为0;比如石头与小草,它们对于虚拟类都是一种实体类,...

HDFS

架构和设计

“🙉🙉” HDFS尽在一图中

代码审查

Upsource

upsource 从零搭建代码审查平台,需要的不仅是把代码审查的工具搭起来,还要结合公司情况制定一系列的代码审查规范。下面是对选择的upsource web端代码审查工具的安装及介绍。详细的请看这篇文档。 1.安装方法 1、下载地址 http://www.jetbrains.com/upsource/ 2、如果是Linux 修改 /etc/security/limits.con...