OpenJDK

openjdk8+springboot 部署到Linux 时间快了12个小时

∥☆過路亽.° 提交于 2020-08-10 07:12:05
背景 : 最近工作过程中发现了一个可奇怪的现象,使用jdk1.8+springboot开发的jar,当部署到centos7上时,new date生成的时间会比系统时间慢了12小时,但是当其在mysql5.6库中读取时间时,又会增加12小时,同样的jar包在我所属的window机器上没有任何问题。 猜想 往往当我们系统时间差8小时,我们很容易想到是不是时区问题,可是现在我们系统在前台展示上没有任何问题, 只有我们自己查看mysql数据库中的信息时才会发现时间慢了12小时 ,那么我们在没有更多把握的基础上使用了枚举法, 1.linux系统问题,2.jdk问题,3.mysql问题 验证linux系统问题 我们使用date -R查看了系统时区,发现系统当前是东八区,同时时间也是当前正确的时间,所以系统问题扑街。 验证mysql问题 我们使用同样的jar包,在window上运行,结果发现数据库中的结果是正确的,由此再次说明跟人家mysql毫无关系. 验证jdk问题 在只剩下最艰难的一条道路可走时, 我们意外的发现了一个好消息,应用在linux上的日志时间也是错误的 ,这个无疑给我们确定了,问题就是应用程序出的,而且可以知道应该就是时区出了问题,一般这种情况都是修改下jre lib下得时区,可是1.8版本中我并没有找到对应得文件夹,还有方法是修改tomcat得catalina配置文件

Ubuntu 卸载openJDK

╄→尐↘猪︶ㄣ 提交于 2020-08-10 00:12:13
Ubuntu 卸载openJDK 如果你在 Ubuntu 软件中心安装过 OpenJDK,请先使用如下命令将其删除: sudo apt-get purge openjdk* 来源: oschina 链接: https://my.oschina.net/zhenggao/blog/4291182

你确定 Maven 相关的东西全部了解吗

戏子无情 提交于 2020-08-09 21:42:10
前言 如果你对 Maven 的了解只停留在怎么添加依赖包,你真的需要看接下来的内容。 <dependencies> <!-- https://mvnrepository.com/artifact/org.openjdk.jol/jol-core --> <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.10</version> </dependency> </dependencies> maven 包的依赖关系、依赖传递及依赖传递遵循的规则 依赖包的作用域 怎么解决 jar 包冲突 项目继承和聚合 maven 生命周期 maven 插件使用及常用命令 maven 私服的使用 怎么发布 jar maven 定义不同的配置环境 maven-assembly-plugin 打包 Maven 目前 java 项目流行的项目管理工具 Maven 和 Gradle 。目前使用率来说, Maven 使用占比是高于 Gradle 的。纠结选哪个管理工具的时候就用 Maven 就行。 在 Maven 中通过 POM-Project Object Model 项目对象模型的概念来管理项目。在 Maven 中每个项目都相当于一个对象,对象(项目)之间可以依赖、继承、聚合

80%的Oracle JDK用户正在寻找免费的替代品!!!

对着背影说爱祢 提交于 2020-08-09 11:26:40
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 在 2019 年,Oracle 决定更改许可模式,从提供免费的 Java 更新转变为要求付费订阅(见:JDK 11 是发布了,但收费吗?),这一重大变化无疑在市场上掀起了一片波澜。之后,尽管有一些使用 Java 的公司扔坚持使用 Oracle 并承担了增加的支持成本,但许多公司也在步步为营,谋求新的选择。 据 Azul Systems 的一项新调查显示,目前有 80% 的 Oracle JDK 用户正在考虑其他选择。Snyk 和 Oracle 联合进行的 2018 年调查层表明,Oracle JDK 用户以前占 Java 用户的很大比例。该调查发现 70% 的受访者使用 Oracle JDK,21% 的受访者使用 OpenJDK,9% 的受访者使用其他 JDK 实现,例如 Eclipse OpenJ9/IBM J9、Android SDK 和 Azul。而在这 70% 的用户中,现在则有 80% 在考虑替代方案。 Azul 董事会主席 Bill Coleman 称,“领先的行业分析师一致认为,Oracle 的大多数 JVM 客户都在寻找更具成本效益的开源解决方案,该解决方案可支持原本不受支持的较早版本。” Azul Systems 透露,在 2020 年 2

