总结——0923

session 和 cookie

  1. cookie保存在浏览器端,session保存在服务端。
  2. cookie如果在浏览器端对cookie进行设置对应的时间,如果没有对cookie设置时间,则默认关闭浏览器,则cookie就会删除
  3. cookie只能存储字符串,而session存储结构类似于hashtable的结构,可以存放任何类型。
  4. cookie最多可以存放4k大小的内容,session则没有限制。
  5. session的安全性要高于cooKie

分布式架构能够使用 session

但是随着分布式架构的流行,单个服务器已经不能满足系统的需要了,通常都会把系统部署在多台服务器上,通过负载均衡把请求分发到其中的一台服务器上,这样很可能同一个用户的请求被分发到不同的服务器上,因为session是保存在服务器上的,那么很有可能第一次请求访问的A服务器,创建了session,但是第二次访问到了B服务器,这时就会出现取不到session的情况

MySQL和Oracle的区别

  1. Oracle是大型数据库,体系比较庞杂。Mysql是中小型数据库,而且是开源的
  2. Oracle占有内存空间大,Mysql占有空间比较小
  3. Oracle支持大并发访问量,是OLTP最好的工具,Mysql并发小,面对大访问量可以做分表分库优化
  4. Oracle没有自动增长类型,Mysql一般使用自动增长类型
  5. Oracle处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置,并且只能用ROWNUM<100,不能用ROWNUM>80,MYSQL处理翻页的SQL语句比较简单,用LIMIT开始位置,记录个数
  6. MYSQL里用 字段名 like ‘%字符串%’
    RACLE用 字段名like '%字符串%'但不能使用索引,速度不快。(这种方法不能使用索引)
  7. 事物提交方式不同,oracle默认不自动提交,需要用户手动提交。Mysql默认是自动提交。不支持事物。
    Mysql默认自动提交,也就是你提交一个query,他就直接执行,我们可以通过:
    set autocommit=0 禁止自动提交
    set autocommit=1 开启自动提交

SpringBoot常用注解

总结——0923_第1张图片

  1. @ResponseBody可以作用在方法上或类上,表示该方法的返回结果直接写入 HTTP response body 中,而不会被解析为跳转路径,即不会经过视图解析器,返回什么数据即在页面输入什么数据

  2. @RestController
    该注解是@Controller和@ResponseBody的结合体,一般用于类,作用等于在类上面添加了@ResponseBody和@Controller
    总结——0923_第2张图片

HashMap

初始容量:默认值为16(懒加载机制,只有当第一次put的时候才创建)
当hashmap中元素个数超过160.75=12的时候,就把数组的大小扩展为216=32,即扩大一倍,然后重新计算每个元素在数组中的位置

线程池

(1)降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
(2)提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
(3)提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。

参数
  1. corePoolSize(必需):核心线程数。
  2. maximumPoolSize(必需):线程池所能容纳的最大线程数。
  3. keepAliveTime(必需):线程闲置超时时长.
  4. unit(必需):指定 keepAliveTime 参数的时间单位。
  5. workQueue(必需):任务队列。
  6. threadFactory(可选):线程工厂。
  7. handler(可选):拒绝策略。

线程共享的JVM内存区域有哪些

堆,几乎所有对象实例被分配到这里,也是垃圾收集器管理的主要区域
方法区,由于存储虚拟机加载的类的信息、常量、静态变量、JIT编译后的代码等

Servlet

servlet是一个Java编写的程序,此程序是基于http协议的,在服务器端(如Tomcat)运行的,是按照servlet规范编写的一个Java类。
客户端发送请求至服务器端,服务器端将请求发送至servlet,servlet生成响应内容并将其传给服务器
即,我们在浏览器点击链接和按钮产生的消息不是发送给servlet的,而是发送给web容器(如Tomcat、jetty)的,web容器接受消息后不知道怎么处理,转交给我们编写的servlet处理,那么web容器怎么和servlet交流呢,于是就有了servlet接口(因为接口是定义一种规范的良好表达形式)。我们只需要编写Java类符合servlet规范,那么就能被web容器识别,并被容器管理。

servlet和jsp的区别

1、jsp经编译后就是servlet。
2、jsp更擅长页面表现,servlet更擅长逻辑编辑
3、jsp位于MVC设计模式的视图层,而servlet位于控制层

Servlet的生命周期

Servlet的生命周期为启动服务器之后的第一次调用到服务器关闭
在Servlet中可以重写init()方法和destroy()方法,其中init()方法为第一次调用Servlet,被加载进内存时执行。destroy()方法为关闭服务器时,Servlet被销毁时执行.

左连接,右连接,内连接,全连接

左连接 (left join):返回包括左表的所有记录和右表中连接字段相等的记录
右连接(right join):返回包括右表的所有记录和左表中连接字段相等的记录
等值连接或者叫内连接(inner join):只返回两表相连相等的行
全外连接(full join):返回左右表中所有的记录和左右表中连接字段相等的记录。

你可能感兴趣的:(面试,oracle,数据库,服务器)