自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 资源 (1)
  • 收藏
  • 关注

原创 双数组字典树(DATrie)详解及实现

1.背景Trie树本质是一个确定的有限状态自动机(DFA),核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。**但由于Trie树的稀疏现象严重,空间利用率较低。**为了让Trie树实现占用较少的空间,同时还要保证查询的效率,最后提出了用2个线性数组来进行Trie树的表示,即双数组Trie(Double Array Trie).2.算法及公式解析base[...

2020-03-10 23:32:55 6396 21

原创 百度OCR识别表格文字,并自动下载到本地(准确率很高)

一、输入文件及申请的Tokenimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;impor...

2018-08-22 17:51:35 28329 106

原创 JAVA实现百度OCR文字识别功能

package imageProcessing;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.List;im

2018-03-17 20:47:53 10334 15

原创 Js中利用ES6特性的数组排序及求最大(小)值的多种方案

1.数组去重方案1:思路:对待去重的数组arr进行for循环遍历,然后在新的数组newArr中去查找当前被遍历的元素arr[i],如果返回值为-1,说明在新的数组中还没有出现过当前被遍历的元素arr[i],则把该元素放到新的数组中。当数组arr遍历完以后,新数组newArr就是去重以后的数组。var arr = [1, 4, 7, 4, 3, 2, 1, 4, 7];var

2017-12-09 16:07:38 15808 1

原创 网格图形分配算法(二维)

1.问题最近项目中遇到一个需求,从n*n网格中选出几种图形,要求图形不能重合,且位置完全随机,同时支持支持图形方向旋转,原型图如下图所示:2.需求分析分析下问题的实质,分配一个图形的实质就是需要在数组里随机选出几个下标 ,使得这几个下标能够组成所需的图形 ,那么解决方案就很简单了,下面记录下我们需要做的事情:随机得到数组中任意一点以此点为轴心,看是否能向四周建立合适的图形(要求不可超出所构建网格的范围且不可与已有图形重叠)可构建则直接构建,不可构建时,直接重复前两步(迭代)注意,分配的

2021-05-21 13:49:53 1671

原创 麻将通用胡牌算法详解(拆解法)

1.背景前几天刚好有项目需要胡牌算法,查阅资料后,大部分胡牌算法的博客都是只讲原理,实现太过简单,且没有给出测试用例。然后就有了下面的这个胡牌算法,我将从算法原理和算法实现两部分展开,想直接用的,直接跳到算法部分即可。2.数据结构这里麻将是108张牌,也就是只带万,条,筒。数据结构可抽象为两种形式分别将牌的类型(万,条,筒)类型**(type)和值(value)**设置为牌的属性将牌的值写成十六进制(十六进制一个数字可以同时表示牌值和牌型)下面将给出牌值的数据结构0x01, 0x02,

2021-02-10 01:14:11 26209 5

原创 停用词过滤原理及实现

1.停用词指语言中一类没有多少意义的词语,比如“的”,“甚至”,“不仅”,“吧”…一个句子去掉了停用词并不影响理解,停用词视具体的任务不同而不同。停用词过滤是一个常见的预处理过程2.实现思路加载中止词:IO加载中止词(中止词下载地址,复制粘贴保存为txt文本)分词:使用HanLP进行分词停用词过滤:从分词结果中去除中止词3.加载中止词这里最简单的做法是把中止词直接加入Lis...

2020-04-11 14:09:42 4262

原创 AC自动机详解及实现

1.背景之前的Trie树,DBTrie都属于前缀树,虽然DAT每次状态转移的时间复杂度都是常数,但全切分长度为n的文本时,时间复杂度为O(n2)。这是因为**扫描过程中需要不断的挪动起点,发起新的查询**。所以说,DAT的全切分复杂度为O(n2)。2.为什么需要AC自动机显然,前缀树的短板是扫描,查询一个句子时,前缀树需要不断的挪动起点,发起新查询,这个过程浪费了大量时间。举个栗子,扫描...

2020-04-10 15:44:05 2395 3

原创 CSDN博客迁移到Hexo(提供格式转换)

1.背景前几天用GitHub搭好博客后,想把在CSDN上的文章转换成符合Hexo要求的MarkDown文件,为避免重复造轮子,我先在GitHub搜了一下项目,最终决定使用这个工具。2.准备工作安装Node.js安装npm全局安装 csdnsynchexo工具包,命令行运行:npm i -g csdnsynchexo`将项目代码克隆到本地git clone htt...

2020-03-18 00:11:59 1293 20

原创 字典树原理分析及实现(支持中文插入)

1.背景匹配算法的瓶颈之一在于如何判断字典中是否含有字符串,如果用的是有序集合(TreeMap)的话,复杂度是O(logn),如果用散列表(HashMap),账面上的时间复杂度虽然下降了,但内存复杂度上去了。我们要寻找一种速度又快,又省内存的数据结构。2.字典树概念:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符...

2020-02-25 00:02:10 1388

原创 词典分词算法实现详解

1.概述中文分词指的是将一段文本拆分为一系列单词的过程,这是中文信息处理的第一站,中文分词备受关注。中文分词大致分为以下两类:基于词典规则基于机器学习这里我们主要介绍词典分词2.词典分词词典分词是最简单,最常见的分词算法,需要的材料为:一部词典一套查词典的规则简单来说,词典分词就是一个确定的查词与输出的规则系统。词典分词的重点不在于分词本身,而在于支撑词典的数据结构。...

2020-02-14 19:01:27 3156

原创 NLP概述及流派

1.基础概念自然语言处理(Nature Language Processing,NLP)是一门融合了计算机科学,人工智能以及语言学的交叉学科。2.研究目标通过机器学习等技术,**让计算机学会处理人类语言 **,乃至实现终极目标——理解人类语言或人工智能。3.自然语言的处理层次语音、图像和文本自然语言处理系统的输入源一共有3个,语音,图像和文本,但前两者存储的信息总量没有文本多,...

2020-02-10 22:58:36 1631

原创 Spring boot 分页方法过时解决

1.问题表现源代码为:Sort sort = new Sort(Sort.Direction.DESC, "login_time");Pageable pageable = new PageRequest(Integer.parseInt(page), Integer.parseInt(size), sort);报错代码为:'Sort(org.springframework.data....

2019-12-18 23:35:05 2984

原创 CRC循环冗余校验码原理解析(附实例)

1.CRC简介CRC循环冗余校验码是数据通信中的一种查错校验码。2.CRC原理CRC 算法的基本思想是将传输的数据[M(X)] 当做一个位数很长的数。将这个数除以另一个数[G(X)] ,得到的余数[R(X)] 作为校验数据附加到原数据后面,组成循环校验码。M(X)代表待编码的有效信息G(X)代表约定好的多项式R(X)代表代表检验位由于,CRC的结构 = 信息位(N位) + 校验位...

2019-11-26 15:32:06 11088 1

原创 汉明码原理解析(清晰实例讲解)

1.汉明码实质及原理汉明码实质上是多重奇偶校验,其实现原理是:在有效信息位中加入几个校验位形成汉明码,使码距比较均匀的拉大。具有检验并纠正一位错误的能力。2.核心公式介绍2^k >= N+K+1其中,K代表校验位的位数,N代表信息位的位数下面是 信息位N值与校验位K值的对应关系表(重要)信息码位数(N)12~45~1112~2627~5758~120...

2019-11-25 20:15:45 18720 6

原创 Spring Boot升级到2.2.x数据连接报错及分析

1.问题最近需要升级下项目,我之前版本是1.5.6,升级到最新的2.2.x时,发现会报以下错误:2019-11-21 20:36:42.998 WARN 224 --- [ restartedMain] com.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassName=com.mysql.jd...

2019-11-21 22:05:53 514

原创 朋友圈投票活动-刷票案例实现与分析

1.声明本文只讨论技术范畴内的刷票行为。2.案例描述某商城(以下简称A商城)在微信平台上举办了一场在线投票活动,微信用户可通过活动链接访问到投票页面,对喜欢的作品进行投票;每个微信帐号每天只能给单个作品投1张选票3.漏洞分析表面上看,A商城已经对投票活动进行了反作弊处理,因为限制了每个微信用户每天只能投一张票。如果用户都是正常地通过微信访问这个投票服务进行投票的话,的确是能起到预期效...

2019-11-17 21:48:25 1354

原创 使用Charles对移动设备抓包

1.Charles简介Charles是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用,安装Charles的时候要先装好Java环境。这里是破解版的下载链接,提取码是:fjoo2.Charles主要功能支持SSL代理。可以截取分析SSL的请求。支持流量控制。可以模拟慢速网络以及...

2019-11-16 15:45:21 1794 3

原创 排序算法(三)堆排序及有界堆排序Java实现及分析

1.堆排序基数排序适用于大小有界的东西,除了他之外,还有一种你可能遇到的其它专用排序算法:有界堆排序。如果你在处理非常大的数据集,你想要得到前 10 个或者前k个元素,其中k远小于n,它是很有用的。例如,假设你正在监视一 个Web 服务,它每天处理十亿次事务。在每一天结束时,你要汇报最大的k个事务(或最慢的,或者其它最 xx 的)。一个选项是存储所有事务,在一天结束时对它们进行排序,然后选择...

2019-06-12 20:31:02 548 1

原创 排序算法(二)归并排序Java实现及分析

###### 1.归并排序归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。如 设有数列{6,202,100,301,38,8,1}初始状态:6,202,100,301,38,8,1第一次归并后:{6,202},{100,301},{8,38},{1},比较次数:3;第二次归并后:{6,100,202,301},{1,8,38},比较次数:4;第三...

2019-06-12 20:25:09 868

原创 排序算法(一) 插入排序及Java实现

1.插入排序插入排序是一种简单的排序算法,从头遍历数组,依此比较排序代码实现: public void insertionSort(List<T> list, Comparator<T> comparator) { for (int i=1; i<list.size(); i++) { T elt_i = list....

2019-06-12 20:18:06 509 1

原创 Can't find vcruntime140.dll 问题解决

1.前言最近在新系统运行C++软件时,出现了一些问题,运行软件时,出现了以下提示:Can’t find vcruntime140.dllVC++安装日志同时报错,如下:[0D4C:0624][2019-06-11T17:38:38]e000: Error 0x80004005: Failed to extract all files from container.[0D4C:06C...

2019-06-11 22:26:46 1461

原创 搜索引擎优化 TF_IDF之Java实现

前言实现之前,我们要事先说明一些问题:我们用Redis对数据进行持久化,存两种形式的MAP:key值为term,value值为含有该term的urlkey值为url,value值为map,记录term及在文章中出现的次数总的计算公式如下:1.计算词频TF这里通过给出url地址,获取搜索词term在此url中的数量,计算出TF获取url中的词汇总数 /** ...

2019-06-07 01:16:13 614 1

原创 TF-IDF算法概述及模型构建

1.应用场景我在构建搜索引擎的时候,需要构建一个排名算法。我最初版本的做法为,根据一篇文章中词汇出现的频率,对各个网页进行排序。这样会有一个很明显的缺点,当我们页面中出现很多**中止词(例如,the,1,2)**时,这样不能客观反映搜索词对文档的重要程度。我们需要调整某些单词在一般情况下更频繁出现的事实(过滤中止词)。TF-IDF值(搜索词的重要性),随着单词在文件中出现的次数成正比增加,但同...

2019-06-01 19:25:16 5041

原创 数据结构思维笔记(十七) 布尔搜索

接着上一节的内容,我们已经构建了一个爬取百度百科并持久化的爬虫。现在客户使用,我们需要构建一个搜索工具。1.信息检索这个项目的下一个阶段是实现一个搜索工具。我们需要的部分包括:一个界面,其中用户可以提供检索词并查看结果。一种查找机制,它接收每个检索词并返回包含它的页面。用于组合来自多个检索词的搜索结果的机制。对搜索结果打分和排序的算法。2.布尔搜索大多数搜索引擎可以执行“布尔...

2019-05-31 22:30:58 986

原创 数据结构思维笔记(十六)爬取百度百科

1.基于Redis的索引器在我的解决方案中,我们在 Redis 中存储两种结构:对于每个检索词,我们有一个URLSet,它是一个 Redis 集合,包含检索词的 URL。对于每个网址,我们有一个TermCounter,这是一个 Redis 哈希表,将每个检索词映射到它出现的次数。在JedisIndex中,我提供了一个方法,它可以接受一个检索词并返回 Redis 中它的URLSet的键:...

2019-05-16 08:46:32 550

原创 数据结构思维笔记(十五)持久化

第十五章 持久化现在我们回顾一下搜索引擎的构建:抓取:我们需要一个程序,可以下载一个网页,解析它,并提取文本和任何其他页面的链接。索引:我们需要一个索引,可以查找检索项并找到包含它的页面。检索:我们需要一种方法,从索引中收集结果,并识别与检索项最相关的页面。抓取和索引我们之前都处理过,但是还不够好,我们现在先处理索引,存在Redis里持久化并排序,最后再处理检索功能。1.Redi...

2019-05-10 14:43:58 209

原创 FastDFS分布式文件系统搭建(三)SpringBoot集成FastDFS

3.3.1 添加依赖<dependency> <groupId>cn.bestwu</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27</version></dependency>3....

2019-05-08 12:11:43 477

原创 FastDFS分布式文件系统搭建(二)FastDFS+Nginx实现分布式文件系统

1 FastDFS安装环境FastDFS是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境。首先安装gcc编译环境yum install gcc-c++2 安装libeventFastDFS依赖libevent库,需要安装:yum -y install libevent3 安装libfastcommon这里强调一下,此包 包含了FastDFS...

2019-05-07 17:25:24 358

原创 FastDFS分布式文件系统搭建(一)基础原理

1.1 什么是FastDFS​ FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。1.2 FastDFS架构FastDFS架构包括 Tracker server和Storage server。...

2019-05-07 16:00:15 375

原创 数据结构思维笔记(十四)二叉搜索树

本章继续承接上章的内容,具体实现TreeMap中的方1.简单的TreeMap这里比较核心的一个方法是findNode,用来寻找与键值相当的节点,下面是它的实现: private Node findNode(Object target) { if (target == null) { throw new IllegalArgumentException...

2019-04-28 09:52:03 273

原创 数据结构思维笔记(十三)TreeMap

这一章展示了二叉搜索树,它是个Map接口的高效实现。如果我们想让元素有序,它非常实用。1.哈希的不足HashMap被广泛使用,但并不是唯一的Map实现。有几个原因可能需要另一个实现:哈希可能很慢,所以即使HashMap操作是常数时间,“常数”可能很大。 如果哈希函数将键均匀分配给子映射,效果很好。但设计良好的散列函数并不容易,如果太多的键在相同的子映射上,那么HashMap的性能可能...

2019-04-26 16:44:58 381

原创 数据结构思维笔记(十二)HashMap

上一章中,我们写了一个使用哈希的Map接口的实现。我们期望这个版本更快,因为它搜索的列表较短,但增长顺序仍然是线性的(k太小,而且是固定的)。如果存在n个条目和k个子映射,则子映射的大小平均为n/k,这仍然与n成正比。但是,如果我们与n一起增加k,我们可以限制n/k的大小。例如,假设每次n超过k的时候,我们都使k加倍;在这种情况下,每个映射的条目的平均数量将小于1,并且几乎总是小于10,只要散...

2019-04-24 10:29:48 252

原创 数据结构思维笔记(十一)哈希

在本章中,我定义了一个比MyLinearMap更好的Map接口实现,MyBetterMap,并引入哈希,这使得MyBetterMap效率更高。1.哈希为了提高MyLinearMap的性能,我们将编写一个新的类,它被称为MyBetterMap,它包含MyLinearMap对象的集合。它在内嵌的映射之间划分键,因此每个映射中的条目数量更小,这加快了findEntry,以及依赖于它的方法的速度...

2019-04-23 15:10:42 199

原创 数据结构思维笔记(十)Map接口

在接下来的几个练习中,我介绍了Map接口的几个实现。其中一个基于哈希表,这可以说是所发明的最神奇的数据结构。另一个是类似的TreeMap,不是很神奇,但它有附加功能,它可以按顺序迭代元素。我们从一个Map开始,它使用键值对的List实现。1.实现MyLinearMap简单来说,就是继承Map,放入List中,来看下初始结构public class MyLinearMap<K, ...

2019-04-22 15:09:08 224

原创 数据结构思维笔记(九)索引器

目前,我们构建了一个基本的 Web 爬虫;我们下一步将是索引。在网页搜索的上下文中,索引是一种数据结构,可以查找检索词并找到该词出现的页面。此外,我们想知道每个页面上显示检索词的次数,这将有助于确定与该词最相关的页面。例如,如果用户提交检索词“Java”和“编程”,我们将查找两个检索词并获得两组页面。带有“Java”的页面将包括 Java 岛屿,咖啡昵称以及编程语言的网页。具有“编程”一词的页...

2019-04-20 17:53:03 287

原创 数据结构思维笔记(八)到达哲学

本章的目标是开发一个Web爬虫,同时验证之前提到的 到达哲学1.起步首先介绍本章中帮你起步的代码:WikiNodeExample.java包含前一章的代码,展示了 DOM 树中深度优先搜索(DFS)的递归和迭代实现。WikiNodeIterable.java包含Iterable类,用于遍历 DOM 树。我将在下一节中解释这段代码。WikiFetcher.java包含一个工具类,使用...

2019-04-16 14:29:05 242

原创 数据结构思维笔记(七) 树的遍历

本章将介绍一个 Web 搜索引擎,我们将在本书其余部分开发它。我描述了搜索引擎的元素,并介绍了第一个应用程序,一个从维基百科下载和解析页面的 Web 爬行器。本章还介绍了深度优先搜索的递归实现,以及迭代实现,它使用 Java Deque实现“后入先出”的栈。1.搜索引擎网络搜索引擎,像谷歌搜索或 Bing,接受一组“检索项”,并返回一个网页列表,它们和这些项相关。搜索引擎的基本组成部分是...

2019-04-15 15:46:38 443

原创 数据结构思维笔记(六)双链表

1.双链表数据结构List和Deque接口的双链表实现。[…] 所有的操作都能像双向列表那样执行。索引该列表中的操作将从头或者尾遍历列表,使用更接近指定索引的那个。每个节点包含下一个节点的链接和上一个节点的链接。LinkedList对象包含指向列表的第一个和最后一个元素的链接。所以我们可以从列表的任意一端开始,并以任意方向遍历它。因此,我们可以在常数时间内,在列表的头部和末尾添加和...

2019-04-12 09:05:35 218

原创 数据结构思维笔记(五)性能分析

对于下一个练习,我提供了一个Profiler类,它包含代码,使用一系列问题规模运行方法,测量运行时间和绘制结果。你将使用Profiler,为 Java 的实现ArrayList和LinkedList,划分add方法的性能。Profiler.java包含上述Profiler类的实现。你会使用这个类,但你不必知道它如何工作。但可以随时阅读源码。ProfileListAdd.java包含此练...

2019-04-11 09:42:04 598

mind(18.12.21).sql

思维导图资源,内含计算机基础知识思维导图,Spring体系架构思维导图,数据库基础知识思维导图,同时含测试数据

2020-05-02

空空如也

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

TA关注的人

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