OpenJDK

java 面试知识点笔记(七)多线程与并发 上篇

ぐ巨炮叔叔 提交于 2019-11-30 00:13:40
问:进程和线程的区别? 进程是资源分配的最小单位,线程是CPU调度的最小单位 所有与进程相关的资源,都被记录在PCB中 进程是抢占处理器的调度单位;线程属于某个进程,共享其资源 线程只由堆栈寄存器、程序计数器和TCB组成 总结: 线程不能看作独立应用,而进程可以看作独立应用 进程由独立的地址空间,互不影响,线程只是进程的不同执行路径(一个线程挂掉了整个进程就挂掉了) 线程没有独立的地址空间,多进程的程序比多线程的程序健壮 进程的切换比线程的切换开销大很多(所以做高并发的程序采用多线程开发) java对操作系统提供的功能进行封装,包括进程和线程 运行一个程序会产生一个进程,进程包含至少一个线程 每一个进程对应一个JVM实例,多个线程共享JVM里的堆 java采用单线程编程模式,程序自动创建主线程 主线程可以创建子线程,原则上要后于子线程完成执行 问:Thread中start和run方法的区别? 直接看源码 这是一个本地方法 去openjdk里面查看 java/lang/Thread.c start0方法调用了JVM_StartThread 再去vm/prims/jvm.cpp查看JVM_StartThread方法 方法里面代码很多 最关键的是看new JavaThread方法 传入了thread_entry thread_entry里面主要是 call虚拟机传入run方法名字

The JDK is missing and is required to run some NetBeans modules

时间秒杀一切 提交于 2019-11-29 22:51:40
Complete error message: The JDK is missing and is required to run some NetBeans modules Please use the --jdkhome command line option to specify a JDK installation or see http://wiki.netbeans.org/FaqRunningOnJre for more information. Some details: I just installed Netbeans on Linux mint for the first time and when I start it when its turning on modules this error message appears. But I do have jdk installed. $ java -version java version "1.8.0_66" Java(TM) SE Runtime Environment (build 1.8.0_66-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode) $ javac -version javac 1.8.0_66

Docker Swarm从部署到基本操作

社会主义新天地 提交于 2019-11-29 21:12:42
关于Docker Swarm Docker Swarm由两部分组成: Docker集群:将一个或多个Docker节点组织起来,用户就能以集群的方式进行管理; 应用编排:有一套API用来部署和管理容器; 官方资料: https://docs.docker.com/swarm/ 网络图 下图是个典型的Docker Swarm集群部署图,来自Docker官网: 接下来照着上图来搭建一个Docker Swarm集群。 准备工作 本次实战一共用到了5台机器,配置信息全部相同,如下: 操作系统:CentOS Linux release 7.6.1810 Docker服务版本:1.13.1 防火墙都已经关闭; 机器的信息如下表所示: | IP地址 | 主机名 | 身份 | |--|--|--| | 192.168.121.142 | m0 | 管理节点 | | 192.168.121.139 | m1 | 管理节点 | | 192.168.121.140 | m2 | 管理节点 | | 192.168.121.141 | w0 | 工作节点 | | 192.168.121.138 | w1 | 工作节点 | 为什么要三个管理节点? 从官方图可见,管理节点集群之间的内部管理协调使用了Raft共识算法,这样就保证了管理节点高可用(HA),一般情况下会参考以下两个原则: 部署奇数个管理节点

进击的 Java ,云原生时代的蜕变

