Windows装机必备

Windows装机必备

继续阅读

java cron表达式

java cron表达式

https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm

长度7位
秒分时日月星期年

Spring定时任务

# 每月的最后1天
@Scheduled(cron = "0 0 18 28–31 * ?")
public void doAtLastDayOfMonth() {
    final Calendar calendar = Calendar.getInstance();
    if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) {
        // do something here...
    }
}

说明:
Java(Spring)

*    *    *    *    *    *    *
-    -    -    -    -    -    -
|    |    |    |    |    |    |
|    |    |    |    |    |    + year [optional]
|    |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
|    |    |    |    +---------- month (1 - 12)
|    |    |    +--------------- day of month (1 - 31)
|    |    +-------------------- hour (0 - 23)
|    +------------------------- min (0 - 59)
+------------------------------ second (0 - 59)

长度6位,去掉最后的年

参考:https://www.matools.com/cron

Springboot +log4j2

1. 屏蔽所有log4j

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    <exclusions>
        <exclusion>
            <groupId>*</groupId>
            <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

2. IDEA 调试时,记得清空target目录下,因为有缓存,尝试了很多次都是有问题,清空后即可。

参考:
log4j-slf4j-impl cannot be present with log4j-to-slf4j_草原孤狼的专栏-CSDN博客

eclipse 调试时出现label job 异常

某一天,eclipse升级到2020-09后,在eclipse调试时,总是弹出错误框,显示 

An internal error occurred during: “Label Job”

怀疑新版本异常,使用2020-06, 发觉也会异常,暂时没时间折腾就放下啦。

今天再次研究,

查看workspace 目录下的log

!MESSAGE An internal error occurred during: “Label Job”.

!STACK 0

java.lang.IllegalArgumentException

    at org.objectweb.shadedzt.asm.signature.SignatureReader.parseType(SignatureReader.java:249)

    at org.objectweb.shadedzt.asm.signature.SignatureReader.acceptType(SignatureReader.java:140)

    at org.objectweb.shadedzt.asm.commons.Remapper.mapSignature(Remapper.java:207)

    at com.zeroturnaround.jdi.util.TypeUtil.fixGenericSig(TypeUtil.java:40)

    at com.zeroturnaround.jdi.JRReferenceType.genericSignature(JRReferenceType.java:374)

    at org.eclipse.jdi.internal.ClassTypeImpl$$$jr.genericSignature(<generated>:60000)

    at org.eclipse.jdt.internal.debug.core.model.JDIReferenceType.getGenericName(JDIReferenceType.java:297)

    at org.eclipse.jdt.internal.debug.core.model.JDIObjectValue.getReferenceTypeName(JDIObjectValue.java:507)

    at org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getValueText(JDIModelPresentation.java:471)

    at org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getFormattedValueText(JDIModelPresentation.java:1357)

    at org.eclipse.jdt.internal.debug.ui.variables.JavaVariableLabelProvider.getValueText(JavaVariableLabelProvider.java:86)

    at org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider.getColumnText(VariableLabelProvider.java:104)

    at org.eclipse.jdt.internal.debug.ui.variables.JavaVariableLabelProvider.getColumnText(JavaVariableLabelProvider.java:175)

    at org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider.getLabel(VariableLabelProvider.java:84)

    at org.eclipse.jdt.internal.debug.ui.variables.JavaVariableLabelProvider.getLabel(JavaVariableLabelProvider.java:220)

    at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider.getLabel(ElementLabelProvider.java:297)

    at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider.retrieveLabel(ElementLabelProvider.java:200)

    at org.eclipse.jdt.internal.debug.ui.variables.JavaVariableLabelProvider.retrieveLabel(JavaVariableLabelProvider.java:186)

    at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider$LabelUpdater.run(ElementLabelProvider.java:147)

    at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider$LabelJob.run(ElementLabelProvider.java:74)

    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

google,大多数没有用

最后发现

568473 – Exception on Breakpoint “Label Job” (eclipse.org)

I got a reply from JRebel:

“Thank you for reporting the issue. Our developers are aware of the issue and we are working on fixing it”

好吧,确实是使用啦JRebel

刚好,eclipse弹出升级确认,JRebel 有更新

升级完成后,OK。

在虚函数里面使用spring的DI

参考:https://medium.com/@citizenACLV/use-springs-dependency-injection-in-java-abstract-class-2573c1b4c0d1

实现的子类使用@Component

Factory 使用@Service, 得到实例的时候,使用@Autowired, 而不使用new

这个是关键,不然,虚基类的autowired会一直null

spring的autowired,默认是singleton,即autowired得到的都是同一个对象,

如果要每次都create new,则使用ObjectFactory,getObject每次会创建新的对象。

public class SingletonObjectFactoryBean {

    @Autowired

    private ObjectFactory<PrototypeBean> prototypeBeanObjectFactory;

    public PrototypeBean getPrototypeInstance() {

        return prototypeBeanObjectFactory.getObject();

    }

}

参考:https://www.baeldung.com/spring-inject-prototype-bean-into-singleton

echarts 显示整数时异常

一组数据,都是整数,使用line chart显示,加上datazoom

datazoom移动到部份区域时,出现显示的点的位置没有对齐坐标

移动到特殊时间时出现,看数据都是整数,看不出异常。

解决方案:

移除sampling 配置

         series: [{

          symbol: “emptyCircle”,

          symbolSize:4,

             type: ‘line’,

             data:xdata,

// sampling:’average’,

// showAllSymbol:’auto’,

         }]

sampling 的作用,在数据笔记多的时候,无法完整显示所有数据的一个取值方式, 因为之前设置了average,所以会异常的出现不是整数的值。

使用git hooks 自动更新spring项目中 js 和css 文件版本号

spring项目中,修改了js文件后,重新部署后, 客户端经常会因为缓存了旧的js文件,导致功能异常。

一般的解决方案,是spring中引入资源处理插件,然后把相关资源文件的连接处理成类似test_xxxxxx.js的文件

本方案,再jsp中引用js时采用  test.js?v222222 ,即js文件名+?+版本号,版本号一般就是文件的修改日期。

源代码使用git管理,添加git的pre-commit hooks,在提交包含js或者css的文件修改时,扫描src目录下的相关文件,有带有文件连接的,

使用新的修改后的版本号替换。

git commit 后,会自动把相关的jsp修改后的文件,也一起提交。

https://gist.github.com/minyoad/b27fb53af3930d0093b94b823f0c2292

PS:

使用的是bash脚本,windows 只在wsl中测试过。