自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 动态规划

思想动态规划是一种用来解决一类最优化问题的算法思想过。它将一个复杂的问题分解为若干个子问题,通过综合子问题的最优解来得到原问题的解。概念如果一问题可以被分解为若干个子问题,且这些子问题会重复出现,那么就称这个问题拥有重叠子问题如果一问题可以由其子问题的最优解有效地构造出来,那么称这个问题拥有最优子结构。一问题必须拥有重叠子问题和最优子结构,才能使用动态规划去求解。动态规划必须设计一个...

2020-03-31 09:36:36 185

原创 KMP字符串匹配

void getNext(char S[], int len){ int j = -1; next[0] = -1; for(int i = 1; i < len; i++){ while(j != -1 && s[i] != s[j+1]){ j = next[j]; } if(s[i] == s[j+1]){ j...

2020-03-29 11:57:45 151

原创 最大回文子串

暴力方法O(n^3)#include <iostream>#include <cstdio>#include <string.h>#include <algorithm>using namespace std;int maxN = 1010;bool isHuiWen(string temp){ int size = temp...

2020-03-29 10:41:01 181

转载 b+树索引

面试问题数据库索引的存储结构一般是B+树,为什么不适用红黑树等普通的二叉树?由于 B+ 树分支比二叉树更多,所以相同数量的内容,B+ 树的深度更浅,深度代表什么?代表磁盘 io 次数啊!数据库设计的时候 B+ 树有多少个分支都是按照磁盘一个簇上最多能放多少节点设计的啊!原理B+树的插入操作1)若为空树,创建一个叶子结点,然后将记录插入其中,此时这个叶子结点也是根结点,插入操作结束。2...

2020-03-26 20:15:36 134

转载 日志恢复

背景知识在开始阐述Aries是什么之前,需要先交代几个常识性的概念,作为引出Aries的铺垫。数据库体系结构图1大致描述了一个(分布式)数据库应该包含的组件,其中箭头方向大致描述了一个请求被处理的顺序。一个请求(以DML为例),会先经过Query Process层进行解析、优化处理,最终生成物理执行计划(就是用具体的算法替换逻辑计划里的各个算子),交由执行引擎Excutor Engine进...

2020-03-26 15:20:04 795

转载 严格二段锁协议实现

原理DBMS包含一个锁管理器,用于决定事务是否可以锁定。 它了解系统内部的最新情况。共享锁(S-LOCK):允许多个事务同时读取同一对象的锁。 如果一个事务持有共享锁,则另一个事务可以获取该共享锁。独占锁定(X-LOCK):允许事务修改对象。 此锁与任何其他锁不兼容。 一次只能有一个事务持有独占锁。使用锁执行:1.事务从锁管理器请求锁(或升级)。2.锁管理器根据其他事务当前持有的锁...

2020-03-26 13:27:17 3894 1

转载 事务并发控制

在学习几年编程之后,你会发现所有的问题都没有简单、快捷的解决方案,很多问题都需要权衡和妥协,而本文介绍的就是数据库在并发性能和可串行化之间做的权衡和妥协 - 并发控制机制。如果数据库中的所有事务都是串行执行的,那么它非常容易成为整个应用的性能瓶颈,虽然说没法水平扩展的节点在最后都会成为瓶颈,但是串行执行事务的数据库会加速这一过程;而并发(Concurrency)使一切事情的发生都有了可能,它能...

2020-03-26 10:03:18 1147

转载 事务,并发,日志综述

事务是数据库系统中的重要概念,了解这一概念是以正确的方式开发和数据库交互的应用程序的前提。但是很多开发者对于事务的认识相对片面和肤浅,仅仅把它等同于ACID,不了解数据库系统引入事务的真正动机,ACID对于事务意味着什么以及最重要的:数据库系统是如何保证事务的ACID特性的?以下所有内容都是针对单机事务而言,不涉及分布式事务相关的东西!关于事务原理的讲解不针对具体的某个数据库实现,所以某些地...

2020-03-26 09:53:16 221

原创 磁盘管理器

作用从磁盘上读写页面和日志。代码头文件class DiskManager {public: DiskManager(const std::string &db_file); ~DiskManager(); void WritePage(page_id_t page_id, const char *page_data); void ReadPage(page_i...

2020-03-25 20:48:38 274

原创 数据库页面缓冲池

缓冲池原理对于数据库管这种对性能要求极高的系统而言,缓存自然是不可少的。数据库中的缓存称为缓冲池,缓冲池存在的唯一目的就是提高数据库系统性能。缓冲池本质上是分配给数据库管理器管理的一块***内存空间***,用于读写数据页。(包括表行和索引数据页。内存中表行数据页称为缓存表)由于从内存访问数据比从磁盘访问数据快得多(访问磁盘是典型的I/O操作,一次I/O大概耗时0.0125S),通过将部分常用或...

2020-03-25 20:29:23 944

原创 LRU页面置换

原理LRULRU是一种页面置换算法,在对于内存中但是又不用的数据块,叫做LRU,操作系统会根据那些数据属于LRU而将其移出内存而腾出空间来加载另外的数据LRU算法:最近最少使用,简单来说就是将数据块中,每次使用过的数据放在数据块的最前端,然后将存在的时间最长的,也就是数据块的末端的数据剔除掉这就是LRU算法如果进程被调度,该进程需要使用的外存页(数据)不存在于数据块中,这个现象就叫做缺页。...

2020-03-25 19:48:13 719

原创 extendible Hash

原理静态散列要求桶的数目始终固定,那么在确定桶数目和选择散列函数时,如果桶数目过小,随着数据量增加,性能会降低;如果留一定余量,又会带来空间的浪费;或者定期重组散列索引结构,但这是一项开销大且耗时的工作。为了应对这些问题,为此提出了几种动态散列(dynamichashing)技术,可扩展动态散列(extendable hashing)便是其一。一、可扩展动态散列A)用一个数组来存储桶指针...

2020-03-25 19:34:34 3150 3

转载 sqlite3

一、版本从 www.sqlite.org 网站可下载到最新的 sqlite 代码和编译版本。写此文章时,最新代码是 3.3.17 版本。二、基本编译把 sqlite3.c 和 sqlite3.h 添加到工程,再新建一个 main.cpp文件。在里面写:extern "C"{#include "./sqlite3.h"};int main( int , char** ){...

2020-03-25 00:01:04 386

原创 关键路径

算法理论AOV网与AOE网AOV网(Activity On Vertex):顶点表示活动,边表示活动间的优先关系的有向无环图;AOE网(Activity On Edge):带权的边表示活动,而用顶点表示事件的有向无环图;边权表示完成活动需要的时间;AOE网中的最长路径被称为关键路径,关键路径上的活动称为关键活动,关键活动会影响整个工程的进度理解:关键路径的定义是AOE网中的最长路径,为...

2020-03-20 19:11:54 240

原创 拓扑排序

算法步骤定义一个队列Q,并把所有入度为0的结点加入队列取队首结点,输出。然后删去所有从它出发的边,并令这些边到达的顶点的入度减1.返回步骤2,直至队列为空。如果队列为空时入过队的结点数目恰好为N,说明拓扑排序成功,否则失败。算法代码const int maxn = 10010;vector<int> Adj[maxn]; //邻接表int in_degree[max...

2020-03-20 15:34:10 104

原创 最小生成树

Prim 算法算法理论Prim算法的思想1)清空生成树,任取一个顶点加入生成树;2)在那些一个端点在生成树里,另一个端点不在生成树里的边中,选取一条权最小的边,将它和另一个端点加进生成树;3)重复步骤2,直到所有的顶点都进入了生成树为止,此时的生成树就是最小生成树。Dijkstra算法和Prim算法实际上是相同的思路,不过是数组d[]所表示的最小距离含义不同而已;其中,Dijkstra...

2020-03-19 22:53:21 115

原创 最短路径

1. 单源最短路问题(Dijkstra 算法)算法代码伪代码//G为图,一般设为全局变量,数组d为源点到达各个点的最短路径长度,s为起点Dijkstra(G, d[], s) { 初始化; for(循环n次) { u = 使d[u]最小且还未被访问的顶点的标号; //暴力搜索 or 堆结构 标记u已被访问; for(从u出发...

2020-03-19 21:10:26 143

原创 细粒度情感分析各位大佬的经验

阁子:对于少的类别要注重召回而不是准确,由marco f1的性质决定,没召回的损失远远大于误召回的损失。比如label2的0类别。训练如果是softmax是拟合分布,不会考虑这点。可以考虑设置一些权重。针对f1,考虑规则学习, 机器学习周志华15章需要翻看。stack-lstm,attention with generally pooling 单模71。加下规则可能达到71.5阁子:glo...

2020-03-19 09:59:28 168

原创

图的存储邻接矩阵一般只适用于顶点数目不太大的题目(一般不超过1000)邻接表顶点数大于1000的题目vector实现开一个vector数组Adj[N],其中N为顶点个数如果邻接表只存储每条边的终点编号,而不存储边权,则vector中的元素类型可以直接定义为int如果需要存储边权,则把替换类型替换为结构体Nodestrcut Node{ int v, w; Node(i...

2020-03-19 09:50:13 76

原创 因子分解机-FM和FFM

独热(one-hot)编码的好处独热编码是将特征离散化的一种方法,在因子分解机FM中非常推荐使用。对于那些连续化特征,分桶就能实现离散化,但好处不是很明显。而对于那些本身离散化的特征,即假设0表示北京,1表示南京,2表示上海,那么one-hot编码后则用[1,0,0]表示北京,[0,1,0]表示南京,[0,0,1]表示说上海,这样做最大的一个好处是三个地方之间的距离相同。因子分解机好处...

2020-03-17 23:17:25 241

原创 并查集

理论定义并查集是一种维护集合的数据结构,它的名字中“并”“查”“集“分别取自Union(合并)、Find(查找)、Set(集合)这三个单词。也就是说,并查集之锤下面两个操作:1.合并:合并两个集合。2.查找:判断两个元素是否在一个集合。并查集一般就是用一个father数组实现,表示其父亲结点。基本操作初始化for(int i=0;i<=N;i++){ father[i]=i...

2020-03-17 22:22:26 81

原创 priority_queue与堆

1.priority_queue(优先级队列)优先级队列的底层是堆,每次队首元素都是优先级最大的。头文件include<queue>using namespace std;常用操作push()push(x)令x入队,复杂度O(logN)top()获取队首元素,复杂度O(1)pop()令队首元素出队,复杂度O(logN)empty()检测优先队...

2020-03-17 15:51:03 149

原创

树的深度自顶向下计算,树的高度自底向上计算。1. 二叉树1.1 二叉树定义struct TreeNode{ ElementType data; TreeNode *leftChild; TreeNode *rightChild}1.2 其他理论部分二叉树不等于度为2的树,二叉树的左右子树有严格的定义1.3 完全二叉树满二叉树:每一层的结点个数都达到了当层能达到的最大结点数...

2020-03-17 14:53:38 61

原创 搜索

搜索(剪枝matter!)1. 宽度优先搜索(BFS)宽度优先搜索,一般是用队列来实现,特别适合求最短时间,最短路径之内的问题,在求解的时候要用一个数据结构去保存以前已经访问的单位避免重复搜索,同时还需要注意剪枝。1.1 例子BFS模版void BFS(int s){ queue<int> q; q.push(s); while(!q.empty()){ 取出队...

2020-03-17 14:52:00 78

原创 分治与递归

分治与递归1. 递归两个核心子问题必须与原始问题相同,且规模更小(递归式)不能无限制地调用自身,必须有一个递归出口 (递归边界)2.分治法步骤分:将问题分解为规模更小的问题(严格来说根据这一步的不同还可能分为减治法和分治法)治:将这些规模更小的子问题逐个击破合:将已解决的子问题合并,最终得出“母”问题的解跟递归的关系分治法既可以用递归求解也可以不用递归求解,但是一般来...

2020-03-17 14:35:03 757

原创 特征选择

特征选择常用方法1. 过滤法Filter按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。发散性就是去掉那些取值变化小的特征,一般先进行归一化,然后计算方差,删除那些方差比较小的特征。相关系数法如下:(1). 互信息(Mutual Information)互信息(Mutual Information)是衡量随机变量之间相互依赖程度的度量。假设存在一个随机...

2020-03-14 21:45:37 503

原创 异常检测算法--LOF

1. 主要思想针对给定的数据集,对其中的任意一个数据点,如果在其局部邻域内的点都很密集,那么认为此数据点为正常数据点,而离群点则是距离正常数据点最近邻的点都比较远的数据点。通常有阈值进行界定距离的远近。2. compare with 及其他算法2.1 孤立森林孤立森林不适用于特别高维的数据。由于每次切数据空间都是随机选取一个维度,建完树后仍然有大量的维度信息没有被使用,导致算法可靠性降低。...

2020-03-14 20:50:07 1264

原创 python tcp, udp

常用的套接字有两种tcp和udptcp跟打电话类似,客户端向服务器发送消息时首先要建立连接(即服务器只有接起电话的过程)* 后,两者才能交流,同时交流的时候能确保每一条消息都能传送给对方。udp则类似邮政服务,客户端不用查询服务器的状态,直接发送消息(快件)即可,客户端不管服务器是否接受到该快件,这样做的好处是更加快速实验1、tcp1.1 服务器端(server.py)fr...

2019-09-20 15:36:11 378

原创 2019大数据挑战赛TOP5方案总结

2019 BDC 比赛总结(图片完整访问版请访问)2019中国高校计算机大赛已正式结束。对于我个人而言,这是第一次进入算法比赛的TOP10。我们队伍在初赛排在大概50名左右,复赛B榜8名,最终决赛第9名,这里是自己比赛的最终提交方案,求star。。。。。。。。。。本次总结是争对决赛TOP5方案的,毕竟自己做的跟他们比还有一些差距,我会尽自己所能的将他们做的全部方案融合进这一篇blog中,以此来...

2019-08-28 14:31:59 1066 1

原创 attention is all you need翻译

Attention is all you need摘要 在过去序列模型主要由循环神经网络(下面简称rnn)或者是卷积神经网络(下面简称cnn)加上编码器(下面简称encoder)和解码器(下面简称decoder)搭建而成, 某些性能比较好的模型也会在原来基础上将编码器和解码器与注意力(下面简称attention)机制联系起来。在这里,我们提出了一种全新的网络架构—Transformer,它完全摒...

2019-01-14 10:21:52 865 2

翻译 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding翻译

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding摘要 我们介绍一种新的语言模型—bert,全称是双向编码表示Transformer。不同于最近的其他语言模型,bert基于所有层中的上下文语境来预训练深层的双向表示。因此,经过预先训练的bert表示仅需在最后一层输出层上进行微调,就可以胜...

2019-01-14 10:20:56 1135 2

原创 On Loss Functions for Deep Neural Networks in Classification读后感

分类问题中的另一类loss函数In particular, for purely accuracy focused research, squared hinge loss seemsto be a better choice at it converges faster as well as provides better performance.It is also more robu...

2018-11-17 12:12:05 350

原创 处理不平衡类别的loss

在进行多分类问题的时候,常常会遇到数据不平衡的状况,对于多分类问题,常见的loss有categorical crossentroy,可以考虑手动设置loss权重来增加模型的准确度,将类别较少的类权重增高。在试验中,用的数据是情感分析label2的数据集,在不加权重f1值为0.53,权重为[1 2 3 1]后f1值为0.55, 权重为[1 2 6 1]后f1值为0.567。...

2018-11-17 11:06:45 2844

原创 java核心技术ch5

子类构造器关键词super多态,可以将一个子类的对象赋值给超类的变量,但不能将一个超类的引用赋给子类变量。另外,假设employee是manger的超类,在执行employee e = new manger()之后,e只能调用employee中有的方法,不能调用manger中有,但employee中没有的,注意的是,如果manger中覆盖了employee中的同名方法,那么调用的是manger...

2018-11-16 09:40:25 94

原创 全球AI挑战赛-细粒度情感分析赛道

*** 这是我全力参加的第一个数据类比赛,成绩不谈,重在过程。很感谢比赛中帮助我的实验室师兄们,尤其是陈师兄,刘师兄,还有林大哥和张大哥,具体名字我就不透露了。写这个总结的目的主要是为了整理下过去二十多天所跑的思路想法,如有错误,希望各位大佬能指正,学业繁忙,不能及时回复尽情理解,我会慢慢更新的。*** # 数据预处理...

2018-11-13 21:20:13 1533 2

原创 JAVA核心技术 ch4

对象构造不一定要用构造函数,也可以调用一些对象方法,比如String s = new Date().toString()。更改器与访问器方法的差别,访问器方法只访问对象不修改对象,更改器会更改对象状态。访问器方法不应该返回引用可变对象,否则违反封装原则。一个方法可以访问所属类的所有对象的私有数据,即访问同一类的其他对象实例。final 关键词 设置 域 不能再更改静态域 与 静态方法为...

2018-11-13 20:01:36 123

原创 Attention Is All You Need读后感

Attention is all your need论文地址, 此文仅仅是为了记录自己的学习过程 ,有错误欢迎大家指正。1. 提出背景在过去几年中,以LSTM和GRU的循环神经网络在nlp领域中发挥了巨大的作用吗,但是此类模型有一些缺陷,一个是存储记忆限制了训练样本的batch size, 二是计算代价大,三也就是此类模型固有缺陷,训练时候序列之间两个对象的联系依赖于两个对象的距离,这...

2018-11-05 23:52:29 559

原创 Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling读后感

论文地址此文仅仅记录一下自己的学习过程循环神经网络历史背景循环神经网络是一个序列模型,它与传统CNN最大的不同在于它具有记忆性,它可以记录以前的状态,根据以前的状态和当下的输入生成一个新的状态。它同时也是一个概率生成模型,印象中我感觉它跟HMM有很多相同点,不过HMM能训练的参数比较少,这也许就是HMM比较弱的原因。继续回到循环神经网络,它在训练的时候有一个很大的问题,就是梯度消失和梯度爆...

2018-11-03 00:43:31 623

原创 原地shift算法

shift

2017-10-28 20:01:21 176

原创 Ffinbonacci

int fib(int n){ return (2 > n) ? n : fib(n - 1) + fib (n - 2);}时间复杂度O(2的n次方)int fib(int n, int &prev){ if( n == 0) { prev = 1; return 0; } else { int

2017-10-21 23:13:34 124

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除