流过昼夜 提交于 2019-11-29 20:57:32
作者| 易立 阿里云资深技术专家<br /> <br />导读:云原生时代的来临,与Java 开发者到底有什么联系?有人说,云原生压根不是为了 Java 存在的。然而,本文的作者却认为云原生时代,Java 依然可以胜任“巨人”的角色。作者希望通过一系列实验,开拓同学视野,提供有益思考。 在企业软件领域,Java 依然是绝对王者,但它让开发者既爱又恨。一方面因为其丰富的生态和完善的工具支持,可以极大提升了应用开发效率;但在运行时效率方面,Java 也背负着”内存吞噬者“,“CPU 撕裂者“的恶名,持续受到 NodeJS、Python、Golang 等新老语言的挑战。 在技术社区,我们经常看到有人在唱衰 Java 技术,认为其不再符合云原生计算发展的趋势。我们先抛开这些观点,首先思考一下云原生对应用运行时的不同需求。 体积更小 - 对于微服务分布式架构而言,更小的体积意味着更少的下载带宽,更快的分发下载速度。 **启动速度更快 **- 对于传统单体应用,启动速度与运行效率相比不是一个关键的指标。原因是,这些应用重启和发布频率相对较低。然而对于需要快速迭代、水平扩展的微服务应用而言,更快的的启动速度就意味着更高的交付效率,和更加快速的回滚。尤其当你需要发布一个有数百个副本的应用时,缓慢的启动速度就是时间杀手。对于Serverless 应用而言,端到端的冷启动速度则更为关键

Docker Swarm从部署到基本操作

喜夏-厌秋 提交于 2019-11-29 20:47:23
关于Docker Swarm Docker Swarm由两部分组成: Docker集群:将一个或多个Docker节点组织起来,用户就能以集群的方式进行管理; 应用编排:有一套API用来部署和管理容器; 官方资料: https://docs.docker.com/swarm/ 网络图 下图是个典型的Docker Swarm集群部署图,来自Docker官网: 接下来照着上图来搭建一个Docker Swarm集群。 准备工作 本次实战一共用到了5台机器,配置信息全部相同,如下: 操作系统:CentOS Linux release 7.6.1810 Docker服务版本:1.13.1 防火墙都已经关闭; 机器的信息如下表所示: | IP地址 | 主机名 | 身份 | |--|--|--| | 192.168.121.142 | m0 | 管理节点 | | 192.168.121.139 | m1 | 管理节点 | | 192.168.121.140 | m2 | 管理节点 | | 192.168.121.141 | w0 | 工作节点 | | 192.168.121.138 | w1 | 工作节点 | 为什么要三个管理节点? 从官方图可见,管理节点集群之间的内部管理协调使用了Raft共识算法,这样就保证了管理节点高可用(HA),一般情况下会参考以下两个原则: 部署奇数个管理节点

Rainbond源码构建JAVA项目选取JDK

和自甴很熟 提交于 2019-11-29 18:31:55
默认提供的JDK Rainbond官方提供了多个版本的OpenJDK供用户使用。这些OpenJDK的安装包托管于好雨科技官方的OSS(对象存储)中。能够接入互联网的Rainbond平台,可以通过rbd-repo组件的代理获取这些资源,而不用人工干预。 用户通过WEB界面配置,或在源码根目录创建 system.properties ,设定 java.runtime.version 来指定OpenJDK版本。 WEB界面设置的值优先级高于 system.properties 中设定的值。 WEB界面指定: system.properties 指定方式: # system.properties 目前Rainbond能识别的版本值为11,10,1.9,1.8,1.7,1.6 java.runtime.version=1.8 在不做出其他任何调整的情况下,在Rainbond执行源码构建时,会获取以下版本的OpenJDK资源: OpenJDK版本 资源地址 1.8(默认) http://lang.goodrain.me/jdk/cedar-14/openjdk1.8.0_201.tar.gz 1.6 http://lang.goodrain.me/jdk/openjdk1.6.0_27.tar.gz 1.7 http://lang.goodrain.me/jdk/cedar-14

修改,编译,GDB调试openjdk8源码(docker环境下)

眉间皱痕 提交于 2019-11-29 18:21:54
在上一章《在docker上编译openjdk8》里,我们在docker容器内成功编译了openjdk8的源码,有没有读者朋友产生过这个念头:“能不能修改openjdk源码,构建一个与众不同的jdk“,今天我们就来阅读一些openjdk的源码,再尝试做些小改动并验证。 我们先编译openjdk: 首先通过命令git clone git@github.com :zq2599/centos7_build_openjdk8.git下载构建镜像所需的文件,下载后打开控制台进入centos7_build_openjdk8目录,执行 docker build -t bolingcavalryopenjdk:0.0.1 . 这样就构建好了镜像文件,再执行启动docker容器的命令(<font color="red">命令中的参数“–security-opt seccomp=unconfined”有特殊用处,稍后会讲到</font>): docker run --name=jdk001 --security-opt seccomp=unconfined -idt bolingcavalryopenjdk:0.0.1 然后执行以下命令进入容器的控制台: docker exec -it jdk001 /bin/bash 进入容器的控制台后执行以下两个命令开始编译: ./configure --with

