Java面试杂记

1. 如何实现数据库读写分离
利用数据库读写分离,从而减小数据库的压力。在多个服务器上部署MySQL,将其中一台设置为主数据库其它设置为从数据库,从数据库仅负责读的操作(从数据库仍会被动的进行写操作,为了保持数据的一致性)这样很大程度上避免数据丢失同时也可以减轻数据库的连接,减轻主数据库的负载
主从复制的方式
1. 同步复制:master的变化必须等待slave1、slave2…完成后才返回
2. 异步复制:master只需完成自己数据库的操作,不考虑slave是否收到二进制日志(MySQL的默认设置)
3. 半同步复制:master只保证slave中的一个操作成功

2. Tomcat虚拟路径配置
说明:很多朋友都会很疑惑,既然我们都知道在Tomcat服务器上部署项目只要将 项目打包,然后放到webapps目录下就可以了,为什么还需要配置虚拟路径?的确,把项目放到webapps目录下非常方便,至少在部署一个项目时,直接把项目扔到webapps目录下所进行的操作会比设置虚拟路径容易的多。但是如果考虑到长久性的操作以及多个项目呢?
设置虚拟路径的优势有如下三点:
第一:我们开发一个项目,在未定版之前需要进行无数次的修改,如果部署测试项目的时候直接将项目打成war包放到webapps目录下,那么每一次版本变更都需要将新的版本放到webapps目录下覆盖原先的版本,这样对于我们测试项目来说是不是非常麻烦呢?如果建立一个虚拟路径,直接映射到项目原件,这样一来在测试阶段是不是非常的方便?(当然这点对于使用集成开发环境工具的开发者来说可以忽略);
第二:Tomcat是一个服务器,既然是一个服务器是不是就有容量这么一说呢? 虽然这个容量是你说了算,但是再怎么大是不是也有盘符容量限制?如果将所有的项目都部署到webapps目录下,当项目比较大而且项目较多的时候是不是需要考虑一下盘符的感受呢?所以使用虚拟路径也可以为搭载Tomcat服务器的盘符分压!
第三:多个应用需要有不同的域名访问,也就是下面讲的tomcat多域名配置。

  1. 修改tomcat下的conf文件夹下的server.xml文件(需要重启tomcat)

    Path:指的是访问web应用的URL入口
    docBase:值得是web应用的文件路径,可以是绝对路径也可以是相对路径
    reloadable:当reloadable=true时,相关文件改变。Tomcat先停止web app并释 放内存,然后加载web app。这样以来可以省去手工部署web app工程时间和开发工具一起使用可以提高效率。
    crossContext:如果想在应用内调用 ServletContext.getContext()来返回在该虚拟主机上运行的其他 web application 的 request dispatcher,设为 true。在安全性很重要的环境中设为 false,使得 getContext()总是返回 null。缺省值为 false。
    Debug:与这个 Engine 关联的 Logger 记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为 0。

  2. 添加配置文件(此方法不需要重启tomcat)
    在Tomcat根目录下的/conf/Catalina/localhost/路径下新建一个x.xml,并添加

    即可创建虚拟站点,虚拟站点名为x。注意docbase指向你自己的应用程序目 录,各参数参见方法一中的标签的参数(注意此文件名将作为Context中的path属性值,不管文件里的path属性值如何设置也是无效的)。

3. Tomcat最大连接数
方式一:
Tomcat的server.xml中Context元素的以下参数应该怎么配合适


maxThreads=“150” 表示最多同时处理150个连接
minSpareThreads=“25” 表示即使没有人使用也开这么多空线程等待
maxSpareThreads=“75” 表示如果最多可以空75个线程,例如某时刻有80人访问,之后没有人访问了,则tomcat不会保留80个空线程,而是关闭5个空的。
acceptCount=“100” 当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接。

5. 校验文本框不可以输入中文
1.用文本框的CSS属性ime-mode实现。

2.只保留Unicode编码在0和255之间的字符。

6. Jsp和servlet的区别
1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)
2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.
3.Servlet中没有内置对象,Jsp中的内置对象都是通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.
Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。
而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。

7. 数据库查询top10
MySQL数据库:select * from tab order by id desc limit 0, 10;

8. Join、inner join、outer的区别

Inner join:1.INNER JOIN 产生的结果是A、B的交集(即名字A、B名字相同的行)
SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
在这里插入图片描述

LEFT [OUTER] JOIN :产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
在这里插入图片描述

.RIGHT [OUTER] JOIN :产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代。
结果参考上图
FULL [OUTER] JOIN :产生A和B的并集。对于没有匹配的记录,则会以null做为值。SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
在这里插入图片描述

9. Cookie和session的区别
1.cookie数据是存在客户浏览器上,session数据存放在服务器上。
2.Cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗 (使用用户的cookies获取相关信息。)
3.Session会存放在一定时间内保存在服务器上。当访问增多,会比较占用服 务器的性能
4.单个cookie保存的数据不能超过4k, 很多浏览器都限制一个站点最多保存
20个cookie。

发布了17 篇原创文章 · 获赞 4 · 访问量 2059

猜你喜欢

转载自blog.csdn.net/myITliveAAA/article/details/91411362