面试集合
面试集合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、可扩展性:对 ...
Docker
Docker1.Docker的介绍与安装
Docker是基于Go语言实现的云开源项目。 Docker的主要目标是Build,Ship and Run Any App,Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到一次封装,到处运行。
Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作
解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术
1.2 Docker能干什么?1.2.1以前的虚拟化技术 虚拟机(virtual machine)就是带环境安装的一种解决方案。
它可以在一种操作系统里面运行另一种操作系统,比如在Windows 系统里面运行Linux 系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一 ...
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" ...
redis
Redis一.Redis简介1.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当做 ...
Nginx+lua+OpenResty高性能实践
Nginx+lua+OpenResty高性能实践NginxNginx是一个高性能的Web服务器和反向代理的软件
Web服务器:就是运行我们wen服务的容器,提供web功能,类似tomcat也提供累死的功能。
代理:就是软件架构和网络设计中,一个重要的概念,有两种代理:正向代理和反向代理。
正向代理用户设置代理服务器。
所有的请求都由代理服务器发出,无法判断代理了多少用户端,叫正向代理。
反向代理在服务器端设置代理,素有请求,由服务器端接受,然后再由代理服务器发送到后方的服务器。这么依赖,所有请求,都由一个服务器接受,无法判断代理的多少服务端。这是反向代理、
利用反向代理,就可以即将请求分发到系统内部的多个节点上,从而减少每个节点的并发数。而这些节点在外界看来就是一个系统,表现出唯一的ip,也就是代理服务器的IP.
是用来做负载均衡用的
Nginx安装官网:nginx
点击documentation然后点击installing nginx
然后打开centos虚拟器
1yum install yum-utils
安装完毕
然后继续根据官方文档
然后在官方文档的目录下面发现没有 ...
前端速通
前端速通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什么是DubboDubbo是阿里巴巴公司开源的一个高性能、轻量级的 Java RPC 框架
致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。
Dubbo主要特性
面向接口代理的高性能RPC调用:提供高性能的基于代理的远程调用能力,服务以接口为粒度,屏蔽了远程调用底层细节。
智能负载均衡:内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。
服务自动注册与发现:支持多种注册中心服务,服务实例上下线实时感知。
高度可扩展能力:遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。
运行期流量调度:内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。
可视化的服务治理与运维:提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。
Spring Cloud 团队
Spring Cloud Alibaba
HTTP 短连接 重新 ...
RPC远程服务调用
RPC远程服务调用RPC的诞生
RPC远程过程调用(Remote Procedure Call)
调用远程计算机上的服务,就像调用本地服务一样。
RPC的JAVA版本–RMIRMI(remote method invocation),可以认为是RPC的java版本,允许运行在一个java 虚拟机的对象调用运行在另一个java虚拟机上对象的方法。
实现原理
RMI使用的是JRMP(Java Remote Messageing Protocol)协议, JRMP是专门为java定制的通信协议,所以是纯java的分布式解决方案
实现RMI程序步骤1、创建一个远程接口,继承java.rmi.Remote接口
2、实现远程接口,并继承UnicastRemoteObject
3、创建服务器程序,同时使用createRegistry方法注册远程接口对象
4、创建客户端程序,通过Naming类的lookup方法来远程调用接口中的方法
当然这种方式的效率很低
企业级RPC解决方案Dubbo阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spri ...