数据结构+算法=程序
程序+设计模式=框架

0%

前言

在传统程序中,是通过编码定义好规则,为程序提供一个输入,程序通过规则产生输出,如果一个程序只是枚举所有的输入,来产生相应的输出,那可能根本算不上“智能”,因为未知的输入太多,而且也不现实,比如围棋的棋谱就是千变万化的。
对于AI(人工智能)技术来说,恰恰相反,是通过已知的输入和输出,来生成规则,程序通过大量样本数据的训练,使之越来越“明白”这个规则,从而能够预测未知输入的结果,这就是所谓的“监督学习”。

阅读全文 »

这是一个古老的小游戏,请从以下牌中任意选择一张你喜欢的并把它记在心里,接下来,我会问你几个问题,你只需回答“是”或者“否”,当我问完后即可猜到你心里想的那张牌什么。
阅读全文 »

1 单点的问题

单台服务器,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用。单点的elasticsearch也是一样,那单点的es服务器存在哪些可能出现的问题呢?

  • 单台机器存储容量有限
  • 单服务器容易出现单点故障,无法实现高可用
  • 单服务的并发处理能力有限
阅读全文 »

1 Elasticsearch介绍和安装

1.1 Elasticsearch简介

什么是Elasticsearch

Elaticsearch简称为es,是一个开源的可扩展的全文检索引擎服务器,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es使用Java开发并使用Lucene作为其核心来实现索引和搜索的功能,但是它通过简单的RestfulAPIjavaAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。

阅读全文 »

问题

有1000个瓶子里面装满了水,其中1瓶里面被加入了毒药,但是滴入毒药的水在外观上看和普通水是一模一样的,也就是说这1000个瓶子是分不清哪瓶是装有毒药的,除非把装有毒药的水喝进肚子里。现在有一只可怜的猪可以用来实验,将其中一瓶水喂给这只猪喝,如果猪毒发身亡了,说明这瓶水有毒。猪并不需要喝完整瓶水,只需喝到一小口,毒性就会发作,如果水是有毒的话。

由于只有一只猪,所以我们只能一瓶一瓶的去试验,假如毒发的时间是1分钟,那么我们每喂完一瓶水,就等待一分钟,直到猪死亡。值得注意的是,我们只需喂完999瓶水即可,因为如果猪喝完前面的999瓶水还没有中毒的话,说明最后一瓶一定是有毒的,已经不需要再试验了,同时这只猪也是幸运的,它可以告别死亡的命运。所以,我们最多需要花费999分钟,或者说试验999次才能找到这瓶装有毒药的水。

那么问题来了,如果现在不是1只猪,而是有10只猪可以用来试验,那么你最少可以试验几次能找到这瓶有毒的水?

提示:我们可以将水混合到一起喂给猪喝,无论如何,只要猪喝到有毒的水就会死亡。

阅读全文 »

遍历一棵二叉树,主要分为前序遍历、中序遍历和后序遍历三种方式,不同的方式输出的顺序不同:

  • 前序遍历: 根节点->左节点->右节点
  • 中序遍历: 左节点->根节点->右节点
  • 后序遍历: 左节点->右节点->根节点
阅读全文 »

简介

KMP算法是什么?
引用自百度百科:

KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)。

阅读全文 »

一、SpringBoot简介

提起SpringBoot就不得不说Spring,Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。

阅读全文 »