使用MyEclipse的Export功能可以方便地生成简单的Jar工具类。...具体步骤如下: 选择File -> Export,在弹出的窗口选择Java -> Runnable JAR File,如下图所示: 在Launch configuratioin 下选择相应的Java文件...,在Export destination 选择目标Jar文件的位置,如下图所示: 最后点击 Finish 即可。
#LocalDateTime 比较大小 计算两个LocalDateTime的时间差时分秒 实体用的都是 年月时间 格式 以下是LocalDateTime 比较方法 public static void...LocalDateTime.parse("2022-02-02 15:33:33", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) //比较 如今的时间...在 设定的时间 之后 返回的类型是Boolean类型 System.out.println(nowTime.isAfter(endTime)); //比较 如今的时间...在 设定的时间 之前 返回的类型是Boolean类型 System.out.println(nowTime.isBefore(endTime)); //比较 如今的时间...和 设定的时候 相等 返回类型是Boolean类型 System.out.println(nowTime.equals(endTime)); }
thingsboard_gateway/config --name tb-gateway --restart always thingsboard/tb-gateway /d/tb-gateway/logs 就是d盘下的/...╭(╯^╰)╮ 在windows下目录一般是这样的D:\tb-gateway> 在使用时,就把某个盘当做根目录下的子目录 路径 分隔符使用 /
使用golang部署运行tls的https服务时,不用停机,高效证书下放,如何实现?...比如说JA3指纹算法,它能基于TLS客户端与服务端之间握手消息内容生成一个指纹,具体来说,就是在进行TLS握手时,客户端会发送一些包含有关自身支持的加密套件、TLS/SSL版本等信息的消息给服务器,服务器会回应类似的消息...当创建CSR时,重要的是指定提供IP地址的Common Name,或者服务的域名,否则certificate无法验证。...,将使用包含运行文件同级目录下的localhost.crt作为certFile,使用localhost.key作为keyFile启动一个HTTPS服务。...运行服务,它会像之前一样运行,但是区别点就在于,我从调用对象中抽象了所有的服务配置,因此这些配置即便更新,也会动态加载,而不必重启服务。
,目录在 http://hg.openjdk.java.net/jdk8u/jdk8u/jaxws/该项目编译进jar/lib/rt.jar 主要包含 JAXB/WSweb service 如何加载哪个解析器...JAXP的API 由于考虑到使用场景和第三方库非常多,我们可以分别对JAXP 和 JAXWS进行分别防御 如何防御XXE 常见JAXP 的XXE防御 我们会在获取解析器的时候设置参数: .setFeature...,需要对第三方组件的不同使用方式进行设置 底层XXE防御 通过前面的介绍,我们可以通过自定义设置DocumentBuilderFactory,SAXParserFactor,XMLInputFactory...设置运行环境参数、JRE/lib/jaxp.properties、META-INF/service/ 参数 (由你的项目决定) 为SecureSAXParserFactoryImpl 2....通过环境变量/配置文件设置feature是否打开 -DSAXParserFactory.disallow-doctype-decl=true这样的好处是不在关心开源组件,直接使用底层的JAXP, JAXWS
Java8 实现 (引入了红黑树) Java8 对 ConcurrentHashMap 进行了比较大的改动,Java8 也引入了红黑树...如果使用排序的映射,建议使用 TreeMap。...在使用 TreeMap 时,key 必须实现 Comparable 接口或者在构造 TreeMap 传入自定义的 Comparator,否则会在运行时抛出 java.lang.ClassCastException...时,先得到的记录肯定是先插入的,也可以在构造时带参数,按照访问次序排序 4....那么我们就可以使用缓存的策略,也就是使用线程池。
1.1 Java8的新特性 1.2 Java8新特性的特点 速度快。...便于并行 最大化减少空指针异常:Optional Nashorn引擎,允许在JVM上运行JS应用 1.3 Lambda表示式 1.3.1 为什么使用 Lambda 表达式 Lambda是一个... // 使用lambda表达式 Runnable runnable1 = () -> System.out.println("我是lambda写法"); } 复制代码 1.3.2.2..."); 复制代码 1.3.2.4 语法格式四:Lambda若只需要一个参数时,参数的小括号可以省略 Consumer consumer2 = s -> { System.out.println...你可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda 表达式抛出一个受检异常 即:非运行时异常,那么该异常需要在目标接口的抽象方法上进行声明)。
模块化的概念 模块化的目标 模块独立、化繁为简 模块化(以 Java 平台模块系统的形式)将 JDK 分成一组模块,可以在编译时,运行时或者构建时进行组合 主要目的在于减少内存的开销 只须必要模块,而非全部...如果jar包是在JDK 8的运行时环境下运行,将使用根目录下面的class文件进行程序运行。...如果jar包是在JDK 9的运行时环境下运行,将使用META-INF/versions/9/下面的class文件进行程序运行。...使用java 9 版本 测试字符串 在JDK 8的环境下运行这个jar包 D:\multi-release-jar-example>C:\jdk1.8.0_151\bin\java -cp my-lib.jar...(Consumer,Runnable) Java 9 中的增强 如果存在值,则此新方法将执行给定的Consumer操作,否则运行给定的Runnable操作。
作为一名java开发人员,java8的一些新东西也是必须要掌握的,今天就说说这Lambda表达式的使用。...优点:可以写出更简洁、更灵活的代码;同时它还是一种更紧凑的代码风格,使java的语言表达能力得到了提升 (2)看看代码 我们通过对比new一个Runnable的案例来对比使用Lambda表达式和不使用Lambda...// java8 new一个Runnable 使用了Lambda表达式,代码更紧凑了 Runnable r2 = () -> System.out.println("runnable java8"...("runnable java8 thread")).start(); } 代码中new一个Runnable可以通过匿名内部类的方式,也可以采用Lambda的方式。...在使用Lambda表达式时eclipse直接提示了一个错误,错误消息见下图: 这个弹窗的提示说目标类型必须是函数式接口。
序 本文主要研究一下resilience4j的Retry Retry resilience4j-retry-0.13.0-sources.jar!...* * @param retry the retry context * @param runnable the original runnable *...* @return a retryable runnable */ static Runnable decorateRunnable(Retry retry, Runnable runnable...沿用了该组件的一贯风格,通过decorate方法来织入重试的逻辑 重试的逻辑就是一个while true循环,先执行业务方法,如果成功则调用Retry.Context的onSuccess方法,然后跳出循环...doc Resilience4j is a fault tolerance library designed for Java8 and functional programming
bug如下图: 困扰了我好长时间,在老师和同学的帮助下,终于解决了。原因是字段名没有对应 改成和数据库字段名一样即可,并将实体类的相关方法重新编写即可
同时,伴随着大前端的火热,驻扎在JS阵营的也是不在少数,JS灵活的语法也是让人欲罢不能。这些语言早早的具备了Java8中的面向函数编程的思想。...仔细瞧瞧这段代表要表达的意思其实就是启动一个线程,这个线程只做了一件事——打印“This is runnable thread”。...thread")); lambdaThread.start(); } } 如何你用的是Java8的jdk,那么运行这两个类会发现,效果完全一样,而这,就是你听过很久的Lambda...除了Runnable接口的run方法,我们还有再熟悉不过的用于集合元素比较器的Comparator类,Java8之前,我们想对于一个集合采用自定义的方式排序,可以这样实现 public class ComparatorWithoutLambda...匿名——他确实没有像普通函数那样有自己的名字,先前的匿名函数也是如此 参数——上面的a1和a2就是参数,可以对应到没用Lambda时函数参数的声明 函数体——就是上面的“apple1.getWeight
我们以MySQL为例,来看看镜像的组成结构: 简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等 组合,然后编写好启动脚本打包在一起形成的文件。...我们要构建镜像,其实就是实现上述打包的过程。 3.Dockerfile语法 构建自定义的镜像时,并不需要一个个文件去拷贝,打包。.../java8 # 配置环境变量 ENV JAVA_HOME=$JAVA_DIR/java8 ENV PATH=$PATH:$JAVA_HOME/bin # 暴露端口 EXPOSE 8090 # 入口...,java项目的启动命令 ENTRYPOINT java -jar /tmp/app.jar 步骤3:运行命令 构建镜像 docker build -t javaweb:1.0 步骤4:运行容器 并且访问.../app.jar /tmp/app.jar EXPOSE 8090 ENTRYPOINT java -jar /tmp/app.jar ④ 使用docker build命令构建镜像 ⑤ 使用docker
mysql-5.7.rpm /tmp RUN 执行命令(如安装软件) RUN yum install gcc EXPOSE 暴露端口,供外界访问 EXPOSE 8080 ENTRYPOINT 容器启动时执行的命令.../java8 ## 配置环境变量 ENV JAVA_HOME=$JAVA_DIR/java8 ENV PATH=$PATH:$JAVA_HOME/bin ## 拷贝Java项目包 COPY ....运行并测试镜像 镜像构建成功后,使用以下命令启动容器: docker run --name web -p 8090:8090 -d javaweb:1.0 查看日志以确保容器正常启动: docker logs...web 四、基于 Java8 镜像构建 Java 项目 在另一个示例中,我们使用 Docker Hub 上的 java:8-alpine 作为基础镜像,进一步精简配置。...运行容器并指定端口映射: docker run --name web2 -p 8091:8091 -d javaweb:2.0 五、总结与最佳实践 构建 Docker 自定义镜像时的一些小技巧和实践建议
在 Java 版本的历次更新迭代中,Java8 是一个特殊的存在,与以往的版本升级不同。...我们对 Java8 似乎抱有更大的期待,因为它是 Java5 之后最重要的一次升级,提供了十多个新特性,其中 Lambda 表达式是 Java8 新特性中最重要的一个。...在 Java8 诞生之前,开发者更多的关注点在于对象的属性,这也是面向对象编程思想的核心,即对数据进行抽象,而函数式编程则是对行为进行抽象,是面向函数进行编程。...这里需要注意,能够使用 Lambda 表达式的必须是一个函数接口,函数接口是指该接口中只包含一个方法,如 Runnable 接口。...Java8 针对数据处理提供了 Stream API,让开发者能够以声明的方式来处理数据,Stream 对数据的处理类似于 SQL 语句查询数据库,将数据集合抽象成一种流,提供传输流的管道,并且可以在管道的节点上添加处理
直白的先让大家有个第一印象,在 java8 之前,在创建一个线程的时候,我们可能这么写: Runnable r = new Runnable() { @Override public void run(...) { System.out.println("Hello"); }}; 这段代码使用了匿名类,Runnable 是一个接口,这里 new 了一个类实现了 Runnable 接口,然后重写了 run 方法...例如:() -> 42 当只有一个参数,且其类型可推导时,圆括号()可省略。...;没有副作用–> 函数的运行不改变外部的状态),java8 为了使用函数式编程的优点,从而就使用了 lambada 表达式,从而 就定义了一种规范和约束,这个规范和约束就是函数式接口。...4.4 惰性求值 惰性求值(lazy evaluation,也称作 call-by-need)是这样一种技术:是在将表达式赋值给变量(或称作绑定)时并不计算表达式的值, 而在变量第一次被使用时才进行计算
,在java8之前,编译后会替我们生成一个比如XXX$num.class的文件。...具体分析 Runnable部分 java8之前指向到一个class #3处,java8时则指向#3 和0处(BootStrapMethods) 这个可能还是不直观,那么我们借助工具,jclasslib...如果使用不当,当大量的这样的数据加载到vm中,后果是可想而知的。...当大量的class加载到vm中时,java8的metaspace空间可以急剧增长,而metaspace空间,默认会自动调整阈值的,直到os内存不足,申请不到空间,会被oskill掉。...感兴趣的同学可以使用cglib中的Enhancer来实践下,调用jconsole或者jmc、jvisualvm来观察元空间变化。 结语 上述是个人心得,不对之处,欢迎指正。
Lamdba示例 用lambda表达式实现Runnable 使用lambda表达式可以替换匿名类,而实现Runnable接口是匿名类的最好示例。...Java 8之前的runnable实现方法,需要4行代码,而使用lambda表达式只需要一行代码。只需要用() -> {}代码块替代整个匿名类。...Lambda表达式一目了然") ).start(); 输出: 在Java8之前, 需要写很多代码 使用Java8, Lambda表达式一目了然 这个例子展示了Java 8 lambda表达式的语法,可以使用...更多示例请访问 :Java8 lambda表达式10个示例 启用Lambda 启用Lamdba目前有两种方式,一个是使用Google官方的,一个是使用第三方Java8兼容插件,推荐使用第三方兼容插件 。...原因:使用Google官方的方式有一定的兼容性,使用Jack时不能同时使用APT,如果使用butterknife、Dagger等使用了APT的注解框架就不行了 解决方案:使用retrolambda的兼容插件的方式启用
要么创建一个类实现该接口,然后new出一个对象,在调用方法时传递进去,要么使用匿名类,可以精简一些代码。...("欢迎关注公众号:程序新视界"); } }).start(); 在java8以前,使用匿名函数已经算是很简洁的写法了,再来看看使用Lambda表达式,上面的代码会变成什么样子。...Runnable线程初始化示例 Runnable线程初始化是比较典型的应用场景。...编译方式:Java编译器编译Lambda表达式时,会将其转换为类的私有方法,再进行动态绑定,通过invokedynamic指令进行调用。...小结 至此,Java8 Lambda表达式的基本使用已经讲解完毕,最关键的还是要勤加练习,达到熟能生巧的使用。当然,刚开始可能需要一个适应期,在此期间可以把本篇文章收藏当做一个手册拿来参考。
Java8 由Oracle在2014年发布,是继Java5之后最具革命性的版本了。...lambda")).start() Thread类接受一个Runnable类型实例,查看Jdk源码发现Runnable接口是一个函数式接口,可以直接用lambda表达式替代。...(parameter) -> {expression} 或者 (parameter) -> {statements; statements; } 参数只有一个可以省略括号 如果不用Lambda表达式,使用匿名内部类的方式...// before Java8 new Thread(new Runnable() { @Override public void run() { System.out.println...在没有lambda表达式之前,我们通常会使用匿名内部类的方式实现,详细对比见第一小节的实例代码。