数组和字符串(算法)
数组和字符串(算法)数组和列表、集合之间有什么不同?集合:一个比较抽象的概念,集合里元素类型不一定相同,集合里的元素没有顺序。
列表:没有索引,有顺序,类型没有限制,地址可以相邻也可以不相邻。
数组:有索引,有顺序,类型相同,地址相同
数组中的查询按位置查询。时间复杂度:O(1)。索引+偏移量(下标)按值查询。时间复杂度:O(N)。计算机不知道个位置处的值信息,需要一一查询判断。数组添加元素时间复杂度:O(n)删除元素:时间复杂度:O(n)
处理数组常用APIArrays类:
1234567891011121314151617181920212223//Arrays.toString(数组)方法。方法作用:快速输出数组内容。//Arrays.sort(数组)。方法运用:给数组排序,默认升序//Arrays.sort(数组名,起始下标,排序个数)。对字符串进行排序时,是对每一个字符比较,而不是简单的比较长度//Arrays.equals()方法。方法作用:比较两个数组内容是否相等//Arrays.equals()是比较数组内容,而a.equals(b) 这样的方法是比较地址值//Arra ...
面试集合
面试集合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 短连接 重新 ...