Java知识点
线程
1、Runnable和Callable的区别?
callable与runnable相比,callable可以有返回值,返回值通过FutureTask进行封装。
2、run()方法和start()方法的区别?
run()是在主进程中运行,直接运行相当于一个普通函数;而start()方法可启动线程,可以并发执行。
3、有几种线程池?
主要有三种。
1)CachedThreadPool:一个任务创建一个线程;
2)FixedThreadPool:所有任务只能使用固定大小的线程;
3)SingleThreadExecutor:相当于大小为 1 的 FixedThreadPool。
集合
1、HashSet和TreeSet有什么区别?
1)HashSet是由哈希表实现的,而TreeSet是由二叉树实现的;
2)HashSet是无序的,而TreeSet是自动排好序的;
3)HashSet能存放null值,且只能存放一个,而TreeSet不能存放null值;
4)HashSet要求放入的对象必须实现HashCode()方法。
2、HashMap能存放Null值吗?
HashMap的键和值都能存放null,键只能有一个为null,值可以多个对应为null;
(HashTable的键和值都不能存放null,且是线程安全的)。
3、ArrayList如何使用线程安全?
1)使用synchronized关键字;
2)使用Collections.synchronizedList(); 例如:
List<Map<String,Object>> data=Collections.synchronizedList(new ArrayList<Map<String,Object>>());
Spring
1、@RestController与@Controller的区别?
1)@RestController = @RequestBody + @Controller;
2)如果需要返回页面,需要使用@Controller;返回数据,使用@RestController。
2、@RequestMapping如何转换成@GetMapping?
@RequestMapping(method = RequestMethod.GET)。
3、@Configuration和@Component区别?
@Configuration包括@Component,@Configuration修饰的类被定义为一个Spring容器,里边可以配置很多Bean。
4、SpringMVC的流程?
1、DispatcherServlet前端控制器接收发送过来的请求,交给HandlerMapping处理器映射器。
2、HandlerMapping处理器映射器,根据请求路径找到相应的HandlerAdapter处理器适配器(处理器适配器就是那些拦截器或Controller)。
3、HandlerAdapter处理器适配器,处理一些功能请求,返回一个ModelAndView对象(包括模型数据、逻辑视图名)。
4、ViewResolver视图解析器,先根据ModelAndView中设置的View解析具体视图。
5、然后再将Model模型中的数据渲染到View上。
这些过程都是以DispatcherServlet为中轴线进行的。
IO流
1、字节流如何转为字符流?
https://blog.csdn.net/qq_40856560/article/details/81808641