一切福田,不離方寸,從心而覓,感無不通。

Java面试准备

基础 Java相关 Java创建对象有几种方式? 有6种方式:使用new创建、使用反射机制、使用clone方法、使用反序列化、使用方法句柄、使用Unsafe分配内存。 使用new创建

使用反射机制 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 (1)使用Class类的newInstance方法可以使用Class类的newInstance方法创建对象。这个newInstance方法调用无参的构造函数创建对象。

(2)使用Constructor类的newInstance方法 和Class类的newInstance方法很像,java.lang.reflect.Constructor类里也有一个newInstance方法可以创建对象。我们可以通过这个newInstance方法调用有参数的和私有的构造函数。

这两种newInstance方法就是大家所说的反射。实际上Class的newInstance方法内部调用Constructor的newInstance方法。 使用clone方法 无论何时我们调用一个对象的clone方法,jvm就会创建一个新的对象,将签名的对象的内容全部拷贝进去。用clone方法创建对象并不会调用任何构造函数。 要使用clone方法,我们需要先实现Cloneable接口并实现其定义的clone方法。如果只实现了Cloneable接口,并没有重写clone方法的话,会默认使用Object类中的clone方法,这是一个native的方法。

  使用反序列化 当我们序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。其实反序列化也是基于反射实现的。

  使用方法句柄 通过使用方法句柄,可以间接地调用构造函数来创建对象

使用了MethodHandles.lookup().findConstructor()方法获取构造函数的方法句柄,然后通过invoke()方法调用构造函数来创建对象。 使用Unsafe分配内存 在Java中,可以使用sun.misc.Unsafe类来进行直接的内存操作,包括内存分配和对象实例化。然而,需要注意的是,sun.misc.Unsafe类是Java的内部API,它并不是Java标准库的一部分,也不建议在生产环境中使用。

这种方式有以下几个缺点: 不可移植性:Unsafe类的行为在不同的Java版本和不同的JVM实现中可能会有差异,因此代码在不同的环境下可能会出现不可移植的问题。 安全性问题:Unsafe类的功能是非常强大和危险的,可以绕过Java的安全机制,可能会导致内存泄漏、非法访问、数据损坏等安全问题。 不符合面向对象的原则:Java是一门面向对象的语言,鼓励使用构造函数和工厂方法来创建对象,以确保对象的正确初始化和维护对象的不变性。 Spring MVC相关 什么是SpringMVC? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。 Spring MVC 的优点 1.它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java 组件.并且和Spring提供的其他基础结构紧密集成 2.不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的 3.可以任意使用各种视图技术,而不仅仅局限于JSP 4.支持各种请求资源的映射策略 5.它应是易于扩展的,支持 RESTful 风格 SpringMVC 工作原理? 1.用户发送请求给到前端控制器 DispatchServlet 2.DispatchServlet 收到请求后,调用HandlerMapping处理器映射器查找对应负责处理请求的 Handler 3.HandlerMapping 将找到的具体的处理器 Handler 生成处理器对象以及处理器拦截器(如果有则生成),一起返回给 DispatchServlet 4.DispatchServlet调用HandlerAdapter 处理器适配器,请求执行具体的 Handler 5.HandlerAdapter 将具体 Handler 执行返回的模型和视图返回给到 DispatchServlet 6.此时 DispatchServlet 已经得到具体的 视图名称了,然后向 ViewResolver 发起请求,请求解析视图,返回已经解析好的视图对象 7.DispatchServlet 对视图进行渲染,将 model 与view 进行渲染 8.DispatchServlet 返回响应给到用户浏览器 Spring MVC的主要组件: 前端控制器 DispatcherServlet:接收请求、响应结果,相当于转发器,有了DispatcherServlet能够减少了其它组件之间的耦合度。 处理器映射器 HandlerMapping:根据请求的URL来查找Handler 处理器适配器 HandlerAdapter:负责执行Handler 处理器 Handler:处理器,需要程序员开发 视图解析器 ViewResolver:进行视图的解析,根据视图逻辑名将ModelAndView解析成真正的视图(view) 视图View:View是一个接口, 它的实现类支持不同的视图类型,如jsp,freemarker,pdf等等 MVC是什么?MVC设计模式的好处有哪些? mvc是一种设计模式(设计模式就是日常开发中编写代码的一种好的方法和经验的总结)。模型(model)-视图(view)-控制器(controller),三层架构的设计模式。用于实现前端页面的展现与后端业务数据处理的分离。mvc设计模式的好处: 1.分层设计,实现了业务系统各个组件之间的解耦,有利于业务系统的可扩展性,可维护性。 2.有利于系统的并行开发,提升开发效率。 SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决? 是单例模式,在多线程访问的时候有线程安全问题,解决方案是在控制器里面不能写可变状态量,如果需要使用这些可变状态,可以使用ThreadLocal机制解决,为每个线程单独生成一份变量副本,独立操作,互不影响。 如何解决 […]

龙生   17 Dec 2025
View Details

发现个有意思的debuger代码

无意中看到一个页面加了个防止别人用开发者工具调试自己网页的代码~

 

龙生   11 Dec 2025
View Details

关于.Net Core中上传文件大小限制(微服务)

由于在工作中遇到了上传大型文件,出现了以下错误

我查询了国内很多同行给的解决方案,这些都对微服务这块没用,于是去浏览了国外的解决方案:https://stackoverflow.com/questions/51158079/microsoft-aspnetcore-server-kestrel-core-badhttprequestexception-request-body-t。里面其中一个方案:在Startup.cs中加以下代码

当然里面还有关于IIS和Web的解决方案,详情可以移步过去看一看   from:https://blog.csdn.net/Cool_ketchup/article/details/118489652

龙生   09 Dec 2025
View Details

修复 UEditor 上传视频的相关问题

相关问题: 1.上传后无法播放的问题 2.编辑后视频丢失的问题 3.切换 html 按钮src链接丢失问题 4.插入视频后预览出错的问题 解决方案: 1. 打开 ueditor.all.js 文件,搜索 me.commands["insertvideo"] 将 edui-faked-video 改为 edui-faked, 防止此处被替换为 image 标签 将 image 改为 video, 实现视频实时预览,修复保存导致视频丢失

2.打开 ueditor.config.js 文件,搜索 whitList 添加 _url,style,url 字段 添加 source, embed, iframe 规则

  3.打开 dialogs/video/video.js文件,搜索 createPreviewVideo 将 embed 换成 video 标签 3.打开 dialogs/video/video.js文件,搜索 createPreviewVideo 将 embed 换成 video 标签

  from:https://www.cnblogs.com/Run2948/p/UEditor_Fixed_In_AspNetCore.html

龙生   09 Dec 2025
View Details