面试集合
面试集合java基础的集合
Collection接口的常用方法
12345增加:add(E e) addAll(Collection<? extends E> c)删除:clear() remove(Object o)修改:查看:iterator() size()判断:contains(Object o) equals(Object o) isEmpty()
总结一下:首先是接口不能创建对象,利用实现类创建对象,
集合有一个特点:只能存放引用数据类型的数据,不能是基本数据类型
基本数据类型放入到集合里面会自动装箱。
特别问题String、StringBuilder、StringBuffer 区别和联系1、String 类是不可变类、即一旦一个 String 对象被创建后,包含在这个对象中的字符序列是不可改变的,制止这个对象销毁。
2、StringBuffer 类则代表一个字符序列可变的字符串,可以通过 append、insert、reverse、setCharAt、setLength 等方法改变其内容。一旦生成了最终的字符串,调用 toString 方法将其转变为 Str ...
设计模式
设计模式统一过程(UP)统一过程(Unified Process,简称UP)是一种软件开发过程框架,它是一种迭代的、增量的开发方法,旨在帮助开发团队更好地管理软件项目。
统一过程的主要特点包括:
迭代开发:将整个项目分解为多个迭代周期,每个周期完成一定的功能模块,逐步构建完整的软件系统。
增量交付:在每个迭代周期结束时,交付一个可运行的软件版本,以便客户和用户能够及时了解项目进展并提供反馈。
风险管理:通过持续评估项目中的风险,并在必要时进行调整,确保项目按计划进行。
适应性:根据项目需求和团队经验,可以调整统一过程的各个方面,以适应不同的项目场景。
文档化:在整个开发过程中,保持对软件设计、实现和测试的详细记录,以便团队成员之间共享信息并确保项目的可维护性。
代码质量的评价标准代码质量:
1、可维护性 :不去破坏原有的代码设计以及不引入新的bug的前提下,修改或者新增代码
2、灵活性 :在添加新代码的时候,不破坏资深的前提下接纳新代码。
3、简洁性:别人理解时间最小化。
4、可复用性:减少重复代码编写,复用已有的代码
5、可测试性 :在单元测试的时候易于测试。
6、可扩展性:对 ...
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 ...
固定思路详解
固定思路详解SpringbootSpringboot的依赖为什么可以不写版本号在父版本进入之后在进入父版本所依赖的父版本之后,发现里面写好了我们以后可能依赖的依赖的版本号,已经固定写好了,这里管理者所有依赖的版本,导入依赖之后不写版本就用这里的版本,有个版本号仲裁中心。
Springboot是怎么扫包的?在SpringApplication.run方法中传入了启动类的字节文件,还有参数,这里通过反射获得了启动类的注解@SpringBootApplication,而这个注解里面自动的功能,比如包扫描和自动装载。
而里面有个@EnableAutoConfiguration 就实现了自动包扫描,会获得包名然后,开始扫描。所以启动类必须覆盖所有与业务相关的类:启动类所在的包必须是业务类所在包的同包或者父包。如果没有覆盖,业务类就不会自动装配到IoC容器中。
Springboot如何配置呢?有一些默认的配置已经写好了都放在了所依赖的父项目中的仲裁中心里面,而springboot是在@SpringBootConfiguration里面有个@Import(AutoConfigurationImpor ...









