WHH

MY BLOG

最近公司要求修改依赖为公司统一封装的SpringBoot,里面包含了注册中心等配置,方便统一管理。

开发SpringBoot项目一般默认继承spring-boot-starter-parent,这次要求默认继承公司内部的依赖。同时把以前打包的war改为jar,最后打包发现只是普通的jar打包编译,也没有依赖。

阅读全文 »

现有一个多边形,和一个点,需要判断点是否在多边形内。
几种情况:

  • 点在边上
  • 点在多边形顶点上
  • 点在多边形内

方法通过射线法,从点发出一条射线,如果穿过多边形,偶数个交点表示在多边形外;奇数个交点在多边形内。
特殊情况:

  • 点的射线和多边形边重合
  • 点的射线刚刚好经过多边形的点
    阅读全文 »

Java代码中可以通过Unicode注释后隐藏部分实际代码

1
2
3
4
@Test
public void demo(){
// \u000d System.out.println("Hello");
}

上述代码会输出Hello,因为前面unicode会转义为换行,后面的代码正常执行。后面代码也可以全部转义为unicode,用于隐藏,如下。

1
2
3
4
5
@Test
public void demo(){
// \u000d \u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0022\u0048\u0065\u006c\u006c\u006f\u0022\u0029\u003b
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0022\u0048\u0065\u006c\u006c\u006f\u0022\u0029\u003b
}

上述会输出2次Hello

之前看slf4j-api源码时,2.0版本中切换不同的日志,采用的就是SPI。通过定义接口,不同的日志框架实现该接口,对于使用方而言,通过JDK提供的方法找到实现的类并构建对象。接口不直接实现,又其他第三方实现该接口,支持热插拔。

slf4j-api 1.*版本并不是用的这种方法,是通过自定义类org.slf4j.impl.StaticLoggerBinder,实现使用不同的日志。

阅读全文 »

在Java中Queue类主要存在两个子接口、一个抽象子类AbstractQueue。
AbstractQueue继承AbstractCollection和实现接口Queue,不允许存在null节点,存入和删除节点是如果为null会直接报错。

阅读全文 »

定义

一般情况下,队列为一种先进先出的线性表。队列只允许在尾端插入数据,前端删除数据。也存在双端队列,可以在头部和尾部进行插入删除数据。

阅读全文 »

使用IDEA开发SpringBoot项目,有时候在导入项目后,写配置文件无提示。
可以正常提示的application.properties为一个绿叶图标,不能正常提示的图标为普通properties图标。

阅读全文 »

Servelt 3.0在2009年已经随着JavaEE 6推出。主要增加了异步处理、注解支持、模块化处理

异步支持

在之前Servelt在接收到请求后需要处理完毕后再做返回,线程一直在阻塞状态,现在可以接收数据后交由其他线程处理,线程接收线程本身返回容器。如果聊天中等待消息。
WebServlet设置asyncSupported为true即可(默认为false)

阅读全文 »

BeanFactoryPostProcessor

实现改接口,可以在Bean创建前,修改Bean定义的对象(元数据),也就是定义Bean的相关信息。但是需要注意的是,不可以在该实现里面触发Bean的实例化操作。可能会导致其他意想不到的问题。文档中有注释,如果需要与构建的Bean有交互的话使用BeanPostProcessor

BeanPostProcessor

该接口有两个方法。一个为执行Bean的init方法之前,一个是之后,在该过程中可以对该Bean进行修改操作。

阅读全文 »

BeanFactory

是Spring IOC容器定义的跟接口,用于获取Bean。

FactoryBean

是一个Bean,只不过是一个工厂Bean,在BeanFactory需要获取Bean的时候,通过FactoryBean来生成对象返回,如果是单例,缓存生成的对象。如果需要获取的是FactoryBean而不是FactoryBean生成Bean时,需要在Bean的名称上面加一个**&**

阅读全文 »
0%