- 博客(21)
- 资源 (4)
- 收藏
- 关注

原创 熵
熵的定义在信息论与概率统计中,熵是表示随机变量不确定性的度量。设 X 是一个取有限个值的离散随机变量,其概率分布为则随机变量 X 的熵定义为其中对数通常以 2 或者 e 为底,这时熵的单位分布成为比特或者纳特。由定义可知,熵只依赖 X 的分布,与其取值无关,所以也可以将 X 的熵记为 H(p),即熵越大,随机变量的不确定性就越大。条件熵设有随机变量 (X,Y),其联合概率分布为...
2018-10-31 15:54:19
971
原创 Xcode 调试之 Hello World
编译编译JKD ,可以查看 Mac 编译 OpenJDK 8。调试 截图来自(https://segmentfault.com/a/1190000005082098)调试 Hello World . 编写好源文件public class Hello{ public stat...
2019-05-12 21:22:59
464
原创 JVM 之方法内联(inline)
方法内联:在编译过程中遇到方法调用时,将目标方法的方法体纳入编译范围之中,并取代原方法调用的优化手段。方法内联不仅可以消除调用本身带来的性能开销,还可以进一步触发更多的优化。因此,它可以算是编译优化里最为重要的一环。...
2019-05-12 20:46:03
726
原创 Mac 编译 OpenJDK 8
环境信息Mac 系统信息:apple$ sw_versProductName: Mac OS XProductVersion: 10.14.2BuildVersion: 18C54Xcode 版本:apple$ xcodebuild -versionXcode 9.2Build version 9C40bgcc 版本:apple$ gcc -vConfi...
2019-05-11 08:36:05
823
原创 (十)hsdis + JITWatch 分析 JIT
JIT 编译器会优化热点代码,为了分析需要查看其反汇编指令。安装hsdisHotspotdisassembler,其实就是一个动态库,csdn上就有下载,下载后放在 $JAVA_HOME/jre/lib 目录下。经验是否安装成功:java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -version安装JITWatch...
2019-05-08 21:46:25
323
原创 (九)JVM之循环优化
循环无关代码(Loop-invariant Code)外提如下循环代码:package per.william.ex.simd;public class Foo { int foo(int x,int y ,int[] a){ int sum=0; for(int i=0;i<a.length;i++){ ...
2019-05-03 08:11:27
497
原创 (八)向量化
public class Foo { public void foo(byte[] src,byte[] dst){ for(int i=0;i<src.length/4;i+=4){ dst[i]=src[i]; dst[i+1]=src[i+1]; dst[i+2]=src[i+2];...
2019-05-02 13:58:09
244
原创 (七)对象内存布局--字段重排列
字段重排列,顾名思义,就是 Java 虚拟机重新排列字段的在内存中的顺序,以达到内存利用率最大,即减少内存填充。Java 虚拟机中有三种排列方法(对应 Java 虚拟机选项 -XX:FieldsAllocationStyle,默认值为 1),但都会遵循如下两个规则。其一、如果一个字段占据 C 个字节,那么该字段的偏移量需要对齐至 NC。这里偏移量指的是字段地址与对象的起始地址差值。以 lo...
2019-02-17 14:24:03
445
原创 (六)对象内存布局
Java 中创建对象的方式有多种:new 语句、反射机制、Object.clone 方法、反序列化以及 Unsafe.allocateInstance 方法来新建对象。其中,Object.clone 方法和反序列化通过直接复制已有的数据,来初始化新建对象的实例字段。Unsafe.allocateInstance 方法则没有初始化实例字段,而 new 语句则是通过调用构造器来初始化实例字段: ...
2019-02-16 14:20:34
147
原创 (五)Java 的反射机制
反射是 Java 的一个重要特性,他不仅可以观测正在运行的程序,甚至动态修改其行为。举例来说,我们可以通过 Class 对象枚举该类中的所有方法,我们还可以通过 Method.setAccessible(位于 java.lang.reflect 包,该方法继承自 AccessibleObject)绕过 Java 语言的访问权限,在私有方法所在类之外的地方调用该方法。 @Calle...
2019-02-16 10:01:28
155
原创 (四)Java 虚拟机是如何加载Java类的?
类的加载过程类的整个加载过程从类字节流通过虚拟机的类加载器加载到内存供虚拟机使用,到垃圾收集器回收,其生命周期可分为加载、链接、初始化、使用、卸载。其中链接可分为验证、解析、准备,如下:加载加载是虚拟机借助类加载器查找字节流并且创建类的过程,从设计图(Class 结构文件)到产品实物(类)的过程。对于数组类来说,它并没有对应的字节流,而是由 Java 虚拟机直接生成的。 类加载...
2019-02-09 10:51:31
398
原创 gnome美化 CentOS 7
虚拟机中安装了 Ubuntu 18.04 LTS ,主要是考虑到 Ubuntu 界面还是很好看(相对 CentOS)的 。但是无奈操作卡顿,已经修改过 swap 的值,命令如下:vi /etc/sysctl.conf在最后添加 vm.swappiness = 10 当然随便你放在哪里而且网络还经常断线,所以下载CentOS 进行安装,安装后倒是很流畅,不过界面确实相对逊色一点...
2019-01-26 13:01:13
1327
原创 Ubuntu 编译 OpenJDK 9
Window 环境下编译太麻烦,本来想在 OS X 编译,无奈尝试了好多次,都没有编译成功,从错误信息推测是系统版本(OS X 10.14)太新了,Xcode 都降到了 9 ,所以只能打开之前的虚拟机在 Ubuntu 上编译。在此系统上编译倒是不费劲,依赖包缺少啥就安装啥,这里简单记录一下。安装依赖包sudo apt-get install libx11-dev libxext-dev ...
2019-01-26 11:32:25
549
原创 (三)Java 的基本类型
基本类型Java 的基本类型包括整数类型 boolean 、byte、short、char、int 和 long,以及浮点类型 float 和 double。Java 的基本类型都有对应的值域和默认值。可以看到,byte、short、int、long、float 以及 double 的值域依次扩大,而且前面的值域被后面的值域所包含。因此,从前面的基本类型转换至后面的基本类型,无需强制转换。另外...
2019-01-16 11:13:25
517
原创 (二)Java 虚拟机具体是怎样运行 Java 字节码的?
Write Once,Run AnywhereJava 祖师爷就是由于发现用C++ 开发的过程中会花大量的时间处理内存、不同的指令架构等的问题,所以才有高“移植性”的Java 诞生。采访Java 祖师爷的报道链接。And there are a bunch of places in C, where it’s really easy to make errors that can...
2019-01-16 10:47:31
928
原创 (一)JVM 如何处理异常信息?
先上一张图:在Java 规范中,所有的异常被定义为 Throwable 或其子类的实例。其中 Error 表示该线程执行状态无法恢复,需要终止线程甚至是虚拟机;Exception 可以被捕捉并处理。异常的设计初衷是将运行时产生的错误信息通过某种方式传递给某个接收者——该接收者将知道如何正确的处理这个问题。Java 使用异常来提供一致的错误报告模型,使得构件能够与客户端代码可靠地...
2019-01-15 22:17:58
477
原创 0.1+0.7= 0.7999999999999999
public static void main(String[] args) { double a = 0.1; double b = 0.7; System.out.println(a+b); // 0.7999999999999999 System.out.println((int)(a+b)); // 0 System.out.print...
2019-01-10 12:15:26
1385
翻译 (三)Feature_Scaling
特征缩放目的:让不同的特征有相似的取值范围,确保收敛速度更快。原因:每个输入值在大致相同的范围可以加速梯度下滑,同时θ将在小范围内快速下降并且在大范围内缓慢下降,所以特征缩放并不是必须的操作。特征缩放当前特征输入值除以输入值的范围(最大值减去最小值)。均值归一化当前特征输入值减去平均值后除以输入值的范围(最大值减去最小值)。More , https://en.wikipedia.o...
2018-12-13 11:26:29
394
翻译 (二)Model_and_Cost_Function
模型表示、参数学习模型成本函数(Cost function)损失函数(Loss function)是定义在单个训练样本上的,也就是就算一个样本的误差,用 L 表示。成本函数(Cost function),也叫代价函数,是定义在整个训练集上面的,也就是所有样本的误差的总和的平均,也就是损失函数的总和的平均。这个方程又称“平方误差函数(Squared error function)” ...
2018-12-13 11:19:21
508
翻译 (一)What_is_Machine_Learning
机器学习定义机器学习(统计机器学习)是什么?字面意思就是让机器(计算机程序)学习,通过这一过程,可以使自身更加智能化(特别是对未知数据进行预测)。Herbert A. Simon 曾对 “学习” 给出以下定义:“如果一个系统能够通过执行某个过程改进它的性能,这就是学习。” 按照这一观点,机器学习就是计算机程序通过运用数据及统计方法来提高系统性能的过程。分类In general, an...
2018-12-13 11:16:12
198
原创 矩阵 矩阵的基本运算规则 行列式 逆矩阵
矩阵本质:矩阵是个数表;从线性变换的视角看,矩阵是记录线性变换这一过程的描述信息。记为 Am×nA_{m\times n}Am×n 或 A={aij}A=\{a_{ij}\}A={aij} 或 A={aij}m×nA=\{a_{ij}\}_{m\times n}A={aij}m×n特殊矩阵及其性质同型矩阵具有相同行数和列数的矩阵,称为同型矩阵。方矩阵如果 mmm 等于 nnn...
2018-11-20 15:30:09
6170
1
igv_latest.zip
2019-05-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人