zoukankan      html  css  js  c++  java
  • 超时空大决战

    1.spring springboot springcloud的区别

    spring框架为开发java应用程序提供基础架构支持,如:springJDBC,springMVC,springAOP

    springboot:消除了设置spring应用程序所需的xml配置,快速开发框架,通过maven依赖的继承方式,内置http服务器

    springcloud:是微服务框架的有序集合,springcloud依赖springboot框架实现微服务开发,rpc远程调用技术,springboot的web组件默认集成了springmvc,可以实现http+json的轻量级传输

    2.springboot实现了什么减少配置

    3.springboot中有几种事务

    4.索引的类型,非主键索引细分

    主键索引:数据库主键列使用的就是主键索引,一张表只有一个主键,且主键不能为null,部重复,在innodb表中,当没有显示指定表的主键时,innodb会自动检测表中是否有唯一索引的字段,有则设置默认主键,否则会自动创建自增主键

    二级索引(辅助索引),二级索引有唯一索引,普通索引,前缀索引

    唯一索引:允许数据为null,一张表允许多个唯一索引

    普通索引:允许数据重复和null

    前缀索引:适用于字符串的索引

    全文索引:检索大文本数据中的关键字信息

    聚集索引与非聚集索引

    聚集索引即索引结构与数据存放一起的索引,主键索引属于聚集索引,优点:查询速度快,缺点:依赖有序数据,更新代价大

    非聚集索引:索引结构和数据分开存放的索引,二级索引 优点:更新代价比聚集索引要小,缺点:依赖有序数据,可能会二次查询(回表)

    覆盖索引,若需要查询的字段正好是索引的字段,就直接根据索引查到数据,无需回表查询

    5.索引的数据结构

    6.运行时数据区分为那几块

    程序计数器,虚拟机栈,本地方法栈,堆,方法区

    7.方法私有变量存在哪

    8.年轻代垃圾回收算法

    9.对java中数据流的理解,作用分类,适用场合

    10.web开发基础,servlet,jsp

    servlet的生命周期:web容器加载servlet,声明周期开始,调用servlet的init()方法进行servlet的初始化,通过调用service方法()实现根据请求的不同调用do方法,结束服务,web调用servlet的destory()方法

    11.web发送请求后,请求和整个响应流程

    域名解析-与服务器建立连接(3次握手)-发起http请求-服务器响应http请求,浏览器获得html代码-浏览器解析html代码,并请求html代码中的资源(js,css,图片)-浏览器对页面进行渲染

    12.常用请求方式,get和post区别

    get、post是http协议发送请求的两种方法,都是tcp连接,但由于http协议的规定和浏览器的限定,在应用中产生区别,

    get产生一个数据包,post产生两个tcp数据包,

    get请求只能进行url编码,而post支持多种编码

    get请求参数会完整保留在浏览器历史记录里,而post中参数不会保留

    get在url传输的参数是由长度限制,而post没有

    get只接受ascii字符,post没有限制

    get将参数暴露在url中,更不安全

    get通过url传递,post放在request body中

    get回退是浏览器会从之前缓存拿结果,post每次调用创建新的资源

    13.请求那几部分组成,响应由那几部分组成

    http请求报文由请求行,请求头,空行,请求数据组成

    请求行:请求方法(get,post,head,put),url,http协议版本

    请求头:产生请求的浏览器类型,客户端可识别的内容类型列表,主机地址

    空行:发送回车符和换行符,通知服务器下不再有请求头

    请求数据:用户提交的查询信息,在post方法中数据以keyvalue形式发送请求

    http响应由响应消息行,响应消息头,响应正文

    响应消息行:包含协议、版本,响应状态码,对响应状态码的描述

    响应消息头:服务器与客户端通信的暗码,告诉客户端执行某些操作

    响应消息正文

    14.maven的理解

    maven是java的自动化构建工具,1.约定的目录结构,2.pom,构建过程一切设置都在这个文件中进行配置,3,坐标(groupid,artfactid,version)确定一个maven工程4.仓库:本地仓库,远程仓库,5依赖,maven解析依赖信息从本地仓库查找被依赖的jar包,6.声明周期:清理,编译,测试,打包,安装,部署,生成项目报告,发布站点,7.继承,聚合

    15.cookie和session

    存储位置,cookie数据信息存放在客户端浏览器上,session存放在服务器上

    存储容量,单个cookie保存<=4kb,站点最多保存20个cookie,session没有上限,但保证服务器端性能,设置session删除机制

    存储方法:cookie只保存ascii字符串,通过编码方式存储unicode字符或二进制数据,session能存储任何类型数据

    隐私:cookie对服务端可见,可以进行cookie欺骗,不安全,session在服务器上

    有效期:cookie设置属性,达到长期有效,session不能长期有效

    服务器压力,每个用户都会产生一个session,若并发访问十分多,会耗费大量内存

    跨域支持,cookie支持跨域名访问,session不支持

    16.转发和重定向

    17.json数据格式和数据传递

    json有两种格式:①对象格式:{"key1":obj,"key2":obj,"key3":obj...}、②数组/集合格式:[obj,obj,obj...]。

     在服务器端对象的转换过程可以使用官方提供的API,JSONObject和JSONArray分别为对象和数组的转换类型

    当JSON经传输到达客户端时,需要完成JSON到JavaScript对象的转换,

    如果使用JS原生的方法进行转换的话,可以使用eval()方法,但需要在JSON的前后连接上左右圆括号

    18.程序的同步和异步

    同步:
      主机A发送数据的时候,主机B必须等待接收,处于阻塞状态。

    异步:
      主机A发送数据的时候,主机B无须等待接收,主机B要获得数据就从缓存里取,就好比别人给你发邮件一样。

    19.ajax

    20.动态代理

    21.红黑树为什么查找快

    22.object有哪些方法

    23.数据库处理字符串的方法

    concat(str1,str2)连接字符串函数

    convert(str,signed)将str转化为数字类型

    convert(datatype,getdate(),1)将数据类型datetime转为字符串

    substring_index(str,分隔符,n)n代表第几个分隔符,n为正截取左边,n为负,截取右

    substring(str,起始下标,长度)截取字符串

    24.linux常用的命令

    25.mapper文件怎么对应到dao层

    26.mybatis标签类型,怎么使用,结果集怎么用,$和#的用法

    resulttype返回类型

    1.返回一般数据类型,像string,hashmap

    2.返回javabean类型

    3.返回list类型 注意这里的 resultType 返回值类型是集合内存储数据的类型,不是 'list'

    4.返回map类型,reslutype填map

    Mybatis 的Mapper.xml语句中parameterType向SQL语句传参有两种方式:#{}和${}

    我们经常使用的是#{},一般解说是因为这种方式可以防止SQL注入,简单的说#{}这种方式SQL语句是经过预编译的,

    它是把#{}中间的参数转义成字符串,举个例子:

    select * from student where student_name = #{name} 

    预编译后,会动态解析成一个参数标记符?:

    select * from student where student_name = ?

    而使用${}在动态解析时候,会传入参数字符串

    select * from student where student_name = 'lyrics'

    总结:

    #{} 这种取值是编译好SQL语句再取值
    ${} 这种是取值以后再去编译SQL语句

    #{}方式能够很大程度防止sql注入。
    $方式无法防止Sql注入。
    $方式一般用于传入数据库对象,例如传入表名.
    一般能用#的就别用$.

    27.select from where groupby orderby执行顺序

    (7)  SELECT 
    (8)  DISTINCT <select_list>
    (1)  FROM <left_table>
    (3)  <join_type> JOIN <right_table>
    (2)  ON <join_condition>
    (4)  WHERE <where_condition>
    (5)  GROUP BY <group_by_list>
    (6)  HAVING <having_condition>
    (9)  ORDER BY <order_by_condition>
    (10) LIMIT <limit_number>
    首先执行from,from对两个表进行笛卡尔积,得到虚拟表
    执行on进行条件过滤
    添加外部和,只有当outer join才会发生,left outer join把左表作为保留吧,左表数据全部查询,若右表无对应数据,用null填充
    执行where执行条件过滤
    执行groupby对where的字句进行分组操作
    执行having
    执行select
    执行distinct
    执行orderby
    执行limit分页
    https://blog.csdn.net/weixin_43907800/article/details/105374147

    28.线程的interrupt方法

    中断线程,会设置该线程中断状态位,即设置为true,线程会不时检查这个中断标志位,以判断线程是否应该被中断

    判断线程释放被中断,使用thread.currentThread().isinterrupted()方法(不会立刻清除中断标示位,不会中断标设置为false),而不要使用thread.interrupt(会将中断标示位清除,重新设置false)

    如何中断线程

    若线程处于阻塞状态,则在线程组检查中断表示如果发现中断表示为true,则会在调用出抛出interruptedException异常,抛出异常后立即将线程中断位标识清除,重新设置为false,抛出异常是为了线程从阻塞状态醒过来,并在结束线程前让程序员有足够的时间来处理中断请求

    29.mysql中分页怎么做

    a.limit关键字

    select * from table  limit m,n

    m代表记录开始的index,从0开始,n指从m+1条开始,取n条

    b.主键索引或唯一索引加limit实现

    假设每页10条,SELECT * FROM 表名称 WHERE id_pk > (pageNum*10) LIMIT M

    c.基于索引再排序

    SELECT * FROM 表名称 WHERE id_pk > (pageNum*10) ORDER BY id_pk ASC LIMIT M

    30.aop和ioc

    32.头插法和尾插法

    33.脏读幻读

    34.try和catch中有return时,finally里面的语句会被执行吗

    如果程序是从try代码块或者catch代码块中返回时,finally中的代码总会执行。而且finally语句在return语句执行之后return返回之前执行的。当finally有返回值时,会直接返回。不会再去返回try或者catch中的返回值。

  • 相关阅读:
    Java项目往数据库中插入数据,出现中文乱码
    转-取字符串中值(精辟)
    转-js对数组的操作(精辟)
    get、post(菜鸟教程转)
    (转)style/getComputerStyle/currentStyle
    去除默认样式
    link和import
    编辑中
    CSS的transfrom ransition
    css中 Span 元素的 width 属性无效果原因及多种解决方案(转自http://www.cnblogs.com/hnyei/archive/2012/03/12/2392026.html)
  • 原文地址:https://www.cnblogs.com/ashin1997/p/14609235.html
Copyright © 2011-2022 走看看