前言
最近在海投+无尽的面试,基础知识考的太多了,趁着快到五一先做个总结,五一之后看情况再继续战斗=.=
问题
后端
Spring控制反转和注入方式
IOC所注重的是设计思想上,从一个常规的创建对象的做法,即new一个对象,转变成向IOC容器递交需求,被动的等待IOC容器返回资源给你。而说到依赖,则是我们所需求的对象,需要依赖容器来获得,这个过程即是依赖注入。本质上IOC和DI是同一思想下不同维度的表现。
依赖注入有3种方式,分别为构造注入,设置注入,接口注入。
1.接口注入:在接口中定义要注入的信息,并通过接口来完成注入。(**Spring不支持这种注入方式。**不支持的原因是,Spring声称其是非入侵式的“离开这个框架也能活”,如果使用接口注入的话,就违背了这一原则)。(通过在xml中描述实现注入)
有时候资源并非来自于自身的系统,而是来自于外界,比如说数据库连接资源完全可以在Tomcat下配置,然后通过JNDI的方式去获取它,这样的数据库连接资源就属于开发工程外的资源。
2.setter注入:setter注入利用Java Bean规范所定。首先将构造方法设置为无参的构造方法,然后利用setter注入为其设置新的值,这也是通过java的反射技术得以实现的。
注意:构造器注入是通过构造方法注入,setter注入是通过setter方法注入,都是通过Java的反射技术实现的。
<bean id="zzf" class="com.zzf.csdn">
<property name="a" value="1"></property>
<property name="b" value="2"></property>
<property name="c" value="3"></property>
</bean>
3.构造器注入:构造器注入依赖于构造方法的实现,构造方法可以是有参数的,也可以是无参数的 。
在没有spring之前,我们在大多数情况下,我们都是通过构造方法来创建类对象。Spring可以采用反射的方式,通过构造方法来完成注入,这就是构造方法的原理。
1、引入spring的支持
2、通过描述具体的类,构造方法和其中的参数,这样spring就可以通过相应的信息用反射的方式创建对象。
3、在test文件中加载spring配置文件的方法
String configLocation ="applicationContext.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(configLocation);
Role role = context.getBean("role", Role.class);
Spring Security
Authentication: 检查凭据并确保当前登录的用户是他们声称的身份的过程。
Authorization: 决定是否允许当前登录用户在您的应用程序中执行操作的过程。
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
MySQL和MongoDB的区别
MySQL:关系型数据库。
1、在不同的引擎上有不同的存储方式。
2、使用传统的SQL语句进行查询,成熟度高。
3、开源数据库的份额在不断增加,MySQL的份额页在持续增长。
4、缺点就是在海量数据处理的时候效率会显著变慢。
MongoDB:非关系型数据库(NoSQL)。文档型数据库,可以存放JSON, XML, BSON等类型的数据。
这些数据具备自述性,呈现分层的树状数据结构。数据结构由键值(key=>value)对组成。
1、存储方式:虚拟内存+持久化。
2、查询语句:是独特的MongoDB的查询方式。
3、适合场景:事件的记录,内容管理或者博客平台等等。
4、架构特点:可以通过副本集,以及分片来实现高可用。
5、数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
6、成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。
数据库 | MongoDB | MySQL |
---|---|---|
数据库模型 | 非关系型 | 关系型 |
存储方式 | 以类JSON的文档的格式存储 | 不同引擎有不同的存储方式 |
查询语句 | MongoDB查询方式(类似JavaScript的函数) | SQL语句 |
数据处理方式 | 基于内存,将热数据存放在物理内存中,从而达到高速读写 | 不同引擎有自己的特点 |
事务性 | 仅支持单文档事务操作,弱一致性 | 支持事务操作 |
占用空间 | 大 | 小 |
join操作 | 无 | 有 |
MySQL索引的数据类型,以及使用情况
CREATE INDEX indexName ON table_name (column_name)
见Free Joe: 《一文搞懂MySQL索引(清晰明了)》
链接:https://blog.csdn.net/wangfeijiu/article/details/113409719
多态的三个必要条件
继承,重写,父类引用指向子类对象
类继承的过程
1.一个类的静态代码块,构造代码块,构造方法的执行流程:
静态代码块>构造代码块>构造方法
2.静态的内容是随着类的加载而加载
静态代码块的内容会优先执行
3.子类初始化之前先进行父类的初始化
前端
垂直、水平对齐
水平居中对齐
1.元素水平居中对齐(如 <div>
):margin:auto;
2.文本在元素内居中对齐:text-align: center;
3.图片居中对齐:将图片放于块中,参考1
左右对齐
1.使用定位方式:position: absolute;
.right {
position: absolute;
right: 0px;
width: 300px;
border: 3px solid #73AD21;
padding: 10px;
}
2.使用float方式:
.right {
float: right;
width: 300px;
border: 3px solid #73AD21;
padding: 10px;
}
垂直居中对齐
1.使用padding
.center {
padding: 70px 0;
border: 3px solid green;
}
2.使用line-height
.center {
line-height: 200px;
height: 200px;
border: 3px solid green;
text-align: center;
}
/* 如果文本有多行,添加以下代码: */
.center p {
line-height: 1.5;
display: inline-block;
vertical-align: middle;
}
3.使用postion
和transform
.center {
height: 200px;
position: relative;
border: 3px solid green;
}
.center p {
margin: 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
html定位基准
如果是相对定位,那么元素就是参照自身位置,如left:20px
,就是离原来自身位置的左边20px。
如果是绝对定位,参考元素就是已定位(除了static,因为static就是position的默认属性)的父元素;如果没有,就一直向上找,直到找到定位元素;如果一直到html标签都没有找到,就以html标签为基准定位。
总结
凉凉 :)
最近被问Spring boot和微服务比较多,可以多看下
参考链接:
小喜_ww:《MongoDB和MySQL的区别》
链接:https://www.jianshu.com/p/56524b50b376
Free Joe: 《一文搞懂MySQL索引(清晰明了)》
链接:https://blog.csdn.net/wangfeijiu/article/details/113409719
HTML定位基准
链接:https://www.cnblogs.com/huangshizhou/p/9760879.html
索引相关:https://blog.csdn.net/gaotiedun1/article/details/88584362
php中文网:https://www.php.cn/java/guide/463640.html
菜鸟教程:
https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html
https://www.runoob.com/java/java-polymorphism.html
https://www.runoob.com/css/css-align.html