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);

单位秒

2, 静态快初始化

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的静态块初始化。

未来币nxt 启动分析(1)相关推荐

  1. 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用启用普通安卓应用 | 应用进程分析 )

    文章目录 一. Launcher 应用 startActivitySafely 方法分析 二. Launcher 中的 startActivity(View v, Intent intent, Obj ...

  2. springboot 启动分析【难点】——如何自动扫描 @SpringBootApplication||如何加载自动配置类 @EnableAutoConfiguration||如何加载前端控制器

    springboot 启动分析[难点] 自动扫描的特点 默认扫描与 启动类 同级的所有包及其子包都可以自动扫描 如果不可要使用@ComponentScan(basePackage={"&qu ...

  3. 全志h3linux移植教程,全志H3启动分析,移植主线UBOOT

    全志H3启动分析,移植主线UBOOT 参考资源 启动流程 因为使用的是外扩SD卡,因此主要参考了这部分内容:Bootable SD card SD卡Layout如下: start sector siz ...

  4. STM8启动分析及IAP

    STM8启动分析及IAP 转载于:https://www.cnblogs.com/LittleTiger/p/5535041.html

  5. ADS中startup.s文件启动分析

    映像文件分析,ADS 中startup.s 文件启动分析,学嵌入式开发ADS 必看 2010-04-17 10:21 声明: 我也是转来的,不是原创,由于别人是网易的日志,不能直接转,所以-- 感谢原 ...

  6. 数据分析行业的发展前景怎么样? 未来关于十年数据分析行业的5种预测

    也许未来十年会发生什么,我们很难有一个精确的描述,但我们却能通过一些数据和一些技术手段,了解未来十年的发展趋势. 回顾过去,从90年代起,技术领域变革都深深地影响了我们普通人的生活,数据引领并推动着世 ...

  7. 2022版u-boot启动分析笔记之一(start.S与lowlevel_init.S)

    u-boot-2022.01-rc4启动分析笔记之一(start.S与lowlevel_init.S U-Boot启动过程概述 从链接脚本u-boot.lds说起 start.S start.S从re ...

  8. Uboot启动分析--start.S启动分析(1)

    总目录 NXP i.MX8M secure boot流程 Uboot链接脚本分析述 Uboot启动分析–start.S启动分析(1) Uboot启动分析–start.S启动分析(2) Uboot启动分 ...

  9. BSP板机支持包、linux启动分析、ARM裸机编程

    文章目录 一.BSP 二.驱动 驱动的基本要素 三.启动分析 1.uboot 2.uboot的作用 3.uboot相关命令 关键的内容: 1)bootargs,启动参数 2)启动命令 3)修改启动延时 ...

最新文章

  1. 使用 acl 库编写发送邮件的客户端程序
  2. 为什么深度神经网络这么难训练?| 赠书
  3. bool转nsnumber ios_iOS 的 NSNumber(对基本数据类型) NSValue(对结构体) 的装箱
  4. mysql搜索规则_MySQL基于规则优化
  5. Test Report
  6. STL:大小写字母转换、字符转数字、char*转string(未完待续)
  7. IROS 2017上,这些厂商将会给我们展示什么样的黑科技?
  8. jdbc mysql驱动_MySQL JDBC驱动程序如何处理准备好的语句
  9. MYSQL--浅析索引
  10. 综合演练 对象数组 对象的方法 我们9203班 0912
  11. 交换排序—冒泡排序(Bubble Sort)
  12. 计算机安全性分析建模,计算机网络安全性分析建模研究
  13. c语言米粒数实验报告,《單片机C程序设计》实验报告.doc
  14. 服务器信号满格但网速很慢,信号满格网速太慢是什么原因,网速慢是什么原因-...
  15. mybatis xml 格式化时间查询
  16. 华为4月11号 南研所 面经。(已拿offer)
  17. oracle 6i,Oracle Reports 6i培训教程.doc
  18. 塑形管理小程序开发(一)-源头追溯
  19. 力扣解题思路:位运算系列
  20. 电子科技大学图论期末复习重点(杨春老师强调+往年期末卷子总结)

热门文章

  1. 腾讯云添加8443端口
  2. python实现百度网盘创建文件夹与转存
  3. ORACLE登录时,协议适配器错误的可能原因
  4. 攻克癌症的路上又一重大突破
  5. 近期大国哥总结的《系统重装过程各类报错及问题指南》持续更新
  6. 商务网站建设与维护【17】
  7. 企业级应用开发(SSM) Spring
  8. SaaS化大潮,移动CRM带来的机遇和挑战!
  9. 单元测试——jacoco单元测试代码覆盖率检测
  10. Jmeter 参数化——用户参数