内容从网络摘抄,如有错误,欢迎指出

  • 数据库

    • SQL的基本操作
      INSERT INTO 表名 VALUES(值1,。。。)insert into studet(num,name,sex,age)values(140010,张三,男,23)DELETE FROM 表名 WHERE 列名=值delete from student where num=140011;UPDATE 表名 SET 列名=新值 WHERE 列名=某值update student set age=21 where ID=140010SELECT 列名 FROM 表名select * from 表名称
    • 事务的四大特性?
      原子性、一致性、隔离性、持久性
    • 数据库的三大范式
      第一范式:确保数据库表字段的原子性。
      第二范式:首先要满足第一范式,另外包含两部分内容,一是表必须有一个主键;二是非主键列必须完全依赖于主键。
      第三范式:不能存在传递依赖
    • group by与having区别
      group by:对select查询出来的结果进行分组
      having:对group by查询出来的分组进行过滤
      SELECT class_nameFROM student_infoGROUP_BY class_nameHAVING a>=20
    • 正向代理和反向代理
      正向代理
      1.位于客户端与原始服务器之前的服务器,客户端发送请求给代理服务器,代理服务器向原始服务器转发请求,并将获得的内容返回给客户端。
      反向代理
      2.用户直接访问反向代理服务器就可以获得目标资源,反向代理作为Web服务器的前置机器,降低网络和服务器负载,提高访问效率。
    • MyBatis是否支持延迟加载?延迟加载的原理是什么?
      支持association关联对象和collection关联集合对象的延迟加载,association是一对一,collection是一对多查询。
      //在映射card_one时使用association标签 private Card card_one; //在使用card_many时使用collection标签 private List<Card> card_many;
      2.在lazyloadingenabled=true|false配置是否启用延迟加载。
      <settings> <setting name="logImpl" value="STDOUT_LOGGING" /> <setting name="lazyLoadingEnabled" value="true"/> <setting name="aggressiveLazyLoading" value="false"/></settings>
      3.使用CGLIB创建代理对象,调用方法时,拦截器invoke()发现B是null值,单独发送事先保存好的sql,把B查询上来,再setB,这样B属性就有值了。
    • 索引有几种
      普通索引、唯一索引、主键索引、组合索引、全文索引
      普通索引:没有任何限制
      唯一索引:值必须唯一,允许空值。UNIQUE
      主键索引:特殊唯一索引,不允许空。PRIMARY
      组合索引:使用了创建索引时的第一个字段,才会被使用,遵循最左前缀
      全文索引:查找关键字。FULLTEXT
    • 数据库约束有哪几种
      主键约束、唯一约束、检查约束、默认约束、外键约束
      主键约束:在表中定义一个主键来唯一确定表中每一行数据的标识符
      唯一约束:当前行字段里的数据与表中其它行的数据相比是唯一的
      检查约束:在表中定义一个对输入的数据按照设置的逻辑进行检查的标识符
      默认约束:默认值当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
      外键约束:外键约束是指用于在两个表之间建立关系,需要指定引用主表的哪一列
    • 数据库引擎
      INNODB:默认的事务型存储引擎,引入了行级锁和外键约束
      MYISAM:访问速度快
      ARCHIVE:不支持索引,提供了压缩功能
      MEMORY:放在内存,使用哈希索引
    • SQL调优
      1.避免使用select *
      2.避免在where子句进行NULL判断
      3.避免使用or作为连接条件,除非前后都是在索引中
      4.使用%开头的模糊查询也会导致全盘扫描
      5.避免在Where子句使用表达式操作符
    • 慢查询
      show full processlist可以查看是否有慢SQL正在执行
      MYSQL如何恢复半个月之前的数据
      整库备份+binlog恢复,要有定期备份和保存binlog日志
    • 数据库隔离级别
      读未提交、读已提交、可重复读,串行化
      幻读:指的是一个事务在前后两次查 询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。
      不可重复读是读异常,但幻读则是写异常。
      不可重复读是读异常的意思是,如果你不多select几次,你是发现不了你曾经select过的数据行已经被其他人update过了。
      避免不可重复读主要靠一致性快照。
      幻读是写异常的意思是,如果不自己insert一下,你是发现不了其他人已经偷偷insert过相同的数据了。
      解决幻读主要靠间隙锁。
      脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据
    • Hash索引与B+树索引的区别
      Hash不支持排序,范围,模糊
      B+树存在叶子节点,适合区间
    • 谈谈Inner join,left join,right join理解
      Inner join是指相交的部分
      left join以左表为基础
      right join以右表为基础
    • 如何避免SQL注入
      使用正则表达式过滤传入的参数
    • 聚簇索引与非聚簇索引的区别
      聚簇索引:索引项的顺序与表中记录的物理顺序一致。对于聚集索引,叶子结点即存储了真实的数据。
      非聚簇索引:叶结点包含索引字段值及指向数据页数据行的逻辑指针
    • 数据库优化
      根据三范式进行表结构的设计。
      系统配置的优化
      硬件优化
    • MyBatis插入一条数据时,如何返回自增长的ID
      usegeneratekey = true keyproperties = integer
    • MyBatis中#{}与${}区别在哪里
      #{}会自动加上单引号,${}不会自动加上单引号
      #{}可以防止sql注入,${}不能防止sql注入
    • 索引的优缺点?
      优点:加快数据查找的速度
      缺点:占用物理空间、增删改时间变长
  • Spring
    • 不同版本的 Spring Framework 有哪些主要功能?
      Spring 2.5 发布于 2007 年。这是第一个支持注解的版本。
      Spring 3.0 发布于 2009 年。它完全利用了 Java5 中的改进,并为 JEE6 提供了支持。
      Spring 4.0 发布于 2013 年。这是第一个完全支持 JAVA8 的版本。
    • 列举 Spring Framework 的优点。
      由 于 Spring Frameworks 的 分 层 架 构 , 用 户 可 以 自 由 选 择 自 己 需 要 的 组 件 。
      Spring Framework 支 持 POJO(Plain Old Java Object) 编 程 , 从 而 具 备 持 续 集成 和 可 测 试 性 。
      由 于 依 赖 注 入 和 控 制 反 转 , JDBC 得 以 简 化 。 它 是 开 源 免 费 的 。
    • Spring Framework 有哪些不同的功能?
      轻 量 级 - Spring 在 代 码 量 和 透 明 度 方 面 都 很 轻 便 。
      IOC - 控 制 反 转
      AOP - 面 向切 面 编 程 可 以 将 应 用 业 务 逻 辑 和 系 统 服 务 分 离 ,以 实 现 高 内 聚 。
      容 器 - Spring 负责 创 建 和 管 理 对 象 ( Bean) 的 生 命 周 期 和 配 置 。
      MVC - 对 web 应 用 提 供 了 高度 可 配 置 性 ,其 他 框 架 的 集 成 也 十 分 方 便 。
      事 务 管 理 - 提 供 了 用 于 事 务 管 理 的 通用 抽 象 层 。 Spring 的 事 务 支 持 也 可 用 于 容 器 较 少 的 环 境
      JDBC 异 常 - Spring的 JDBC 抽 象 层 提 供 了 一 个 异 常 层 次 结 构 , 简 化 了 错 误 处 理 策 略 。
    • Spring Framework 中有多少个模块,它们分别是什么?
      Spring 核心容器:Spring Core、Spring Bean、SpEL、Spring Context
      数 据 访 问 /集 成Date
      Web,应用程序的支持
      AOP,面向切面编程
      Test,为使用JUnit和TestNG进行测试提供支持
    • 什么是 Spring 配置文件?
      Spring 配 置 文 件 是 XML 文 件 。该 文 件 主 要 包 含 类 信 息 。它 描 述 了 这 些 类 是 如 何
      配 置 以 及 相 互 引 入 的 。
    • 什么是 Spring IOC 容器?
      Spring 框 架 的 核 心 是 Spring 容 器 。容 器 创 建 对 象 ,将 它 们 装 配 在 一 起 ,配 置 它们 并 管 理 它 们 的 完 整 生 命 周 期 。Spring 容 器 使 用 依 赖 注 入 来 管 理 组 成 应 用 程 序 的组 件 。 容 器 通 过 读 取 提 供 的 配 置 元 数 据 来 接 收 对 象 进 行 实 例 化 , 配 置 和 组 装 的 指令 。
      该 元 数 据 可 以 通 过 XML, Java 注 解 或 Java 代 码 提 供 。
    • 什么是依赖注入?
      不 必 创 建 对 象 , 但 必 须 描 述 如 何 创 建 它 们 。 您 不 是 直 接 在 代 码
      中 将 组 件 和 服 务 连 接 在 一 起 ,而 是 描 述 配 置 文 件 中 哪 些 组 件 需 要 哪 些 服 务 。由 IoC
      容 器 将 它 们 装 配 在 一 起
    • 可以通过多少种方式完成依赖注入?
      构造函数注入,setter注入,接口注入
    • spring 中有多少种 IOC 容器?
      BeanFactory - BeanFactory 就 像 一 个 包 含 bean 集 合 的 工 厂 类 。它 会 在 客 户 端要 求 时 实 例 化 bean。
      ApplicationContext - ApplicationContext 接 口 扩 展 了 BeanFactory 接 口 。它在 BeanFactory 基 础 上 提 供 了 一 些 额 外 的 功 能 。
    • 区分 BeanFactory 和ApplicationContext。
      BeanFactory 使用懒加载,ApplicationContext使用即时加载
    • IoC 的一些好处
      最小化应用程序中的代码量。
      它以最小的影响和最少的侵入机制促进松耦合。
      它支持即时的实例化和延迟加载服务。
    • Spring IoC 的实现机制。
      Spring 中 的 IoC 的 实 现 原 理 就 是 工 厂 模 式 加 反 射 机 制 。
    • SpringMVC框架中跟Rest架构风格有关的几个注解?
      GET、POST、PUT、DELETE
    • SpringBoot 和SpringMVC 的不同?
      一、SpringBoot是一个自动化配置的工具,SpringMVC是一个web框架。
      二、SpringMVC需要手动配置xml文件,同时需要配置Tomcat服务器,而SpringBoot采用约定大于配置的方式,进行自动装配,同时内置服务器,打开就可以直接用。
      三、Spring最初利用工厂模式和代理模式解耦应用组件。按照这种模式搞了一个MVC框架,用来开发web应用。然后为了再次简化工作流程,开发出了一些starter,这套就是Spring Boot。
    • Spring中bean的五种作用域
      Singleton:单例
      Prototype:原型
      request:请求作用域
      session:会话作用域
      global session:为整个HTTP请求中,在作用域方面就是application;
    • SpringBoot启动流程
      1.运行SpringApplication.run()方法
      2.确定应用程序类型
      3.加载所有的初始化类
      4.加载所有的监听器
      5.设置程序运行的主类
      6.开启定时器
      7.java.awy.headless设置为true无键盘鼠标照样工作
      8.获取并启用监听器
      9.设置应用程序参数
      10.准备环境变量
      11.忽略bean信息
      12.打印banner信息
      13.创建应用程序的上下文
      14.实例化异常报告
      15.准备上下文环境
      16.刷新上下文
      17.刷新上下文后置处理
      18.结束计时器
      19.发布上下文准备就绪时间
    • Spring AOP动态代理解释一下
      JDK动态代理和CGLIB动态代理
    • Spring事务的隔离级别
      读未提交、读已提交、可重复读、串行化
    • 什么是IOC
      反射和工厂模式
      反射:通过对象的描述信息生产出完整的对象
      工厂:代码更加松耦合
    • 什么是AOP
      面向切面,把与业务逻辑无关的代码抽离出来,如权限验证
    • Spring拦截器如何使用
      实现HandlerInterceptor接口,有三个方法
      preHandler方法执行之前执行
      postHandler方法执行之后执行
      afterCompletion方法执行完成时执行
    • SpringBoot常用注解
      @SpringBootApplication:开启自动配置
      @ResponseBody:将java对象转为json格式的数据。
      @PathVariable:将 URL 中占位符参数绑定到控制器处理方法的入参中
      @Controller:使用它标记的类就是SpringMVC的controller类
      @RestController:将视图返回给前端
      @Service:代表这个类是业务层组件
      @RequestMapping:映射url,设置type控制请求类型
      @RequestBody:接收json格式字符串
    • 对Spring的理解
      狭义:Spring Framework,核心思想控制反转,依赖注入,事务处理
      广义:spring MVC,spring Boot,Spring Cloud,管理对象,提高效率
    • Maven生命周期
      清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成
    • Spring Boot中Bean的生命周期
      Bean的定义、Bean的初始化、Bean的生存期和Bean的销毁
    • Spring MVC执行流程
      中央调度器(DispatcherServlet)接收请求并且调用处理器映射器(HandlerMapping)。
      处理器映射器(HandlerMapping)负责根据用户请求的 url 找到与之绑定的函数(即 Handler 处理器),并返回给中央调度器。
      中央调度器(DispatcherServlet)调用处理器适配器(HandlerAdapter)处理一系列操作,如:参数封装,数据格式转换,数据验证等,再执行处理器。
      处理器(Handler)执行完成后返回 ModelAndView。
      处理器适配器(HandlerAdapater)将处理器返回的结果 ModelAndView 也返回给中央调度器。
      中央调度器(DispatcherServlet)将 ModelAndView 返回给 ViewReslover(视图解析器)进行解析。解析后返回具体的 view。
      中央调度器(DispatcherServlet)对 view 进行渲染视图并响应用户。
    • Spring事务的传播机制
      1.Propagation.require没有事务就创建一个事务,存在事务就加入事务。
      2.new新建事务,如果存在事务,就抛出异常
      3.support支持当前事务,如果没有当前事务就以非事务方式运行
    • Get和Post的区别
      get是在请求头url里面的,大小有限制,不安全
      post是在请求体里面的,数据内容没有限制
    • servlet和controller的区别
      Spring MVC是基于servlet,负责处理请求,调用controller
  • 微服务
    • 网关的作用是什么?在网关中配置了什么内容?
      断言和过滤器,请求限流功能
      配置路由id,服务地址,和路由匹配条件
    • GateWay是什么,在项目中起到了什么作用?
      Gateway是在Spring生态系统之上构建的API网关服务。提供了相关的过滤器、断言、路由功能。
      路由:构建网关的基本模块,由ID,目标URI,一系列断言和过滤器组成,如果断言为true则匹配路由
      断言:匹配HTTP请求中的内容,例如请求头或请求参数,如果相匹配,则进行路由
      过滤器:使用过滤器,可以在请求被路由前后对请求进行修改
    • Nacos高可用怎么配置
      1.把cluster.conf.example复制一份,修改为cluster.conf,分别配置ip端口
      2.修改application.properties中的ip和端口
      3.以集群的方式启动startup.cmd -m cluster
    • Eureka如何搭建,才能规避因为网络原因导致客户端大面积下线
      1.自我保护机制,在最后一分钟收到心跳数小于期望阈值触发自我保护
      2.默认30秒客户端发送一次心跳,一分钟两次
    • jwt如何实现
      前端通过web表单将用户名和密码发送到后端的接口,后端核对用户名和密码成功后,将用户id等其他信息作为jwt负载。
      后端将jwt字符串作为登录成功的返回结果返回给前端,前端可以将返回的结果保存在localStorage上。
      jwt是用于声明某种主张的令牌。
      包括三部分:头信息、消息体、签名
    • 谈谈熔断
      使用Hystrix,服务降级的基础上,统计一段时间内失败数量达到设定值,开启短路,后续请求直接走fallback方法,设定时间后尝试恢复
    • 什么是Feign
      声明WEB服务客户端,将要调用的方法定义成抽象方法保存在本地
    • 为什么要用Nginx
      如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器,重新将请求提交到其他的节点上。
    • Nginx负载均衡算法怎么实现?策略有哪些?
      将服务器组成一个集群,用户访问时,先访问到一个转发服务器,再由转发服务器访问分发到压力更小的服务器
    • SpringCloud核心组件
      nacos注册与配置中心
      ZUUI:服务网关
      RIBBON:负载均衡
      Feign:声明性的WEB服务客户端
      HYSTRIC:断路器
  • Servlet
    • servlet生命周期
      初始化:WEB容器加载servlet,调用init()方法
      处理请求:请求到达时运行service方法。
      service自动派遣运行与请求相对应的doGet或doPost方法
      销毁:服务结束,web容器会调用servlet的destroy方法销毁servlet
    • get提交和post提交有何区别
      一、get一般用于从服务器上获取数据,post一般用于向服务器传送数据
      二、get的参数是拼接在url后面,用户在浏览器地址栏可以看到。post是放在http包的包体中
      三、get方式能提交的数据只能是文本,且大小不超过1024个字节,而post不仅可以提交文本还有二进制文件。
    • jsp和servlet有什么区别
      JSP就是Servlet,每次运行的时候JSP都首先被编译成servlet文件,然后再被编译成.class文件运行。
    • Request和Response分别是什么?
      HttpServletRequest:封装了与请求相关的信息HttpServletResponse:封装了与响应相关的信息
    • request.getAttribute()request.getParameter
      一、通过form表单或者url来向另一个页面或者servlet传递参数的时候需要用getParameter获取值;getAttribute只能获取setAttribute的值Parameter获取到的值只能是字符串,不可以是对象,而getAttribute获取到的值是Object类型的
      二、getParameter获取到的值只能是字符串,不可以是对象,而getAttribute获取到的值是Object类型的。
      三、setAttribute是应用服务器把这个对象放到该页面所对应的一块内存当中,当你的页面服务器重定向到另一个页面的时候,应用服务器会把这块内存拷贝到另一个页面对应的内存当中。通过getAttribute可以取得你存下的值,当然这种方法可以用来传对象。
    • JSP有哪些内置对象,作用是什么?
      request:包含用户端请求的信息
      response 包含服务器传回客户端的响应信息
      session 与请求有关的会话期
    • 四种会话跟踪技术作用域
      (1)page:一个页面(2)request::一次请求(3)session:一次会话(4)application:服务器从启动到停止。
    • JSP中动态INCLUDE和静态INCLUDE有什么区别
      include指令用于把另一个页面包含到当前页面中,在转换成servlet的时候包含进去的。
      动态INCLUDE用jsp:include动作实现,它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数.
      静态INCLUDE用include伪码实现,不会检查所含文件的变化,适用于包含静态页面
    • forward和redirect的区别
      一、从地址栏显示来说,forward的地址栏还是原来的地址。redirect显示的事新的url
      二、forward可以共享request里面的数据
      三、forward一般用于用户登录,redirect用于转发
  • Redis
    • 分布式锁
      1.Redission通过getLocl获取分布式锁,使用unlock释放锁,watchDog检查
      2.使用redis的setnx
    • 重载和重写的区别
      一、重载是相同的方法名,参数不同;重写是子类重写父类的方法
      二、重载是一个类中,重写是父类和子类之间
      三、重载是编译时的多态性,重写是运行时的多态性
      四、重载的参数个数、类型、顺序可以不相同,重写父子方法参数必须相同。
    • Redis哨兵模式
      Sentinel向所知道的Master,Slave以及其他Sentinel发送PING命令
      有效回复时间超过指定值,主观下线。
      标记为主观下线后,足够数量的sentinel确定主观下线,标记为客观下线。
    • Redis数据一致性-延迟双删
      1.删除redis
      2.更新数据库
      3.延时500毫秒
      4.删除redis
    • 分布式锁实现方案
      下单获取锁状态,拿到就继续执行,没有就继续等待,执行完毕释放锁,删除redis锁状态
    • Redis数据类型及项目中应用场景
      String:自增自减,用于存值
      Hash:键值对集合
      Set:无序去重集合,共同好友,共同关注
      List:有序可重复,底层双向链表
      SortedSet:有序的Set用做排行榜
      BitMap:位图,用来做点赞操作
      HyperLogLog:基数统计,注册数量统计
      Geospatial:存储地理位置信息
    • Redis主从同步?
      全量同步,增量同步
    • Redis持久化模式
      RDB、AOF
      RDB通过快照的形式将数据保存到磁盘中。
      所谓快照,可以理解为在某一时间点将数据集拍照并保存下来。
      redis通过这种方式可以在指定时间间隔将数据保存备份,以二进制写入磁盘,默认文件名为dump.rdb
      RDB的触发有三种机制,执行save命令;执行bgsave命令;在redis.conf中配置自动化。
      AOF日志存储的是Redis服务器的指令序列。
      AOF只记录对内存进行修改的指令记录。
      在服务器重新启动时,Redis就会利用AOF记录的操作重新构建数据
    • AOF主要有三种触发机制。
      Always:每次发生数据修改就立刻记录到磁盘文件中。
      EverySec:每一秒进行同步,如果在一秒内宕机,可能失去一秒内的数据
      No:默认配置,不适用于AOF持久化方案。
    • Redis缓存击穿、穿透、雪崩
      击穿:热点数据失效瞬间,有大量请求进入
      解决:加锁
      穿透:查询的数据在redis不存在
      解决:添加空值,使用布隆过滤器
      雪崩:大量数据同一时间失效
      解决:数据预热,设置不同的过期时间
    • Redis的缓存淘汰策略
      最近最少使用、任意数据
      设置了过期时间的即将过期
      设置了过期时间的最近最少使用
    • 不用死信队列,如何实现订单取消
      1.jdk的DelayQueue延迟队列
      2.使用redis实现订单取消
      向 Redis 中增加一个 KV 键值对,K 为订单号,保证通过 K 能定位到数据库中的某个订单即可,V 可为任意值。
      设置过期时间为 30 分钟。
      通过监听 Redis 提供的过期队列来实现,监听过期队列后,如果 Redis 中某一个 KV 键值对过期了,那么将向监听者发送消息,监听者可以获取到该键值对的 K
    • redis有哪些功能
      数据缓存、分布式锁、数据持久化、事务、消息队列
  • JAVA
    • 面向对象的特征有哪些方面?
      抽象、封装、继承、多态
    • 访问修饰符 public,private,protected,以及不写(默认)时的区别?
      类 的 成 员 不 写 访 问 修 饰 时 默 认 为 default。
      默 认 对 于 同 一 个 包 中 的 其 他 类 相 当 于 公开 ( public) , 对 于 不 是 同 一 个 包 中 的 其 他 类 相 当 于 私 有 ( private) 。
      受 保 护( protected)对 子 类 相 当 于 公 开 ,对 不 是 同 一 包 中 的 没 有 父 子 关 系 的 类 相 当 于 私有 。
      Java 中 ,外 部 类 的 修 饰 符 只 能 是 public 或 默 认 ,类 的 成 员( 包 括 内 部 类 )的
      修 饰 符 可 以 是 以 上 四 种 。
    • String 是最基本的数据类型吗?
      不 是 。Java 中 的 基 本 数 据 类 型 只 有 8 个 :byte、short、int、long、float、double、
      char、boolean;除 了 基 本 类 型( primitive type),剩 下 的 都 是 引 用 类 型( reference
      type) , Java 5 以 后 引 入 的 枚 举 类 型 也 算 是 一 种 比 较 特 殊 的 引 用 类 型 。
    • float f=3.4;是否正确?
      不 正 确 。 3.4 是 双 精 度 数 , 将 双 精 度 型 ( double) 赋 值 给 浮 点 型 ( float) 属 于
      下 转 型 ( down-casting, 也 称 为 窄 化 ) 会 造 成 精 度 损 失 , 因 此 需 要 强 制 类 型 转 换
      float f =(float)3.4; 或 者 写 成 float f =3.4F;。
    • short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
      对 于 short s1 = 1; s1 = s1 + 1;由 于 1 是 int 类 型 , 因 此 s1+1 运 算 结 果 也 是 int
      型 , 需 要 强 制 转 换 类 型 才 能 赋 值 给 short 型 。 而 short s1 = 1; s1 += 1;可 以 正 确
      编 译 , 因 为 s1+= 1;相 当 于 s1 = (short)(s1 + 1);其 中 有 隐 含 的 强 制 类 型 转 换
    • Java 有没有 goto?
      goto 是 Java 中 的 保 留 字 ,在 目 前 版 本 的 Java 中 没 有 使 用
    • int 和 Integer 有什么区别?
      Java 是 一 个 近 乎 纯 洁 的 面 向 对 象 编 程 语 言 , 但 是 为 了 编 程 的 方 便 还 是 引 入 了 基 本
      数 据 类 型 , 但 是 为 了 能 够 将 这 些 基 本 数 据 类 型 当 成 对 象 操 作 , Java 为 每 一 个 基 本第 215 页 共 485 页
      数 据 类 型 都 引 入 了 对 应 的 包 装 类 型( wrapper class),int 的 包 装 类 就 是 Integer
    • Synchronized的三种应用方式
      修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁
      修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁
      修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码块前要获得给定对象的锁
    • Java处理高并发的方式有多少种
      加锁,使用redis
    • 锁的类型有多少种
      乐观锁/悲观锁,自旋锁,共享锁/排他锁
    • final在java中有什么作用?
      final可以修饰类,方法,变量。 final修饰类,该类不可被继承。
      final修饰方法,该方法不能被重写。
      final修饰变量,如果是基本变量则值不能再改变,如果是引用变量则引用地址不能改变,但值可以改变。
    • &和&&的区别
      &&具有短路功能,当其中一个为false的时候,就不再运算其他表达式,只要有false,结果就为false
      &当&运算符两侧的表达式结果均为真时,整个运算结果才为真。
    • 23种设计模式
      创建者模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
      结构型模式:适配器模式、装饰器模式、代理模式、桥接模式、外观模式、组合模式
      行为型模式:策略模式、模板方法模式、观察者模式、责任链模式、访问者模式、中介者模式、迭代器模式、命令模式、状态模式、备忘录模式、解释器模式。
      工厂方法模式分为三种
      简单工厂模式、工厂方法模式、静态工厂方法模式
      简单工厂模式:
      一个接口,多个产品类继承了接口,一个工厂类决定实现创建哪个对象
      工厂方法:
      一个抽象工厂接口,多个工厂方法继承抽象工厂接口,通过实现不同的工厂方法来创建不同的产品
      抽象工厂模式:
      抽象工厂接口中新增了不同种类接口,通过工厂方法再选择对应的接口实现。
      单例模式:
      单例模式可以确保系统中某个类只有一个实例,该类自行实例化并向整个系统提供这个实例的公共访问点,除了该公共访问点,不能通过其他途径访问该实例。
      建造者模式:
      建造者模式将复杂产品的创建步骤分解在在不同的方法中,使得创建过程更加清晰,从而更精确控制复杂对象的产生过程;通过隔离复杂对象的构建与使用,也就是将产品的创建与产品本身分离开来,使得同样的构建过程可以创建不同的对象;并且每个具体建造者都相互独立,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象。
      原型模式:
      原型模式主要用于对象的创建,使用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
    • java基本数据类型4类8种
      (1) 整数:byte short int long
      (2) 浮点: float double
      (3) 字符:char
      (4) 布尔:boolean
      (5) 类 接口 数组 枚举 ——四种引用类型
      不通过UUID如何实现id不重复
      1.雪花算法
      2.使用redis的自增id,increment
      除了使用token,平时网络安全怎么处理?
      1.配置跨域,指定访问域名
      2.使用https请求,而不是http请求
      try catch finally模块各有一个return代码正常执行,怎么返回
      只有finally中的return能成功执行,并覆盖上述return
      String a="张三”和String b=new String(“张三”)的区别
      1.如果abc这个字符串常量不存在,创建两个对象,一个是abc字符串常量,一个是new String实例对象
      2.如果‘abc’字符串常量存在,只创建一个对象
    • 讲一下多态
      1.要有继承关系
      2.子类重写父类的方法
      3.父类引用指向子类对
    • 什么是java序列化?什么情况下需要序列化
      序列化:将java对象转换成字节流
      反序列化:将字节流转换成java对象
      当java对象需要进行网络传输,或者持久化存储到文件中,就需要对java对象进行序列化处理。
      序列化的实现:类实现Serializable接口
    • 一个有序集合,往里面添加一个元素,怎么获取这个元素的角标
      没有指定位置就是集合长度减一,指定位置就是插入的下标
    • ==和equals的区别
      1.==在基本数据类型中比较的是值是否相等
      2.==在引用数据类型中,比较的是两个对象的地址值是否相等
      3.equals一般重写了==方法,用来比较两个对象的内容是否相等
    • 如何解决跨域
      1.前端代理服务器
      2.后端使用注解@CrossOrigin
      3.后端设置一个CorsConfiguration跨域配置
    • Synchronized底层实现原理
      1.方法执行到monitorenter,计数器+1,直行道monitorexit,计数器-1,通过计数器来判断是否被占用,0为未占用。
    • Lock锁和synchronized的区别
      1.lock是接口,synchronized是关键字
      2.lock手动管理获取锁释放锁,synchronized自动获取释放
    • 动态代理是什么?有什么作用
      创建一个新的类,不仅包含原来类方法的功能,还在原来的基础上添加了额外的新类
    • 抽象类和接口的区别
      1.抽象类可以有构造方法,接口中不能有构造方法
      2.抽象类可以有普通成员变量,接口中没有普通成员变量
      3.抽象类可以包含非抽象的普通方法,接口中所有的方法都必须是抽象的
    • 懒汉式和饿汉式
      1.饿汉式就是在类加载的时候把单例初始化
      2.懒汉式就是在调用的时候采取初始化单例
    • 日志框架用的什么
      log4j
    • #{}和${}的区别
      #{}是预编译,${}是直接编译
      #{}在编译时会在两侧加上单引号,${}不会
      #{}可以防止SQL注入
    • java的四种新建对象的方法
      1.new
      2.反射
      3.反序列化
      4.克隆
      IO流、BIO、NIO区别
      IO是磁盘读写流:
      BIO是同步阻塞:线程触发io操作后必须等待操作完成,期间不能做其他工作
      NIO同步非阻塞:线程触发io操作后可以立即返回,但需要不断获取执行结果
      AIO异步阻塞:线程触发IO操作后可以立即返回,内核系统将操作执行完成后通知该线程。
    • 说一下反射
      程序运行时可以动态获取一个类的信息,包括方法、属性
      Hog hog=(Hog)hogClass.newInstance
    • String和StringBuffer,StringBuilder
      String:不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。
      例如Stringa=”123”,a=”456”
      再次给对象赋值时,并不是对原来堆中实例对象重新赋值,而是生成一个新的实例对象,并指向“456”这个字符串,a则指向最新生成的实例对象,之前的实例对象仍然存在,如果没有被再次引用,则会被垃圾回收。
      StringBuffer:StringBuffer对象则代表一个字符序列可变的字符串。
      当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。
      一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。
      StringBuilder:StringBuilder类也代表可变字符串对象。
      实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。
      不同的是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。
    • JVM运行时数据区
      栈、堆、程序计数器、方法区、本地方法栈
      栈:存放基础类型,以及对堆中对象的引用,线程私有
      堆:存放引用类型,线程共有
      程序计数器:记录当前线程运行到哪个部分
      方法区:运行时常量池,类信息
      本地方法栈:为java运行其他语言提供了可能
    • JDK动态代理和CGLIB动态代理的区别
      JDK动态代理只提供接口的代理,不支持类的代理
      CGLIB通过继承的方式做的动态代理
    • String常用方法
      length获取长度、indexof指定字符串索引位置、charat获取指定的字符、trim去掉空格、replace替换匹配的字符串、equals比较大小、split进行分割
    • 深拷贝和浅拷贝的区别是什么?
      1.浅拷贝只复制对象的引用地址
      2.深拷贝将对象及值一起复制过来
  • 线程
    • ThreadLocal用过吗?副本是共享还是私有?
      ThreadLocal为每一个线程维护一个副本变量,让线程拥有私有的资源,不需要竞争进程中的资源
    • wait和notify为什么需要放在同步代码块
      需要获得锁之后才能调用wait()/notify()方法,因此必须将他们放到同步代码块。
    • Runnable接口和Callable接口区别在哪里?
      实现Callable接口的任务线程能返回执行结果;而实现Runnable接口的任务线程不能返回结果;
      Callable接口的call()方法允许抛出异常;而Runnable接口的run()方法的异常只能在内部消化,不能继续上抛;
    • wait()和sleep()方法的区别
      1.sleep是Thread方法,wait是Object方法
      2.sleep不释放锁,wait释放锁
      3.sleep必须睡眠时间,wait可以睡眠时间,也可以用notify唤醒
    • 什么是多线程死锁,怎么解决
      互斥、占有并等待、非抢占、循环等待
      互斥:有一个资源非共享
      占有并等待:一个进程占有至少一个资源,并等待另一个资源
      非抢占:不能被抢占,完成任务后释放
      循环等待:p1等p2,p2等p3,p3等p1
    • 线程的创建方式
      1.继承Thread类创建线程
      Thread的使用方式是继承其类,二者都需要实现run方法
      2.实现Runnable接口创建线程
      Runnable接口支持多继承
      3.使用Callable和Future来创建线程
      4.使用线程池来创建线程:
      ExecutorService es=Executors.newFixedThreadPool(30)
      Thread和Runnable创建进程的区别
      Runnable是实现其接口,支持多继承
      Thread是继承
    • 线程和进程的区别
      进程 -- 资源分配的最小单位。
      线程 是操作系统能够进行运算调度的最小单位。
    • 线程池的策略。
      1.新任务进入,判断是否有空闲核心线程,有则使用
      2.无则判断是否达到了corePoolsize,未达到则新建核心线程
      3.判断工作队列是否已满,未满就提交到工作队列
      4.判断是否达到了最大线程数,未达到新建工作线程,达到了使用饱和策略抛出异常
      runnable和callable有什么区别
      1.runnable实现Run方法,Callable实现call方法
      2.run方法没有返回值,call方法有返回值
      3.call方法可以声明抛出异常
    • 引发多线程安全的原因
      抢占式调度,调度过程随机。
      同时修改一个变量
    • 线程池都有哪些状态?
      RUNNING:线程池一旦被创建就处于RUNNING状态
      SHUTDOWN:不接受新的任务提交,继续处理队列中的任务
      STOP:不接受新的任务提交,不处理队列中的任务
      TIDYING:所有任务都被终止,调用terminated()方法进入TERMINATED状态
      TERMINATED:最终状态
    • 线程池的七个参数:
      corePoolSize:核心线程数量
      MaxiMumpoolsize:线程池的最大容量
      keepalivetime空闲线程存活时间
      unit:keepalivetime的时间单位
      handler:拒绝策略
      threadfactory:创建线程时用到的工厂
  • 集合
    • 常见的集合有哪些?
      Java集合类主要由两个接口Collection和Map派生出来的,Collection有三个子接口:List、Set、Queue。
    • List 、Set和Map 的区别
      List 以索引来存取元素,有序的,元素是允许重复的,可以插入多个null
      Set 不能存放重复元素,无序的
      Map 保存键值对映射
    • ArrayList 了解吗?
      ensureCapacity 操作增加 ArrayList 实例的容量
      使用grow对数组进行扩容
      新的容量会是原容量的1.5倍
      计算出新的扩容数组的size后实例化,并将原有数组内容复制到新数组中去。
    • 怎么在遍历 ArrayList 时移除一个元素?
      使用迭代器的 remove() 方法。
    • Arraylist 和 Vector 的区别
      ArrayList在内存不够时默认是扩展50% + 1个,Vector是默认扩展1倍。
      Vector线程安全但是效率低。
    • Arraylist 与 LinkedList的区别
      ArrayList基于动态数组实现;LinkedList基于链表实现。
      新增和删除元素,LinkedList的速度要优于ArrayList。
      随机index访问的get和set方法,ArrayList的速度要优于LinkedList。
    • ArrayList是否线程安全?如何解决
      不安全
      1.使用Collections.synchronizedList加锁
      2.使用ThreadLocal
    • list集合去重怎么操作
      双重for循环、stream,set集合
    • 哪些集合是线程安全的
      Vector、HashTable、ConcurrentHashMap、Stack
    • HashSet的去重原理,TreeSet的去重原理?
      【先对比hash值,如果hash值相同,再对比存入的内容】
      【当二叉树已经存在一个17的元素时,再向集合中存入一个为17的元素,TreeSet会将重复的元素去掉】
    • HashTable跟HashMap的区别
      1.hashTable线程安全、HashMap线程不安全
      2.底层数据结构都为:数组+链表
      3.HashTable初始容量为11,HashMap初始容量为16
    • 解决hash冲突的办法有哪些?HashMap用的哪种?
      开放定址法也叫闭散列,当发生哈希冲突时,如果哈希表未被装满,说明在哈希表中必然还有空位置,那么可以把key存放到冲突位置中的“下一个” 空位置中去。
      再哈希法提供多个不同的hash函数,当 R1=H1(key1) 发生冲突时,再计算 R2=H2(key1) ,直到没有冲突为止。
      再哈希法提供多个不同的hash函数,当 R1=H1(key1) 发生冲突时,再计算 R2=H2(key1) ,直到没有冲突为止。
    • 在解决hash冲突的时候,为什么选择先用链表,再转红黑树
      红黑树搜索时间复杂度是 O(logn) ,而链表是 O(n) ,在n比较大的时候,使用红黑树可以加快查询速度。
      红黑树需要进行左旋,右旋,变色这些操作来保持平衡,而单链表不需要。
    • 使用的hash算法
      取key的hashCode值、高位运算、取模运算。
    • hashMap如何扩容
      当添加某个元素后,数组的总的添加元素数大于了 数组长度 * 0.75,数组长度扩容为两倍。(如开始创建HashMap集合后,数组长度为16,临界值为16 * 0.75 = 12,当加入元素后元素个数超过12,数组长度扩容为32,临界值变为24)
    • HashMap默认加载因子是多少?为什么是 0.75?
      根据泊松分布,loadFactor取0.75碰撞最小。一般不会修改,除非在时间和空间比较特殊的情况下。
    • 一般用什么作为HashMap的key?
      一般用 Integer 、 String 这种不可变类当 HashMap 当 key。String类比较常用。
    • HashMap为什么线程不安全?
      在JDK1.8中,在多线程环境下,会发生数据覆盖的情况。
    • HashMap的put方法流程?
      1.如果table没有初始化就先进行初始化过程
      2. 使用hash算法计算key的索引
      3. 判断索引处有没有存在元素,没有就直接插入
      4. 如果索引处存在元素,则遍历插入,有两种情况,一种是链表形式就直接遍历到尾端插入,一种是红黑树就按照红黑树结构插入
      5. 链表的数量大于阈值8,就要转换成红黑树的结构
      6. 添加成功后会检查是否需要扩容
    • hashMap和TreeMap的区别
      hashmap基于数组链表红黑树实现,初始数组容量为16,负载因子是0.75,当数组的容量达到12时,进行扩容,数组扩容为原来的两倍。
      treemap:基于红黑树实现,默认情况通过key值的自然顺序进行排序,treemap的key要实现comparable接口来实现排序。
    • hashMap的长度为什么是2的幂次方
      数组下标的计算方法是 (n - 1) & hash 。将HashMap的长度定为2 的幂次
      方,这样就可以使用 (n - 1)&hash 位运算代替%取余的操作,提高性能。
    • 红黑树的特点
      每个节点或者是黑色,或者是红色。
      根节点和叶子节点( NIL )是黑色的。
      如果一个节点是红色的,则它的子节点必须是黑色的。
      从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
    • LinkedHashMap底层原理
      LinkedHashMap继承于HashMap,每次put操作都会将entry插入到双向链表的尾部。
    • TreeMap
      1.对传入的key进行了大小排序。可以使用元素的自然顺序,也可以使用集合中自定义的比较器来进行排序
      2.是有序的key-value集合,通过红黑树实现。
  • RabbitMq
    • RabbitMq怎么避免消息丢失?
      消息持久化
      消息中心收到生产者的消息后,先将消息存储在本地数据文件,内存数据库或者远程数据库,再试图把消息发送给消费者,发送成功则将消息从存储中删除,如失败则继续尝试发送。
      消息中心启动时,先会检查指定的存储位置,如有未成功发送的消息,则会把消息发送出去。
      ACK确认机制
      ACK机制是消费者从RabbitMQ收到消息并处理完成后,反馈给RabbitMQ,RabbitMQ收到反馈后才将此消息从队列中删除。
      设置镜像集群模式
      每个RabbitMQ实例都有一份镜像数据。每次写入消息的时候都会自动把数据同步到多台实例上去,这样一旦其中一台机器发生故障,其他机器还有一份副本数据可以继续提供服务,也就实现了高可用。
    • ACID是什么?
      原子性:所有操作,要么全部完成,要么全部不完成
      一致性:事务开始之前和之后,完整性没有被破坏
      隔离性:防止多个事务并发执行时由于交叉执行而导致数据不一致
      持久性:数据的修改是永久的,即使故障也不会丢失
    • RabbitMq有哪些重要的角色?
      生产者:创建和推送消息到服务器
      消费者:消息接收方,处理和确认消息
      代理:RabbitMq本身,不产生消息,用于传递
      RabbitMq如何保证消息幂等性
      消费一条消息时,往数据库插入一条数据,遇到重复消费的消息,数据会报错,如果已经存在,就消费过,进行丢弃
    • RabbitMq使用线程处理消息积压
      开辟多个临时的消费者,将消息挪移到新的临时队列,用多个消费者消费提高消费能力
    • mq的持久化机制参数有哪些?
      使用durable参数设置为true实现的。
    • 使用rabbitmq如果有很多种数据类型怎么处理?
      建立多个队列,然后数据类型与队列一一对应。
    • RabbitMq有哪些队列
      简单模型:一个生产者、一个消费者、平均分配
      工作模型:哪个消费者能力更高一些,分配的就更多
      广播模型:多了交换机,多了队列,消费者可以收到同样的消息
      路由模型:选择接收,如error,info
      动态路由:可以加通配符,跟表达式能匹配的上,就能收到
  • HTTP协议
    • 说一下什么是Http协议
      客户端和 服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。
    • 什么是Http协议无状态协议?怎么解决Http协议无状态协议?
      无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息。
      无状态协议解决办法: 通过1、Cookie 2、通过Session会话保存。
    • Http协议由什么组成?
      请求报文包括三部分:
      (1).请求行:包含请求方法,URI,HTTP版本协议
      (2).请求首部字段
      (3).请求内容实体
      响应报文包含三部分:
      (1).状态行:包含HTTP版本,状态码,状态码原因短语
      (2).响应首部字段
      (3).响应内容实体
    • Http协议中有哪些请求方式?
      GET:用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器。
      POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
    • Http协议实现的原理机制
      (1).整个流程步骤:
      (2)域名解析过程:
      (3).三次握手过程
      (4).发起Http请求
      (5).响应Http请求并得到HTML代码
      (6).浏览器解析HTML代码
      (7).浏览器对页面进行渲染呈现给用户
    • get与post请求的区别?
      区别一:get重点在从服务器上获取资源,post重点在想服务器发送数据;
      区别二:get传输数据是通过URL请求,以filed(字段)=value的形式,置于URL后,并用"?"连接,多个请求数据之间用
    • 常见HTTP的状态码有哪些?
      200 – 请求成功
      301 – 资源(网页等)被永久转移到其它URL
      404 – 请求的资源(网页等)不存在
      500 – 内部服务器错误
    • 三次握手
      1、第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_Send 状态。
      2、第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s),同时会把客户端的 ISN + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。
      3、第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态。
      服务器收到 ACK 报文之后,也处于 establised 状态,此时,双方以建立起了链接。
    • 四次挥手
      1、第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。
      2、第二次握手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。
      3、第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。
      4、第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

