java的基础常识

java的基础常识一 基础 1 集合 1 类关系图 2 集合 集合 ArrayList Lin list 如何扩容 2 IO 3 多线程 4 异常 5 网络编程 二 框架 1 SpringMVC 1 用户发送请求 DispatcherSe 中央控制器 2 DispatcherSe

大家好,我是讯享网,很高兴认识大家。



一、基础

1、集合

1)类关系图

2)集合

集合ArrayListLin                      

 

 

 

 

 

 

list如何扩容

2、IO

3、多线程

4、异常

5、网络编程

二、框架

1、SpringMVC

1)用户发送请求---》DispatcherServlet中央控制器

2)DispatcherServlet调用处理器映射器找到处理器---》HandlerMapping处理器映射器

3)HandlerMapping返回HandlerExcutionChain给Dispatcher

4)DispatcherServlet---》调用HandlerAdapter---》Controller-

5)Controller---》返回ModelAndView--》HandlerAdapter---》返回ModelAndView--》DispatcherServlet

6)DispatcherServlet---》视图解析viewResolver--》返回view--》DispatcherServlet

7)DispatcherServlet---》渲染视图view

8)DispatcherServlet----》相应用户

2、Spring

Spring生态、Spring技术栈

 

IOC

 

AOP

1)如何给单个方法加入切面

 

Bean

 

Spring事务

 

3、Mybatis

1)#{}和${}的区别

2)Mybatis的传值方式

方法1:顺序传参法

 
 讯享网 
 
讯享网

里面的数字代表你传入参数的顺序。

这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错。

方法2:@Param注解传参法

 
 
讯享网

里面的名称对应的是注解括号里面修饰的名称。

这种方法在参数不多的情况还是比较直观的,推荐使用。

方法3:Map传参法

 
 
 

里面的名称对应的是里面的key名称。

这种方法适合传递多个参数,且参数易变能灵活传递的情况。

方法4:Java Bean传参法

 
 
 

里面的名称对应的是类里面的成员属性。

这种方法很直观,但需要建一个实体类,扩展不容易,需要加属性,看情况使用。

 

4、SpringBoot

优点

 

5、SpringCloud

6、Dubbo

7、Zookeeper

三、数据库

1、存储过程

sql语句需要先编译然后执行,而存储过程(Sroed Procedure)十一组为了完成特定功能的sql语句集,经编译后存储在数据库中,用户通过制定存储过程的名字并给定参数(如果存储过程中带有参数)来调用它

存储过程是可编程的函数,在数据库总创建并保存,可以由sql语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定的动能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式

优点

1)增强sql语音的功能和灵活性

2)标准组件式编程

3)较快的执行速度

2、sql语句

from表索引---》where过滤条件---》Group By分组---》Having对分组数据过滤条件---》select那些列,及计算---》order by 排序

left join左连接--》返回包括坐标的所有记录和右边中连接字段相等的记录

right join右连接---》返回包括右表中所有记录和左表中连接字段相等的记录

inner join等值连接---》只返回俩个表中连接字段相等的行

3、数据库优化

3.1、数据库压力变大,读写分离

主从数据库之间的数据需要同步(可以使用mysql自带的master-slave方式实现主从复制)

应用中需要根据业务进行对应的数据源选择(可以采用第三方数据库中间件,例如mycat)

3.2、使用搜索引擎缓解读库的压力

创建普通索引:

java的基础常识

 

创建唯一索引:不重复。列值唯一,但是唯一索引可以有空值。

 

创建主键索引:主键索引不可以有空值。

 

删除索引

 

 组合索引

 

全文索引

 

  修改索引

 

 显示索引信息

 

B+树的查询时间---》树的高度,log(n)
hash存储索引---》o(1)
树---》前中后便利、二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树、字典树

1)二叉排序数据

左边根节点小,右边根节点大,并且左右子树都是二叉排序树


有序序列,二叉排序树退化成链表

2)平衡树
    
插入的时候调整这棵树,让它的节点尽可能平均分布
树的查找性能取决于树的高度,让树尽量平衡,就是为了降低树的高度

3)B树(文件系统索引)
是一种多路搜索树,他的每个子节点可以拥有多于俩个孩子节点。M路的B树最多可以拥有M个孩子节点
进一步降低树的高度
不限制路数,B树就退化成一个有序数组了
文件系统和数据库的索引都是存储在硬盘上,并且如果数据量大的化,不一定能一次性加载到内存中(程序运行时内存情况)
可以每次加载B树的一个节点,然后一步步往下找
假设内存一次最多加载2个数

3)B+树(数据库索引)

是在B树的基础上进行改造,它的数据都在叶子结点,同时叶子结点之间还加了指针形成链表
    
如果是多条的话,B树需要做局部的中序遍历,可能要跨层访问。而B+树由于所有数据都在叶子结点,不用跨层,
同时由于有链表结构,只需要找到首尾,通过链表就能把所有数据取出来了。

如果一张表用hash更快,但数据库中经常会选择多条,这时候B+树索引有序,并且又有链表相连,它的查询效率比hash就快很多了。

而且数据库中的索引一般是在磁盘上,数据量大的情况可能无法一次装入内存,B+树的设计可以允许数据分批加载,同时树的高度较低,提高查找效率。

3.3、引入缓存机制缓解数据库的压力

Memcache

Redis

3.4、某些场景下,可以对用户的某些IP的访问频率做限制

那这方内存中不合适,放数据库又太麻烦,这个时候可以用Nosql的方式来代替传统的关系型数据库

MongDB

3.5、数据库的水平/垂直拆分

垂直拆分:把数据库不同业务的数据拆分到不同的数据库中

水平拆分:把同一个表中的数据拆分到俩个甚至更多的数据库中,水平拆分的原因是某些业务数据量已经达到单个数据库的瓶颈,这个时候可以采取拆分到多个数据库中

四、数据结构

五、设计模式

六、Linux

七、其他知识

1、Docker

2、jenkins

3、Elasticsearch

八、前端

1、Node.js

2、MVVN

vue.js

九、JVM

十、编程题

1、输入一行字符,分别统计其英文字母、空格、数字和其他字符个数

 

2、将一个数组逆顺序输出
     要求实现函数(不能调用api)
     void Rev(int InputArray[].unsigned int n)
    【输入】InputArray 给定的数组        n:数组的长度
    【输出】InputArray:你顺序的数组
    【返回】无

    1、将数组转换为ArrayList    Arrays.asList(s);
    2、调用集合工具类Conllections.reverse(list);
    3、list.toArray(s);

 
 

4、List集合排序及去重

使用Collections的sort()方法排序

 

 使用set集合去重

 

十一、项目

OOA、OOD、OOP区别

OOA是面向对象的分析 Analysis
OOD是面向对象的设计 Design
OOP是面向对象的编程 Programming
都是相辅相成的: 分析是为了设计,设计是为了编程。
都属于软件工程的不同课题。

本文部分知识来源:

互联网侦察---》面试现场---》作者---》channingbreeze 

https://mp.sohu.com/profile?xpt=Z2hfY2Q2YTQ2NzI2YWVmQHNvaHUuY29t&_f=index_pagemp_2&spm=smpc.content.author.3.38Y1iM07T

Java技术栈       https://www.javastack.cn/

 

小讯
上一篇 2024-12-23 16:37
下一篇 2025-01-02 21:16

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/1007.html