java8新特性
java8新特性Lambda表达式这是 Java 8 最受关注的特性。它允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
语法:(parameters) -> expression 或 (parameters) -> { statements; }
12345678910// 旧方式new Thread(new Runnable() { @Override public void run() { System.out.println("Hello World"); }}).start();// Java 8 Lambda 方式new Thread(() -> System.out.println("Hello World")).start();
函数式接口Lambda 表达式必须依赖于函数式接口。
定义:一个接口中有且仅有一个抽象方法(但可以有多个默认方法或静态方法)。
注解:@FunctionalInterface(可选,用于编译器检查)。 ...
无题
Docker 基础篇1、Docker简介是什么问题:为什么会有docker出现假定您在开发一个尚硅谷的谷粒商城,您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外,您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。您希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销。请问?您要如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复?
答案就是使用容器。Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案——-系统平滑移植,容器虚拟化技术。
环境配置相当麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。
docker理念Docker是基于Go语言实现的云开源项目。Docker的主 ...
数组和字符串(算法)
数组和字符串(算法)数组和列表、集合之间有什么不同?集合:一个比较抽象的概念,集合里元素类型不一定相同,集合里的元素没有顺序。
列表:没有索引,有顺序,类型没有限制,地址可以相邻也可以不相邻。
数组:有索引,有顺序,类型相同,地址相同
数组中的查询按位置查询。时间复杂度: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、可扩展性:对 ...
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 ...










