Java 开发基础知识点总结

本博文主要写了五个模块的相关知识,一一列下;

一,面向对象的概念

二,网络基础

三 ,计算机原理和操作系统

四,数据库基础

五,开发相关基础

注意不要死记硬背,要真正的去理解。

一,面向对象的概念

1.对象和类的关系

举例说一下:类是对象的模板,对象是类的实例。比如人是一个类,而某是一个人就是他的对象 ;

也可以这样理解:对象是类的实例,人指某一类,某一个人就是人类中的一个具体的实例

2.类里边包含什么

类(class)和对象(object)是两种以计算机为载体的计算机语言合称。

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存空间。对象是具体的占用内存空间

类中包含属性和方法

3类的特性

封装:

 将数据和操作封装作为一个整体,隐藏具体实现和细节,只想外部提供接口,所以能保证内部 高内聚性与外部低耦合性,使用者不必了解具体实现,只需要通过外部接口,以特定的权限使用        类的成员,增加安全性,简化编程

继承:关键词extends  

 优点:减少代码量,提高复用率,类与类之间存在继承关系,实现多态的前提

 缺点:类与类之间“强耦合”关系

多态:多种形态:分为两种:引用多态和方法多态

 同一操作,作用于不同的对像,可以有不同的解释,产生不同的结果。在运行时,可以通过指向基类的的指针,来调用实现派生类中的方法

抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对 象有哪些属性和行为,并不关注这些行为的细节是什么。

二,网络基础

1,DNS是什么?