JAVA 面试 知识点整理相关推荐

  1. 已收藏!java面试知识点整理

    微服务架构 ①微服务概念: ②Spring Cloud微服务架构: 海量数据处理 ①:经典的海量数据处理面试题 高可用架构 ①基于 Hystrix 实现高可用: ②限流: ③熔断: 高并发架构 ①消息 ...

  2. Java 面试知识点解析(三)——JVM篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  3. 2019年秋招 Java 面试知识点梳理(高频问题)

    Java 面试知识点梳理 基础一 JVM-内存区域分配 HotSpot 对象创建 JVM-类加载机制 JVM-内存分配(堆上的内存分配) JVM-GC回收机制 JVM-垃圾收集器 JVM指令重排序 重 ...

  4. Java基础知识点整理(2022年最新版)

    看了网上很多关于Java基础知识点整理的文章,但是感觉都不是很好,要么不全面,要么不准确,要么排版太乱了,所以今天整理了一份Java基础知识点整理(2022年最新版),希望对大家有帮助哈~ 由于本文篇 ...

  5. Java 面试知识点解析(七)——Web篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  6. Java 面试知识点解析(六)——数据库篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  7. Java 面试知识点解析(五)——网络协议篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  8. Java 面试知识点解析(二)——高并发编程篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  9. Java面试知识点:网络编程

    问题:Java面试知识点:网络编程 答案: 1.InetAddress 代码如下: package com.xy;import java.net.InetAddress; import java.ne ...

  10. Java面试知识点:多线程

    问题:Java面试知识点:多线程 答案: 1.线程 代码如下: package com.xy;/*** @ProjectName: day01* @Package: com.xy* @ClassNam ...

最新文章

  1. (五)Docker镜像和容器
  2. 安装 | MatlabR2021b链接及Matlabx运行图基本运行代码与图像
  3. Python多任务(5. 进程之间的通信-Queue队列)
  4. axure没有团队页签_Axure教程:多页签可滚动的选项卡制作
  5. vue 一个组件内多个弹窗_论如何用Vue实现一个弹窗-一个简单的组件实现
  6. batchplot3.5.9如何使用_VirtualBox中安装的Windows XP如何使用USB3.0
  7. 使用nginx+lua脚本读写redis缓存
  8. 正则表达式判断ip格式
  9. 万恶的华为,落魄的爱立信
  10. python自学路线及教程_python如何学习:最全学习路线
  11. 云服务厂商都在推荐轻量级的存储队列服务,用来取代原有的比较重的消息队列服务...
  12. java item 类型参数_Java8中对Lambda表达式中方法参数的类型推断(一)
  13. NYOJ 819奶牛 水
  14. matlab学习心得与体会
  15. MySQL数据库学习日志(一):数据库概述及SQL语言基础
  16. 服务器系统安装打印机,windows server 2012 R2安装打印机驱动提示系统资源不足
  17. python的seek用法
  18. XTOOL EZ500全系统的诊断和特殊功能超越Xtool EZ400 EZ300 Xtool PAD
  19. 互联网日报 | 瑞幸咖啡同意支付1.8亿美元达成和解;国产游戏海外收入首破千亿;滴滴试水信用支付...
  20. 2021年场(厂)内专用机动车辆安全管理考试及场(厂)内专用机动车辆安全管理考试题

热门文章

  1. Elasticsearch:管理悬空(dangling)索引
  2. Flink StreamingFileSink 文件到hdfs 文件一直处于inprogress状态无法生成正式文件
  3. ICT融合和创新带来制造业的持续变革
  4. 2020大创笔记(二)
  5. 使用redis缓存技术实现省市区三级联动
  6. Android 面试题(答案最全) 转:http://www.jobui.com/mianshiti/it/android/2682/
  7. 带CAN唤醒能力的TJA1043
  8. java约等于符号_markdown常见数学符号和运算
  9. 就Linux的一些操作,王里面导入jdk,mysql,tomcat三个包,实现项目在虚拟机上面运行
  10. 有人在研究arroundme 吗,一个开源的php社会化网络程序