Decorative image frame

solr快速搭建

什么是solr

引用于维基百科

开发者 Apache软件基金会
稳定版本
6.6.0 (2017年6月6日,​11个月前 )
开发状态 活跃
编程语言 Java
操作系统 跨平台
类型 企业搜索服务器软件
许可协议 Apache许可证 2.0
网站 lucene.apache.org/solr/
源代码库 git.apache.org/lucene-solr.git
Solr(读作“solar”)是Apache Lucene项目的开源企业搜索平台。其主要功能包括全文检索、命中标示[1]、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr是高度可扩展的,并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎,[2]Solr 4还增加了NoSQL支持。[3]
Solr是用Java编写、运行在Servlet容器(如Apache Tomcat或Jetty)的一个独立的全文搜索服务器。 Solr采用了Lucene Java搜索库为核心的全文索引和搜索,并具有类似REST的HTTP/XML和JSON的API。 Solr强大的外部配置功能使得无需进行Java编码,便可对其进行调整以适应多种类型的应用程序。Solr有一个插件架构,以支持更多的高级定制。
因为2010年Apache Lucene和Apache Solr项目合并,两个项目是由同一个Apache软件基金会开发团队制作实现的。提到技术或产品时,Lucene/Solr或Solr/Lucene是一样的。

Read More...

SpringBoot集成SpringSecurity Oauth2

前期准备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
buildscript {
ext {
springBootVersion = '1.5.13.BUILD-SNAPSHOT'
}
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}

dependencies {
compile('org.springframework.boot:spring-boot-starter-data-redis')
compile('org.springframework.boot:spring-boot-starter-security')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2')
compile('org.springframework.security.oauth:spring-security-oauth2')
runtime('mysql:mysql-connector-java')
compileOnly('org.projectlombok:lombok')
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile('org.springframework.restdocs:spring-restdocs-mockmvc')
testCompile('org.springframework.security:spring-security-test')
}
Read More...

使用Numpy手动实现全连接神经网络

什么是神经网络

接收刺激 ——> 产生信号 ——> 经验学习,这样的一组过程就是一次学习过程,而这样的一组过程,如果被放到一个容器中,那么,这个容器就是一个神经元

神经元

而神经网络,其实就是由多个神经元的组合而成的,多个神经元共同组成一个神经网络;整个学习过程可以这样文字描述:接收刺激——>产生信号——>接收刺激——>产生信号——>…——>经验学习

Read More...

keras的回调函数的学习

损失函数(Loss)

在学习深度学习中,有一个很重要的部分——损失函数;在已知的深度学习框架中,都预置了常用的损失函数:binary-crossentropymean_squared_errormean_absolute_errormean_absolute_percentage_errormean_squared_logarithmic_errorcategorical_crossentropy……这些损失函数是在构建模型中最长用到的损失函数了;像深度学习入门的几个经典例子——[0-9]的手写数字识别、识别图片中的狗和猫,这两个经典模型中用到的损失函数就是categorical-crossentropy[用于多分类的交叉熵]和binary-crossentropy[用于二分类的交叉熵];又比如时序回归问题(rnn递归神经网络)中又常常用到的是mean_squared_errormean_absolute_percentage_error等等。

Read More...

无监督学习算法——KMeans聚类

什么是KMeans聚类算法

K-Means是一种无监督的聚类机器学习算法;之前学习的分类算法,其数据是已经有明确的类别标识了,所以在之前的分类机器学习算法中,算法所要去学习的是如何找到一个或几个特征的组合,能够实现数据的分类操作;但是,在聚类算法中,数据到底可以分为几类是不知道的,只能让算法自行依靠某些规则或约定,对数据进行聚类操作(将可能是同一类别的数据放在一起)。

由于数据的类别我们并不清楚,所以,我们无法监督我们的算法最后的结果是好还是坏,缺乏明确的目标值——这就是无监督机器学习。K-Means算法就是一个典型的无监督机器学习算法。