域名系统(英文: Domain Name System,缩写DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够让人更为方便的去访问互联网。

2,域名和端口

域名(Domain Name)是一串用点分隔的名字组成的internet上某一台计算机或计算机的名称,用于数据传输时标记计算机的方位。

端口指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息,控制信息和状态信息,相应的端口分别称为数据端口,控制端口,状态端口

3.CDN是什么?

全称是Context Delivery Network,即内容分发网络。CDN是构建在现在网络基础上的智能虚拟网络,依靠部署在各地的边缘型服务器,通过中心平台的负载均衡,内容分发,调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

 4.外网IP和内网IP区别?内网IP网段?

外网IP就是互联网的IP,内网IP就是内部网的IP。区别外部与内部
内网IP网段如下:
10.0.0.0/8--------------10.0.0.0~10.255.255.255(A类)
172.16.0.0/12---------172.16.0.0~172.31.255.255(B类)
192.168.0.0/16 -------192.168.0.0~192.168.255.255(C类)

 

5.VPN是什么?

虚拟专用网络(VPN)的功能是:在公用网络建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN可通过服务器,硬件,软件等多种方式实现。

6.Http和Https的区别,默认端口号又是什么。

一、基本概念
  HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
  HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
  HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二、区别

  Http协议传输的数据都是未加密的,也就是明文传递,因此使用Http协议传输信息不安全。为了信息传输安全,于是网景公司设计了SSL(Secure Sockets Layer)协议对Http传输的数据进行加密,从此,Https诞生了。

  通俗来说:Https就是SSL+Http协议构建的可进行加密传输,身份认证的网络协议,要比Http安全;

  http和https主要区别如下:

  1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用,http不用申请证书。
  2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

7.Get请求与Post请求的区别

  Get在浏览器回退时是无害的,而Post是会再次提交请求。

  Get产生的Url地址可以被Bookmark,而Post不会,

  Get请求都会被浏览器cache,而Post不会,除非手动设置

  Get请求只能进行url编码,而Post支持多种编码格式

  Get请求参数会被完整保留在浏览器历史记录中,而Post中参数不会被保留。

  Get请求在URL中传送的参数是有长度限制的,而Post没有限制

  对于参数的数据类型,Get只能接受ASClI字符.Post没有限制

  Post比Get更安全,因为Get的参数直接暴露在URL上,所以不能用来传递敏感信息。

  Get参数通过URL传递,Post放在Request body中

三 ,计算机原理和操作系统

1,内存,CPU,硬盘

内存是计算机的重要部件之一。  它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行。内存性能的强弱影响计算机整体发挥的水平。

中央处理器(CPU),是电子计算机的主要设备之一,电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责读取指令,对指令译码并执行指令的核心部件。中央处理器主要包括两个部分,即控制器、运算器,其中还包括高速缓冲存储器及实现它们之间联系的数据、控制的总线。电子计算机三大核心部件就是CPU、内部存储器、输入/输出设备。中央处理器的功效主要为处理指令、执行操作、控制时间、处理数据。

电脑硬盘是计算机最主要的存储设备

2,linux基本命令

绝对路径用什么符号表示?  绝对路径:如/etc/init.d

当前目录、上层目录用什么表示?  当前 ./   上层  ../

主目录用什么表示?       ~/

切换目录用什么命令?    cd 

怎么查看当前进程?怎么执行退出?怎么查看当前路径?
查看当前进程:ps
执行退出:exit
查看当前路径:pwd

怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?
清屏:clear
退出当前命令:ctrl+c 彻底退出
执行睡眠 :ctrl+z 挂起当前进程fg 恢复后台
查看当前用户 id:”id“:查看显示目前登陆账户的 uid 和 gid 及所属分组及用户名
查看指定帮助:如 man adduser 这个很全 而且有例子;adduser --help 这个告诉你一些常用参数;info adduesr;

Ls 命令执行什么功能?可以带哪些参数,有什么区别?
ls 执行的功能:列出指定目录中的目录,以及文件
哪些参数以及区别:a 所有文件l 详细信息,包括大小字节数,可读可写可执行的权限等

目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
创建目录:mkdir
创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件输出,都会创建文件
复制文件:cp 7. 文件权限修改用什么命令?格式是怎么样的?
文件权限修改:chmod
格式如下:

$ chmod u+x file 给 file 的属主增加执行权限
$ chmod 751 file 给 file 的属主分配读、写、执行(7)的权限,给 file 的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
$ chmod u=rwx,g=rx,o=x file 上例的另一种形式
$ chmod =r file 为所有用户分配读权限
$ chmod 444 file 同上例
$ chmod a-wx,a+r file同上例
$ chmod -R u+r directory 递归地给 directory 目录下所有文件和子目录的属主分配读的权限

移动文件用哪个命令?改名用哪个命令?
mv mv

复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?
cp cp -r ????

删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?
rm rm -r rmdir

3,线程和进程的区别

进程和线程的根本区别是进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。另外区别还有资源开销、包含关系、内存分配、影响关系、执行过程等。

资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的。

影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行。

进程和线程的根本区别是进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。

四,数据库基础

1,关系型数据库和非关系型数据库有哪些区别?

1.数据存储方式不同  2.扩展方式不同  3,对事物的支持不同

2,数据库索引是做什么用的?

在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

3,什么情况下需要给字段建立索引?

表的主键、外键必须有索引;
数据量超过300的表应该有索引;
经常与其他表进连接的表,在连接字段上应该建索引;
经常出现在Where句 order by中的字段,特别是表的字段,应该建索引;
索引应该建在选择性的字段上;
索引应该建在字段上,对于的本字段甚超字段,不要建索引;

4,什么情况下索引会失效?(摘自百度)

1.单独引用复合索引里非第一位置的索引列
假如有INDEX(a,b,c),
当条件为a或a,b或a,b,c时都可以使用索引,
但是当条件为b,c时将不会使用索引。
复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第一个字段,索引才会被使用。因此,在复合索引中索引列的顺序至关重要。如果不是按照索引的最左列开始查找,则无法使用索引。
2.对索引列运算,运算包括(+、-、*、/、!、、%、like’%_’(%放在前面)、or、in、exist等),导致索引失效。
错误的例子:select * from test where id-1=9;
正确的例子:select * from test where id=10;
注意!!
mysql sql 中如果使用了 not in , not exists , ( 不等于 !=) 这些不走
< 小于 > 大于 = 这个根据实际查询数据来判断,如果全盘扫描速度比索引速度要快则不走索引 。
3.对索引应用内部函数,这种情况下应该建立基于函数的索引。
select * from template t where ROUND(t.logicdb_id) = 1
此时应该建ROUND(t.logicdb_id)为索引。
4、类型错误,如字段类型为varchar,where条件用number。
例:template_id字段是varchar类型。
错误写法:select * from template t where t.template_id = 1
正确写法:select * from template t where t.template_id = ‘1’
5.如果MySQL预计使用全表扫描要比使用索引快,则不使用索引
6.like的模糊查询以%开头,索引失效
7.索引列没有限制 not null,索引不存储空值,如果不限制索引列是not null,oracle会认为索引列有可能存在空值,所以不会按照索引计算

5,慢查询是什么?

分析MySQL语句查询性能的方法除了使用EXPLAIN输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”。

6,主从库是什么?

1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
3、读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。

 

五,开发相关基础

1.MVC框架?

MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。

2.js跨域请求什么意思?怎么解决跨域问题?

跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容端口和协议的不同,只能通过后台来解决。localhost和127.0.0.1虽然都指向本机,但也属于跨域

解决:1,jsonp跨域  2, nginx反向代理  3,  postMessage

3.服务器500错误是什么?503、504错误是什么?

HTTP 500 - 内部服务器错误

503 -服务器目前无法使用

504 - 表示超时,客户端发送的请求没有到达网关

4.负载均衡是什么?怎么实现?

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

5.Cookie和Session分别是什么?Cookie的容量限制是多少?说⼀下  Session  的 ⼯作原理?

Cookie是一段不超过4KB的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。

session工作原理:

  1. 用户第一次请求服务器时,服务器端会生成一个sessionid
  2. 服务器端将生成的sessionid返回给客户端,通过set-cookie
  3. 客户端收到sessionid会将它保存在cookie中,当客户端再次访问服务端时会带上这个sessionid
  4. 当服务端再次接收到来自客户端的请求时,会先去检查是否存在sessionid,不存在就新建一个sessionid重复1,2的流程,如果存在就去遍历服务端的session文件,找到与这个sessionid相对应的文件,文件中的键值便是sessionid,值为当前用户的一些信息
  5. 此后的请求都会交换这个 Session ID,进行有状态的会话。
6.如果客户端禁⽌ Cookie 能实现 Session 还能⽤吗?

cookie禁用后 如何取session中的值
记录用户状态的时候 少不了session和cookie ,那如果cookie禁用后,session如何取值呢。
用户端有3种常用方式:cookie,隐藏表单提交,附带在请求的url里面

7.Session共享原理是什么?怎么实现?

.应服务器间的session复制共享
. 基于cache DB缓存的session共享
. 基于redis缓存的session共享目的是实现单点登录

 

posted @ 2021-03-07 18:00  旧歌  阅读(399)  评论(0编辑  收藏  举报