未来币nxt 启动分析(1)
来源:互联网 发布:化学反应软件 编辑:程序博客网 时间:2024/04/30 03:18
window安装后桌面图标'Nxt Server' 执行nxt.exe。或者直接运行nxt.bat也可以,启动类nxt.Nxt.java
1,静态属性初始化
private static volatile Time time = new Time.EpochTime();
将当前时间转化为以未来币纪元开始时间计时(Constants.EPOCH_BEGINNING=2013.11.24 12:00:00)
(int)((System.currentTimeMillis() - Constants.EPOCH_BEGINNING + 500) / 1000);
单位秒
static {
redirectSystemStreams("out");
redirectSystemStreams("err");
System.out.println("Initializing Nxt server version " + Nxt.VERSION);
printCommandLineArguments();
runtimeMode = RuntimeEnvironment.getRuntimeMode();
System.out.printf("Runtime mode %s\n", runtimeMode.getClass().getName());
dirProvider = RuntimeEnvironment.getDirProvider();
System.out.println("User home folder " + dirProvider.getUserHomeDir());
loadProperties(defaultProperties, NXT_DEFAULT_PROPERTIES, true);
if (!VERSION.equals(Nxt.defaultProperties.getProperty("nxt.version"))) {
throw new RuntimeException("Using an nxt-default.properties file from a version other than " + VERSION + " is not supported!!!");
}
}
2.1读取系统日志输出配置属性。将System.out.out/error写入到文件
PersonalOptions=-server -Dnxt.runtime.mode=desktop -Dnxt.redirect.system.out=true -Dnxt.redirect.system.err=true
private static void redirectSystemStreams(String streamName) {
//安装时会写入到系统
String isStandardRedirect = System.getProperty("nxt.redirect.system." + streamName);
。。。
System.setOut(new PrintStream(new PrintStream(Files.newOutputStream(Files.createTempFile("nxt.system.out.", ".log")))));
}
2.2打印命令行参数
printCommandLineArguments
就是打印-Dnxt.runtime.mode=desktop -Dnxt.redirect.system.out=true -Dnxt.redirect.system.err=true
2.3 获取运行模式
runtimeMode = RuntimeEnvironment.getRuntimeMode()
window运行模式为desktop(nxt.runtime.mode=desktop) nxt.env.DesktopMode
2.4 获取工作目录
dirProvider = RuntimeEnvironment.getDirProvider()
如果系统没有指定工作目录,桌面模式下windows系统是用WindowsUserDirProvider
Paths.get(System.getProperty("user.home"), "AppData", "Roaming", "NXT").toString();
创建工作目录
C:\Users\zzy\AppData\Roaming\Nxt\
相关的数据都放在这,包括:启动配置、日志、区块链数据
2.5 载入配置属性
loadProperties(defaultProperties, nxt-default.properties, true);
将conf目录下的nxt-default.properties读取到Properties.(run.bat会将conf/下的此文件加入classpath)
2.6 代码版本与配置版本判断
if (!VERSION.equals(Nxt.defaultProperties.getProperty("nxt.version"))) {
2.7 第二个静态块初始化
private static final Properties properties = new Properties(defaultProperties);
使用nxt-default.properties的值作为初始化值,nxt.properties的值覆盖nxt-default.properties
static {
loadProperties(properties, NXT_PROPERTIES, false);
}
从工作目录(windows C:\Users\zzy\AppData\Roaming\Nxt\conf\)读取nxt.properties
如果没有此文件 则创建个空的。
3,执行main方法
public static void main(String[] args) {
try {
Runtime.getRuntime().addShutdownHook(new Thread(Nxt::shutdown));
init();
} catch (Throwable t) {
System.out.println("Fatal error: " + t.toString());
t.printStackTrace();
}
}
public static void init() {
Init.init();
}
指向内部Init的静态块初始化。
阅读全文
0 0
- 未来币nxt 启动分析(1)
- NXT未来币安装挖矿教程
- Transvalor Forge NXT 1.1.0 Win64 1DVD
- CMS未来发展方向分析
- Lego Mindstorm NXT
- NXT Quadruped Walker
- NXT编程软件比较
- kmp nxt数组
- Linux启动分析专题 (1)
- Linux内核启动分析(1)
- nova-compute启动分析-1
- Android启动过程分析(1)
- uboot的启动分析1
- 未来1
- 鞍钢未来的利润分析
- 鞍钢未来的利润分析
- 我分析Flex的未来
- LEGO NXT固件源码
- java 下的 AES org.bouncycastle.crypto 包加密解密算法示例
- Opencv在Release和Debug不同模式下的配置
- Java class 文件信息
- spark on yarn cluster 与 client 模式的区别
- HTML小结及css基础属性
- 未来币nxt 启动分析(1)
- 轮播图的实现原理
- Mysql 忘记root密码的解决方法
- 监控运行中jar包的jvm信息
- C++程序辨别数字、字母和汉字
- IPlot示波器
- 高可用性hadoop集群的搭建
- 线程池的执行流程
- windows7下编译boost1.46.1库,生成32位库文件