Java
文章平均质量分 70
那夜的星空分外清澈
学如逆水行舟,不进则退。
展开
-
局部变量的线程安全性
局部变量是线程安全的,这句话正确,但是也不够准确,关键在于如何理解局部变量。通常都是通过栈帧对线程的私有性,而局部变量保存在栈帧种来解释这句话的正确性。如果局部变量是基本类型,那么这句解释没有问题,正如下面的例子,虽然 local 变量被所有的线程访问,但是初始化后,再去改变它,编译器会报错,这就使其成为了事实上的 final 变量,而被 final 修饰的基本类型变量是线程安全的。 public static void test() { double local = 100.0;原创 2021-09-06 22:50:42 · 1413 阅读 · 0 评论 -
Spring Boot 知识点
Spring Boot 知识点开启异步线程池使用注解,可以更便捷的使用基于 Executor 框架的线程池。Spring Boot 框架中提供了一个 AsyncConfigurer 接口以及一个默认的 AsyncConfigurerSupport 实现。通过实现该接口,或继承该实现,可以自定义自己的线程池和异常处理操作。@Configuration@EnableAsyncpublic class AsyncConfig implements AsyncConfigurer { @Overri原创 2021-04-25 18:20:41 · 280 阅读 · 0 评论 -
Spring 框架小结
Spring 框架小结演变在 Spring 框架出现之前,开发一个 EJB(Enterprise Java Bean)需要定义接口并进行大量配置,这些工作繁琐与枯燥超过了开发本身。另外,由 JSP(Java Server Page)生成的 Servlet 是运行在 Web 容器中的,而 EJB 则是运行在 EJB 容器中的,两个容器中服务间的调用又需要新的配置以及网络资源的消耗。2004 年,Spring 1.0 版本发布,其使用控制反转(IoC,Inversion of Control)技术来管理资原创 2021-04-12 22:46:19 · 217 阅读 · 1 评论 -
元注解
元注解@Documented在声明注解时,可以使用该注解进行修饰,表示在使用诸如 javadoc 的工具生成文档时,将该注解作为公共接口的内容体现在文档中。@Target在声明注解时,可以使用该注解进行修饰,并指定相应的值,表示该声明的注解可以应用的范围。其相关的值,可以参考 ElementType 枚举类型。枚举值说明TYPE表示可以修饰诸如类、接口、注解、枚举等类型FIELD表示可以用来修饰类变量、枚举值等域METHOD表示可以修饰方法PARAME原创 2020-10-18 22:50:20 · 121 阅读 · 0 评论 -
Spring Boot 参数转换
在 Spring MVC 中,使用注解 @RequestMapping 修饰控制器时,其所配置的内容,会在工程的启动阶段保存到处理器映射(HandlerMapping)机制中,当请求连接被拦截后,HandlerMapping 进行匹配,会将对应的处理器和拦截器保存到 HandlerExecutionChain 对象中,并返回给 DispatcherServlet 运行。处理器中包含了控制器,在执行控制器中匹配的方法前,需要先将请求报文中的参数转换为控制器所需要的参数。不使用任何注解,控制器的参数名称原创 2020-09-24 23:54:50 · 5550 阅读 · 0 评论 -
合并PDF(保留其本身的大小)
在将多个PDF文件合并为一个PDF文件时,通常会创建一个新的 Document 对象,并读取每一个PDF文件的 PdfImportedPage 页,而后使用 PdfCopy 类中的方法将其添加到新创建的PDF文件中,部分代码如下:for (int i = 0; i < fileList.size(); i++) { PdfReader reader = new PdfReader(fileList.get(i)); int n = reader.getNumberOfPages(原创 2020-09-23 15:22:22 · 599 阅读 · 1 评论