NullPointerException 的处理新方式,Java14 真的太香了!

十年热恋 提交于 2020-08-08 05:27:48
在Java语言中,处理空指针往往是一件很头疼的事情,一不小心,说不定就搞出个线上Bug,让你的绩效考核拿到3.25。 最近新出的Java14,相信大家都有所耳闻,那么今天就来看看,面对NullPointerException,Java14有哪些更好的处理方式呢? 1.传统的 NullPointerException 我们编码过程中呢,经常会使用链式调用的方式来写代码,这样写起来很方便,也很清晰,但是,一旦出现NullPointerException,那就头大了,因为你很难知道异常是在什么时候开始发生的。 举个简单的例子,就比如下面的代码,要找到公司某个员工的户籍所在地,我们这样来调用 String city = employee.getDetailInfos().getRegistryAddress().getCity(); 在链式调用的过程中,如果employee, getDetailInfos(),或者 getRegistryAddress() 为空,JVM就会抛出 NullPointerException 那么导致异常的根本原因是什么?如果不使用调试器,很难确定哪个变量为空。而且,JVM也只会打印导致异常的方法、文件名和行号,仅此而已。那么下面,我将带大家了解Java 14如何通过 JEP 358 解决这个问题。 2.增强型 NullPointerException

JMH和Disruptor

时光怂恿深爱的人放手 提交于 2020-08-07 21:25:59
官网 http://openjdk.java.net/projects/code-tools/jmh/ 创建JMH测试 创建Maven项目,添加依赖 < ? xml version = " 1.0 " encoding = " UTF-8 " ? > < project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns : xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi : schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd " > < modelVersion > 4.0 . 0 < / modelVersion > < properties > < project . build . sourceEncoding > UTF - 8 < / project . build . sourceEncoding > < encoding > UTF - 8 < / encoding > < java . version > 1.8 < / java . version > < maven . compiler . source

为什么java8还在被大量使用?

柔情痞子 提交于 2020-08-07 11:35:45
  对于很多人来说,新版本的很多功能是很值得期待,并且他是从功能开发到预览一直在关注。而且对于本身来说升级所带来的好处远远大于升级所带来的工作量。   因为java 本身的兼容性问题,导致升级版本的工作量要小很多。但是对于令一些人来说,就不一样。他可能不会关注这些东西。一直没关注所以很多东西不知道需要了解。于是在他们看来,Java8用着顺手,那就这样了呗。   这个时候对于他来说,将Java8升级是不划算的。因为一次性把一些东西放到他面前他学习是需要成本的。而且对于未知的事物大多时候心里都没有底的。没有谁对谁错,也没有鄙视不鄙视。根据自身情况选择。   再者说一下Java 本身的更新情况。如果是Java 开发者,那么建议还是多关注一下openjdk 的主页。Java 现在的版本更新其实没那么激进,都是新版本大多数情况兼容老版本。如果api 或者相关功能要舍弃了,一般都会有标注废弃,或者在你能正式使用这个版本之前很长一段时间就有消息通知这个东西要舍弃了。被标注废弃的东西,一般也可能会在后面的几个版本中才会彻底删除。按照现在的进度半年一个版本。所以你最低都会有6个月的缓冲时间去改进你代码中被标记废弃的部分。(况且大多时候还可能有好几个版本才会删除)   另外,jdk 每个版本都有一些预览功能,例如jdk9 的http 客户端,jdk11 的zgc ,jdk 13的switch 表达式

SpringCloud:微服务 Docker 化之基础环境

