从JDK源码角度看Short
概况 Java的Short类主要的作用就是对基本类型short进行封装,提供了一些处理short类型的方法,比如short到String类型的转换方法或String类型到short类型的转换方法,当然也包含与其他类型之间的转换方法。 继承结构 --java.lang.Object…
循环神经网络
RNN是什么 循环神经网络即recurrent neural network,它的提出主要是为了处理序列数据,序列数据是什么?就是前面的输入和后面的输入是有关联的,比如一句话,前后的词都是有关系的,“我肚子饿了,准备去xx”,根据前面的输入判断“xx”很大可能就是“吃饭”。这个就…
监督学习在研究什么
什么是监督学习 简单来说,监督学习是对给定的输入输出样本进行学习并建立一个模型,该模型能对任意输入做出好的输出预测。 监督学习核心思想 所有可能的模型函数的集合称为假设空间 对于所有的模型函数集合,可能不知道是该用用逻辑回归模型、或贝叶斯模型、或神经网络模型还是用支持向量机模型。…
卷积神经网络
什么是卷积 首先看卷积公式 它是通过两个函数 f(t) 和 g(t) 来生成第三个函数的一种数学算子。从负无穷到正无穷遍历全部 u 值,把 g(t-u) 的值乘以 f(u) 的值之后再进行累加,得到关于该累加操作的关于 t 的函数。从另一个角度看,卷积就是一种加权求和。 用离散信…
JVM 层对 jar 包字节码加密
github https://github.com/sea-boat/ByteCodeEncrypt 需求 拿到的需求是要对某特定的jar包实现加密保护,jar包需要提供给外部使用,但核心逻辑部分需要保护以免被简单反编译即能看到。 几个思路 大致想到以下几种方式: 混淆器,将ja…
softmax的多分类
关于多分类 我们常见的逻辑回归、SVM等常用于解决二分类问题,对于多分类问题,比如识别手写数字,它就需要10个分类,同样也可以用逻辑回归或SVM,只是需要多个二分类来组成多分类,但这里讨论另外一种方式来解决多分类——softmax。 关于softmax softmax的函数为 可…
Java调用本地方法又是怎么一回事
JNI JNI即Java Native Interface,它能在Java层实现对本地方法的调用,一般本地的实现语言主要是C/C++,其实从虚拟机层面来看JNI挺好理解,JVM主要使用C/C++ 和少量汇编编写,在执行Java字节码时如果遇到有某个方法标明为Native的则从JV…
从JDK源码角度看Byte
Java的Byte类主要的作用就是对基本类型byte进行封装,提供了一些处理byte类型的方法,比如byte到String类型的转换方法或String类型到byte类型的转换方法,当然也包含与其他类型之间的转换方法。 主要实现代码如下: public final class By…
神经网络的交叉熵损失函数
常见损失函数 0-1损失函数 平方损失函数 绝对损失函数 对数损失函数 常见的损失函数包含以上几个。 平方损失函数 在神经网络中样本的平方损失函数一般会定义为: ,方便求导后约掉系数。 使用误差逆传播训练神经网络时会使用梯度下降法来更新每个神经网络中的权重, 根据链式求导法可以得…
为什么写《Tomcat内核设计剖析》
三四年前更多地还是做web业务开发,基本不关心web层以下的东西,但是每次出故障时面对现象都不能从脑子里形成由底层到应用层的完整的逻辑,往往只能分析到Web应用就无法继续往下,Web容器完全就是一个黑盒,对于问题更多的是靠猜。举个简单的例子,应用突然就不服务了,此时如果对Web容…
分布式缓存Hazelcast集群原理分析
简介 hazelcast其中一个很重要的应用就是可以将多个应用服务器组成一个分布式环境的应用,形成一个cluster。这个cluster可以选举出一个master来对外工作。而cluster中的各台服务器之间有数据同步机制和数据备份机制,来避免因为单个节点挂掉而导致数据丢失和cl…
Web容器的会话机制
基本所有web应用开发的朋友都很熟悉session会话这个概念,在某个特定时间内,我们说可以在一个会话中存储某些状态,需要的时候又可以把状态取出来,这整个过程的时间空间可以抽象成“会话”这个概念。 尽管你对session的使用已经很熟悉了,但你未必真正理解session是什么。因…
从JDK源码角度看Object
Java的Object是所有其他类的父类,从继承的层次来看它就是最顶层根,所以它也是唯一一个没有父类的类。它包含了对象常用的一些方法,比如getClass、hashCode、equals、clone、toString、notify、wait等常用方法。所以其他类继承了Object…
kmeans实现文本聚类
需求 拿到的需求是输入n个文本,对文本进行聚类,由于这些输入不能通过历史数据进行训练,所以这个主要就是用无监督学习来解决。 kmeans 谈到聚类就会想到kmeans,它的核心思想是给定的K值和K个初始质心将样本中每个点都分到距离最近的类簇中,当所有点分配完后根据每个类簇的所有点…
k-means 聚类算法
聚类 聚类主要内容是将样本进行归类,同种类别的样本放到一起,所有样本最终会形成 K 个簇,它属于无监督学习。 核心思想 根据给定的 K 值和 K 个初始质心将样本中每个点都分到距离最近的类簇中,当所有点分配完后根据每个类簇的所有点重新计算质心,一般是通过平均值计算,然后再将每个点分到距离最…
从 JDK 源码角度看 Boolean
Java 的 Boolean 类主要作用就是对基本类型 boolean 进行封装,提供了一些处理 boolean 类型的方法,比如 String 类型和 boolean 类型的转换。 主要实现源码如下: public final class Boolean implements java.io.Se…
开源一个文本分析项目
Github https://github.com/sea-boat/TextAnalyzer TextAnalyzer a text analizer that can analyze text. so far, it can extract hot words in a t…
如何让你的传输更安全——NIO 模式和 BIO 模式实现 SSL 协议通信
对于 SSL/TLS 协议,如果要每个开发者都自己去实现显然会带来不必要的麻烦,正是为了解决这个问题 Java 为广大开发者提供了 Java 安全套接字扩展——JSSE,它包含了实现 Internet 安全通信的一系列包的集合,是 SSL 和 TLS 的纯 Java 实现,同时它是一个开放的标准,每个公司…
谈谈Java基础数据类型
Java的基本数据类型 类型 意义 取值 boolean 布尔值 true或false byte 8位有符号整型 -128~127 short 16位有符号整型 -pow(2,15)~pow(2,15)-1 int 32位有符号整型 -pow(2,31)~pow(2,31)-1…
怎么用弱引用实现内存泄漏检测
在 Java 中,引用分为强引用、软引用、弱引用和虚引用四种。 强引用,代码中普遍存在的形式,例如常见的普通类 new 出对象后的引用。GC 不会回收强引用的对象。 软引用,软引用对象会在内存溢出异常之前进行回收,也就是说在内存富裕的情况下 GC 不回收软引用。它可通过 SoftReferen…