面试题

linux中如何查看已用内存

free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
直接输入free命令,显示如下

在这里插入图片描述

free命令默认是显示单位kb,可以采用free -m和free -g命令查看,分别表示MB和GB
另外,free -h会自动选择以适合理解的容量单位显示

在这里插入图片描述
Mem:表示物理内存统计,如果机器剩余内存非常小,一般小于总内存的20%,则判断为系统物理内存不够
Swap: 表示硬盘上交换分区的使用情况,如剩余空间较小,需要留意当前系统内存使用情况及负载,当Swap的used值大于0时,则表示操作系统物理内存不够,已经开始使用硬盘内存了。
第1行数据11G表示物理内存总量;6.5G表示总计分配给缓存(包含buffers与cache)使用的数量,但其中可能部分缓存并未实际使用;
1.3G表示未被分配的内存;shared表示共享内存;4.0G表示系统分配但未被使用的buffers数量;4.7G表示系统分配但未被使用的available数量

10w条数据的插入(批量插入)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
 
 
public class HomeWork02
{
    //预处理--注入数据
    public static void main(String[]args) throws Exception
    {
        //加载数据库
        Class.forName("com.mysql.jdbc.Driver");
 
        //获取连接对象
        String url = "jdbc:mysql://localhost:3306/db1?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8";
        Connection conn = DriverManager.getConnection(url, "username", "password");
 
        //连接操作数据库
        String sql = "insert into homework VALUES (?,?,?) ";
        PreparedStatement pst = conn.prepareStatement(sql);
        for (int i = 1; i <= 100000 ; i++)
        {
            pst.setObject(1,i);
            pst.setObject(2,i+"号");
            pst.setObject(3,i*10+"¥");
            pst.addBatch();
        }
 
        //操作完成,提交
        pst.executeBatch();
      
        //释放资源
        pst.close();
        conn.close();
 
    }
}

springBoot和SpringMVC的区别(今天面试被问懵啦~)

两者联系:
spring在刚开始的时候使用工厂模式(DI)和代理模式(AOP)解耦应用组件,进而开发出适用于Web开发的SpringMVC,在实际开发过程当中会使用到很多样板代码,就开发出了懒人版的SpringBoot;

区别:
1、springMVC是Spring的一个模式,是一个Web框架,提供了一个轻度耦合的方式来开发Web应用;

2、SpringBoot是习惯优于配置,降低了项目搭建的难度;

3、springMVC需要使用到TomCat服务器,SpringBoot的话是内嵌了Tomcat服务器的;

Spring MVC是基于 Servlet 的一个 MVC 框架 主要解决 WEB 开发的问题

Spring MVC的功能

Spring MVC提供了一种轻度耦合的方式来开发web应用。

Spring MVC是Spring的一个模块,式一个web框架。通过Dispatcher Servlet, ModelAndView 和 View Resolver,开发web应用变得很容易。解决的问题领域是网站应用程序或者服务开发——URL路由、Session、模板引擎、静态Web资源等等。

Spring Boot的功能

Spring Boot实现了自动配置,降低了项目搭建的复杂度。

众所周知Spring框架需要进行大量的配置,Spring Boot引入自动配置的概念,让项目设置变得很容易。Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。Spring Boot只是承载者,辅助你简化项目搭建过程的。如果承载的是WEB项目,使用Spring MVC作为MVC框架,那么工作流程和你上面描述的是完全一样的,因为这部分工作是Spring MVC做的而不是Spring Boot。对使用者来说,换用Spring Boot以后,项目初始化方法变了,配置文件变了,另外就是不需要单独安装Tomcat这类容器服务器了,maven打出jar包直接跑起来就是个网站,但你最核心的业务逻辑实现与业务流程实现没有任何变化。

用最简练的语言概括就是:

  • Spring 是一个“引擎”;
  • Spring MVC 是基于Spring的一个 MVC 框架 ;
  • Spring Boot 是基于Spring4的条件注册的一套快速开发整合包。

MY SQL 获取本月第一天 获取下月的第一天

select curdate();                       --获取当前日期
select last_day(curdate());                    --获取当月最后一天。
select DATE_ADD(curdate(),interval -day(curdate())+1 day);   --获取本月第一天
select date_add(curdate()-day(curdate())+1,interval 1 month); -- 获取下个月的第一天
select DATEDIFF(date_add(curdate()-day(curdate())+1,interval 1 month ),DATE_ADD(curdate(),interval -day(curdate())+1 day)) from dual; --获取当前月的天数

什么是反射?

反射就是动态加载对象,然后可以拿到这个对象的所有方法和属性,对于任何一个对象都能动态获取它的任何属性或者任意一个方法,这种动态调用对象的人以信息信息的功能就是 java的反射机制

如何使用java的反射?

1丶通过全限定类型名 : Class.ForName(“全限定类名”)
2丶类名.Class
3丶对象.GetClass()

反射的应用场景?

1丶通常用在框架的底层
2丶实现ORM,通过读取数据表,然后运用反射机制,创建对象及其属性

如何通过反射获取类的Private属性?

1丶在父类中填写该属性的Get丶Set方法,通过反射调用方法获取
2丶先获取对象,然后通过GetDeclaredField方法获取私有字段
通过SetAccessible让jvm不检查权限
通过Set方法设置对象具为具体的值

通过获取构造方法来创建对象?

1丶NewInstance()
2丶GetConstructor()
3丶区别newInstance犯法只能获取空参的构造
GetConstructor方法可以通过传入的参数类型或数量来获取

让方法执行?

Method.invoke(obj示例对象,obj可变参数)----------(是有返回值的)

List Set Map 结构图
在这里插入图片描述
list和set是实现了Collection接口的

List:

1丶可以允许重复的对象
2丶可以插入多个null元素
3丶是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序
4丶常用的实现类有ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。

Set:

1丶不允许重复对象
2丶无序容器,你无法保证每个元素的存储顺序,TreeSet通过Comparator或者Comparable维护了一个排序顺序
3丶只允许一个null元素
4丶Set 接口最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap 实现的 HashSet;TreeSet 还实现了 SortedSet 接口,因此 TreeSet 是一个根据其 compare() 和 compareTo() 的定义进行排序的有序容器。
在这里插入图片描述
Map不是collection的子接口或者实现类Map是一个接口
Map的每个entry 都持有两个对象,也就是一个键一个值,Map可能会持有相同的值对象,但键对象必须是唯一的
TreeMap 也通过 Comparator 或者 Comparable 维护了一个排序顺序。
Map 里你可以拥有随意个 null 值但最多只能有一个 null 键。
Map 接口最流行的几个实现类是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。(HashMap、TreeMap最常用)

什么场景下使用list,set,map呢?

  • list:有序访问、索引访问
  • set(HashSet、LinkedHashSet 或者 TreeSet):去重

map:键值存储

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值