谁说胖子不能爱 提交于 2020-08-07 04:21:41
1. 容器化 Docker 的横空出世,给了容器技术带来了质的飞跃,Docker 标准化了服务的基础设施,统一了应用的打包分发,部署以及操作系统相关类库等,解决了测试生产部署时环境差异的问题。对于运维来讲,由于镜像的不可变性,更容易进行服务部署和回滚操作。利用各种第三方容器管理平台,实现一键部署、动态伸缩等操作变的轻而易举。 2. 基础镜像选择 在操作系统的选择上,可选择传统的 CentOS 、 Ubuntu 或者更为轻量化的 Alpine 。比如 CentOS 或者 Ubuntu 的镜像都在 100MB 以上,压缩后也都有大几十 MB ,而轻量化的 Alpine 3.10 版本镜像大小约为 5.58MB ,而它压缩后更是仅有 2MB 大小左右。 Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。在保持瘦身的同时,Alpine 还提供了自己的包管理工具 apk 。 关于基础镜像的选择,一个是考虑镜像的大小,另一个是只提供最小的依赖包。关于第二点,不同的服务所需要的依赖包是不同的,这里不再展开讨论,如果仅从第一点考虑的话, Alpine 肯定是首选,镜像越小,远程推拉越快

程序人生丨因为知道了30+款在线工具,我的工作效率提升 500% !

混江龙づ霸主 提交于 2020-08-06 20:08:25
Perl 之父 Larry Wall 曾经在自己的《Programming Perl》一书中提到过:"程序员有3种美德: 懒惰、急躁和傲慢" 。懒惰,作为程序员美德的第一个要素。 Larry Wall 所说程序员应该具备的懒惰,并不是安于现状、不思进取。而是一种为了达到同样甚至更好的目标,而付出最少的时间或者精力的行为。一个懒惰的程序员会尽量使自己的代码即实用又有很好的可读性,这样可以节省很多后面的维护的成本。一个懒惰的程序员会尽力完善代码中的注释及文档,以免别人问自己太过问题。一个懒惰的程序员会擅长使用各种工具,从方方面面提升自己的效率。 懒惰是科技发展、人类进步的最大动力。从原始社会、农业时代、工业时代一直到如今的信息时代。因为懒惰,人们才会有动力去发明各种高效、便捷的工具,这些当初的工具,渐渐的就形成了如今的科技。所谓工欲善其事、必先利其器,说的就是这个道理。 在一篇文章中,作者将介绍多种实用的工具,全方位的武装你,使我们的读者都可以当一个“懒惰”的程序员。 搜索类在线工具 1、SearchCode( searchcode.com/ )是一个源码搜索引擎,目前支持从 Github、Bitbucket、Google Code、CodePlex、SourceForge 和 Fedora Project 平台搜索公开的源码。 2、mvnrepository(

java生成jar并用ikvm生成dll供C#调用

怎甘沉沦 提交于 2020-08-06 15:02:53
最近想尝试用C#做NB_IOT北向API接口的访问。北向API的接口的访问需要证书的双向认证,而C#不支持双向认证,所以就使用IKVM在C#中跑JAVA程序实现HTTPS请求部分。 步骤如下: 一、使用Eclipse编写好北向API请向的JAVA部分代码并打包。如图: 1、代码编写 2、生成jar 3、将项目中依赖的包添加到生成的jar中,因为生成jar时有些依赖包是不存在的,提前将依赖包加入jar中也方便使用ikvmc一次生成dll,而不需要在ikvmc中依次将依赖包导入。 二、使用ikvmc生成dll,因为北向的API使用的是JDK8以上,因此选用ikvm-8.1.5717.0版本,该版本支持jdk8 1、将生成的jar复制到ikvm-8.1.5717.0\bin中,使用命令提示符进入该目录,使用ikvmc -out:XX.dll XX.jar命令生成dll,如图: 注意:该使用生成输出时不能报错否则生成不成功,报警信息可根据情况忽略。 三、将生成的dll与IKVM.Runtime.dll、IKVM.Runtime.JNI.dll、IKVM.OpenJDK.Core.dll拷贝到C#项目中并引用(PS:直接这里拷贝IKVM的dll老是报找不到该文件的错误,很纠结!我是通过NuGet添加对应版本的IKVM才可以的)。 编写C#的程序并调用,如图: 运行!成功!!!! 来源: