AJW's Blog

脚踏实地,仰望天空

Muduo学习笔记

多线程网络库

很想了解服务器端的一些知识,但nginx这种代码让我直接来看估计是受不了的,而且是C。 muduo是陈硕编写的一款开源C++网络库,据说性能以及实现上都不错,而且有配套书《Linux多线程服务端编程:使用muduo C++网络库》,正好结合看一下源码,涨涨计算机网络和服务器端的姿势。 Reactor Reactor是广泛应用于服务器中的一种设计模式,它是一种事件驱动模型,常见结构如下 ...

GBDT和Xgboost

两个重要的模型

GBDT和Xgboost可以说是目前比较流行的机器学习模型,在各大比赛中也是大放异彩,借着毕设以及天池智能制造比赛的机会,也深入了解了一下。 首先要明确一点,两者都是以树模型为基础的,所以本质上还是在节点分裂的时候,如何选择分裂点,分裂的依据是什么。 两者可以说都是Boosting算法的具体实现,而且十分相似,这里主要比较一下两个模型的不同点(主要讲回归),而对于模型的具体算法和推导过程...

天池智能制造比赛总结

玄学比赛?

​ 开题忙完之后参加了这个天池的工业AI智能制造预测大赛, 也算是自己真正从头到尾完整参加的第一个数据类的比赛(哈哈之前感觉都是在抱别人大腿),结果最后这比赛有点玄学,B榜换数据之后排行榜大变,而且成绩都降了很多,最终自己排在了155/2529,没进复赛。至于小号测数据、数据质量差等就不想说了,毕竟还是有一些大佬A、B榜的成绩都不差的,所以肯定还是有些办法能让模型的稳定性和泛化性很好,这些只...

最短路径&最小生成树&差分约束系统

图中与最短距离相关的经典问题

最短路问题 Dijkstra算法 Dijkstra应该是最经典点的单源最短路算法了,算法的思想是通过不断搜罗已经确定了最短路的顶点,然后更新该点邻接点的最短距离。这里就不多做解释了,下面是dijkstra的伪代码,需要注意的是Dijkstra不能解决有负边的情况。算法复杂度\(O(\|V\|^2 + \|E\|)\), V为顶点数,E为边数。 Floyd-Warshall算法 F...

STL源码学习

C++的书也看了几本了,除了最开始的《C++ Primer》让自己初步了解了C++的基本语法,《Effective C++》和《深度探索C++对象模型》基本都没记住太多东西,感觉还不是很适合我这种入门的门槛还没跨过去的人,这些书应该适合有一定代码量之后再去学习。所以,自己有了非常强烈的意愿想去写点C++的代码,或者看看别人的C++代码到底是怎么写的。知乎上看到有人推荐自己实现一遍STL的源码...

隐马尔可夫模型

最近看论文又看到了隐马尔可夫模型(Hiden Markov Model, HMM),几个月前曾经了解了一些HMM的基本原理,但是现在又有些模糊了。好记性不如烂笔头啊,还是系统梳理一下HMM的知识,毕竟是个挺常用的模型。 基本概念 ”隐马尔可夫模型“是一个关于时序的概率模型, 简单来说,就是一个隐藏的马尔可夫链,由初始状态开始,随机生成不可观测的状态序列,而每个状态又会随机产生一个观测值,...

红黑树

一种二叉平衡树的变形

红黑树是一种特殊的二叉查找树,它在二叉查找树的基础上,在每个节点增加了一个表示颜色(红和黑)的量,使得其可以基本保持平衡,但又不需要像平衡二叉查找树那样在平衡操作上花费很多时间。STL以及Linux内核中平衡树的实现采用的都是红黑树,所以,了解红黑树的基本原理还是很重要的。 (题图Photoed by Luis Llerena) 前置知识 二叉查找树 二叉查找树(Binary Sea...

MongoDB分片

MongoDB分片(sharding)是指将数据拆分,分散在不同机器上的过程,是一种横向扩展。它可以使得我们不需要配置强大的服务器就可以存储更多的数据,处理更大的负载。分片是Mongo最复杂的配置方式,这里记录一些分片的知识点和注意问题。 分片集群的组件 一个分片集群包含三种组件: 分片服务器(shard) 路由服务器(mongos) 配置服务器(config serve...

B/B+树与数据库索引

学得更深一些

数据库索引是提高数据库性能的一个十分重要的工具,数据库索引究其根本是一种数据结构,目前大部分数据库的索引都是以B+树来实现的,当然也有部分是通过哈希表。之前在使用索引的时候,只知道索引好比一本书的目录一样,可以提高数据查询的性能,但是对其实现原理并不是很了解,所以这里深入了解一下B/B+树以及数据库索引的实现原理。 B树 B树的定义 B树简单来说就是一棵多叉的平衡查找树,m(m&g...

Mongodb副本集

数据冗余,降低风险

副本集(Replica Set)的存在可以提高系统的稳定性,以防单台服务器上的数据丢失。在某些情形下,副本集的存在可以提升用户读取数据的性能,因为用户可以发送请求到不同的数据服务器上。而且在实际的生产部署过程中,都是要以副本集为基础的。这里记录一些mognodb副本集的注意事项。 副本集的组成 副本集由主节点(primary)、从节点(secondaries,或许应该翻译成复制节点,...