Solr
Solr一、Solr简介1.为什么使用Solr 在海量数据下,对MySQL或Oracle进行模糊查询或条件查询的效率是很低的。而搜索功能在绝大多数项目中都是必须的,如何提升搜索效率是很多互联网项目必须要考虑的问题。
既然使用关系型数据库进行搜索效率比较低,最直接的解决方案就是使用专用搜索工具进行搜索,从而提升搜索效率。
2.常见搜索解决方案 基于Apache Lucene(全文检索工具库)实现搜索。但是Lucene的使用对于绝大多数的程序员都是“噩梦级”的。
基于谷歌API实现搜索。
基于百度API实现搜索。
3.Solr简介 Solr是基于Apache Lucene构建的用于搜索和分析的开源解决方案。可提供可扩展索引、搜索功能、高亮显示和文字解析功能。
Solr本质就是一个Java web 项目,且内嵌了Jetty服务器,所以安装起来非常方便。客户端操作Solr的过程和平时我们所写项目一样,就是请求Solr中控制器,处理完数据后把结果响应给客户端。
4.正向索引和反向索引 只要讨论搜索就不得不提的两个概念:正向索 ...
虚拟机
Linux
为什么要用Linux操作系统
服务器操作系统
Linux不是一个具体的操作系统而是一类操作系统的总成,具体版本称为发行版
Red Hat 收费版,被IBM收购
CentOS RedHat推出的免费版
Ubuntu 界面比较友好
下载安装VMWare在百度搜索,下载对应的软件然后进行安装即可。
VMWare的卸载双击安装包点击下一步,然后选择删除即可。
Linux系统安装下载Linux的CentOS镜像文件
然后打开虚拟机,创建新的虚拟机,然后选择镜像文件,然后输入小写的各种信息,以及配置操作系统安装的位置。
然后默认20磁盘大小然后点击完成。
如果安装失败,修改虚拟机设置,然后修改CD/DVD2的镜像文件位置即可我这边用的是centos7,记得设置中文
在日期更换时区为上海,中国
Linux目录结构
Linux中的路径
Linux常用命令
linux中配置网络信息
有些是ens160,这里我设置了静态配置,因为这样全在自己的掌控之中😼
1234567891011121314151617181920212223TYPE="Ethernet" ...
Nginx+lua+OpenResty高性能实践
Nginx+lua+OpenResty高性能实践NginxNginx是一个高性能的Web服务器和反向代理的软件
Web服务器:就是运行我们wen服务的容器,提供web功能,类似tomcat也提供累死的功能。
代理:就是软件架构和网络设计中,一个重要的概念,有两种代理:正向代理和反向代理。
正向代理用户设置代理服务器。
所有的请求都由代理服务器发出,无法判断代理了多少用户端,叫正向代理。
反向代理在服务器端设置代理,素有请求,由服务器端接受,然后再由代理服务器发送到后方的服务器。这么依赖,所有请求,都由一个服务器接受,无法判断代理的多少服务端。这是反向代理、
利用反向代理,就可以即将请求分发到系统内部的多个节点上,从而减少每个节点的并发数。而这些节点在外界看来就是一个系统,表现出唯一的ip,也就是代理服务器的IP.
是用来做负载均衡用的
Nginx安装官网:nginx
点击documentation然后点击installing nginx
然后打开centos虚拟器
1yum install yum-utils
安装完毕
然后继续根据官方文档
然后在官方文档的目录下面发现没有 ...
redis
RedisRedis简介NoSQL简介 目前市场主流数据存储都是使用关系型数据库。每次操作关系型数据库时都是I/O操作,I/O操作是主要影响程序执行性能原因之一,连接数据库关闭数据库都是消耗性能的过程。尽量减少对数据库的操作,能够明显的提升程序运行效率。
针对上面的问题,市场上就出现了各种NoSQL(Not Only SQL,不仅仅可以使用关系型数据库)数据库,它们的宣传口号:不是什么样的场景都必须使用关系型数据库,一些特定的场景使用NoSQL数据库更好。
常见NoSQL数据库:
memcached :键值对,内存型数据库,所有数据都在内存中。
Redis:和Memcached类似,还具备持久化能力。
HBase:以列作为存储。
MongoDB:以Document做存储。
2.Redis简介 Redis是以Key-Value形式进行存储的NoSQL数据库。
Redis是使用C语言进行编写的。
平时操作的数据都在内存中,效率特高,读的效率110000/s,写81000/s,所以多把Redis当做缓存工具 ...
前端速通
前端速通ES6
ECMAScript(ES) 是规范、 JavaScript 是 ES 的实现
ES6 的第一个版本 在 2015 年 6 月发布,正式名称是《ECMAScript 2015 标准》(简称 ES2015)
ES6 指是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等等
let推荐使用let关键字替代 var关键字声明变量,因为 var存在诸多问题,比如:
越域123456{ var a = 1; let b = 2;}console.log(a); // 1console.log(b); // ReferenceError: b is not defined
重复声明12345678// var 可以声明多次// let 只能声明一次var m = 1var m = 2let n = 3// let n = 4console.log(m) // 2console.log(n) // Identifier 'n' has already been declar ...
Dubbo
Dubbo什么是Dubbo了解 Dubbo 核心概念和架构 | Apache Dubbo 官方文档
Dubbo是阿里巴巴公司开源的一个高性能、轻量级的 Java RPC 框架
致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA (面向服务的)服务治理方案。
所以我们在学习的时候,通常是用到了springboot来当主体,来帮助我们创建对象然后包括在里面实现mybatis,dubbo等等中间件,那么springboot就利用它ioc和aop的特性方便我们注册对象,注册配置,那么mybatis就方便我们调用数据库,那么dubbo就方便我们进行远程调用,那么只是远程调用是不行的,所以还会在远程调用的基础上,增加服务注册 注册中心,服务熔断等等其他的技术,但是要知道dubbo主要用来实现我们远程调用的框架的
Dubbo的基本使用之前我们知道rpc是远程调用的,那么dubbo就是方便我们进行远程调用的,但是我们不知道调用谁,在哪里调用,ip和端口号是什么,那么这时候就需要注册中心了
先来个例子体验一下:这个例子中没有使用注册中心
创建两个maven工程一个当server一个当cl ...
RPC远程服务调用
RPC远程服务调用RPC的诞生
RPC远程过程调用(Remote Procedure Call)
调用远程计算机上的服务,就像调用本地服务一样。
1、首先我们调用需要知道jar包在哪里
2、所以我们需要一个注册中心,存放jar包的位置
3、当我们使用jar包的时候我们的controller层会先从注册中心中查询获得jar包的位置,然后再进行调用
后期会有框架封装这些操作,虽然代码上没有变化但是底层进行了封装。
RPC的JAVA版本–RMIRMI(remote method invocation),可以认为是RPC的java版本,允许运行在一个java 虚拟机的对象调用运行在另一个java虚拟机上对象的方法。
这是一个纯java版本的,如果你调用的对象不是java编写的,就无法利用RMI.
实现原理
RMI使用的是JRMP(Java Remote Messageing Protocol)协议, JRMP是专门为java定制的通信协议,所以是纯java的分布式解决方案
实现RMI程序步骤1、创建一个远程接口,继承java.rmi.Remote接口
2、实现远程接口,并继承UnicastR ...
Springboot
SpringbootSpring Boot 是一个快速开发框架,可以迅速搭建出一套基于Spring框架体系的应用,是Spring Cloud的基础。
Spring Boot开启了各种自动装配,从而简化代码开发,不需要编写各种配置文件,只需要引入相关依赖就可以迅速搭建一个应用
特点
1、不需要web.xml
2、不需要springmvc.xml
3、不需要tomcat,SpringBoot内嵌了一个tomcat
4、不需要配置JSON解析,支持REST架构
5、个性化配置非常简单
如何使用
Spring Boot 2.x要求必须基于Spring 5.x,要求java版本必须是8以上
Spring Boot的使用第一种方法是新建Maven工程然后在pom.xml中继承父项目
导入启动器Spring Boot的启动器实际上就是一个依赖。这个依赖中包含了整个这个技术的相关jar包,还包含了这个技术的自动配置,以前绝大多数XML配置都不需要配置了。当然了,启动器中自动配置无法实现所有内容的自动配置,在使用Spring Boot时还需要进行少量的配置(这个配置不是在xml中了,而是在pro ...
固定思路详解
固定思路详解SpringbootSpringboot的依赖为什么可以不写版本号在父版本进入之后在进入父版本所依赖的父版本之后,发现里面写好了我们以后可能依赖的依赖的版本号,已经固定写好了,这里管理者所有依赖的版本,导入依赖之后不写版本就用这里的版本,有个版本号仲裁中心。
Springboot是怎么扫包的?在SpringApplication.run方法中传入了启动类的字节文件,还有参数,这里通过反射获得了启动类的注解@SpringBootApplication,而这个注解里面自动的功能,比如包扫描和自动装载。
而里面有个@EnableAutoConfiguration 就实现了自动包扫描,会获得包名然后,开始扫描。所以启动类必须覆盖所有与业务相关的类:启动类所在的包必须是业务类所在包的同包或者父包。如果没有覆盖,业务类就不会自动装配到IoC容器中。
Springboot如何配置呢?有一些默认的配置已经写好了都放在了所依赖的父项目中的仲裁中心里面,而springboot是在@SpringBootConfiguration里面有个@Import(AutoConfigurationImpor ...
踩坑记录
mybatis创建SqlSessionFactory的bean实例失败的排查思路结果就出现问题了:mybatis创建sqlSessionFactory时,出现如下错误
意思是无法创建sqlSessionFactory的bean实例,sessionfactory作为mybatis的核心,创建不了实例,那还怎么玩下去!?于是马上想思路解决:
①xml配置写错;
②mapper路径写错;
123456<!--SqlSessionFactory--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="mapperLocations" value=" ...