PHP与Java进行通信的实现方法

做~自己de王妃 提交于 2019-11-29 18:03:25
PHP与Java进行通信的实现方法 缘起: 最近做了一个电商平台与网银整合的小东西,程序是开源的 Ecmall的,网银的接口也很规范,给出的文档很全,唯一的小问题是,网银使用的签名和验签的lib是只有java和c的,对java还熟悉一些,所以选择了使用java作为签名和验签的接口。 方法: 网上关于php与java交互的资料其实挺多的。总体来说其实也是这么几种方法: •PHP直接通过exec或者system之类的命令调用命令行,然后以java Hello 这种类型得方式来运行java程序,但是缺点是很明显的,不能很好地与java类里面的各种方法进行交互,而且这种方式最终获取的运行结果也有行数限制,所以舍弃。 •PHP与Java通过WebService的方式进行通信,自己在Java端开放相关的WebService服务,然后通过XML或者JSON让PHP调用Java的WebService,这种方式比较大众,能实现的功能可定制性也强,但是缺点页非常明显 •要安装TomCat服务器,从而发布出Java端的相关报文 •WebService要写认证,对签名和验签的流程做出相关的安全认证 •PHP通过PHP-JAVA-BRIDGE这个模块,实现PHP和Java的通信,这个模块配置安装相对简单,所以选择了使用这个模块进行PHP和java的通信 第一步 安装java环境和PHP环境 PHP环境略

linux在线安装JDK(1.8版本)

北战南征 提交于 2019-11-29 17:35:46
linux在线安装JDK(1.8版本) 2018年07月03日 15:36:27 唯爱酒神 阅读数:806 标签: linux jdk安装 jdk安装 更多 个人分类: linux 在线下载 JDK 命令: wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm 下载读取条: 查看当前文件夹下是否有JDK安装包: 添加执行权限: 命令:chmod +x jdk-8u131-linux-x64.rpm 执行rpm进行安装 命令:rpm -ivh jdk-8u131-linux-x64.rpm 查看JDK是否安装成功 命令:java -version 查看JDK的安装路径,(一般默认的路径:/usr/java/jdk1.8.0_131) 配置JDK环境变量 1、编辑环境变量 export JAVA_HOME=/usr/java/jdk1.8.0_131 export JRE_HOME=${JAVA_HOME}/jre

使用Eclipse搭建Android开发环境

故事扮演 提交于 2019-11-29 17:33:57
导读 本文就来介绍一下 Linux 如何使用Eclipse搭建Android开发环境安装,Java运行环境JDK(没这个Eclipse运行不起来),在这里我安装的是jdk-8u51-windows-i586,安装时按照提示,直接点击下一步,直到完成。 第一步: 安装Java运行环境JDK(没这个Eclipse运行不起来),在这里我安装的是 jdk-8u51-windows-i586 ,安装时按照提示,直接点击下一步,直到完成。 第二步: 进行验证自己是否把java的运行环境安装正确,需要打开cmd命令,在里面输入“ java -version ” 第三步: 安装android的开发环境:Eclipse 我这边有一个 压缩包 : eclipse-SDK-3.7.1-win32 解压安装 我们把JDK安装到这个路径: /usr/lib/jvm 如果没有这个目录(第一次当然没有),我们就新建一个目录 cd /usr/lib sudo mkdir jvm 建立好了以后,我们来到刚才下载好的压缩包的目录,解压到我们刚才新建的文件夹里面去,并且修改好名字方便我们管理 sudo tar zxvf ./jdk-7-linux-i586.tar.gz -C /usr/lib/jvm cd /usr/lib/jvm sudo mv jdk1.7.0_05/ jdk7 配置环境变量 gedit ~/