K-Means算法的原理很像KNN算法,KNN算法是计算未知点到已知点的距离对未知点进行分类处理;K-Means算法则是通过在所有点中找几个中心点,进行计算其他点到各个中心点的距离,距离那个中心点进就归类到那个中心点去,在第一轮归类完后,进行计算每一类的均值,将均值点作为新的中心点,再此重复上述步骤,知道整个归类的结果不再改变时停止上述工作,将这些步骤抽出来简化下就是这样

初步选取目前类别个数,选取中心点 ——>> 计算与各个中心点的距离,聚类 <<——{如果聚类结果不再改变,结束}——>> 计算均值,重新确定中心点

Read More...

数据库链接池原生java-api实现

通常在做java-web开发时,最需要做的就是配置数据库连接;从简单的jdbc直接使用到使用第三方分装的orm。在使用传统的jdbc进行数据库操作时,经常是当要进行一个数据库操作时,就开启一个数据库连接,操作完成后就关闭数据库连接。频繁的数据库连接对象的申请与释放,导致大量的资源耗费在了数据库连接创建与释放上面,而第三方的orm框架则采用了数据库连接池的办法,极大的优化了数据库连接的频繁申请与释放操作:需要进行数据库操作时,从数据库连接池中获取一个可用连接;不用时将连接返还给连接池;而连接池维护着每一个数据库连接的连接生命周期,只要还在数据库连接还在生命周期内,那么这个数据库连接就不会断开。

Read More...

Storm分布式计算框架的搭建过程

什么是storm

storm是一个分布式的计算框架,并且,storm是基于内存式的计算服务,在storm计算期间,所有的数据都在内存中进行计算,没有进行耗时的io操作,也正是因为storm的这种特性,使得storm与hadoop的批处理形式不同,storm是流处理的形式,只要数据一进来就开始进行计算服务。

依赖一:zookeeper

zookeeper是一个分布式应用协调工具。其实可以这样说,zookeeper就是一个管家,它管理着一个分布式集群,所有的机器调度都通过zookeeper进行协调。

Read More...

leetcode回顾——Flood Fill

题目

“””
An image is represented by a 2-D array of integers, each integer representing the pixel value of the image (from 0 to 65535).

Given a coordinate (sr, sc) representing the starting pixel (row and column) of the flood fill, and a pixel value newColor,
“flood fill” the image.

Read More...

linux——操作系统之实现银行家算法

死锁问题

现如今的操作系统基本上都实现了多任务以及并发机制,由此,带来了一个明显的问题——进程资源分配的问题。假设有两个进程a、b,a完成任务需要资源R1、R2,b完成任务也需要资源R1、R2,系统的R1、R2资源数目都是1;这个时候,由于分配的原因,a进程只拿到了R1资源,b只拿到了R2资源;为了完成各自的任务,a进程在不放弃原有的R1资源下向系统申请R2资源,b进程在不放弃原有的R2资源下向系统申请R1资源,整个资源申请的图如下所示

资源申请图

由于a进程占有着R1资源去向系统申请R2资源,但是R2资源被需要R1资源的b进程所占有,两个进程占有着对方完成任务所需的剩余资源,同时又不放弃自身已有的资源,因此就出现了死锁问题。

Read More...

机器学习之AdaBoost

之前看的机器学习的分类算法所构建的分类器都是单分类器,就是一整个算法当中,只构建了一个分类器用于分类。单分类器算法构建简单,但是缺点也很大——就是独裁,这个分类器所分类的结果就是最终的结果,缺少多方的意见,因此,就希望分类算法能够实现多方意见机制,也就是多个分类器共同分类来决定其最终的分类结果。

这个多方意见机制其实就像专家咨询机制,每一个专家的权威不同,所给出的意见也就不同,其最中的结果,需要综合各方的意见以及可采信程度综合得出最终的意见结果;对于分类器而言,可信度就是该分类器的采信权重alpha,其计算公式为:

1
2
µ = 分错的样本个数 / 总样本个数
alpha = 1 / 2 * ln((1 - µ) / µ)

专家个数呢?其实就是同一种分类器,根据采信程度来区分成不同的分类器;但是,一个分类器用一个样本训练,无论训练多少次应该只能得到一个分类器模型才对,那是怎么得到这么多不同的采信程度不同的分类器?这个adaboost算法已经解决了。

Read More...