Java创建对象
创建对象的方式
用new关键字创建
调用对象的clone方法
利用反射,调用Class类的或者是Constructor类的newInstance()方法
用反序列化,调用ObjectInputStream类的readObject()方法
JAVA泛型通配符
泛型通配符通常情况下,T,E,K,V,?是这样约定的:
?表示不确定的 java 类型
T (type) 表示具体的一个java类型
K V (key value) 分别代表java键值中的Key Value
E (element) 代表Element
上界通配符
下界通配符
Adaboost
Boosting作用如果一个弱分类器的错误率低于50%,那么通过boosting之后可以使得弱分类器在训练集上的错误率降低到0%
Boosting框架
获取第一个分类器$f_1(x)$
找到另一个分类器$f_2(x)$去帮助$f_1(x)$
$f_2(x)$要弥补$f_1(x)$,要和$f_1( ...
频率学派和贝叶斯学派
频率学派和贝叶斯学派概率模型的训练过程就是参数估计的过程。**
对于参数估计,统计学界的两个学派分别提供了不同的解决方案:
频率主义学派认为参数虽然未知,但却是客观存在的固定值,因此可以通过优化极大似然函数等准则来确定参数值。
贝叶斯学派则认为参数是未观察到的随机变量,其本身也可有分布,因此可以假 ...
常用快捷键及操作
Windows
ctrl+shift+enter 以管理员身份打开cmd
在文件资源管理器的搜索栏 输入cmd 即可在对应目录下打开cmd
win+v 查看剪切板
IDEA
psvm 生成main函数
sout 快速println
ctrl+shift+/ 快速生成注释
ctrl+/ 单行注 ...
Lambda表达式
简介任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
作用使用lambda表达式可以避免匿名内部类定义过多,使得代码看起来更加简洁,去掉了一堆没有意义的代码,只留下了核心逻辑。
发展历程对于这种一般只用一次的类,为了 ...
Java多线程
基础多线程线程创建与启动java用多线程非常简单,只需要两步
java1234//创建线程Thread thread=new thread();//启动线程thread.start();
有的教程讲的特别复杂,但是核心就这两步。
其中start()方法是最核心的,里面有一个 native sta ...
String
源码java12345678910public final class String implements java.io.Serializable, Comparable, CharSequence{ /** The value is used for character storage. ...
JVM
转载 https://zhuanlan.zhihu.com/p/34426768
内存结构图
程序计数器
程序计数器是一块较小的空间,它可以看作是当前线程所执行的字节码的行号指示器
如果线程执行的是java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址(可以理解为上图所示的行号),如果正 ...
各种查找树
二叉查找树1、二叉排序树、二叉查找树、二叉搜索树 都是同一个树的不同名称
二叉平衡树2、二叉平衡树对二叉排序树进行约束,即左右子树高度差不能大于1,否则就要调整。由于二叉平衡树的严格限制,使得二叉平衡树的查找更加方便,但是也同样由于二叉树的严格限制,使得插入和删除操作较多时,平衡二叉树的调整特别频繁 ...