import ( "fmt" "github.com/spf13/viper" "os" "path/filepath" ) type Config struct { DesDir string SourceFiles []string } func loadConfig()(con Config){ home := os.Getenv("HOME") viper.SetConfigFile(filepath.Join(home,"config","syncFile.yml")) viper.SetConfigType("yml") err := viper.ReadInConfig() checkErr(err) err = viper.Unmarshal(&con) checkErr(err) fmt.Printf("config: %v\n", con) return con } func checkErr(err error){ if err != nil { panic(err) } }
bat脚本后台运行exe
新建start.bat文件,输入如下命令: Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c D:/1.exe",vbhide
GC日志详解
对于 java 应用我们可以通过一些配置把程序运行过程中的 gc 日志全部打印出来,然后分析 gc 日志得到关键性指标,分析 GC 原因,调优 JVM 参数: 开启 GC 日志相关参数 java -jar ‐Xloggc:./gc‐%t.log ‐XX:+Prin
java常量池
Class常量池 Class常量池可以理解为class文件中的资源仓库,class 文件中除了包含类信息,方法,字段,接口信息之外还有常量池信息,用于存放编译期生成的各种字面量和符号引用。 如下: 常量池主要
并发编程中的可见性,原子性,有序性问题
java内存模型 (JMM) 这种模型和 jvm 中的堆不同, JMM 是抽象概念,不真实存在。它是一种规范,指定了程序中的各变量的访问方式 主内存 JMM 规定所有变量都存放在主内存,主内存是所有线程共享的,但是线程的操作在线程
JVM调优工具
jps 查看启动的 java 进程 jmap 实例个数与内存占用 看内存信息,实例个数以及占用内存大小 [C is a char[],[S is a short[],[I is a int[],[B is a byte[],[[I is a int[][] 堆信息 jump -heap 17680 导出堆内存占用信
G1垃圾收集器
G1 (Garbage-First) 是一款面向服务器的垃圾收集器,主要针对多颗处理器及大容量内存的机器,具备极短的 GC 停顿时间和高吞吐量的特征. G1 堆内存划分 G1 不像 CMS 那样,老年代和年轻代不再有明显的区分。而是将内存分为很多和区域(Reg
CMS垃圾回收器与三色标记算法
垃圾收集算法 整体可以分为以下几种算法: 标记复制算法 标记整理算法 标记清除算法 分代收集理论 目前的虚拟机的垃圾回收器都是采用分代收集算法,一般根据对象存活周期的不同,将内存分为几块,一般将java堆分为新生
查看ES集群信息
健康信息 命令 curl-X GET"localhost:9200/_cluster/health" 结果
jvm对象的内存分配与回收
对象分配过程简略流程图 对象栈上分配 我们都知道对象分配在堆上,当对象没有被引用时就会当成垃圾回收,如果对象数量比较多,会给GC带来较大的压力,影响性能,为了减少临时对象在堆内的分配次数,JVM 通过逃逸分
jvm中对象的创建过程
1. 类加载检查 虚拟机遇到一条 new 指令时,首先检查这个指令的参数能否在常量池中找到一个类符号引用,并且检查这个符号引用代表的类是否已经被加载,解析,初始化过。如果没有必须先执行类的加载初始化过程。 2. 分配内存
jvm内存模型
线程共享 每个线程开启的时候都会划分几块内存空间,线程栈,程序计数器,本地方法栈。这几个内存空间是依附于线程的,线程结束后,这些空间也会释放 所有线程共享 除此之外还有堆,方法区,类加载子系统,字节码执行引
java中的类加载器和双亲委派机制
类加载是什么 把磁盘中的java文件加载到内存中的过程叫做类加载 当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM. 有如下 User 类 package dc.dccmmtop; public Class User { public static void main(String[] args) { System.out.println("hello"); } } 运
finalize的意义
程序员都了解初始化的重要性,但是会常常忘记同样重要的清理工作,java有垃圾回收器负责回收无用对象占用的内存资源,但是也有特殊情况,你的对象获得了一块特殊的内存区域,并不是通过 new 方法,由于垃圾回收器只