JVM-005-运行时数据区-虚拟机栈

概述

官方:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5.2

背景

由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。

优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。

阅读更多
JVM-002-类加载子系统

JVM-002-类加载子系统

介绍

  • 类加载器子系统负责从文件系统或者网络中加载 Class 文件,class 文件在文件开头有特定的文件标识。
  • ClassLoader 只负责 class 文件的加载,至于它是否可以运行,则有 ExecutionEngine 决定。
  • 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息。可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)。
阅读更多
JVM-001-整体介绍

Linux中createrepo自建仓库教程

了解如何获取RPM包

在默认配置下使用yum命令安装完软件后安装包是不会保留的,如果想在本地也留存一份安装包,只需要将yum配置文件/etc/yum.conf中的keepcache=0改为1即可,这样安装包都会留存在cachedir所指定的目录中,如下:

阅读更多

微服务自动部署命令说明

基础命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 显示当前目录
$ basepath=$(cd `dirname $0`; pwd)
$ echo $basepath

# 获取本地IP
$ LAN_IP=$(ip addr| grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|cut -d "/" -f 1 | awk '{print $1}' | head -1)
$ echo $LAN_IP

# 禁用防火墙
$ systemctl stop firewalld && systemctl disable firewalld

# 禁用selinux
$ getenforce | grep -iq 'Enforcing' && setenforce 0
$ sed -i 's|SELINUX=\(.*\)|SELINUX=disabled|g' /etc/selinux/config

# $? 用法:获取上一次命令的返回值。0表示执行成功,非零值表示出错
$ result=$(rpm -qa|egrep "httpd|ansible|createrepo")
$ echo $?
1

# pushd 用法:另附文章说明
# createrepo 用法:另附文章说明
consul导入导出的使用

consul导入导出的使用

介绍

官方地址:https://www.consul.io/commands/kv

命令:consul kv

该kv命令用于通过命令行与 Consul 的 KV 存储进行交互。它公开了用于从存储中插入、更新、读取和删除的顶级命令。此命令在 Consul 0.7.1 及更高版本中可用。

KV 存储也可以通过 HTTP API访问。

1
2
3
4
5
6
7
8
9
10
11
$ consul kv -h
用法:consul kv <subcommand> [options] [args]

Subcommands:

delete 从 KV 存储中删除数据
export 以 JSON 格式导出部分 KV 树
get 从 KV 存储中检索或列出数据
import 导入部分JSON 格式的 KV 树
put 设置或更新 KV 存储中的数据

阅读更多