当前位置 博文首页 > java李阳勇的博客:Java 万字长文基础知识总结(下)-王者笔记《

    java李阳勇的博客:Java 万字长文基础知识总结(下)-王者笔记《

    作者:[db:作者] 时间:2021-07-27 11:52

    上一篇 Java基础知识学习总结之(上)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    目录

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

    ?内存、CPU、硬盘?

    ?Linux基本命令

    线程和进程的区别?

    四、数据库基础

    关系型数据库和非关系型数据库有哪些区别?举例说明

    数据库索引是做什么用的

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

    ?什么情况下索引会失效?

    慢查询是什么?

    主从库是什么?

    五、Java开发相关基础

    MVC框架?

    js跨域请求是什么意思?

    服务器500、502、503、504、505错误是什么?

    负载均衡是什么?

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

    如果客户端禁? Cookie 能实现 Session 还能用吗?

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

    java的历史

    正则表达式?

    反射技术?

    ?Java 语?有哪些特点?

    重载和重写的区别?

    接?和抽象类的区别是什么?

    成员变量与局部变量的区别有哪些?

    == 与 equals?

    hashCode 与 equals ?

    hashCode()介绍

    为什么要有 hashCode

    JVM

    什么是字节码?采用字节码的好处是什么?

    JDK 和 JRE


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

    ?内存、CPU、硬盘?

    内存是计算机的重要部件之?。 它是外存与CPU进?沟通的桥梁,计算机中所有程序的运?都在内存中进?。内存性能的强弱影响计算机整体发挥的?平。 内存(Memory)也称内存储器和主存储器,它用于暂时存放CPU中的运 算数据,与硬盘等外部存储器交换的数据。 只要计算机开始运?,操作系统就会把需要运算的数据从内存调到 CPU中进?运算。当运算完成,CPU将结果传送出来。 内存的运?也决定计算机整体运?快慢的程度。 内存条由内存芯片、电路板、??指等部分组成。 电脑硬盘是计算机最主要的存储设备。硬盘(港台称之为硬碟,英? 名:Hard Disk Drive, 简称HDD 全名温彻斯特式硬盘)由?个或者多个 铝制或者玻璃制的碟片组成。这些碟片外覆盖有铁磁性材料。 绝?多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。 早期的硬盘存储媒介是可替换的,不过今日典型的硬盘是固定的存储媒 介,被封在硬盘里 (除了?个过滤孔,用来平衡空?压?)。随着发 展,可移动硬盘也出现了,?且越来越普及,种类也越来越多.?多数微 机上安装的硬盘,由于都采用温切斯特(winchester)技术?被称之为“温切 斯特硬盘”,或简称“温盘”。 中央处理器(CPU),是电?计算机的主要设备之?,电脑中的核? 配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU 是计算机中负责读取指令,对指令译码并执?指令的核?部件。中央处理 器主要包括两个部分,即控制器、运算器,其中还包括?速缓冲存储器及 实现它们之间联系的数据、控制的总线。电?计算机三?核?部件就CPU、内部存储器、输?/输出设备。中央处理器的功效主要为处理指 令、执?操作、控制时间、处理数据。

    ?Linux基本命令

    1.sudo

    这个SuperUserDo是Linux新?要使用的最重要的命令。需要根权限的 每?个命令都需要这个sudo命令。你可以在需要根权限的每个命令之前使 用sudo。$ sudo su

    2.ls(list)

    借助list命令,终端就会显示你正在处理的那个目录里面的所有?件和?件夹。假设我在/home?件夹里面,想查看/home里面的目录和? 件。

    /home$ ls

    /home中的ls返回下列结果:

    imad lost+found

    3.cd

    更改目录(cd)是始终在终端中使用的主要命令。它是最基本的Linux命 令之?。使用这个命令很简单。只要输?你想要从当前目录进?到的那个 ?件夹的名称。如果想要返回上?级,只要将双圆点(..)作为参数。假设我在/home目录中,想进?到始终在/home里面的usr目录。下面 是我可以使用cd命令的?法:

    /home $ cd usr

    /home/usr $

    4.mkdir

    仅仅更改目录还不全面。有时候,你想要创建?个新的?件夹或??

    件夹。可以使用mkdir命令来做到这?点。只要在终端中将你的?件夹名称放在mkdir命令的后面即可。

    $ mkdir folderName

    5.cp

    拷贝粘贴是我们为了组织整理?件?需要完成的重要任务。使用cp将 帮助你从终端拷贝粘贴?件。首先,你确定想要拷贝的那个?件,然后输?目的地位置,即可粘贴?件。

    $ cp src des

    注意:如果你将?件拷贝到任何新?件都需要根权限的目录,那么你就需要使用sudo命令。

    6.rm

    rm这个命令可以移除你的?件,甚?移除你的目录。如果?件需要根权限才能移除,可以使用-f。你还可以使用-r来进?递归移除,从?移除你的?件夹。

    $ rm myfile.txt

    7.apt-get

    就不同的发?版??,这个命令各不相同。在基于Debian的Linux发 ?版中,想安装、移除和升级任何软件包,我们可以使用?级包装?具 (APT)软件包管理器。apt-get命令可帮助你安装需要在Linux中运?的软件。这是个功能强?的命令??具,可以执?安装、升级、甚?移除软件这类任务。 在其他发?版(比如Fedora和Centos)中,有不同的软件包管理器。

    Fedora过去有yum,但现在它有dnf。

    $ sudo apt-get update

    $sudo dnf update

    8.grep

    你需要找到?个?件,但是又记不得它的确切位置或路径。grep可以帮助你解决这个问题。你可以使用grep命令,根据给定的关键字帮助找到?件。

    $ grep user /etc/passwd

    9.cat

    作为用户,你常常需要查看来自脚本的?些?档或代码。同样,其中?个Linux基本命令是cat命令。它会为你显示?件里面的?本。

    $ cat CMakeLists.txt

    10.poweroff

    有时候,你需要直接从终端来关机。这个命令就能完成这项任务。别忘了在命令的开头添加sudo,因为它需要根权限才能执?poweroff。

    $ sudo poweroff

    线程和进程的区别?

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

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

    包含关系:如果?个进程内有多个线程,则执?过程不是?条线的,

    ?是多条线(线程)共同完成的;线程是进程的?部分,所以线程也被称为轻权进程或者轻量级进程。

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

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

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

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

    四、数据库基础

    关系型数据库和非关系型数据库有哪些区别?举例说明

    关系型数据库,是指采用了关系模型来组织数据的数据库,其以?和列的形式存储数据,以便于用户理解,关系型数据库这?系列的?和列被称为表,?组表组成了数据库。用户通过查询来检索数据库中的数据,?查询是?个用于限定数据库中某些区域的执?代码。关系模型可以简单理解为?维表格模型,??个关系型数据库就是由?维表及其之间的关系组成的?个数据组织。例如:mysql、oracle、sql server NoSQL,泛指非关系型的数据库。随着互联?web2.0?站的兴起,传统的关系数据库在处理web2.0?站,特别是超?规模和?并发的SNS类型的web2.0纯动态?站已经显得?不从?,出现了很多难以克服的问题,?非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产?就是为了解决?规模数据集合多重数据种类带来的挑战,尤其是?数据应用难题。例如:redis

    数据库索引是做什么用的

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

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

    表的主键、外键必须有索引;

    数据量超过300的表应该有索引;

    经常与其他表进连接的表,在连接字段上应该建索引;

    经常出现在Where句 order by中的字段,特别是表的字段,应该建索引;

    索引应该建在选择性的字段上;

    索引应该建在字段上,对于的本字段甚超字段,不要建索引;

    ?什么情况下索引会失效?

    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会认为索引列有可能存在空值,所以不会按照索引计算

    慢查询是什么?

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

    主从库是什么?

    1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切 换到从数据库继续?作,避免数据丢失。

    2、架构的扩展。业务量越来越?,I/O访问频率过?,单机?法满?,此时做多库的存储,降低磁盘I/O访问的频率,提?单个机器的I/O性能。

    3、读写分离,使数据库能支撑更?的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。

    五、Java开发相关基础

    MVC框架?

    MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从?使同?个程序可以使用不同的表现形式。比如?批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,?旦M改变,V应该同步更新。 [1-2] 模型-视图-控制器(MVC)是Xerox PARC在??世纪??年代为编程语?Smalltalk-80发明的?种软件设计模式,已被?泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是?个有用的?具箱,它有很多好处,但也有?些缺点。

    js跨域请求是什么意思?

    跨域访问,简单来说就是 A ?站的 javascript 代码试图访问 B ?站,包括提交内容和获取内容。由于安全原因,跨域访问是被各?浏览器所默认禁?的。

    服务器500、502、503、504、505错误是什么?

    HTTP 500 - 内部服务器错误

    HTTP 502 - ?关错误

    503 服务器目前?法使用(由于超载或停机维护)。通常,这只是暂时状态。(服务不可用)

    504 表示超时,也就是客户端所发出的请求没有到达?关

    505 服务器不支持请求中所用的 HTTP 协议版本。(HTTP 版本不受支持)

    负载均衡是什么?

    负载均衡建立在现有?络结构之上,它提供了?种廉价有效透明的?法扩展?络设备和服务器的带宽、增加吞吐量、加强?络数据处理能?、提??络的灵活性和可用性。

    负载均衡(Load Balance)其意思就是分摊到多个操作单元上进?执?,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从?共同完成?作任务。

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

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

    Session:在计算机中,尤其是在?络应用中,称为“会话控制”。

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

    如果客户端禁? Cookie 能实现 Session 还能用吗?

    能用。需要特殊处理。

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

    应用服务器间的session复制共享

    基于cache DB缓存的session共享

    基于redis缓存的session共享目的是实现单点登录

    java的历史

    1991 年Sun公司的James Gosling等?开始开发名称为 Oak 的语?,希望用于控制嵌?在有线电视交换盒、PDA等的微处理器;

    1994年将Oak语?更名为Java;

    Java的三种技术架构:

    JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;

    JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;

    JAVAME:Java Platform Micro Edition,开发电?消费产品和嵌?式设备,如?机中的程序;

    正则表达式?

    好处:正则的出现,对字符串的复杂操作变得更为简单。

    特点:将对字符串操作的代码用?些符号来表示。只要使用了指定符号,就可以调用底层的代码对字符串进?操作。符号的出现,简化了代码的书写。

    下一篇:没有了